@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,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Messaging-adapter bootstrap — Discord / Slack / Telegram / WhatsApp.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from the `startup()` IIFE in `index.ts` per
|
|
5
|
+
* `docs/design/appendices/file-split-plan.md` §10 (Tier 2, Pattern C).
|
|
6
|
+
*
|
|
7
|
+
* Goal: lift the four reload routines + the WhatsApp build/teardown
|
|
8
|
+
* helpers out of the startup lambda so the lambda reads as a sequence
|
|
9
|
+
* rather than a 3,000-line bag of closures.
|
|
10
|
+
*
|
|
11
|
+
* Shape: `createAdapterReloaders(deps)` is a factory that captures a
|
|
12
|
+
* `BootstrapAdapterDeps` record once and returns the closures the IIFE
|
|
13
|
+
* used to define inline. The mutable adapter references live in a
|
|
14
|
+
* shared `AdapterState` object passed in via `deps.state`, which the
|
|
15
|
+
* factory reads and writes — `index.ts` continues to inspect the same
|
|
16
|
+
* state for pairing / `/health` reporting after the reload functions
|
|
17
|
+
* complete. Captured references match the pre-extraction behavior:
|
|
18
|
+
* - The closures register / unregister with `messageHub`.
|
|
19
|
+
* - `onMessage` enqueues to `eventBus`.
|
|
20
|
+
* - Discovered owner ids flow back through `recordDetectedOwner`.
|
|
21
|
+
* - Attachment downloads use the shared `attachmentStore`.
|
|
22
|
+
* - WhatsApp logout fires `onWhatsAppLoggedOut`, which currently
|
|
23
|
+
* posts a fallback notification through the message hub.
|
|
24
|
+
*
|
|
25
|
+
* `whatsappQrResponseFromAdapter` is a pure projection from
|
|
26
|
+
* adapter+snapshot → wire response and is exported separately so the
|
|
27
|
+
* dashboard controls path can call it without going through the
|
|
28
|
+
* factory.
|
|
29
|
+
*/
|
|
30
|
+
import { join } from "node:path";
|
|
31
|
+
import { DiscordAdapter } from "../adapters/discord.js";
|
|
32
|
+
import { SlackAdapter } from "../adapters/slack-adapter.js";
|
|
33
|
+
import { TelegramAdapter } from "../adapters/telegram-adapter.js";
|
|
34
|
+
import { WhatsAppAdapter, } from "../adapters/whatsapp-adapter.js";
|
|
35
|
+
import { createLogger, toSafeErrorMessage } from "../logging.js";
|
|
36
|
+
const logger = createLogger("daemon-bootstrap-adapters");
|
|
37
|
+
export function createAdapterReloaders(deps) {
|
|
38
|
+
const { config, secretBroker, messageHub, eventBus, attachmentStore, recordDetectedOwner, onWhatsAppLoggedOut, state, } = deps;
|
|
39
|
+
async function reloadDiscordAdapter(startNow) {
|
|
40
|
+
const botToken = await secretBroker.getDiscordBotToken();
|
|
41
|
+
const configured = !!botToken;
|
|
42
|
+
messageHub.setPlatformConfigured("discord", configured);
|
|
43
|
+
if (state.discord) {
|
|
44
|
+
try {
|
|
45
|
+
await state.discord.stop();
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
logger.warn({ err }, "Failed to stop Discord adapter during reload");
|
|
49
|
+
}
|
|
50
|
+
messageHub.unregister("discord");
|
|
51
|
+
state.discord = null;
|
|
52
|
+
}
|
|
53
|
+
if (!botToken) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
state.discord = new DiscordAdapter({
|
|
57
|
+
botToken,
|
|
58
|
+
ownerUserId: config.discordOwnerUserId,
|
|
59
|
+
onMessage: (event) => void eventBus.put(event),
|
|
60
|
+
onOwnerDetected: (userId) => recordDetectedOwner("discord", userId),
|
|
61
|
+
attachmentStore,
|
|
62
|
+
});
|
|
63
|
+
messageHub.register(state.discord);
|
|
64
|
+
if (startNow) {
|
|
65
|
+
// Mark as "connecting" while the websocket handshake is in flight so
|
|
66
|
+
// /health doesn't briefly report "ok" before the adapter actually
|
|
67
|
+
// comes up (register() defaults to "ok" to keep the notification
|
|
68
|
+
// pipeline usable in unit tests; this override is the real state).
|
|
69
|
+
messageHub.setPlatformRuntimeStatus("discord", { runtimeState: "connecting", error: null });
|
|
70
|
+
try {
|
|
71
|
+
await state.discord.start();
|
|
72
|
+
messageHub.setPlatformRuntimeStatus("discord", { runtimeState: "ok", error: null });
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
const message = toSafeErrorMessage(err, "Discord adapter failed to start");
|
|
76
|
+
messageHub.setPlatformRuntimeStatus("discord", { runtimeState: "error", error: message });
|
|
77
|
+
logger.error({ err }, "Failed to start Discord adapter during reload");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function reloadSlackAdapter(startNow) {
|
|
82
|
+
const [botToken, appToken] = await Promise.all([
|
|
83
|
+
secretBroker.getSlackBotToken(),
|
|
84
|
+
secretBroker.getSlackAppToken(),
|
|
85
|
+
]);
|
|
86
|
+
const configured = !!(botToken && appToken);
|
|
87
|
+
messageHub.setPlatformConfigured("slack", configured);
|
|
88
|
+
if (state.slack) {
|
|
89
|
+
try {
|
|
90
|
+
await state.slack.stop();
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
logger.warn({ err }, "Failed to stop Slack adapter during reload");
|
|
94
|
+
}
|
|
95
|
+
messageHub.unregister("slack");
|
|
96
|
+
state.slack = null;
|
|
97
|
+
}
|
|
98
|
+
if (!botToken || !appToken) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
state.slack = new SlackAdapter({
|
|
102
|
+
botToken,
|
|
103
|
+
appToken,
|
|
104
|
+
ownerUserId: config.slackOwnerUserId,
|
|
105
|
+
onMessage: (event) => void eventBus.put(event),
|
|
106
|
+
onOwnerDetected: (userId) => recordDetectedOwner("slack", userId),
|
|
107
|
+
attachmentStore,
|
|
108
|
+
});
|
|
109
|
+
messageHub.register(state.slack);
|
|
110
|
+
if (startNow) {
|
|
111
|
+
messageHub.setPlatformRuntimeStatus("slack", { runtimeState: "connecting", error: null });
|
|
112
|
+
try {
|
|
113
|
+
await state.slack.start();
|
|
114
|
+
messageHub.setPlatformRuntimeStatus("slack", { runtimeState: "ok", error: null });
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
const message = toSafeErrorMessage(err, "Slack adapter failed to start");
|
|
118
|
+
messageHub.setPlatformRuntimeStatus("slack", { runtimeState: "error", error: message });
|
|
119
|
+
logger.error({ err }, "Failed to start Slack adapter during reload");
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async function reloadTelegramAdapter(startNow) {
|
|
124
|
+
const botToken = await secretBroker.getTelegramBotToken();
|
|
125
|
+
const configured = !!botToken;
|
|
126
|
+
messageHub.setPlatformConfigured("telegram", configured);
|
|
127
|
+
if (state.telegram) {
|
|
128
|
+
try {
|
|
129
|
+
await state.telegram.stop();
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
logger.warn({ err }, "Failed to stop Telegram adapter during reload");
|
|
133
|
+
}
|
|
134
|
+
messageHub.unregister("telegram");
|
|
135
|
+
state.telegram = null;
|
|
136
|
+
}
|
|
137
|
+
if (!botToken) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
state.telegram = new TelegramAdapter({
|
|
141
|
+
botToken,
|
|
142
|
+
ownerChatId: config.telegramOwnerChatId,
|
|
143
|
+
onMessage: (event) => void eventBus.put(event),
|
|
144
|
+
onOwnerDetected: (chatId) => recordDetectedOwner("telegram", chatId),
|
|
145
|
+
attachmentStore,
|
|
146
|
+
});
|
|
147
|
+
messageHub.register(state.telegram);
|
|
148
|
+
if (startNow) {
|
|
149
|
+
messageHub.setPlatformRuntimeStatus("telegram", { runtimeState: "connecting", error: null });
|
|
150
|
+
try {
|
|
151
|
+
await state.telegram.start();
|
|
152
|
+
messageHub.setPlatformRuntimeStatus("telegram", { runtimeState: "ok", error: null });
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
const message = toSafeErrorMessage(err, "Telegram adapter failed to start");
|
|
156
|
+
messageHub.setPlatformRuntimeStatus("telegram", { runtimeState: "error", error: message });
|
|
157
|
+
logger.error({ err }, "Failed to start Telegram adapter during reload");
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function buildWhatsAppAdapter() {
|
|
162
|
+
if (!config.whatsappOwnerPhone) {
|
|
163
|
+
throw new Error("Cannot enable WhatsApp: PA_WHATSAPP_OWNER_PHONE is not set");
|
|
164
|
+
}
|
|
165
|
+
const existing = messageHub.getAdapter("whatsapp");
|
|
166
|
+
if (existing && state.whatsapp && existing === state.whatsapp) {
|
|
167
|
+
return state.whatsapp;
|
|
168
|
+
}
|
|
169
|
+
const adapter = new WhatsAppAdapter({
|
|
170
|
+
ownerPhone: config.whatsappOwnerPhone,
|
|
171
|
+
authDir: config.whatsappAuthDir ?? join(config.dataDir, "whatsapp", "auth"),
|
|
172
|
+
onMessage: (event) => void eventBus.put(event),
|
|
173
|
+
attachmentStore,
|
|
174
|
+
onLoggedOut: onWhatsAppLoggedOut,
|
|
175
|
+
});
|
|
176
|
+
messageHub.register(adapter);
|
|
177
|
+
state.whatsapp = adapter;
|
|
178
|
+
return adapter;
|
|
179
|
+
}
|
|
180
|
+
async function teardownWhatsAppAdapter() {
|
|
181
|
+
if (!state.whatsapp)
|
|
182
|
+
return;
|
|
183
|
+
try {
|
|
184
|
+
await state.whatsapp.stop();
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
logger.warn({ err }, "Error stopping WhatsApp adapter during teardown");
|
|
188
|
+
}
|
|
189
|
+
messageHub.unregister("whatsapp");
|
|
190
|
+
state.whatsapp = null;
|
|
191
|
+
}
|
|
192
|
+
async function enableWhatsAppAdapter() {
|
|
193
|
+
const adapter = buildWhatsAppAdapter();
|
|
194
|
+
if (adapter.getStatus() === "disabled") {
|
|
195
|
+
await adapter.start();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
reloadDiscordAdapter,
|
|
200
|
+
reloadSlackAdapter,
|
|
201
|
+
reloadTelegramAdapter,
|
|
202
|
+
buildWhatsAppAdapter,
|
|
203
|
+
teardownWhatsAppAdapter,
|
|
204
|
+
enableWhatsAppAdapter,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Pure projection of the WhatsApp adapter (+ optional snapshot
|
|
209
|
+
* override) into the `WhatsAppQrResponse` wire shape. Lives outside
|
|
210
|
+
* `createAdapterReloaders` because the dashboard controls path needs
|
|
211
|
+
* to call it after the factory has returned; it has no state of its
|
|
212
|
+
* own.
|
|
213
|
+
*/
|
|
214
|
+
export function whatsappQrResponseFromAdapter(adapter, snapshotOverride) {
|
|
215
|
+
if (!adapter) {
|
|
216
|
+
return {
|
|
217
|
+
dataUrl: null,
|
|
218
|
+
payload: null,
|
|
219
|
+
generatedAt: null,
|
|
220
|
+
expiresAt: null,
|
|
221
|
+
state: "not_initialized",
|
|
222
|
+
error: "WhatsApp adapter not enabled",
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
const snapshot = snapshotOverride !== undefined
|
|
226
|
+
? snapshotOverride
|
|
227
|
+
: adapter.getQrSnapshot();
|
|
228
|
+
return {
|
|
229
|
+
dataUrl: snapshot?.dataUrl ?? null,
|
|
230
|
+
payload: snapshot?.payload ?? null,
|
|
231
|
+
generatedAt: snapshot?.generatedAt ?? null,
|
|
232
|
+
expiresAt: snapshot?.expiresAt ?? null,
|
|
233
|
+
state: adapter.getStatus(),
|
|
234
|
+
error: adapter.getStatusError(),
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/bootstrap/adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boot-time catchup sequence — pure-move from `index.ts` per
|
|
3
|
+
* `docs/design/appendices/file-split-plan.md` §10. Pattern A: each function
|
|
4
|
+
* takes its dependencies (db, dispatcher, config) as arguments so the
|
|
5
|
+
* startup IIFE can compose them without going through `this`.
|
|
6
|
+
*
|
|
7
|
+
* Policy (unchanged from origin):
|
|
8
|
+
* - discard previous-agent-day pending tasks instead of replaying them
|
|
9
|
+
* - fail/skip orphaned running tasks instead of blindly retrying side effects
|
|
10
|
+
* - catch up same-agent-day routines only once
|
|
11
|
+
*/
|
|
12
|
+
import type Database from "better-sqlite3";
|
|
13
|
+
import type { AgentConfig } from "../config.js";
|
|
14
|
+
import type { EventDispatcher } from "../core/dispatcher.js";
|
|
15
|
+
export interface StartupCatchupResult {
|
|
16
|
+
postMessagingRoadmapRefresh: boolean;
|
|
17
|
+
postMessagingRoutines: string[];
|
|
18
|
+
postMessagingHourlyCheck: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function runCatchup(db: Database.Database, dispatcher: EventDispatcher, config: AgentConfig): Promise<StartupCatchupResult>;
|
|
21
|
+
export declare function runPostMessagingCatchup(dispatcher: EventDispatcher, catchup: StartupCatchupResult): Promise<void>;
|
|
22
|
+
export declare function processRoutineCatchup(dispatcher: EventDispatcher, routine: string): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=catchup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catchup.d.ts","sourceRoot":"","sources":["../../src/bootstrap/catchup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAO3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAc7D,MAAM,WAAW,oBAAoB;IACnC,2BAA2B,EAAE,OAAO,CAAC;IACrC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED,wBAAsB,UAAU,CAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,eAAe,EAC3B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAkH/B;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boot-time catchup sequence — pure-move from `index.ts` per
|
|
3
|
+
* `docs/design/appendices/file-split-plan.md` §10. Pattern A: each function
|
|
4
|
+
* takes its dependencies (db, dispatcher, config) as arguments so the
|
|
5
|
+
* startup IIFE can compose them without going through `this`.
|
|
6
|
+
*
|
|
7
|
+
* Policy (unchanged from origin):
|
|
8
|
+
* - discard previous-agent-day pending tasks instead of replaying them
|
|
9
|
+
* - fail/skip orphaned running tasks instead of blindly retrying side effects
|
|
10
|
+
* - catch up same-agent-day routines only once
|
|
11
|
+
*/
|
|
12
|
+
import { join } from "node:path";
|
|
13
|
+
import { createEvent, EventPriority, getAgentDayBoundsUtc, } from "@aitne/shared";
|
|
14
|
+
import { getContextDir, isRoadmapStale } from "../config.js";
|
|
15
|
+
import { discardStalePendingSchedules, recoverOrphanedRunningSchedules, } from "../core/schedule-maintenance.js";
|
|
16
|
+
import { createLogger } from "../logging.js";
|
|
17
|
+
import { getDueCatchupRoutines, hasFreshAgentDayTodayMd, shouldCatchUpHourlyCheck, } from "./schedule-helpers.js";
|
|
18
|
+
const logger = createLogger("daemon-bootstrap-catchup");
|
|
19
|
+
export async function runCatchup(db, dispatcher, config) {
|
|
20
|
+
// Setup gate — on first boot (before rules/management.md exists) we must
|
|
21
|
+
// NOT run the morning routine. Without user/profile.md / rules/management.md
|
|
22
|
+
// the generated today.md is meaningless AND it fires
|
|
23
|
+
// onPromptContextChanged → markActiveDmSessionsStale, which destroys the
|
|
24
|
+
// dashboard setup conversation on the user's next turn. Autonomous
|
|
25
|
+
// catchup will run on the first normal boot *after* setup completes.
|
|
26
|
+
const gateReason = dispatcher.isAutonomousAllowed();
|
|
27
|
+
if (gateReason !== null) {
|
|
28
|
+
logger.info({ reason: gateReason }, "Skipping startup catchup — autonomous work paused for setup");
|
|
29
|
+
return {
|
|
30
|
+
postMessagingRoadmapRefresh: false,
|
|
31
|
+
postMessagingRoutines: [],
|
|
32
|
+
postMessagingHourlyCheck: false,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const now = new Date();
|
|
36
|
+
const tz = config.timezone || undefined;
|
|
37
|
+
const contextDir = getContextDir(config);
|
|
38
|
+
const todayMdPath = join(contextDir, "today.md");
|
|
39
|
+
const { start: agentDayStartUtc, end: agentDayEndUtc } = getAgentDayBoundsUtc(tz, config.dayBoundaryHour, now);
|
|
40
|
+
const skippedPending = discardStalePendingSchedules(db, agentDayStartUtc);
|
|
41
|
+
if (skippedPending > 0) {
|
|
42
|
+
logger.warn({ count: skippedPending }, "Discarded stale pending schedules at startup");
|
|
43
|
+
}
|
|
44
|
+
const runningRecovery = recoverOrphanedRunningSchedules(db, agentDayStartUtc);
|
|
45
|
+
if (runningRecovery.skipped > 0 || runningRecovery.failed > 0) {
|
|
46
|
+
logger.warn(runningRecovery, "Recovered orphaned running schedules without replay");
|
|
47
|
+
}
|
|
48
|
+
// Pin to the same `now` so the day-boundary check sees a consistent
|
|
49
|
+
// clock across the catchup's pre / post freshness probes.
|
|
50
|
+
const needsMorning = !hasFreshAgentDayTodayMd(todayMdPath, tz, config.dayBoundaryHour, now);
|
|
51
|
+
const dueCatchupRoutines = getDueCatchupRoutines(db, config, agentDayStartUtc, agentDayEndUtc, now);
|
|
52
|
+
const needsHourlyCheckCatchup = shouldCatchUpHourlyCheck(db, config, now);
|
|
53
|
+
let ranMorningCatchup = false;
|
|
54
|
+
if (needsMorning) {
|
|
55
|
+
try {
|
|
56
|
+
await dispatcher.summarizeDmSessions();
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
logger.error({ err }, "DM summarization catchup failed before morning routine");
|
|
60
|
+
}
|
|
61
|
+
logger.info("Stale today.md detected, running morning_routine catchup inline");
|
|
62
|
+
await dispatcher.processInline({
|
|
63
|
+
...createEvent({
|
|
64
|
+
type: "routine.morning_routine",
|
|
65
|
+
source: "catchup",
|
|
66
|
+
priority: EventPriority.HIGH,
|
|
67
|
+
data: {
|
|
68
|
+
postCatchupRoutines: dueCatchupRoutines,
|
|
69
|
+
postCatchupHourlyCheck: needsHourlyCheckCatchup,
|
|
70
|
+
deferPostMorningCatchupsUntilStartupReady: true,
|
|
71
|
+
},
|
|
72
|
+
}),
|
|
73
|
+
routine: "morning_routine",
|
|
74
|
+
});
|
|
75
|
+
ranMorningCatchup = true;
|
|
76
|
+
if (!hasFreshAgentDayTodayMd(todayMdPath, tz, config.dayBoundaryHour)) {
|
|
77
|
+
logger.warn("Startup morning catchup did not produce a fresh today.md — deferring remaining catchup work");
|
|
78
|
+
return {
|
|
79
|
+
postMessagingRoadmapRefresh: false,
|
|
80
|
+
postMessagingRoutines: [],
|
|
81
|
+
postMessagingHourlyCheck: false,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
postMessagingRoadmapRefresh: isRoadmapStale(contextDir),
|
|
86
|
+
postMessagingRoutines: dueCatchupRoutines,
|
|
87
|
+
postMessagingHourlyCheck: needsHourlyCheckCatchup,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (!ranMorningCatchup && isRoadmapStale(contextDir)) {
|
|
91
|
+
logger.info("Roadmap stale at startup, running roadmap_refresh catchup inline");
|
|
92
|
+
await processRoutineCatchup(dispatcher, "roadmap_refresh");
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
postMessagingRoadmapRefresh: false,
|
|
96
|
+
postMessagingRoutines: dueCatchupRoutines,
|
|
97
|
+
postMessagingHourlyCheck: needsHourlyCheckCatchup,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export async function runPostMessagingCatchup(dispatcher, catchup) {
|
|
101
|
+
if (catchup.postMessagingRoadmapRefresh) {
|
|
102
|
+
logger.info("Running roadmap_refresh catchup after messaging startup");
|
|
103
|
+
await processRoutineCatchup(dispatcher, "roadmap_refresh");
|
|
104
|
+
}
|
|
105
|
+
for (const routine of catchup.postMessagingRoutines) {
|
|
106
|
+
logger.info({ routine }, "Running same-day routine catchup after messaging startup");
|
|
107
|
+
await processRoutineCatchup(dispatcher, routine);
|
|
108
|
+
}
|
|
109
|
+
if (catchup.postMessagingHourlyCheck) {
|
|
110
|
+
logger.info("Triggering hourly_check catchup after messaging startup");
|
|
111
|
+
await dispatcher.triggerHourlyCheck("catchup_startup", { force: false });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export async function processRoutineCatchup(dispatcher, routine) {
|
|
115
|
+
await dispatcher.processInline({
|
|
116
|
+
...createEvent({
|
|
117
|
+
type: `routine.${routine}`,
|
|
118
|
+
source: "catchup",
|
|
119
|
+
priority: routine === "hourly_check" ? EventPriority.NORMAL : EventPriority.HIGH,
|
|
120
|
+
}),
|
|
121
|
+
routine,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=catchup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catchup.js","sourceRoot":"","sources":["../../src/bootstrap/catchup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure schedule predicates and progress math used by the boot-time catchup
|
|
3
|
+
* sequence in `bootstrap/catchup.ts` and by the inline routine-readiness
|
|
4
|
+
* check in `index.ts`. Pattern A pure-move from `index.ts` per
|
|
5
|
+
* `docs/design/appendices/file-split-plan.md` §10.
|
|
6
|
+
*
|
|
7
|
+
* No instance state, no captured closures. Every function takes its
|
|
8
|
+
* dependencies (db handle, config, clock) as arguments so the boot
|
|
9
|
+
* sequence can compose them without going through `this`.
|
|
10
|
+
*/
|
|
11
|
+
import type Database from "better-sqlite3";
|
|
12
|
+
import type { AgentConfig } from "../config.js";
|
|
13
|
+
export declare function getDueCatchupRoutines(db: Database.Database, config: AgentConfig, agentDayStartUtc: string, agentDayEndUtc: string, now: Date): string[];
|
|
14
|
+
export declare function shouldCatchUpHourlyCheck(db: Database.Database, config: AgentConfig, now: Date): boolean;
|
|
15
|
+
export declare function getProgressMinutesForHour(hour: number, dayBoundaryHour: number): number;
|
|
16
|
+
export declare function hasFreshAgentDayTodayMd(todayMdPath: string, timezone: string | undefined, dayBoundaryHour: number, now?: Date): boolean;
|
|
17
|
+
export declare function readSkillCurationCadence(db: Database.Database): "daily" | "weekly" | "monthly";
|
|
18
|
+
//# sourceMappingURL=schedule-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-helpers.d.ts","sourceRoot":"","sources":["../../src/bootstrap/schedule-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAU3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,WAAW,EACnB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,IAAI,GACR,MAAM,EAAE,CAuCV;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,IAAI,GACR,OAAO,CAsCT;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAMvF;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,IAAI,GACT,OAAO,CAQT;AAKD,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GACpB,OAAO,GAAG,QAAQ,GAAG,SAAS,CAWhC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure schedule predicates and progress math used by the boot-time catchup
|
|
3
|
+
* sequence in `bootstrap/catchup.ts` and by the inline routine-readiness
|
|
4
|
+
* check in `index.ts`. Pattern A pure-move from `index.ts` per
|
|
5
|
+
* `docs/design/appendices/file-split-plan.md` §10.
|
|
6
|
+
*
|
|
7
|
+
* No instance state, no captured closures. Every function takes its
|
|
8
|
+
* dependencies (db handle, config, clock) as arguments so the boot
|
|
9
|
+
* sequence can compose them without going through `this`.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
12
|
+
import { formatSqliteDatetime, getAgentDayBoundsUtc, getAgentDayDateStr, getAgentDayProgressMinutes, nowInTimezone, parseSqliteUtcMs, } from "@aitne/shared";
|
|
13
|
+
import { hasActionInWindow } from "../core/schedule-maintenance.js";
|
|
14
|
+
export function getDueCatchupRoutines(db, config, agentDayStartUtc, agentDayEndUtc, now) {
|
|
15
|
+
const tz = config.timezone || undefined;
|
|
16
|
+
const progressMinutes = getAgentDayProgressMinutes(tz, config.dayBoundaryHour, now);
|
|
17
|
+
const dueAt18 = getProgressMinutesForHour(18, config.dayBoundaryHour);
|
|
18
|
+
if (progressMinutes < dueAt18) {
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
const routines = [];
|
|
22
|
+
const agentDayStartMs = parseSqliteUtcMs(agentDayStartUtc);
|
|
23
|
+
const agentDayLocal = nowInTimezone(tz, new Date(agentDayStartMs));
|
|
24
|
+
const tomorrowLocal = nowInTimezone(tz, new Date(agentDayStartMs + 24 * 60 * 60 * 1000));
|
|
25
|
+
if (!hasActionInWindow(db, "routine.evening_review", agentDayStartUtc, agentDayEndUtc)) {
|
|
26
|
+
routines.push("evening_review");
|
|
27
|
+
}
|
|
28
|
+
if (agentDayLocal.dayOfWeek === 5 &&
|
|
29
|
+
!hasActionInWindow(db, "routine.weekly_review", agentDayStartUtc, agentDayEndUtc)) {
|
|
30
|
+
routines.push("weekly_review");
|
|
31
|
+
}
|
|
32
|
+
if (tomorrowLocal.day === 1 &&
|
|
33
|
+
!hasActionInWindow(db, "routine.monthly_review", agentDayStartUtc, agentDayEndUtc)) {
|
|
34
|
+
routines.push("monthly_review");
|
|
35
|
+
}
|
|
36
|
+
return routines;
|
|
37
|
+
}
|
|
38
|
+
export function shouldCatchUpHourlyCheck(db, config, now) {
|
|
39
|
+
if (!config.hourlyCheckEnabled) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const tz = config.timezone || undefined;
|
|
43
|
+
const local = nowInTimezone(tz, now);
|
|
44
|
+
if (local.hours < config.hourlyCheckActiveStartHour ||
|
|
45
|
+
local.hours >= config.hourlyCheckActiveEndHour ||
|
|
46
|
+
local.hours === config.dayBoundaryHour) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
// Slot anchors to `activeStartHour`, mirroring shouldFireHourlyTickAt
|
|
50
|
+
// in scheduler.ts so the catch-up function picks the same slot the
|
|
51
|
+
// cron callback would have fired at. The earlier branch already
|
|
52
|
+
// returned false when local.hours < activeStartHour, so the offset is
|
|
53
|
+
// always non-negative here.
|
|
54
|
+
const anchorMinutes = config.hourlyCheckActiveStartHour * 60;
|
|
55
|
+
const offsetFromAnchor = local.hours * 60 + local.minutes - anchorMinutes;
|
|
56
|
+
const slotOffsetFromAnchor = Math.floor(offsetFromAnchor / config.hourlyCheckIntervalMinutes) *
|
|
57
|
+
config.hourlyCheckIntervalMinutes;
|
|
58
|
+
const slotMinutesSinceMidnight = anchorMinutes + slotOffsetFromAnchor;
|
|
59
|
+
const dayStartUtc = getAgentDayBoundsUtc(tz, 0, now).start;
|
|
60
|
+
const slotStartMs = parseSqliteUtcMs(dayStartUtc) + slotMinutesSinceMidnight * 60 * 1000;
|
|
61
|
+
const slotStartUtc = formatSqliteDatetime(new Date(slotStartMs));
|
|
62
|
+
return !hasActionInWindow(db, "routine.hourly_check", slotStartUtc, formatSqliteDatetime(now));
|
|
63
|
+
}
|
|
64
|
+
export function getProgressMinutesForHour(hour, dayBoundaryHour) {
|
|
65
|
+
const scheduledMinutes = hour * 60;
|
|
66
|
+
const boundaryMinutes = dayBoundaryHour * 60;
|
|
67
|
+
return scheduledMinutes >= boundaryMinutes
|
|
68
|
+
? scheduledMinutes - boundaryMinutes
|
|
69
|
+
: 24 * 60 - boundaryMinutes + scheduledMinutes;
|
|
70
|
+
}
|
|
71
|
+
export function hasFreshAgentDayTodayMd(todayMdPath, timezone, dayBoundaryHour, now) {
|
|
72
|
+
if (!existsSync(todayMdPath)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
const firstLine = readFileSync(todayMdPath, "utf-8").split("\n")[0] ?? "";
|
|
76
|
+
const today = getAgentDayDateStr(timezone, dayBoundaryHour, now);
|
|
77
|
+
return firstLine.includes(today);
|
|
78
|
+
}
|
|
79
|
+
// P22 — read the operator's chosen cadence for skill curation runs.
|
|
80
|
+
// Mirrors the helper in `core/scheduler.ts` so the dispatcher hook here can
|
|
81
|
+
// resolve cadence at runtime without crossing module boundaries.
|
|
82
|
+
export function readSkillCurationCadence(db) {
|
|
83
|
+
const row = db
|
|
84
|
+
.prepare(`SELECT value_json FROM runtime_state WHERE key = 'skill_curation.config'`)
|
|
85
|
+
.get();
|
|
86
|
+
if (!row)
|
|
87
|
+
return "weekly";
|
|
88
|
+
try {
|
|
89
|
+
const v = JSON.parse(row.value_json);
|
|
90
|
+
return v.cadence ?? "weekly";
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return "weekly";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=schedule-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-helpers.js","sourceRoot":"","sources":["../../src/bootstrap/schedule-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External-service hot-reload routines — Google (calendar/gmail), Apple
|
|
3
|
+
* Calendar, Notion, GitHub.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from the `startup()` IIFE in `index.ts` per
|
|
6
|
+
* `docs/design/appendices/file-split-plan.md` §10 (Tier 2, Pattern C).
|
|
7
|
+
* Goal: lift the four reload routines and the shared
|
|
8
|
+
* `refreshGoogleSecretState` helper out of the startup lambda so the
|
|
9
|
+
* lambda reads as a sequence rather than a 3,000-line bag of closures.
|
|
10
|
+
*
|
|
11
|
+
* Shape: `createServiceReloaders(deps)` is a factory that captures a
|
|
12
|
+
* `BootstrapServiceDeps` record once and returns the reload closures.
|
|
13
|
+
* Mutable state lives in two shared holders passed in via `deps`:
|
|
14
|
+
* - `services` — `ServiceRegistry` instance shared with every route,
|
|
15
|
+
* observer, and the context builder. Reload routines write
|
|
16
|
+
* `services.calendar` / `services.gmail` / ... and the corresponding
|
|
17
|
+
* `services.errors.<key>` entries.
|
|
18
|
+
* - `secretState` — read by `/api/health.integrations` and observer
|
|
19
|
+
* start gates. Reload routines update the corresponding boolean +
|
|
20
|
+
* Google credential-type field.
|
|
21
|
+
*
|
|
22
|
+
* Both holders are passed by reference; reading them after a reload
|
|
23
|
+
* completes observes the post-reload values, exactly matching the
|
|
24
|
+
* pre-extraction inlined behavior.
|
|
25
|
+
*/
|
|
26
|
+
import type Database from "better-sqlite3";
|
|
27
|
+
import type { AgentConfig } from "../config.js";
|
|
28
|
+
import type { SecretBroker } from "../secrets/secret-broker.js";
|
|
29
|
+
import type { ServiceRegistry } from "../services/service-registry.js";
|
|
30
|
+
import { type GoogleCredentialType } from "../services/google-auth.js";
|
|
31
|
+
/**
|
|
32
|
+
* Mutable holder for the per-service "is configured" booleans + the
|
|
33
|
+
* Google credential type. Read by `/api/health.integrations` and the
|
|
34
|
+
* observer start gates; written by the reload routines.
|
|
35
|
+
*/
|
|
36
|
+
export interface BootstrapSecretState {
|
|
37
|
+
googleCredentialsConfigured: boolean;
|
|
38
|
+
googleTokenConfigured: boolean;
|
|
39
|
+
googleCredentialType: GoogleCredentialType | null;
|
|
40
|
+
notionConfigured: boolean;
|
|
41
|
+
githubConfigured: boolean;
|
|
42
|
+
githubWebhookConfigured: boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare function createInitialSecretState(): BootstrapSecretState;
|
|
45
|
+
export interface BootstrapServiceDeps {
|
|
46
|
+
readonly db: Database.Database;
|
|
47
|
+
readonly config: AgentConfig;
|
|
48
|
+
readonly secretBroker: SecretBroker;
|
|
49
|
+
readonly services: ServiceRegistry;
|
|
50
|
+
readonly secretState: BootstrapSecretState;
|
|
51
|
+
}
|
|
52
|
+
export interface ServiceReloaders {
|
|
53
|
+
refreshGoogleSecretState(): Promise<void>;
|
|
54
|
+
reloadGoogleServices(): Promise<void>;
|
|
55
|
+
reloadAppleCalendarService(): Promise<void>;
|
|
56
|
+
reloadNotionService(): Promise<void>;
|
|
57
|
+
reloadGitHubService(): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
export declare function createServiceReloaders(deps: BootstrapServiceDeps): ServiceReloaders;
|
|
60
|
+
//# sourceMappingURL=services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/bootstrap/services.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAIvE,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AAWpC;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,2BAA2B,EAAE,OAAO,CAAC;IACrC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,wBAAgB,wBAAwB,IAAI,oBAAoB,CAS/D;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,oBAAoB,GACzB,gBAAgB,CAyKlB"}
|