action: handles _action=cancel by calling POST /pipeline/cancel/:jobId
UI:
- Start button disabled while a job is running for that source
- Cancel import button appears only when the active source has a
running job (status not in done/error/cancelled)
- Toast shown on cancel request confirming stop after current step
- runningSources excludes cancelled status so tab resets correctly
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>