@aitne/daemon 0.1.3 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/notification-manager.d.ts +12 -0
- package/dist/adapters/notification-manager.d.ts.map +1 -1
- package/dist/adapters/notification-manager.js +39 -1
- package/dist/adapters/notification-manager.js.map +1 -1
- package/dist/adapters/whatsapp-adapter.d.ts.map +1 -1
- package/dist/adapters/whatsapp-adapter.js +0 -1
- package/dist/adapters/whatsapp-adapter.js.map +1 -1
- package/dist/api/integration-route-gate.d.ts +15 -11
- package/dist/api/integration-route-gate.d.ts.map +1 -1
- package/dist/api/integration-route-gate.js +60 -23
- package/dist/api/integration-route-gate.js.map +1 -1
- package/dist/api/json-body.d.ts +22 -7
- package/dist/api/json-body.d.ts.map +1 -1
- package/dist/api/json-body.js +27 -8
- package/dist/api/json-body.js.map +1 -1
- package/dist/api/routes/agent.d.ts.map +1 -1
- package/dist/api/routes/agent.js +25 -0
- package/dist/api/routes/agent.js.map +1 -1
- package/dist/api/routes/backends.d.ts.map +1 -1
- package/dist/api/routes/backends.js +96 -1
- package/dist/api/routes/backends.js.map +1 -1
- package/dist/api/routes/books.js +1 -1
- package/dist/api/routes/books.js.map +1 -1
- package/dist/api/routes/commands.d.ts.map +1 -1
- package/dist/api/routes/commands.js +16 -13
- package/dist/api/routes/commands.js.map +1 -1
- package/dist/api/routes/context.d.ts.map +1 -1
- package/dist/api/routes/context.js +26 -3
- package/dist/api/routes/context.js.map +1 -1
- package/dist/api/routes/dashboard.d.ts.map +1 -1
- package/dist/api/routes/dashboard.js +103 -5
- package/dist/api/routes/dashboard.js.map +1 -1
- package/dist/api/routes/fs.d.ts +23 -0
- package/dist/api/routes/fs.d.ts.map +1 -0
- package/dist/api/routes/fs.js +156 -0
- package/dist/api/routes/fs.js.map +1 -0
- package/dist/api/routes/fs.logic.d.ts +62 -0
- package/dist/api/routes/fs.logic.d.ts.map +1 -0
- package/dist/api/routes/fs.logic.js +137 -0
- package/dist/api/routes/fs.logic.js.map +1 -0
- package/dist/api/routes/github.d.ts.map +1 -1
- package/dist/api/routes/github.js +38 -5
- package/dist/api/routes/github.js.map +1 -1
- package/dist/api/routes/health.d.ts.map +1 -1
- package/dist/api/routes/health.js +4 -2
- package/dist/api/routes/health.js.map +1 -1
- package/dist/api/routes/integrations.d.ts +35 -6
- package/dist/api/routes/integrations.d.ts.map +1 -1
- package/dist/api/routes/integrations.js +192 -15
- package/dist/api/routes/integrations.js.map +1 -1
- package/dist/api/routes/mail.d.ts.map +1 -1
- package/dist/api/routes/mail.js +112 -46
- package/dist/api/routes/mail.js.map +1 -1
- package/dist/api/routes/metrics.d.ts +1 -0
- package/dist/api/routes/metrics.d.ts.map +1 -1
- package/dist/api/routes/metrics.js +24 -0
- package/dist/api/routes/metrics.js.map +1 -1
- package/dist/api/routes/observations.d.ts.map +1 -1
- package/dist/api/routes/observations.js +696 -30
- package/dist/api/routes/observations.js.map +1 -1
- package/dist/api/routes/setup-migrate.d.ts +9 -1
- package/dist/api/routes/setup-migrate.d.ts.map +1 -1
- package/dist/api/routes/setup-migrate.js +4 -2
- package/dist/api/routes/setup-migrate.js.map +1 -1
- package/dist/api/routes/skills.d.ts +9 -1
- package/dist/api/routes/skills.d.ts.map +1 -1
- package/dist/api/routes/skills.js +77 -17
- package/dist/api/routes/skills.js.map +1 -1
- package/dist/api/routes/voice.d.ts.map +1 -1
- package/dist/api/routes/voice.js +62 -4
- package/dist/api/routes/voice.js.map +1 -1
- package/dist/api/routes/wiki.d.ts +4 -0
- package/dist/api/routes/wiki.d.ts.map +1 -0
- package/dist/api/routes/wiki.js +1075 -0
- package/dist/api/routes/wiki.js.map +1 -0
- package/dist/api/server.d.ts +13 -0
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +27 -1
- package/dist/api/server.js.map +1 -1
- package/dist/bootstrap/adapters.d.ts +109 -0
- package/dist/bootstrap/adapters.d.ts.map +1 -0
- package/dist/bootstrap/adapters.js +237 -0
- package/dist/bootstrap/adapters.js.map +1 -0
- package/dist/bootstrap/catchup.d.ts +23 -0
- package/dist/bootstrap/catchup.d.ts.map +1 -0
- package/dist/bootstrap/catchup.js +124 -0
- package/dist/bootstrap/catchup.js.map +1 -0
- package/dist/bootstrap/schedule-helpers.d.ts +18 -0
- package/dist/bootstrap/schedule-helpers.d.ts.map +1 -0
- package/dist/bootstrap/schedule-helpers.js +96 -0
- package/dist/bootstrap/schedule-helpers.js.map +1 -0
- package/dist/bootstrap/services.d.ts +60 -0
- package/dist/bootstrap/services.d.ts.map +1 -0
- package/dist/bootstrap/services.js +209 -0
- package/dist/bootstrap/services.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +26 -0
- package/dist/config.js.map +1 -1
- package/dist/core/agent-core.d.ts +25 -0
- package/dist/core/agent-core.d.ts.map +1 -1
- package/dist/core/agent-core.js.map +1 -1
- package/dist/core/backends/backend-router.d.ts +28 -1
- package/dist/core/backends/backend-router.d.ts.map +1 -1
- package/dist/core/backends/backend-router.js +58 -4
- package/dist/core/backends/backend-router.js.map +1 -1
- package/dist/core/backends/claude-auth.d.ts +70 -0
- package/dist/core/backends/claude-auth.d.ts.map +1 -0
- package/dist/core/backends/claude-auth.js +198 -0
- package/dist/core/backends/claude-auth.js.map +1 -0
- package/dist/core/backends/claude-code-core.d.ts +47 -119
- package/dist/core/backends/claude-code-core.d.ts.map +1 -1
- package/dist/core/backends/claude-code-core.js +166 -1561
- package/dist/core/backends/claude-code-core.js.map +1 -1
- package/dist/core/backends/claude-delegated.d.ts +86 -0
- package/dist/core/backends/claude-delegated.d.ts.map +1 -0
- package/dist/core/backends/claude-delegated.js +801 -0
- package/dist/core/backends/claude-delegated.js.map +1 -0
- package/dist/core/backends/claude-errors.d.ts +39 -0
- package/dist/core/backends/claude-errors.d.ts.map +1 -0
- package/dist/core/backends/claude-errors.js +71 -0
- package/dist/core/backends/claude-errors.js.map +1 -0
- package/dist/core/backends/claude-probe.d.ts +103 -0
- package/dist/core/backends/claude-probe.d.ts.map +1 -0
- package/dist/core/backends/claude-probe.js +336 -0
- package/dist/core/backends/claude-probe.js.map +1 -0
- package/dist/core/backends/claude-tool-collection.d.ts +135 -0
- package/dist/core/backends/claude-tool-collection.d.ts.map +1 -0
- package/dist/core/backends/claude-tool-collection.js +1093 -0
- package/dist/core/backends/claude-tool-collection.js.map +1 -0
- package/dist/core/backends/codex-core.d.ts.map +1 -1
- package/dist/core/backends/codex-core.js +36 -0
- package/dist/core/backends/codex-core.js.map +1 -1
- package/dist/core/backends/gemini-cli-core.d.ts +45 -5
- package/dist/core/backends/gemini-cli-core.d.ts.map +1 -1
- package/dist/core/backends/gemini-cli-core.js +146 -36
- package/dist/core/backends/gemini-cli-core.js.map +1 -1
- package/dist/core/backends/plan-presets.d.ts +3 -1
- package/dist/core/backends/plan-presets.d.ts.map +1 -1
- package/dist/core/backends/plan-presets.js +42 -2
- package/dist/core/backends/plan-presets.js.map +1 -1
- package/dist/core/backends/prompt-utils.d.ts +1 -0
- package/dist/core/backends/prompt-utils.d.ts.map +1 -1
- package/dist/core/backends/prompt-utils.js +60 -3
- package/dist/core/backends/prompt-utils.js.map +1 -1
- package/dist/core/bang-commands/commands-help.d.ts +5 -0
- package/dist/core/bang-commands/commands-help.d.ts.map +1 -0
- package/dist/core/bang-commands/commands-help.js +69 -0
- package/dist/core/bang-commands/commands-help.js.map +1 -0
- package/dist/core/bang-commands/commands-wiki.d.ts +75 -0
- package/dist/core/bang-commands/commands-wiki.d.ts.map +1 -0
- package/dist/core/bang-commands/commands-wiki.js +574 -0
- package/dist/core/bang-commands/commands-wiki.js.map +1 -0
- package/dist/core/bang-commands/index.d.ts +4 -2
- package/dist/core/bang-commands/index.d.ts.map +1 -1
- package/dist/core/bang-commands/index.js +15 -1
- package/dist/core/bang-commands/index.js.map +1 -1
- package/dist/core/bang-commands/registry.d.ts +47 -4
- package/dist/core/bang-commands/registry.d.ts.map +1 -1
- package/dist/core/bang-commands/registry.js +85 -15
- package/dist/core/bang-commands/registry.js.map +1 -1
- package/dist/core/context-builder.d.ts +53 -12
- package/dist/core/context-builder.d.ts.map +1 -1
- package/dist/core/context-builder.js +240 -92
- package/dist/core/context-builder.js.map +1 -1
- package/dist/core/daemon-api-cli.d.ts.map +1 -1
- package/dist/core/daemon-api-cli.js +50 -2
- package/dist/core/daemon-api-cli.js.map +1 -1
- package/dist/core/dispatcher-date-utils.d.ts +49 -0
- package/dist/core/dispatcher-date-utils.d.ts.map +1 -0
- package/dist/core/dispatcher-date-utils.js +132 -0
- package/dist/core/dispatcher-date-utils.js.map +1 -0
- package/dist/core/dispatcher-error-handling.d.ts +159 -0
- package/dist/core/dispatcher-error-handling.d.ts.map +1 -0
- package/dist/core/dispatcher-error-handling.js +393 -0
- package/dist/core/dispatcher-error-handling.js.map +1 -0
- package/dist/core/dispatcher-hourly-check.d.ts +150 -0
- package/dist/core/dispatcher-hourly-check.d.ts.map +1 -0
- package/dist/core/dispatcher-hourly-check.js +665 -0
- package/dist/core/dispatcher-hourly-check.js.map +1 -0
- package/dist/core/dispatcher-message-handler.d.ts +170 -0
- package/dist/core/dispatcher-message-handler.d.ts.map +1 -0
- package/dist/core/dispatcher-message-handler.js +1064 -0
- package/dist/core/dispatcher-message-handler.js.map +1 -0
- package/dist/core/dispatcher-morning-routine.d.ts +169 -0
- package/dist/core/dispatcher-morning-routine.d.ts.map +1 -0
- package/dist/core/dispatcher-morning-routine.js +449 -0
- package/dist/core/dispatcher-morning-routine.js.map +1 -0
- package/dist/core/dispatcher-prompt.d.ts +107 -0
- package/dist/core/dispatcher-prompt.d.ts.map +1 -0
- package/dist/core/dispatcher-prompt.js +227 -0
- package/dist/core/dispatcher-prompt.js.map +1 -0
- package/dist/core/dispatcher-repository-helpers.d.ts +39 -0
- package/dist/core/dispatcher-repository-helpers.d.ts.map +1 -0
- package/dist/core/dispatcher-repository-helpers.js +86 -0
- package/dist/core/dispatcher-repository-helpers.js.map +1 -0
- package/dist/core/dispatcher-result-processor.d.ts +168 -0
- package/dist/core/dispatcher-result-processor.d.ts.map +1 -0
- package/dist/core/dispatcher-result-processor.js +533 -0
- package/dist/core/dispatcher-result-processor.js.map +1 -0
- package/dist/core/dispatcher-scheduled-tasks.d.ts +406 -0
- package/dist/core/dispatcher-scheduled-tasks.d.ts.map +1 -0
- package/dist/core/dispatcher-scheduled-tasks.js +1032 -0
- package/dist/core/dispatcher-scheduled-tasks.js.map +1 -0
- package/dist/core/dispatcher-types.d.ts +411 -0
- package/dist/core/dispatcher-types.d.ts.map +1 -0
- package/dist/core/dispatcher-types.js +106 -0
- package/dist/core/dispatcher-types.js.map +1 -0
- package/dist/core/dispatcher.d.ts +122 -610
- package/dist/core/dispatcher.d.ts.map +1 -1
- package/dist/core/dispatcher.js +365 -3521
- package/dist/core/dispatcher.js.map +1 -1
- package/dist/core/integration-health.d.ts +18 -10
- package/dist/core/integration-health.d.ts.map +1 -1
- package/dist/core/integration-health.js +31 -1
- package/dist/core/integration-health.js.map +1 -1
- package/dist/core/integration-lifecycle.d.ts +65 -0
- package/dist/core/integration-lifecycle.d.ts.map +1 -1
- package/dist/core/integration-lifecycle.js +163 -14
- package/dist/core/integration-lifecycle.js.map +1 -1
- package/dist/core/integration-main-backend.d.ts +40 -0
- package/dist/core/integration-main-backend.d.ts.map +1 -1
- package/dist/core/integration-main-backend.js +89 -2
- package/dist/core/integration-main-backend.js.map +1 -1
- package/dist/core/management-md.d.ts +51 -17
- package/dist/core/management-md.d.ts.map +1 -1
- package/dist/core/management-md.js +233 -56
- package/dist/core/management-md.js.map +1 -1
- package/dist/core/metrics.d.ts +127 -0
- package/dist/core/metrics.d.ts.map +1 -1
- package/dist/core/metrics.js +256 -1
- package/dist/core/metrics.js.map +1 -1
- package/dist/core/output-language-policy.d.ts +74 -0
- package/dist/core/output-language-policy.d.ts.map +1 -0
- package/dist/core/output-language-policy.js +194 -0
- package/dist/core/output-language-policy.js.map +1 -0
- package/dist/core/prompts.d.ts +3 -1
- package/dist/core/prompts.d.ts.map +1 -1
- package/dist/core/prompts.js +161 -3
- package/dist/core/prompts.js.map +1 -1
- package/dist/core/repository-management-docs.d.ts +24 -0
- package/dist/core/repository-management-docs.d.ts.map +1 -1
- package/dist/core/repository-management-docs.js +210 -26
- package/dist/core/repository-management-docs.js.map +1 -1
- package/dist/core/roadmap-validate.js +13 -1
- package/dist/core/roadmap-validate.js.map +1 -1
- package/dist/core/routine-acquisition-plan.d.ts +182 -0
- package/dist/core/routine-acquisition-plan.d.ts.map +1 -0
- package/dist/core/routine-acquisition-plan.js +367 -0
- package/dist/core/routine-acquisition-plan.js.map +1 -0
- package/dist/core/routine-fetch-window-retry.d.ts +109 -0
- package/dist/core/routine-fetch-window-retry.d.ts.map +1 -0
- package/dist/core/routine-fetch-window-retry.js +210 -0
- package/dist/core/routine-fetch-window-retry.js.map +1 -0
- package/dist/core/routine-fetch-window-runner.d.ts +427 -0
- package/dist/core/routine-fetch-window-runner.d.ts.map +1 -0
- package/dist/core/routine-fetch-window-runner.js +1591 -0
- package/dist/core/routine-fetch-window-runner.js.map +1 -0
- package/dist/core/routine-windows.d.ts +171 -0
- package/dist/core/routine-windows.d.ts.map +1 -0
- package/dist/core/routine-windows.js +377 -0
- package/dist/core/routine-windows.js.map +1 -0
- package/dist/core/scheduler.d.ts +50 -2
- package/dist/core/scheduler.d.ts.map +1 -1
- package/dist/core/scheduler.js +88 -7
- package/dist/core/scheduler.js.map +1 -1
- package/dist/core/skill-curation/declarations.d.ts.map +1 -1
- package/dist/core/skill-curation/declarations.js +11 -12
- package/dist/core/skill-curation/declarations.js.map +1 -1
- package/dist/core/skill-source-paths.d.ts +14 -0
- package/dist/core/skill-source-paths.d.ts.map +1 -0
- package/dist/core/skill-source-paths.js +82 -0
- package/dist/core/skill-source-paths.js.map +1 -0
- package/dist/core/skills-compiler.d.ts +29 -0
- package/dist/core/skills-compiler.d.ts.map +1 -1
- package/dist/core/skills-compiler.js +166 -30
- package/dist/core/skills-compiler.js.map +1 -1
- package/dist/core/skills-manifest.d.ts.map +1 -1
- package/dist/core/skills-manifest.js +72 -0
- package/dist/core/skills-manifest.js.map +1 -1
- package/dist/core/system-reset.d.ts +25 -0
- package/dist/core/system-reset.d.ts.map +1 -1
- package/dist/core/system-reset.js +72 -2
- package/dist/core/system-reset.js.map +1 -1
- package/dist/core/wiki/approval-queue.d.ts +31 -0
- package/dist/core/wiki/approval-queue.d.ts.map +1 -0
- package/dist/core/wiki/approval-queue.js +44 -0
- package/dist/core/wiki/approval-queue.js.map +1 -0
- package/dist/core/wiki/bridge.d.ts +74 -0
- package/dist/core/wiki/bridge.d.ts.map +1 -0
- package/dist/core/wiki/bridge.js +405 -0
- package/dist/core/wiki/bridge.js.map +1 -0
- package/dist/core/wiki/compile-lock.d.ts +42 -0
- package/dist/core/wiki/compile-lock.d.ts.map +1 -0
- package/dist/core/wiki/compile-lock.js +55 -0
- package/dist/core/wiki/compile-lock.js.map +1 -0
- package/dist/core/wiki/compile-preview.d.ts +8 -0
- package/dist/core/wiki/compile-preview.d.ts.map +1 -0
- package/dist/core/wiki/compile-preview.js +200 -0
- package/dist/core/wiki/compile-preview.js.map +1 -0
- package/dist/core/wiki/cost-estimate.d.ts +30 -0
- package/dist/core/wiki/cost-estimate.d.ts.map +1 -0
- package/dist/core/wiki/cost-estimate.js +243 -0
- package/dist/core/wiki/cost-estimate.js.map +1 -0
- package/dist/core/wiki/dispatcher.d.ts +48 -0
- package/dist/core/wiki/dispatcher.d.ts.map +1 -0
- package/dist/core/wiki/dispatcher.js +92 -0
- package/dist/core/wiki/dispatcher.js.map +1 -0
- package/dist/core/wiki/git-precompile.d.ts +86 -0
- package/dist/core/wiki/git-precompile.d.ts.map +1 -0
- package/dist/core/wiki/git-precompile.js +96 -0
- package/dist/core/wiki/git-precompile.js.map +1 -0
- package/dist/core/wiki/import-migrate.d.ts +38 -0
- package/dist/core/wiki/import-migrate.d.ts.map +1 -0
- package/dist/core/wiki/import-migrate.js +310 -0
- package/dist/core/wiki/import-migrate.js.map +1 -0
- package/dist/core/wiki/import-probe.d.ts +76 -0
- package/dist/core/wiki/import-probe.d.ts.map +1 -0
- package/dist/core/wiki/import-probe.js +245 -0
- package/dist/core/wiki/import-probe.js.map +1 -0
- package/dist/core/wiki/index-cache.d.ts +39 -0
- package/dist/core/wiki/index-cache.d.ts.map +1 -0
- package/dist/core/wiki/index-cache.js +152 -0
- package/dist/core/wiki/index-cache.js.map +1 -0
- package/dist/core/wiki/multi-url-dispatch.d.ts +52 -0
- package/dist/core/wiki/multi-url-dispatch.d.ts.map +1 -0
- package/dist/core/wiki/multi-url-dispatch.js +72 -0
- package/dist/core/wiki/multi-url-dispatch.js.map +1 -0
- package/dist/core/wiki/wiki-fts.d.ts +75 -0
- package/dist/core/wiki/wiki-fts.d.ts.map +1 -0
- package/dist/core/wiki/wiki-fts.js +265 -0
- package/dist/core/wiki/wiki-fts.js.map +1 -0
- package/dist/core/wiki/workspaces.d.ts +101 -0
- package/dist/core/wiki/workspaces.d.ts.map +1 -0
- package/dist/core/wiki/workspaces.js +352 -0
- package/dist/core/wiki/workspaces.js.map +1 -0
- package/dist/core/wiki/write-strategy.d.ts +70 -0
- package/dist/core/wiki/write-strategy.d.ts.map +1 -0
- package/dist/core/wiki/write-strategy.js +112 -0
- package/dist/core/wiki/write-strategy.js.map +1 -0
- package/dist/core/workdir.d.ts +8 -1
- package/dist/core/workdir.d.ts.map +1 -1
- package/dist/core/workdir.js +4 -1
- package/dist/core/workdir.js.map +1 -1
- package/dist/db/observations.d.ts +45 -2
- package/dist/db/observations.d.ts.map +1 -1
- package/dist/db/observations.js +112 -14
- package/dist/db/observations.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +135 -25
- package/dist/db/schema.js.map +1 -1
- package/dist/db/wiki-store.d.ts +3 -0
- package/dist/db/wiki-store.d.ts.map +1 -0
- package/dist/db/wiki-store.js +7 -0
- package/dist/db/wiki-store.js.map +1 -0
- package/dist/index.js +159 -610
- package/dist/index.js.map +1 -1
- package/dist/messaging/url-extract.d.ts +8 -0
- package/dist/messaging/url-extract.d.ts.map +1 -0
- package/dist/messaging/url-extract.js +41 -0
- package/dist/messaging/url-extract.js.map +1 -0
- package/dist/observers/delegated-sync-worker.d.ts +52 -1
- package/dist/observers/delegated-sync-worker.d.ts.map +1 -1
- package/dist/observers/delegated-sync-worker.js +75 -18
- package/dist/observers/delegated-sync-worker.js.map +1 -1
- package/dist/observers/imminent-event-scheduler.d.ts +20 -7
- package/dist/observers/imminent-event-scheduler.d.ts.map +1 -1
- package/dist/observers/imminent-event-scheduler.js +134 -29
- package/dist/observers/imminent-event-scheduler.js.map +1 -1
- package/dist/observers/mail-poller.d.ts +12 -5
- package/dist/observers/mail-poller.d.ts.map +1 -1
- package/dist/observers/mail-poller.js +36 -14
- package/dist/observers/mail-poller.js.map +1 -1
- package/dist/observers/manager.d.ts +37 -5
- package/dist/observers/manager.d.ts.map +1 -1
- package/dist/observers/manager.js +28 -10
- package/dist/observers/manager.js.map +1 -1
- package/dist/safety/always-disallowed.d.ts +65 -0
- package/dist/safety/always-disallowed.d.ts.map +1 -1
- package/dist/safety/always-disallowed.js +106 -10
- package/dist/safety/always-disallowed.js.map +1 -1
- package/dist/safety/audit.d.ts +46 -1
- package/dist/safety/audit.d.ts.map +1 -1
- package/dist/safety/audit.js +79 -16
- package/dist/safety/audit.js.map +1 -1
- package/dist/safety/risk-classifier.d.ts.map +1 -1
- package/dist/safety/risk-classifier.js +29 -0
- package/dist/safety/risk-classifier.js.map +1 -1
- package/dist/services/delegated-backend-invoker.d.ts +1 -51
- package/dist/services/delegated-backend-invoker.d.ts.map +1 -1
- package/dist/services/delegated-backend-invoker.js +41 -480
- package/dist/services/delegated-backend-invoker.js.map +1 -1
- package/dist/services/delegated-invoker-audit.d.ts +94 -0
- package/dist/services/delegated-invoker-audit.d.ts.map +1 -0
- package/dist/services/delegated-invoker-audit.js +238 -0
- package/dist/services/delegated-invoker-audit.js.map +1 -0
- package/dist/services/delegated-invoker-cache-hits.d.ts +34 -0
- package/dist/services/delegated-invoker-cache-hits.d.ts.map +1 -0
- package/dist/services/delegated-invoker-cache-hits.js +104 -0
- package/dist/services/delegated-invoker-cache-hits.js.map +1 -0
- package/dist/services/delegated-invoker-janitors.d.ts +28 -0
- package/dist/services/delegated-invoker-janitors.d.ts.map +1 -0
- package/dist/services/delegated-invoker-janitors.js +104 -0
- package/dist/services/delegated-invoker-janitors.js.map +1 -0
- package/dist/services/delegated-invoker-utils.d.ts +42 -0
- package/dist/services/delegated-invoker-utils.d.ts.map +1 -0
- package/dist/services/delegated-invoker-utils.js +100 -0
- package/dist/services/delegated-invoker-utils.js.map +1 -0
- package/dist/services/delegated-task-runtime.d.ts +1 -1
- package/dist/services/delegated-task-runtime.js +1 -1
- package/dist/services/integrations/snapshot-partitions.d.ts +5 -0
- package/dist/services/integrations/snapshot-partitions.d.ts.map +1 -1
- package/dist/services/integrations/snapshot-partitions.js +12 -0
- package/dist/services/integrations/snapshot-partitions.js.map +1 -1
- package/dist/services/voice/transcriber-impl.d.ts.map +1 -1
- package/dist/services/voice/transcriber-impl.js +7 -8
- package/dist/services/voice/transcriber-impl.js.map +1 -1
- package/dist/settings/runtime-settings.d.ts +12 -1
- package/dist/settings/runtime-settings.d.ts.map +1 -1
- package/dist/settings/runtime-settings.js +59 -1
- package/dist/settings/runtime-settings.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<acquisition-plan>` block assembly for the routine pre-pass fetcher.
|
|
3
|
+
*
|
|
4
|
+
* ROUTINE_DATA_ACQUISITION_DESIGN.md §6.4 / F5 — pure helper that the
|
|
5
|
+
* routine dispatchers (Phase 4) call to render the XML block the
|
|
6
|
+
* `routine.fetch_window` session reads. Stays I/O-free so it can be
|
|
7
|
+
* tested in isolation against synthetic integration state.
|
|
8
|
+
*
|
|
9
|
+
* The block lists one `<fetch>` element per (integration × mode × account)
|
|
10
|
+
* combination implied by `ROUTINE_WINDOWS[routine]` and the current
|
|
11
|
+
* integration state. Disabled integrations, unmapped query cells, and
|
|
12
|
+
* native bindings whose backend does not match the session are skipped.
|
|
13
|
+
*
|
|
14
|
+
* Output shape (§6.4 example, but with substituted timestamps and the
|
|
15
|
+
* resolved mode-suffix the partial filters on):
|
|
16
|
+
*
|
|
17
|
+
* ```xml
|
|
18
|
+
* <acquisition-plan routine="morning_routine" agent_day="2026-05-11">
|
|
19
|
+
* <fetch integration="gmail" mode="direct" window="inbox_today"
|
|
20
|
+
* account="alice@gmail.com" query="?days=1&limit=20" />
|
|
21
|
+
* ...
|
|
22
|
+
* </acquisition-plan>
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import { INTEGRATION_KEYS, getAgentDayBoundsUtc, getIntegrationDescriptor, parseSqliteUtcMs, } from "@aitne/shared";
|
|
26
|
+
import { ROUTINE_WINDOWS, WINDOW_QUERIES, } from "./routine-windows.js";
|
|
27
|
+
/**
|
|
28
|
+
* Compute the timestamp set the assembly helper uses. Anchors to the
|
|
29
|
+
* agent-day boundary `dayBoundaryHour` (configurable; the daemon's
|
|
30
|
+
* config default is 4 = 04:00 local per CLAUDE.md), so
|
|
31
|
+
* `day_start_iso` matches the same UTC instant `getAgentDayBoundsUtc`
|
|
32
|
+
* uses everywhere else in the daemon.
|
|
33
|
+
*
|
|
34
|
+
* The parameter has no built-in default — callers MUST thread
|
|
35
|
+
* `config.dayBoundaryHour` through so a future config change does not
|
|
36
|
+
* silently desync this layer from the rest of the daemon. Tests can
|
|
37
|
+
* pass `0` for stable arithmetic against a UTC fixture.
|
|
38
|
+
*/
|
|
39
|
+
export function buildAcquisitionTimestamps(now, timezone, dayBoundaryHour) {
|
|
40
|
+
const bounds = getAgentDayBoundsUtc(timezone, dayBoundaryHour, now);
|
|
41
|
+
const dayStartMs = parseSqliteUtcMs(bounds.start);
|
|
42
|
+
const dayEndMs = dayStartMs + 24 * 60 * 60 * 1000;
|
|
43
|
+
const day48Ms = dayStartMs + 48 * 60 * 60 * 1000;
|
|
44
|
+
const weekStartMs = dayStartMs - 7 * 24 * 60 * 60 * 1000;
|
|
45
|
+
const weekEndMs = dayStartMs + 7 * 24 * 60 * 60 * 1000;
|
|
46
|
+
const monthEndMs = dayStartMs + 30 * 24 * 60 * 60 * 1000;
|
|
47
|
+
const nowMs = now.getTime();
|
|
48
|
+
const hourStartMs = nowMs - (nowMs % (60 * 60 * 1000));
|
|
49
|
+
const plus2hMs = nowMs + 2 * 60 * 60 * 1000;
|
|
50
|
+
const dateOnly = (ms) => new Date(ms).toISOString().slice(0, 10);
|
|
51
|
+
return {
|
|
52
|
+
now_iso: new Date(nowMs).toISOString(),
|
|
53
|
+
hour_start_iso: new Date(hourStartMs).toISOString(),
|
|
54
|
+
day_start_iso: new Date(dayStartMs).toISOString(),
|
|
55
|
+
day_end_iso: new Date(dayEndMs).toISOString(),
|
|
56
|
+
day_plus_24h: new Date(dayEndMs).toISOString(),
|
|
57
|
+
day_plus_48h: new Date(day48Ms).toISOString(),
|
|
58
|
+
day_plus_2h: new Date(plus2hMs).toISOString(),
|
|
59
|
+
week_start_iso: new Date(weekStartMs).toISOString(),
|
|
60
|
+
week_end_iso: new Date(weekEndMs).toISOString(),
|
|
61
|
+
month_end_iso: new Date(monthEndMs).toISOString(),
|
|
62
|
+
day_start_date: dateOnly(dayStartMs),
|
|
63
|
+
week_start_date: dateOnly(weekStartMs),
|
|
64
|
+
now_date: dateOnly(nowMs),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// ── Internal helpers ───────────────────────────────────────────────────────
|
|
68
|
+
/**
|
|
69
|
+
* The integrations a window symbol applies to. Used to map a routine's
|
|
70
|
+
* `RoutineWindowSpec.kind` onto concrete integration keys. Walking
|
|
71
|
+
* `WINDOW_QUERIES[symbol]` keeps the catalog as the single source of
|
|
72
|
+
* truth — no hardcoded "mail → gmail+outlook_mail" mapping here.
|
|
73
|
+
*/
|
|
74
|
+
function integrationsForWindow(symbol) {
|
|
75
|
+
return Object.keys(WINDOW_QUERIES[symbol] ?? {});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Resolve the integration's runtime mode to the predicate string the
|
|
79
|
+
* partial filters on. Returns `null` when the row should be skipped
|
|
80
|
+
* (disabled, missing state, native binding on a different backend).
|
|
81
|
+
*
|
|
82
|
+
* §6.8 / §3 glossary — for `userManagedConnector` integrations
|
|
83
|
+
* (today: `outlook_mail`, `outlook_calendar`) the daemon ships no
|
|
84
|
+
* `/api/integrations/<key>/exec` proxy, so `delegated-cross` is
|
|
85
|
+
* unreachable. The dispatcher MUST collapse cross-backend delegated to
|
|
86
|
+
* `delegated-same` for these descriptors — the only viable path is
|
|
87
|
+
* the session backend's own MCP, identical to same-backend. Without
|
|
88
|
+
* this collapse, the partial's `delegated-cross` defensive guard
|
|
89
|
+
* fires every tick instead of remaining dormant.
|
|
90
|
+
*/
|
|
91
|
+
function resolveFetchMode(integration, state, sessionBackend) {
|
|
92
|
+
if (!state)
|
|
93
|
+
return null;
|
|
94
|
+
switch (state.mode) {
|
|
95
|
+
case "direct":
|
|
96
|
+
return "direct";
|
|
97
|
+
case "delegated":
|
|
98
|
+
if (state.delegatedBackend === sessionBackend) {
|
|
99
|
+
return "delegated-same";
|
|
100
|
+
}
|
|
101
|
+
// Cross-backend delegated requires a non-null `delegatedBackend`.
|
|
102
|
+
// Missing binding ≈ misconfiguration → skip.
|
|
103
|
+
if (state.delegatedBackend !== null
|
|
104
|
+
&& state.delegatedBackend !== undefined) {
|
|
105
|
+
// User-managed integrations have no daemon proxy; collapse to
|
|
106
|
+
// same-backend so the partial body's main delegated-same prose
|
|
107
|
+
// runs instead of its defensive delegated-cross fallback.
|
|
108
|
+
if (getIntegrationDescriptor(integration).userManagedConnector === true) {
|
|
109
|
+
return "delegated-same";
|
|
110
|
+
}
|
|
111
|
+
return "delegated-cross";
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
case "native":
|
|
115
|
+
// Native binding must match the session backend. Otherwise the
|
|
116
|
+
// partial's `mode:native:<key>` block would be filtered out by
|
|
117
|
+
// `applyIntegrationModeFilter` anyway — skip the row to avoid
|
|
118
|
+
// emitting a `<fetch>` that no branch can handle.
|
|
119
|
+
if (state.nativeBackend === sessionBackend)
|
|
120
|
+
return "native";
|
|
121
|
+
return null;
|
|
122
|
+
case "disabled":
|
|
123
|
+
return null;
|
|
124
|
+
default:
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Resolve the WINDOW_QUERIES cell for a (symbol, integration, mode)
|
|
130
|
+
* tuple. delegated-same / delegated-cross both look up "delegated" in
|
|
131
|
+
* the catalog; the predicate distinction is only meaningful at the
|
|
132
|
+
* partial-filtering layer.
|
|
133
|
+
*/
|
|
134
|
+
function lookupQuery(symbol, integration, fetchMode) {
|
|
135
|
+
const catalog = WINDOW_QUERIES[symbol]?.[integration];
|
|
136
|
+
if (!catalog)
|
|
137
|
+
return undefined;
|
|
138
|
+
if (fetchMode === "delegated-same" || fetchMode === "delegated-cross") {
|
|
139
|
+
return catalog.delegated;
|
|
140
|
+
}
|
|
141
|
+
return catalog[fetchMode];
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Substitute `{token}` placeholders in a query string with the
|
|
145
|
+
* pre-computed timestamps. Unknown tokens are left verbatim — they will
|
|
146
|
+
* surface as `{foo}` in the rendered prompt, which is visible failure
|
|
147
|
+
* (the partial author can grep for `{` in their query).
|
|
148
|
+
*/
|
|
149
|
+
export function substituteAcquisitionTokens(query, timestamps) {
|
|
150
|
+
return query.replace(/\{([a-z_][a-z0-9_]*)\}/g, (match, name) => {
|
|
151
|
+
const value = timestamps[name];
|
|
152
|
+
return value ?? match;
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Attribute escaping for non-query `<fetch>` attribute values
|
|
157
|
+
* (`integration`, `mode`, `window`, `account`, `label`, and the
|
|
158
|
+
* block's `routine` / `agent_day`). These are short tokens drawn
|
|
159
|
+
* from controlled vocabularies; the conventional XML escape set
|
|
160
|
+
* keeps them robust against future authors who slip a special
|
|
161
|
+
* character in.
|
|
162
|
+
*/
|
|
163
|
+
function xmlAttr(value) {
|
|
164
|
+
return value
|
|
165
|
+
.replace(/&/g, "&")
|
|
166
|
+
.replace(/"/g, """)
|
|
167
|
+
.replace(/</g, "<")
|
|
168
|
+
.replace(/>/g, ">");
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Escaping for the `<fetch query='…'>` attribute, which uses
|
|
172
|
+
* single-quote delimiters so URL query strings can be rendered
|
|
173
|
+
* verbatim.
|
|
174
|
+
*
|
|
175
|
+
* The consumer of this block is the LLM, not an XML parser — the
|
|
176
|
+
* agent is told to use the `query` attribute literally as a URL
|
|
177
|
+
* query string (`GET .../messages<query>`) or as MCP-tool arguments
|
|
178
|
+
* (`q="newer_than:1d"`). Two characters in our catalog would
|
|
179
|
+
* otherwise need entity-decode steps the agent must remember:
|
|
180
|
+
* - `&` separates URL query parameters (`?a=1&b=2`),
|
|
181
|
+
* - `"` wraps Gmail / Calendar MCP query expressions
|
|
182
|
+
* (`q="newer_than:1d"`, `timeMin="…"`).
|
|
183
|
+
*
|
|
184
|
+
* Single-quote delimiters let us keep both literal. The only
|
|
185
|
+
* character that would now break the attribute structure is `'`,
|
|
186
|
+
* which no query in `WINDOW_QUERIES` uses today. We escape `'` and
|
|
187
|
+
* `<` / `>` defensively for any future catalog author who uses
|
|
188
|
+
* them.
|
|
189
|
+
*/
|
|
190
|
+
function xmlQueryAttr(value) {
|
|
191
|
+
return value
|
|
192
|
+
.replace(/'/g, "'")
|
|
193
|
+
.replace(/</g, "<")
|
|
194
|
+
.replace(/>/g, ">");
|
|
195
|
+
}
|
|
196
|
+
function renderFetchRow(row) {
|
|
197
|
+
const parts = [
|
|
198
|
+
`integration="${xmlAttr(row.integration)}"`,
|
|
199
|
+
`mode="${xmlAttr(row.mode)}"`,
|
|
200
|
+
`window="${xmlAttr(row.window)}"`,
|
|
201
|
+
];
|
|
202
|
+
if (row.accountId !== undefined) {
|
|
203
|
+
parts.push(`account="${xmlAttr(row.accountId)}"`);
|
|
204
|
+
}
|
|
205
|
+
if (row.label !== undefined) {
|
|
206
|
+
parts.push(`label="${xmlAttr(row.label)}"`);
|
|
207
|
+
}
|
|
208
|
+
// Single-quote delimiter on `query=` — see `xmlQueryAttr` rationale.
|
|
209
|
+
parts.push(`query='${xmlQueryAttr(row.query)}'`);
|
|
210
|
+
return ` <fetch ${parts.join(" ")} />`;
|
|
211
|
+
}
|
|
212
|
+
// ── Row collection (shared by buildAcquisitionPlan + splitAcquisitionPlanByIntegration) ──
|
|
213
|
+
/**
|
|
214
|
+
* Resolve every `<fetch>` row implied by `input` from the routine
|
|
215
|
+
* catalog + integration state. Pure, deterministic, ordering-stable —
|
|
216
|
+
* the loop walks `ROUTINE_WINDOWS[routine]` in spec order, then
|
|
217
|
+
* `WINDOW_QUERIES[symbol]` key order. Both consumers (`buildAcquisitionPlan`
|
|
218
|
+
* and `splitAcquisitionPlanByIntegration`) share this so the rendered
|
|
219
|
+
* monolithic block and the union of per-integration sub-plan blocks
|
|
220
|
+
* carry bit-identical row sequences.
|
|
221
|
+
*/
|
|
222
|
+
function collectFetchRows(input) {
|
|
223
|
+
const rows = [];
|
|
224
|
+
const specs = ROUTINE_WINDOWS[input.routine];
|
|
225
|
+
for (const spec of specs) {
|
|
226
|
+
const integrations = integrationsForWindow(spec.window);
|
|
227
|
+
for (const integration of integrations) {
|
|
228
|
+
const state = input.integrations[integration];
|
|
229
|
+
const fetchMode = resolveFetchMode(integration, state, input.sessionBackend);
|
|
230
|
+
if (fetchMode === null)
|
|
231
|
+
continue;
|
|
232
|
+
const queryTemplate = lookupQuery(spec.window, integration, fetchMode);
|
|
233
|
+
if (queryTemplate === undefined)
|
|
234
|
+
continue;
|
|
235
|
+
const query = substituteAcquisitionTokens(queryTemplate, input.timestamps);
|
|
236
|
+
// perAccount fan-out is meaningful only in `direct` mode, where the
|
|
237
|
+
// daemon stores per-account OAuth tokens and polls each. In
|
|
238
|
+
// `delegated-same` / `delegated-cross` / `native` the integration's
|
|
239
|
+
// bound MCP authenticates as a single user, and `mail_accounts` in
|
|
240
|
+
// the daemon DB is intentionally empty — fanning out would produce
|
|
241
|
+
// zero rows and silently skip the pre-pass entirely (the failure
|
|
242
|
+
// mode that left Sonnet doing both fetch and synthesis in one run
|
|
243
|
+
// and hitting `routine.morning_routine`'s $1 budget cap). Emit one
|
|
244
|
+
// shared row for non-direct modes; the partial body substitutes
|
|
245
|
+
// `"default"` for the missing `<accountId>` in the observation
|
|
246
|
+
// contract. Same pattern as the userManagedConnector
|
|
247
|
+
// delegated-cross → delegated-same collapse in `resolveFetchMode`:
|
|
248
|
+
// the dispatcher folds away configurations that have no real wire
|
|
249
|
+
// surface so the partials never need to defend against them.
|
|
250
|
+
if (spec.perAccount && fetchMode === "direct") {
|
|
251
|
+
const accountRows = input.accounts.filter((a) => a.integration === integration);
|
|
252
|
+
for (const account of accountRows) {
|
|
253
|
+
rows.push({
|
|
254
|
+
integration,
|
|
255
|
+
mode: fetchMode,
|
|
256
|
+
window: spec.window,
|
|
257
|
+
accountId: account.accountId,
|
|
258
|
+
label: account.label,
|
|
259
|
+
query,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
rows.push({
|
|
265
|
+
integration,
|
|
266
|
+
mode: fetchMode,
|
|
267
|
+
window: spec.window,
|
|
268
|
+
query,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return rows;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Render the `<acquisition-plan>` wrapper around a row sequence.
|
|
277
|
+
* `scoped` is an optional fan-out debugging affordance — when set, the
|
|
278
|
+
* block's element carries a `scoped="<key>"` attribute so a sub-plan is
|
|
279
|
+
* visually distinguishable from a full plan in the daemon log and in
|
|
280
|
+
* test fixtures. The partials ignore the attribute.
|
|
281
|
+
*/
|
|
282
|
+
function renderAcquisitionPlanBlock(routine, agentDay, rows, scoped) {
|
|
283
|
+
// Strip the `routine.` prefix in the attribute for compactness; the
|
|
284
|
+
// surrounding daemon log carries the full ProcessKey.
|
|
285
|
+
const routineAttr = routine.replace(/^routine\./, "");
|
|
286
|
+
const openParts = [
|
|
287
|
+
`routine="${xmlAttr(routineAttr)}"`,
|
|
288
|
+
`agent_day="${xmlAttr(agentDay)}"`,
|
|
289
|
+
];
|
|
290
|
+
if (scoped !== undefined) {
|
|
291
|
+
openParts.push(`scoped="${xmlAttr(scoped)}"`);
|
|
292
|
+
}
|
|
293
|
+
const lines = [
|
|
294
|
+
`<acquisition-plan ${openParts.join(" ")}>`,
|
|
295
|
+
...rows.map(renderFetchRow),
|
|
296
|
+
"</acquisition-plan>",
|
|
297
|
+
];
|
|
298
|
+
return lines.join("\n");
|
|
299
|
+
}
|
|
300
|
+
// ── Public entry point ────────────────────────────────────────────────────
|
|
301
|
+
/**
|
|
302
|
+
* Build the `<acquisition-plan>` block string for a routine.
|
|
303
|
+
*
|
|
304
|
+
* Pure function: deterministic for a given input. Returns the rendered
|
|
305
|
+
* XML even when no rows survive — an empty plan still gives the
|
|
306
|
+
* pre-pass an explicit "nothing to do" signal rather than the absence
|
|
307
|
+
* of a block.
|
|
308
|
+
*/
|
|
309
|
+
export function buildAcquisitionPlan(input) {
|
|
310
|
+
const rows = collectFetchRows(input);
|
|
311
|
+
return renderAcquisitionPlanBlock(input.routine, input.agentDay, rows);
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Partition a routine's acquisition plan into one sub-plan per active
|
|
315
|
+
* `IntegrationKey`. Pure helper consumed by the fan-out coordinator
|
|
316
|
+
* (Phase 1). Returns:
|
|
317
|
+
*
|
|
318
|
+
* - An empty array when no integration is active for the routine
|
|
319
|
+
* (every cell skipped — caller short-circuits to `status="skipped"`).
|
|
320
|
+
* - One `AcquisitionSubPlan` per integration that contributes ≥ 1 row.
|
|
321
|
+
*
|
|
322
|
+
* **Ordering invariant.** Sub-plans are sorted by `INTEGRATION_KEYS`
|
|
323
|
+
* enumeration order regardless of the order rows appear in
|
|
324
|
+
* `ROUTINE_WINDOWS`. The coordinator's `Promise.all` + `mergeSubReports`
|
|
325
|
+
* pipeline preserves the ordering downstream so daemon logs and test
|
|
326
|
+
* fixtures are stable across runs.
|
|
327
|
+
*
|
|
328
|
+
* **Row preservation.** Each sub-plan's `block` is rendered through the
|
|
329
|
+
* same `renderAcquisitionPlanBlock` helper that backs `buildAcquisitionPlan`,
|
|
330
|
+
* so the union of sub-plan rows equals `buildAcquisitionPlan(input)`'s
|
|
331
|
+
* rows row-for-row (same attribute order, same query substitution, same
|
|
332
|
+
* perAccount fan-out). The only differences are the per-block wrapper's
|
|
333
|
+
* `scoped="<key>"` attribute and the partition itself.
|
|
334
|
+
*/
|
|
335
|
+
export function splitAcquisitionPlanByIntegration(input) {
|
|
336
|
+
const rows = collectFetchRows(input);
|
|
337
|
+
if (rows.length === 0)
|
|
338
|
+
return [];
|
|
339
|
+
// Group rows by integration while keeping insertion order inside each
|
|
340
|
+
// group (the `ROUTINE_WINDOWS` walk order from `collectFetchRows`).
|
|
341
|
+
const groups = new Map();
|
|
342
|
+
for (const row of rows) {
|
|
343
|
+
const existing = groups.get(row.integration);
|
|
344
|
+
if (existing) {
|
|
345
|
+
existing.push(row);
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
groups.set(row.integration, [row]);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
// Emit sub-plans in `INTEGRATION_KEYS` enumeration order — deterministic
|
|
352
|
+
// resolution order per §4.6.
|
|
353
|
+
const out = [];
|
|
354
|
+
for (const key of INTEGRATION_KEYS) {
|
|
355
|
+
const groupRows = groups.get(key);
|
|
356
|
+
if (!groupRows || groupRows.length === 0)
|
|
357
|
+
continue;
|
|
358
|
+
out.push({
|
|
359
|
+
integrationKey: key,
|
|
360
|
+
block: renderAcquisitionPlanBlock(input.routine, input.agentDay, groupRows, key),
|
|
361
|
+
fetchRowCount: groupRows.length,
|
|
362
|
+
rowsHaveAccount: groupRows.some((r) => r.accountId !== undefined),
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
return out;
|
|
366
|
+
}
|
|
367
|
+
//# sourceMappingURL=routine-acquisition-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routine-acquisition-plan.js","sourceRoot":"","sources":["../../src/core/routine-acquisition-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry-policy helpers for the pre-pass fan-out coordinator.
|
|
3
|
+
*
|
|
4
|
+
* PRE_PASS_FAN_OUT_DESIGN.md §4.4 — the coordinator spawns a fresh Haiku
|
|
5
|
+
* sub-session per attempt and consults `defaultRetryDecision` (or any
|
|
6
|
+
* `RetryDecisionFn`) between attempts to choose whether to spawn the
|
|
7
|
+
* next one. Keeping the policy as pure data (decision matrix in
|
|
8
|
+
* TypeScript, not in agent prose) makes the loop deterministic,
|
|
9
|
+
* testable, and free of per-model variance.
|
|
10
|
+
*
|
|
11
|
+
* Phase 0 ships these helpers + their unit tests. The fan-out
|
|
12
|
+
* coordinator that consumes them lands in Phase 1.
|
|
13
|
+
*/
|
|
14
|
+
import type { IntegrationKey } from "@aitne/shared";
|
|
15
|
+
import type { SubAttemptRecord } from "./routine-fetch-window-runner.js";
|
|
16
|
+
/**
|
|
17
|
+
* One pre-pass retry chain's policy. The runner constructs this from
|
|
18
|
+
* `AgentConfig.prePass*` knobs (Phase 1) and passes it through every
|
|
19
|
+
* `defaultRetryDecision` call.
|
|
20
|
+
*/
|
|
21
|
+
export interface RetryPolicy {
|
|
22
|
+
/** Cap on attempts per integration. Default 3 per §6 config table. */
|
|
23
|
+
maxAttempts: number;
|
|
24
|
+
/**
|
|
25
|
+
* Backoff between attempts, indexed by attempt number minus 1.
|
|
26
|
+
* Length MUST equal `maxAttempts - 1`. Default `[1000, 2000, 4000]`.
|
|
27
|
+
*/
|
|
28
|
+
backoffMs: readonly number[];
|
|
29
|
+
/** Per-integration cumulative cost cap across attempts. Default 0.60 USD. */
|
|
30
|
+
perIntegrationBudgetUsd: number;
|
|
31
|
+
/**
|
|
32
|
+
* Optional decision override. The coordinator passes this through to
|
|
33
|
+
* unit tests / fixtures; production code uses `defaultRetryDecision`.
|
|
34
|
+
*/
|
|
35
|
+
retryOn?: RetryDecisionFn;
|
|
36
|
+
/**
|
|
37
|
+
* Runtime knob for the partial-with-no-post branch. Defaults to true
|
|
38
|
+
* when omitted so existing tests and callers keep the §4.4 matrix.
|
|
39
|
+
*/
|
|
40
|
+
retryOnPartial?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Decision returned by a `RetryDecisionFn`. `reason` flows into the
|
|
44
|
+
* `agent_actions.detail.prePass.retryReason` field so the audit feed
|
|
45
|
+
* carries a human-grokkable trail of why each attempt fired (or didn't).
|
|
46
|
+
*/
|
|
47
|
+
export interface RetryDecision {
|
|
48
|
+
retry: boolean;
|
|
49
|
+
/** Short, stable identifier — used in audit rows, not user-facing prose. */
|
|
50
|
+
reason: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Decision-function signature. The coordinator invokes this AFTER
|
|
54
|
+
* recording the latest attempt and BEFORE applying backoff for the next
|
|
55
|
+
* attempt. `priorAttempts` excludes the current `report` so callers
|
|
56
|
+
* computing cumulative cost can include `report.costUsd` themselves.
|
|
57
|
+
*/
|
|
58
|
+
export type RetryDecisionFn = (report: SubAttemptRecord, attempt: number, policy: RetryPolicy, priorAttempts: readonly SubAttemptRecord[]) => RetryDecision;
|
|
59
|
+
/**
|
|
60
|
+
* Stable reason identifiers. Centralised so the dashboard / audit feed
|
|
61
|
+
* can render them consistently and so test assertions don't drift from
|
|
62
|
+
* runtime values.
|
|
63
|
+
*/
|
|
64
|
+
export declare const RETRY_REASONS: {
|
|
65
|
+
readonly MAX_ATTEMPTS: "max-attempts-reached";
|
|
66
|
+
readonly BUDGET_CAP: "per-integration-budget-cap";
|
|
67
|
+
readonly FLIP_LOCKED: "flip-locked";
|
|
68
|
+
readonly BUDGET_EXHAUSTED: "budget-exhausted";
|
|
69
|
+
readonly AUTH_FAILED: "auth-failed";
|
|
70
|
+
readonly FAILED_STATUS: "failed-status";
|
|
71
|
+
readonly UPSTREAM_5XX: "upstream-5xx";
|
|
72
|
+
readonly PARTIAL_NO_POST: "partial-no-post";
|
|
73
|
+
readonly SUCCESS: "success";
|
|
74
|
+
readonly PARTIAL_WITH_POST: "partial-with-progress";
|
|
75
|
+
readonly SKIPPED: "skipped";
|
|
76
|
+
readonly NO_PROGRESS: "no-progress";
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Sum the cost across `priorAttempts` + the current `report`. Pure;
|
|
80
|
+
* exported for unit testing the budget-cap branch in isolation.
|
|
81
|
+
*/
|
|
82
|
+
export declare function cumulativeAttemptCost(report: SubAttemptRecord, priorAttempts: readonly SubAttemptRecord[]): number;
|
|
83
|
+
/**
|
|
84
|
+
* Default retry policy from §4.4. Pure: decision is fully determined by
|
|
85
|
+
* the inputs, no side effects, no shared state. Decision order:
|
|
86
|
+
*
|
|
87
|
+
* 1. Attempts cap (no retry, reason `max-attempts-reached`).
|
|
88
|
+
* 2. Per-integration cumulative budget cap.
|
|
89
|
+
* 3. Terminal error classes — flip-lock, budget-exhausted, auth (401/403).
|
|
90
|
+
* 4. Retry-worthy outcomes — failed status, upstream 5xx, partial-no-post.
|
|
91
|
+
* 5. Non-retry-by-default — success, partial-with-progress, skipped, no-progress.
|
|
92
|
+
*
|
|
93
|
+
* The motivating §1.1 failure ("Unknown name "limit"") lands
|
|
94
|
+
* as `status="partial"` with `fetched > 0`, `posted === 0` and a
|
|
95
|
+
* `fetch-failed` error — rule (4)'s `partial-no-post` branch catches it.
|
|
96
|
+
*/
|
|
97
|
+
export declare const defaultRetryDecision: RetryDecisionFn;
|
|
98
|
+
/**
|
|
99
|
+
* Render the `<prior_attempt_error>` block sequence injected into a
|
|
100
|
+
* sub-session's prompt on attempt > 1. Returns the empty string when
|
|
101
|
+
* `attempts` is empty so callers can unconditionally concatenate the
|
|
102
|
+
* result.
|
|
103
|
+
*
|
|
104
|
+
* **Ordering.** Newest first — attempt N (most recent) appears before
|
|
105
|
+
* attempt N-1, etc. The model reads the most-recent failure top of
|
|
106
|
+
* page; deeper history is context-only.
|
|
107
|
+
*/
|
|
108
|
+
export declare function buildPriorAttemptHintBlock(attempts: readonly SubAttemptRecord[], integrationKey?: IntegrationKey): string;
|
|
109
|
+
//# sourceMappingURL=routine-fetch-window-retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routine-fetch-window-retry.d.ts","sourceRoot":"","sources":["../../src/core/routine-fetch-window-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIzE;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,6EAA6E;IAC7E,uBAAuB,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,SAAS,gBAAgB,EAAE,KACvC,aAAa,CAAC;AAInB;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;CAahB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,aAAa,EAAE,SAAS,gBAAgB,EAAE,GACzC,MAAM,CAIR;AAmBD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAmElC,CAAC;AA+EF;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,cAAc,CAAC,EAAE,cAAc,GAC9B,MAAM,CAMR"}
|