feat(automation): add isolated job delivery mode

This commit is contained in:
William Valentin
2026-02-15 19:23:15 -08:00
parent 0470647ee7
commit 421942f66d
13 changed files with 183 additions and 11 deletions
@@ -0,0 +1,36 @@
# Announce Delivery Mode Checklist
Date: 2026-02-16
Status: completed
## Scope
- Add a first-class automation delivery mode for cron/webhook runs.
- Support isolated per-run sessions while preserving outbound reply routing.
## Completed
- Added `automation.delivery_mode` config enum in `src/config/schema.ts`:
- `shared_session` (default)
- `isolated_job`
- Implemented reply routing override in `src/channels/registry.ts` via `metadata.replyPeerId`.
- Updated `CronScheduler` and `WebhookHandler` to:
- emit unique sender IDs per run when `delivery_mode=isolated_job`
- include `metadata.replyPeerId` to keep output routing stable
- include delivery metadata (`deliveryMode`, `runId`) for traceability
- Wired delivery mode through channel registration in `src/daemon/channels.ts`.
- Updated docs:
- `README.md` automation sections
- `config/default.yaml` commented template
- Added tests:
- `src/channels/registry.test.ts`
- `src/automation/cron.test.ts`
- `src/automation/webhooks.test.ts`
- `src/config/schema.test.ts`
## Verification
- `pnpm test:run src/channels/registry.test.ts`
- `pnpm test:run src/automation/cron.test.ts src/automation/webhooks.test.ts`
- `pnpm test:run src/config/schema.test.ts`
- `pnpm typecheck`