@aitne/daemon 0.1.7 → 0.1.8
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/dashboard-adapter.d.ts +18 -2
- package/dist/adapters/dashboard-adapter.d.ts.map +1 -1
- package/dist/adapters/dashboard-adapter.js +101 -51
- package/dist/adapters/dashboard-adapter.js.map +1 -1
- package/dist/adapters/discord.d.ts +8 -0
- package/dist/adapters/discord.d.ts.map +1 -1
- package/dist/adapters/discord.js +100 -21
- package/dist/adapters/discord.js.map +1 -1
- package/dist/adapters/message-hub.d.ts.map +1 -1
- package/dist/adapters/message-hub.js +7 -1
- package/dist/adapters/message-hub.js.map +1 -1
- package/dist/adapters/notification-manager.d.ts +102 -2
- package/dist/adapters/notification-manager.d.ts.map +1 -1
- package/dist/adapters/notification-manager.js +228 -8
- package/dist/adapters/notification-manager.js.map +1 -1
- package/dist/adapters/outbound-text.d.ts +16 -0
- package/dist/adapters/outbound-text.d.ts.map +1 -1
- package/dist/adapters/outbound-text.js +118 -1
- package/dist/adapters/outbound-text.js.map +1 -1
- package/dist/adapters/primary-platform-resolver.d.ts +69 -0
- package/dist/adapters/primary-platform-resolver.d.ts.map +1 -0
- package/dist/adapters/primary-platform-resolver.js +55 -0
- package/dist/adapters/primary-platform-resolver.js.map +1 -0
- package/dist/adapters/slack-adapter.d.ts +28 -0
- package/dist/adapters/slack-adapter.d.ts.map +1 -1
- package/dist/adapters/slack-adapter.js +134 -35
- package/dist/adapters/slack-adapter.js.map +1 -1
- package/dist/adapters/telegram-adapter.d.ts +7 -1
- package/dist/adapters/telegram-adapter.d.ts.map +1 -1
- package/dist/adapters/telegram-adapter.js +49 -18
- package/dist/adapters/telegram-adapter.js.map +1 -1
- package/dist/adapters/whatsapp-adapter.d.ts +33 -0
- package/dist/adapters/whatsapp-adapter.d.ts.map +1 -1
- package/dist/adapters/whatsapp-adapter.js +84 -0
- package/dist/adapters/whatsapp-adapter.js.map +1 -1
- package/dist/api/directory-picker.d.ts.map +1 -1
- package/dist/api/directory-picker.js +14 -0
- package/dist/api/directory-picker.js.map +1 -1
- package/dist/api/env-writer.d.ts.map +1 -1
- package/dist/api/env-writer.js +6 -1
- package/dist/api/env-writer.js.map +1 -1
- package/dist/api/helpers/agent-errors.d.ts +2600 -0
- package/dist/api/helpers/agent-errors.d.ts.map +1 -0
- package/dist/api/helpers/agent-errors.js +2506 -0
- package/dist/api/helpers/agent-errors.js.map +1 -0
- package/dist/api/integration-route-gate.d.ts.map +1 -1
- package/dist/api/integration-route-gate.js +10 -3
- package/dist/api/integration-route-gate.js.map +1 -1
- package/dist/api/routes/agent-schedule-plan-match.d.ts +5 -0
- package/dist/api/routes/agent-schedule-plan-match.d.ts.map +1 -0
- package/dist/api/routes/agent-schedule-plan-match.js +101 -0
- package/dist/api/routes/agent-schedule-plan-match.js.map +1 -0
- package/dist/api/routes/agent-schedule.d.ts +4 -0
- package/dist/api/routes/agent-schedule.d.ts.map +1 -0
- package/dist/api/routes/agent-schedule.js +750 -0
- package/dist/api/routes/agent-schedule.js.map +1 -0
- package/dist/api/routes/agent.d.ts.map +1 -1
- package/dist/api/routes/agent.js +209 -366
- package/dist/api/routes/agent.js.map +1 -1
- package/dist/api/routes/apple-calendar.d.ts.map +1 -1
- package/dist/api/routes/apple-calendar.js +109 -27
- package/dist/api/routes/apple-calendar.js.map +1 -1
- package/dist/api/routes/attachments.d.ts.map +1 -1
- package/dist/api/routes/attachments.js +113 -21
- package/dist/api/routes/attachments.js.map +1 -1
- package/dist/api/routes/backends.d.ts.map +1 -1
- package/dist/api/routes/backends.js +100 -4
- package/dist/api/routes/backends.js.map +1 -1
- package/dist/api/routes/books.d.ts.map +1 -1
- package/dist/api/routes/books.js +58 -18
- package/dist/api/routes/books.js.map +1 -1
- package/dist/api/routes/calendar.d.ts +3 -2
- package/dist/api/routes/calendar.d.ts.map +1 -1
- package/dist/api/routes/calendar.js +330 -55
- package/dist/api/routes/calendar.js.map +1 -1
- package/dist/api/routes/commands.d.ts.map +1 -1
- package/dist/api/routes/commands.js +20 -1
- package/dist/api/routes/commands.js.map +1 -1
- package/dist/api/routes/context/index.d.ts +33 -0
- package/dist/api/routes/context/index.d.ts.map +1 -0
- package/dist/api/routes/context/index.js +193 -0
- package/dist/api/routes/context/index.js.map +1 -0
- package/dist/api/routes/context/locks.d.ts +4 -0
- package/dist/api/routes/context/locks.d.ts.map +1 -0
- package/dist/api/routes/context/locks.js +136 -0
- package/dist/api/routes/context/locks.js.map +1 -0
- package/dist/api/routes/context/path-resolve.d.ts +15 -0
- package/dist/api/routes/context/path-resolve.d.ts.map +1 -0
- package/dist/api/routes/context/path-resolve.js +109 -0
- package/dist/api/routes/context/path-resolve.js.map +1 -0
- package/dist/api/routes/context/permissions.d.ts +35 -0
- package/dist/api/routes/context/permissions.d.ts.map +1 -0
- package/dist/api/routes/context/permissions.js +192 -0
- package/dist/api/routes/context/permissions.js.map +1 -0
- package/dist/api/routes/context/read.d.ts +4 -0
- package/dist/api/routes/context/read.d.ts.map +1 -0
- package/dist/api/routes/context/read.js +295 -0
- package/dist/api/routes/context/read.js.map +1 -0
- package/dist/api/routes/context/repair.d.ts +4 -0
- package/dist/api/routes/context/repair.d.ts.map +1 -0
- package/dist/api/routes/context/repair.js +114 -0
- package/dist/api/routes/context/repair.js.map +1 -0
- package/dist/api/routes/context/snapshots.d.ts +4 -0
- package/dist/api/routes/context/snapshots.d.ts.map +1 -0
- package/dist/api/routes/context/snapshots.js +177 -0
- package/dist/api/routes/context/snapshots.js.map +1 -0
- package/dist/api/routes/context/write.d.ts +4 -0
- package/dist/api/routes/context/write.d.ts.map +1 -0
- package/dist/api/routes/context/write.js +570 -0
- package/dist/api/routes/context/write.js.map +1 -0
- package/dist/api/routes/context.d.ts +2 -43
- package/dist/api/routes/context.d.ts.map +1 -1
- package/dist/api/routes/context.js +415 -558
- package/dist/api/routes/context.js.map +1 -1
- package/dist/api/routes/dashboard/config.d.ts +4 -0
- package/dist/api/routes/dashboard/config.d.ts.map +1 -0
- package/dist/api/routes/dashboard/config.js +499 -0
- package/dist/api/routes/dashboard/config.js.map +1 -0
- package/dist/api/routes/dashboard/conversations.d.ts +4 -0
- package/dist/api/routes/dashboard/conversations.d.ts.map +1 -0
- package/dist/api/routes/dashboard/conversations.js +309 -0
- package/dist/api/routes/dashboard/conversations.js.map +1 -0
- package/dist/api/routes/dashboard/cost-approvals.d.ts +29 -0
- package/dist/api/routes/dashboard/cost-approvals.d.ts.map +1 -0
- package/dist/api/routes/dashboard/cost-approvals.js +259 -0
- package/dist/api/routes/dashboard/cost-approvals.js.map +1 -0
- package/dist/api/routes/dashboard/index.d.ts +27 -0
- package/dist/api/routes/dashboard/index.d.ts.map +1 -0
- package/dist/api/routes/dashboard/index.js +47 -0
- package/dist/api/routes/dashboard/index.js.map +1 -0
- package/dist/api/routes/dashboard/messaging.d.ts +4 -0
- package/dist/api/routes/dashboard/messaging.d.ts.map +1 -0
- package/dist/api/routes/dashboard/messaging.js +351 -0
- package/dist/api/routes/dashboard/messaging.js.map +1 -0
- package/dist/api/routes/dashboard/notifications.d.ts +4 -0
- package/dist/api/routes/dashboard/notifications.d.ts.map +1 -0
- package/dist/api/routes/dashboard/notifications.js +109 -0
- package/dist/api/routes/dashboard/notifications.js.map +1 -0
- package/dist/api/routes/dashboard/oauth-google.d.ts +4 -0
- package/dist/api/routes/dashboard/oauth-google.d.ts.map +1 -0
- package/dist/api/routes/dashboard/oauth-google.js +293 -0
- package/dist/api/routes/dashboard/oauth-google.js.map +1 -0
- package/dist/api/routes/dashboard/schedule-readonly.d.ts +4 -0
- package/dist/api/routes/dashboard/schedule-readonly.d.ts.map +1 -0
- package/dist/api/routes/dashboard/schedule-readonly.js +46 -0
- package/dist/api/routes/dashboard/schedule-readonly.js.map +1 -0
- package/dist/api/routes/dashboard/secrets.d.ts +24 -0
- package/dist/api/routes/dashboard/secrets.d.ts.map +1 -0
- package/dist/api/routes/dashboard/secrets.js +307 -0
- package/dist/api/routes/dashboard/secrets.js.map +1 -0
- package/dist/api/routes/dashboard/snapshots.d.ts +4 -0
- package/dist/api/routes/dashboard/snapshots.d.ts.map +1 -0
- package/dist/api/routes/dashboard/snapshots.js +33 -0
- package/dist/api/routes/dashboard/snapshots.js.map +1 -0
- package/dist/api/routes/dashboard.d.ts.map +1 -1
- package/dist/api/routes/dashboard.js +20 -12
- package/dist/api/routes/dashboard.js.map +1 -1
- package/dist/api/routes/delegated.d.ts +5 -4
- package/dist/api/routes/delegated.d.ts.map +1 -1
- package/dist/api/routes/delegated.js +6 -5
- package/dist/api/routes/delegated.js.map +1 -1
- package/dist/api/routes/docs.d.ts.map +1 -1
- package/dist/api/routes/docs.js +72 -9
- package/dist/api/routes/docs.js.map +1 -1
- package/dist/api/routes/entities.d.ts.map +1 -1
- package/dist/api/routes/entities.js +112 -43
- package/dist/api/routes/entities.js.map +1 -1
- package/dist/api/routes/fs.d.ts.map +1 -1
- package/dist/api/routes/fs.js +27 -12
- package/dist/api/routes/fs.js.map +1 -1
- package/dist/api/routes/git-templates.d.ts.map +1 -1
- package/dist/api/routes/git-templates.js +107 -27
- package/dist/api/routes/git-templates.js.map +1 -1
- package/dist/api/routes/git.d.ts.map +1 -1
- package/dist/api/routes/git.js +55 -11
- package/dist/api/routes/git.js.map +1 -1
- package/dist/api/routes/github.d.ts.map +1 -1
- package/dist/api/routes/github.js +110 -17
- package/dist/api/routes/github.js.map +1 -1
- package/dist/api/routes/integrations/crud-patch.d.ts +17 -0
- package/dist/api/routes/integrations/crud-patch.d.ts.map +1 -0
- package/dist/api/routes/integrations/crud-patch.js +600 -0
- package/dist/api/routes/integrations/crud-patch.js.map +1 -0
- package/dist/api/routes/integrations/crud.d.ts +16 -0
- package/dist/api/routes/integrations/crud.d.ts.map +1 -0
- package/dist/api/routes/integrations/crud.js +158 -0
- package/dist/api/routes/integrations/crud.js.map +1 -0
- package/dist/api/routes/integrations/exec.d.ts +23 -0
- package/dist/api/routes/integrations/exec.d.ts.map +1 -0
- package/dist/api/routes/integrations/exec.js +356 -0
- package/dist/api/routes/integrations/exec.js.map +1 -0
- package/dist/api/routes/integrations/index.d.ts +62 -0
- package/dist/api/routes/integrations/index.d.ts.map +1 -0
- package/dist/api/routes/integrations/index.js +70 -0
- package/dist/api/routes/integrations/index.js.map +1 -0
- package/dist/api/routes/integrations/integrations/crud.d.ts +16 -0
- package/dist/api/routes/integrations/integrations/crud.d.ts.map +1 -0
- package/dist/api/routes/integrations/integrations/crud.js +158 -0
- package/dist/api/routes/integrations/integrations/crud.js.map +1 -0
- package/dist/api/routes/integrations/integrations/index.d.ts +55 -0
- package/dist/api/routes/integrations/integrations/index.d.ts.map +1 -0
- package/dist/api/routes/integrations/integrations/index.js +65 -0
- package/dist/api/routes/integrations/integrations/index.js.map +1 -0
- package/dist/api/routes/integrations/integrations/invoke.d.ts +38 -0
- package/dist/api/routes/integrations/integrations/invoke.d.ts.map +1 -0
- package/dist/api/routes/integrations/integrations/invoke.js +320 -0
- package/dist/api/routes/integrations/integrations/invoke.js.map +1 -0
- package/dist/api/routes/integrations/integrations/probe.d.ts +21 -0
- package/dist/api/routes/integrations/integrations/probe.d.ts.map +1 -0
- package/dist/api/routes/integrations/integrations/probe.js +247 -0
- package/dist/api/routes/integrations/integrations/probe.js.map +1 -0
- package/dist/api/routes/integrations/invoke.d.ts +38 -0
- package/dist/api/routes/integrations/invoke.d.ts.map +1 -0
- package/dist/api/routes/integrations/invoke.js +320 -0
- package/dist/api/routes/integrations/invoke.js.map +1 -0
- package/dist/api/routes/integrations/probe.d.ts +21 -0
- package/dist/api/routes/integrations/probe.d.ts.map +1 -0
- package/dist/api/routes/integrations/probe.js +247 -0
- package/dist/api/routes/integrations/probe.js.map +1 -0
- package/dist/api/routes/integrations.d.ts.map +1 -1
- package/dist/api/routes/integrations.js +65 -13
- package/dist/api/routes/integrations.js.map +1 -1
- package/dist/api/routes/knowledge.d.ts.map +1 -1
- package/dist/api/routes/knowledge.js +13 -2
- package/dist/api/routes/knowledge.js.map +1 -1
- package/dist/api/routes/mail/_pa_wip_mail/app-password.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/app-password.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/app-password.js +192 -0
- package/dist/api/routes/mail/_pa_wip_mail/app-password.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/body-helpers.d.ts +55 -0
- package/dist/api/routes/mail/_pa_wip_mail/body-helpers.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/body-helpers.js +91 -0
- package/dist/api/routes/mail/_pa_wip_mail/body-helpers.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/dependencies.d.ts +36 -0
- package/dist/api/routes/mail/_pa_wip_mail/dependencies.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/dependencies.js +2 -0
- package/dist/api/routes/mail/_pa_wip_mail/dependencies.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/gating.d.ts +45 -0
- package/dist/api/routes/mail/_pa_wip_mail/gating.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/gating.js +98 -0
- package/dist/api/routes/mail/_pa_wip_mail/gating.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.js +289 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/accounts.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.js +192 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/app-password.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.d.ts +55 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.js +91 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/body-helpers.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.d.ts +36 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.js +2 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/dependencies.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.d.ts +5 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.js +139 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/drafts.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/gating.d.ts +45 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/gating.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/gating.js +98 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/gating.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/index.d.ts +18 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/index.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/index.js +40 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/index.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/messages.d.ts +15 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/messages.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/messages.js +239 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/messages.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.js +73 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/outlook-config.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.d.ts +64 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.js +286 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/provider-resolver.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/providers.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/providers.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/providers.js +73 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/providers.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.d.ts +5 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.js +35 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/tags-folders.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/validators.d.ts +23 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/validators.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/validators.js +131 -0
- package/dist/api/routes/mail/_pa_wip_mail/mail/validators.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.d.ts +64 -0
- package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.js +286 -0
- package/dist/api/routes/mail/_pa_wip_mail/provider-resolver.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/search-health.d.ts +4 -0
- package/dist/api/routes/mail/_pa_wip_mail/search-health.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/search-health.js +131 -0
- package/dist/api/routes/mail/_pa_wip_mail/search-health.js.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/validators.d.ts +23 -0
- package/dist/api/routes/mail/_pa_wip_mail/validators.d.ts.map +1 -0
- package/dist/api/routes/mail/_pa_wip_mail/validators.js +131 -0
- package/dist/api/routes/mail/_pa_wip_mail/validators.js.map +1 -0
- package/dist/api/routes/mail/accounts.d.ts +4 -0
- package/dist/api/routes/mail/accounts.d.ts.map +1 -0
- package/dist/api/routes/mail/accounts.js +289 -0
- package/dist/api/routes/mail/accounts.js.map +1 -0
- package/dist/api/routes/mail/app-password.d.ts +4 -0
- package/dist/api/routes/mail/app-password.d.ts.map +1 -0
- package/dist/api/routes/mail/app-password.js +192 -0
- package/dist/api/routes/mail/app-password.js.map +1 -0
- package/dist/api/routes/mail/body-helpers.d.ts +56 -0
- package/dist/api/routes/mail/body-helpers.d.ts.map +1 -0
- package/dist/api/routes/mail/body-helpers.js +91 -0
- package/dist/api/routes/mail/body-helpers.js.map +1 -0
- package/dist/api/routes/mail/dependencies.d.ts +36 -0
- package/dist/api/routes/mail/dependencies.d.ts.map +1 -0
- package/dist/api/routes/mail/dependencies.js +2 -0
- package/dist/api/routes/mail/dependencies.js.map +1 -0
- package/dist/api/routes/mail/drafts.d.ts +5 -0
- package/dist/api/routes/mail/drafts.d.ts.map +1 -0
- package/dist/api/routes/mail/drafts.js +139 -0
- package/dist/api/routes/mail/drafts.js.map +1 -0
- package/dist/api/routes/mail/gating.d.ts +45 -0
- package/dist/api/routes/mail/gating.d.ts.map +1 -0
- package/dist/api/routes/mail/gating.js +99 -0
- package/dist/api/routes/mail/gating.js.map +1 -0
- package/dist/api/routes/mail/index.d.ts +18 -0
- package/dist/api/routes/mail/index.d.ts.map +1 -0
- package/dist/api/routes/mail/index.js +40 -0
- package/dist/api/routes/mail/index.js.map +1 -0
- package/dist/api/routes/mail/messages.d.ts +15 -0
- package/dist/api/routes/mail/messages.d.ts.map +1 -0
- package/dist/api/routes/mail/messages.js +239 -0
- package/dist/api/routes/mail/messages.js.map +1 -0
- package/dist/api/routes/mail/outlook-config.d.ts +4 -0
- package/dist/api/routes/mail/outlook-config.d.ts.map +1 -0
- package/dist/api/routes/mail/outlook-config.js +73 -0
- package/dist/api/routes/mail/outlook-config.js.map +1 -0
- package/dist/api/routes/mail/provider-resolver.d.ts +64 -0
- package/dist/api/routes/mail/provider-resolver.d.ts.map +1 -0
- package/dist/api/routes/mail/provider-resolver.js +286 -0
- package/dist/api/routes/mail/provider-resolver.js.map +1 -0
- package/dist/api/routes/mail/providers.d.ts +4 -0
- package/dist/api/routes/mail/providers.d.ts.map +1 -0
- package/dist/api/routes/mail/providers.js +73 -0
- package/dist/api/routes/mail/providers.js.map +1 -0
- package/dist/api/routes/mail/search-health.d.ts +4 -0
- package/dist/api/routes/mail/search-health.d.ts.map +1 -0
- package/dist/api/routes/mail/search-health.js +131 -0
- package/dist/api/routes/mail/search-health.js.map +1 -0
- package/dist/api/routes/mail/tags-folders.d.ts +5 -0
- package/dist/api/routes/mail/tags-folders.d.ts.map +1 -0
- package/dist/api/routes/mail/tags-folders.js +35 -0
- package/dist/api/routes/mail/tags-folders.js.map +1 -0
- package/dist/api/routes/mail/validators.d.ts +23 -0
- package/dist/api/routes/mail/validators.d.ts.map +1 -0
- package/dist/api/routes/mail/validators.js +131 -0
- package/dist/api/routes/mail/validators.js.map +1 -0
- package/dist/api/routes/mail.d.ts.map +1 -1
- package/dist/api/routes/mail.js +259 -67
- package/dist/api/routes/mail.js.map +1 -1
- package/dist/api/routes/managed-tasks.d.ts.map +1 -1
- package/dist/api/routes/managed-tasks.js +142 -54
- package/dist/api/routes/managed-tasks.js.map +1 -1
- package/dist/api/routes/mcp.d.ts.map +1 -1
- package/dist/api/routes/mcp.js +115 -47
- package/dist/api/routes/mcp.js.map +1 -1
- package/dist/api/routes/metrics.d.ts +1 -1
- package/dist/api/routes/metrics.js +2 -2
- package/dist/api/routes/notion.d.ts.map +1 -1
- package/dist/api/routes/notion.js +230 -54
- package/dist/api/routes/notion.js.map +1 -1
- package/dist/api/routes/observations.d.ts.map +1 -1
- package/dist/api/routes/observations.js +40 -169
- package/dist/api/routes/observations.js.map +1 -1
- package/dist/api/routes/obsidian.d.ts.map +1 -1
- package/dist/api/routes/obsidian.js +193 -32
- package/dist/api/routes/obsidian.js.map +1 -1
- package/dist/api/routes/profile-questions.d.ts.map +1 -1
- package/dist/api/routes/profile-questions.js +19 -3
- package/dist/api/routes/profile-questions.js.map +1 -1
- package/dist/api/routes/receipts.d.ts.map +1 -1
- package/dist/api/routes/receipts.js +64 -24
- package/dist/api/routes/receipts.js.map +1 -1
- package/dist/api/routes/recurring-schedules.d.ts.map +1 -1
- package/dist/api/routes/recurring-schedules.js +243 -13
- package/dist/api/routes/recurring-schedules.js.map +1 -1
- package/dist/api/routes/repositories.d.ts.map +1 -1
- package/dist/api/routes/repositories.js +278 -104
- package/dist/api/routes/repositories.js.map +1 -1
- package/dist/api/routes/schedule-model-resolver.d.ts +153 -0
- package/dist/api/routes/schedule-model-resolver.d.ts.map +1 -0
- package/dist/api/routes/schedule-model-resolver.js +282 -0
- package/dist/api/routes/schedule-model-resolver.js.map +1 -0
- package/dist/api/routes/schedule-options.d.ts +25 -0
- package/dist/api/routes/schedule-options.d.ts.map +1 -0
- package/dist/api/routes/schedule-options.js +77 -0
- package/dist/api/routes/schedule-options.js.map +1 -0
- package/dist/api/routes/schedule-validation.d.ts +146 -0
- package/dist/api/routes/schedule-validation.d.ts.map +1 -0
- package/dist/api/routes/schedule-validation.js +153 -0
- package/dist/api/routes/schedule-validation.js.map +1 -0
- package/dist/api/routes/setup.d.ts.map +1 -1
- package/dist/api/routes/setup.js +100 -26
- package/dist/api/routes/setup.js.map +1 -1
- package/dist/api/routes/skills.d.ts.map +1 -1
- package/dist/api/routes/skills.js +81 -30
- package/dist/api/routes/skills.js.map +1 -1
- package/dist/api/routes/sot-bindings.d.ts.map +1 -1
- package/dist/api/routes/sot-bindings.js +46 -11
- package/dist/api/routes/sot-bindings.js.map +1 -1
- package/dist/api/routes/sse.d.ts.map +1 -1
- package/dist/api/routes/sse.js +6 -1
- package/dist/api/routes/sse.js.map +1 -1
- package/dist/api/routes/system.d.ts.map +1 -1
- package/dist/api/routes/system.js +15 -2
- package/dist/api/routes/system.js.map +1 -1
- package/dist/api/routes/travel-bookings.d.ts.map +1 -1
- package/dist/api/routes/travel-bookings.js +26 -9
- package/dist/api/routes/travel-bookings.js.map +1 -1
- package/dist/api/routes/travel-time.d.ts.map +1 -1
- package/dist/api/routes/travel-time.js +50 -10
- package/dist/api/routes/travel-time.js.map +1 -1
- package/dist/api/routes/wiki.d.ts.map +1 -1
- package/dist/api/routes/wiki.js +49 -8
- package/dist/api/routes/wiki.js.map +1 -1
- package/dist/api/server.d.ts +15 -3
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +32 -10
- package/dist/api/server.js.map +1 -1
- package/dist/bootstrap/adapters.d.ts.map +1 -1
- package/dist/bootstrap/adapters.js +7 -4
- package/dist/bootstrap/adapters.js.map +1 -1
- package/dist/bootstrap/api.d.ts +205 -0
- package/dist/bootstrap/api.d.ts.map +1 -0
- package/dist/bootstrap/api.js +443 -0
- package/dist/bootstrap/api.js.map +1 -0
- package/dist/bootstrap/db.d.ts +119 -0
- package/dist/bootstrap/db.d.ts.map +1 -0
- package/dist/bootstrap/db.js +294 -0
- package/dist/bootstrap/db.js.map +1 -0
- package/dist/bootstrap/event-pipeline.d.ts +308 -0
- package/dist/bootstrap/event-pipeline.d.ts.map +1 -0
- package/dist/bootstrap/event-pipeline.js +704 -0
- package/dist/bootstrap/event-pipeline.js.map +1 -0
- package/dist/bootstrap/observers.d.ts +148 -0
- package/dist/bootstrap/observers.d.ts.map +1 -0
- package/dist/bootstrap/observers.js +558 -0
- package/dist/bootstrap/observers.js.map +1 -0
- package/dist/bootstrap/schedule-helpers.d.ts +122 -0
- package/dist/bootstrap/schedule-helpers.d.ts.map +1 -1
- package/dist/bootstrap/schedule-helpers.js +202 -4
- package/dist/bootstrap/schedule-helpers.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -3
- package/dist/config.js.map +1 -1
- package/dist/core/abort-utils.d.ts +14 -0
- package/dist/core/abort-utils.d.ts.map +1 -0
- package/dist/core/abort-utils.js +36 -0
- package/dist/core/abort-utils.js.map +1 -0
- package/dist/core/agent-core.d.ts +22 -3
- package/dist/core/agent-core.d.ts.map +1 -1
- package/dist/core/agent-core.js +3 -1
- package/dist/core/agent-core.js.map +1 -1
- package/dist/core/backends/auth-health-monitor.js +2 -3
- package/dist/core/backends/auth-health-monitor.js.map +1 -1
- package/dist/core/backends/backend-router.d.ts +11 -1
- package/dist/core/backends/backend-router.d.ts.map +1 -1
- package/dist/core/backends/backend-router.js +97 -2
- package/dist/core/backends/backend-router.js.map +1 -1
- package/dist/core/backends/claude-code-core.d.ts +51 -0
- package/dist/core/backends/claude-code-core.d.ts.map +1 -1
- package/dist/core/backends/claude-code-core.js +134 -11
- package/dist/core/backends/claude-code-core.js.map +1 -1
- package/dist/core/backends/claude-tool-collection.js +1 -1
- package/dist/core/backends/codex-core.d.ts +13 -1
- package/dist/core/backends/codex-core.d.ts.map +1 -1
- package/dist/core/backends/codex-core.js +436 -22
- package/dist/core/backends/codex-core.js.map +1 -1
- package/dist/core/backends/gemini-cli-core.d.ts +5 -1
- package/dist/core/backends/gemini-cli-core.d.ts.map +1 -1
- package/dist/core/backends/gemini-cli-core.js +298 -15
- package/dist/core/backends/gemini-cli-core.js.map +1 -1
- package/dist/core/backends/install-methods.d.ts.map +1 -1
- package/dist/core/backends/install-methods.js +22 -0
- package/dist/core/backends/install-methods.js.map +1 -1
- package/dist/core/backends/model-registry.d.ts +9 -4
- package/dist/core/backends/model-registry.d.ts.map +1 -1
- package/dist/core/backends/model-registry.js +153 -23
- package/dist/core/backends/model-registry.js.map +1 -1
- package/dist/core/backends/native-skill-discovery-probe.d.ts +80 -0
- package/dist/core/backends/native-skill-discovery-probe.d.ts.map +1 -0
- package/dist/core/backends/native-skill-discovery-probe.js +175 -0
- package/dist/core/backends/native-skill-discovery-probe.js.map +1 -0
- package/dist/core/backends/opencode-basic-auth-fetch.d.ts +27 -0
- package/dist/core/backends/opencode-basic-auth-fetch.d.ts.map +1 -0
- package/dist/core/backends/opencode-basic-auth-fetch.js +40 -0
- package/dist/core/backends/opencode-basic-auth-fetch.js.map +1 -0
- package/dist/core/backends/opencode-config-builder.d.ts +86 -0
- package/dist/core/backends/opencode-config-builder.d.ts.map +1 -0
- package/dist/core/backends/opencode-config-builder.js +172 -0
- package/dist/core/backends/opencode-config-builder.js.map +1 -0
- package/dist/core/backends/opencode-core.d.ts +316 -0
- package/dist/core/backends/opencode-core.d.ts.map +1 -0
- package/dist/core/backends/opencode-core.js +1502 -0
- package/dist/core/backends/opencode-core.js.map +1 -0
- package/dist/core/backends/opencode-event-mapper.d.ts +133 -0
- package/dist/core/backends/opencode-event-mapper.d.ts.map +1 -0
- package/dist/core/backends/opencode-event-mapper.js +198 -0
- package/dist/core/backends/opencode-event-mapper.js.map +1 -0
- package/dist/core/backends/opencode-mcp.d.ts +82 -0
- package/dist/core/backends/opencode-mcp.d.ts.map +1 -0
- package/dist/core/backends/opencode-mcp.js +165 -0
- package/dist/core/backends/opencode-mcp.js.map +1 -0
- package/dist/core/backends/opencode-server-manager.d.ts +114 -0
- package/dist/core/backends/opencode-server-manager.d.ts.map +1 -0
- package/dist/core/backends/opencode-server-manager.js +222 -0
- package/dist/core/backends/opencode-server-manager.js.map +1 -0
- package/dist/core/backends/opencode-types.d.ts +46 -0
- package/dist/core/backends/opencode-types.d.ts.map +1 -0
- package/dist/core/backends/opencode-types.js +14 -0
- package/dist/core/backends/opencode-types.js.map +1 -0
- package/dist/core/backends/plan-presets.d.ts +18 -5
- package/dist/core/backends/plan-presets.d.ts.map +1 -1
- package/dist/core/backends/plan-presets.js +144 -23
- package/dist/core/backends/plan-presets.js.map +1 -1
- package/dist/core/backends/process-config-cascade.d.ts +35 -0
- package/dist/core/backends/process-config-cascade.d.ts.map +1 -1
- package/dist/core/backends/process-config-cascade.js +35 -1
- package/dist/core/backends/process-config-cascade.js.map +1 -1
- package/dist/core/backends/prompt-utils.d.ts.map +1 -1
- package/dist/core/backends/prompt-utils.js +0 -2
- package/dist/core/backends/prompt-utils.js.map +1 -1
- package/dist/core/backends/quota-reset-hints.d.ts +44 -0
- package/dist/core/backends/quota-reset-hints.d.ts.map +1 -0
- package/dist/core/backends/quota-reset-hints.js +117 -0
- package/dist/core/backends/quota-reset-hints.js.map +1 -0
- package/dist/core/bang-commands/commands-close.d.ts +24 -0
- package/dist/core/bang-commands/commands-close.d.ts.map +1 -0
- package/dist/core/bang-commands/commands-close.js +24 -0
- package/dist/core/bang-commands/commands-close.js.map +1 -0
- package/dist/core/bang-commands/commands-cost.d.ts.map +1 -1
- package/dist/core/bang-commands/commands-cost.js +13 -0
- package/dist/core/bang-commands/commands-cost.js.map +1 -1
- package/dist/core/bang-commands/commands-help.d.ts.map +1 -1
- package/dist/core/bang-commands/commands-help.js +44 -5
- package/dist/core/bang-commands/commands-help.js.map +1 -1
- package/dist/core/bang-commands/commands-report.d.ts.map +1 -1
- package/dist/core/bang-commands/commands-report.js +1 -0
- package/dist/core/bang-commands/commands-report.js.map +1 -1
- package/dist/core/bang-commands/commands-stop-start.d.ts.map +1 -1
- package/dist/core/bang-commands/commands-stop-start.js +2 -0
- package/dist/core/bang-commands/commands-stop-start.js.map +1 -1
- package/dist/core/bang-commands/commands-wiki.d.ts.map +1 -1
- package/dist/core/bang-commands/commands-wiki.js +12 -1
- package/dist/core/bang-commands/commands-wiki.js.map +1 -1
- package/dist/core/bang-commands/format-utils.d.ts +13 -1
- package/dist/core/bang-commands/format-utils.d.ts.map +1 -1
- package/dist/core/bang-commands/format-utils.js +21 -2
- package/dist/core/bang-commands/format-utils.js.map +1 -1
- package/dist/core/bang-commands/index.d.ts +1 -0
- package/dist/core/bang-commands/index.d.ts.map +1 -1
- package/dist/core/bang-commands/index.js +3 -0
- package/dist/core/bang-commands/index.js.map +1 -1
- package/dist/core/bang-commands/registry.d.ts +50 -0
- package/dist/core/bang-commands/registry.d.ts.map +1 -1
- package/dist/core/bang-commands/registry.js +164 -19
- package/dist/core/bang-commands/registry.js.map +1 -1
- package/dist/core/channel-timeline.d.ts +18 -1
- package/dist/core/channel-timeline.d.ts.map +1 -1
- package/dist/core/channel-timeline.js +44 -0
- package/dist/core/channel-timeline.js.map +1 -1
- package/dist/core/context/activity-view-runner.js +9 -1
- package/dist/core/context/activity-view-runner.js.map +1 -1
- package/dist/core/context/default-schedules-runner.js +44 -4
- package/dist/core/context/default-schedules-runner.js.map +1 -1
- package/dist/core/context/domain-index-runner.js +9 -1
- package/dist/core/context/domain-index-runner.js.map +1 -1
- package/dist/core/context/entity-source-rename.d.ts.map +1 -1
- package/dist/core/context/entity-source-rename.js +9 -1
- package/dist/core/context/entity-source-rename.js.map +1 -1
- package/dist/core/context/policy-index-runner.js +9 -1
- package/dist/core/context/policy-index-runner.js.map +1 -1
- package/dist/core/context/reconciler-runner.js +9 -1
- package/dist/core/context/reconciler-runner.js.map +1 -1
- package/dist/core/context-builder.d.ts +97 -2
- package/dist/core/context-builder.d.ts.map +1 -1
- package/dist/core/context-builder.js +303 -30
- package/dist/core/context-builder.js.map +1 -1
- package/dist/core/context-frontmatter.d.ts +6 -0
- package/dist/core/context-frontmatter.d.ts.map +1 -1
- package/dist/core/context-frontmatter.js +120 -8
- package/dist/core/context-frontmatter.js.map +1 -1
- package/dist/core/context-health.js +21 -9
- package/dist/core/context-health.js.map +1 -1
- package/dist/core/context-validation/_pa_wip_context_validation/index.d.ts +19 -0
- package/dist/core/context-validation/_pa_wip_context_validation/index.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/index.js +19 -0
- package/dist/core/context-validation/_pa_wip_context_validation/index.js.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.d.ts +94 -0
- package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.js +130 -0
- package/dist/core/context-validation/_pa_wip_context_validation/prepare-write.js.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.d.ts +60 -0
- package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.js +156 -0
- package/dist/core/context-validation/_pa_wip_context_validation/routine-rulebook.js.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/section.d.ts +41 -0
- package/dist/core/context-validation/_pa_wip_context_validation/section.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/section.js +82 -0
- package/dist/core/context-validation/_pa_wip_context_validation/section.js.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.d.ts +52 -0
- package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.js +110 -0
- package/dist/core/context-validation/_pa_wip_context_validation/snapshot-debounce.js.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/today.d.ts +85 -0
- package/dist/core/context-validation/_pa_wip_context_validation/today.d.ts.map +1 -0
- package/dist/core/context-validation/_pa_wip_context_validation/today.js +162 -0
- package/dist/core/context-validation/_pa_wip_context_validation/today.js.map +1 -0
- package/dist/core/context-validation/index.d.ts +19 -0
- package/dist/core/context-validation/index.d.ts.map +1 -0
- package/dist/core/context-validation/index.js +19 -0
- package/dist/core/context-validation/index.js.map +1 -0
- package/dist/core/context-validation/prepare-write.d.ts +95 -0
- package/dist/core/context-validation/prepare-write.d.ts.map +1 -0
- package/dist/core/context-validation/prepare-write.js +135 -0
- package/dist/core/context-validation/prepare-write.js.map +1 -0
- package/dist/core/context-validation/routine-rulebook.d.ts +60 -0
- package/dist/core/context-validation/routine-rulebook.d.ts.map +1 -0
- package/dist/core/context-validation/routine-rulebook.js +156 -0
- package/dist/core/context-validation/routine-rulebook.js.map +1 -0
- package/dist/core/context-validation/section.d.ts +41 -0
- package/dist/core/context-validation/section.d.ts.map +1 -0
- package/dist/core/context-validation/section.js +82 -0
- package/dist/core/context-validation/section.js.map +1 -0
- package/dist/core/context-validation/snapshot-debounce.d.ts +52 -0
- package/dist/core/context-validation/snapshot-debounce.d.ts.map +1 -0
- package/dist/core/context-validation/snapshot-debounce.js +110 -0
- package/dist/core/context-validation/snapshot-debounce.js.map +1 -0
- package/dist/core/context-validation/today.d.ts +85 -0
- package/dist/core/context-validation/today.d.ts.map +1 -0
- package/dist/core/context-validation/today.js +168 -0
- package/dist/core/context-validation/today.js.map +1 -0
- package/dist/core/daemon-api-cli.d.ts +6 -5
- package/dist/core/daemon-api-cli.d.ts.map +1 -1
- package/dist/core/daemon-api-cli.js +73 -32
- package/dist/core/daemon-api-cli.js.map +1 -1
- package/dist/core/dispatcher-error-handling.d.ts +13 -0
- package/dist/core/dispatcher-error-handling.d.ts.map +1 -1
- package/dist/core/dispatcher-error-handling.js +69 -0
- package/dist/core/dispatcher-error-handling.js.map +1 -1
- package/dist/core/dispatcher-hourly-check.d.ts +73 -1
- package/dist/core/dispatcher-hourly-check.d.ts.map +1 -1
- package/dist/core/dispatcher-hourly-check.js +249 -151
- package/dist/core/dispatcher-hourly-check.js.map +1 -1
- package/dist/core/dispatcher-message-handler.d.ts +11 -1
- package/dist/core/dispatcher-message-handler.d.ts.map +1 -1
- package/dist/core/dispatcher-message-handler.js +165 -47
- package/dist/core/dispatcher-message-handler.js.map +1 -1
- package/dist/core/dispatcher-morning-routine.d.ts +38 -30
- package/dist/core/dispatcher-morning-routine.d.ts.map +1 -1
- package/dist/core/dispatcher-morning-routine.js +162 -104
- package/dist/core/dispatcher-morning-routine.js.map +1 -1
- package/dist/core/dispatcher-prompt.d.ts +4 -1
- package/dist/core/dispatcher-prompt.d.ts.map +1 -1
- package/dist/core/dispatcher-prompt.js +18 -2
- package/dist/core/dispatcher-prompt.js.map +1 -1
- package/dist/core/dispatcher-repository-helpers.d.ts.map +1 -1
- package/dist/core/dispatcher-repository-helpers.js +5 -1
- package/dist/core/dispatcher-repository-helpers.js.map +1 -1
- package/dist/core/dispatcher-result-processor.d.ts.map +1 -1
- package/dist/core/dispatcher-result-processor.js +9 -4
- package/dist/core/dispatcher-result-processor.js.map +1 -1
- package/dist/core/dispatcher-scheduled-tasks.d.ts +1 -1
- package/dist/core/dispatcher-scheduled-tasks.d.ts.map +1 -1
- package/dist/core/dispatcher-scheduled-tasks.js +79 -16
- package/dist/core/dispatcher-scheduled-tasks.js.map +1 -1
- package/dist/core/dispatcher-types.d.ts +84 -12
- package/dist/core/dispatcher-types.d.ts.map +1 -1
- package/dist/core/dispatcher-types.js.map +1 -1
- package/dist/core/dispatcher.d.ts +50 -1
- package/dist/core/dispatcher.d.ts.map +1 -1
- package/dist/core/dispatcher.js +143 -8
- package/dist/core/dispatcher.js.map +1 -1
- package/dist/core/dm-freshness-metrics.d.ts +6 -5
- package/dist/core/dm-freshness-metrics.d.ts.map +1 -1
- package/dist/core/dm-freshness-metrics.js +7 -6
- package/dist/core/dm-freshness-metrics.js.map +1 -1
- package/dist/core/evening-review-verify.d.ts +164 -0
- package/dist/core/evening-review-verify.d.ts.map +1 -0
- package/dist/core/evening-review-verify.js +637 -0
- package/dist/core/evening-review-verify.js.map +1 -0
- package/dist/core/fetch-window-prompt-loader.d.ts +47 -0
- package/dist/core/fetch-window-prompt-loader.d.ts.map +1 -0
- package/dist/core/fetch-window-prompt-loader.js +72 -0
- package/dist/core/fetch-window-prompt-loader.js.map +1 -0
- package/dist/core/management-md.d.ts.map +1 -1
- package/dist/core/management-md.js +23 -9
- package/dist/core/management-md.js.map +1 -1
- package/dist/core/management-registry.d.ts +13 -21
- package/dist/core/management-registry.d.ts.map +1 -1
- package/dist/core/management-registry.js +27 -48
- package/dist/core/management-registry.js.map +1 -1
- package/dist/core/metrics.d.ts +88 -1
- package/dist/core/metrics.d.ts.map +1 -1
- package/dist/core/metrics.js +78 -2
- package/dist/core/metrics.js.map +1 -1
- package/dist/core/morning/agent-journal-appender.d.ts +197 -0
- package/dist/core/morning/agent-journal-appender.d.ts.map +1 -0
- package/dist/core/morning/agent-journal-appender.js +458 -0
- package/dist/core/morning/agent-journal-appender.js.map +1 -0
- package/dist/core/morning/handoff-parser.d.ts +45 -0
- package/dist/core/morning/handoff-parser.d.ts.map +1 -0
- package/dist/core/morning/handoff-parser.js +117 -0
- package/dist/core/morning/handoff-parser.js.map +1 -0
- package/dist/core/morning/journal-skeleton-builder.d.ts +157 -0
- package/dist/core/morning/journal-skeleton-builder.d.ts.map +1 -0
- package/dist/core/morning/journal-skeleton-builder.js +303 -0
- package/dist/core/morning/journal-skeleton-builder.js.map +1 -0
- package/dist/core/morning/orchestrator.d.ts +312 -0
- package/dist/core/morning/orchestrator.d.ts.map +1 -0
- package/dist/core/morning/orchestrator.js +827 -0
- package/dist/core/morning/orchestrator.js.map +1 -0
- package/dist/core/morning/parent-audit-emitter.d.ts +82 -0
- package/dist/core/morning/parent-audit-emitter.d.ts.map +1 -0
- package/dist/core/morning/parent-audit-emitter.js +120 -0
- package/dist/core/morning/parent-audit-emitter.js.map +1 -0
- package/dist/core/morning/roadmap-skeleton-builder.d.ts +159 -0
- package/dist/core/morning/roadmap-skeleton-builder.d.ts.map +1 -0
- package/dist/core/morning/roadmap-skeleton-builder.js +338 -0
- package/dist/core/morning/roadmap-skeleton-builder.js.map +1 -0
- package/dist/core/output-language-policy.js +1 -1
- package/dist/core/output-language-policy.js.map +1 -1
- package/dist/core/policy-files.d.ts +19 -2
- package/dist/core/policy-files.d.ts.map +1 -1
- package/dist/core/policy-files.js +65 -7
- package/dist/core/policy-files.js.map +1 -1
- package/dist/core/pre-pass-freshness.d.ts +28 -0
- package/dist/core/pre-pass-freshness.d.ts.map +1 -0
- package/dist/core/pre-pass-freshness.js +10 -0
- package/dist/core/pre-pass-freshness.js.map +1 -0
- package/dist/core/previous-week-digest.d.ts +130 -0
- package/dist/core/previous-week-digest.d.ts.map +1 -0
- package/dist/core/previous-week-digest.js +257 -0
- package/dist/core/previous-week-digest.js.map +1 -0
- package/dist/core/prompts.js +3 -3
- package/dist/core/prompts.js.map +1 -1
- package/dist/core/quiet-hours-sync.d.ts.map +1 -1
- package/dist/core/quiet-hours-sync.js +7 -0
- package/dist/core/quiet-hours-sync.js.map +1 -1
- package/dist/core/recurrence.d.ts +13 -0
- package/dist/core/recurrence.d.ts.map +1 -1
- package/dist/core/recurrence.js +108 -13
- package/dist/core/recurrence.js.map +1 -1
- package/dist/core/release-assets.d.ts +21 -1
- package/dist/core/release-assets.d.ts.map +1 -1
- package/dist/core/release-assets.js +58 -3
- package/dist/core/release-assets.js.map +1 -1
- package/dist/core/repository-management-docs.d.ts.map +1 -1
- package/dist/core/repository-management-docs.js +14 -4
- package/dist/core/repository-management-docs.js.map +1 -1
- package/dist/core/review-context.d.ts.map +1 -1
- package/dist/core/review-context.js +29 -1
- package/dist/core/review-context.js.map +1 -1
- package/dist/core/roadmap-maintenance.d.ts +213 -0
- package/dist/core/roadmap-maintenance.d.ts.map +1 -0
- package/dist/core/roadmap-maintenance.js +706 -0
- package/dist/core/roadmap-maintenance.js.map +1 -0
- package/dist/core/roadmap-validate.d.ts +5 -0
- package/dist/core/roadmap-validate.d.ts.map +1 -1
- package/dist/core/roadmap-validate.js +6 -69
- package/dist/core/roadmap-validate.js.map +1 -1
- package/dist/core/routine-acquisition-plan.d.ts +43 -7
- package/dist/core/routine-acquisition-plan.d.ts.map +1 -1
- package/dist/core/routine-acquisition-plan.js +99 -8
- package/dist/core/routine-acquisition-plan.js.map +1 -1
- package/dist/core/routine-fetch-window-retry.d.ts +41 -2
- package/dist/core/routine-fetch-window-retry.d.ts.map +1 -1
- package/dist/core/routine-fetch-window-retry.js +91 -8
- package/dist/core/routine-fetch-window-retry.js.map +1 -1
- package/dist/core/routine-fetch-window-runner.d.ts +55 -21
- package/dist/core/routine-fetch-window-runner.d.ts.map +1 -1
- package/dist/core/routine-fetch-window-runner.js +258 -35
- package/dist/core/routine-fetch-window-runner.js.map +1 -1
- package/dist/core/routine-windows.d.ts +17 -13
- package/dist/core/routine-windows.d.ts.map +1 -1
- package/dist/core/routine-windows.js +78 -36
- package/dist/core/routine-windows.js.map +1 -1
- package/dist/core/scheduler.d.ts +121 -37
- package/dist/core/scheduler.d.ts.map +1 -1
- package/dist/core/scheduler.js +359 -80
- package/dist/core/scheduler.js.map +1 -1
- package/dist/core/session-manager.d.ts +25 -6
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +32 -15
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/skeleton.d.ts.map +1 -1
- package/dist/core/skeleton.js +23 -23
- package/dist/core/skeleton.js.map +1 -1
- package/dist/core/skills-compiler.d.ts +275 -25
- package/dist/core/skills-compiler.d.ts.map +1 -1
- package/dist/core/skills-compiler.js +844 -205
- package/dist/core/skills-compiler.js.map +1 -1
- package/dist/core/skills-manifest.d.ts +104 -0
- package/dist/core/skills-manifest.d.ts.map +1 -1
- package/dist/core/skills-manifest.js +350 -39
- package/dist/core/skills-manifest.js.map +1 -1
- package/dist/core/wiki/git-precompile.d.ts +9 -0
- package/dist/core/wiki/git-precompile.d.ts.map +1 -1
- package/dist/core/wiki/git-precompile.js +7 -1
- package/dist/core/wiki/git-precompile.js.map +1 -1
- package/dist/core/workdir.d.ts +30 -1
- package/dist/core/workdir.d.ts.map +1 -1
- package/dist/core/workdir.js +140 -15
- package/dist/core/workdir.js.map +1 -1
- package/dist/db/entities-store.d.ts +5 -5
- package/dist/db/entities-store.js +5 -5
- package/dist/db/hourly-check-signals.d.ts.map +1 -1
- package/dist/db/hourly-check-signals.js +121 -35
- package/dist/db/hourly-check-signals.js.map +1 -1
- package/dist/db/observations.d.ts +1 -1
- package/dist/db/observations.js +1 -1
- package/dist/db/observations.js.map +1 -1
- package/dist/db/recurring-schedules.d.ts +32 -1
- package/dist/db/recurring-schedules.d.ts.map +1 -1
- package/dist/db/recurring-schedules.js +29 -10
- package/dist/db/recurring-schedules.js.map +1 -1
- package/dist/db/repositories-store.d.ts +2 -1
- package/dist/db/repositories-store.d.ts.map +1 -1
- package/dist/db/repositories-store.js +38 -3
- package/dist/db/repositories-store.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +157 -51
- package/dist/db/schema.js.map +1 -1
- package/dist/db/wiki-store.d.ts.map +1 -1
- package/dist/db/wiki-store.js +3 -0
- package/dist/db/wiki-store.js.map +1 -1
- package/dist/index.js +308 -1480
- package/dist/index.js.map +1 -1
- package/dist/messaging/magic-phrase.d.ts +16 -0
- package/dist/messaging/magic-phrase.d.ts.map +1 -1
- package/dist/messaging/magic-phrase.js +53 -0
- package/dist/messaging/magic-phrase.js.map +1 -1
- package/dist/messaging/owner-channels.d.ts +24 -0
- package/dist/messaging/owner-channels.d.ts.map +1 -1
- package/dist/messaging/owner-channels.js +38 -0
- package/dist/messaging/owner-channels.js.map +1 -1
- package/dist/observers/calendar-poller.d.ts +2 -0
- package/dist/observers/calendar-poller.d.ts.map +1 -1
- package/dist/observers/calendar-poller.js +76 -54
- package/dist/observers/calendar-poller.js.map +1 -1
- package/dist/observers/delegated-sync-worker.d.ts +62 -0
- package/dist/observers/delegated-sync-worker.d.ts.map +1 -1
- package/dist/observers/delegated-sync-worker.js +128 -1
- package/dist/observers/delegated-sync-worker.js.map +1 -1
- package/dist/observers/git-watcher.d.ts +22 -0
- package/dist/observers/git-watcher.d.ts.map +1 -1
- package/dist/observers/git-watcher.js +31 -7
- package/dist/observers/git-watcher.js.map +1 -1
- package/dist/observers/imminent-event-scheduler.d.ts +2 -0
- package/dist/observers/imminent-event-scheduler.d.ts.map +1 -1
- package/dist/observers/imminent-event-scheduler.js +29 -0
- package/dist/observers/imminent-event-scheduler.js.map +1 -1
- package/dist/observers/notion-poller.d.ts +2 -0
- package/dist/observers/notion-poller.d.ts.map +1 -1
- package/dist/observers/notion-poller.js +44 -6
- package/dist/observers/notion-poller.js.map +1 -1
- package/dist/observers/poll-guard.d.ts +63 -0
- package/dist/observers/poll-guard.d.ts.map +1 -0
- package/dist/observers/poll-guard.js +89 -0
- package/dist/observers/poll-guard.js.map +1 -0
- package/dist/safety/absolute-block-audit.d.ts +17 -0
- package/dist/safety/absolute-block-audit.d.ts.map +1 -1
- package/dist/safety/absolute-block-audit.js +28 -2
- package/dist/safety/absolute-block-audit.js.map +1 -1
- package/dist/safety/agent-write-tracker.d.ts +42 -1
- package/dist/safety/agent-write-tracker.d.ts.map +1 -1
- package/dist/safety/agent-write-tracker.js +81 -1
- package/dist/safety/agent-write-tracker.js.map +1 -1
- package/dist/safety/always-disallowed.d.ts +34 -0
- package/dist/safety/always-disallowed.d.ts.map +1 -1
- package/dist/safety/always-disallowed.js +114 -7
- package/dist/safety/always-disallowed.js.map +1 -1
- package/dist/safety/audit.d.ts +20 -0
- package/dist/safety/audit.d.ts.map +1 -1
- package/dist/safety/audit.js +126 -0
- package/dist/safety/audit.js.map +1 -1
- package/dist/safety/risk-classifier.d.ts +17 -1
- package/dist/safety/risk-classifier.d.ts.map +1 -1
- package/dist/safety/risk-classifier.js +75 -7
- package/dist/safety/risk-classifier.js.map +1 -1
- package/dist/safety/subprocess-block-scanner.d.ts +89 -0
- package/dist/safety/subprocess-block-scanner.d.ts.map +1 -0
- package/dist/safety/subprocess-block-scanner.js +177 -0
- package/dist/safety/subprocess-block-scanner.js.map +1 -0
- package/dist/scheduler/hourly-check-gate.d.ts +23 -9
- package/dist/scheduler/hourly-check-gate.d.ts.map +1 -1
- package/dist/scheduler/hourly-check-gate.js +11 -6
- package/dist/scheduler/hourly-check-gate.js.map +1 -1
- package/dist/secrets/backend-api-key-env.d.ts.map +1 -1
- package/dist/secrets/backend-api-key-env.js +1 -0
- package/dist/secrets/backend-api-key-env.js.map +1 -1
- package/dist/services/delegated-backend-invoker.d.ts.map +1 -1
- package/dist/services/delegated-backend-invoker.js +8 -1
- package/dist/services/delegated-backend-invoker.js.map +1 -1
- package/dist/services/delegated-invoker-audit.d.ts.map +1 -1
- package/dist/services/delegated-invoker-audit.js +5 -1
- package/dist/services/delegated-invoker-audit.js.map +1 -1
- package/dist/services/delegated-proxy-config.d.ts +3 -2
- package/dist/services/delegated-proxy-config.d.ts.map +1 -1
- package/dist/services/delegated-proxy-config.js.map +1 -1
- package/dist/services/integrations/extract-write-item-id.d.ts +5 -2
- package/dist/services/integrations/extract-write-item-id.d.ts.map +1 -1
- package/dist/services/integrations/extract-write-item-id.js.map +1 -1
- package/dist/services/mcp/generators/index.d.ts +1 -0
- package/dist/services/mcp/generators/index.d.ts.map +1 -1
- package/dist/services/mcp/generators/index.js +3 -0
- package/dist/services/mcp/generators/index.js.map +1 -1
- package/dist/services/mcp/sdk-observations-server.d.ts +60 -0
- package/dist/services/mcp/sdk-observations-server.d.ts.map +1 -0
- package/dist/services/mcp/sdk-observations-server.js +161 -0
- package/dist/services/mcp/sdk-observations-server.js.map +1 -0
- package/dist/services/mcp/session-materializer.d.ts.map +1 -1
- package/dist/services/mcp/session-materializer.js +13 -9
- package/dist/services/mcp/session-materializer.js.map +1 -1
- package/dist/services/mcp/types.d.ts +1 -0
- package/dist/services/mcp/types.d.ts.map +1 -1
- package/dist/services/notion.d.ts +19 -1
- package/dist/services/notion.d.ts.map +1 -1
- package/dist/services/notion.js +41 -2
- package/dist/services/notion.js.map +1 -1
- package/dist/services/observations-batch.d.ts +100 -0
- package/dist/services/observations-batch.d.ts.map +1 -0
- package/dist/services/observations-batch.js +258 -0
- package/dist/services/observations-batch.js.map +1 -0
- package/dist/services/voice/transcriber.d.ts +23 -0
- package/dist/services/voice/transcriber.d.ts.map +1 -1
- package/dist/services/voice/transcriber.js +55 -0
- package/dist/services/voice/transcriber.js.map +1 -1
- package/dist/settings/runtime-settings.d.ts +9 -6
- package/dist/settings/runtime-settings.d.ts.map +1 -1
- package/dist/settings/runtime-settings.js +50 -17
- package/dist/settings/runtime-settings.js.map +1 -1
- package/package.json +3 -2
- package/dist/api/delegated-proxy-helper.d.ts +0 -33
- package/dist/api/delegated-proxy-helper.d.ts.map +0 -1
- package/dist/api/delegated-proxy-helper.js +0 -54
- package/dist/api/delegated-proxy-helper.js.map +0 -1
- package/dist/core/roadmap-merge.d.ts +0 -7
- package/dist/core/roadmap-merge.d.ts.map +0 -1
- package/dist/core/roadmap-merge.js +0 -187
- package/dist/core/roadmap-merge.js.map +0 -1
- package/dist/db/test-schemas.d.ts +0 -23
- package/dist/db/test-schemas.d.ts.map +0 -1
- package/dist/db/test-schemas.js +0 -111
- package/dist/db/test-schemas.js.map +0 -1
|
@@ -0,0 +1,704 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event-processing pipeline bootstrap — §10 of the legacy `startup()` IIFE.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `index.ts` per
|
|
5
|
+
* `docs/design/appendices/index-bootstrap-stage-split.md` Phase B-4.
|
|
6
|
+
* Companion to `bootstrap/db.ts`, `bootstrap/adapters.ts`,
|
|
7
|
+
* `bootstrap/services.ts`, `bootstrap/observers.ts`, and `bootstrap/api.ts`;
|
|
8
|
+
* same Pattern-C shape (file-split-plan.md §10).
|
|
9
|
+
*
|
|
10
|
+
* Responsibilities (in run order — preserves the §10 ordering invariants
|
|
11
|
+
* captured by the design doc's §11):
|
|
12
|
+
* 1. Construct the four agent backends (Claude / Codex / Gemini / Opencode)
|
|
13
|
+
* and wire the per-session MCP context onto each.
|
|
14
|
+
* 2. Run the boot janitors that close orphaned proxy / pool / delegated-task
|
|
15
|
+
* tempdirs and rows so the dispatcher starts from a clean state.
|
|
16
|
+
* 3. Construct `DelegatedBackendInvoker`, `NotificationManager`, and
|
|
17
|
+
* `AuthTelemetry`. The shared `makeAuthNotifier` factory binds the
|
|
18
|
+
* monitor + recovery surfaces to the same notification pipeline.
|
|
19
|
+
* 4. Build the `BackendRouter` with its `prepareSessionDir` fallback
|
|
20
|
+
* re-materialization callback (CLAUDE.md invariant: a Claude→Codex
|
|
21
|
+
* fallback would otherwise leave the dir with only CLAUDE.md and no
|
|
22
|
+
* AGENTS.md). Validates the built-in skill source tree + delegated
|
|
23
|
+
* mode startup contracts before any execute.
|
|
24
|
+
* 5. Construct `ContextBuilder`, `SessionManager`, `MessageRecorder`,
|
|
25
|
+
* `EventBroadcaster`, `AuditLogger`. Build `rematerializeActiveDmWorkdirs`
|
|
26
|
+
* and install it as the real `onMailScopeChanged` handler via the
|
|
27
|
+
* `setMailScopeChangedHandler` dep (forward-reference resolved).
|
|
28
|
+
* 6. Construct `MigrationLock`, `ContextWriteGate`, `SignalDetector`,
|
|
29
|
+
* `ScopedReadSensitiveTokenManager`, then the `EventDispatcher`. Apply
|
|
30
|
+
* every dispatcher setter (signal detector, docs citation lookup,
|
|
31
|
+
* dashboard stream fan-out, attachment store, event broadcaster, voice
|
|
32
|
+
* transcriber, auth recovery/monitor, delegated-sync refresh, bang
|
|
33
|
+
* command registry, skill curation hooks).
|
|
34
|
+
* 7. Construct `AuthHealthMonitor` + `AuthRecovery` (after dispatcher so
|
|
35
|
+
* the `isMorningRoutineActive` closure resolves immediately). Reconcile
|
|
36
|
+
* in-flight recoveries, fire the initial keepalive sweep, and arm the
|
|
37
|
+
* daily sweep timer.
|
|
38
|
+
* 8. Wire the roadmap-refresh trampoline through `setRoadmapRefreshSink`
|
|
39
|
+
* so the observer pollers built in B-2 can emit refresh signals now
|
|
40
|
+
* that the dispatcher exists.
|
|
41
|
+
* 9. Build the on-demand `buildDelegatedSyncWorker` + register it when at
|
|
42
|
+
* least one integration is in `delegated` mode. Register the
|
|
43
|
+
* `DelegatedProbeObserver` so the §4.5 connector-health cache stays
|
|
44
|
+
* fresh.
|
|
45
|
+
* 10. Return the cross-stage closures (`handleSecretChange`,
|
|
46
|
+
* `handleGoogleServicesReady`, `handlePromptContextChanged`,
|
|
47
|
+
* `rematerializeActiveDmWorkdirs`) the B-3 API factory and the
|
|
48
|
+
* `index.ts` post-startup-complete flush consume.
|
|
49
|
+
*
|
|
50
|
+
* Ordering invariants this module preserves (design §11):
|
|
51
|
+
* - Wiki token resolver (B-1) and `mergeRuntimeSettingsFromDb` (B-1) run
|
|
52
|
+
* before this factory is invoked. The dispatcher reads the merged
|
|
53
|
+
* config directly.
|
|
54
|
+
* - Orphan dashboard_chat session close (B-1) runs before SessionManager
|
|
55
|
+
* is constructed here.
|
|
56
|
+
* - Fallback re-materialization is wired into BackendRouter before any
|
|
57
|
+
* backend fallback can occur — the closure lives inside this factory,
|
|
58
|
+
* same lexical proximity as the pre-extraction code.
|
|
59
|
+
* - The roadmap-refresh sink (`setRoadmapRefreshSink` dep) is installed
|
|
60
|
+
* immediately after the dispatcher is constructed but BEFORE
|
|
61
|
+
* `observerManager.startAll()` runs (which happens later in `index.ts`).
|
|
62
|
+
* - `handleSecretChange` and `handleGoogleServicesReady` are returned
|
|
63
|
+
* rather than registered here — the B-3 api factory wires the former
|
|
64
|
+
* into `ApiDependencies.onSecretChanged` and `index.ts` composes the
|
|
65
|
+
* latter with the `startupComplete`/`pendingGoogleServicesReady`
|
|
66
|
+
* deferral wrapper before threading the wrapper into B-3 via
|
|
67
|
+
* `onGoogleServicesReady`.
|
|
68
|
+
*
|
|
69
|
+
* Test surface (per design doc §10):
|
|
70
|
+
* - `createSecretChangeHandler` — exported for the scope-routing matrix
|
|
71
|
+
* test (slack, telegram, discord, notion, github, google, apple_calendar,
|
|
72
|
+
* apiToken, unknown). The Notion hot-register branch's three gates
|
|
73
|
+
* (services.notion, observerManager.has, notionDatabaseIds.length,
|
|
74
|
+
* shouldStartObserversFor) are pinned here. The GitHub webhook-mode
|
|
75
|
+
* upgrade branch's two gates (getGitWatcher non-null, secretState.
|
|
76
|
+
* githubWebhookConfigured) are pinned here.
|
|
77
|
+
* - `createGoogleServicesReadyHandler` — exported for the calendar
|
|
78
|
+
* hot-register / morning-routine gate / roadmap-refresh test matrix.
|
|
79
|
+
*/
|
|
80
|
+
import { join } from "node:path";
|
|
81
|
+
import { randomBytes } from "node:crypto";
|
|
82
|
+
import { getContextDir, isRoadmapStale } from "../config.js";
|
|
83
|
+
import { isUserPaused } from "../db/runtime-state.js";
|
|
84
|
+
import { readIntegrations } from "../db/integrations-store.js";
|
|
85
|
+
import { selectGithubRepoSlugs } from "../db/repositories-store.js";
|
|
86
|
+
import { EventPriority } from "@aitne/shared";
|
|
87
|
+
import { createLogger } from "../logging.js";
|
|
88
|
+
import { markContextChanged } from "../core/dashboard-session-controls.js";
|
|
89
|
+
import { EventDispatcher } from "../core/dispatcher.js";
|
|
90
|
+
import { SignalDetector } from "../core/signal-detector.js";
|
|
91
|
+
import { ContextBuilder } from "../core/context-builder.js";
|
|
92
|
+
import { getTaskFlow, initTaskFlows } from "../core/prompts.js";
|
|
93
|
+
import { SessionManager } from "../core/session-manager.js";
|
|
94
|
+
import { MessageRecorder } from "../core/message-recorder.js";
|
|
95
|
+
import { ScopedReadSensitiveTokenManager } from "../core/read-sensitive-token-manager.js";
|
|
96
|
+
import { createDefaultBangCommandRegistry } from "../core/bang-commands/index.js";
|
|
97
|
+
import { ContextWriteGate, MigrationLock, } from "../core/today-write-lock.js";
|
|
98
|
+
import { applyPromptContextStaleness, } from "../core/context-staleness.js";
|
|
99
|
+
// Backends
|
|
100
|
+
import { ClaudeCodeCore } from "../core/backends/claude-code-core.js";
|
|
101
|
+
import { CodexCore } from "../core/backends/codex-core.js";
|
|
102
|
+
import { GeminiCliCore } from "../core/backends/gemini-cli-core.js";
|
|
103
|
+
import { OpencodeCore } from "../core/backends/opencode-core.js";
|
|
104
|
+
import { createOpencodeServerManager, } from "../core/backends/opencode-server-manager.js";
|
|
105
|
+
import { BackendRouter } from "../core/backends/backend-router.js";
|
|
106
|
+
import { AuthTelemetry } from "../core/backends/auth-telemetry.js";
|
|
107
|
+
import { AuthHealthMonitor, AUTH_PROBE_NOTIFICATION_CATEGORY, } from "../core/backends/auth-health-monitor.js";
|
|
108
|
+
import { AuthRecovery } from "../core/backends/auth-recovery.js";
|
|
109
|
+
// Workdir / skills
|
|
110
|
+
import { ensureBackendMaterialized, syncAllUserSkills, buildConfiguredServices, refreshDmSessionWorkdirs, validateDelegatedStartup, } from "../core/workdir.js";
|
|
111
|
+
import { validateBuiltinSkillSourceTree } from "../core/skills-compiler.js";
|
|
112
|
+
// Audit / safety / messaging
|
|
113
|
+
import { AuditLogger } from "../safety/audit.js";
|
|
114
|
+
import { NotificationManager } from "../adapters/notification-manager.js";
|
|
115
|
+
import { DocsQAAdapter } from "../adapters/docs-qa-adapter.js";
|
|
116
|
+
import { CompositeDashboardStream } from "../adapters/composite-dashboard-stream.js";
|
|
117
|
+
import { EventBroadcaster } from "../api/routes/sse.js";
|
|
118
|
+
import { VoiceTranscriber } from "../services/voice/transcriber.js";
|
|
119
|
+
import { DelegatedBackendInvoker, runDelegatedTaskOrphanJanitor, runProxyTempdirJanitor, } from "../services/delegated-backend-invoker.js";
|
|
120
|
+
import { runSessionPoolTempdirJanitor } from "../services/delegated-task-session-pool.js";
|
|
121
|
+
import { DelegatedSyncWorker, hasActiveDelegatedSyncIntegration, } from "../observers/delegated-sync-worker.js";
|
|
122
|
+
import { shouldStartObserversFor } from "../core/integration-lifecycle.js";
|
|
123
|
+
import { makeDbLookup as makeDocsCitationLookup } from "../core/docs/citation-validator.js";
|
|
124
|
+
import { hasFreshAgentDayTodayMd, readSkillCurationCadence } from "./schedule-helpers.js";
|
|
125
|
+
const logger = createLogger("daemon-bootstrap-event-pipeline");
|
|
126
|
+
/**
|
|
127
|
+
* Construct the event-processing pipeline (§10). See the file-level
|
|
128
|
+
* docstring for the run order and the ordering invariants this factory
|
|
129
|
+
* preserves.
|
|
130
|
+
*/
|
|
131
|
+
export async function createEventPipeline(deps) {
|
|
132
|
+
const { db, config, eventBus, secretBroker, blobStore, writeTracker, services, messageHub, dashboardAdapter, attachmentStore, morningRoutineLock, roadmapWriteLock, secretState, observerManager, buildCalendarPoller, buildNotionPoller, getGitWatcher, reloadDiscordAdapter, reloadSlackAdapter, reloadTelegramAdapter, reloadGoogleServices, reloadAppleCalendarService, reloadNotionService, reloadGitHubService, scheduler, isStartupComplete, setMailScopeChangedHandler, setRoadmapRefreshSink, } = deps;
|
|
133
|
+
// ── Agent cores + per-session MCP context ──────────────────────────────
|
|
134
|
+
const opencodeServerManager = deps.opencodeServerManager ?? createOpencodeServerManager();
|
|
135
|
+
const agentCore = new ClaudeCodeCore(config, writeTracker);
|
|
136
|
+
const codexCore = new CodexCore(config);
|
|
137
|
+
const geminiCore = new GeminiCliCore(config, writeTracker, undefined, db);
|
|
138
|
+
const opencodeCore = new OpencodeCore(config, writeTracker, opencodeServerManager);
|
|
139
|
+
// B-003 Phase 3 — wire the MCP session context so per-session workdirs
|
|
140
|
+
// pick up the current DB + keychain state at spawn time. Each core stays
|
|
141
|
+
// backward-compatible: without this call it simply runs without MCP.
|
|
142
|
+
const mcpContext = { db, blobStore };
|
|
143
|
+
agentCore.setMcpContext(mcpContext);
|
|
144
|
+
codexCore.setMcpContext(mcpContext);
|
|
145
|
+
geminiCore.setMcpContext(mcpContext);
|
|
146
|
+
opencodeCore.setMcpContext(mcpContext);
|
|
147
|
+
// ── Boot janitors ──────────────────────────────────────────────────────
|
|
148
|
+
// DELEGATED-PROXY-API-DESIGN.md Phase A — sweep stale
|
|
149
|
+
// `agent-sessions/proxy-*` tempdirs left by SIGKILL'd proxy invocations.
|
|
150
|
+
const janitorRemoved = runProxyTempdirJanitor(config.dataDir);
|
|
151
|
+
if (janitorRemoved > 0) {
|
|
152
|
+
logger.info({ removed: janitorRemoved }, "Boot janitor cleared stale delegated-proxy tempdirs");
|
|
153
|
+
}
|
|
154
|
+
const poolJanitorRemoved = runSessionPoolTempdirJanitor(join(config.dataDir, "agent-sessions"));
|
|
155
|
+
if (poolJanitorRemoved > 0) {
|
|
156
|
+
logger.info({ removed: poolJanitorRemoved }, "Boot janitor cleared stale delegated-task pool tempdirs");
|
|
157
|
+
}
|
|
158
|
+
// DELEGATED-TASK-MODE-DESIGN.md §11.1 — close `delegated_task.exec`
|
|
159
|
+
// rows that were `in_progress` when the daemon last crashed.
|
|
160
|
+
const taskOrphansClosed = runDelegatedTaskOrphanJanitor(db);
|
|
161
|
+
if (taskOrphansClosed > 0) {
|
|
162
|
+
logger.info({ closed: taskOrphansClosed }, "Boot janitor closed orphaned delegated_task in-progress rows");
|
|
163
|
+
}
|
|
164
|
+
const delegatedBackendInvoker = new DelegatedBackendInvoker({
|
|
165
|
+
db,
|
|
166
|
+
config,
|
|
167
|
+
cores: {
|
|
168
|
+
claude: agentCore,
|
|
169
|
+
codex: codexCore,
|
|
170
|
+
gemini: geminiCore,
|
|
171
|
+
opencode: opencodeCore,
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
// ── Notification + auth telemetry + shared notifier factory ────────────
|
|
175
|
+
// P2-16: sweep stale `batched` rows from a prior crash before the new
|
|
176
|
+
// dispatcher starts producing notifications. A queued (status='batched')
|
|
177
|
+
// row whose flush timer didn't fire (process killed) would otherwise
|
|
178
|
+
// linger forever and confuse the dashboard's notification feed.
|
|
179
|
+
NotificationManager.closeStaleBatchedRows(db);
|
|
180
|
+
const notificationManager = new NotificationManager(messageHub, db, config);
|
|
181
|
+
const authTelemetry = new AuthTelemetry(db);
|
|
182
|
+
const makeAuthNotifier = (source) => ({
|
|
183
|
+
send: async (message, options) => {
|
|
184
|
+
const kind = options?.kind ?? "keepalive";
|
|
185
|
+
const typeMap = {
|
|
186
|
+
probe_failure: "auth.probe_failure",
|
|
187
|
+
recovery: "auth.recovery",
|
|
188
|
+
keepalive: "auth.keepalive_reminder",
|
|
189
|
+
};
|
|
190
|
+
const notificationType = typeMap[kind] ?? "auth.keepalive_reminder";
|
|
191
|
+
// probe_failure and recovery bypass quiet-hours; keepalive does not.
|
|
192
|
+
const category = kind === "keepalive" ? "auth-health" : AUTH_PROBE_NOTIFICATION_CATEGORY;
|
|
193
|
+
await notificationManager.send(message, {
|
|
194
|
+
type: notificationType,
|
|
195
|
+
source,
|
|
196
|
+
priority: EventPriority.NORMAL,
|
|
197
|
+
timestamp: new Date(),
|
|
198
|
+
data: {},
|
|
199
|
+
correlationId: randomBytes(8).toString("hex"),
|
|
200
|
+
}, {
|
|
201
|
+
priority: "normal",
|
|
202
|
+
category,
|
|
203
|
+
destinationMode: "configured_only",
|
|
204
|
+
});
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
// ── Read-token manager + backend router with fallback re-materialize ──
|
|
208
|
+
const readTokenManager = new ScopedReadSensitiveTokenManager();
|
|
209
|
+
const agentRouter = new BackendRouter(db, config, [agentCore, codexCore, geminiCore, opencodeCore], notificationManager, authTelemetry,
|
|
210
|
+
// Materialize instruction files for a fallback backend in an existing
|
|
211
|
+
// session workdir. Without this, a Claude→Codex heavy-tier fallback
|
|
212
|
+
// would leave the dir with only CLAUDE.md and no AGENTS.md.
|
|
213
|
+
(sessionDir, backendId, eventType, processKey, wikiWorkspaceName, messageText) => {
|
|
214
|
+
const cfgServices = buildConfiguredServices(config, {
|
|
215
|
+
...services,
|
|
216
|
+
github: selectGithubRepoSlugs(db).length > 0,
|
|
217
|
+
});
|
|
218
|
+
const mailAccounts = services.mail?.listActiveAccounts() ?? [];
|
|
219
|
+
ensureBackendMaterialized(config.workspaceDir, sessionDir, backendId, eventType, processKey, cfgServices, mailAccounts, readIntegrations(db), config.character, wikiWorkspaceName, getContextDir(config, db), db, messageText ?? null);
|
|
220
|
+
syncAllUserSkills(sessionDir, join(config.dataDir, "skills"));
|
|
221
|
+
});
|
|
222
|
+
// docs/design/appendices/skills-unification.md Phase 1 §R5 / item 6 — refuse to boot on a
|
|
223
|
+
// malformed source tree. Throws on slug-pattern violations and
|
|
224
|
+
// `description.length > 280` for every built-in `SKILL.md`.
|
|
225
|
+
validateBuiltinSkillSourceTree(join(config.workspaceDir, "agent-assets", "skills"));
|
|
226
|
+
// Startup validation — warn if any delegated-mode variant files are
|
|
227
|
+
// missing. Never throws.
|
|
228
|
+
{
|
|
229
|
+
const startupIntegrations = readIntegrations(db);
|
|
230
|
+
const missing = validateDelegatedStartup(config.workspaceDir, startupIntegrations);
|
|
231
|
+
if (missing.skills.length > 0 || missing.taskFlows.length > 0) {
|
|
232
|
+
logger.warn({ missingSkills: missing.skills, missingTaskFlows: missing.taskFlows }, "Delegated-mode variant files missing — agent will fall back to SKILL.md / direct task-flow for affected entries");
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// ── Context builder + session/message recording + audit broadcaster ───
|
|
236
|
+
const contextBuilder = new ContextBuilder(config, db, services);
|
|
237
|
+
const sessionManager = new SessionManager(db, config);
|
|
238
|
+
const messageRecorder = new MessageRecorder(db);
|
|
239
|
+
const eventBroadcaster = new EventBroadcaster();
|
|
240
|
+
const auditLogger = new AuditLogger(db, {
|
|
241
|
+
// `/api/events/stream` is defined in terms of persisted agent_actions
|
|
242
|
+
// rows, not raw EventBus payloads, so the broadcaster subscribes at
|
|
243
|
+
// the audit layer.
|
|
244
|
+
onRowInserted: (row) => eventBroadcaster.broadcastEvent(row),
|
|
245
|
+
});
|
|
246
|
+
// ── DM workdir re-materialization (shared by mail scope + mode flips) ─
|
|
247
|
+
const rematerializeActiveDmWorkdirs = (reason) => {
|
|
248
|
+
const sessions = sessionManager.listActiveDmSessions();
|
|
249
|
+
if (sessions.length === 0) {
|
|
250
|
+
logger.debug({ reason }, "DM workdir refresh requested — no active DM sessions");
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
const cfgServices = buildConfiguredServices(config, {
|
|
254
|
+
...services,
|
|
255
|
+
github: selectGithubRepoSlugs(db).length > 0,
|
|
256
|
+
});
|
|
257
|
+
const mailAccounts = services.mail?.listActiveAccounts() ?? [];
|
|
258
|
+
// Read integration state fresh inside the closure so a Phase F mode
|
|
259
|
+
// flip's pre-`writeIntegrations` row is not what gets baked.
|
|
260
|
+
const integrations = readIntegrations(db);
|
|
261
|
+
const summary = refreshDmSessionWorkdirs({
|
|
262
|
+
projectRoot: config.workspaceDir,
|
|
263
|
+
dataDir: config.dataDir,
|
|
264
|
+
sessions,
|
|
265
|
+
configuredServices: cfgServices,
|
|
266
|
+
mailAccounts,
|
|
267
|
+
integrations,
|
|
268
|
+
character: config.character,
|
|
269
|
+
});
|
|
270
|
+
return { summary, mailAccounts };
|
|
271
|
+
};
|
|
272
|
+
// Real implementation of the mail-scope-changed hook. Forward-reference
|
|
273
|
+
// was held open by the `setMailScopeChangedHandler` setter in `index.ts`.
|
|
274
|
+
setMailScopeChangedHandler((reason) => {
|
|
275
|
+
const result = rematerializeActiveDmWorkdirs(reason);
|
|
276
|
+
if (!result)
|
|
277
|
+
return;
|
|
278
|
+
logger.info({ reason, ...result.summary }, "Mail scope changed — DM session workdirs re-materialized");
|
|
279
|
+
eventBroadcaster.broadcastEvent({
|
|
280
|
+
kind: "mail_scope_changed",
|
|
281
|
+
reason,
|
|
282
|
+
activeAccounts: result.mailAccounts.length,
|
|
283
|
+
...result.summary,
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
// ── Migration / context-write gates + task flow init ──────────────────
|
|
287
|
+
// Long timeout because cross-fs copies of large vaults may legitimately
|
|
288
|
+
// run multiple minutes.
|
|
289
|
+
const migrationLock = new MigrationLock(60 * 60 * 1000);
|
|
290
|
+
const contextWriteGate = new ContextWriteGate();
|
|
291
|
+
initTaskFlows(config.workspaceDir, config.dataDir);
|
|
292
|
+
// ── Signal detector + dispatcher ──────────────────────────────────────
|
|
293
|
+
const signalDetector = new SignalDetector(config);
|
|
294
|
+
const dispatcher = new EventDispatcher(eventBus, agentRouter, contextBuilder, getTaskFlow, notificationManager, sessionManager, messageRecorder, auditLogger, db, config, morningRoutineLock, services, roadmapWriteLock, writeTracker);
|
|
295
|
+
notificationManager.setSignalDetector(signalDetector);
|
|
296
|
+
// Wire the scoped read-token manager into every backend so daemon-API
|
|
297
|
+
// calls from `<sessionDir>` workdirs carry a per-session token, not the
|
|
298
|
+
// legacy shared one. OpenCode is included for parity even though the
|
|
299
|
+
// SDK currently runs in-process and offers no per-tool env injection
|
|
300
|
+
// slot — see opencode-core.ts (issuedReadToken) for the gap; this call
|
|
301
|
+
// keeps the issue/revoke bookkeeping consistent so a future env-
|
|
302
|
+
// injection path lands on a wired manager rather than a silent undefined.
|
|
303
|
+
agentCore.setReadTokenManager?.(readTokenManager);
|
|
304
|
+
codexCore.setReadTokenManager?.(readTokenManager);
|
|
305
|
+
geminiCore.setReadTokenManager?.(readTokenManager);
|
|
306
|
+
opencodeCore.setReadTokenManager?.(readTokenManager);
|
|
307
|
+
// Install the roadmap-refresh sink so observer pollers built in B-2 can
|
|
308
|
+
// emit refresh signals via the `triggerRoadmapRefresh` trampoline. Until
|
|
309
|
+
// this fires the trampoline is a no-op; the actual emit only happens
|
|
310
|
+
// inside poll loops which start after `observerManager.startAll()` in
|
|
311
|
+
// §13 of `index.ts`.
|
|
312
|
+
setRoadmapRefreshSink((source) => dispatcher.emitRoadmapRefresh(source));
|
|
313
|
+
// ── Dispatcher setters ────────────────────────────────────────────────
|
|
314
|
+
dispatcher.setSignalDetector(signalDetector);
|
|
315
|
+
// DOCS_QA_B7_DESIGN.md §11.1 — persistence-side citation validator for
|
|
316
|
+
// docs_qa sessions. Inert for chat/DM/routine flows.
|
|
317
|
+
const docsCitationLookup = makeDocsCitationLookup(db);
|
|
318
|
+
dispatcher.setDocsCitationLookup(docsCitationLookup);
|
|
319
|
+
// Docs-QA SSE adapter — DOCS_QA_B7_DESIGN.md §S4 / §S8. Fans out
|
|
320
|
+
// alongside the dashboard adapter on the same `platform="dashboard"`
|
|
321
|
+
// surface; the `intent: "docs_qa"` discriminator on inbound events
|
|
322
|
+
// forks dispatch into the docs-qa task flow. Intentionally NOT
|
|
323
|
+
// registered with `messageHub` (would collide with the dashboard adapter
|
|
324
|
+
// on the shared platform key).
|
|
325
|
+
const docsQAAdapter = new DocsQAAdapter((event) => void eventBus.put(event), docsCitationLookup);
|
|
326
|
+
dispatcher.setDashboardStream(new CompositeDashboardStream([dashboardAdapter, docsQAAdapter]));
|
|
327
|
+
dispatcher.setAttachmentStore(attachmentStore);
|
|
328
|
+
dispatcher.setEventBroadcaster(eventBroadcaster);
|
|
329
|
+
// Voice transcription. See docs/design/appendices/voice-transcription.md.
|
|
330
|
+
// Env vars stay live for advanced operators; `enabled` falls back to the
|
|
331
|
+
// `voiceTranscriptionEnabled` runtime setting via a getter so the
|
|
332
|
+
// dashboard install flow takes effect without a daemon restart.
|
|
333
|
+
const voiceTranscriberMaxDuration = Number(process.env.PA_VOICE_TRANSCRIPTION_MAX_DURATION_SEC ?? "600");
|
|
334
|
+
const voiceEnvOverride = process.env.PA_VOICE_TRANSCRIPTION_ENABLED;
|
|
335
|
+
const voiceTranscriberEnabled = voiceEnvOverride !== undefined
|
|
336
|
+
? voiceEnvOverride.toLowerCase() !== "false"
|
|
337
|
+
: () => config.voiceTranscriptionEnabled;
|
|
338
|
+
const voicePrimaryEnvOverride = process.env.PA_VOICE_TRANSCRIPTION_PRIMARY_LANGUAGE;
|
|
339
|
+
const voiceTranscriberPrimaryLanguage = voicePrimaryEnvOverride !== undefined
|
|
340
|
+
? voicePrimaryEnvOverride.trim() || null
|
|
341
|
+
: () => config.voiceTranscriptionPrimaryLanguage;
|
|
342
|
+
const voiceTranscriber = new VoiceTranscriber({
|
|
343
|
+
db,
|
|
344
|
+
modelDir: join(config.dataDir, "models", "whisper"),
|
|
345
|
+
enabled: voiceTranscriberEnabled,
|
|
346
|
+
model: process.env.PA_VOICE_TRANSCRIPTION_MODEL,
|
|
347
|
+
language: process.env.PA_VOICE_TRANSCRIPTION_LANGUAGE ?? null,
|
|
348
|
+
primaryLanguage: voiceTranscriberPrimaryLanguage,
|
|
349
|
+
maxDurationSec: Number.isFinite(voiceTranscriberMaxDuration)
|
|
350
|
+
? voiceTranscriberMaxDuration
|
|
351
|
+
: 600,
|
|
352
|
+
});
|
|
353
|
+
dispatcher.setVoiceTranscriber(voiceTranscriber);
|
|
354
|
+
// M5 (release-prep): kick off the Whisper pipeline load in the
|
|
355
|
+
// background so the first inbound voice DM does not pay the
|
|
356
|
+
// ~800 MB – 2.5 GB model-download cost on the request path. The
|
|
357
|
+
// `void` is deliberate — daemon startup must NOT block on Hugging
|
|
358
|
+
// Face Hub being reachable. `warmUp()` is internally fault-tolerant
|
|
359
|
+
// (catches its own errors and logs them), so the outer `.catch` is
|
|
360
|
+
// pure defence against future signature drift.
|
|
361
|
+
void voiceTranscriber.warmUp().catch((err) => {
|
|
362
|
+
logger.warn({ err }, "voice transcriber warm-up threw despite internal catch — investigate");
|
|
363
|
+
});
|
|
364
|
+
// ── Auth health monitor + recovery (post-dispatcher) ──────────────────
|
|
365
|
+
// Constructed after the dispatcher so the `isMorningRoutineActive`
|
|
366
|
+
// closure resolves immediately (no forward-reference let-slot needed).
|
|
367
|
+
const authHealthMonitor = new AuthHealthMonitor(db, {
|
|
368
|
+
claude: agentCore,
|
|
369
|
+
codex: codexCore,
|
|
370
|
+
gemini: geminiCore,
|
|
371
|
+
opencode: opencodeCore,
|
|
372
|
+
}, authTelemetry, {
|
|
373
|
+
notifier: makeAuthNotifier("auth-health-monitor"),
|
|
374
|
+
isMorningRoutineActive: () => dispatcher.isMorningRoutineActive(),
|
|
375
|
+
isQuietHours: () => notificationManager.isQuietHours(),
|
|
376
|
+
probeDisabled: () => config.authProbeDisabled,
|
|
377
|
+
});
|
|
378
|
+
// Reset any recoveries that were in-flight when the daemon was last killed.
|
|
379
|
+
const recovered = authHealthMonitor.reconcilePendingRecoveries();
|
|
380
|
+
if (recovered > 0) {
|
|
381
|
+
logger.info({ count: recovered }, "Reconciled stuck auth recoveries on startup");
|
|
382
|
+
}
|
|
383
|
+
// Run the 60-day keepalive sweep once on startup. Hourly probe is
|
|
384
|
+
// registered via `scheduler.setAuthProbeCallback` in §12.
|
|
385
|
+
void authHealthMonitor.runKeepaliveSweep().catch((err) => {
|
|
386
|
+
logger.warn({ err }, "Initial auth keepalive sweep failed");
|
|
387
|
+
});
|
|
388
|
+
const keepaliveTimer = setInterval(() => {
|
|
389
|
+
void authHealthMonitor.runKeepaliveSweep().catch((err) => {
|
|
390
|
+
logger.warn({ err }, "Periodic auth keepalive sweep failed");
|
|
391
|
+
});
|
|
392
|
+
}, 24 * 60 * 60 * 1000);
|
|
393
|
+
keepaliveTimer.unref?.();
|
|
394
|
+
// Phase 5/6: Interactive auth recovery manager. Uses the same notifier
|
|
395
|
+
// sink as the AuthHealthMonitor so recovery DMs flow through the same
|
|
396
|
+
// notification pipeline with the same anti-spam guarantees.
|
|
397
|
+
const authRecovery = new AuthRecovery(db, authTelemetry, authHealthMonitor, makeAuthNotifier("auth-recovery"), {
|
|
398
|
+
claudeRecoveryTimeoutMin: 10,
|
|
399
|
+
codexRecoveryTimeoutMin: 15,
|
|
400
|
+
geminiRecoveryTimeoutMin: 5,
|
|
401
|
+
});
|
|
402
|
+
dispatcher.setAuthRecovery(authRecovery);
|
|
403
|
+
dispatcher.setAuthHealthMonitor(authHealthMonitor);
|
|
404
|
+
// ── Delegated sync worker (on-demand) ─────────────────────────────────
|
|
405
|
+
let delegatedSyncWorker = null;
|
|
406
|
+
const buildDelegatedSyncWorker = () => {
|
|
407
|
+
if (!delegatedSyncWorker) {
|
|
408
|
+
delegatedSyncWorker = new DelegatedSyncWorker({
|
|
409
|
+
db,
|
|
410
|
+
invoker: delegatedBackendInvoker,
|
|
411
|
+
calendarId: config.googleCalendarId,
|
|
412
|
+
timezone: config.timezone,
|
|
413
|
+
todayWriteLock: morningRoutineLock,
|
|
414
|
+
triggerRoadmapRefresh: (source) => dispatcher.emitRoadmapRefresh(source),
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
return delegatedSyncWorker;
|
|
418
|
+
};
|
|
419
|
+
if (hasActiveDelegatedSyncIntegration(db)) {
|
|
420
|
+
observerManager.register(buildDelegatedSyncWorker());
|
|
421
|
+
}
|
|
422
|
+
// Wire the delegated-sync refresh callback. The thunk reads the live
|
|
423
|
+
// `delegatedSyncWorker` reference each call so the dispatcher tracks
|
|
424
|
+
// re-registration when an integration mode flips. When no delegated
|
|
425
|
+
// integration is present, the worker is null and the call is a no-op.
|
|
426
|
+
dispatcher.setDelegatedSyncRefresh(async () => {
|
|
427
|
+
await delegatedSyncWorker?.runDisabledCadencesForHourlyCheck();
|
|
428
|
+
});
|
|
429
|
+
// ── Delegated probe observer (DELEGATED-MODE-V2 §7.1) ────────────────
|
|
430
|
+
// Hourly re-probe of delegated integrations' connector tools so the
|
|
431
|
+
// `integration_probes` cache reflects current sign-in state.
|
|
432
|
+
{
|
|
433
|
+
const { DelegatedProbeObserver } = await import("../observers/delegated-probe-observer.js");
|
|
434
|
+
observerManager.register(new DelegatedProbeObserver({
|
|
435
|
+
db,
|
|
436
|
+
agentBackends: [agentCore, codexCore, geminiCore, opencodeCore],
|
|
437
|
+
intervalMinutes: config.delegatedProbeIntervalMinutes,
|
|
438
|
+
}));
|
|
439
|
+
}
|
|
440
|
+
// ── Bang commands + skill-curation hooks ──────────────────────────────
|
|
441
|
+
// Messaging bang-commands (`!stop`/`!start`/`!cost`/`!report`) — owner
|
|
442
|
+
// DM chokepoint that runs ahead of every other interceptor.
|
|
443
|
+
dispatcher.setBangCommandRegistry(createDefaultBangCommandRegistry());
|
|
444
|
+
// P22 — wire the optimizer-workdir hooks. The `materialize` callback
|
|
445
|
+
// captures db, dataDir, workspaceDir, contextDir, and secretStore so
|
|
446
|
+
// the dispatcher branch can invoke it without importing the workdir
|
|
447
|
+
// module directly.
|
|
448
|
+
{
|
|
449
|
+
const { materializeOptimizerWorkdir, teardownOptimizerWorkdir } = await import("../core/skill-curation/workdir.js");
|
|
450
|
+
dispatcher.setSkillCurationHooks({
|
|
451
|
+
materialize: (opts) => materializeOptimizerWorkdir({
|
|
452
|
+
db,
|
|
453
|
+
dataDir: config.dataDir,
|
|
454
|
+
workspaceDir: config.workspaceDir,
|
|
455
|
+
contextDir: getContextDir(config),
|
|
456
|
+
secretStore: secretBroker,
|
|
457
|
+
cadence: readSkillCurationCadence(db),
|
|
458
|
+
...(opts?.manual ? { manual: true } : {}),
|
|
459
|
+
...(opts?.targetSkillsOverride
|
|
460
|
+
? { targetSkillsOverride: opts.targetSkillsOverride }
|
|
461
|
+
: {}),
|
|
462
|
+
}),
|
|
463
|
+
teardown: teardownOptimizerWorkdir,
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
if (isUserPaused(db)) {
|
|
467
|
+
logger.info("Restored user-paused state, autonomous work remains paused");
|
|
468
|
+
}
|
|
469
|
+
// ── Cross-stage closures ──────────────────────────────────────────────
|
|
470
|
+
const handleGoogleServicesReady = createGoogleServicesReadyHandler({
|
|
471
|
+
db,
|
|
472
|
+
config,
|
|
473
|
+
services,
|
|
474
|
+
observerManager,
|
|
475
|
+
buildCalendarPoller,
|
|
476
|
+
scheduler,
|
|
477
|
+
dispatcher,
|
|
478
|
+
});
|
|
479
|
+
const handleSecretChange = createSecretChangeHandler({
|
|
480
|
+
db,
|
|
481
|
+
config,
|
|
482
|
+
services,
|
|
483
|
+
observerManager,
|
|
484
|
+
secretState,
|
|
485
|
+
buildNotionPoller,
|
|
486
|
+
getGitWatcher,
|
|
487
|
+
isStartupComplete,
|
|
488
|
+
reloadSlackAdapter,
|
|
489
|
+
reloadTelegramAdapter,
|
|
490
|
+
reloadDiscordAdapter,
|
|
491
|
+
reloadNotionService,
|
|
492
|
+
reloadGitHubService,
|
|
493
|
+
reloadGoogleServices,
|
|
494
|
+
reloadAppleCalendarService,
|
|
495
|
+
});
|
|
496
|
+
const handlePromptContextChanged = createPromptContextChangedHandler({
|
|
497
|
+
config,
|
|
498
|
+
db,
|
|
499
|
+
dispatcher,
|
|
500
|
+
sessionManager,
|
|
501
|
+
});
|
|
502
|
+
return {
|
|
503
|
+
dispatcher,
|
|
504
|
+
sessionManager,
|
|
505
|
+
messageRecorder,
|
|
506
|
+
notificationManager,
|
|
507
|
+
signalDetector,
|
|
508
|
+
eventBroadcaster,
|
|
509
|
+
auditLogger,
|
|
510
|
+
docsQAAdapter,
|
|
511
|
+
agentBackends: [agentCore, codexCore, geminiCore, opencodeCore],
|
|
512
|
+
opencodeServerManager,
|
|
513
|
+
delegatedBackendInvoker,
|
|
514
|
+
authHealthMonitor,
|
|
515
|
+
authRecovery,
|
|
516
|
+
authTelemetry,
|
|
517
|
+
readTokenManager,
|
|
518
|
+
migrationLock,
|
|
519
|
+
contextWriteGate,
|
|
520
|
+
buildDelegatedSyncWorker,
|
|
521
|
+
getDelegatedSyncWorker: () => delegatedSyncWorker,
|
|
522
|
+
rematerializeActiveDmWorkdirs,
|
|
523
|
+
handleSecretChange,
|
|
524
|
+
handleGoogleServicesReady,
|
|
525
|
+
handlePromptContextChanged,
|
|
526
|
+
keepaliveTimer,
|
|
527
|
+
};
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Build the `handleSecretChange(scope)` closure consumed by the API
|
|
531
|
+
* surface's `onSecretChanged` hook. Exported so the peer test can pin
|
|
532
|
+
* the scope-routing matrix without booting a real dispatcher.
|
|
533
|
+
*
|
|
534
|
+
* The matrix MUST stay in sync with `docs/design/appendices/
|
|
535
|
+
* index-bootstrap-stage-split.md` §10 (test bullet 1):
|
|
536
|
+
*
|
|
537
|
+
* scope → reload + hot-register branches
|
|
538
|
+
* "slack" → reloadSlackAdapter(force=true)
|
|
539
|
+
* "telegram" → reloadTelegramAdapter(force=true)
|
|
540
|
+
* "discord" → reloadDiscordAdapter(force=true)
|
|
541
|
+
* "notion" → reloadNotionService; then if services.notion
|
|
542
|
+
* && !observerManager.has("notion-poller")
|
|
543
|
+
* && notionDatabaseIds.length > 0
|
|
544
|
+
* && shouldStartObserversFor(db, "notion")
|
|
545
|
+
* → register + start a freshly-built poller
|
|
546
|
+
* "github" → reloadGitHubService; then if getGitWatcher()
|
|
547
|
+
* && secretState.githubWebhookConfigured
|
|
548
|
+
* → enableWebhookMode on the existing watcher
|
|
549
|
+
* "google" → reloadGoogleServices
|
|
550
|
+
* "apple_calendar" → reloadAppleCalendarService
|
|
551
|
+
* "apiToken" → no-op (a token rotation only affects future
|
|
552
|
+
* request authentication; nothing here is keyed on it)
|
|
553
|
+
* default → no-op (unknown scope is silently ignored to keep
|
|
554
|
+
* forward-compat with new secret kinds)
|
|
555
|
+
*/
|
|
556
|
+
export function createSecretChangeHandler(deps) {
|
|
557
|
+
const { db, config, services, observerManager, secretState, buildNotionPoller, getGitWatcher, isStartupComplete, reloadSlackAdapter, reloadTelegramAdapter, reloadDiscordAdapter, reloadNotionService, reloadGitHubService, reloadGoogleServices, reloadAppleCalendarService, } = deps;
|
|
558
|
+
return async (scope) => {
|
|
559
|
+
switch (scope) {
|
|
560
|
+
case "slack":
|
|
561
|
+
await reloadSlackAdapter(true);
|
|
562
|
+
return;
|
|
563
|
+
case "telegram":
|
|
564
|
+
await reloadTelegramAdapter(true);
|
|
565
|
+
return;
|
|
566
|
+
case "discord":
|
|
567
|
+
await reloadDiscordAdapter(true);
|
|
568
|
+
return;
|
|
569
|
+
case "notion":
|
|
570
|
+
await reloadNotionService();
|
|
571
|
+
// Hot-reload: if the user just added the Notion API key while the
|
|
572
|
+
// integration is already in `direct` mode, register the poller now
|
|
573
|
+
// so they don't have to restart the daemon. Mirrors the
|
|
574
|
+
// `handleGoogleServicesReady` calendar-side path. Idempotent via
|
|
575
|
+
// `observerManager.has()`.
|
|
576
|
+
//
|
|
577
|
+
// The explicit `poller.start()` only fires AFTER startup has
|
|
578
|
+
// completed. During the bootstrap window (API listener live, but
|
|
579
|
+
// `observerManager.startAll()` not yet called) we register the
|
|
580
|
+
// poller and let the pending `startAll()` start it — calling
|
|
581
|
+
// `start()` here AND letting `startAll()` start it again would
|
|
582
|
+
// overwrite NotionPoller's `setInterval` slot and leak the first
|
|
583
|
+
// timer (`notion-poller.ts:91` unconditionally writes `this.timer`).
|
|
584
|
+
if (services.notion
|
|
585
|
+
&& !observerManager.has("notion-poller")
|
|
586
|
+
&& Object.keys(config.notionDatabaseIds).length > 0
|
|
587
|
+
&& shouldStartObserversFor(db, "notion")) {
|
|
588
|
+
const poller = buildNotionPoller();
|
|
589
|
+
if (poller) {
|
|
590
|
+
observerManager.register(poller);
|
|
591
|
+
if (isStartupComplete()) {
|
|
592
|
+
void poller.start();
|
|
593
|
+
logger.info("NotionPoller started via hot-reload");
|
|
594
|
+
}
|
|
595
|
+
else {
|
|
596
|
+
logger.info("NotionPoller registered during bootstrap; observerManager.startAll() will start it");
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
return;
|
|
601
|
+
case "github":
|
|
602
|
+
await reloadGitHubService();
|
|
603
|
+
{
|
|
604
|
+
const existingGitWatcher = getGitWatcher();
|
|
605
|
+
if (existingGitWatcher && secretState.githubWebhookConfigured) {
|
|
606
|
+
existingGitWatcher.enableWebhookMode();
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
return;
|
|
610
|
+
case "google":
|
|
611
|
+
await reloadGoogleServices();
|
|
612
|
+
return;
|
|
613
|
+
case "apple_calendar":
|
|
614
|
+
await reloadAppleCalendarService();
|
|
615
|
+
return;
|
|
616
|
+
case "apiToken":
|
|
617
|
+
default:
|
|
618
|
+
return;
|
|
619
|
+
}
|
|
620
|
+
};
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Build the `handleGoogleServicesReady` closure consumed when an OAuth
|
|
624
|
+
* round-trip leaves a fresh Google credential in the keychain mid-runtime.
|
|
625
|
+
* Exported so the peer test can pin the morning-routine / roadmap-refresh
|
|
626
|
+
* matrix without booting a real dispatcher.
|
|
627
|
+
*
|
|
628
|
+
* Branches (per design doc §10 test bullets 2 + 3):
|
|
629
|
+
* - services.calendar set AND google_calendar in `direct` AND no
|
|
630
|
+
* calendar observer registered yet → build + start a poller.
|
|
631
|
+
* - today.md stale → `scheduler.queueMorningRoutineWake("google_auth_ready")`
|
|
632
|
+
* and SKIP the standalone roadmap refresh (the morning routine's
|
|
633
|
+
* post-completion hook handles roadmap).
|
|
634
|
+
* - today.md fresh AND roadmap stale → `dispatcher.emitRoadmapRefresh
|
|
635
|
+
* ("google_auth_ready")`.
|
|
636
|
+
*/
|
|
637
|
+
export function createGoogleServicesReadyHandler(deps) {
|
|
638
|
+
const { db, config, services, observerManager, buildCalendarPoller, scheduler, dispatcher, } = deps;
|
|
639
|
+
return () => {
|
|
640
|
+
if (services.calendar
|
|
641
|
+
&& !observerManager.has("calendar")
|
|
642
|
+
&& shouldStartObserversFor(db, "google_calendar")) {
|
|
643
|
+
const poller = buildCalendarPoller();
|
|
644
|
+
if (poller) {
|
|
645
|
+
observerManager.register(poller);
|
|
646
|
+
void poller.start();
|
|
647
|
+
logger.info("CalendarPoller started via hot-reload");
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
// Trigger morning_routine catchup if today.md is stale or missing
|
|
651
|
+
// (same logic as runCatchup, ensures schedule generation after first
|
|
652
|
+
// auth).
|
|
653
|
+
const contextDir = getContextDir(config);
|
|
654
|
+
const todayMdPath = join(contextDir, "today.md");
|
|
655
|
+
const needsMorning = !hasFreshAgentDayTodayMd(todayMdPath, config.timezone || undefined, config.dayBoundaryHour);
|
|
656
|
+
if (needsMorning) {
|
|
657
|
+
// Morning routine's post-completion hook will also check roadmap staleness.
|
|
658
|
+
logger.info("Google services ready — today.md stale, queueing morning_routine wake");
|
|
659
|
+
scheduler.queueMorningRoutineWake("google_auth_ready");
|
|
660
|
+
return;
|
|
661
|
+
}
|
|
662
|
+
// Only refresh roadmap independently when today.md is already current.
|
|
663
|
+
// If morning_routine is needed, its post-completion hook will handle
|
|
664
|
+
// stale roadmap regeneration after the day context has been rebuilt.
|
|
665
|
+
if (isRoadmapStale(contextDir)) {
|
|
666
|
+
logger.info("Google services ready — roadmap stale, emitting roadmap_refresh");
|
|
667
|
+
dispatcher.emitRoadmapRefresh("google_auth_ready");
|
|
668
|
+
}
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
/**
|
|
672
|
+
* Build the `handlePromptContextChanged` callback consumed by the
|
|
673
|
+
* context-index reconciler and by the API surface's
|
|
674
|
+
* `onPromptContextChanged` hook. Exported for symmetry with the other
|
|
675
|
+
* cross-stage closures; the staleness decision logic itself lives in
|
|
676
|
+
* `core/context-staleness.ts` (and is unit-tested there).
|
|
677
|
+
*/
|
|
678
|
+
export function createPromptContextChangedHandler(deps) {
|
|
679
|
+
const { config, db, dispatcher, sessionManager } = deps;
|
|
680
|
+
return (path, reason, tier, metadata) => {
|
|
681
|
+
const setupMode = dispatcher.getCurrentSetupMode();
|
|
682
|
+
const decision = applyPromptContextStaleness({ path, reason, tier, metadata }, {
|
|
683
|
+
dmStalenessStrict: config.dmStalenessStrict,
|
|
684
|
+
setupInProgress: setupMode !== null,
|
|
685
|
+
markContextChanged: () => markContextChanged(db),
|
|
686
|
+
markActiveDmSessionsStale: (staleReason) => sessionManager.markActiveDmSessionsStale(staleReason),
|
|
687
|
+
});
|
|
688
|
+
logger.debug({
|
|
689
|
+
path,
|
|
690
|
+
reason,
|
|
691
|
+
tier_decided: decision.effectiveTier,
|
|
692
|
+
tier_requested: decision.requestedTier,
|
|
693
|
+
tier_reason: metadata?.tierReason,
|
|
694
|
+
dmStalenessStrict: config.dmStalenessStrict,
|
|
695
|
+
mode: setupMode,
|
|
696
|
+
invalidatesDmSessions: decision.invalidatesDmSessions,
|
|
697
|
+
skippedForSetup: decision.skippedForSetup,
|
|
698
|
+
}, "Prompt context staleness classified");
|
|
699
|
+
if (decision.skippedForSetup) {
|
|
700
|
+
logger.info({ path, reason, mode: setupMode }, "Skipping DM session stale flag - setup in progress");
|
|
701
|
+
}
|
|
702
|
+
};
|
|
703
|
+
}
|
|
704
|
+
//# sourceMappingURL=event-pipeline.js.map
|