@aitne/daemon 0.1.0
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/LICENSE +21 -0
- package/dist/adapters/composite-dashboard-stream.d.ts +42 -0
- package/dist/adapters/composite-dashboard-stream.d.ts.map +1 -0
- package/dist/adapters/composite-dashboard-stream.js +49 -0
- package/dist/adapters/composite-dashboard-stream.js.map +1 -0
- package/dist/adapters/dashboard-adapter.d.ts +104 -0
- package/dist/adapters/dashboard-adapter.d.ts.map +1 -0
- package/dist/adapters/dashboard-adapter.js +216 -0
- package/dist/adapters/dashboard-adapter.js.map +1 -0
- package/dist/adapters/discord.d.ts +77 -0
- package/dist/adapters/discord.d.ts.map +1 -0
- package/dist/adapters/discord.js +339 -0
- package/dist/adapters/discord.js.map +1 -0
- package/dist/adapters/docs-qa-adapter.d.ts +123 -0
- package/dist/adapters/docs-qa-adapter.d.ts.map +1 -0
- package/dist/adapters/docs-qa-adapter.js +218 -0
- package/dist/adapters/docs-qa-adapter.js.map +1 -0
- package/dist/adapters/message-hub.d.ts +70 -0
- package/dist/adapters/message-hub.d.ts.map +1 -0
- package/dist/adapters/message-hub.js +359 -0
- package/dist/adapters/message-hub.js.map +1 -0
- package/dist/adapters/notification-manager.d.ts +99 -0
- package/dist/adapters/notification-manager.d.ts.map +1 -0
- package/dist/adapters/notification-manager.js +498 -0
- package/dist/adapters/notification-manager.js.map +1 -0
- package/dist/adapters/outbound-text.d.ts +28 -0
- package/dist/adapters/outbound-text.d.ts.map +1 -0
- package/dist/adapters/outbound-text.js +58 -0
- package/dist/adapters/outbound-text.js.map +1 -0
- package/dist/adapters/slack-adapter.d.ts +82 -0
- package/dist/adapters/slack-adapter.d.ts.map +1 -0
- package/dist/adapters/slack-adapter.js +359 -0
- package/dist/adapters/slack-adapter.js.map +1 -0
- package/dist/adapters/telegram-adapter.d.ts +107 -0
- package/dist/adapters/telegram-adapter.d.ts.map +1 -0
- package/dist/adapters/telegram-adapter.js +477 -0
- package/dist/adapters/telegram-adapter.js.map +1 -0
- package/dist/adapters/types.d.ts +92 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/whatsapp-adapter.d.ts +213 -0
- package/dist/adapters/whatsapp-adapter.d.ts.map +1 -0
- package/dist/adapters/whatsapp-adapter.js +1216 -0
- package/dist/adapters/whatsapp-adapter.js.map +1 -0
- package/dist/api/chat-binding-query.d.ts +36 -0
- package/dist/api/chat-binding-query.d.ts.map +1 -0
- package/dist/api/chat-binding-query.js +63 -0
- package/dist/api/chat-binding-query.js.map +1 -0
- package/dist/api/chat-session-resume.d.ts +12 -0
- package/dist/api/chat-session-resume.d.ts.map +1 -0
- package/dist/api/chat-session-resume.js +21 -0
- package/dist/api/chat-session-resume.js.map +1 -0
- package/dist/api/delegated-proxy-helper.d.ts +33 -0
- package/dist/api/delegated-proxy-helper.d.ts.map +1 -0
- package/dist/api/delegated-proxy-helper.js +54 -0
- package/dist/api/delegated-proxy-helper.js.map +1 -0
- package/dist/api/directory-picker.d.ts +38 -0
- package/dist/api/directory-picker.d.ts.map +1 -0
- package/dist/api/directory-picker.js +278 -0
- package/dist/api/directory-picker.js.map +1 -0
- package/dist/api/env-writer.d.ts +25 -0
- package/dist/api/env-writer.d.ts.map +1 -0
- package/dist/api/env-writer.js +421 -0
- package/dist/api/env-writer.js.map +1 -0
- package/dist/api/integration-route-gate.d.ts +60 -0
- package/dist/api/integration-route-gate.d.ts.map +1 -0
- package/dist/api/integration-route-gate.js +83 -0
- package/dist/api/integration-route-gate.js.map +1 -0
- package/dist/api/json-body.d.ts +29 -0
- package/dist/api/json-body.d.ts.map +1 -0
- package/dist/api/json-body.js +87 -0
- package/dist/api/json-body.js.map +1 -0
- package/dist/api/routes/activity-sources.d.ts +20 -0
- package/dist/api/routes/activity-sources.d.ts.map +1 -0
- package/dist/api/routes/activity-sources.js +18 -0
- package/dist/api/routes/activity-sources.js.map +1 -0
- package/dist/api/routes/agent.d.ts +4 -0
- package/dist/api/routes/agent.d.ts.map +1 -0
- package/dist/api/routes/agent.js +619 -0
- package/dist/api/routes/agent.js.map +1 -0
- package/dist/api/routes/apple-calendar.d.ts +31 -0
- package/dist/api/routes/apple-calendar.d.ts.map +1 -0
- package/dist/api/routes/apple-calendar.js +310 -0
- package/dist/api/routes/apple-calendar.js.map +1 -0
- package/dist/api/routes/attachments.d.ts +36 -0
- package/dist/api/routes/attachments.d.ts.map +1 -0
- package/dist/api/routes/attachments.js +305 -0
- package/dist/api/routes/attachments.js.map +1 -0
- package/dist/api/routes/backends.d.ts +4 -0
- package/dist/api/routes/backends.d.ts.map +1 -0
- package/dist/api/routes/backends.js +1132 -0
- package/dist/api/routes/backends.js.map +1 -0
- package/dist/api/routes/books.d.ts +63 -0
- package/dist/api/routes/books.d.ts.map +1 -0
- package/dist/api/routes/books.js +467 -0
- package/dist/api/routes/books.js.map +1 -0
- package/dist/api/routes/calendar.d.ts +36 -0
- package/dist/api/routes/calendar.d.ts.map +1 -0
- package/dist/api/routes/calendar.js +351 -0
- package/dist/api/routes/calendar.js.map +1 -0
- package/dist/api/routes/commands.d.ts +4 -0
- package/dist/api/routes/commands.d.ts.map +1 -0
- package/dist/api/routes/commands.js +251 -0
- package/dist/api/routes/commands.js.map +1 -0
- package/dist/api/routes/context.d.ts +57 -0
- package/dist/api/routes/context.d.ts.map +1 -0
- package/dist/api/routes/context.js +1765 -0
- package/dist/api/routes/context.js.map +1 -0
- package/dist/api/routes/dashboard.d.ts +29 -0
- package/dist/api/routes/dashboard.d.ts.map +1 -0
- package/dist/api/routes/dashboard.js +2062 -0
- package/dist/api/routes/dashboard.js.map +1 -0
- package/dist/api/routes/delegated-sync.d.ts +4 -0
- package/dist/api/routes/delegated-sync.d.ts.map +1 -0
- package/dist/api/routes/delegated-sync.js +192 -0
- package/dist/api/routes/delegated-sync.js.map +1 -0
- package/dist/api/routes/delegated.d.ts +42 -0
- package/dist/api/routes/delegated.d.ts.map +1 -0
- package/dist/api/routes/delegated.js +250 -0
- package/dist/api/routes/delegated.js.map +1 -0
- package/dist/api/routes/docs.d.ts +34 -0
- package/dist/api/routes/docs.d.ts.map +1 -0
- package/dist/api/routes/docs.js +580 -0
- package/dist/api/routes/docs.js.map +1 -0
- package/dist/api/routes/entities.d.ts +9 -0
- package/dist/api/routes/entities.d.ts.map +1 -0
- package/dist/api/routes/entities.js +176 -0
- package/dist/api/routes/entities.js.map +1 -0
- package/dist/api/routes/git-accounts.d.ts +23 -0
- package/dist/api/routes/git-accounts.d.ts.map +1 -0
- package/dist/api/routes/git-accounts.js +227 -0
- package/dist/api/routes/git-accounts.js.map +1 -0
- package/dist/api/routes/git-templates.d.ts +50 -0
- package/dist/api/routes/git-templates.d.ts.map +1 -0
- package/dist/api/routes/git-templates.js +276 -0
- package/dist/api/routes/git-templates.js.map +1 -0
- package/dist/api/routes/git.d.ts +34 -0
- package/dist/api/routes/git.d.ts.map +1 -0
- package/dist/api/routes/git.js +126 -0
- package/dist/api/routes/git.js.map +1 -0
- package/dist/api/routes/github.d.ts +34 -0
- package/dist/api/routes/github.d.ts.map +1 -0
- package/dist/api/routes/github.js +465 -0
- package/dist/api/routes/github.js.map +1 -0
- package/dist/api/routes/health.d.ts +4 -0
- package/dist/api/routes/health.d.ts.map +1 -0
- package/dist/api/routes/health.js +257 -0
- package/dist/api/routes/health.js.map +1 -0
- package/dist/api/routes/integrations-reconcile.d.ts +33 -0
- package/dist/api/routes/integrations-reconcile.d.ts.map +1 -0
- package/dist/api/routes/integrations-reconcile.js +463 -0
- package/dist/api/routes/integrations-reconcile.js.map +1 -0
- package/dist/api/routes/integrations.d.ts +19 -0
- package/dist/api/routes/integrations.d.ts.map +1 -0
- package/dist/api/routes/integrations.js +1384 -0
- package/dist/api/routes/integrations.js.map +1 -0
- package/dist/api/routes/knowledge.d.ts +4 -0
- package/dist/api/routes/knowledge.d.ts.map +1 -0
- package/dist/api/routes/knowledge.js +224 -0
- package/dist/api/routes/knowledge.js.map +1 -0
- package/dist/api/routes/mail.d.ts +39 -0
- package/dist/api/routes/mail.d.ts.map +1 -0
- package/dist/api/routes/mail.js +1406 -0
- package/dist/api/routes/mail.js.map +1 -0
- package/dist/api/routes/managed-tasks.d.ts +48 -0
- package/dist/api/routes/managed-tasks.d.ts.map +1 -0
- package/dist/api/routes/managed-tasks.js +844 -0
- package/dist/api/routes/managed-tasks.js.map +1 -0
- package/dist/api/routes/mcp.d.ts +50 -0
- package/dist/api/routes/mcp.d.ts.map +1 -0
- package/dist/api/routes/mcp.js +470 -0
- package/dist/api/routes/mcp.js.map +1 -0
- package/dist/api/routes/metrics.d.ts +13 -0
- package/dist/api/routes/metrics.d.ts.map +1 -0
- package/dist/api/routes/metrics.js +117 -0
- package/dist/api/routes/metrics.js.map +1 -0
- package/dist/api/routes/notion.d.ts +35 -0
- package/dist/api/routes/notion.d.ts.map +1 -0
- package/dist/api/routes/notion.js +442 -0
- package/dist/api/routes/notion.js.map +1 -0
- package/dist/api/routes/observations.d.ts +4 -0
- package/dist/api/routes/observations.d.ts.map +1 -0
- package/dist/api/routes/observations.js +177 -0
- package/dist/api/routes/observations.js.map +1 -0
- package/dist/api/routes/obsidian.d.ts +16 -0
- package/dist/api/routes/obsidian.d.ts.map +1 -0
- package/dist/api/routes/obsidian.js +321 -0
- package/dist/api/routes/obsidian.js.map +1 -0
- package/dist/api/routes/profile-questions.d.ts +17 -0
- package/dist/api/routes/profile-questions.d.ts.map +1 -0
- package/dist/api/routes/profile-questions.js +115 -0
- package/dist/api/routes/profile-questions.js.map +1 -0
- package/dist/api/routes/receipts.d.ts +4 -0
- package/dist/api/routes/receipts.d.ts.map +1 -0
- package/dist/api/routes/receipts.js +155 -0
- package/dist/api/routes/receipts.js.map +1 -0
- package/dist/api/routes/recurring-schedules.d.ts +4 -0
- package/dist/api/routes/recurring-schedules.d.ts.map +1 -0
- package/dist/api/routes/recurring-schedules.js +137 -0
- package/dist/api/routes/recurring-schedules.js.map +1 -0
- package/dist/api/routes/repositories.d.ts +40 -0
- package/dist/api/routes/repositories.d.ts.map +1 -0
- package/dist/api/routes/repositories.js +857 -0
- package/dist/api/routes/repositories.js.map +1 -0
- package/dist/api/routes/setup-migrate.d.ts +74 -0
- package/dist/api/routes/setup-migrate.d.ts.map +1 -0
- package/dist/api/routes/setup-migrate.js +944 -0
- package/dist/api/routes/setup-migrate.js.map +1 -0
- package/dist/api/routes/setup.d.ts +4 -0
- package/dist/api/routes/setup.d.ts.map +1 -0
- package/dist/api/routes/setup.js +443 -0
- package/dist/api/routes/setup.js.map +1 -0
- package/dist/api/routes/skill-curation.d.ts +5 -0
- package/dist/api/routes/skill-curation.d.ts.map +1 -0
- package/dist/api/routes/skill-curation.js +728 -0
- package/dist/api/routes/skill-curation.js.map +1 -0
- package/dist/api/routes/skills.d.ts +52 -0
- package/dist/api/routes/skills.d.ts.map +1 -0
- package/dist/api/routes/skills.js +429 -0
- package/dist/api/routes/skills.js.map +1 -0
- package/dist/api/routes/sot-bindings.d.ts +20 -0
- package/dist/api/routes/sot-bindings.d.ts.map +1 -0
- package/dist/api/routes/sot-bindings.js +163 -0
- package/dist/api/routes/sot-bindings.js.map +1 -0
- package/dist/api/routes/sse.d.ts +86 -0
- package/dist/api/routes/sse.d.ts.map +1 -0
- package/dist/api/routes/sse.js +378 -0
- package/dist/api/routes/sse.js.map +1 -0
- package/dist/api/routes/system.d.ts +4 -0
- package/dist/api/routes/system.d.ts.map +1 -0
- package/dist/api/routes/system.js +207 -0
- package/dist/api/routes/system.js.map +1 -0
- package/dist/api/routes/task-flows.d.ts +30 -0
- package/dist/api/routes/task-flows.d.ts.map +1 -0
- package/dist/api/routes/task-flows.js +155 -0
- package/dist/api/routes/task-flows.js.map +1 -0
- package/dist/api/routes/travel-bookings.d.ts +4 -0
- package/dist/api/routes/travel-bookings.d.ts.map +1 -0
- package/dist/api/routes/travel-bookings.js +142 -0
- package/dist/api/routes/travel-bookings.js.map +1 -0
- package/dist/api/routes/travel-time.d.ts +8 -0
- package/dist/api/routes/travel-time.d.ts.map +1 -0
- package/dist/api/routes/travel-time.js +87 -0
- package/dist/api/routes/travel-time.js.map +1 -0
- package/dist/api/routes/triggers.d.ts +4 -0
- package/dist/api/routes/triggers.d.ts.map +1 -0
- package/dist/api/routes/triggers.js +101 -0
- package/dist/api/routes/triggers.js.map +1 -0
- package/dist/api/routes/voice.d.ts +48 -0
- package/dist/api/routes/voice.d.ts.map +1 -0
- package/dist/api/routes/voice.js +232 -0
- package/dist/api/routes/voice.js.map +1 -0
- package/dist/api/server.d.ts +428 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +558 -0
- package/dist/api/server.js.map +1 -0
- package/dist/config.d.ts +136 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +699 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-core.d.ts +517 -0
- package/dist/core/agent-core.d.ts.map +1 -0
- package/dist/core/agent-core.js +102 -0
- package/dist/core/agent-core.js.map +1 -0
- package/dist/core/alerts.d.ts +86 -0
- package/dist/core/alerts.d.ts.map +1 -0
- package/dist/core/alerts.js +304 -0
- package/dist/core/alerts.js.map +1 -0
- package/dist/core/atomic-write.d.ts +51 -0
- package/dist/core/atomic-write.d.ts.map +1 -0
- package/dist/core/atomic-write.js +135 -0
- package/dist/core/atomic-write.js.map +1 -0
- package/dist/core/backends/api-key-probe.d.ts +40 -0
- package/dist/core/backends/api-key-probe.d.ts.map +1 -0
- package/dist/core/backends/api-key-probe.js +116 -0
- package/dist/core/backends/api-key-probe.js.map +1 -0
- package/dist/core/backends/auth-health-monitor.d.ts +373 -0
- package/dist/core/backends/auth-health-monitor.d.ts.map +1 -0
- package/dist/core/backends/auth-health-monitor.js +950 -0
- package/dist/core/backends/auth-health-monitor.js.map +1 -0
- package/dist/core/backends/auth-recovery.d.ts +263 -0
- package/dist/core/backends/auth-recovery.d.ts.map +1 -0
- package/dist/core/backends/auth-recovery.js +1086 -0
- package/dist/core/backends/auth-recovery.js.map +1 -0
- package/dist/core/backends/auth-telemetry.d.ts +81 -0
- package/dist/core/backends/auth-telemetry.d.ts.map +1 -0
- package/dist/core/backends/auth-telemetry.js +108 -0
- package/dist/core/backends/auth-telemetry.js.map +1 -0
- package/dist/core/backends/backend-router.d.ts +272 -0
- package/dist/core/backends/backend-router.d.ts.map +1 -0
- package/dist/core/backends/backend-router.js +759 -0
- package/dist/core/backends/backend-router.js.map +1 -0
- package/dist/core/backends/claude-code-core.d.ts +299 -0
- package/dist/core/backends/claude-code-core.d.ts.map +1 -0
- package/dist/core/backends/claude-code-core.js +2541 -0
- package/dist/core/backends/claude-code-core.js.map +1 -0
- package/dist/core/backends/claude-credentials-store.d.ts +83 -0
- package/dist/core/backends/claude-credentials-store.d.ts.map +1 -0
- package/dist/core/backends/claude-credentials-store.js +243 -0
- package/dist/core/backends/claude-credentials-store.js.map +1 -0
- package/dist/core/backends/cli-utils.d.ts +95 -0
- package/dist/core/backends/cli-utils.d.ts.map +1 -0
- package/dist/core/backends/cli-utils.js +464 -0
- package/dist/core/backends/cli-utils.js.map +1 -0
- package/dist/core/backends/codex-core.d.ts +127 -0
- package/dist/core/backends/codex-core.d.ts.map +1 -0
- package/dist/core/backends/codex-core.js +1693 -0
- package/dist/core/backends/codex-core.js.map +1 -0
- package/dist/core/backends/gemini-cli-core.d.ts +367 -0
- package/dist/core/backends/gemini-cli-core.d.ts.map +1 -0
- package/dist/core/backends/gemini-cli-core.js +2331 -0
- package/dist/core/backends/gemini-cli-core.js.map +1 -0
- package/dist/core/backends/idle-watchdog.d.ts +77 -0
- package/dist/core/backends/idle-watchdog.d.ts.map +1 -0
- package/dist/core/backends/idle-watchdog.js +94 -0
- package/dist/core/backends/idle-watchdog.js.map +1 -0
- package/dist/core/backends/install-methods.d.ts +93 -0
- package/dist/core/backends/install-methods.d.ts.map +1 -0
- package/dist/core/backends/install-methods.js +267 -0
- package/dist/core/backends/install-methods.js.map +1 -0
- package/dist/core/backends/model-registry.d.ts +58 -0
- package/dist/core/backends/model-registry.d.ts.map +1 -0
- package/dist/core/backends/model-registry.js +539 -0
- package/dist/core/backends/model-registry.js.map +1 -0
- package/dist/core/backends/plan-presets.d.ts +123 -0
- package/dist/core/backends/plan-presets.d.ts.map +1 -0
- package/dist/core/backends/plan-presets.js +235 -0
- package/dist/core/backends/plan-presets.js.map +1 -0
- package/dist/core/backends/price-fetcher.d.ts +48 -0
- package/dist/core/backends/price-fetcher.d.ts.map +1 -0
- package/dist/core/backends/price-fetcher.js +248 -0
- package/dist/core/backends/price-fetcher.js.map +1 -0
- package/dist/core/backends/process-config-cascade.d.ts +68 -0
- package/dist/core/backends/process-config-cascade.d.ts.map +1 -0
- package/dist/core/backends/process-config-cascade.js +173 -0
- package/dist/core/backends/process-config-cascade.js.map +1 -0
- package/dist/core/backends/prompt-utils.d.ts +6 -0
- package/dist/core/backends/prompt-utils.d.ts.map +1 -0
- package/dist/core/backends/prompt-utils.js +80 -0
- package/dist/core/backends/prompt-utils.js.map +1 -0
- package/dist/core/backends/proxy-model-registry.d.ts +110 -0
- package/dist/core/backends/proxy-model-registry.d.ts.map +1 -0
- package/dist/core/backends/proxy-model-registry.js +195 -0
- package/dist/core/backends/proxy-model-registry.js.map +1 -0
- package/dist/core/backends/silent-api-error-detector.d.ts +31 -0
- package/dist/core/backends/silent-api-error-detector.d.ts.map +1 -0
- package/dist/core/backends/silent-api-error-detector.js +44 -0
- package/dist/core/backends/silent-api-error-detector.js.map +1 -0
- package/dist/core/bang-commands/commands-cost.d.ts +13 -0
- package/dist/core/bang-commands/commands-cost.d.ts.map +1 -0
- package/dist/core/bang-commands/commands-cost.js +91 -0
- package/dist/core/bang-commands/commands-cost.js.map +1 -0
- package/dist/core/bang-commands/commands-report.d.ts +18 -0
- package/dist/core/bang-commands/commands-report.d.ts.map +1 -0
- package/dist/core/bang-commands/commands-report.js +105 -0
- package/dist/core/bang-commands/commands-report.js.map +1 -0
- package/dist/core/bang-commands/commands-stop-start.d.ts +4 -0
- package/dist/core/bang-commands/commands-stop-start.d.ts.map +1 -0
- package/dist/core/bang-commands/commands-stop-start.js +88 -0
- package/dist/core/bang-commands/commands-stop-start.js.map +1 -0
- package/dist/core/bang-commands/format-utils.d.ts +34 -0
- package/dist/core/bang-commands/format-utils.d.ts.map +1 -0
- package/dist/core/bang-commands/format-utils.js +118 -0
- package/dist/core/bang-commands/format-utils.js.map +1 -0
- package/dist/core/bang-commands/index.d.ts +20 -0
- package/dist/core/bang-commands/index.d.ts.map +1 -0
- package/dist/core/bang-commands/index.js +31 -0
- package/dist/core/bang-commands/index.js.map +1 -0
- package/dist/core/bang-commands/registry.d.ts +72 -0
- package/dist/core/bang-commands/registry.d.ts.map +1 -0
- package/dist/core/bang-commands/registry.js +174 -0
- package/dist/core/bang-commands/registry.js.map +1 -0
- package/dist/core/bang-commands/user-commands.d.ts +86 -0
- package/dist/core/bang-commands/user-commands.d.ts.map +1 -0
- package/dist/core/bang-commands/user-commands.js +212 -0
- package/dist/core/bang-commands/user-commands.js.map +1 -0
- package/dist/core/channel-timeline.d.ts +28 -0
- package/dist/core/channel-timeline.d.ts.map +1 -0
- package/dist/core/channel-timeline.js +117 -0
- package/dist/core/channel-timeline.js.map +1 -0
- package/dist/core/character-block.d.ts +37 -0
- package/dist/core/character-block.d.ts.map +1 -0
- package/dist/core/character-block.js +162 -0
- package/dist/core/character-block.js.map +1 -0
- package/dist/core/context/activity-sources.d.ts +37 -0
- package/dist/core/context/activity-sources.d.ts.map +1 -0
- package/dist/core/context/activity-sources.js +69 -0
- package/dist/core/context/activity-sources.js.map +1 -0
- package/dist/core/context/activity-view-reconciler.d.ts +110 -0
- package/dist/core/context/activity-view-reconciler.d.ts.map +1 -0
- package/dist/core/context/activity-view-reconciler.js +252 -0
- package/dist/core/context/activity-view-reconciler.js.map +1 -0
- package/dist/core/context/activity-view-runner.d.ts +38 -0
- package/dist/core/context/activity-view-runner.d.ts.map +1 -0
- package/dist/core/context/activity-view-runner.js +402 -0
- package/dist/core/context/activity-view-runner.js.map +1 -0
- package/dist/core/context/default-schedules-reconciler.d.ts +85 -0
- package/dist/core/context/default-schedules-reconciler.d.ts.map +1 -0
- package/dist/core/context/default-schedules-reconciler.js +153 -0
- package/dist/core/context/default-schedules-reconciler.js.map +1 -0
- package/dist/core/context/default-schedules-runner.d.ts +40 -0
- package/dist/core/context/default-schedules-runner.d.ts.map +1 -0
- package/dist/core/context/default-schedules-runner.js +233 -0
- package/dist/core/context/default-schedules-runner.js.map +1 -0
- package/dist/core/context/domain-index-reconciler.d.ts +81 -0
- package/dist/core/context/domain-index-reconciler.d.ts.map +1 -0
- package/dist/core/context/domain-index-reconciler.js +199 -0
- package/dist/core/context/domain-index-reconciler.js.map +1 -0
- package/dist/core/context/domain-index-runner.d.ts +35 -0
- package/dist/core/context/domain-index-runner.d.ts.map +1 -0
- package/dist/core/context/domain-index-runner.js +223 -0
- package/dist/core/context/domain-index-runner.js.map +1 -0
- package/dist/core/context/entity-mirror.d.ts +227 -0
- package/dist/core/context/entity-mirror.d.ts.map +1 -0
- package/dist/core/context/entity-mirror.js +629 -0
- package/dist/core/context/entity-mirror.js.map +1 -0
- package/dist/core/context/entity-source-rename.d.ts +61 -0
- package/dist/core/context/entity-source-rename.d.ts.map +1 -0
- package/dist/core/context/entity-source-rename.js +237 -0
- package/dist/core/context/entity-source-rename.js.map +1 -0
- package/dist/core/context/index-reconciler.d.ts +61 -0
- package/dist/core/context/index-reconciler.d.ts.map +1 -0
- package/dist/core/context/index-reconciler.js +329 -0
- package/dist/core/context/index-reconciler.js.map +1 -0
- package/dist/core/context/policy-index-reconciler.d.ts +102 -0
- package/dist/core/context/policy-index-reconciler.d.ts.map +1 -0
- package/dist/core/context/policy-index-reconciler.js +202 -0
- package/dist/core/context/policy-index-reconciler.js.map +1 -0
- package/dist/core/context/policy-index-runner.d.ts +66 -0
- package/dist/core/context/policy-index-runner.d.ts.map +1 -0
- package/dist/core/context/policy-index-runner.js +406 -0
- package/dist/core/context/policy-index-runner.js.map +1 -0
- package/dist/core/context/reconciler-runner.d.ts +44 -0
- package/dist/core/context/reconciler-runner.d.ts.map +1 -0
- package/dist/core/context/reconciler-runner.js +273 -0
- package/dist/core/context/reconciler-runner.js.map +1 -0
- package/dist/core/context-builder.d.ts +115 -0
- package/dist/core/context-builder.d.ts.map +1 -0
- package/dist/core/context-builder.js +1148 -0
- package/dist/core/context-builder.js.map +1 -0
- package/dist/core/context-frontmatter-backfill.d.ts +33 -0
- package/dist/core/context-frontmatter-backfill.d.ts.map +1 -0
- package/dist/core/context-frontmatter-backfill.js +111 -0
- package/dist/core/context-frontmatter-backfill.js.map +1 -0
- package/dist/core/context-frontmatter.d.ts +13 -0
- package/dist/core/context-frontmatter.d.ts.map +1 -0
- package/dist/core/context-frontmatter.js +325 -0
- package/dist/core/context-frontmatter.js.map +1 -0
- package/dist/core/context-health.d.ts +51 -0
- package/dist/core/context-health.d.ts.map +1 -0
- package/dist/core/context-health.js +304 -0
- package/dist/core/context-health.js.map +1 -0
- package/dist/core/context-paths.d.ts +183 -0
- package/dist/core/context-paths.d.ts.map +1 -0
- package/dist/core/context-paths.js +241 -0
- package/dist/core/context-paths.js.map +1 -0
- package/dist/core/context-staleness.d.ts +45 -0
- package/dist/core/context-staleness.d.ts.map +1 -0
- package/dist/core/context-staleness.js +88 -0
- package/dist/core/context-staleness.js.map +1 -0
- package/dist/core/custom-routine-scheduler.d.ts +151 -0
- package/dist/core/custom-routine-scheduler.d.ts.map +1 -0
- package/dist/core/custom-routine-scheduler.js +335 -0
- package/dist/core/custom-routine-scheduler.js.map +1 -0
- package/dist/core/daemon-api-cli.d.ts +33 -0
- package/dist/core/daemon-api-cli.d.ts.map +1 -0
- package/dist/core/daemon-api-cli.js +614 -0
- package/dist/core/daemon-api-cli.js.map +1 -0
- package/dist/core/dashboard-session-cleanup.d.ts +39 -0
- package/dist/core/dashboard-session-cleanup.d.ts.map +1 -0
- package/dist/core/dashboard-session-cleanup.js +108 -0
- package/dist/core/dashboard-session-cleanup.js.map +1 -0
- package/dist/core/dashboard-session-controls.d.ts +41 -0
- package/dist/core/dashboard-session-controls.d.ts.map +1 -0
- package/dist/core/dashboard-session-controls.js +154 -0
- package/dist/core/dashboard-session-controls.js.map +1 -0
- package/dist/core/delegated-connector-health.d.ts +63 -0
- package/dist/core/delegated-connector-health.d.ts.map +1 -0
- package/dist/core/delegated-connector-health.js +157 -0
- package/dist/core/delegated-connector-health.js.map +1 -0
- package/dist/core/dispatcher.d.ts +999 -0
- package/dist/core/dispatcher.d.ts.map +1 -0
- package/dist/core/dispatcher.js +4378 -0
- package/dist/core/dispatcher.js.map +1 -0
- package/dist/core/dm-freshness-metrics.d.ts +73 -0
- package/dist/core/dm-freshness-metrics.d.ts.map +1 -0
- package/dist/core/dm-freshness-metrics.js +138 -0
- package/dist/core/dm-freshness-metrics.js.map +1 -0
- package/dist/core/docs/citation-validator.d.ts +73 -0
- package/dist/core/docs/citation-validator.d.ts.map +1 -0
- package/dist/core/docs/citation-validator.js +195 -0
- package/dist/core/docs/citation-validator.js.map +1 -0
- package/dist/core/docs/extract-terms.d.ts +78 -0
- package/dist/core/docs/extract-terms.d.ts.map +1 -0
- package/dist/core/docs/extract-terms.js +147 -0
- package/dist/core/docs/extract-terms.js.map +1 -0
- package/dist/core/docs/indexer.d.ts +104 -0
- package/dist/core/docs/indexer.d.ts.map +1 -0
- package/dist/core/docs/indexer.js +340 -0
- package/dist/core/docs/indexer.js.map +1 -0
- package/dist/core/drift-effects.d.ts +30 -0
- package/dist/core/drift-effects.d.ts.map +1 -0
- package/dist/core/drift-effects.js +384 -0
- package/dist/core/drift-effects.js.map +1 -0
- package/dist/core/event-bus.d.ts +56 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +135 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/git-project-docs.d.ts +77 -0
- package/dist/core/git-project-docs.d.ts.map +1 -0
- package/dist/core/git-project-docs.js +439 -0
- package/dist/core/git-project-docs.js.map +1 -0
- package/dist/core/health-monitor.d.ts +57 -0
- package/dist/core/health-monitor.d.ts.map +1 -0
- package/dist/core/health-monitor.js +137 -0
- package/dist/core/health-monitor.js.map +1 -0
- package/dist/core/heartbeat.d.ts +26 -0
- package/dist/core/heartbeat.d.ts.map +1 -0
- package/dist/core/heartbeat.js +48 -0
- package/dist/core/heartbeat.js.map +1 -0
- package/dist/core/integration-health.d.ts +49 -0
- package/dist/core/integration-health.d.ts.map +1 -0
- package/dist/core/integration-health.js +89 -0
- package/dist/core/integration-health.js.map +1 -0
- package/dist/core/integration-lifecycle.d.ts +79 -0
- package/dist/core/integration-lifecycle.d.ts.map +1 -0
- package/dist/core/integration-lifecycle.js +153 -0
- package/dist/core/integration-lifecycle.js.map +1 -0
- package/dist/core/integration-main-backend.d.ts +36 -0
- package/dist/core/integration-main-backend.d.ts.map +1 -0
- package/dist/core/integration-main-backend.js +59 -0
- package/dist/core/integration-main-backend.js.map +1 -0
- package/dist/core/integration-probe.d.ts +98 -0
- package/dist/core/integration-probe.d.ts.map +1 -0
- package/dist/core/integration-probe.js +152 -0
- package/dist/core/integration-probe.js.map +1 -0
- package/dist/core/management-md-write-lock.d.ts +68 -0
- package/dist/core/management-md-write-lock.d.ts.map +1 -0
- package/dist/core/management-md-write-lock.js +93 -0
- package/dist/core/management-md-write-lock.js.map +1 -0
- package/dist/core/management-md.d.ts +186 -0
- package/dist/core/management-md.d.ts.map +1 -0
- package/dist/core/management-md.js +652 -0
- package/dist/core/management-md.js.map +1 -0
- package/dist/core/management-registry.d.ts +245 -0
- package/dist/core/management-registry.d.ts.map +1 -0
- package/dist/core/management-registry.js +906 -0
- package/dist/core/management-registry.js.map +1 -0
- package/dist/core/management-telemetry.d.ts +100 -0
- package/dist/core/management-telemetry.d.ts.map +1 -0
- package/dist/core/management-telemetry.js +156 -0
- package/dist/core/management-telemetry.js.map +1 -0
- package/dist/core/message-recorder.d.ts +38 -0
- package/dist/core/message-recorder.d.ts.map +1 -0
- package/dist/core/message-recorder.js +88 -0
- package/dist/core/message-recorder.js.map +1 -0
- package/dist/core/metrics.d.ts +338 -0
- package/dist/core/metrics.d.ts.map +1 -0
- package/dist/core/metrics.js +747 -0
- package/dist/core/metrics.js.map +1 -0
- package/dist/core/migration-backup.d.ts +218 -0
- package/dist/core/migration-backup.d.ts.map +1 -0
- package/dist/core/migration-backup.js +934 -0
- package/dist/core/migration-backup.js.map +1 -0
- package/dist/core/overview-write-lock.d.ts +48 -0
- package/dist/core/overview-write-lock.d.ts.map +1 -0
- package/dist/core/overview-write-lock.js +56 -0
- package/dist/core/overview-write-lock.js.map +1 -0
- package/dist/core/path-compat.d.ts +22 -0
- package/dist/core/path-compat.d.ts.map +1 -0
- package/dist/core/path-compat.js +67 -0
- package/dist/core/path-compat.js.map +1 -0
- package/dist/core/path-rewrite.d.ts +58 -0
- package/dist/core/path-rewrite.d.ts.map +1 -0
- package/dist/core/path-rewrite.js +141 -0
- package/dist/core/path-rewrite.js.map +1 -0
- package/dist/core/policy-files.d.ts +108 -0
- package/dist/core/policy-files.d.ts.map +1 -0
- package/dist/core/policy-files.js +198 -0
- package/dist/core/policy-files.js.map +1 -0
- package/dist/core/profile-questions/seed.d.ts +44 -0
- package/dist/core/profile-questions/seed.d.ts.map +1 -0
- package/dist/core/profile-questions/seed.js +173 -0
- package/dist/core/profile-questions/seed.js.map +1 -0
- package/dist/core/profile-questions/slot-filled.d.ts +51 -0
- package/dist/core/profile-questions/slot-filled.d.ts.map +1 -0
- package/dist/core/profile-questions/slot-filled.js +118 -0
- package/dist/core/profile-questions/slot-filled.js.map +1 -0
- package/dist/core/prompts.d.ts +111 -0
- package/dist/core/prompts.d.ts.map +1 -0
- package/dist/core/prompts.js +267 -0
- package/dist/core/prompts.js.map +1 -0
- package/dist/core/quiet-hours-sync.d.ts +15 -0
- package/dist/core/quiet-hours-sync.d.ts.map +1 -0
- package/dist/core/quiet-hours-sync.js +51 -0
- package/dist/core/quiet-hours-sync.js.map +1 -0
- package/dist/core/read-sensitive-token-manager.d.ts +19 -0
- package/dist/core/read-sensitive-token-manager.d.ts.map +1 -0
- package/dist/core/read-sensitive-token-manager.js +29 -0
- package/dist/core/read-sensitive-token-manager.js.map +1 -0
- package/dist/core/recurrence.d.ts +24 -0
- package/dist/core/recurrence.d.ts.map +1 -0
- package/dist/core/recurrence.js +162 -0
- package/dist/core/recurrence.js.map +1 -0
- package/dist/core/reinstall.d.ts +107 -0
- package/dist/core/reinstall.d.ts.map +1 -0
- package/dist/core/reinstall.js +163 -0
- package/dist/core/reinstall.js.map +1 -0
- package/dist/core/release-assets.d.ts +106 -0
- package/dist/core/release-assets.d.ts.map +1 -0
- package/dist/core/release-assets.js +434 -0
- package/dist/core/release-assets.js.map +1 -0
- package/dist/core/repository-management-docs.d.ts +216 -0
- package/dist/core/repository-management-docs.d.ts.map +1 -0
- package/dist/core/repository-management-docs.js +855 -0
- package/dist/core/repository-management-docs.js.map +1 -0
- package/dist/core/retention.d.ts +164 -0
- package/dist/core/retention.d.ts.map +1 -0
- package/dist/core/retention.js +1008 -0
- package/dist/core/retention.js.map +1 -0
- package/dist/core/review-context.d.ts +48 -0
- package/dist/core/review-context.d.ts.map +1 -0
- package/dist/core/review-context.js +282 -0
- package/dist/core/review-context.js.map +1 -0
- package/dist/core/roadmap-horizon.d.ts +48 -0
- package/dist/core/roadmap-horizon.d.ts.map +1 -0
- package/dist/core/roadmap-horizon.js +213 -0
- package/dist/core/roadmap-horizon.js.map +1 -0
- package/dist/core/roadmap-ids.d.ts +57 -0
- package/dist/core/roadmap-ids.d.ts.map +1 -0
- package/dist/core/roadmap-ids.js +118 -0
- package/dist/core/roadmap-ids.js.map +1 -0
- package/dist/core/roadmap-merge.d.ts +7 -0
- package/dist/core/roadmap-merge.d.ts.map +1 -0
- package/dist/core/roadmap-merge.js +187 -0
- package/dist/core/roadmap-merge.js.map +1 -0
- package/dist/core/roadmap-refresh-triggers.d.ts +32 -0
- package/dist/core/roadmap-refresh-triggers.d.ts.map +1 -0
- package/dist/core/roadmap-refresh-triggers.js +51 -0
- package/dist/core/roadmap-refresh-triggers.js.map +1 -0
- package/dist/core/roadmap-truncate.d.ts +49 -0
- package/dist/core/roadmap-truncate.d.ts.map +1 -0
- package/dist/core/roadmap-truncate.js +152 -0
- package/dist/core/roadmap-truncate.js.map +1 -0
- package/dist/core/roadmap-validate.d.ts +31 -0
- package/dist/core/roadmap-validate.d.ts.map +1 -0
- package/dist/core/roadmap-validate.js +403 -0
- package/dist/core/roadmap-validate.js.map +1 -0
- package/dist/core/roadmap-write-lock.d.ts +53 -0
- package/dist/core/roadmap-write-lock.d.ts.map +1 -0
- package/dist/core/roadmap-write-lock.js +59 -0
- package/dist/core/roadmap-write-lock.js.map +1 -0
- package/dist/core/schedule-insert-helper.d.ts +46 -0
- package/dist/core/schedule-insert-helper.d.ts.map +1 -0
- package/dist/core/schedule-insert-helper.js +52 -0
- package/dist/core/schedule-insert-helper.js.map +1 -0
- package/dist/core/schedule-maintenance.d.ts +22 -0
- package/dist/core/schedule-maintenance.d.ts.map +1 -0
- package/dist/core/schedule-maintenance.js +57 -0
- package/dist/core/schedule-maintenance.js.map +1 -0
- package/dist/core/scheduler.d.ts +208 -0
- package/dist/core/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler.js +896 -0
- package/dist/core/scheduler.js.map +1 -0
- package/dist/core/semaphore.d.ts +13 -0
- package/dist/core/semaphore.d.ts.map +1 -0
- package/dist/core/semaphore.js +31 -0
- package/dist/core/semaphore.js.map +1 -0
- package/dist/core/session-gate.d.ts +37 -0
- package/dist/core/session-gate.d.ts.map +1 -0
- package/dist/core/session-gate.js +69 -0
- package/dist/core/session-gate.js.map +1 -0
- package/dist/core/session-manager.d.ts +252 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +716 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/signal-detector.d.ts +97 -0
- package/dist/core/signal-detector.d.ts.map +1 -0
- package/dist/core/signal-detector.js +215 -0
- package/dist/core/signal-detector.js.map +1 -0
- package/dist/core/skeleton.d.ts +83 -0
- package/dist/core/skeleton.d.ts.map +1 -0
- package/dist/core/skeleton.js +255 -0
- package/dist/core/skeleton.js.map +1 -0
- package/dist/core/skill-curation/apply-proposal.d.ts +71 -0
- package/dist/core/skill-curation/apply-proposal.d.ts.map +1 -0
- package/dist/core/skill-curation/apply-proposal.js +175 -0
- package/dist/core/skill-curation/apply-proposal.js.map +1 -0
- package/dist/core/skill-curation/auto-revert.d.ts +43 -0
- package/dist/core/skill-curation/auto-revert.d.ts.map +1 -0
- package/dist/core/skill-curation/auto-revert.js +155 -0
- package/dist/core/skill-curation/auto-revert.js.map +1 -0
- package/dist/core/skill-curation/classify-diff.d.ts +27 -0
- package/dist/core/skill-curation/classify-diff.d.ts.map +1 -0
- package/dist/core/skill-curation/classify-diff.js +0 -0
- package/dist/core/skill-curation/classify-diff.js.map +1 -0
- package/dist/core/skill-curation/declarations.d.ts +32 -0
- package/dist/core/skill-curation/declarations.d.ts.map +1 -0
- package/dist/core/skill-curation/declarations.js +171 -0
- package/dist/core/skill-curation/declarations.js.map +1 -0
- package/dist/core/skill-curation/knowledge-map.d.ts +26 -0
- package/dist/core/skill-curation/knowledge-map.d.ts.map +1 -0
- package/dist/core/skill-curation/knowledge-map.js +154 -0
- package/dist/core/skill-curation/knowledge-map.js.map +1 -0
- package/dist/core/skill-curation/orphan-overlay.d.ts +35 -0
- package/dist/core/skill-curation/orphan-overlay.d.ts.map +1 -0
- package/dist/core/skill-curation/orphan-overlay.js +167 -0
- package/dist/core/skill-curation/orphan-overlay.js.map +1 -0
- package/dist/core/skill-curation/overlay-store.d.ts +41 -0
- package/dist/core/skill-curation/overlay-store.d.ts.map +1 -0
- package/dist/core/skill-curation/overlay-store.js +143 -0
- package/dist/core/skill-curation/overlay-store.js.map +1 -0
- package/dist/core/skill-curation/render/convention-notes.d.ts +4 -0
- package/dist/core/skill-curation/render/convention-notes.d.ts.map +1 -0
- package/dist/core/skill-curation/render/convention-notes.js +13 -0
- package/dist/core/skill-curation/render/convention-notes.js.map +1 -0
- package/dist/core/skill-curation/render/cross-references.d.ts +4 -0
- package/dist/core/skill-curation/render/cross-references.d.ts.map +1 -0
- package/dist/core/skill-curation/render/cross-references.js +10 -0
- package/dist/core/skill-curation/render/cross-references.js.map +1 -0
- package/dist/core/skill-curation/render/frontmatter-schema.d.ts +4 -0
- package/dist/core/skill-curation/render/frontmatter-schema.d.ts.map +1 -0
- package/dist/core/skill-curation/render/frontmatter-schema.js +25 -0
- package/dist/core/skill-curation/render/frontmatter-schema.js.map +1 -0
- package/dist/core/skill-curation/render/index.d.ts +5 -0
- package/dist/core/skill-curation/render/index.d.ts.map +1 -0
- package/dist/core/skill-curation/render/index.js +42 -0
- package/dist/core/skill-curation/render/index.js.map +1 -0
- package/dist/core/skill-curation/render/knowledge-layout.d.ts +4 -0
- package/dist/core/skill-curation/render/knowledge-layout.d.ts.map +1 -0
- package/dist/core/skill-curation/render/knowledge-layout.js +36 -0
- package/dist/core/skill-curation/render/knowledge-layout.js.map +1 -0
- package/dist/core/skill-curation/render/routing-table.d.ts +4 -0
- package/dist/core/skill-curation/render/routing-table.d.ts.map +1 -0
- package/dist/core/skill-curation/render/routing-table.js +37 -0
- package/dist/core/skill-curation/render/routing-table.js.map +1 -0
- package/dist/core/skill-curation/render/search-recipes.d.ts +4 -0
- package/dist/core/skill-curation/render/search-recipes.d.ts.map +1 -0
- package/dist/core/skill-curation/render/search-recipes.js +39 -0
- package/dist/core/skill-curation/render/search-recipes.js.map +1 -0
- package/dist/core/skill-curation/run-token.d.ts +27 -0
- package/dist/core/skill-curation/run-token.d.ts.map +1 -0
- package/dist/core/skill-curation/run-token.js +81 -0
- package/dist/core/skill-curation/run-token.js.map +1 -0
- package/dist/core/skill-curation/signals.d.ts +49 -0
- package/dist/core/skill-curation/signals.d.ts.map +1 -0
- package/dist/core/skill-curation/signals.js +149 -0
- package/dist/core/skill-curation/signals.js.map +1 -0
- package/dist/core/skill-curation/smoke-test.d.ts +39 -0
- package/dist/core/skill-curation/smoke-test.d.ts.map +1 -0
- package/dist/core/skill-curation/smoke-test.js +313 -0
- package/dist/core/skill-curation/smoke-test.js.map +1 -0
- package/dist/core/skill-curation/splicer.d.ts +16 -0
- package/dist/core/skill-curation/splicer.d.ts.map +1 -0
- package/dist/core/skill-curation/splicer.js +78 -0
- package/dist/core/skill-curation/splicer.js.map +1 -0
- package/dist/core/skill-curation/workdir.d.ts +40 -0
- package/dist/core/skill-curation/workdir.d.ts.map +1 -0
- package/dist/core/skill-curation/workdir.js +242 -0
- package/dist/core/skill-curation/workdir.js.map +1 -0
- package/dist/core/skills-compiler.d.ts +391 -0
- package/dist/core/skills-compiler.d.ts.map +1 -0
- package/dist/core/skills-compiler.js +1271 -0
- package/dist/core/skills-compiler.js.map +1 -0
- package/dist/core/skills-manifest.d.ts +8 -0
- package/dist/core/skills-manifest.d.ts.map +1 -0
- package/dist/core/skills-manifest.js +408 -0
- package/dist/core/skills-manifest.js.map +1 -0
- package/dist/core/system-reset.d.ts +268 -0
- package/dist/core/system-reset.d.ts.map +1 -0
- package/dist/core/system-reset.js +816 -0
- package/dist/core/system-reset.js.map +1 -0
- package/dist/core/template-store.d.ts +170 -0
- package/dist/core/template-store.d.ts.map +1 -0
- package/dist/core/template-store.js +388 -0
- package/dist/core/template-store.js.map +1 -0
- package/dist/core/template-versions.d.ts +95 -0
- package/dist/core/template-versions.d.ts.map +1 -0
- package/dist/core/template-versions.js +175 -0
- package/dist/core/template-versions.js.map +1 -0
- package/dist/core/today-agent-plan.d.ts +33 -0
- package/dist/core/today-agent-plan.d.ts.map +1 -0
- package/dist/core/today-agent-plan.js +120 -0
- package/dist/core/today-agent-plan.js.map +1 -0
- package/dist/core/today-direct-writer.d.ts +62 -0
- package/dist/core/today-direct-writer.d.ts.map +1 -0
- package/dist/core/today-direct-writer.js +132 -0
- package/dist/core/today-direct-writer.js.map +1 -0
- package/dist/core/today-write-lock.d.ts +89 -0
- package/dist/core/today-write-lock.d.ts.map +1 -0
- package/dist/core/today-write-lock.js +154 -0
- package/dist/core/today-write-lock.js.map +1 -0
- package/dist/core/trigger-dispatch.d.ts +31 -0
- package/dist/core/trigger-dispatch.d.ts.map +1 -0
- package/dist/core/trigger-dispatch.js +100 -0
- package/dist/core/trigger-dispatch.js.map +1 -0
- package/dist/core/trigger-evaluator.d.ts +59 -0
- package/dist/core/trigger-evaluator.d.ts.map +1 -0
- package/dist/core/trigger-evaluator.js +243 -0
- package/dist/core/trigger-evaluator.js.map +1 -0
- package/dist/core/workdir.d.ts +241 -0
- package/dist/core/workdir.d.ts.map +1 -0
- package/dist/core/workdir.js +565 -0
- package/dist/core/workdir.js.map +1 -0
- package/dist/db/automation-triggers.d.ts +90 -0
- package/dist/db/automation-triggers.d.ts.map +1 -0
- package/dist/db/automation-triggers.js +199 -0
- package/dist/db/automation-triggers.js.map +1 -0
- package/dist/db/client.d.ts +6 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +47 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/entities-store.d.ts +92 -0
- package/dist/db/entities-store.d.ts.map +1 -0
- package/dist/db/entities-store.js +180 -0
- package/dist/db/entities-store.js.map +1 -0
- package/dist/db/hourly-check-signals.d.ts +78 -0
- package/dist/db/hourly-check-signals.d.ts.map +1 -0
- package/dist/db/hourly-check-signals.js +289 -0
- package/dist/db/hourly-check-signals.js.map +1 -0
- package/dist/db/integration-probe-store.d.ts +27 -0
- package/dist/db/integration-probe-store.d.ts.map +1 -0
- package/dist/db/integration-probe-store.js +75 -0
- package/dist/db/integration-probe-store.js.map +1 -0
- package/dist/db/integrations-store.d.ts +19 -0
- package/dist/db/integrations-store.d.ts.map +1 -0
- package/dist/db/integrations-store.js +85 -0
- package/dist/db/integrations-store.js.map +1 -0
- package/dist/db/managed-tasks-store.d.ts +130 -0
- package/dist/db/managed-tasks-store.d.ts.map +1 -0
- package/dist/db/managed-tasks-store.js +238 -0
- package/dist/db/managed-tasks-store.js.map +1 -0
- package/dist/db/management-parse-failures-store.d.ts +45 -0
- package/dist/db/management-parse-failures-store.d.ts.map +1 -0
- package/dist/db/management-parse-failures-store.js +36 -0
- package/dist/db/management-parse-failures-store.js.map +1 -0
- package/dist/db/observations.d.ts +145 -0
- package/dist/db/observations.d.ts.map +1 -0
- package/dist/db/observations.js +287 -0
- package/dist/db/observations.js.map +1 -0
- package/dist/db/recurring-schedules.d.ts +70 -0
- package/dist/db/recurring-schedules.d.ts.map +1 -0
- package/dist/db/recurring-schedules.js +213 -0
- package/dist/db/recurring-schedules.js.map +1 -0
- package/dist/db/repositories-store.d.ts +296 -0
- package/dist/db/repositories-store.d.ts.map +1 -0
- package/dist/db/repositories-store.js +754 -0
- package/dist/db/repositories-store.js.map +1 -0
- package/dist/db/runtime-state.d.ts +61 -0
- package/dist/db/runtime-state.d.ts.map +1 -0
- package/dist/db/runtime-state.js +104 -0
- package/dist/db/runtime-state.js.map +1 -0
- package/dist/db/schema.d.ts +4 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +1338 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/sot-bindings-store.d.ts +41 -0
- package/dist/db/sot-bindings-store.d.ts.map +1 -0
- package/dist/db/sot-bindings-store.js +64 -0
- package/dist/db/sot-bindings-store.js.map +1 -0
- package/dist/db/test-schemas.d.ts +23 -0
- package/dist/db/test-schemas.d.ts.map +1 -0
- package/dist/db/test-schemas.js +111 -0
- package/dist/db/test-schemas.js.map +1 -0
- package/dist/db/voice-transcripts-store.d.ts +28 -0
- package/dist/db/voice-transcripts-store.d.ts.map +1 -0
- package/dist/db/voice-transcripts-store.js +43 -0
- package/dist/db/voice-transcripts-store.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2913 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +7 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +32 -0
- package/dist/init.js.map +1 -0
- package/dist/log-buffer.d.ts +71 -0
- package/dist/log-buffer.d.ts.map +1 -0
- package/dist/log-buffer.js +201 -0
- package/dist/log-buffer.js.map +1 -0
- package/dist/logging.d.ts +5 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +130 -0
- package/dist/logging.js.map +1 -0
- package/dist/management-rules.d.ts +2 -0
- package/dist/management-rules.d.ts.map +1 -0
- package/dist/management-rules.js +62 -0
- package/dist/management-rules.js.map +1 -0
- package/dist/messaging/constants.d.ts +33 -0
- package/dist/messaging/constants.d.ts.map +1 -0
- package/dist/messaging/constants.js +52 -0
- package/dist/messaging/constants.js.map +1 -0
- package/dist/messaging/magic-phrase.d.ts +16 -0
- package/dist/messaging/magic-phrase.d.ts.map +1 -0
- package/dist/messaging/magic-phrase.js +103 -0
- package/dist/messaging/magic-phrase.js.map +1 -0
- package/dist/messaging/owner-channels.d.ts +20 -0
- package/dist/messaging/owner-channels.d.ts.map +1 -0
- package/dist/messaging/owner-channels.js +41 -0
- package/dist/messaging/owner-channels.js.map +1 -0
- package/dist/observers/calendar-poller.d.ts +51 -0
- package/dist/observers/calendar-poller.d.ts.map +1 -0
- package/dist/observers/calendar-poller.js +128 -0
- package/dist/observers/calendar-poller.js.map +1 -0
- package/dist/observers/context-index-reconciler-observer.d.ts +72 -0
- package/dist/observers/context-index-reconciler-observer.d.ts.map +1 -0
- package/dist/observers/context-index-reconciler-observer.js +253 -0
- package/dist/observers/context-index-reconciler-observer.js.map +1 -0
- package/dist/observers/delegated-probe-observer.d.ts +83 -0
- package/dist/observers/delegated-probe-observer.d.ts.map +1 -0
- package/dist/observers/delegated-probe-observer.js +237 -0
- package/dist/observers/delegated-probe-observer.js.map +1 -0
- package/dist/observers/delegated-sync-worker.d.ts +375 -0
- package/dist/observers/delegated-sync-worker.d.ts.map +1 -0
- package/dist/observers/delegated-sync-worker.js +1087 -0
- package/dist/observers/delegated-sync-worker.js.map +1 -0
- package/dist/observers/entity-mirror-observer.d.ts +55 -0
- package/dist/observers/entity-mirror-observer.d.ts.map +1 -0
- package/dist/observers/entity-mirror-observer.js +73 -0
- package/dist/observers/entity-mirror-observer.js.map +1 -0
- package/dist/observers/git-delegated-cron.d.ts +41 -0
- package/dist/observers/git-delegated-cron.d.ts.map +1 -0
- package/dist/observers/git-delegated-cron.js +159 -0
- package/dist/observers/git-delegated-cron.js.map +1 -0
- package/dist/observers/git-event-classifier.d.ts +52 -0
- package/dist/observers/git-event-classifier.d.ts.map +1 -0
- package/dist/observers/git-event-classifier.js +70 -0
- package/dist/observers/git-event-classifier.js.map +1 -0
- package/dist/observers/git-watcher.d.ts +162 -0
- package/dist/observers/git-watcher.d.ts.map +1 -0
- package/dist/observers/git-watcher.js +768 -0
- package/dist/observers/git-watcher.js.map +1 -0
- package/dist/observers/github-poller-classifier.d.ts +101 -0
- package/dist/observers/github-poller-classifier.d.ts.map +1 -0
- package/dist/observers/github-poller-classifier.js +199 -0
- package/dist/observers/github-poller-classifier.js.map +1 -0
- package/dist/observers/github-poller.d.ts +291 -0
- package/dist/observers/github-poller.d.ts.map +1 -0
- package/dist/observers/github-poller.js +609 -0
- package/dist/observers/github-poller.js.map +1 -0
- package/dist/observers/imminent-event-scheduler.d.ts +34 -0
- package/dist/observers/imminent-event-scheduler.d.ts.map +1 -0
- package/dist/observers/imminent-event-scheduler.js +125 -0
- package/dist/observers/imminent-event-scheduler.js.map +1 -0
- package/dist/observers/mail-poller.d.ts +133 -0
- package/dist/observers/mail-poller.d.ts.map +1 -0
- package/dist/observers/mail-poller.js +563 -0
- package/dist/observers/mail-poller.js.map +1 -0
- package/dist/observers/mail-reconciliation.d.ts +87 -0
- package/dist/observers/mail-reconciliation.d.ts.map +1 -0
- package/dist/observers/mail-reconciliation.js +241 -0
- package/dist/observers/mail-reconciliation.js.map +1 -0
- package/dist/observers/manager.d.ts +67 -0
- package/dist/observers/manager.d.ts.map +1 -0
- package/dist/observers/manager.js +136 -0
- package/dist/observers/manager.js.map +1 -0
- package/dist/observers/notion-poller.d.ts +43 -0
- package/dist/observers/notion-poller.d.ts.map +1 -0
- package/dist/observers/notion-poller.js +184 -0
- package/dist/observers/notion-poller.js.map +1 -0
- package/dist/observers/observation-summarizer/index.d.ts +13 -0
- package/dist/observers/observation-summarizer/index.d.ts.map +1 -0
- package/dist/observers/observation-summarizer/index.js +13 -0
- package/dist/observers/observation-summarizer/index.js.map +1 -0
- package/dist/observers/observation-summarizer/pre-filter.d.ts +62 -0
- package/dist/observers/observation-summarizer/pre-filter.d.ts.map +1 -0
- package/dist/observers/observation-summarizer/pre-filter.js +189 -0
- package/dist/observers/observation-summarizer/pre-filter.js.map +1 -0
- package/dist/observers/observation-summarizer/response-parser.d.ts +30 -0
- package/dist/observers/observation-summarizer/response-parser.d.ts.map +1 -0
- package/dist/observers/observation-summarizer/response-parser.js +106 -0
- package/dist/observers/observation-summarizer/response-parser.js.map +1 -0
- package/dist/observers/observation-summarizer/summarizer-client.d.ts +83 -0
- package/dist/observers/observation-summarizer/summarizer-client.d.ts.map +1 -0
- package/dist/observers/observation-summarizer/summarizer-client.js +185 -0
- package/dist/observers/observation-summarizer/summarizer-client.js.map +1 -0
- package/dist/observers/observation-summarizer/summarizer-prompts.d.ts +51 -0
- package/dist/observers/observation-summarizer/summarizer-prompts.d.ts.map +1 -0
- package/dist/observers/observation-summarizer/summarizer-prompts.js +286 -0
- package/dist/observers/observation-summarizer/summarizer-prompts.js.map +1 -0
- package/dist/observers/observation-summarizer/worker.d.ts +106 -0
- package/dist/observers/observation-summarizer/worker.d.ts.map +1 -0
- package/dist/observers/observation-summarizer/worker.js +311 -0
- package/dist/observers/observation-summarizer/worker.js.map +1 -0
- package/dist/observers/obsidian-watcher.d.ts +90 -0
- package/dist/observers/obsidian-watcher.d.ts.map +1 -0
- package/dist/observers/obsidian-watcher.js +166 -0
- package/dist/observers/obsidian-watcher.js.map +1 -0
- package/dist/observers/primary-vault-watcher.d.ts +73 -0
- package/dist/observers/primary-vault-watcher.d.ts.map +1 -0
- package/dist/observers/primary-vault-watcher.js +115 -0
- package/dist/observers/primary-vault-watcher.js.map +1 -0
- package/dist/observers/repository-management-cron.d.ts +70 -0
- package/dist/observers/repository-management-cron.d.ts.map +1 -0
- package/dist/observers/repository-management-cron.js +166 -0
- package/dist/observers/repository-management-cron.js.map +1 -0
- package/dist/observers/skill-curation-walker.d.ts +33 -0
- package/dist/observers/skill-curation-walker.d.ts.map +1 -0
- package/dist/observers/skill-curation-walker.js +216 -0
- package/dist/observers/skill-curation-walker.js.map +1 -0
- package/dist/safety/absolute-block-audit.d.ts +22 -0
- package/dist/safety/absolute-block-audit.d.ts.map +1 -0
- package/dist/safety/absolute-block-audit.js +32 -0
- package/dist/safety/absolute-block-audit.js.map +1 -0
- package/dist/safety/agent-write-tracker.d.ts +42 -0
- package/dist/safety/agent-write-tracker.d.ts.map +1 -0
- package/dist/safety/agent-write-tracker.js +82 -0
- package/dist/safety/agent-write-tracker.js.map +1 -0
- package/dist/safety/always-disallowed.d.ts +66 -0
- package/dist/safety/always-disallowed.d.ts.map +1 -0
- package/dist/safety/always-disallowed.js +347 -0
- package/dist/safety/always-disallowed.js.map +1 -0
- package/dist/safety/audit.d.ts +118 -0
- package/dist/safety/audit.d.ts.map +1 -0
- package/dist/safety/audit.js +324 -0
- package/dist/safety/audit.js.map +1 -0
- package/dist/safety/integration-write-tracker.d.ts +58 -0
- package/dist/safety/integration-write-tracker.d.ts.map +1 -0
- package/dist/safety/integration-write-tracker.js +41 -0
- package/dist/safety/integration-write-tracker.js.map +1 -0
- package/dist/safety/risk-classifier.d.ts +65 -0
- package/dist/safety/risk-classifier.d.ts.map +1 -0
- package/dist/safety/risk-classifier.js +763 -0
- package/dist/safety/risk-classifier.js.map +1 -0
- package/dist/scheduler/hourly-check-gate.d.ts +73 -0
- package/dist/scheduler/hourly-check-gate.d.ts.map +1 -0
- package/dist/scheduler/hourly-check-gate.js +128 -0
- package/dist/scheduler/hourly-check-gate.js.map +1 -0
- package/dist/secrets/backend-api-key-env.d.ts +104 -0
- package/dist/secrets/backend-api-key-env.d.ts.map +1 -0
- package/dist/secrets/backend-api-key-env.js +197 -0
- package/dist/secrets/backend-api-key-env.js.map +1 -0
- package/dist/secrets/codex-home-materializer.d.ts +35 -0
- package/dist/secrets/codex-home-materializer.d.ts.map +1 -0
- package/dist/secrets/codex-home-materializer.js +76 -0
- package/dist/secrets/codex-home-materializer.js.map +1 -0
- package/dist/secrets/encrypted-blob-store.d.ts +20 -0
- package/dist/secrets/encrypted-blob-store.d.ts.map +1 -0
- package/dist/secrets/encrypted-blob-store.js +80 -0
- package/dist/secrets/encrypted-blob-store.js.map +1 -0
- package/dist/secrets/platform-secret-store.d.ts +17 -0
- package/dist/secrets/platform-secret-store.d.ts.map +1 -0
- package/dist/secrets/platform-secret-store.js +37 -0
- package/dist/secrets/platform-secret-store.js.map +1 -0
- package/dist/secrets/redaction.d.ts +2 -0
- package/dist/secrets/redaction.d.ts.map +1 -0
- package/dist/secrets/redaction.js +2 -0
- package/dist/secrets/redaction.js.map +1 -0
- package/dist/secrets/secret-broker.d.ts +61 -0
- package/dist/secrets/secret-broker.d.ts.map +1 -0
- package/dist/secrets/secret-broker.js +160 -0
- package/dist/secrets/secret-broker.js.map +1 -0
- package/dist/secrets/secret-names.d.ts +34 -0
- package/dist/secrets/secret-names.d.ts.map +1 -0
- package/dist/secrets/secret-names.js +39 -0
- package/dist/secrets/secret-names.js.map +1 -0
- package/dist/secrets/secret-store.d.ts +8 -0
- package/dist/secrets/secret-store.d.ts.map +1 -0
- package/dist/secrets/secret-store.js +2 -0
- package/dist/secrets/secret-store.js.map +1 -0
- package/dist/secrets/types.d.ts +7 -0
- package/dist/secrets/types.d.ts.map +1 -0
- package/dist/secrets/types.js +2 -0
- package/dist/secrets/types.js.map +1 -0
- package/dist/services/apple-calendar/caldav-client.d.ts +48 -0
- package/dist/services/apple-calendar/caldav-client.d.ts.map +1 -0
- package/dist/services/apple-calendar/caldav-client.js +86 -0
- package/dist/services/apple-calendar/caldav-client.js.map +1 -0
- package/dist/services/apple-calendar/caldav-codec.d.ts +67 -0
- package/dist/services/apple-calendar/caldav-codec.d.ts.map +1 -0
- package/dist/services/apple-calendar/caldav-codec.js +341 -0
- package/dist/services/apple-calendar/caldav-codec.js.map +1 -0
- package/dist/services/apple-calendar/index.d.ts +3 -0
- package/dist/services/apple-calendar/index.d.ts.map +1 -0
- package/dist/services/apple-calendar/index.js +2 -0
- package/dist/services/apple-calendar/index.js.map +1 -0
- package/dist/services/apple-calendar/service.d.ts +75 -0
- package/dist/services/apple-calendar/service.d.ts.map +1 -0
- package/dist/services/apple-calendar/service.js +374 -0
- package/dist/services/apple-calendar/service.js.map +1 -0
- package/dist/services/apple-calendar/types.d.ts +78 -0
- package/dist/services/apple-calendar/types.d.ts.map +1 -0
- package/dist/services/apple-calendar/types.js +17 -0
- package/dist/services/apple-calendar/types.js.map +1 -0
- package/dist/services/attachments/hardlink.d.ts +11 -0
- package/dist/services/attachments/hardlink.d.ts.map +1 -0
- package/dist/services/attachments/hardlink.js +56 -0
- package/dist/services/attachments/hardlink.js.map +1 -0
- package/dist/services/attachments/sanitize.d.ts +21 -0
- package/dist/services/attachments/sanitize.d.ts.map +1 -0
- package/dist/services/attachments/sanitize.js +128 -0
- package/dist/services/attachments/sanitize.js.map +1 -0
- package/dist/services/attachments/store.d.ts +146 -0
- package/dist/services/attachments/store.d.ts.map +1 -0
- package/dist/services/attachments/store.js +477 -0
- package/dist/services/attachments/store.js.map +1 -0
- package/dist/services/calendar/outlook/graph-calendar-client.d.ts +114 -0
- package/dist/services/calendar/outlook/graph-calendar-client.d.ts.map +1 -0
- package/dist/services/calendar/outlook/graph-calendar-client.js +146 -0
- package/dist/services/calendar/outlook/graph-calendar-client.js.map +1 -0
- package/dist/services/calendar.d.ts +115 -0
- package/dist/services/calendar.d.ts.map +1 -0
- package/dist/services/calendar.js +281 -0
- package/dist/services/calendar.js.map +1 -0
- package/dist/services/delegated-backend-invoker.d.ts +414 -0
- package/dist/services/delegated-backend-invoker.d.ts.map +1 -0
- package/dist/services/delegated-backend-invoker.js +2372 -0
- package/dist/services/delegated-backend-invoker.js.map +1 -0
- package/dist/services/delegated-proxy-config.d.ts +93 -0
- package/dist/services/delegated-proxy-config.d.ts.map +1 -0
- package/dist/services/delegated-proxy-config.js +98 -0
- package/dist/services/delegated-proxy-config.js.map +1 -0
- package/dist/services/delegated-task-result-cache.d.ts +176 -0
- package/dist/services/delegated-task-result-cache.d.ts.map +1 -0
- package/dist/services/delegated-task-result-cache.js +0 -0
- package/dist/services/delegated-task-result-cache.js.map +1 -0
- package/dist/services/delegated-task-runtime.d.ts +346 -0
- package/dist/services/delegated-task-runtime.d.ts.map +1 -0
- package/dist/services/delegated-task-runtime.js +589 -0
- package/dist/services/delegated-task-runtime.js.map +1 -0
- package/dist/services/delegated-task-session-pool.d.ts +182 -0
- package/dist/services/delegated-task-session-pool.d.ts.map +1 -0
- package/dist/services/delegated-task-session-pool.js +292 -0
- package/dist/services/delegated-task-session-pool.js.map +1 -0
- package/dist/services/delegated-tool-runtime.d.ts +50 -0
- package/dist/services/delegated-tool-runtime.d.ts.map +1 -0
- package/dist/services/delegated-tool-runtime.js +120 -0
- package/dist/services/delegated-tool-runtime.js.map +1 -0
- package/dist/services/fts5.d.ts +40 -0
- package/dist/services/fts5.d.ts.map +1 -0
- package/dist/services/fts5.js +54 -0
- package/dist/services/fts5.js.map +1 -0
- package/dist/services/git-account-registry.d.ts +164 -0
- package/dist/services/git-account-registry.d.ts.map +1 -0
- package/dist/services/git-account-registry.js +297 -0
- package/dist/services/git-account-registry.js.map +1 -0
- package/dist/services/github.d.ts +49 -0
- package/dist/services/github.d.ts.map +1 -0
- package/dist/services/github.js +123 -0
- package/dist/services/github.js.map +1 -0
- package/dist/services/gmail-classifier.d.ts +62 -0
- package/dist/services/gmail-classifier.d.ts.map +1 -0
- package/dist/services/gmail-classifier.js +221 -0
- package/dist/services/gmail-classifier.js.map +1 -0
- package/dist/services/gmail.d.ts +192 -0
- package/dist/services/gmail.d.ts.map +1 -0
- package/dist/services/gmail.js +678 -0
- package/dist/services/gmail.js.map +1 -0
- package/dist/services/google-auth.d.ts +16 -0
- package/dist/services/google-auth.d.ts.map +1 -0
- package/dist/services/google-auth.js +37 -0
- package/dist/services/google-auth.js.map +1 -0
- package/dist/services/google-maps.d.ts +35 -0
- package/dist/services/google-maps.d.ts.map +1 -0
- package/dist/services/google-maps.js +82 -0
- package/dist/services/google-maps.js.map +1 -0
- package/dist/services/integrations/extract-write-item-id.d.ts +64 -0
- package/dist/services/integrations/extract-write-item-id.d.ts.map +1 -0
- package/dist/services/integrations/extract-write-item-id.js +188 -0
- package/dist/services/integrations/extract-write-item-id.js.map +1 -0
- package/dist/services/integrations/reconcile.d.ts +136 -0
- package/dist/services/integrations/reconcile.d.ts.map +1 -0
- package/dist/services/integrations/reconcile.js +218 -0
- package/dist/services/integrations/reconcile.js.map +1 -0
- package/dist/services/integrations/snapshot-partitions.d.ts +40 -0
- package/dist/services/integrations/snapshot-partitions.d.ts.map +1 -0
- package/dist/services/integrations/snapshot-partitions.js +113 -0
- package/dist/services/integrations/snapshot-partitions.js.map +1 -0
- package/dist/services/journal/render.d.ts +15 -0
- package/dist/services/journal/render.d.ts.map +1 -0
- package/dist/services/journal/render.js +17 -0
- package/dist/services/journal/render.js.map +1 -0
- package/dist/services/journal/writer.d.ts +26 -0
- package/dist/services/journal/writer.d.ts.map +1 -0
- package/dist/services/journal/writer.js +50 -0
- package/dist/services/journal/writer.js.map +1 -0
- package/dist/services/mail/account-registry.d.ts +208 -0
- package/dist/services/mail/account-registry.d.ts.map +1 -0
- package/dist/services/mail/account-registry.js +554 -0
- package/dist/services/mail/account-registry.js.map +1 -0
- package/dist/services/mail/gmail/auth-failure-classifier.d.ts +24 -0
- package/dist/services/mail/gmail/auth-failure-classifier.d.ts.map +1 -0
- package/dist/services/mail/gmail/auth-failure-classifier.js +67 -0
- package/dist/services/mail/gmail/auth-failure-classifier.js.map +1 -0
- package/dist/services/mail/gmail/gmail-provider.d.ts +58 -0
- package/dist/services/mail/gmail/gmail-provider.d.ts.map +1 -0
- package/dist/services/mail/gmail/gmail-provider.js +434 -0
- package/dist/services/mail/gmail/gmail-provider.js.map +1 -0
- package/dist/services/mail/gmail/legacy-row.d.ts +24 -0
- package/dist/services/mail/gmail/legacy-row.d.ts.map +1 -0
- package/dist/services/mail/gmail/legacy-row.js +71 -0
- package/dist/services/mail/gmail/legacy-row.js.map +1 -0
- package/dist/services/mail/gmail/poll-cursor.d.ts +12 -0
- package/dist/services/mail/gmail/poll-cursor.d.ts.map +1 -0
- package/dist/services/mail/gmail/poll-cursor.js +32 -0
- package/dist/services/mail/gmail/poll-cursor.js.map +1 -0
- package/dist/services/mail/html-to-plaintext.d.ts +27 -0
- package/dist/services/mail/html-to-plaintext.d.ts.map +1 -0
- package/dist/services/mail/html-to-plaintext.js +163 -0
- package/dist/services/mail/html-to-plaintext.js.map +1 -0
- package/dist/services/mail/imap/app-password.d.ts +27 -0
- package/dist/services/mail/imap/app-password.d.ts.map +1 -0
- package/dist/services/mail/imap/app-password.js +86 -0
- package/dist/services/mail/imap/app-password.js.map +1 -0
- package/dist/services/mail/imap/auth-failure-classifier.d.ts +21 -0
- package/dist/services/mail/imap/auth-failure-classifier.d.ts.map +1 -0
- package/dist/services/mail/imap/auth-failure-classifier.js +54 -0
- package/dist/services/mail/imap/auth-failure-classifier.js.map +1 -0
- package/dist/services/mail/imap/capabilities.d.ts +30 -0
- package/dist/services/mail/imap/capabilities.d.ts.map +1 -0
- package/dist/services/mail/imap/capabilities.js +70 -0
- package/dist/services/mail/imap/capabilities.js.map +1 -0
- package/dist/services/mail/imap/client.d.ts +15 -0
- package/dist/services/mail/imap/client.d.ts.map +1 -0
- package/dist/services/mail/imap/client.js +60 -0
- package/dist/services/mail/imap/client.js.map +1 -0
- package/dist/services/mail/imap/cursor.d.ts +19 -0
- package/dist/services/mail/imap/cursor.d.ts.map +1 -0
- package/dist/services/mail/imap/cursor.js +47 -0
- package/dist/services/mail/imap/cursor.js.map +1 -0
- package/dist/services/mail/imap/folder-resolver.d.ts +24 -0
- package/dist/services/mail/imap/folder-resolver.d.ts.map +1 -0
- package/dist/services/mail/imap/folder-resolver.js +58 -0
- package/dist/services/mail/imap/folder-resolver.js.map +1 -0
- package/dist/services/mail/imap/icloud-provider.d.ts +5 -0
- package/dist/services/mail/imap/icloud-provider.d.ts.map +1 -0
- package/dist/services/mail/imap/icloud-provider.js +5 -0
- package/dist/services/mail/imap/icloud-provider.js.map +1 -0
- package/dist/services/mail/imap/imap-provider-base.d.ts +173 -0
- package/dist/services/mail/imap/imap-provider-base.d.ts.map +1 -0
- package/dist/services/mail/imap/imap-provider-base.js +1004 -0
- package/dist/services/mail/imap/imap-provider-base.js.map +1 -0
- package/dist/services/mail/imap/query-translator.d.ts +13 -0
- package/dist/services/mail/imap/query-translator.d.ts.map +1 -0
- package/dist/services/mail/imap/query-translator.js +114 -0
- package/dist/services/mail/imap/query-translator.js.map +1 -0
- package/dist/services/mail/imap/reconcile-planner.d.ts +56 -0
- package/dist/services/mail/imap/reconcile-planner.d.ts.map +1 -0
- package/dist/services/mail/imap/reconcile-planner.js +52 -0
- package/dist/services/mail/imap/reconcile-planner.js.map +1 -0
- package/dist/services/mail/imap/reply-mime.d.ts +24 -0
- package/dist/services/mail/imap/reply-mime.d.ts.map +1 -0
- package/dist/services/mail/imap/reply-mime.js +77 -0
- package/dist/services/mail/imap/reply-mime.js.map +1 -0
- package/dist/services/mail/imap/yahoo-provider.d.ts +5 -0
- package/dist/services/mail/imap/yahoo-provider.d.ts.map +1 -0
- package/dist/services/mail/imap/yahoo-provider.js +5 -0
- package/dist/services/mail/imap/yahoo-provider.js.map +1 -0
- package/dist/services/mail/mail-search.d.ts +35 -0
- package/dist/services/mail/mail-search.d.ts.map +1 -0
- package/dist/services/mail/mail-search.js +59 -0
- package/dist/services/mail/mail-search.js.map +1 -0
- package/dist/services/mail/outlook/auth-failure-classifier.d.ts +38 -0
- package/dist/services/mail/outlook/auth-failure-classifier.d.ts.map +1 -0
- package/dist/services/mail/outlook/auth-failure-classifier.js +91 -0
- package/dist/services/mail/outlook/auth-failure-classifier.js.map +1 -0
- package/dist/services/mail/outlook/client-config.d.ts +34 -0
- package/dist/services/mail/outlook/client-config.d.ts.map +1 -0
- package/dist/services/mail/outlook/client-config.js +58 -0
- package/dist/services/mail/outlook/client-config.js.map +1 -0
- package/dist/services/mail/outlook/delta-cursor.d.ts +66 -0
- package/dist/services/mail/outlook/delta-cursor.d.ts.map +1 -0
- package/dist/services/mail/outlook/delta-cursor.js +85 -0
- package/dist/services/mail/outlook/delta-cursor.js.map +1 -0
- package/dist/services/mail/outlook/graph-client.d.ts +98 -0
- package/dist/services/mail/outlook/graph-client.d.ts.map +1 -0
- package/dist/services/mail/outlook/graph-client.js +198 -0
- package/dist/services/mail/outlook/graph-client.js.map +1 -0
- package/dist/services/mail/outlook/msal-app-factory.d.ts +20 -0
- package/dist/services/mail/outlook/msal-app-factory.d.ts.map +1 -0
- package/dist/services/mail/outlook/msal-app-factory.js +62 -0
- package/dist/services/mail/outlook/msal-app-factory.js.map +1 -0
- package/dist/services/mail/outlook/msal-cache-plugin.d.ts +19 -0
- package/dist/services/mail/outlook/msal-cache-plugin.d.ts.map +1 -0
- package/dist/services/mail/outlook/msal-cache-plugin.js +30 -0
- package/dist/services/mail/outlook/msal-cache-plugin.js.map +1 -0
- package/dist/services/mail/outlook/oauth-device-code.d.ts +26 -0
- package/dist/services/mail/outlook/oauth-device-code.d.ts.map +1 -0
- package/dist/services/mail/outlook/oauth-device-code.js +32 -0
- package/dist/services/mail/outlook/oauth-device-code.js.map +1 -0
- package/dist/services/mail/outlook/oauth-loopback.d.ts +41 -0
- package/dist/services/mail/outlook/oauth-loopback.d.ts.map +1 -0
- package/dist/services/mail/outlook/oauth-loopback.js +223 -0
- package/dist/services/mail/outlook/oauth-loopback.js.map +1 -0
- package/dist/services/mail/outlook/outlook-provider.d.ts +100 -0
- package/dist/services/mail/outlook/outlook-provider.d.ts.map +1 -0
- package/dist/services/mail/outlook/outlook-provider.js +619 -0
- package/dist/services/mail/outlook/outlook-provider.js.map +1 -0
- package/dist/services/mail/outlook/query-translator.d.ts +10 -0
- package/dist/services/mail/outlook/query-translator.d.ts.map +1 -0
- package/dist/services/mail/outlook/query-translator.js +103 -0
- package/dist/services/mail/outlook/query-translator.js.map +1 -0
- package/dist/services/mail/provider.d.ts +267 -0
- package/dist/services/mail/provider.d.ts.map +1 -0
- package/dist/services/mail/provider.js +34 -0
- package/dist/services/mail/provider.js.map +1 -0
- package/dist/services/mail/query-utils.d.ts +13 -0
- package/dist/services/mail/query-utils.d.ts.map +1 -0
- package/dist/services/mail/query-utils.js +18 -0
- package/dist/services/mail/query-utils.js.map +1 -0
- package/dist/services/mail-classifier.d.ts +25 -0
- package/dist/services/mail-classifier.d.ts.map +1 -0
- package/dist/services/mail-classifier.js +52 -0
- package/dist/services/mail-classifier.js.map +1 -0
- package/dist/services/mail-ingestion.d.ts +139 -0
- package/dist/services/mail-ingestion.d.ts.map +1 -0
- package/dist/services/mail-ingestion.js +223 -0
- package/dist/services/mail-ingestion.js.map +1 -0
- package/dist/services/mcp/auto-probe.d.ts +76 -0
- package/dist/services/mcp/auto-probe.d.ts.map +1 -0
- package/dist/services/mcp/auto-probe.js +147 -0
- package/dist/services/mcp/auto-probe.js.map +1 -0
- package/dist/services/mcp/generators/claude.d.ts +18 -0
- package/dist/services/mcp/generators/claude.d.ts.map +1 -0
- package/dist/services/mcp/generators/claude.js +90 -0
- package/dist/services/mcp/generators/claude.js.map +1 -0
- package/dist/services/mcp/generators/codex.d.ts +22 -0
- package/dist/services/mcp/generators/codex.d.ts.map +1 -0
- package/dist/services/mcp/generators/codex.js +102 -0
- package/dist/services/mcp/generators/codex.js.map +1 -0
- package/dist/services/mcp/generators/gemini.d.ts +20 -0
- package/dist/services/mcp/generators/gemini.d.ts.map +1 -0
- package/dist/services/mcp/generators/gemini.js +97 -0
- package/dist/services/mcp/generators/gemini.js.map +1 -0
- package/dist/services/mcp/generators/index.d.ts +20 -0
- package/dist/services/mcp/generators/index.d.ts.map +1 -0
- package/dist/services/mcp/generators/index.js +29 -0
- package/dist/services/mcp/generators/index.js.map +1 -0
- package/dist/services/mcp/generators/types.d.ts +47 -0
- package/dist/services/mcp/generators/types.d.ts.map +1 -0
- package/dist/services/mcp/generators/types.js +40 -0
- package/dist/services/mcp/generators/types.js.map +1 -0
- package/dist/services/mcp/probe.d.ts +31 -0
- package/dist/services/mcp/probe.d.ts.map +1 -0
- package/dist/services/mcp/probe.js +437 -0
- package/dist/services/mcp/probe.js.map +1 -0
- package/dist/services/mcp/registry.d.ts +84 -0
- package/dist/services/mcp/registry.d.ts.map +1 -0
- package/dist/services/mcp/registry.js +387 -0
- package/dist/services/mcp/registry.js.map +1 -0
- package/dist/services/mcp/risk.d.ts +82 -0
- package/dist/services/mcp/risk.d.ts.map +1 -0
- package/dist/services/mcp/risk.js +126 -0
- package/dist/services/mcp/risk.js.map +1 -0
- package/dist/services/mcp/session-materializer.d.ts +123 -0
- package/dist/services/mcp/session-materializer.d.ts.map +1 -0
- package/dist/services/mcp/session-materializer.js +361 -0
- package/dist/services/mcp/session-materializer.js.map +1 -0
- package/dist/services/mcp/tool-audit.d.ts +53 -0
- package/dist/services/mcp/tool-audit.d.ts.map +1 -0
- package/dist/services/mcp/tool-audit.js +74 -0
- package/dist/services/mcp/tool-audit.js.map +1 -0
- package/dist/services/mcp/types.d.ts +88 -0
- package/dist/services/mcp/types.d.ts.map +1 -0
- package/dist/services/mcp/types.js +94 -0
- package/dist/services/mcp/types.js.map +1 -0
- package/dist/services/notion.d.ts +134 -0
- package/dist/services/notion.d.ts.map +1 -0
- package/dist/services/notion.js +350 -0
- package/dist/services/notion.js.map +1 -0
- package/dist/services/obsidian.d.ts +116 -0
- package/dist/services/obsidian.d.ts.map +1 -0
- package/dist/services/obsidian.js +305 -0
- package/dist/services/obsidian.js.map +1 -0
- package/dist/services/service-registry.d.ts +31 -0
- package/dist/services/service-registry.d.ts.map +1 -0
- package/dist/services/service-registry.js +15 -0
- package/dist/services/service-registry.js.map +1 -0
- package/dist/services/voice/transcriber-impl.d.ts +15 -0
- package/dist/services/voice/transcriber-impl.d.ts.map +1 -0
- package/dist/services/voice/transcriber-impl.js +129 -0
- package/dist/services/voice/transcriber-impl.js.map +1 -0
- package/dist/services/voice/transcriber.d.ts +117 -0
- package/dist/services/voice/transcriber.d.ts.map +1 -0
- package/dist/services/voice/transcriber.js +201 -0
- package/dist/services/voice/transcriber.js.map +1 -0
- package/dist/settings/runtime-settings.d.ts +232 -0
- package/dist/settings/runtime-settings.d.ts.map +1 -0
- package/dist/settings/runtime-settings.js +769 -0
- package/dist/settings/runtime-settings.js.map +1 -0
- package/dist/settings/settings-store.d.ts +13 -0
- package/dist/settings/settings-store.d.ts.map +1 -0
- package/dist/settings/settings-store.js +87 -0
- package/dist/settings/settings-store.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,759 @@
|
|
|
1
|
+
import { backendHasIntegrationConnector, delegatedIntegrationsForProcessKey, getDefaultTierForProcessKey, isCustomRoutineKey, isProcessKey, resolveProcessKey, TIER_LOCKED_PROCESS_KEYS, } from "@aitne/shared";
|
|
2
|
+
import { readIntegrations } from "../../db/integrations-store.js";
|
|
3
|
+
import { createLogger } from "../../logging.js";
|
|
4
|
+
import { BackendDecisiveFailure, BackendQuotaError, } from "../agent-core.js";
|
|
5
|
+
import { DEFAULT_CLAUDE_HIGH_MODEL, DEFAULT_CLAUDE_LITE_MODEL, DEFAULT_CLAUDE_MEDIUM_MODEL, findRegisteredModel, getModelsForBackend, } from "./model-registry.js";
|
|
6
|
+
import { readCachedAuthStatus, recordReactiveAuthFailure, recordReactiveAuthSuccess, } from "./auth-health-monitor.js";
|
|
7
|
+
const logger = createLogger("backend-router");
|
|
8
|
+
/**
|
|
9
|
+
* Per-process maxTurns caps, applied when no DB-level process_backend_config
|
|
10
|
+
* override exists. Values are set at P95+ of observed turn distributions
|
|
11
|
+
* (see docs/design/appendices/token-efficiency-audit.md §1C).
|
|
12
|
+
*/
|
|
13
|
+
const PROCESS_MAX_TURNS = {
|
|
14
|
+
"routine.morning_routine": 50, // avg 17.7, max observed 35 — 300 was 8.5x max
|
|
15
|
+
"routine.hourly_check": 30, // P90=25, pad for complex observation sets
|
|
16
|
+
"routine.roadmap_refresh": 25, // single observed run was 13 turns
|
|
17
|
+
"message.dm": 35, // most <15, allow long conversations
|
|
18
|
+
};
|
|
19
|
+
const NOTIFICATION_DEDUPE_WINDOW_MS = 2 * 60 * 60 * 1000;
|
|
20
|
+
/**
|
|
21
|
+
* One-line root-cause summary embedded in `BackendRouterHandledError.message`
|
|
22
|
+
* so operators reading dashboard / log output see *why* the backend failed
|
|
23
|
+
* without having to open the JSON payload. Format:
|
|
24
|
+
* - quota: `quota:<originalCode> — <inner message>`
|
|
25
|
+
* - decisive: `<kind> — <inner cause message>` (e.g. `auth — 401 expired`)
|
|
26
|
+
*/
|
|
27
|
+
function describeBackendFailure(failure) {
|
|
28
|
+
if (failure instanceof BackendQuotaError) {
|
|
29
|
+
return `quota:${failure.originalCode} — ${failure.message}`;
|
|
30
|
+
}
|
|
31
|
+
const innerMessage = failure.cause instanceof Error
|
|
32
|
+
? failure.cause.message
|
|
33
|
+
: failure.cause !== undefined
|
|
34
|
+
? String(failure.cause)
|
|
35
|
+
: failure.message;
|
|
36
|
+
return `${failure.kind} — ${innerMessage}`;
|
|
37
|
+
}
|
|
38
|
+
export class BackendRouterHandledError extends Error {
|
|
39
|
+
cause;
|
|
40
|
+
mainFailure;
|
|
41
|
+
fallbackFailure;
|
|
42
|
+
constructor(message, cause, mainFailure, fallbackFailure = null) {
|
|
43
|
+
super(message);
|
|
44
|
+
this.cause = cause;
|
|
45
|
+
this.mainFailure = mainFailure;
|
|
46
|
+
this.fallbackFailure = fallbackFailure;
|
|
47
|
+
this.name = "BackendRouterHandledError";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export class BackendRouter {
|
|
51
|
+
db;
|
|
52
|
+
config;
|
|
53
|
+
notifier;
|
|
54
|
+
authTelemetry;
|
|
55
|
+
prepareSessionDir;
|
|
56
|
+
cores;
|
|
57
|
+
hasProcessConfigTable;
|
|
58
|
+
hasBackendDefaultsTable;
|
|
59
|
+
notificationDedup = new Map();
|
|
60
|
+
constructor(db, config, cores, notifier, authTelemetry, prepareSessionDir) {
|
|
61
|
+
this.db = db;
|
|
62
|
+
this.config = config;
|
|
63
|
+
this.notifier = notifier;
|
|
64
|
+
this.authTelemetry = authTelemetry;
|
|
65
|
+
this.prepareSessionDir = prepareSessionDir;
|
|
66
|
+
this.cores = Object.fromEntries(cores.map((core) => [core.backendId, core]));
|
|
67
|
+
this.hasProcessConfigTable = this.hasTable("process_backend_config");
|
|
68
|
+
this.hasBackendDefaultsTable = this.hasTable("backend_global_defaults");
|
|
69
|
+
}
|
|
70
|
+
async execute(params, streamCallbacks) {
|
|
71
|
+
const binding = params.preResolvedBinding ?? this.resolveBinding(params.event, {
|
|
72
|
+
processKey: params.processKey,
|
|
73
|
+
requestedTier: params.requestedTier,
|
|
74
|
+
...(params.requestedBackendId ? { requestedBackendId: params.requestedBackendId } : {}),
|
|
75
|
+
...(params.requestedModelId ? { requestedModelId: params.requestedModelId } : {}),
|
|
76
|
+
});
|
|
77
|
+
// Phase 3.3 — pre-flight auth cache check. When the main backend's
|
|
78
|
+
// cached auth status is recently confirmed bad, skip straight to the
|
|
79
|
+
// fallback to avoid a doomed subprocess. Only applies when a fallback
|
|
80
|
+
// is available; without one, we fall through to main and let it fail
|
|
81
|
+
// naturally (which triggers self-heal on the next successful execute).
|
|
82
|
+
if (binding.fallback) {
|
|
83
|
+
const preflight = readCachedAuthStatus(this.db, binding.main.backendId, this.config.authPreflightFreshnessMs);
|
|
84
|
+
if (preflight.shouldSkip) {
|
|
85
|
+
logger.warn({
|
|
86
|
+
processKey: binding.processKey,
|
|
87
|
+
backendId: binding.main.backendId,
|
|
88
|
+
cachedStatus: preflight.status,
|
|
89
|
+
fallbackBackendId: binding.fallback.backendId,
|
|
90
|
+
}, "Pre-flight auth check: main backend auth unavailable (cached), routing to fallback");
|
|
91
|
+
this.authTelemetry?.increment(binding.main.backendId, "preflight_skipped_main", "reactive");
|
|
92
|
+
return this.executePreflightFallback(binding, params, streamCallbacks);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const mainCore = this.requireCore(binding.main.backendId);
|
|
96
|
+
const mainWebSearch = this.isWebSearchEnabled(binding.main.backendId);
|
|
97
|
+
try {
|
|
98
|
+
const result = await mainCore.execute({
|
|
99
|
+
prompt: params.prompt,
|
|
100
|
+
context: params.context,
|
|
101
|
+
event: params.event,
|
|
102
|
+
modelId: binding.main.modelId,
|
|
103
|
+
maxTurns: binding.main.maxTurns,
|
|
104
|
+
maxBudgetUsd: binding.main.maxBudgetUsd,
|
|
105
|
+
sessionDir: params.sessionDir,
|
|
106
|
+
processKey: binding.processKey,
|
|
107
|
+
persistSession: params.persistSession,
|
|
108
|
+
conversationHistory: params.conversationHistory,
|
|
109
|
+
webSearchEnabled: mainWebSearch,
|
|
110
|
+
...(params.sessionDbId !== undefined ? { sessionDbId: params.sessionDbId } : {}),
|
|
111
|
+
...(params.turnToken ? { turnToken: params.turnToken } : {}),
|
|
112
|
+
...(params.stagedAttachments && params.stagedAttachments.length > 0
|
|
113
|
+
? { stagedAttachments: params.stagedAttachments }
|
|
114
|
+
: {}),
|
|
115
|
+
...(params.allowedToolsOverride
|
|
116
|
+
? { allowedToolsOverride: params.allowedToolsOverride }
|
|
117
|
+
: {}),
|
|
118
|
+
}, streamCallbacks);
|
|
119
|
+
// Reactive self-heal: a successful execute is authoritative proof the
|
|
120
|
+
// CLI held valid credentials. Bump auth_last_success_at (so the 60-day
|
|
121
|
+
// keepalive sweep tracks real usage) and clear any stale expired/missing
|
|
122
|
+
// cache row without waiting for the dashboard "Check auth" button.
|
|
123
|
+
recordReactiveAuthSuccess(this.db, binding.main.backendId, this.authTelemetry);
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
// Reactive auth-health: persist the failure to the DB cache so
|
|
128
|
+
// pre-flight checks and `/auth status` reflect the real-time state.
|
|
129
|
+
if (error instanceof BackendDecisiveFailure && error.kind === "auth") {
|
|
130
|
+
recordReactiveAuthFailure(this.db, binding.main.backendId, error.cause instanceof Error ? error.cause.message : String(error.cause ?? ""), this.authTelemetry);
|
|
131
|
+
}
|
|
132
|
+
if (!binding.fallback ||
|
|
133
|
+
!(error instanceof BackendDecisiveFailure || error instanceof BackendQuotaError)) {
|
|
134
|
+
if (error instanceof BackendDecisiveFailure || error instanceof BackendQuotaError) {
|
|
135
|
+
await this.handleNoFallbackFailure(params.event, binding.processKey, binding.main, error);
|
|
136
|
+
throw new BackendRouterHandledError(`Backend "${binding.main.backendId}" failed without fallback: ${describeBackendFailure(error)}`, error, error);
|
|
137
|
+
}
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
logger.warn({
|
|
141
|
+
processKey: binding.processKey,
|
|
142
|
+
backendId: binding.main.backendId,
|
|
143
|
+
failureKind: this.describeFailureKind(error),
|
|
144
|
+
fallbackBackendId: binding.fallback.backendId,
|
|
145
|
+
}, "Main backend failed decisively, attempting fallback");
|
|
146
|
+
return this.executeFallbackCore(binding, params, error, streamCallbacks);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async executeResume(params, streamCallbacks) {
|
|
150
|
+
const core = this.requireCore(params.backendId);
|
|
151
|
+
try {
|
|
152
|
+
const result = await core.executeResume({
|
|
153
|
+
sessionId: params.sessionId,
|
|
154
|
+
message: params.message,
|
|
155
|
+
modelId: params.modelId,
|
|
156
|
+
...(params.maxTurns !== undefined ? { maxTurns: params.maxTurns } : {}),
|
|
157
|
+
...(params.maxBudgetUsd !== undefined
|
|
158
|
+
? { maxBudgetUsd: params.maxBudgetUsd }
|
|
159
|
+
: {}),
|
|
160
|
+
sessionDir: params.sessionDir,
|
|
161
|
+
webSearchEnabled: this.isWebSearchEnabled(params.backendId),
|
|
162
|
+
...(params.sessionDbId !== undefined ? { sessionDbId: params.sessionDbId } : {}),
|
|
163
|
+
...(params.turnToken ? { turnToken: params.turnToken } : {}),
|
|
164
|
+
...(params.stagedAttachments && params.stagedAttachments.length > 0
|
|
165
|
+
? { stagedAttachments: params.stagedAttachments }
|
|
166
|
+
: {}),
|
|
167
|
+
...(params.eventCorrelationId
|
|
168
|
+
? { eventCorrelationId: params.eventCorrelationId }
|
|
169
|
+
: {}),
|
|
170
|
+
}, streamCallbacks);
|
|
171
|
+
// executeResume also proves the backend holds valid credentials —
|
|
172
|
+
// keep `auth_last_success_at` in sync so DM sessions that run
|
|
173
|
+
// purely through session resumption don't false-trip the 60-day
|
|
174
|
+
// keepalive reminder.
|
|
175
|
+
recordReactiveAuthSuccess(this.db, params.backendId, this.authTelemetry);
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
if (error instanceof BackendDecisiveFailure && error.kind === "auth") {
|
|
180
|
+
recordReactiveAuthFailure(this.db, params.backendId, error.cause instanceof Error ? error.cause.message : String(error.cause ?? ""), this.authTelemetry);
|
|
181
|
+
}
|
|
182
|
+
throw error;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
async summarize(conversationText) {
|
|
186
|
+
const defaultBackendId = this.loadGlobalDefaults()?.default_backend ?? "claude";
|
|
187
|
+
const core = this.cores[defaultBackendId] ?? Object.values(this.cores)[0];
|
|
188
|
+
if (!core) {
|
|
189
|
+
throw new Error("No agent backends are registered");
|
|
190
|
+
}
|
|
191
|
+
const result = await core.summarize(conversationText);
|
|
192
|
+
// `summarize` is a successful backend invocation — the same reactive
|
|
193
|
+
// self-heal applies. Runs after the outer core is chosen (see
|
|
194
|
+
// loadGlobalDefaults fallback above), so stamp that backend.
|
|
195
|
+
recordReactiveAuthSuccess(this.db, core.backendId, this.authTelemetry);
|
|
196
|
+
return result;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Pre-flight entry point: creates a synthetic mainFailure for the
|
|
200
|
+
* skipped main backend and delegates to `executeFallbackCore`.
|
|
201
|
+
*/
|
|
202
|
+
async executePreflightFallback(binding, params, streamCallbacks) {
|
|
203
|
+
const syntheticMainFailure = new BackendDecisiveFailure(binding.main.backendId, "auth", new Error("Pre-flight auth cache: main backend skipped"));
|
|
204
|
+
return this.executeFallbackCore(binding, params, syntheticMainFailure, streamCallbacks, { isPreflight: true });
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Shared fallback execution — used by both the catch-block fallback
|
|
208
|
+
* (where `mainFailure` is the real execute error) and the pre-flight
|
|
209
|
+
* fallback (where `mainFailure` is a synthetic auth failure).
|
|
210
|
+
*
|
|
211
|
+
* Handles:
|
|
212
|
+
* - fallback core execution with the same params shape
|
|
213
|
+
* - reactive auth success/failure tracking on the fallback backend
|
|
214
|
+
* - fallback success notification to admin
|
|
215
|
+
* - fallback failure notification + BackendRouterHandledError throw
|
|
216
|
+
*
|
|
217
|
+
* Extracting this into a single method (design spec §5.2) ensures that
|
|
218
|
+
* a new side-effect (e.g. a new telemetry counter) only needs to be
|
|
219
|
+
* added once instead of in two diverging code paths.
|
|
220
|
+
*/
|
|
221
|
+
async executeFallbackCore(binding, params, mainFailure, streamCallbacks, opts) {
|
|
222
|
+
const fallback = binding.fallback;
|
|
223
|
+
const fallbackCore = this.requireCore(fallback.backendId);
|
|
224
|
+
const fallbackWebSearch = this.isWebSearchEnabled(fallback.backendId);
|
|
225
|
+
// Ensure the session workdir has the fallback backend's instruction files.
|
|
226
|
+
// Heavy-tier session dirs are materialized once for the main backend; without
|
|
227
|
+
// this call, a Claude→Codex fallback would leave the dir with only CLAUDE.md
|
|
228
|
+
// and no AGENTS.md for Codex to read.
|
|
229
|
+
//
|
|
230
|
+
// Preflight path: there is no real main-backend failure to mask, so a
|
|
231
|
+
// throw here means the fallback would run in an unmaterialized workdir.
|
|
232
|
+
// Re-throw — the caller can fall back to the real execute path and surface
|
|
233
|
+
// a clearer diagnostic.
|
|
234
|
+
//
|
|
235
|
+
// Real-failure path: a throw here would mask the original main-backend
|
|
236
|
+
// failure with a re-materialization error and skip the fallback entirely.
|
|
237
|
+
// Log and continue: if the fallback core can't read its instructions the
|
|
238
|
+
// next `execute()` will surface a clearer diagnostic than ENOSPC.
|
|
239
|
+
if (params.sessionDir && this.prepareSessionDir) {
|
|
240
|
+
try {
|
|
241
|
+
this.prepareSessionDir(params.sessionDir, fallback.backendId, params.workdirEventType ?? params.event.type, params.workdirProcessKey ?? binding.processKey);
|
|
242
|
+
}
|
|
243
|
+
catch (err) {
|
|
244
|
+
if (opts?.isPreflight) {
|
|
245
|
+
logger.error({
|
|
246
|
+
err,
|
|
247
|
+
sessionDir: params.sessionDir,
|
|
248
|
+
fallbackBackendId: fallback.backendId,
|
|
249
|
+
processKey: binding.processKey,
|
|
250
|
+
}, "Pre-flight fallback session-dir re-materialization failed — aborting preflight");
|
|
251
|
+
throw err;
|
|
252
|
+
}
|
|
253
|
+
logger.error({
|
|
254
|
+
err,
|
|
255
|
+
sessionDir: params.sessionDir,
|
|
256
|
+
fallbackBackendId: fallback.backendId,
|
|
257
|
+
processKey: binding.processKey,
|
|
258
|
+
}, "Fallback session-dir re-materialization failed — attempting fallback execute anyway");
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// Re-apply backend-specific prompt overlays for the fallback backend
|
|
262
|
+
// when the caller supplied a reassembler. See RouterExecuteParams docs.
|
|
263
|
+
const fallbackPrompt = params.reassemblePrompt
|
|
264
|
+
? params.reassemblePrompt(fallback.backendId)
|
|
265
|
+
: params.prompt;
|
|
266
|
+
try {
|
|
267
|
+
const result = await fallbackCore.execute({
|
|
268
|
+
prompt: fallbackPrompt,
|
|
269
|
+
context: params.context,
|
|
270
|
+
event: params.event,
|
|
271
|
+
modelId: fallback.modelId,
|
|
272
|
+
maxTurns: fallback.maxTurns,
|
|
273
|
+
maxBudgetUsd: fallback.maxBudgetUsd,
|
|
274
|
+
sessionDir: params.sessionDir,
|
|
275
|
+
processKey: binding.processKey,
|
|
276
|
+
persistSession: params.persistSession,
|
|
277
|
+
conversationHistory: params.conversationHistory,
|
|
278
|
+
webSearchEnabled: fallbackWebSearch,
|
|
279
|
+
...(params.sessionDbId !== undefined ? { sessionDbId: params.sessionDbId } : {}),
|
|
280
|
+
...(params.turnToken ? { turnToken: params.turnToken } : {}),
|
|
281
|
+
...(params.stagedAttachments && params.stagedAttachments.length > 0
|
|
282
|
+
? { stagedAttachments: params.stagedAttachments }
|
|
283
|
+
: {}),
|
|
284
|
+
...(params.allowedToolsOverride
|
|
285
|
+
? { allowedToolsOverride: params.allowedToolsOverride }
|
|
286
|
+
: {}),
|
|
287
|
+
}, streamCallbacks);
|
|
288
|
+
recordReactiveAuthSuccess(this.db, fallback.backendId, this.authTelemetry);
|
|
289
|
+
await this.notifyFallbackSuccess(params.event, binding.processKey, binding.main, mainFailure, fallback);
|
|
290
|
+
return result;
|
|
291
|
+
}
|
|
292
|
+
catch (fallbackError) {
|
|
293
|
+
if (fallbackError instanceof BackendDecisiveFailure
|
|
294
|
+
&& fallbackError.kind === "auth") {
|
|
295
|
+
recordReactiveAuthFailure(this.db, fallback.backendId, fallbackError.cause instanceof Error
|
|
296
|
+
? fallbackError.cause.message
|
|
297
|
+
: String(fallbackError.cause ?? ""), this.authTelemetry);
|
|
298
|
+
}
|
|
299
|
+
if (!(fallbackError instanceof BackendDecisiveFailure
|
|
300
|
+
|| fallbackError instanceof BackendQuotaError)) {
|
|
301
|
+
throw fallbackError;
|
|
302
|
+
}
|
|
303
|
+
await this.handleFallbackFailure(params.event, binding.processKey, binding.main, mainFailure, fallback, fallbackError);
|
|
304
|
+
throw new BackendRouterHandledError(`Fallback backend "${fallback.backendId}" failed after "${binding.main.backendId}" — `
|
|
305
|
+
+ `main: ${describeBackendFailure(mainFailure)}; `
|
|
306
|
+
+ `fallback: ${describeBackendFailure(fallbackError)}`, fallbackError, mainFailure, fallbackError);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
resolveBinding(event, options) {
|
|
310
|
+
const processKey = options?.processKey ?? resolveProcessKey(event);
|
|
311
|
+
// TIER_LOCKED hard clamp (DOCS_QA_B7_DESIGN.md S2). When set, this
|
|
312
|
+
// process is pinned to a tier regardless of requestedTier hints,
|
|
313
|
+
// process_backend_config rows, or global defaults. Folded into
|
|
314
|
+
// `effectiveRequestedTier` so the model-substitution branch below
|
|
315
|
+
// also fires, swapping any operator-pinned wrong-tier model to the
|
|
316
|
+
// canonical model at the locked tier.
|
|
317
|
+
const lockedTier = TIER_LOCKED_PROCESS_KEYS[processKey];
|
|
318
|
+
const effectiveRequestedTier = lockedTier ?? options?.requestedTier;
|
|
319
|
+
const requestedTier = effectiveRequestedTier;
|
|
320
|
+
const requestedBackendId = options?.requestedBackendId;
|
|
321
|
+
const requestedModelId = options?.requestedModelId;
|
|
322
|
+
const processConfig = this.loadProcessConfig(processKey);
|
|
323
|
+
// Explicit backend+model HARD override — dashboard chat model picker.
|
|
324
|
+
// Supersedes requestedTier and process_backend_config pins. Fallback is
|
|
325
|
+
// dropped: if the user explicitly picked a backend, silently rerouting
|
|
326
|
+
// to a different fallback would defeat the point of the picker. We
|
|
327
|
+
// still load maxTurns/maxBudget from process_backend_config so the
|
|
328
|
+
// user's per-process caps keep applying; otherwise fall back to the
|
|
329
|
+
// same defaults `resolveBinding` uses for unconfigured processes.
|
|
330
|
+
//
|
|
331
|
+
// Registered model → its registry tier becomes `resolvedTier`.
|
|
332
|
+
// Unregistered (custom) model → use the ProcessKey's default tier
|
|
333
|
+
// rather than hardcoding "high"; the override shouldn't mint a
|
|
334
|
+
// high-tier envelope for a medium-tier process just because the model
|
|
335
|
+
// id isn't in the registry.
|
|
336
|
+
if (requestedBackendId && requestedModelId) {
|
|
337
|
+
const overrideTier = this.tierFromModelId(requestedBackendId, requestedModelId) ??
|
|
338
|
+
this.resolveTier(processKey);
|
|
339
|
+
return {
|
|
340
|
+
processKey,
|
|
341
|
+
resolvedTier: overrideTier,
|
|
342
|
+
main: {
|
|
343
|
+
backendId: requestedBackendId,
|
|
344
|
+
modelId: requestedModelId,
|
|
345
|
+
maxTurns: processConfig?.max_turns ??
|
|
346
|
+
PROCESS_MAX_TURNS[processKey] ??
|
|
347
|
+
(overrideTier === "high" ? 300 : overrideTier === "medium" ? 50 : 20),
|
|
348
|
+
maxBudgetUsd: processConfig?.max_budget_usd ??
|
|
349
|
+
(overrideTier === "high" ? 5.0 : overrideTier === "medium" ? 1.0 : 0.2),
|
|
350
|
+
},
|
|
351
|
+
fallback: null,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
const resolvedTier = this.resolveTier(processKey, requestedTier);
|
|
355
|
+
if (processConfig) {
|
|
356
|
+
const main = this.resolveConfiguredBinding(processConfig.main_backend, processConfig.main_model, processConfig.max_turns, processConfig.max_budget_usd);
|
|
357
|
+
const fallback = processConfig.fallback_backend && processConfig.fallback_model
|
|
358
|
+
? this.resolveConfiguredBinding(processConfig.fallback_backend, processConfig.fallback_model, processConfig.max_turns, processConfig.max_budget_usd)
|
|
359
|
+
: null;
|
|
360
|
+
// Explicit tier override — see RouterExecuteParams.requestedTier.
|
|
361
|
+
// Triggered when the caller passes an explicit requestedTier whose
|
|
362
|
+
// tier does NOT match the pinned model's registry tier. We swap the
|
|
363
|
+
// main model to a canonical choice for (backend, requestedTier).
|
|
364
|
+
// Without this branch, the explicit Opus escape hatches
|
|
365
|
+
// (agent_schedule.model, run-now requestedModel, dashboard chat
|
|
366
|
+
// picker's legacy sonnet/opus form) would be silently ignored after
|
|
367
|
+
// any Pro preset apply — every configurable process would be pinned
|
|
368
|
+
// to Sonnet and `main` would return that Sonnet regardless. The
|
|
369
|
+
// cross-backend superset override (requestedBackendId/requestedModelId)
|
|
370
|
+
// is handled earlier in this function and does not reach this
|
|
371
|
+
// branch.
|
|
372
|
+
//
|
|
373
|
+
// Invariants:
|
|
374
|
+
// - If the pinned model's registry tier is unknown (user-supplied
|
|
375
|
+
// custom model id), DO NOT override. The user explicitly chose a
|
|
376
|
+
// non-standard model; clobbering it would be a silent regression.
|
|
377
|
+
// - Fallback binding is preserved IFF its model's registry tier
|
|
378
|
+
// also matches `requestedTier`. Otherwise drop it — routing back
|
|
379
|
+
// to the wrong-tier fallback defeats the purpose of the override.
|
|
380
|
+
if (requestedTier) {
|
|
381
|
+
const overridden = this.maybeApplyTierOverride(main, requestedTier, processKey);
|
|
382
|
+
if (overridden) {
|
|
383
|
+
const preservedFallback = this.preserveFallbackOnOverride(fallback, requestedTier);
|
|
384
|
+
return {
|
|
385
|
+
processKey,
|
|
386
|
+
resolvedTier,
|
|
387
|
+
main: overridden,
|
|
388
|
+
fallback: this.refineFallbackForDelegation(processKey, preservedFallback),
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
return {
|
|
393
|
+
processKey,
|
|
394
|
+
resolvedTier,
|
|
395
|
+
main,
|
|
396
|
+
fallback: this.refineFallbackForDelegation(processKey, fallback),
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
const defaults = this.loadGlobalDefaults();
|
|
400
|
+
const defaultBackendId = defaults?.default_backend ?? "claude";
|
|
401
|
+
const modelId = this.resolveDefaultModelId(defaultBackendId, resolvedTier, defaults);
|
|
402
|
+
return {
|
|
403
|
+
processKey,
|
|
404
|
+
resolvedTier,
|
|
405
|
+
main: {
|
|
406
|
+
backendId: defaultBackendId,
|
|
407
|
+
modelId,
|
|
408
|
+
maxTurns: PROCESS_MAX_TURNS[processKey] ??
|
|
409
|
+
(resolvedTier === "high" ? 300 : resolvedTier === "medium" ? 50 : 20),
|
|
410
|
+
maxBudgetUsd: resolvedTier === "high" ? 5.0 : resolvedTier === "medium" ? 1.0 : 0.2,
|
|
411
|
+
},
|
|
412
|
+
fallback: null,
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
resolveConfiguredBinding(backendId, configuredModelId, configuredMaxTurns, configuredMaxBudgetUsd) {
|
|
416
|
+
return {
|
|
417
|
+
backendId,
|
|
418
|
+
modelId: configuredModelId,
|
|
419
|
+
maxTurns: configuredMaxTurns,
|
|
420
|
+
maxBudgetUsd: configuredMaxBudgetUsd,
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Returns a modified binding whose `modelId` has been swapped to a canonical
|
|
425
|
+
* model for `requestedTier` on the same backend, or `null` when no override
|
|
426
|
+
* should be applied.
|
|
427
|
+
*
|
|
428
|
+
* Returns `null` (no override) in any of these cases:
|
|
429
|
+
* 1. The pinned model's registry tier is unknown (user-supplied custom
|
|
430
|
+
* model id). This is **critical**: the user explicitly chose a
|
|
431
|
+
* non-standard model, so we trust their choice over an
|
|
432
|
+
* auto-substituted registry default. The previous implementation of
|
|
433
|
+
* this method clobbered custom pins — that was a regression and is
|
|
434
|
+
* covered by a dedicated test now.
|
|
435
|
+
* 2. The pinned model's tier already matches `requestedTier`.
|
|
436
|
+
* 3. No suitable canonical model exists for (backend, tier) in the
|
|
437
|
+
* registry, or the canonical choice happens to be the already-pinned
|
|
438
|
+
* model.
|
|
439
|
+
*/
|
|
440
|
+
maybeApplyTierOverride(main, requestedTier, processKey) {
|
|
441
|
+
const pinnedTier = this.tierFromModelId(main.backendId, main.modelId);
|
|
442
|
+
if (pinnedTier === null) {
|
|
443
|
+
// Unknown tier → user-supplied custom model. Preserve it.
|
|
444
|
+
return null;
|
|
445
|
+
}
|
|
446
|
+
if (pinnedTier === requestedTier) {
|
|
447
|
+
return null;
|
|
448
|
+
}
|
|
449
|
+
const canonical = this.resolveCanonicalTierModel(main.backendId, requestedTier);
|
|
450
|
+
if (!canonical || canonical === main.modelId) {
|
|
451
|
+
return null;
|
|
452
|
+
}
|
|
453
|
+
logger.debug({
|
|
454
|
+
processKey,
|
|
455
|
+
pinnedModel: main.modelId,
|
|
456
|
+
pinnedTier,
|
|
457
|
+
requestedTier,
|
|
458
|
+
overrideModel: canonical,
|
|
459
|
+
}, "Explicit tier override — bypassing processConfig.main_model");
|
|
460
|
+
return { ...main, modelId: canonical };
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Decide whether to keep the existing fallback binding when a tier override
|
|
464
|
+
* has been applied to the main binding. Returns the fallback unchanged when
|
|
465
|
+
* its model is registered at `requestedTier`; otherwise `null` so we don't
|
|
466
|
+
* silently route the override request into a wrong-tier fallback.
|
|
467
|
+
*
|
|
468
|
+
* Unregistered fallback model ids (custom) are preserved for the same
|
|
469
|
+
* reason as in `maybeApplyTierOverride`: trust user configuration.
|
|
470
|
+
*/
|
|
471
|
+
preserveFallbackOnOverride(fallback, requestedTier) {
|
|
472
|
+
if (!fallback)
|
|
473
|
+
return null;
|
|
474
|
+
const fallbackTier = this.tierFromModelId(fallback.backendId, fallback.modelId);
|
|
475
|
+
if (fallbackTier === null || fallbackTier === requestedTier) {
|
|
476
|
+
return fallback;
|
|
477
|
+
}
|
|
478
|
+
return null;
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Phase 4 — Integration-delegation gating.
|
|
482
|
+
*
|
|
483
|
+
* Null the fallback when the fallback backend has no registry connector
|
|
484
|
+
* for any delegated integration whose `taskFlowsTouched` declares this
|
|
485
|
+
* process key. Routing a delegated-integration process key into a
|
|
486
|
+
* connector-less backend would silently execute without the integration
|
|
487
|
+
* tools the task-flow variant expects.
|
|
488
|
+
*
|
|
489
|
+
* Main-backend incompatibility is intentionally NOT checked here —
|
|
490
|
+
* `PATCH /api/integrations/:key` and the setup wizard (§4.12.2 / §4.12.4)
|
|
491
|
+
* are the user-facing enforcement points. The router only refuses the
|
|
492
|
+
* fallback, which is the silent-rewire path the design spec calls out
|
|
493
|
+
* (§Phase 4, "Fallback refused when fallback backend lacks the connector
|
|
494
|
+
* required for any delegated integration the ProcessKey touches").
|
|
495
|
+
*
|
|
496
|
+
* Descriptor presence = contract: no live probe, no capabilityTools walk.
|
|
497
|
+
* Missing `backendConnectors[fallbackBackend]` → no connector → drop.
|
|
498
|
+
*/
|
|
499
|
+
refineFallbackForDelegation(processKey, fallback) {
|
|
500
|
+
if (!fallback)
|
|
501
|
+
return null;
|
|
502
|
+
const integrations = readIntegrations(this.db);
|
|
503
|
+
const delegatedTouched = delegatedIntegrationsForProcessKey(processKey, integrations);
|
|
504
|
+
if (delegatedTouched.length === 0)
|
|
505
|
+
return fallback;
|
|
506
|
+
const blocking = delegatedTouched.filter((k) => !backendHasIntegrationConnector(k, fallback.backendId));
|
|
507
|
+
if (blocking.length === 0)
|
|
508
|
+
return fallback;
|
|
509
|
+
logger.warn({
|
|
510
|
+
processKey,
|
|
511
|
+
fallbackBackendId: fallback.backendId,
|
|
512
|
+
blockingIntegrations: blocking,
|
|
513
|
+
}, "Fallback backend lacks a connector for delegated integration(s) — dropping fallback");
|
|
514
|
+
return null;
|
|
515
|
+
}
|
|
516
|
+
tierFromModelId(backendId, modelId) {
|
|
517
|
+
return findRegisteredModel(backendId, modelId)?.tier ?? null;
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Pick a canonical model for (backendId, tier) when the caller requests an
|
|
521
|
+
* explicit tier that the process_backend_config row does NOT satisfy.
|
|
522
|
+
*
|
|
523
|
+
* Priority:
|
|
524
|
+
* 1. Global default for that tier if (a) backend matches the default
|
|
525
|
+
* backend AND (b) the configured default model is actually that tier
|
|
526
|
+
* in the registry. The registered-tier guard prevents an
|
|
527
|
+
* operator-customised default from leaking the wrong tier into the
|
|
528
|
+
* router's resolution path.
|
|
529
|
+
* 2. First available model of (backendId, tier) in the model registry.
|
|
530
|
+
* 3. `null` — caller should keep the pinned model.
|
|
531
|
+
*/
|
|
532
|
+
resolveCanonicalTierModel(backendId, tier) {
|
|
533
|
+
const defaults = this.loadGlobalDefaults();
|
|
534
|
+
if (defaults && defaults.default_backend === backendId) {
|
|
535
|
+
const candidate = tier === "high"
|
|
536
|
+
? defaults.default_high_model
|
|
537
|
+
: tier === "medium"
|
|
538
|
+
? defaults.default_medium_model
|
|
539
|
+
: defaults.default_lite_model;
|
|
540
|
+
const registered = findRegisteredModel(backendId, candidate);
|
|
541
|
+
if (registered?.tier === tier && registered.available) {
|
|
542
|
+
return candidate;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
const match = getModelsForBackend(backendId).find((model) => model.tier === tier && model.available);
|
|
546
|
+
return match?.modelId ?? null;
|
|
547
|
+
}
|
|
548
|
+
resolveDefaultModelId(backendId, tier, defaults) {
|
|
549
|
+
if (defaults && backendId === defaults.default_backend) {
|
|
550
|
+
return tier === "high"
|
|
551
|
+
? defaults.default_high_model
|
|
552
|
+
: tier === "medium"
|
|
553
|
+
? defaults.default_medium_model
|
|
554
|
+
: defaults.default_lite_model;
|
|
555
|
+
}
|
|
556
|
+
if (backendId === "claude") {
|
|
557
|
+
return tier === "high"
|
|
558
|
+
? DEFAULT_CLAUDE_HIGH_MODEL
|
|
559
|
+
: tier === "medium"
|
|
560
|
+
? DEFAULT_CLAUDE_MEDIUM_MODEL
|
|
561
|
+
: DEFAULT_CLAUDE_LITE_MODEL;
|
|
562
|
+
}
|
|
563
|
+
const core = this.cores[backendId];
|
|
564
|
+
const models = core?.listModels() ?? [];
|
|
565
|
+
const exactTier = models.find((model) => model.tier === tier && model.available);
|
|
566
|
+
const fallback = models.find((model) => model.available) ?? models[0];
|
|
567
|
+
if (exactTier)
|
|
568
|
+
return exactTier.modelId;
|
|
569
|
+
if (fallback)
|
|
570
|
+
return fallback.modelId;
|
|
571
|
+
throw new BackendDecisiveFailure(backendId, "model_unavailable", new Error(`No registered model is available for backend "${backendId}"`));
|
|
572
|
+
}
|
|
573
|
+
resolveTier(processKey, requestedTier) {
|
|
574
|
+
// Hard lock — supersedes both `requestedTier` and any operator pin
|
|
575
|
+
// in `process_backend_config`. Keeps process keys like
|
|
576
|
+
// `dashboard.docs_qa` on the canonical medium tier even when the
|
|
577
|
+
// operator pinned the row to high in /settings/models (the
|
|
578
|
+
// tier-aware cascade leaves `updated_by='user'` rows alone). See
|
|
579
|
+
// TIER_LOCKED_PROCESS_KEYS for rationale.
|
|
580
|
+
const locked = TIER_LOCKED_PROCESS_KEYS[processKey];
|
|
581
|
+
if (locked) {
|
|
582
|
+
return locked;
|
|
583
|
+
}
|
|
584
|
+
if (requestedTier) {
|
|
585
|
+
return requestedTier;
|
|
586
|
+
}
|
|
587
|
+
if (isProcessKey(processKey)) {
|
|
588
|
+
return getDefaultTierForProcessKey(processKey);
|
|
589
|
+
}
|
|
590
|
+
// B-007 §5.8 — custom routines default to 'medium'. The scheduler
|
|
591
|
+
// normally emits an explicit `requestedModel` sourced from the
|
|
592
|
+
// routine file's `backend_tier` frontmatter, but if it ever arrives
|
|
593
|
+
// without one we default to medium rather than high so a
|
|
594
|
+
// misconfigured custom routine cannot silently drain the Opus quota.
|
|
595
|
+
if (isCustomRoutineKey(processKey)) {
|
|
596
|
+
return "medium";
|
|
597
|
+
}
|
|
598
|
+
// Truly unknown process keys keep the pre-B-007 behaviour of
|
|
599
|
+
// routing to a sufficient tier for unattended work — medium is the
|
|
600
|
+
// safer default than high (Opus) for unknown callers.
|
|
601
|
+
return "medium";
|
|
602
|
+
}
|
|
603
|
+
requireCore(backendId) {
|
|
604
|
+
const core = this.cores[backendId];
|
|
605
|
+
if (!core) {
|
|
606
|
+
throw new BackendDecisiveFailure(backendId, "model_unavailable", new Error(`Backend "${backendId}" is not registered`));
|
|
607
|
+
}
|
|
608
|
+
return core;
|
|
609
|
+
}
|
|
610
|
+
loadProcessConfig(processKey) {
|
|
611
|
+
if (!this.hasProcessConfigTable) {
|
|
612
|
+
return null;
|
|
613
|
+
}
|
|
614
|
+
return (this.db
|
|
615
|
+
.prepare(`SELECT
|
|
616
|
+
main_backend,
|
|
617
|
+
main_model,
|
|
618
|
+
fallback_backend,
|
|
619
|
+
fallback_model,
|
|
620
|
+
max_turns,
|
|
621
|
+
max_budget_usd
|
|
622
|
+
FROM process_backend_config
|
|
623
|
+
WHERE process_key = ?`)
|
|
624
|
+
.get(processKey) ?? null);
|
|
625
|
+
}
|
|
626
|
+
loadGlobalDefaults() {
|
|
627
|
+
if (!this.hasBackendDefaultsTable) {
|
|
628
|
+
return null;
|
|
629
|
+
}
|
|
630
|
+
return (this.db
|
|
631
|
+
.prepare(`SELECT
|
|
632
|
+
default_backend,
|
|
633
|
+
default_lite_model,
|
|
634
|
+
default_medium_model,
|
|
635
|
+
default_high_model
|
|
636
|
+
FROM backend_global_defaults
|
|
637
|
+
WHERE singleton = 1`)
|
|
638
|
+
.get() ?? null);
|
|
639
|
+
}
|
|
640
|
+
isWebSearchEnabled(backendId) {
|
|
641
|
+
try {
|
|
642
|
+
const row = this.db
|
|
643
|
+
.prepare("SELECT web_search_enabled FROM backends WHERE id = ?")
|
|
644
|
+
.get(backendId);
|
|
645
|
+
return row?.web_search_enabled === 1;
|
|
646
|
+
}
|
|
647
|
+
catch (err) {
|
|
648
|
+
// Defensive fallback: if the column or table is unexpectedly absent,
|
|
649
|
+
// treat web search as off rather than failing the binding lookup.
|
|
650
|
+
logger.debug({ err, backendId }, "web_search_enabled query failed, defaulting to false");
|
|
651
|
+
return false;
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
hasTable(name) {
|
|
655
|
+
const row = this.db
|
|
656
|
+
.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ? LIMIT 1")
|
|
657
|
+
.get(name);
|
|
658
|
+
return !!row;
|
|
659
|
+
}
|
|
660
|
+
async handleNoFallbackFailure(event, processKey, main, failure) {
|
|
661
|
+
await this.maybeSendUserFacingFailure(event, processKey, failure);
|
|
662
|
+
await this.notifyConfiguredChannel(this.buildNoFallbackMessage(processKey, main, failure), event, `no-fallback:${processKey}:${main.backendId}:${this.describeFailureKind(failure)}`, "normal");
|
|
663
|
+
}
|
|
664
|
+
async handleFallbackFailure(event, processKey, main, mainFailure, fallback, fallbackFailure) {
|
|
665
|
+
await this.maybeSendUserFacingFailure(event, processKey, fallbackFailure);
|
|
666
|
+
await this.notifyConfiguredChannel(this.buildFallbackFailureMessage(processKey, main, mainFailure, fallback, fallbackFailure), event, null, "high");
|
|
667
|
+
}
|
|
668
|
+
async notifyFallbackSuccess(event, processKey, main, mainFailure, fallback) {
|
|
669
|
+
await this.notifyConfiguredChannel(this.buildFallbackSuccessMessage(processKey, main, mainFailure, fallback), event, `fallback-success:${processKey}:${main.backendId}:${fallback.backendId}`, "low");
|
|
670
|
+
}
|
|
671
|
+
async maybeSendUserFacingFailure(event, processKey, failure) {
|
|
672
|
+
if (!this.notifier || !this.isInteractiveProcess(processKey)) {
|
|
673
|
+
return;
|
|
674
|
+
}
|
|
675
|
+
await this.notifier.send(this.buildUserFacingFailureMessage(failure), event);
|
|
676
|
+
}
|
|
677
|
+
async notifyConfiguredChannel(message, event, dedupeKey, priority) {
|
|
678
|
+
if (!this.notifier) {
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
if (dedupeKey && this.isNotificationDeduped(dedupeKey)) {
|
|
682
|
+
return;
|
|
683
|
+
}
|
|
684
|
+
await this.notifier.send(message, event, {
|
|
685
|
+
priority,
|
|
686
|
+
destinationMode: "configured_only",
|
|
687
|
+
});
|
|
688
|
+
if (dedupeKey) {
|
|
689
|
+
this.notificationDedup.set(dedupeKey, Date.now());
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
isNotificationDeduped(key) {
|
|
693
|
+
const lastSentAt = this.notificationDedup.get(key);
|
|
694
|
+
if (!lastSentAt) {
|
|
695
|
+
return false;
|
|
696
|
+
}
|
|
697
|
+
if (Date.now() - lastSentAt < NOTIFICATION_DEDUPE_WINDOW_MS) {
|
|
698
|
+
return true;
|
|
699
|
+
}
|
|
700
|
+
this.notificationDedup.delete(key);
|
|
701
|
+
return false;
|
|
702
|
+
}
|
|
703
|
+
isInteractiveProcess(processKey) {
|
|
704
|
+
return processKey === "message.dm"
|
|
705
|
+
|| processKey === "message.mention"
|
|
706
|
+
|| processKey === "dashboard.chat";
|
|
707
|
+
}
|
|
708
|
+
describeFailureKind(failure) {
|
|
709
|
+
if (failure instanceof BackendQuotaError) {
|
|
710
|
+
return "quota";
|
|
711
|
+
}
|
|
712
|
+
return failure.kind;
|
|
713
|
+
}
|
|
714
|
+
buildFallbackSuccessMessage(processKey, main, mainFailure, fallback) {
|
|
715
|
+
return [
|
|
716
|
+
`Backend switch: ${processKey} encountered `,
|
|
717
|
+
`${this.describeFailureKind(mainFailure)} on ${main.backendId}/${main.modelId}, `,
|
|
718
|
+
`fell back to ${fallback.backendId}/${fallback.modelId}.`,
|
|
719
|
+
].join("");
|
|
720
|
+
}
|
|
721
|
+
buildNoFallbackMessage(processKey, main, failure) {
|
|
722
|
+
return [
|
|
723
|
+
`Backend execution failed: ${processKey} stopped due to `,
|
|
724
|
+
`${this.describeFailureKind(failure)} on ${main.backendId}/${main.modelId}. `,
|
|
725
|
+
"No fallback is configured.",
|
|
726
|
+
].join("");
|
|
727
|
+
}
|
|
728
|
+
buildFallbackFailureMessage(processKey, main, mainFailure, fallback, fallbackFailure) {
|
|
729
|
+
return [
|
|
730
|
+
`Backend execution failed: ${processKey} encountered `,
|
|
731
|
+
`${this.describeFailureKind(mainFailure)} on ${main.backendId}/${main.modelId}, `,
|
|
732
|
+
`then ${this.describeFailureKind(fallbackFailure)} on ${fallback.backendId}/${fallback.modelId}.`,
|
|
733
|
+
].join("");
|
|
734
|
+
}
|
|
735
|
+
buildUserFacingFailureMessage(failure) {
|
|
736
|
+
switch (this.describeFailureKind(failure)) {
|
|
737
|
+
case "quota":
|
|
738
|
+
if (this.isMaxBudgetFailure(failure)) {
|
|
739
|
+
return "The per-turn budget limit was reached. Please try a shorter request or raise the budget in backend settings.";
|
|
740
|
+
}
|
|
741
|
+
return "This backend has reached its usage limit. Please try again later.";
|
|
742
|
+
case "auth":
|
|
743
|
+
return "Backend authentication failed. Please re-authorize from the dashboard.";
|
|
744
|
+
case "max_turns":
|
|
745
|
+
return "The processing turn limit has been reached. Please try a shorter request.";
|
|
746
|
+
case "timeout":
|
|
747
|
+
return "The backend timed out. Please try again later.";
|
|
748
|
+
case "model_unavailable":
|
|
749
|
+
return "The configured model is currently unavailable. Please select a different model in settings.";
|
|
750
|
+
default:
|
|
751
|
+
return "An error occurred during backend execution. Please try again.";
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
isMaxBudgetFailure(failure) {
|
|
755
|
+
return failure instanceof BackendQuotaError
|
|
756
|
+
&& failure.originalCode === "max_budget_usd";
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
//# sourceMappingURL=backend-router.js.map
|