@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,1338 @@
|
|
|
1
|
+
import { DEFAULT_CLAUDE_HIGH_MODEL, DEFAULT_CLAUDE_LITE_MODEL, DEFAULT_CLAUDE_MEDIUM_MODEL, } from "../core/backends/model-registry.js";
|
|
2
|
+
// Seed-row default models are interpolated from MODEL_REGISTRY's canonical
|
|
3
|
+
// constants instead of hardcoded literals so a default-model bump is a
|
|
4
|
+
// one-line edit in `model-registry.ts` (the registry is also the source of
|
|
5
|
+
// truth for tier resolution; see docs/maintenance.md §1). Both constants
|
|
6
|
+
// are internal `as const` strings — no untrusted input feeds these
|
|
7
|
+
// interpolations, so there is no SQL-injection surface.
|
|
8
|
+
const SCHEMA = `
|
|
9
|
+
-- ── Conversation & Messaging ─────────────────────────────────────────────────
|
|
10
|
+
|
|
11
|
+
CREATE TABLE IF NOT EXISTS conversation_sessions (
|
|
12
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
13
|
+
platform TEXT NOT NULL,
|
|
14
|
+
channel_id TEXT NOT NULL,
|
|
15
|
+
thread_id TEXT,
|
|
16
|
+
scope TEXT NOT NULL DEFAULT 'thread'
|
|
17
|
+
CHECK (scope IN ('thread', 'owner_dm', 'dashboard_chat', 'docs_qa')),
|
|
18
|
+
scope_key TEXT NOT NULL DEFAULT '',
|
|
19
|
+
backend_session_id TEXT,
|
|
20
|
+
backend TEXT,
|
|
21
|
+
-- Medium-tier alias to match recurring_schedules / agent_schedule.
|
|
22
|
+
-- Production INSERTs always pass model explicitly (session-manager.ts);
|
|
23
|
+
-- this DEFAULT is the safety-net path. The 'sonnet' alias is resolved
|
|
24
|
+
-- at runtime by claude-code-core.ts:resolveActualModelId so the row
|
|
25
|
+
-- forward-tracks DEFAULT_CLAUDE_MEDIUM_MODEL bumps.
|
|
26
|
+
model TEXT DEFAULT 'sonnet',
|
|
27
|
+
status TEXT DEFAULT 'active' CHECK (status IN ('active', 'expired', 'closed')),
|
|
28
|
+
started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
29
|
+
last_message_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
30
|
+
message_count INTEGER DEFAULT 0,
|
|
31
|
+
is_dm INTEGER DEFAULT 0
|
|
32
|
+
);
|
|
33
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_lookup
|
|
34
|
+
ON conversation_sessions(platform, channel_id, thread_id, status);
|
|
35
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_scope
|
|
36
|
+
ON conversation_sessions(scope, scope_key, status);
|
|
37
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_conv_sessions_scope_active
|
|
38
|
+
ON conversation_sessions(scope, scope_key)
|
|
39
|
+
WHERE status = 'active';
|
|
40
|
+
|
|
41
|
+
CREATE TABLE IF NOT EXISTS dm_conversation_log (
|
|
42
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
43
|
+
platform TEXT NOT NULL,
|
|
44
|
+
scope TEXT NOT NULL DEFAULT 'platform_dm'
|
|
45
|
+
CHECK (scope IN ('platform_dm', 'owner_dm')),
|
|
46
|
+
scope_key TEXT NOT NULL DEFAULT '',
|
|
47
|
+
summary TEXT NOT NULL,
|
|
48
|
+
message_count INTEGER NOT NULL DEFAULT 0,
|
|
49
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
50
|
+
);
|
|
51
|
+
CREATE INDEX IF NOT EXISTS idx_dm_log_platform
|
|
52
|
+
ON dm_conversation_log(platform, created_at DESC);
|
|
53
|
+
CREATE INDEX IF NOT EXISTS idx_dm_log_scope
|
|
54
|
+
ON dm_conversation_log(scope, scope_key, created_at DESC);
|
|
55
|
+
|
|
56
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
57
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
58
|
+
session_id INTEGER REFERENCES conversation_sessions(id),
|
|
59
|
+
role TEXT NOT NULL CHECK (role IN ('user', 'assistant', 'system')),
|
|
60
|
+
content TEXT NOT NULL,
|
|
61
|
+
platform TEXT NOT NULL,
|
|
62
|
+
sender_id TEXT,
|
|
63
|
+
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
64
|
+
metadata JSON DEFAULT '{}',
|
|
65
|
+
backend TEXT,
|
|
66
|
+
model_id TEXT,
|
|
67
|
+
notification_dispatch_id TEXT
|
|
68
|
+
);
|
|
69
|
+
CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id, timestamp);
|
|
70
|
+
|
|
71
|
+
-- ── Agent Actions & Schedule ──────────────────────────────────────────────────
|
|
72
|
+
|
|
73
|
+
CREATE TABLE IF NOT EXISTS agent_actions (
|
|
74
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
75
|
+
event_id TEXT,
|
|
76
|
+
action_type TEXT NOT NULL,
|
|
77
|
+
trigger TEXT,
|
|
78
|
+
model_used TEXT,
|
|
79
|
+
cost_usd REAL,
|
|
80
|
+
tokens_input INTEGER,
|
|
81
|
+
tokens_output INTEGER,
|
|
82
|
+
duration_ms INTEGER,
|
|
83
|
+
num_turns INTEGER,
|
|
84
|
+
-- DELEGATED-TASK-MODE-DESIGN.md §11.1 — 'in_progress' is a transient
|
|
85
|
+
-- state for delegated_task.exec rows: written before subprocess spawn
|
|
86
|
+
-- so step rows can record the header id, then flipped to
|
|
87
|
+
-- success/failed at completion. The boot-time janitor closes any rows
|
|
88
|
+
-- that survive a crash. All other action_types should still settle to
|
|
89
|
+
-- one of the four terminal states.
|
|
90
|
+
result TEXT CHECK (result IN ('success', 'failed', 'partial', 'skipped', 'in_progress')),
|
|
91
|
+
detail JSON,
|
|
92
|
+
started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
93
|
+
completed_at TIMESTAMP,
|
|
94
|
+
error TEXT,
|
|
95
|
+
context_updated INTEGER DEFAULT 0,
|
|
96
|
+
cache_creation_tokens INTEGER,
|
|
97
|
+
cache_read_tokens INTEGER,
|
|
98
|
+
model_usage_json TEXT,
|
|
99
|
+
backend TEXT,
|
|
100
|
+
cost_source TEXT,
|
|
101
|
+
advisor_call_count INTEGER NOT NULL DEFAULT 0,
|
|
102
|
+
-- ── Trigger provenance (docs/design/19-dashboard-ia-and-triggers.md) ──
|
|
103
|
+
-- source_kind tags the upstream surface that produced this action:
|
|
104
|
+
-- 'trigger' — fired by an automation_triggers row
|
|
105
|
+
-- 'message' — owner DM / mention / dashboard chat
|
|
106
|
+
-- 'cron' — built-in routine (morning, hourly, evening, ...)
|
|
107
|
+
-- 'observation' — hourly-check consumed pending observations
|
|
108
|
+
-- 'manual' — Run-now / dashboard-driven invocation
|
|
109
|
+
-- NULL — legacy / not yet classified
|
|
110
|
+
-- source_ref is the id of the upstream entity (e.g. trigger id).
|
|
111
|
+
-- These columns are nullable; dispatcher populates them as wiring lands.
|
|
112
|
+
source_kind TEXT,
|
|
113
|
+
source_ref TEXT
|
|
114
|
+
);
|
|
115
|
+
CREATE INDEX IF NOT EXISTS idx_actions_date ON agent_actions(date(started_at));
|
|
116
|
+
CREATE INDEX IF NOT EXISTS idx_agent_actions_backend_time
|
|
117
|
+
ON agent_actions(backend, started_at);
|
|
118
|
+
CREATE INDEX IF NOT EXISTS idx_agent_actions_source
|
|
119
|
+
ON agent_actions(source_kind, source_ref, started_at DESC)
|
|
120
|
+
WHERE source_kind IS NOT NULL;
|
|
121
|
+
|
|
122
|
+
-- recurring_schedules is created before agent_schedule so the FK reference
|
|
123
|
+
-- in agent_schedule is syntactically valid. SQLite doesn't validate FK
|
|
124
|
+
-- targets at CREATE TABLE time so the reverse FK in recurring_schedules is fine.
|
|
125
|
+
CREATE TABLE IF NOT EXISTS recurring_schedules (
|
|
126
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
127
|
+
task_type TEXT NOT NULL,
|
|
128
|
+
task_description TEXT,
|
|
129
|
+
-- Optional override for the agent task body. When NULL, dispatch falls back
|
|
130
|
+
-- to task_description (preserves behavior for system-generated rows that
|
|
131
|
+
-- only carry a short label, and for skill-created schedules predating
|
|
132
|
+
-- this column). When set, replaces task_description as the task-slot
|
|
133
|
+
-- value the dispatcher injects into the task-flow template.
|
|
134
|
+
task_prompt TEXT,
|
|
135
|
+
task_context JSON DEFAULT '{}',
|
|
136
|
+
-- NULL means "no operator override — let BackendRouter resolve tier
|
|
137
|
+
-- from process-key defaults / process_backend_config". Concrete
|
|
138
|
+
-- 'sonnet' / 'opus' is reserved for explicit operator escape hatches
|
|
139
|
+
-- (PATCH /api/recurring-schedules with model field). Defaulting to
|
|
140
|
+
-- 'sonnet' here forced the row's requestedModel downstream and
|
|
141
|
+
-- silently bypassed process_backend_config overrides for
|
|
142
|
+
-- agent.task / agent.dm_task.
|
|
143
|
+
model TEXT,
|
|
144
|
+
recurrence_rule JSON NOT NULL,
|
|
145
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
146
|
+
last_scheduled_id INTEGER,
|
|
147
|
+
next_run_at TIMESTAMP,
|
|
148
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
149
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
150
|
+
FOREIGN KEY (last_scheduled_id) REFERENCES agent_schedule(id)
|
|
151
|
+
);
|
|
152
|
+
CREATE INDEX IF NOT EXISTS idx_recurring_enabled
|
|
153
|
+
ON recurring_schedules(enabled, next_run_at)
|
|
154
|
+
WHERE enabled = 1;
|
|
155
|
+
|
|
156
|
+
CREATE TABLE IF NOT EXISTS agent_schedule (
|
|
157
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
158
|
+
scheduled_for TIMESTAMP NOT NULL,
|
|
159
|
+
task_type TEXT NOT NULL,
|
|
160
|
+
task_description TEXT,
|
|
161
|
+
-- Optional override for the agent task body. See recurring_schedules
|
|
162
|
+
-- for the full rationale. NULL = dispatch uses task_description.
|
|
163
|
+
task_prompt TEXT,
|
|
164
|
+
task_context JSON DEFAULT '{}',
|
|
165
|
+
correlation_id TEXT,
|
|
166
|
+
-- See recurring_schedules.model: NULL means "no override". The
|
|
167
|
+
-- scheduler propagates a non-NULL value as event.requestedModel,
|
|
168
|
+
-- which the dispatcher converts into a hard requestedTier that
|
|
169
|
+
-- supersedes process_backend_config. Default-to-'sonnet' would
|
|
170
|
+
-- pin every materialised row to the light tier and defeat the
|
|
171
|
+
-- per-process backend pinning UI.
|
|
172
|
+
model TEXT,
|
|
173
|
+
status TEXT DEFAULT 'pending'
|
|
174
|
+
CHECK (status IN ('pending', 'running', 'completed', 'skipped', 'failed')),
|
|
175
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
176
|
+
recurring_schedule_id INTEGER REFERENCES recurring_schedules(id)
|
|
177
|
+
);
|
|
178
|
+
CREATE INDEX IF NOT EXISTS idx_schedule_pending
|
|
179
|
+
ON agent_schedule(scheduled_for) WHERE status = 'pending';
|
|
180
|
+
|
|
181
|
+
-- ── Automation Triggers (docs/design/19-dashboard-ia-and-triggers.md) ────────
|
|
182
|
+
--
|
|
183
|
+
-- A Trigger is a per-domain rule: when an event happens, run the LLM with a
|
|
184
|
+
-- user-defined free-form prompt. There is no action_kind enum — the LLM
|
|
185
|
+
-- decides what to do (DM owner, write MD, run analysis) by reading the prompt
|
|
186
|
+
-- and using whatever skills are in scope.
|
|
187
|
+
--
|
|
188
|
+
-- v1 scope: only cron event types are dispatched; for them, a paired
|
|
189
|
+
-- recurring_schedule row carries the schedule and the prompt is propagated
|
|
190
|
+
-- via task_description. Realtime events (push.failed, pr.opened, ...) are
|
|
191
|
+
-- accepted by the schema but not yet wired to observers — see Phase 2.5.
|
|
192
|
+
CREATE TABLE IF NOT EXISTS automation_triggers (
|
|
193
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
194
|
+
domain TEXT NOT NULL,
|
|
195
|
+
event_type TEXT NOT NULL,
|
|
196
|
+
prompt TEXT NOT NULL,
|
|
197
|
+
-- For cron triggers, the recurring_schedules row that drives firing.
|
|
198
|
+
-- ON DELETE SET NULL so a manual recurring_schedule cleanup doesn't
|
|
199
|
+
-- cascade into orphaned triggers; the trigger row stays as a record.
|
|
200
|
+
recurring_schedule_id INTEGER REFERENCES recurring_schedules(id) ON DELETE SET NULL,
|
|
201
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
202
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
203
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
204
|
+
);
|
|
205
|
+
CREATE INDEX IF NOT EXISTS idx_automation_triggers_domain
|
|
206
|
+
ON automation_triggers(domain, enabled);
|
|
207
|
+
|
|
208
|
+
-- ── Notifications & Channels ──────────────────────────────────────────────────
|
|
209
|
+
|
|
210
|
+
CREATE TABLE IF NOT EXISTS notification_log (
|
|
211
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
212
|
+
dispatch_id TEXT NOT NULL DEFAULT '',
|
|
213
|
+
notification_type TEXT,
|
|
214
|
+
priority TEXT CHECK (priority IN ('critical', 'high', 'normal', 'low')),
|
|
215
|
+
platform TEXT,
|
|
216
|
+
delivery_channel TEXT,
|
|
217
|
+
delivery_message_id TEXT,
|
|
218
|
+
content_summary TEXT,
|
|
219
|
+
user_reaction TEXT,
|
|
220
|
+
reacted_at TIMESTAMP,
|
|
221
|
+
status TEXT DEFAULT 'delivered'
|
|
222
|
+
CHECK (status IN ('delivered', 'batched', 'suppressed', 'failed')),
|
|
223
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
224
|
+
delivered_at TIMESTAMP
|
|
225
|
+
);
|
|
226
|
+
CREATE INDEX IF NOT EXISTS idx_notification_dispatch
|
|
227
|
+
ON notification_log(dispatch_id, platform);
|
|
228
|
+
|
|
229
|
+
CREATE TABLE IF NOT EXISTS owner_channels (
|
|
230
|
+
platform TEXT PRIMARY KEY,
|
|
231
|
+
sender_id TEXT,
|
|
232
|
+
channel_id TEXT NOT NULL,
|
|
233
|
+
last_inbound_at TIMESTAMP,
|
|
234
|
+
last_outbound_at TIMESTAMP,
|
|
235
|
+
metadata JSON DEFAULT '{}'
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
-- ── Persistent State & Context ────────────────────────────────────────────────
|
|
239
|
+
|
|
240
|
+
CREATE TABLE IF NOT EXISTS md_file_snapshots (
|
|
241
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
242
|
+
file_path TEXT NOT NULL,
|
|
243
|
+
content TEXT NOT NULL,
|
|
244
|
+
trigger TEXT NOT NULL,
|
|
245
|
+
session_id TEXT,
|
|
246
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
247
|
+
);
|
|
248
|
+
CREATE INDEX IF NOT EXISTS idx_snapshots_file
|
|
249
|
+
ON md_file_snapshots(file_path, created_at DESC);
|
|
250
|
+
|
|
251
|
+
CREATE TABLE IF NOT EXISTS observations (
|
|
252
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
253
|
+
source TEXT NOT NULL,
|
|
254
|
+
ref TEXT NOT NULL,
|
|
255
|
+
change_type TEXT NOT NULL
|
|
256
|
+
CHECK (change_type IN ('created', 'modified', 'deleted')),
|
|
257
|
+
actor TEXT NOT NULL DEFAULT 'user'
|
|
258
|
+
CHECK (actor IN ('user', 'agent', 'system', 'unknown')),
|
|
259
|
+
observed_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
260
|
+
payload TEXT,
|
|
261
|
+
consumed_at TIMESTAMP,
|
|
262
|
+
consumed_by TEXT,
|
|
263
|
+
-- cost-reduction-structural section A -- pre-summarization at insert time.
|
|
264
|
+
-- The summarizer worker (observers/observation-summarizer.ts) drains
|
|
265
|
+
-- pending rows asynchronously and populates these columns; the
|
|
266
|
+
-- hourly_check skill consumes the summary instead of fetching raw
|
|
267
|
+
-- content unless novelty_score >= 2. NULL novelty_score + non-
|
|
268
|
+
-- 'done' status means hourly_check falls back to legacy fetch-on-doubt.
|
|
269
|
+
summary_text TEXT,
|
|
270
|
+
novelty_score INTEGER CHECK (novelty_score IS NULL OR (novelty_score >= 0 AND novelty_score <= 3)),
|
|
271
|
+
summary_at TEXT,
|
|
272
|
+
summary_backend TEXT,
|
|
273
|
+
summary_status TEXT NOT NULL DEFAULT 'pending'
|
|
274
|
+
CHECK (summary_status IN ('pending', 'done', 'skipped', 'failed'))
|
|
275
|
+
);
|
|
276
|
+
CREATE INDEX IF NOT EXISTS idx_obs_pending
|
|
277
|
+
ON observations(consumed_at) WHERE consumed_at IS NULL;
|
|
278
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_obs_unique_pending
|
|
279
|
+
ON observations(source, ref) WHERE consumed_at IS NULL;
|
|
280
|
+
CREATE INDEX IF NOT EXISTS idx_obs_observed_at
|
|
281
|
+
ON observations(observed_at);
|
|
282
|
+
CREATE INDEX IF NOT EXISTS idx_obs_summary_status
|
|
283
|
+
ON observations(summary_status, observed_at);
|
|
284
|
+
|
|
285
|
+
CREATE TABLE IF NOT EXISTS runtime_state (
|
|
286
|
+
key TEXT PRIMARY KEY,
|
|
287
|
+
value_json TEXT NOT NULL,
|
|
288
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
289
|
+
);
|
|
290
|
+
|
|
291
|
+
CREATE TABLE IF NOT EXISTS settings (
|
|
292
|
+
key TEXT PRIMARY KEY,
|
|
293
|
+
value_json TEXT NOT NULL,
|
|
294
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
CREATE TABLE IF NOT EXISTS user_bang_commands (
|
|
298
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
299
|
+
command TEXT NOT NULL UNIQUE,
|
|
300
|
+
description TEXT NOT NULL DEFAULT '',
|
|
301
|
+
prompt TEXT NOT NULL,
|
|
302
|
+
backend_id TEXT NOT NULL CHECK (backend_id IN ('claude', 'codex', 'gemini')),
|
|
303
|
+
model_id TEXT NOT NULL,
|
|
304
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
305
|
+
-- JSON array of skill slugs to materialize into the per-turn workdir.
|
|
306
|
+
-- NULL = legacy default (notify only). [] = no skills.
|
|
307
|
+
enabled_skills_json TEXT,
|
|
308
|
+
-- Custom CLAUDE.md / AGENTS.md / GEMINI.md profile body. Replaces the
|
|
309
|
+
-- conversational profile when non-NULL; safety preamble + character
|
|
310
|
+
-- block + skills section are still emitted around it.
|
|
311
|
+
instruction_md TEXT,
|
|
312
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
313
|
+
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
314
|
+
);
|
|
315
|
+
CREATE INDEX IF NOT EXISTS idx_user_bang_commands_enabled
|
|
316
|
+
ON user_bang_commands(enabled, command);
|
|
317
|
+
|
|
318
|
+
-- ── Unified Repositories (docs/design/appendices/unified-repositories.md) ───
|
|
319
|
+
--
|
|
320
|
+
-- One Repository row replaces the legacy split between gitRepos,
|
|
321
|
+
-- gitWatchedRepos, and githubRepos. A row pairs an optional GitHub
|
|
322
|
+
-- remote and an optional local clone; at least one side must be present
|
|
323
|
+
-- (CHECK constraint). local_only = 1 is an explicit user choice that
|
|
324
|
+
-- forbids ever pairing a GitHub remote — the second CHECK enforces that
|
|
325
|
+
-- the boolean and the columns agree.
|
|
326
|
+
|
|
327
|
+
CREATE TABLE IF NOT EXISTS repositories (
|
|
328
|
+
id TEXT PRIMARY KEY,
|
|
329
|
+
github_owner TEXT,
|
|
330
|
+
github_repo TEXT,
|
|
331
|
+
github_account TEXT,
|
|
332
|
+
local_path TEXT,
|
|
333
|
+
local_only INTEGER NOT NULL DEFAULT 0
|
|
334
|
+
CHECK (local_only IN (0, 1)),
|
|
335
|
+
display_name TEXT,
|
|
336
|
+
classification TEXT NOT NULL DEFAULT 'repo-only'
|
|
337
|
+
CHECK (classification IN ('project', 'repo-only')),
|
|
338
|
+
category TEXT NOT NULL DEFAULT 'other'
|
|
339
|
+
CHECK (category IN ('work', 'personal', 'research', 'client', 'other')),
|
|
340
|
+
poll_priority TEXT NOT NULL DEFAULT 'normal'
|
|
341
|
+
CHECK (poll_priority IN ('high', 'normal')),
|
|
342
|
+
poll_interval_sec INTEGER,
|
|
343
|
+
created_at INTEGER NOT NULL,
|
|
344
|
+
updated_at INTEGER NOT NULL,
|
|
345
|
+
CHECK (
|
|
346
|
+
(github_owner IS NULL AND github_repo IS NULL)
|
|
347
|
+
OR (github_owner IS NOT NULL AND github_repo IS NOT NULL)
|
|
348
|
+
),
|
|
349
|
+
CHECK (
|
|
350
|
+
(github_owner IS NOT NULL AND github_repo IS NOT NULL)
|
|
351
|
+
OR local_path IS NOT NULL
|
|
352
|
+
),
|
|
353
|
+
CHECK (
|
|
354
|
+
(local_only = 1 AND github_owner IS NULL AND github_repo IS NULL)
|
|
355
|
+
OR local_only = 0
|
|
356
|
+
)
|
|
357
|
+
);
|
|
358
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_repositories_github
|
|
359
|
+
ON repositories (github_owner, github_repo)
|
|
360
|
+
WHERE github_owner IS NOT NULL AND github_repo IS NOT NULL;
|
|
361
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_repositories_local
|
|
362
|
+
ON repositories (local_path)
|
|
363
|
+
WHERE local_path IS NOT NULL;
|
|
364
|
+
|
|
365
|
+
CREATE TABLE IF NOT EXISTS repository_triggers (
|
|
366
|
+
id TEXT PRIMARY KEY,
|
|
367
|
+
repository_id TEXT NOT NULL
|
|
368
|
+
REFERENCES repositories(id) ON DELETE CASCADE,
|
|
369
|
+
name TEXT NOT NULL,
|
|
370
|
+
enabled INTEGER NOT NULL DEFAULT 1
|
|
371
|
+
CHECK (enabled IN (0, 1)),
|
|
372
|
+
event_type TEXT NOT NULL,
|
|
373
|
+
filters_json TEXT NOT NULL DEFAULT '{}',
|
|
374
|
+
backend TEXT NOT NULL
|
|
375
|
+
CHECK (backend IN ('claude', 'codex', 'gemini')),
|
|
376
|
+
model TEXT NOT NULL,
|
|
377
|
+
workdir_mode TEXT NOT NULL
|
|
378
|
+
CHECK (workdir_mode IN ('temp', 'local-clone')),
|
|
379
|
+
prompt TEXT NOT NULL,
|
|
380
|
+
instruction_md TEXT,
|
|
381
|
+
last_fired_at INTEGER,
|
|
382
|
+
fire_count INTEGER NOT NULL DEFAULT 0,
|
|
383
|
+
created_at INTEGER NOT NULL,
|
|
384
|
+
updated_at INTEGER NOT NULL,
|
|
385
|
+
CHECK (
|
|
386
|
+
(workdir_mode = 'temp' AND instruction_md IS NOT NULL)
|
|
387
|
+
OR workdir_mode = 'local-clone'
|
|
388
|
+
)
|
|
389
|
+
);
|
|
390
|
+
CREATE INDEX IF NOT EXISTS idx_triggers_repo
|
|
391
|
+
ON repository_triggers (repository_id);
|
|
392
|
+
CREATE INDEX IF NOT EXISTS idx_triggers_event
|
|
393
|
+
ON repository_triggers (event_type, enabled);
|
|
394
|
+
|
|
395
|
+
CREATE TABLE IF NOT EXISTS repository_management (
|
|
396
|
+
repository_id TEXT PRIMARY KEY
|
|
397
|
+
REFERENCES repositories(id) ON DELETE CASCADE,
|
|
398
|
+
enabled INTEGER NOT NULL DEFAULT 0
|
|
399
|
+
CHECK (enabled IN (0, 1)),
|
|
400
|
+
init_completed_at INTEGER,
|
|
401
|
+
last_scan_at INTEGER,
|
|
402
|
+
last_scan_status TEXT
|
|
403
|
+
CHECK (last_scan_status IS NULL OR last_scan_status IN ('ok', 'failed', 'skipped_no_activity')),
|
|
404
|
+
scan_failure_count INTEGER NOT NULL DEFAULT 0,
|
|
405
|
+
created_at INTEGER NOT NULL,
|
|
406
|
+
updated_at INTEGER NOT NULL
|
|
407
|
+
);
|
|
408
|
+
|
|
409
|
+
-- ── Full-text Search (FTS5) ───────────────────────────────────────────────────
|
|
410
|
+
|
|
411
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS fts_actions USING fts5(
|
|
412
|
+
action_type, detail,
|
|
413
|
+
content='agent_actions', content_rowid='id',
|
|
414
|
+
tokenize='trigram'
|
|
415
|
+
);
|
|
416
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS fts_messages USING fts5(
|
|
417
|
+
content,
|
|
418
|
+
content='messages', content_rowid='id',
|
|
419
|
+
tokenize='trigram'
|
|
420
|
+
);
|
|
421
|
+
|
|
422
|
+
CREATE TRIGGER IF NOT EXISTS trg_actions_ai AFTER INSERT ON agent_actions BEGIN
|
|
423
|
+
INSERT INTO fts_actions(rowid, action_type, detail)
|
|
424
|
+
VALUES (new.id, new.action_type, json_extract(new.detail, '$'));
|
|
425
|
+
END;
|
|
426
|
+
CREATE TRIGGER IF NOT EXISTS trg_actions_ad AFTER DELETE ON agent_actions BEGIN
|
|
427
|
+
INSERT INTO fts_actions(fts_actions, rowid, action_type, detail)
|
|
428
|
+
VALUES ('delete', old.id, old.action_type, json_extract(old.detail, '$'));
|
|
429
|
+
END;
|
|
430
|
+
CREATE TRIGGER IF NOT EXISTS trg_messages_ai AFTER INSERT ON messages BEGIN
|
|
431
|
+
INSERT INTO fts_messages(rowid, content) VALUES (new.id, new.content);
|
|
432
|
+
END;
|
|
433
|
+
CREATE TRIGGER IF NOT EXISTS trg_messages_ad AFTER DELETE ON messages BEGIN
|
|
434
|
+
INSERT INTO fts_messages(fts_messages, rowid, content)
|
|
435
|
+
VALUES ('delete', old.id, old.content);
|
|
436
|
+
END;
|
|
437
|
+
|
|
438
|
+
-- ── Docs & QA full-text index (DOCS_QA_DESIGN.md §7) ─────────────────────────
|
|
439
|
+
--
|
|
440
|
+
-- Contentless FTS5 table — the source of truth lives on disk under
|
|
441
|
+
-- docs/user/, the indexer re-builds rows on boot scan and on chokidar
|
|
442
|
+
-- file events. Column order matches the bm25 weights vector
|
|
443
|
+
-- (3.0, 2.5, 2.0, 1.5, 1.2, 1.0) applied at query time. Unindexed columns
|
|
444
|
+
-- (slug, tags, process_keys, config_keys, category, section, status, anchors)
|
|
445
|
+
-- are filter-only and are never ranked.
|
|
446
|
+
|
|
447
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS fts_docs USING fts5(
|
|
448
|
+
slug UNINDEXED,
|
|
449
|
+
title, keywords, aliases, summary, ask_examples, body,
|
|
450
|
+
tags UNINDEXED, process_keys UNINDEXED, config_keys UNINDEXED,
|
|
451
|
+
category UNINDEXED, section UNINDEXED, status UNINDEXED,
|
|
452
|
+
anchors UNINDEXED,
|
|
453
|
+
related UNINDEXED,
|
|
454
|
+
tokenize='trigram'
|
|
455
|
+
);
|
|
456
|
+
|
|
457
|
+
-- ── Docs term subindex (DOCS-QA-SEARCH-PRECISION-PLAN.md §6) ────────────
|
|
458
|
+
--
|
|
459
|
+
-- Term-granular companion to fts_docs. Populated by indexer.ts at the
|
|
460
|
+
-- same time as fts_docs. One row per doc-level "header" (frontmatter
|
|
461
|
+
-- title + aliases + keywords merged) plus one row per H2/H3 section.
|
|
462
|
+
-- Query path: /api/docs/term-search hits this table first; the body
|
|
463
|
+
-- index is a fallback. Tokenizer is unicode61 because term lookups are
|
|
464
|
+
-- almost always Latin-script identifier-style queries; CJK fallback is
|
|
465
|
+
-- handled by the trigram body index.
|
|
466
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS fts_doc_terms USING fts5(
|
|
467
|
+
slug UNINDEXED,
|
|
468
|
+
anchor UNINDEXED,
|
|
469
|
+
term, aliases, summary,
|
|
470
|
+
category UNINDEXED,
|
|
471
|
+
tokenize='unicode61 remove_diacritics 2'
|
|
472
|
+
);
|
|
473
|
+
|
|
474
|
+
-- ── Body word index — DOCS-QA-SEARCH-PRECISION-PLAN.md §7 ───────────────
|
|
475
|
+
--
|
|
476
|
+
-- Word-boundary English companion to fts_docs (which keeps trigram
|
|
477
|
+
-- tokenization for CJK substring fallback). Carries the same ranked-
|
|
478
|
+
-- text columns as fts_docs plus the two filter columns the search
|
|
479
|
+
-- route actually uses (category, tags) so the ASCII branch can stay
|
|
480
|
+
-- a single-table query. Storing UNINDEXED columns on a contentless
|
|
481
|
+
-- FTS5 table costs only the raw bytes — they are not tokenized, do
|
|
482
|
+
-- not participate in BM25, and do not enlarge the FTS index.
|
|
483
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS fts_docs_word USING fts5(
|
|
484
|
+
slug UNINDEXED,
|
|
485
|
+
title, keywords, aliases, summary, ask_examples, body,
|
|
486
|
+
category UNINDEXED, tags UNINDEXED,
|
|
487
|
+
tokenize='unicode61 remove_diacritics 2'
|
|
488
|
+
);
|
|
489
|
+
|
|
490
|
+
-- Side-table per Q7: lets /api/docs/health report indexer drift and the
|
|
491
|
+
-- P5 lint pass detect docs whose on-disk hash diverges from the indexed
|
|
492
|
+
-- copy. (slug, body_hash, frontmatter_hash) is the change-detection
|
|
493
|
+
-- triple; indexed_at is informational.
|
|
494
|
+
CREATE TABLE IF NOT EXISTS docs_revisions (
|
|
495
|
+
slug TEXT PRIMARY KEY,
|
|
496
|
+
body_hash TEXT NOT NULL,
|
|
497
|
+
frontmatter_hash TEXT NOT NULL,
|
|
498
|
+
indexed_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
499
|
+
);
|
|
500
|
+
|
|
501
|
+
-- ── Multi-backend Config ──────────────────────────────────────────────────────
|
|
502
|
+
|
|
503
|
+
CREATE TABLE IF NOT EXISTS backends (
|
|
504
|
+
id TEXT PRIMARY KEY,
|
|
505
|
+
enabled INTEGER NOT NULL DEFAULT 0,
|
|
506
|
+
auth_method TEXT,
|
|
507
|
+
auth_status TEXT NOT NULL DEFAULT 'unknown',
|
|
508
|
+
auth_checked_at TEXT,
|
|
509
|
+
last_error TEXT,
|
|
510
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
511
|
+
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
512
|
+
web_search_enabled INTEGER NOT NULL DEFAULT 0,
|
|
513
|
+
auth_detail TEXT,
|
|
514
|
+
auth_first_expired_at TEXT,
|
|
515
|
+
auth_notified_at TEXT,
|
|
516
|
+
auth_notification_count INTEGER NOT NULL DEFAULT 0,
|
|
517
|
+
auth_last_success_at TEXT,
|
|
518
|
+
auth_keepalive_notified_at TEXT,
|
|
519
|
+
auth_last_verified_at TEXT
|
|
520
|
+
);
|
|
521
|
+
|
|
522
|
+
CREATE TABLE IF NOT EXISTS backend_global_defaults (
|
|
523
|
+
singleton INTEGER PRIMARY KEY CHECK (singleton = 1),
|
|
524
|
+
default_backend TEXT NOT NULL,
|
|
525
|
+
default_lite_model TEXT NOT NULL,
|
|
526
|
+
default_medium_model TEXT NOT NULL,
|
|
527
|
+
default_high_model TEXT NOT NULL,
|
|
528
|
+
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
529
|
+
advisor_enabled INTEGER NOT NULL DEFAULT 0,
|
|
530
|
+
advisor_model TEXT,
|
|
531
|
+
FOREIGN KEY (default_backend) REFERENCES backends(id)
|
|
532
|
+
);
|
|
533
|
+
|
|
534
|
+
CREATE TABLE IF NOT EXISTS process_backend_config (
|
|
535
|
+
process_key TEXT PRIMARY KEY,
|
|
536
|
+
main_backend TEXT NOT NULL,
|
|
537
|
+
main_model TEXT NOT NULL,
|
|
538
|
+
fallback_backend TEXT,
|
|
539
|
+
fallback_model TEXT,
|
|
540
|
+
max_turns INTEGER NOT NULL DEFAULT 50,
|
|
541
|
+
max_budget_usd REAL NOT NULL DEFAULT 1.00,
|
|
542
|
+
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
543
|
+
updated_by TEXT NOT NULL DEFAULT 'user',
|
|
544
|
+
FOREIGN KEY (main_backend) REFERENCES backends(id),
|
|
545
|
+
FOREIGN KEY (fallback_backend) REFERENCES backends(id)
|
|
546
|
+
);
|
|
547
|
+
|
|
548
|
+
-- ── Auth Telemetry ────────────────────────────────────────────────────────────
|
|
549
|
+
|
|
550
|
+
CREATE TABLE IF NOT EXISTS auth_telemetry_counters (
|
|
551
|
+
backend_id TEXT NOT NULL,
|
|
552
|
+
counter_key TEXT NOT NULL,
|
|
553
|
+
bucket_hour TEXT NOT NULL,
|
|
554
|
+
source TEXT NOT NULL DEFAULT 'reactive',
|
|
555
|
+
count INTEGER NOT NULL DEFAULT 0,
|
|
556
|
+
PRIMARY KEY (backend_id, counter_key, bucket_hour, source)
|
|
557
|
+
);
|
|
558
|
+
CREATE INDEX IF NOT EXISTS idx_auth_telemetry_bucket
|
|
559
|
+
ON auth_telemetry_counters(bucket_hour);
|
|
560
|
+
|
|
561
|
+
-- ── Life Management ───────────────────────────────────────────────────────────
|
|
562
|
+
|
|
563
|
+
CREATE TABLE IF NOT EXISTS books (
|
|
564
|
+
id INTEGER PRIMARY KEY,
|
|
565
|
+
title TEXT NOT NULL,
|
|
566
|
+
author TEXT,
|
|
567
|
+
source TEXT NOT NULL DEFAULT 'kindle',
|
|
568
|
+
status TEXT DEFAULT 'reading',
|
|
569
|
+
started_at TEXT,
|
|
570
|
+
completed_at TEXT,
|
|
571
|
+
rating INTEGER,
|
|
572
|
+
notes TEXT,
|
|
573
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
574
|
+
);
|
|
575
|
+
CREATE INDEX IF NOT EXISTS idx_books_status ON books(status);
|
|
576
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_books_title_author
|
|
577
|
+
ON books(title, COALESCE(author, ''));
|
|
578
|
+
|
|
579
|
+
CREATE TABLE IF NOT EXISTS reading_highlights (
|
|
580
|
+
id INTEGER PRIMARY KEY,
|
|
581
|
+
book_id INTEGER REFERENCES books(id),
|
|
582
|
+
content TEXT NOT NULL,
|
|
583
|
+
location TEXT,
|
|
584
|
+
note TEXT,
|
|
585
|
+
highlighted_at TEXT,
|
|
586
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
587
|
+
);
|
|
588
|
+
CREATE INDEX IF NOT EXISTS idx_reading_highlights_book
|
|
589
|
+
ON reading_highlights(book_id);
|
|
590
|
+
|
|
591
|
+
-- ── Multi-provider Mail ───────────────────────────────────────────────────────
|
|
592
|
+
|
|
593
|
+
CREATE TABLE IF NOT EXISTS mail_accounts (
|
|
594
|
+
id TEXT PRIMARY KEY,
|
|
595
|
+
kind TEXT NOT NULL,
|
|
596
|
+
email TEXT NOT NULL,
|
|
597
|
+
label TEXT,
|
|
598
|
+
auth_type TEXT NOT NULL,
|
|
599
|
+
auth_status TEXT NOT NULL DEFAULT 'healthy',
|
|
600
|
+
secret_blob_name TEXT NOT NULL,
|
|
601
|
+
poll_cursor_json TEXT,
|
|
602
|
+
poll_interval_seconds INTEGER NOT NULL DEFAULT 300,
|
|
603
|
+
idle_enabled INTEGER NOT NULL DEFAULT 0,
|
|
604
|
+
idle_fallback_until TEXT,
|
|
605
|
+
unified_poll INTEGER NOT NULL DEFAULT 1,
|
|
606
|
+
active INTEGER NOT NULL DEFAULT 1,
|
|
607
|
+
created_at_utc TEXT NOT NULL,
|
|
608
|
+
last_error TEXT,
|
|
609
|
+
last_error_at_utc TEXT,
|
|
610
|
+
last_poll_at_utc TEXT,
|
|
611
|
+
consecutive_error_count INTEGER NOT NULL DEFAULT 0,
|
|
612
|
+
imap_capabilities_json TEXT,
|
|
613
|
+
UNIQUE(kind, email)
|
|
614
|
+
);
|
|
615
|
+
|
|
616
|
+
CREATE TABLE IF NOT EXISTS mail_messages_index (
|
|
617
|
+
account_id TEXT NOT NULL REFERENCES mail_accounts(id) ON DELETE CASCADE,
|
|
618
|
+
provider_msg_id TEXT NOT NULL,
|
|
619
|
+
rfc822_msg_id TEXT,
|
|
620
|
+
thread_id TEXT,
|
|
621
|
+
folder TEXT NOT NULL,
|
|
622
|
+
received_at_utc TEXT NOT NULL,
|
|
623
|
+
subject TEXT,
|
|
624
|
+
from_email TEXT,
|
|
625
|
+
to_emails_json TEXT,
|
|
626
|
+
snippet TEXT,
|
|
627
|
+
is_read INTEGER NOT NULL DEFAULT 0,
|
|
628
|
+
flags_json TEXT,
|
|
629
|
+
has_attachment INTEGER NOT NULL DEFAULT 0,
|
|
630
|
+
deleted_at_utc TEXT,
|
|
631
|
+
observed_at_utc TEXT NOT NULL,
|
|
632
|
+
PRIMARY KEY (account_id, provider_msg_id)
|
|
633
|
+
);
|
|
634
|
+
CREATE INDEX IF NOT EXISTS idx_mail_messages_thread
|
|
635
|
+
ON mail_messages_index(account_id, thread_id);
|
|
636
|
+
CREATE INDEX IF NOT EXISTS idx_mail_messages_received
|
|
637
|
+
ON mail_messages_index(received_at_utc);
|
|
638
|
+
CREATE INDEX IF NOT EXISTS idx_mail_messages_unread
|
|
639
|
+
ON mail_messages_index(account_id, is_read, received_at_utc)
|
|
640
|
+
WHERE is_read = 0 AND deleted_at_utc IS NULL;
|
|
641
|
+
|
|
642
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS fts_mail_messages USING fts5(
|
|
643
|
+
account_id UNINDEXED,
|
|
644
|
+
provider_msg_id UNINDEXED,
|
|
645
|
+
subject,
|
|
646
|
+
snippet,
|
|
647
|
+
tokenize = 'unicode61 remove_diacritics 2'
|
|
648
|
+
);
|
|
649
|
+
|
|
650
|
+
CREATE TRIGGER IF NOT EXISTS trg_mail_messages_ai
|
|
651
|
+
AFTER INSERT ON mail_messages_index
|
|
652
|
+
WHEN NEW.deleted_at_utc IS NULL
|
|
653
|
+
BEGIN
|
|
654
|
+
INSERT INTO fts_mail_messages(account_id, provider_msg_id, subject, snippet)
|
|
655
|
+
VALUES (NEW.account_id, NEW.provider_msg_id,
|
|
656
|
+
COALESCE(NEW.subject, ''), COALESCE(NEW.snippet, ''));
|
|
657
|
+
END;
|
|
658
|
+
CREATE TRIGGER IF NOT EXISTS trg_mail_messages_ad
|
|
659
|
+
AFTER DELETE ON mail_messages_index
|
|
660
|
+
BEGIN
|
|
661
|
+
DELETE FROM fts_mail_messages
|
|
662
|
+
WHERE account_id = OLD.account_id
|
|
663
|
+
AND provider_msg_id = OLD.provider_msg_id;
|
|
664
|
+
END;
|
|
665
|
+
CREATE TRIGGER IF NOT EXISTS trg_mail_messages_au
|
|
666
|
+
AFTER UPDATE OF subject, snippet, deleted_at_utc ON mail_messages_index
|
|
667
|
+
BEGIN
|
|
668
|
+
DELETE FROM fts_mail_messages
|
|
669
|
+
WHERE account_id = OLD.account_id
|
|
670
|
+
AND provider_msg_id = OLD.provider_msg_id;
|
|
671
|
+
INSERT INTO fts_mail_messages(account_id, provider_msg_id, subject, snippet)
|
|
672
|
+
SELECT NEW.account_id, NEW.provider_msg_id,
|
|
673
|
+
COALESCE(NEW.subject, ''), COALESCE(NEW.snippet, '')
|
|
674
|
+
WHERE NEW.deleted_at_utc IS NULL;
|
|
675
|
+
END;
|
|
676
|
+
|
|
677
|
+
CREATE TABLE IF NOT EXISTS parse_failures (
|
|
678
|
+
id INTEGER PRIMARY KEY,
|
|
679
|
+
account_id TEXT,
|
|
680
|
+
provider_msg_id TEXT,
|
|
681
|
+
sender TEXT,
|
|
682
|
+
subject TEXT,
|
|
683
|
+
snippet TEXT,
|
|
684
|
+
error_reason TEXT NOT NULL,
|
|
685
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
686
|
+
);
|
|
687
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_parse_failures_account_msg
|
|
688
|
+
ON parse_failures(account_id, provider_msg_id)
|
|
689
|
+
WHERE provider_msg_id IS NOT NULL;
|
|
690
|
+
CREATE INDEX IF NOT EXISTS idx_parse_failures_created_at
|
|
691
|
+
ON parse_failures(created_at);
|
|
692
|
+
CREATE INDEX IF NOT EXISTS idx_parse_failures_account
|
|
693
|
+
ON parse_failures(account_id);
|
|
694
|
+
|
|
695
|
+
CREATE TABLE IF NOT EXISTS travel_bookings (
|
|
696
|
+
id INTEGER PRIMARY KEY,
|
|
697
|
+
type TEXT NOT NULL,
|
|
698
|
+
provider TEXT NOT NULL,
|
|
699
|
+
destination TEXT,
|
|
700
|
+
start_date TEXT,
|
|
701
|
+
end_date TEXT,
|
|
702
|
+
confirmation_number TEXT,
|
|
703
|
+
amount INTEGER,
|
|
704
|
+
currency TEXT NOT NULL DEFAULT 'USD',
|
|
705
|
+
status TEXT DEFAULT 'upcoming',
|
|
706
|
+
provider_msg_id TEXT,
|
|
707
|
+
account_id TEXT,
|
|
708
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
709
|
+
);
|
|
710
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_travel_bookings_account_msg
|
|
711
|
+
ON travel_bookings(account_id, provider_msg_id)
|
|
712
|
+
WHERE provider_msg_id IS NOT NULL;
|
|
713
|
+
CREATE INDEX IF NOT EXISTS idx_travel_bookings_start ON travel_bookings(start_date);
|
|
714
|
+
CREATE INDEX IF NOT EXISTS idx_travel_bookings_status ON travel_bookings(status);
|
|
715
|
+
CREATE INDEX IF NOT EXISTS idx_travel_bookings_type ON travel_bookings(type);
|
|
716
|
+
CREATE INDEX IF NOT EXISTS idx_travel_bookings_account ON travel_bookings(account_id);
|
|
717
|
+
|
|
718
|
+
CREATE TABLE IF NOT EXISTS receipts (
|
|
719
|
+
id INTEGER PRIMARY KEY,
|
|
720
|
+
provider_msg_id TEXT NOT NULL,
|
|
721
|
+
attachment_id TEXT NOT NULL,
|
|
722
|
+
filename TEXT NOT NULL,
|
|
723
|
+
mime_type TEXT NOT NULL,
|
|
724
|
+
size_bytes INTEGER,
|
|
725
|
+
category TEXT,
|
|
726
|
+
obsidian_path TEXT,
|
|
727
|
+
saved_at TEXT,
|
|
728
|
+
account_id TEXT,
|
|
729
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
730
|
+
UNIQUE(account_id, provider_msg_id, attachment_id)
|
|
731
|
+
);
|
|
732
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_category ON receipts(category);
|
|
733
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_saved
|
|
734
|
+
ON receipts(saved_at) WHERE saved_at IS NOT NULL;
|
|
735
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_account ON receipts(account_id);
|
|
736
|
+
|
|
737
|
+
-- ── Management Mode ───────────────────────────────────────────────────────────
|
|
738
|
+
|
|
739
|
+
CREATE TABLE IF NOT EXISTS migration_backups (
|
|
740
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
741
|
+
created_at TEXT NOT NULL,
|
|
742
|
+
source_path TEXT NOT NULL,
|
|
743
|
+
target_path TEXT NOT NULL,
|
|
744
|
+
backup_path TEXT NOT NULL,
|
|
745
|
+
files_count INTEGER NOT NULL,
|
|
746
|
+
bytes INTEGER NOT NULL,
|
|
747
|
+
status TEXT NOT NULL CHECK (status IN ('pending', 'completed', 'rolled_back', 'expired')),
|
|
748
|
+
expires_at TEXT NOT NULL,
|
|
749
|
+
rollback_completed_at TEXT
|
|
750
|
+
);
|
|
751
|
+
CREATE INDEX IF NOT EXISTS idx_migration_backups_status_expires
|
|
752
|
+
ON migration_backups(status, expires_at);
|
|
753
|
+
|
|
754
|
+
-- ── MCP Servers ───────────────────────────────────────────────────────────────
|
|
755
|
+
|
|
756
|
+
CREATE TABLE IF NOT EXISTS mcp_servers (
|
|
757
|
+
id TEXT PRIMARY KEY,
|
|
758
|
+
name TEXT NOT NULL,
|
|
759
|
+
transport TEXT NOT NULL CHECK (transport IN ('stdio', 'http', 'sse')),
|
|
760
|
+
command TEXT,
|
|
761
|
+
args TEXT,
|
|
762
|
+
cwd TEXT,
|
|
763
|
+
url TEXT,
|
|
764
|
+
env_keys TEXT NOT NULL DEFAULT '[]',
|
|
765
|
+
header_keys TEXT NOT NULL DEFAULT '[]',
|
|
766
|
+
backends TEXT NOT NULL,
|
|
767
|
+
enabled INTEGER NOT NULL DEFAULT 0,
|
|
768
|
+
risk_tier TEXT NOT NULL DEFAULT 'approve' CHECK (risk_tier IN ('read', 'approve')),
|
|
769
|
+
tool_allowlist TEXT,
|
|
770
|
+
last_probe_at INTEGER,
|
|
771
|
+
last_probe_status TEXT,
|
|
772
|
+
created_at INTEGER NOT NULL,
|
|
773
|
+
updated_at INTEGER NOT NULL
|
|
774
|
+
);
|
|
775
|
+
CREATE INDEX IF NOT EXISTS idx_mcp_servers_enabled ON mcp_servers(enabled);
|
|
776
|
+
|
|
777
|
+
CREATE TABLE IF NOT EXISTS mcp_tool_calls (
|
|
778
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
779
|
+
server_id TEXT NOT NULL,
|
|
780
|
+
tool_name TEXT NOT NULL,
|
|
781
|
+
event_type TEXT,
|
|
782
|
+
session_id TEXT,
|
|
783
|
+
ok INTEGER,
|
|
784
|
+
error TEXT,
|
|
785
|
+
called_at INTEGER NOT NULL,
|
|
786
|
+
duration_ms INTEGER
|
|
787
|
+
);
|
|
788
|
+
CREATE INDEX IF NOT EXISTS idx_mcp_tool_calls_server
|
|
789
|
+
ON mcp_tool_calls(server_id, called_at DESC);
|
|
790
|
+
|
|
791
|
+
-- ── Chat Attachments ──────────────────────────────────────────────────────────
|
|
792
|
+
|
|
793
|
+
CREATE TABLE IF NOT EXISTS chat_attachments (
|
|
794
|
+
id TEXT PRIMARY KEY,
|
|
795
|
+
session_id INTEGER,
|
|
796
|
+
message_id INTEGER,
|
|
797
|
+
direction TEXT NOT NULL CHECK (direction IN ('inbound', 'outbound')),
|
|
798
|
+
provenance TEXT NOT NULL,
|
|
799
|
+
path TEXT NOT NULL,
|
|
800
|
+
original_filename TEXT NOT NULL,
|
|
801
|
+
safe_filename TEXT NOT NULL,
|
|
802
|
+
mime_type TEXT NOT NULL,
|
|
803
|
+
size_bytes INTEGER NOT NULL,
|
|
804
|
+
turn_token TEXT,
|
|
805
|
+
caption TEXT,
|
|
806
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
807
|
+
FOREIGN KEY (session_id) REFERENCES conversation_sessions(id) ON DELETE SET NULL,
|
|
808
|
+
FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE
|
|
809
|
+
);
|
|
810
|
+
CREATE INDEX IF NOT EXISTS idx_chat_attachments_session
|
|
811
|
+
ON chat_attachments(session_id);
|
|
812
|
+
CREATE INDEX IF NOT EXISTS idx_chat_attachments_message
|
|
813
|
+
ON chat_attachments(message_id);
|
|
814
|
+
CREATE INDEX IF NOT EXISTS idx_chat_attachments_turn
|
|
815
|
+
ON chat_attachments(turn_token) WHERE turn_token IS NOT NULL;
|
|
816
|
+
|
|
817
|
+
-- ── Voice Transcripts (local Whisper) ────────────────────────────────────────
|
|
818
|
+
-- Cached transcription of inbound audio attachments produced by the
|
|
819
|
+
-- VoiceTranscriber service. Keyed 1:1 to chat_attachments.id so a
|
|
820
|
+
-- re-dispatch of the same turn does not re-run inference. See
|
|
821
|
+
-- docs/design/appendices/voice-transcription.md.
|
|
822
|
+
CREATE TABLE IF NOT EXISTS voice_transcripts (
|
|
823
|
+
attachment_id TEXT PRIMARY KEY
|
|
824
|
+
REFERENCES chat_attachments(id) ON DELETE CASCADE,
|
|
825
|
+
model TEXT NOT NULL,
|
|
826
|
+
language TEXT,
|
|
827
|
+
duration_sec REAL,
|
|
828
|
+
transcript TEXT NOT NULL,
|
|
829
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
830
|
+
);
|
|
831
|
+
|
|
832
|
+
-- ── Integration Delegation ────────────────────────────────────────────────────
|
|
833
|
+
|
|
834
|
+
CREATE TABLE IF NOT EXISTS integration_probes (
|
|
835
|
+
integration_key TEXT NOT NULL,
|
|
836
|
+
backend_id TEXT NOT NULL,
|
|
837
|
+
result_json TEXT NOT NULL,
|
|
838
|
+
probed_at TEXT NOT NULL,
|
|
839
|
+
PRIMARY KEY (integration_key, backend_id)
|
|
840
|
+
);
|
|
841
|
+
CREATE INDEX IF NOT EXISTS idx_integration_probes_recency
|
|
842
|
+
ON integration_probes(probed_at);
|
|
843
|
+
|
|
844
|
+
-- ── Integration Drift Detection (INTEGRATION-DRIFT-DETECTION-PLAN.md §4) ─────
|
|
845
|
+
-- Mode-agnostic snapshot store. Each (integration, window_key) partition
|
|
846
|
+
-- holds the last-fetched payload set; reconcile diffs incoming items against
|
|
847
|
+
-- it. window_key partitions diffs so a deletion in a narrow window does not
|
|
848
|
+
-- emit a phantom 'deleted' for an item still alive in a wider window. The
|
|
849
|
+
-- per-integration normalizer's inWindow predicate further distinguishes
|
|
850
|
+
-- "slid out of window" prunes from real upstream deletions.
|
|
851
|
+
--
|
|
852
|
+
-- payload_json carries only the fields needed for diff + render (target
|
|
853
|
+
-- <2 KB). actor_hint pre-marks items the caller wrote itself; the reconciler
|
|
854
|
+
-- still consults integration_writes (below) as the authoritative source.
|
|
855
|
+
CREATE TABLE IF NOT EXISTS integration_snapshots (
|
|
856
|
+
integration TEXT NOT NULL,
|
|
857
|
+
window_key TEXT NOT NULL,
|
|
858
|
+
item_id TEXT NOT NULL,
|
|
859
|
+
content_hash TEXT NOT NULL,
|
|
860
|
+
payload_json TEXT NOT NULL,
|
|
861
|
+
item_start TEXT,
|
|
862
|
+
fetched_at TEXT NOT NULL,
|
|
863
|
+
actor_hint TEXT NOT NULL DEFAULT 'user'
|
|
864
|
+
CHECK (actor_hint IN ('user', 'agent', 'system', 'unknown')),
|
|
865
|
+
PRIMARY KEY (integration, window_key, item_id)
|
|
866
|
+
);
|
|
867
|
+
-- Imminent-event scheduler scans this index range to find calendar events
|
|
868
|
+
-- starting in [now, now+15min] without a full table scan.
|
|
869
|
+
CREATE INDEX IF NOT EXISTS idx_integration_snapshots_imminent
|
|
870
|
+
ON integration_snapshots(integration, item_start)
|
|
871
|
+
WHERE item_start IS NOT NULL;
|
|
872
|
+
CREATE INDEX IF NOT EXISTS idx_integration_snapshots_fetched_at
|
|
873
|
+
ON integration_snapshots(integration, window_key, fetched_at);
|
|
874
|
+
|
|
875
|
+
-- Generalises AgentWriteTracker (in-memory, path-keyed) to integration
|
|
876
|
+
-- writes with (integration, item_id) keys that survive process restarts.
|
|
877
|
+
-- Reconcile consults this on every created/modified diff entry: a row
|
|
878
|
+
-- whose expires_at > now tags the diff actor='agent' instead of 'user',
|
|
879
|
+
-- so the agent's own calendar/mail/notion writes do not surface as
|
|
880
|
+
-- user-originated observations on the next reconcile.
|
|
881
|
+
--
|
|
882
|
+
-- TTL default is set per-integration in code (15 min for calendar, 30 min
|
|
883
|
+
-- for slower-cadence integrations like Gmail/Notion). Cleanup runs as part
|
|
884
|
+
-- of the daily retention pass.
|
|
885
|
+
CREATE TABLE IF NOT EXISTS integration_writes (
|
|
886
|
+
integration TEXT NOT NULL,
|
|
887
|
+
item_id TEXT NOT NULL,
|
|
888
|
+
written_at TEXT NOT NULL,
|
|
889
|
+
written_by TEXT NOT NULL DEFAULT 'agent',
|
|
890
|
+
expires_at TEXT NOT NULL,
|
|
891
|
+
PRIMARY KEY (integration, item_id)
|
|
892
|
+
);
|
|
893
|
+
CREATE INDEX IF NOT EXISTS idx_integration_writes_expires
|
|
894
|
+
ON integration_writes(expires_at);
|
|
895
|
+
|
|
896
|
+
-- INTEGRATION-DRIFT-PHASE-7-PLAN.md §3.2 — persistent dedup for the
|
|
897
|
+
-- 15-minute imminent-meeting reminder. Pre-Phase-7 the scheduler kept
|
|
898
|
+
-- an in-memory Set, which was lost on every daemon restart and re-DMed
|
|
899
|
+
-- every imminent event whose start lay within the next 15 minutes. The
|
|
900
|
+
-- table is a separate primary-key store (not a column on
|
|
901
|
+
-- integration_snapshots) so adding it is idempotent under the project's
|
|
902
|
+
-- CREATE-IF-NOT-EXISTS-only policy regardless of prior schema state.
|
|
903
|
+
-- Cleanup runs daily via retention.ts (rows older than 24 h are pruned;
|
|
904
|
+
-- a calendar event cannot stay imminent longer than 15 min so 24 h is a
|
|
905
|
+
-- comfortable safety margin).
|
|
906
|
+
CREATE TABLE IF NOT EXISTS imminent_event_notifications (
|
|
907
|
+
item_id TEXT PRIMARY KEY,
|
|
908
|
+
notified_at TEXT NOT NULL
|
|
909
|
+
);
|
|
910
|
+
CREATE INDEX IF NOT EXISTS idx_imminent_event_notifications_notified_at
|
|
911
|
+
ON imminent_event_notifications(notified_at);
|
|
912
|
+
|
|
913
|
+
-- ── Management Registry & Entities (docs/design/21-management-registry-and-entities.md) ──
|
|
914
|
+
--
|
|
915
|
+
-- L1 — Section B authoritative storage for managed tasks (§9.2).
|
|
916
|
+
-- The file at <contextDir>/rules/management.md is a deterministic render
|
|
917
|
+
-- from this table; user hand-edits are parsed back via the registry
|
|
918
|
+
-- watcher (§7.2 management-registry.ts), with parse failures triggering
|
|
919
|
+
-- a re-render from this table (FR-13).
|
|
920
|
+
--
|
|
921
|
+
-- Hard-delete on stop (§8.5 ADR): rows are removed when the user stops a
|
|
922
|
+
-- managed task. History is recovered from \`agent_actions\` rows tagged
|
|
923
|
+
-- \`management_task.*\` plus \`md_file_snapshots\` for the file itself.
|
|
924
|
+
--
|
|
925
|
+
-- The (app_normalized, cadence) UNIQUE constraint is the DB-layer
|
|
926
|
+
-- defense for §NFR-3 / §12 ("two registrations from two devices") —
|
|
927
|
+
-- since stops are hard-delete, the constraint applies to all rows.
|
|
928
|
+
CREATE TABLE IF NOT EXISTS managed_tasks (
|
|
929
|
+
-- 'mt_<n>' allocated from managed_task_seq. Never reused so historical
|
|
930
|
+
-- agent_actions references stay unambiguous after a stop+re-register.
|
|
931
|
+
id TEXT PRIMARY KEY,
|
|
932
|
+
-- Free-text user-typed description rendered in management.md's "Intent"
|
|
933
|
+
-- column. Length-capped via APP/INTENT validators in management-domains.ts.
|
|
934
|
+
intent TEXT NOT NULL,
|
|
935
|
+
-- User-typed app label as it appears in management.md's "App" column.
|
|
936
|
+
app TEXT NOT NULL,
|
|
937
|
+
-- Lower-cased + whitespace-collapsed dedup key (normalizeAppLabel).
|
|
938
|
+
-- Indexed below for the registration-time semantic-dedup probe.
|
|
939
|
+
app_normalized TEXT NOT NULL,
|
|
940
|
+
-- Human-readable cadence string (e.g. "daily 10:00 (Asia/Tokyo)").
|
|
941
|
+
-- The cron form lives on recurring_schedules; this column preserves
|
|
942
|
+
-- the user's natural-language phrasing for the rendered table.
|
|
943
|
+
cadence TEXT NOT NULL,
|
|
944
|
+
-- Primary L2 directory (e.g. 'work/meetings/'). The leading 'context/'
|
|
945
|
+
-- is implicit. NULL is permitted only between row creation and the
|
|
946
|
+
-- first successful run (§FR-16); the scheduled-managed-task skill
|
|
947
|
+
-- backfills it on first fire. The CHECK enforces the trailing-slash
|
|
948
|
+
-- invariant from §9.1; the <domain>/<type-plural> shape is enforced
|
|
949
|
+
-- by the API layer via isValidOutputPath().
|
|
950
|
+
output_path TEXT,
|
|
951
|
+
-- One-to-one with the underlying recurring_schedules row. ON DELETE
|
|
952
|
+
-- CASCADE means deleting the schedule cleans up the managed-task row.
|
|
953
|
+
-- The user-facing stop flow (§10.3) deletes managed_tasks first and
|
|
954
|
+
-- the API route then deletes the matching recurring_schedules row in
|
|
955
|
+
-- the same transaction; the FK + UNIQUE here are the integrity floor.
|
|
956
|
+
schedule_id INTEGER NOT NULL UNIQUE
|
|
957
|
+
REFERENCES recurring_schedules(id) ON DELETE CASCADE,
|
|
958
|
+
-- ISO-8601 UTC. Set by scheduled-managed-task on every fire.
|
|
959
|
+
last_run_at TEXT,
|
|
960
|
+
-- Free text 'ok (3 new)' / 'failed: ...' (≤120 chars; enforced by
|
|
961
|
+
-- managedTaskRunResultSchema rather than a CHECK).
|
|
962
|
+
last_result TEXT,
|
|
963
|
+
-- Bumped on each failed fire; reset on success. Used by §10.4's
|
|
964
|
+
-- three-strikes notify rule.
|
|
965
|
+
consecutive_failures INTEGER NOT NULL DEFAULT 0,
|
|
966
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
967
|
+
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
968
|
+
CHECK (output_path IS NULL OR output_path LIKE '%/'),
|
|
969
|
+
-- §NFR-3 / §12 — defense-in-depth dedup floor.
|
|
970
|
+
--
|
|
971
|
+
-- IMPORTANT: this UNIQUE keys on the *human-readable* cadence string
|
|
972
|
+
-- ("daily 10:00 (Asia/Tokyo)"), NOT on the resolved cron. So two
|
|
973
|
+
-- semantically-equivalent natural-language phrasings -- "every day
|
|
974
|
+
-- at 10am" vs the same intent rephrased -- slip past this check;
|
|
975
|
+
-- the LLM-judged semantic dedup at registration time (§10.1 step 2)
|
|
976
|
+
-- is the primary defense.
|
|
977
|
+
--
|
|
978
|
+
-- The constraint still helps: it catches exact-string retries and
|
|
979
|
+
-- prevents accidental dual-DM duplicates from racing into the DB.
|
|
980
|
+
-- Future work (tracked in OQ alongside output_path multi-paths) is to
|
|
981
|
+
-- denormalize the cron string onto this table and switch the
|
|
982
|
+
-- UNIQUE key to (app_normalized, cron). That is a Phase 3 / route-
|
|
983
|
+
-- layer concern, not a P1 schema change, since both sides need to
|
|
984
|
+
-- agree on cron-normalization rules first.
|
|
985
|
+
UNIQUE (app_normalized, cadence)
|
|
986
|
+
);
|
|
987
|
+
CREATE INDEX IF NOT EXISTS idx_managed_tasks_app
|
|
988
|
+
ON managed_tasks(app_normalized);
|
|
989
|
+
CREATE INDEX IF NOT EXISTS idx_managed_tasks_output_path
|
|
990
|
+
ON managed_tasks(output_path)
|
|
991
|
+
WHERE output_path IS NOT NULL;
|
|
992
|
+
|
|
993
|
+
-- §9.2 — sequence allocator for stable mt_<n> ids that survive deletes.
|
|
994
|
+
-- Singleton row enforced via PK CHECK; the seed below is idempotent
|
|
995
|
+
-- (INSERT OR IGNORE) so re-applying the schema is a no-op.
|
|
996
|
+
CREATE TABLE IF NOT EXISTS managed_task_seq (
|
|
997
|
+
singleton INTEGER PRIMARY KEY CHECK (singleton = 1),
|
|
998
|
+
next_id INTEGER NOT NULL DEFAULT 1
|
|
999
|
+
);
|
|
1000
|
+
INSERT OR IGNORE INTO managed_task_seq (singleton, next_id) VALUES (1, 1);
|
|
1001
|
+
|
|
1002
|
+
-- §7.6 — entity-mirror table. NOT authoritative (the L2 .md file is);
|
|
1003
|
+
-- this is a watcher-maintained SQLite mirror that backs the §7.6 lookup
|
|
1004
|
+
-- contract (GET /api/entities). On boot, the entity-mirror reconciler
|
|
1005
|
+
-- walks the L2 directory tree and rebuilds this table; if the mirror
|
|
1006
|
+
-- diverges from disk, the file wins and the table is rewritten.
|
|
1007
|
+
--
|
|
1008
|
+
-- 'path' is the relative-to-contextDir form ('work/meetings/foo.md'),
|
|
1009
|
+
-- matching parseEntityPath() output and the .sources frontmatter
|
|
1010
|
+
-- structure documented in §9.3.
|
|
1011
|
+
CREATE TABLE IF NOT EXISTS entities (
|
|
1012
|
+
path TEXT PRIMARY KEY,
|
|
1013
|
+
domain TEXT NOT NULL,
|
|
1014
|
+
-- Singular form ('meeting', 'trip', ...) — matches frontmatter.type.
|
|
1015
|
+
type TEXT NOT NULL,
|
|
1016
|
+
slug TEXT NOT NULL,
|
|
1017
|
+
title TEXT NOT NULL,
|
|
1018
|
+
status TEXT,
|
|
1019
|
+
-- ISO date when present in frontmatter; NULL when the entity has
|
|
1020
|
+
-- no calendar-style anchor (e.g. an open-ended project).
|
|
1021
|
+
date TEXT,
|
|
1022
|
+
last_synced_at TEXT,
|
|
1023
|
+
-- Verbatim mirror of frontmatter.sources (JSON object). Indexed
|
|
1024
|
+
-- key membership lives in entity_source_keys (sidecar) so the §7.6
|
|
1025
|
+
-- (source_key, external_id) lookup runs through a real index.
|
|
1026
|
+
sources_json TEXT NOT NULL DEFAULT '{}'
|
|
1027
|
+
);
|
|
1028
|
+
CREATE INDEX IF NOT EXISTS idx_entities_domain_type_date
|
|
1029
|
+
ON entities(domain, type, date);
|
|
1030
|
+
CREATE INDEX IF NOT EXISTS idx_entities_status
|
|
1031
|
+
ON entities(status)
|
|
1032
|
+
WHERE status IS NOT NULL;
|
|
1033
|
+
|
|
1034
|
+
-- §7.6.1 — sidecar M:N index from entity path → source-key. SQLite's
|
|
1035
|
+
-- json_each is a virtual table and not indexable, so this sidecar
|
|
1036
|
+
-- provides the (source_key, ...) seek path. Insert/update is atomic
|
|
1037
|
+
-- with the parent entities upsert; ON DELETE CASCADE keeps the two
|
|
1038
|
+
-- in lockstep when an entity row is removed.
|
|
1039
|
+
--
|
|
1040
|
+
-- 'source_key' is the verbatim user-typed key (the JSON path into
|
|
1041
|
+
-- 'sources_json' uses it as-is). 'source_key_normalized' is the
|
|
1042
|
+
-- lower-cased dedup form — joins from the activity-view + by-source
|
|
1043
|
+
-- lookups match through it so a third casing variant (ZOOM vs Zoom vs
|
|
1044
|
+
-- zoom) doesn't silently drop a row from the rendered view.
|
|
1045
|
+
CREATE TABLE IF NOT EXISTS entity_source_keys (
|
|
1046
|
+
path TEXT NOT NULL REFERENCES entities(path) ON DELETE CASCADE,
|
|
1047
|
+
source_key TEXT NOT NULL,
|
|
1048
|
+
source_key_normalized TEXT GENERATED ALWAYS AS (LOWER(source_key)) STORED,
|
|
1049
|
+
PRIMARY KEY (path, source_key)
|
|
1050
|
+
);
|
|
1051
|
+
CREATE INDEX IF NOT EXISTS idx_entity_source_keys_lookup
|
|
1052
|
+
ON entity_source_keys(source_key, path);
|
|
1053
|
+
CREATE INDEX IF NOT EXISTS idx_entity_source_keys_normalized
|
|
1054
|
+
ON entity_source_keys(source_key_normalized, path);
|
|
1055
|
+
|
|
1056
|
+
-- §9.1 parse rules — drop-with-warning destination for management.md hand-edit
|
|
1057
|
+
-- failures. The mail-side \`parse_failures\` table above is shaped for IMAP
|
|
1058
|
+
-- ingestion (account_id, provider_msg_id); reusing it would have forced
|
|
1059
|
+
-- nullable mail columns onto a vault-rules failure record. A dedicated
|
|
1060
|
+
-- table keeps the shapes loose-coupled and lets dashboard consumers query
|
|
1061
|
+
-- one or the other without UNION gymnastics.
|
|
1062
|
+
--
|
|
1063
|
+
-- Rows are surfaced on the dashboard's degraded-mode banner (P6) and in the
|
|
1064
|
+
-- §14.3 metric \`aitne_management_parse_failures_total\` (P8). Retention:
|
|
1065
|
+
-- swept by the existing daily retention job alongside other transient
|
|
1066
|
+
-- diagnostics — see core/retention.ts (additive at P8).
|
|
1067
|
+
CREATE TABLE IF NOT EXISTS management_parse_failures (
|
|
1068
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
1069
|
+
-- Section identifier ('A', 'B', 'C') so the dashboard can surface the
|
|
1070
|
+
-- right hint. NULL when the failure is at file level (frontmatter, etc).
|
|
1071
|
+
section TEXT,
|
|
1072
|
+
-- Free-text reason, stable across releases (callers grep by prefix).
|
|
1073
|
+
reason TEXT NOT NULL,
|
|
1074
|
+
-- Verbatim raw line / cell that failed; helps the user repair the edit.
|
|
1075
|
+
raw TEXT,
|
|
1076
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
1077
|
+
);
|
|
1078
|
+
CREATE INDEX IF NOT EXISTS idx_management_parse_failures_created_at
|
|
1079
|
+
ON management_parse_failures(created_at DESC);
|
|
1080
|
+
|
|
1081
|
+
-- ── Skill curation (P22 — appendix p22-skill-self-optimization.md) ──────────
|
|
1082
|
+
--
|
|
1083
|
+
-- Three tables that drive the self-curation loop. Signals are the evidence
|
|
1084
|
+
-- stream — Preview release ships only structure_diff (the hourly walker);
|
|
1085
|
+
-- search_miss / agent_feedback / owner_correction signal types were
|
|
1086
|
+
-- removed when the feature pivoted to "silent background optimization,
|
|
1087
|
+
-- no user feedback collection". Proposals are the optimizer agent's typed-
|
|
1088
|
+
-- payload submissions; runs are an explicit envelope for correlating
|
|
1089
|
+
-- proposals + run-token validation.
|
|
1090
|
+
|
|
1091
|
+
CREATE TABLE IF NOT EXISTS skill_curation_signals (
|
|
1092
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
1093
|
+
skill_slug TEXT NOT NULL,
|
|
1094
|
+
section_id TEXT,
|
|
1095
|
+
signal_type TEXT NOT NULL CHECK (signal_type IN ('structure_diff')),
|
|
1096
|
+
payload_json TEXT NOT NULL,
|
|
1097
|
+
observed_at INTEGER NOT NULL,
|
|
1098
|
+
consumed_at INTEGER,
|
|
1099
|
+
consumed_by_proposal_id INTEGER
|
|
1100
|
+
);
|
|
1101
|
+
CREATE INDEX IF NOT EXISTS idx_skill_signals_unconsumed
|
|
1102
|
+
ON skill_curation_signals(skill_slug, consumed_at)
|
|
1103
|
+
WHERE consumed_at IS NULL;
|
|
1104
|
+
CREATE INDEX IF NOT EXISTS idx_skill_signals_observed_at
|
|
1105
|
+
ON skill_curation_signals(observed_at);
|
|
1106
|
+
|
|
1107
|
+
CREATE TABLE IF NOT EXISTS skill_curation_proposals (
|
|
1108
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
1109
|
+
run_id TEXT NOT NULL,
|
|
1110
|
+
skill_slug TEXT NOT NULL,
|
|
1111
|
+
section_id TEXT NOT NULL,
|
|
1112
|
+
section_kind TEXT NOT NULL,
|
|
1113
|
+
schema_version INTEGER NOT NULL,
|
|
1114
|
+
renderer_version_at_proposal TEXT NOT NULL,
|
|
1115
|
+
prev_payload_json TEXT NOT NULL,
|
|
1116
|
+
new_payload_json TEXT NOT NULL,
|
|
1117
|
+
rendered_md TEXT NOT NULL,
|
|
1118
|
+
diff_additions INTEGER NOT NULL,
|
|
1119
|
+
diff_modifications INTEGER NOT NULL,
|
|
1120
|
+
diff_removals INTEGER NOT NULL,
|
|
1121
|
+
diff_kind TEXT NOT NULL CHECK (diff_kind IN (
|
|
1122
|
+
'additive_only', 'cosmetic_only', 'mixed', 'destructive'
|
|
1123
|
+
)),
|
|
1124
|
+
rationale TEXT NOT NULL,
|
|
1125
|
+
signals_json TEXT NOT NULL,
|
|
1126
|
+
smoke_passed_at INTEGER,
|
|
1127
|
+
smoke_failures_json TEXT,
|
|
1128
|
+
-- Per P22 §4 (post-approval-removal): every proposal that survives the
|
|
1129
|
+
-- chokepoint is 'applied' immediately; the only system-driven roll-back
|
|
1130
|
+
-- is 'auto_reverted' (set by the §5.3 sweep). All other terminal
|
|
1131
|
+
-- statuses describe rejection causes — the row is still persisted so
|
|
1132
|
+
-- failed attempts remain inspectable from the dashboard.
|
|
1133
|
+
status TEXT NOT NULL CHECK (status IN (
|
|
1134
|
+
'applied', 'auto_reverted', 'conflict',
|
|
1135
|
+
'smoke_failed', 'diff_caps', 'render_budget'
|
|
1136
|
+
)),
|
|
1137
|
+
proposed_at INTEGER NOT NULL,
|
|
1138
|
+
decided_at INTEGER,
|
|
1139
|
+
decided_by TEXT,
|
|
1140
|
+
applied_overlay_path TEXT
|
|
1141
|
+
);
|
|
1142
|
+
CREATE INDEX IF NOT EXISTS idx_proposals_status
|
|
1143
|
+
ON skill_curation_proposals(status, proposed_at DESC);
|
|
1144
|
+
CREATE INDEX IF NOT EXISTS idx_proposals_skill_section
|
|
1145
|
+
ON skill_curation_proposals(skill_slug, section_id, proposed_at DESC);
|
|
1146
|
+
CREATE INDEX IF NOT EXISTS idx_proposals_run
|
|
1147
|
+
ON skill_curation_proposals(run_id);
|
|
1148
|
+
|
|
1149
|
+
CREATE TABLE IF NOT EXISTS skill_curation_runs (
|
|
1150
|
+
id TEXT PRIMARY KEY,
|
|
1151
|
+
started_at INTEGER NOT NULL,
|
|
1152
|
+
finalized_at INTEGER,
|
|
1153
|
+
cadence TEXT NOT NULL,
|
|
1154
|
+
backend TEXT NOT NULL,
|
|
1155
|
+
model TEXT NOT NULL,
|
|
1156
|
+
target_skills_json TEXT NOT NULL,
|
|
1157
|
+
status TEXT NOT NULL DEFAULT 'running' CHECK (status IN (
|
|
1158
|
+
'running', 'finalized', 'aborted'
|
|
1159
|
+
)),
|
|
1160
|
+
proposal_count INTEGER NOT NULL DEFAULT 0,
|
|
1161
|
+
notes TEXT,
|
|
1162
|
+
-- 0 = scheduler/cadence-driven, 1 = owner-clicked "Run now" (P22 §6.4).
|
|
1163
|
+
-- Manual runs reset the cadence interval gate (auto-cron sleeps for one
|
|
1164
|
+
-- cadence interval after a manual click).
|
|
1165
|
+
is_manual INTEGER NOT NULL DEFAULT 0
|
|
1166
|
+
);
|
|
1167
|
+
CREATE INDEX IF NOT EXISTS idx_skill_runs_started
|
|
1168
|
+
ON skill_curation_runs(started_at DESC);
|
|
1169
|
+
|
|
1170
|
+
-- ── Seed data ─────────────────────────────────────────────────────────────────
|
|
1171
|
+
|
|
1172
|
+
INSERT OR IGNORE INTO backends
|
|
1173
|
+
(id, enabled, auth_status, auth_notification_count, web_search_enabled, created_at, updated_at)
|
|
1174
|
+
VALUES
|
|
1175
|
+
('claude', 1, 'unknown', 0, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
|
1176
|
+
('codex', 0, 'unknown', 0, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
|
1177
|
+
('gemini', 0, 'unknown', 0, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
|
|
1178
|
+
|
|
1179
|
+
INSERT OR IGNORE INTO backend_global_defaults
|
|
1180
|
+
(singleton, default_backend, default_lite_model, default_medium_model, default_high_model, advisor_enabled, updated_at)
|
|
1181
|
+
VALUES
|
|
1182
|
+
(1, 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', '${DEFAULT_CLAUDE_HIGH_MODEL}', 0, CURRENT_TIMESTAMP);
|
|
1183
|
+
|
|
1184
|
+
-- Per-process seeds. Two tiers are wired in at install time:
|
|
1185
|
+
-- - Sonnet (DEFAULT_CLAUDE_MEDIUM_MODEL) for "main agent work" surfaces
|
|
1186
|
+
-- where output quality drives the operator's daily experience: DMs,
|
|
1187
|
+
-- dashboard chat, hourly check, daily/weekly/monthly review, morning
|
|
1188
|
+
-- routine, scheduled tasks, git.project.* one-shots. Standard
|
|
1189
|
+
-- 50-turn / $1.00 envelope (git.project.* span 30–100 turns and
|
|
1190
|
+
-- $0.50–$2.00 — retemplate is widest because re-template work is
|
|
1191
|
+
-- unbounded by shape).
|
|
1192
|
+
-- - Haiku (DEFAULT_CLAUDE_LITE_MODEL) for "delegated/simple" surfaces —
|
|
1193
|
+
-- Gmail classification, GitHub event triage, git-poll observers,
|
|
1194
|
+
-- calendar-change handlers. Tight 20-turn / $0.20 envelope keeps an
|
|
1195
|
+
-- autonomous loop bounded.
|
|
1196
|
+
-- No row seeds at the Opus tier (DEFAULT_CLAUDE_HIGH_MODEL); the
|
|
1197
|
+
-- onboarding briefing (routine.morning_routine_initial) and knowledge
|
|
1198
|
+
-- import (knowledge.import) resolve to high via tier inference but have
|
|
1199
|
+
-- no install-time row in this table. Operators can pin any row to Opus
|
|
1200
|
+
-- per-row from /settings/models when one-shot quality matters most.
|
|
1201
|
+
INSERT OR IGNORE INTO process_backend_config
|
|
1202
|
+
(process_key, main_backend, main_model, max_turns, max_budget_usd, updated_by)
|
|
1203
|
+
VALUES
|
|
1204
|
+
('message.dm', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 50, 1.00, 'user'),
|
|
1205
|
+
('message.mention', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 50, 1.00, 'user'),
|
|
1206
|
+
('dashboard.chat', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 50, 1.00, 'user'),
|
|
1207
|
+
-- DOCS_QA_DESIGN.md §10.2 — seeded with updated_by='cascade' so the
|
|
1208
|
+
-- first user-driven write to message.dm cascades into this row. If we
|
|
1209
|
+
-- seeded as 'user', the cascade would skip and dashboard.docs_qa
|
|
1210
|
+
-- would silently drift on day one. Envelope (20 turns, $0.50) matches
|
|
1211
|
+
-- INHERITOR_DEFAULTS in process-config-cascade.ts.
|
|
1212
|
+
('dashboard.docs_qa', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 20, 0.50, 'cascade'),
|
|
1213
|
+
('routine.morning_routine', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 50, 1.00, 'user'),
|
|
1214
|
+
('routine.hourly_check', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 50, 1.00, 'user'),
|
|
1215
|
+
-- $0.30 budget: a typical drift-triggered refresh on Sonnet runs ~$0.10
|
|
1216
|
+
-- in 4 turns; the previous $0.10 cap left zero headroom and any larger
|
|
1217
|
+
-- today.md / longer drift summary tipped over the SDK max_budget guard
|
|
1218
|
+
-- and surfaced as BackendQuotaError(max_budget_usd). 3x observed cost
|
|
1219
|
+
-- matches the headroom convention used by dashboard.docs_qa.
|
|
1220
|
+
('routine.today_refresh', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 20, 0.30, 'user'),
|
|
1221
|
+
('routine.evening_review', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 50, 1.00, 'user'),
|
|
1222
|
+
('routine.weekly_review', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 50, 1.00, 'user'),
|
|
1223
|
+
('routine.monthly_review', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 50, 1.00, 'user'),
|
|
1224
|
+
-- Delegated / simple backend surfaces — Haiku (lite tier), tighter envelope.
|
|
1225
|
+
('calendar.change', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1226
|
+
('gmail_classify', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1227
|
+
('github.pull_request.review_requested', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1228
|
+
('github.assigned', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1229
|
+
('github.security_alert', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1230
|
+
('github.workflow_run.failed', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1231
|
+
('git.push.detected', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1232
|
+
('git.local_ahead.stale', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1233
|
+
('git.push.force_pushed', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1234
|
+
('git.branch.created', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1235
|
+
('git.tag.created', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1236
|
+
('git.merge_to_default', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1237
|
+
-- git.project.init / .update / .retemplate are operator-driven one-shot
|
|
1238
|
+
-- runs whose output goes straight into curated project docs. All three
|
|
1239
|
+
-- seed at medium tier (Sonnet); operators who want a heavier model can
|
|
1240
|
+
-- pin per-row from /settings/models. Envelopes are sized so the $
|
|
1241
|
+
-- cap binds first on Sonnet (per-turn ~5x cheaper than Opus, so the
|
|
1242
|
+
-- previous Opus-era caps were retuned: init 50/$2 → 50/$1 and
|
|
1243
|
+
-- retemplate 200/$5 → 100/$2 — same effective bound, no free 5x
|
|
1244
|
+
-- runaway headroom). Update was always Sonnet, unchanged.
|
|
1245
|
+
('git.project.init', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 50, 1.00, 'user'),
|
|
1246
|
+
('git.project.update', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 30, 0.50, 'user'),
|
|
1247
|
+
('git.project.retemplate', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 100, 2.00, 'user'),
|
|
1248
|
+
('git.lifecycle.poll', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 20, 0.20, 'user'),
|
|
1249
|
+
('agent.task', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 50, 1.00, 'user'),
|
|
1250
|
+
-- P22 — skill self-optimization. Medium tier with a small envelope; the
|
|
1251
|
+
-- workdir is read-only besides the curation API, so the optimizer only
|
|
1252
|
+
-- needs enough turns to GET signals + payloads and POST proposals. The
|
|
1253
|
+
-- per-run rate limit (max 20 proposals) keeps this bounded even on a
|
|
1254
|
+
-- runaway prompt.
|
|
1255
|
+
('routine.skill_curation', 'claude', '${DEFAULT_CLAUDE_MEDIUM_MODEL}', 60, 0.50, 'user'),
|
|
1256
|
+
-- cost-reduction-structural §A — per-observation summarizer. Lite tier
|
|
1257
|
+
-- (Haiku-class) with a tight 1-turn / $0.05 envelope. The summarizer
|
|
1258
|
+
-- is a single non-tool model call per observation; turns/budget are
|
|
1259
|
+
-- intentionally tight so a runaway prompt or accidental loop is
|
|
1260
|
+
-- bounded inside the worker's per-call timeout.
|
|
1261
|
+
('observation.summarize', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 1, 0.05, 'user'),
|
|
1262
|
+
-- cost-reduction-structural §B — Stage 2 lite-tier triage. Strict
|
|
1263
|
+
-- JSON-only output (~2K input / ~50 output) decides log_only vs
|
|
1264
|
+
-- escalate. 1-turn / $0.05 mirrors observation.summarize: the
|
|
1265
|
+
-- dispatcher clamps allowedToolsOverride to [] (Claude only) and
|
|
1266
|
+
-- the seeded max_turns=1 caps every backend at one assistant turn,
|
|
1267
|
+
-- so this envelope is the absolute ceiling — defense-in-depth on
|
|
1268
|
+
-- top of the prompt's "no tools" contract.
|
|
1269
|
+
('routine.hourly_check.triage', 'claude', '${DEFAULT_CLAUDE_LITE_MODEL}', 1, 0.05, 'user');
|
|
1270
|
+
|
|
1271
|
+
INSERT OR IGNORE INTO settings (key, value_json, updated_at)
|
|
1272
|
+
VALUES (
|
|
1273
|
+
'integrations',
|
|
1274
|
+
json_object(
|
|
1275
|
+
'gmail', json_object('mode', 'disabled', 'lastChangedAt', strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
|
1276
|
+
'google_calendar', json_object('mode', 'disabled', 'lastChangedAt', strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
|
1277
|
+
'notion', json_object('mode', 'disabled', 'lastChangedAt', strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
|
1278
|
+
'git', json_object('mode', 'direct', 'lastChangedAt', strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
|
1279
|
+
'github', json_object('mode', 'direct', 'lastChangedAt', strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
|
1280
|
+
),
|
|
1281
|
+
CURRENT_TIMESTAMP
|
|
1282
|
+
);
|
|
1283
|
+
|
|
1284
|
+
-- ── Stage C DM-freshness rollup (STAGE-C-DM-FRESHNESS-PLAN §Task 4) ────────
|
|
1285
|
+
-- Per-day rollup of DM dispatches that recorded freshness telemetry. The
|
|
1286
|
+
-- view filters on the JSON probe (\`dm_freshness IS NOT NULL\`) rather than
|
|
1287
|
+
-- a specific event-type whitelist so it picks up every DM action_type the
|
|
1288
|
+
-- dispatch path tags — this avoids drift if a future event type joins the
|
|
1289
|
+
-- DM dispatch surface. Read by GET /api/dashboard/dm-freshness; the
|
|
1290
|
+
-- endpoint additionally exposes p50/p95 lag computed in JS because SQLite
|
|
1291
|
+
-- has no native percentile_cont.
|
|
1292
|
+
CREATE VIEW IF NOT EXISTS dm_freshness_metrics AS
|
|
1293
|
+
SELECT
|
|
1294
|
+
date(started_at) AS day,
|
|
1295
|
+
COUNT(*) AS total_dm_turns,
|
|
1296
|
+
SUM(CASE WHEN json_extract(detail, '$.dm_freshness.resumed') = 1 THEN 1 ELSE 0 END) AS resumed_turns,
|
|
1297
|
+
AVG(CAST(json_extract(detail, '$.dm_freshness.agent_log_lag_minutes') AS REAL)) AS avg_lag_minutes,
|
|
1298
|
+
SUM(CASE WHEN json_extract(detail, '$.dm_freshness.trigger_matched') = 1 THEN 1 ELSE 0 END) AS trigger_matched_turns,
|
|
1299
|
+
SUM(CASE
|
|
1300
|
+
WHEN json_extract(detail, '$.dm_freshness.trigger_matched') = 1
|
|
1301
|
+
AND json_extract(detail, '$.dm_freshness.refetched_today') = 1
|
|
1302
|
+
THEN 1 ELSE 0 END) AS refetch_hits,
|
|
1303
|
+
SUM(CAST(json_extract(detail, '$.dm_freshness.loud_writes_since_session_start') AS INTEGER)) AS total_loud_writes_seen,
|
|
1304
|
+
SUM(CAST(json_extract(detail, '$.dm_freshness.quiet_writes_since_session_start') AS INTEGER)) AS total_quiet_writes_seen
|
|
1305
|
+
FROM agent_actions
|
|
1306
|
+
WHERE json_extract(detail, '$.dm_freshness') IS NOT NULL
|
|
1307
|
+
GROUP BY day
|
|
1308
|
+
ORDER BY day DESC;
|
|
1309
|
+
`;
|
|
1310
|
+
/** Apply the complete schema and seed data to a database. Idempotent. */
|
|
1311
|
+
export function applySchema(db) {
|
|
1312
|
+
db.exec(SCHEMA);
|
|
1313
|
+
ensureMessagesNotificationDispatchColumn(db);
|
|
1314
|
+
ensureUserBangCommandsCustomColumns(db);
|
|
1315
|
+
db.exec(`
|
|
1316
|
+
CREATE INDEX IF NOT EXISTS idx_messages_dispatch
|
|
1317
|
+
ON messages(notification_dispatch_id)
|
|
1318
|
+
WHERE notification_dispatch_id IS NOT NULL;
|
|
1319
|
+
`);
|
|
1320
|
+
}
|
|
1321
|
+
function ensureMessagesNotificationDispatchColumn(db) {
|
|
1322
|
+
const columns = db.pragma("table_info(messages)");
|
|
1323
|
+
if (columns.some((column) => column.name === "notification_dispatch_id")) {
|
|
1324
|
+
return;
|
|
1325
|
+
}
|
|
1326
|
+
db.exec("ALTER TABLE messages ADD COLUMN notification_dispatch_id TEXT");
|
|
1327
|
+
}
|
|
1328
|
+
function ensureUserBangCommandsCustomColumns(db) {
|
|
1329
|
+
const columns = db.pragma("table_info(user_bang_commands)");
|
|
1330
|
+
const names = new Set(columns.map((column) => column.name));
|
|
1331
|
+
if (!names.has("enabled_skills_json")) {
|
|
1332
|
+
db.exec("ALTER TABLE user_bang_commands ADD COLUMN enabled_skills_json TEXT");
|
|
1333
|
+
}
|
|
1334
|
+
if (!names.has("instruction_md")) {
|
|
1335
|
+
db.exec("ALTER TABLE user_bang_commands ADD COLUMN instruction_md TEXT");
|
|
1336
|
+
}
|
|
1337
|
+
}
|
|
1338
|
+
//# sourceMappingURL=schema.js.map
|