@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,716 @@
|
|
|
1
|
+
import { nowInTimezone, parseSqliteUtcMs, } from "@aitne/shared";
|
|
2
|
+
import { readRuntimeState } from "../db/runtime-state.js";
|
|
3
|
+
import { cleanupSessionWorkdir, getSessionWorkdirPath } from "./workdir.js";
|
|
4
|
+
import { CONTEXT_CHANGED_AT_KEY } from "./dashboard-session-controls.js";
|
|
5
|
+
import { DASHBOARD_CHAT_SCOPE, DOCS_QA_SCOPE, getConversationScope, LOGICAL_OWNER_CHANNEL, LOGICAL_OWNER_PLATFORM, OWNER_DM_SCOPE, } from "../messaging/constants.js";
|
|
6
|
+
import { createLogger } from "../logging.js";
|
|
7
|
+
function createDeferredEffects() {
|
|
8
|
+
return { workdirCleanups: [], staleFlagClears: [] };
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* better-sqlite3 may return `bigint` for AUTOINCREMENT primary keys once the
|
|
12
|
+
* value exceeds `Number.MAX_SAFE_INTEGER`. Throw fast so a silently-truncated
|
|
13
|
+
* id does not corrupt later lookups. `conversation_sessions.id` is INTEGER,
|
|
14
|
+
* so practical values are tiny — this guard is future-proofing.
|
|
15
|
+
*/
|
|
16
|
+
function toSessionId(raw) {
|
|
17
|
+
if (typeof raw === "number")
|
|
18
|
+
return raw;
|
|
19
|
+
if (raw <= BigInt(Number.MAX_SAFE_INTEGER) && raw >= BigInt(Number.MIN_SAFE_INTEGER)) {
|
|
20
|
+
return Number(raw);
|
|
21
|
+
}
|
|
22
|
+
throw new Error(`Session id ${raw} exceeds JS safe-integer range`);
|
|
23
|
+
}
|
|
24
|
+
const logger = createLogger("session-manager");
|
|
25
|
+
export function findOrCreateActiveChannelSession(db, params) {
|
|
26
|
+
const resolveExisting = () => db
|
|
27
|
+
.prepare(`SELECT id
|
|
28
|
+
FROM conversation_sessions
|
|
29
|
+
WHERE scope = ? AND scope_key = ? AND status = 'active'
|
|
30
|
+
ORDER BY last_message_at DESC
|
|
31
|
+
LIMIT 1`)
|
|
32
|
+
.get(params.scope, params.scopeKey);
|
|
33
|
+
const tx = db.transaction(() => {
|
|
34
|
+
const existing = resolveExisting();
|
|
35
|
+
if (existing) {
|
|
36
|
+
return { id: toSessionId(existing.id), created: false };
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const result = db
|
|
40
|
+
.prepare(`INSERT INTO conversation_sessions (
|
|
41
|
+
scope, scope_key, platform, channel_id, status, is_dm
|
|
42
|
+
)
|
|
43
|
+
VALUES (?, ?, ?, ?, 'active', 1)`)
|
|
44
|
+
.run(params.scope, params.scopeKey, params.platform, params.channelId);
|
|
45
|
+
return { id: toSessionId(result.lastInsertRowid), created: true };
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
const winner = resolveExisting();
|
|
49
|
+
if (winner) {
|
|
50
|
+
return { id: toSessionId(winner.id), created: false };
|
|
51
|
+
}
|
|
52
|
+
throw err;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return tx();
|
|
56
|
+
}
|
|
57
|
+
/** Explicit session-close keywords (case-insensitive, exact match after trim) */
|
|
58
|
+
const CLOSE_KEYWORDS = new Set([
|
|
59
|
+
"end",
|
|
60
|
+
"close",
|
|
61
|
+
"done",
|
|
62
|
+
]);
|
|
63
|
+
export class SessionManager {
|
|
64
|
+
db;
|
|
65
|
+
config;
|
|
66
|
+
staleDmSessionIds = new Set();
|
|
67
|
+
constructor(db, config) {
|
|
68
|
+
this.db = db;
|
|
69
|
+
this.config = config;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Resolve the configured default model for new sessions.
|
|
73
|
+
* Checks backend_global_defaults first, falls back to 'opus'.
|
|
74
|
+
*/
|
|
75
|
+
resolveDefaultModel() {
|
|
76
|
+
try {
|
|
77
|
+
const exists = this.db
|
|
78
|
+
.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'backend_global_defaults' LIMIT 1")
|
|
79
|
+
.get();
|
|
80
|
+
if (!exists)
|
|
81
|
+
return "opus";
|
|
82
|
+
const row = this.db
|
|
83
|
+
.prepare("SELECT default_high_model FROM backend_global_defaults WHERE singleton = 1")
|
|
84
|
+
.get();
|
|
85
|
+
return row?.default_high_model ?? "opus";
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return "opus";
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Mark active DM sessions stale so the next direct message starts fresh.
|
|
93
|
+
*
|
|
94
|
+
* This is intentionally deferred rather than closing immediately: context
|
|
95
|
+
* files are often updated by the agent during an in-flight turn, and
|
|
96
|
+
* deleting the session workdir mid-run would break the active SDK process.
|
|
97
|
+
*
|
|
98
|
+
* Both browser-only dashboard chats and owner messaging DMs need this so
|
|
99
|
+
* context mutations do not keep resuming an old backend session.
|
|
100
|
+
*/
|
|
101
|
+
/**
|
|
102
|
+
* Enumerate active DM sessions (owner DM + browser-only dashboard chat).
|
|
103
|
+
*
|
|
104
|
+
* Used by callers that need to refresh on-disk session workdir assets when
|
|
105
|
+
* global config changes mid-flight — e.g. when the user toggles
|
|
106
|
+
* `enabledMailProviders` or adds a mail account, the skill dirs baked into
|
|
107
|
+
* each DM workdir must be re-materialized so the agent picks up the new
|
|
108
|
+
* scope on its next turn without having to tear down the session.
|
|
109
|
+
*
|
|
110
|
+
* Options:
|
|
111
|
+
* - `excludeStale` (default `true`): drop sessions that have been marked
|
|
112
|
+
* stale via {@link markActiveDmSessionsStale}. Their workdir is about to
|
|
113
|
+
* be abandoned on the next turn, so refreshing it is pure waste.
|
|
114
|
+
*/
|
|
115
|
+
listActiveDmSessions(options = {}) {
|
|
116
|
+
const rows = this.db
|
|
117
|
+
.prepare(`SELECT id, backend, scope
|
|
118
|
+
FROM conversation_sessions
|
|
119
|
+
WHERE is_dm = 1
|
|
120
|
+
AND status = 'active'
|
|
121
|
+
AND scope IN (?, ?)`)
|
|
122
|
+
.all(DASHBOARD_CHAT_SCOPE, OWNER_DM_SCOPE);
|
|
123
|
+
const excludeStale = options.excludeStale ?? true;
|
|
124
|
+
return rows
|
|
125
|
+
.map((row) => ({
|
|
126
|
+
id: toSessionId(row.id),
|
|
127
|
+
backend: row.backend,
|
|
128
|
+
scope: row.scope,
|
|
129
|
+
}))
|
|
130
|
+
.filter((row) => !excludeStale || !this.staleDmSessionIds.has(row.id));
|
|
131
|
+
}
|
|
132
|
+
markActiveDmSessionsStale(reason) {
|
|
133
|
+
const rows = this.db
|
|
134
|
+
.prepare(`SELECT id
|
|
135
|
+
FROM conversation_sessions
|
|
136
|
+
WHERE is_dm = 1
|
|
137
|
+
AND status = 'active'
|
|
138
|
+
AND scope IN (?, ?)
|
|
139
|
+
ORDER BY last_message_at DESC`)
|
|
140
|
+
.all(DASHBOARD_CHAT_SCOPE, OWNER_DM_SCOPE);
|
|
141
|
+
if (rows.length === 0)
|
|
142
|
+
return;
|
|
143
|
+
for (const row of rows) {
|
|
144
|
+
this.staleDmSessionIds.add(row.id);
|
|
145
|
+
}
|
|
146
|
+
logger.info({ sessionIds: rows.map((row) => row.id), reason }, "Active DM sessions marked stale");
|
|
147
|
+
}
|
|
148
|
+
getSessionLookupColumns() {
|
|
149
|
+
return "id, backend_session_id, backend, model, last_message_at";
|
|
150
|
+
}
|
|
151
|
+
getSessionIdForResume(row) {
|
|
152
|
+
return row.backend_session_id ?? null;
|
|
153
|
+
}
|
|
154
|
+
getSessionBackend(row) {
|
|
155
|
+
return row.backend ?? "claude";
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Only dashboard-chat sessions stay resumable from dashboard history until
|
|
159
|
+
* retention deletes the DB row. Messaging-app owner DM conversations stay
|
|
160
|
+
* read-only in the dashboard and clean up immediately.
|
|
161
|
+
*
|
|
162
|
+
* All DASHBOARD_CHAT_SCOPE sessions qualify — including ones that have not
|
|
163
|
+
* yet recorded a backend_session_id or any messages. This is required for
|
|
164
|
+
* two cases:
|
|
165
|
+
* (a) In-flight first execute: the SDK is actively writing into the
|
|
166
|
+
* workdir; deleting it mid-run would corrupt the SDK process.
|
|
167
|
+
* (b) "Current session stays resumable" UX: when the user switches to a
|
|
168
|
+
* past session, the freshly-closed session must remain on disk so
|
|
169
|
+
* they can switch back. Retention (7-day inactive + full row delete
|
|
170
|
+
* followed by cleanupStaleWorkdirs) ultimately reclaims the disk.
|
|
171
|
+
*
|
|
172
|
+
* Cross-platform mixing is structurally impossible: getConversationScope
|
|
173
|
+
* routes dashboard platform into DASHBOARD_CHAT_SCOPE and every other
|
|
174
|
+
* platform into OWNER_DM_SCOPE, so a DASHBOARD_CHAT_SCOPE row can only
|
|
175
|
+
* ever accumulate messages with platform='dashboard'.
|
|
176
|
+
*/
|
|
177
|
+
shouldPreserveResumeState(id) {
|
|
178
|
+
const row = this.db
|
|
179
|
+
.prepare(`SELECT scope
|
|
180
|
+
FROM conversation_sessions
|
|
181
|
+
WHERE id = ?`)
|
|
182
|
+
.get(id);
|
|
183
|
+
return row?.scope === DASHBOARD_CHAT_SCOPE;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get or create a session for the given routing tuple.
|
|
187
|
+
*
|
|
188
|
+
* Uses a DB transaction to atomically:
|
|
189
|
+
* 1. Search for existing active session
|
|
190
|
+
* 2. If found but timed out → expire it, create new session
|
|
191
|
+
* 3. If found and within timeout → return for resume
|
|
192
|
+
* 4. If not found → create new session
|
|
193
|
+
*
|
|
194
|
+
* All non-transactional side effects (filesystem workdir cleanup,
|
|
195
|
+
* `staleDmSessionIds` mutations) are collected during the transaction
|
|
196
|
+
* and only applied after it commits — so a rollback never leaves us
|
|
197
|
+
* with vanished files or a desynced in-memory flag.
|
|
198
|
+
*/
|
|
199
|
+
async getOrCreate(params) {
|
|
200
|
+
const { platform, channel, threadId, isDm, intent, requiredBackend = "claude", requiredModel, } = params;
|
|
201
|
+
const effects = createDeferredEffects();
|
|
202
|
+
const record = this.db.transaction(() => {
|
|
203
|
+
if (isDm) {
|
|
204
|
+
return this.getOrCreateDm(platform, channel, intent, requiredBackend, requiredModel, effects);
|
|
205
|
+
}
|
|
206
|
+
return this.getOrCreateThread(platform, channel, threadId, requiredBackend, requiredModel, effects);
|
|
207
|
+
})();
|
|
208
|
+
// Transaction committed — safe to run non-transactional side effects.
|
|
209
|
+
this.applyDeferredEffects(effects);
|
|
210
|
+
return record;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Apply the non-transactional side effects collected during a transactional
|
|
214
|
+
* close/expire path. Called only after the surrounding transaction commits.
|
|
215
|
+
*/
|
|
216
|
+
applyDeferredEffects(effects) {
|
|
217
|
+
for (const id of effects.staleFlagClears) {
|
|
218
|
+
this.staleDmSessionIds.delete(id);
|
|
219
|
+
}
|
|
220
|
+
for (const id of effects.workdirCleanups) {
|
|
221
|
+
cleanupSessionWorkdir(getSessionWorkdirPath(this.config.dataDir, id));
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Transaction-safe variant of `closeSession` — records the DB UPDATE
|
|
226
|
+
* inside the caller's transaction but queues filesystem and in-memory
|
|
227
|
+
* side effects into the supplied effects buffer for post-commit flush.
|
|
228
|
+
*
|
|
229
|
+
* External callers that are NOT already inside a transaction should use
|
|
230
|
+
* the public `closeSession`, which wraps this helper.
|
|
231
|
+
*/
|
|
232
|
+
closeSessionInTx(id, effects) {
|
|
233
|
+
this.db
|
|
234
|
+
.prepare("UPDATE conversation_sessions SET status = 'closed' WHERE id = ?")
|
|
235
|
+
.run(id);
|
|
236
|
+
effects.staleFlagClears.push(id);
|
|
237
|
+
const preserveResumeState = this.shouldPreserveResumeState(id);
|
|
238
|
+
if (!preserveResumeState) {
|
|
239
|
+
effects.workdirCleanups.push(id);
|
|
240
|
+
}
|
|
241
|
+
logger.info({ sessionId: id, preserveResumeState }, "Session explicitly closed");
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Fresh effects buffer for callers that own their own transaction (e.g.
|
|
245
|
+
* `continueDashboardSession`) and want to apply the collected side effects
|
|
246
|
+
* themselves after commit.
|
|
247
|
+
*/
|
|
248
|
+
newEffectsBuffer() {
|
|
249
|
+
return createDeferredEffects();
|
|
250
|
+
}
|
|
251
|
+
/** Flush a caller-owned effects buffer after the caller's TX commits. */
|
|
252
|
+
flushEffects(effects) {
|
|
253
|
+
this.applyDeferredEffects(effects);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* DM session lookup: one unified owner session per day.
|
|
257
|
+
* - No idle timeout — DM sessions persist until the 4 AM day boundary
|
|
258
|
+
* - Only expires when the day boundary is crossed, the backend switches,
|
|
259
|
+
* or a context file was mutated after the session's last turn
|
|
260
|
+
* - Reuses the stored SDK session id until the session is marked stale
|
|
261
|
+
*
|
|
262
|
+
* For `DASHBOARD_CHAT_SCOPE`, backend-switch is handled in-place
|
|
263
|
+
* (UPDATE backend + NULL backend_session_id on the same row) so that
|
|
264
|
+
* a user who clicked "Continue" on session #N keeps seeing session #N
|
|
265
|
+
* across a Claude↔Codex flap, and their `messages` history stays linked.
|
|
266
|
+
*/
|
|
267
|
+
getOrCreateDm(platform, channel, intent, requiredBackend, requiredModel, effects) {
|
|
268
|
+
const effectiveBackend = requiredBackend;
|
|
269
|
+
const { scope, scopeKey } = getConversationScope({
|
|
270
|
+
platform,
|
|
271
|
+
channel,
|
|
272
|
+
threadId: null,
|
|
273
|
+
isDm: true,
|
|
274
|
+
intent,
|
|
275
|
+
});
|
|
276
|
+
// Both dashboard scopes are dashboard-tab traffic and keep their browser
|
|
277
|
+
// channel id so the SSE adapter can route deltas back to the correct
|
|
278
|
+
// tab. Owner DMs collapse to the canonical owner platform/channel
|
|
279
|
+
// because the row identifies a unified per-day session.
|
|
280
|
+
const isDashboardScope = scope === DASHBOARD_CHAT_SCOPE || scope === DOCS_QA_SCOPE;
|
|
281
|
+
const sessionPlatform = isDashboardScope ? "dashboard" : LOGICAL_OWNER_PLATFORM;
|
|
282
|
+
const sessionChannel = isDashboardScope ? channel : LOGICAL_OWNER_CHANNEL;
|
|
283
|
+
const existing = this.db
|
|
284
|
+
.prepare(`SELECT ${this.getSessionLookupColumns()}
|
|
285
|
+
FROM conversation_sessions
|
|
286
|
+
WHERE scope = ? AND scope_key = ? AND status = 'active'
|
|
287
|
+
ORDER BY last_message_at DESC LIMIT 1`)
|
|
288
|
+
.get(scope, scopeKey);
|
|
289
|
+
if (existing) {
|
|
290
|
+
// In-memory stale flag (set by markActiveDmSessionsStale) + persistent
|
|
291
|
+
// context_changed_at timestamp (written by markContextChanged on loud
|
|
292
|
+
// prompt-context changes). Either signal wins: the persistent one
|
|
293
|
+
// catches cases the in-memory set cannot, e.g. a daemon restart
|
|
294
|
+
// between the mutation and the user's next message.
|
|
295
|
+
const contextChangedAt = readRuntimeState(this.db, CONTEXT_CHANGED_AT_KEY);
|
|
296
|
+
// Compare against the most recent message that the SDK session
|
|
297
|
+
// *actually consumed* (user turn or DM-agent reply), not the row's
|
|
298
|
+
// `last_message_at`. Proactive forwards (dm-channel-timeline.md
|
|
299
|
+
// §B/§F.7) bump `last_message_at` from a different SDK session, so
|
|
300
|
+
// using it would mask context changes that happened just before a
|
|
301
|
+
// forward and falsely treat the resumed session as fresh.
|
|
302
|
+
const lastConsumedAt = this.lastNonForwardMessageAt(existing.id) ?? existing.last_message_at;
|
|
303
|
+
const contextStale = typeof contextChangedAt === "string"
|
|
304
|
+
&& contextChangedAt > lastConsumedAt;
|
|
305
|
+
const flaggedStale = this.staleDmSessionIds.has(existing.id);
|
|
306
|
+
const lastMsg = parseSqliteUtcMs(existing.last_message_at);
|
|
307
|
+
const crossedBoundary = this.crossedDayBoundary(lastMsg);
|
|
308
|
+
const backendMatches = this.getSessionBackend(existing) === effectiveBackend;
|
|
309
|
+
// Treat a model switch within the same backend (e.g. Sonnet → Opus
|
|
310
|
+
// via the dashboard picker) the same as a backend flap: the SDK's
|
|
311
|
+
// resume path reuses the original model tied to the stored session
|
|
312
|
+
// id and silently drops the new model, so we must close the SDK
|
|
313
|
+
// session and re-inject history for the new model to take effect.
|
|
314
|
+
// When the caller didn't pass `requiredModel`, fall back to the
|
|
315
|
+
// pre-existing behavior (match).
|
|
316
|
+
const modelMatches = requiredModel === undefined || existing.model === requiredModel;
|
|
317
|
+
// Hot path: nothing stale / no transition → resume as-is.
|
|
318
|
+
if (!flaggedStale
|
|
319
|
+
&& !contextStale
|
|
320
|
+
&& !crossedBoundary
|
|
321
|
+
&& backendMatches
|
|
322
|
+
&& modelMatches) {
|
|
323
|
+
return {
|
|
324
|
+
id: existing.id,
|
|
325
|
+
isActive: true,
|
|
326
|
+
sessionId: this.getSessionIdForResume(existing),
|
|
327
|
+
model: existing.model,
|
|
328
|
+
backend: this.getSessionBackend(existing),
|
|
329
|
+
requiresHistoryInjection: false,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
// Dashboard-only preservation: for stale context OR backend flap OR
|
|
333
|
+
// model switch, we reset the SDK session in place (NULL
|
|
334
|
+
// backend_session_id, UPDATE backend + model, bump last_message_at)
|
|
335
|
+
// rather than closing + creating a new row. Rationale:
|
|
336
|
+
// - `Continue #N` in the sidebar must stay as #N across context
|
|
337
|
+
// mutations, Claude↔Codex flaps, and Sonnet↔Opus picks —
|
|
338
|
+
// creating a new row would silently rename the session.
|
|
339
|
+
// - Day-boundary crossings still expire the row (users expect a
|
|
340
|
+
// fresh day to be a fresh conversation).
|
|
341
|
+
// - `last_message_at` is refreshed so the `context_changed_at`
|
|
342
|
+
// check does NOT fire again on the very next turn just because
|
|
343
|
+
// we didn't close. `requiresHistoryInjection` uses the messages
|
|
344
|
+
// table, which is preserved, so prior history still reaches
|
|
345
|
+
// the fresh SDK session on first turn.
|
|
346
|
+
if (scope === DASHBOARD_CHAT_SCOPE
|
|
347
|
+
&& !crossedBoundary
|
|
348
|
+
&& (flaggedStale || contextStale || !backendMatches || !modelMatches)) {
|
|
349
|
+
effects.staleFlagClears.push(existing.id);
|
|
350
|
+
const nextModel = requiredModel ?? existing.model;
|
|
351
|
+
this.db
|
|
352
|
+
.prepare(`UPDATE conversation_sessions
|
|
353
|
+
SET backend = ?,
|
|
354
|
+
model = ?,
|
|
355
|
+
backend_session_id = NULL,
|
|
356
|
+
last_message_at = CURRENT_TIMESTAMP
|
|
357
|
+
WHERE id = ?`)
|
|
358
|
+
.run(effectiveBackend, nextModel, existing.id);
|
|
359
|
+
logger.info({
|
|
360
|
+
sessionId: existing.id,
|
|
361
|
+
previousBackend: this.getSessionBackend(existing),
|
|
362
|
+
nextBackend: effectiveBackend,
|
|
363
|
+
previousModel: existing.model,
|
|
364
|
+
nextModel,
|
|
365
|
+
reason: flaggedStale
|
|
366
|
+
? "in_memory_stale"
|
|
367
|
+
: contextStale
|
|
368
|
+
? "context_changed_at"
|
|
369
|
+
: !backendMatches
|
|
370
|
+
? "backend_switch"
|
|
371
|
+
: "model_switch",
|
|
372
|
+
}, "Dashboard DM session reset in place");
|
|
373
|
+
return {
|
|
374
|
+
id: existing.id,
|
|
375
|
+
isActive: false,
|
|
376
|
+
sessionId: null,
|
|
377
|
+
model: nextModel,
|
|
378
|
+
backend: effectiveBackend,
|
|
379
|
+
requiresHistoryInjection: this.countMessagesInScope(scope, scopeKey) > 0,
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
// Non-dashboard stale path or day-boundary → close/expire + fall
|
|
383
|
+
// through to create a fresh row below.
|
|
384
|
+
if (flaggedStale || contextStale) {
|
|
385
|
+
this.closeSessionInTx(existing.id, effects);
|
|
386
|
+
logger.info({
|
|
387
|
+
sessionId: existing.id,
|
|
388
|
+
trigger: flaggedStale ? "in_memory_flag" : "context_changed_at",
|
|
389
|
+
}, "DM session refreshed after context change");
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
this.db
|
|
393
|
+
.prepare("UPDATE conversation_sessions SET status = 'expired' WHERE id = ?")
|
|
394
|
+
.run(existing.id);
|
|
395
|
+
const preserveResumeState = this.shouldPreserveResumeState(existing.id);
|
|
396
|
+
if (!preserveResumeState) {
|
|
397
|
+
effects.workdirCleanups.push(existing.id);
|
|
398
|
+
}
|
|
399
|
+
logger.info({
|
|
400
|
+
sessionId: existing.id,
|
|
401
|
+
reason: crossedBoundary
|
|
402
|
+
? "day_boundary"
|
|
403
|
+
: !backendMatches
|
|
404
|
+
? "backend_switch"
|
|
405
|
+
: "model_switch",
|
|
406
|
+
previousBackend: this.getSessionBackend(existing),
|
|
407
|
+
nextBackend: effectiveBackend,
|
|
408
|
+
previousModel: existing.model,
|
|
409
|
+
nextModel: requiredModel ?? existing.model,
|
|
410
|
+
preserveResumeState,
|
|
411
|
+
}, "DM session expired");
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
// Create a new day-long DM session for the resolved DM scope.
|
|
415
|
+
// Prefer the caller-provided model so a picker-driven switch starts the
|
|
416
|
+
// new session on the chosen model instead of the global default.
|
|
417
|
+
const defaultModel = requiredModel ?? this.resolveDefaultModel();
|
|
418
|
+
const requiresHistoryInjection = this.countMessagesInScope(scope, scopeKey) > 0;
|
|
419
|
+
const result = this.db
|
|
420
|
+
.prepare(`INSERT INTO conversation_sessions (
|
|
421
|
+
platform, channel_id, thread_id, scope, scope_key, status, model, is_dm, backend
|
|
422
|
+
)
|
|
423
|
+
VALUES (?, ?, NULL, ?, ?, 'active', ?, 1, ?)`)
|
|
424
|
+
.run(sessionPlatform, sessionChannel, scope, scopeKey, defaultModel, effectiveBackend);
|
|
425
|
+
return {
|
|
426
|
+
id: toSessionId(result.lastInsertRowid),
|
|
427
|
+
isActive: false,
|
|
428
|
+
sessionId: null,
|
|
429
|
+
model: defaultModel,
|
|
430
|
+
backend: effectiveBackend,
|
|
431
|
+
requiresHistoryInjection,
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Non-DM session lookup: by (platform, channel_id, thread_id) with timeout.
|
|
436
|
+
* Original behavior — used for Slack/Discord channel threads.
|
|
437
|
+
*/
|
|
438
|
+
getOrCreateThread(platform, channel, threadId, requiredBackend, requiredModel, effects) {
|
|
439
|
+
const effectiveBackend = requiredBackend;
|
|
440
|
+
const { scope, scopeKey } = getConversationScope({
|
|
441
|
+
platform,
|
|
442
|
+
channel,
|
|
443
|
+
threadId,
|
|
444
|
+
isDm: false,
|
|
445
|
+
});
|
|
446
|
+
const existing = this.db
|
|
447
|
+
.prepare(`SELECT ${this.getSessionLookupColumns()}, status
|
|
448
|
+
FROM conversation_sessions
|
|
449
|
+
WHERE scope = ? AND scope_key = ? AND status = 'active'
|
|
450
|
+
ORDER BY last_message_at DESC LIMIT 1`)
|
|
451
|
+
.get(scope, scopeKey);
|
|
452
|
+
if (existing) {
|
|
453
|
+
const timeout = this.getTimeoutMs(platform, false);
|
|
454
|
+
const lastMsg = parseSqliteUtcMs(existing.last_message_at);
|
|
455
|
+
const elapsed = Date.now() - lastMsg;
|
|
456
|
+
const crossedBoundary = this.crossedDayBoundary(lastMsg);
|
|
457
|
+
const backendMatches = this.getSessionBackend(existing) === effectiveBackend;
|
|
458
|
+
const modelMatches = requiredModel === undefined || existing.model === requiredModel;
|
|
459
|
+
if (elapsed < timeout
|
|
460
|
+
&& !crossedBoundary
|
|
461
|
+
&& backendMatches
|
|
462
|
+
&& modelMatches) {
|
|
463
|
+
return {
|
|
464
|
+
id: existing.id,
|
|
465
|
+
isActive: true,
|
|
466
|
+
sessionId: this.getSessionIdForResume(existing),
|
|
467
|
+
model: existing.model,
|
|
468
|
+
backend: this.getSessionBackend(existing),
|
|
469
|
+
requiresHistoryInjection: false,
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
this.db
|
|
473
|
+
.prepare("UPDATE conversation_sessions SET status = 'expired' WHERE id = ?")
|
|
474
|
+
.run(existing.id);
|
|
475
|
+
// Workdir cleanup deferred to after-commit — avoids `rmSync` running
|
|
476
|
+
// inside this transaction, where a later throw would leave the DB
|
|
477
|
+
// restored to 'active' but the files permanently gone.
|
|
478
|
+
effects.workdirCleanups.push(existing.id);
|
|
479
|
+
logger.info({
|
|
480
|
+
sessionId: existing.id,
|
|
481
|
+
platform,
|
|
482
|
+
elapsed: Math.round(elapsed / 1000),
|
|
483
|
+
reason: elapsed >= timeout
|
|
484
|
+
? "timeout"
|
|
485
|
+
: crossedBoundary
|
|
486
|
+
? "day_boundary"
|
|
487
|
+
: !backendMatches
|
|
488
|
+
? "backend_switch"
|
|
489
|
+
: "model_switch",
|
|
490
|
+
previousBackend: this.getSessionBackend(existing),
|
|
491
|
+
nextBackend: effectiveBackend,
|
|
492
|
+
previousModel: existing.model,
|
|
493
|
+
nextModel: requiredModel ?? existing.model,
|
|
494
|
+
}, "Session expired");
|
|
495
|
+
}
|
|
496
|
+
const defaultModel = requiredModel ?? this.resolveDefaultModel();
|
|
497
|
+
const requiresHistoryInjection = this.countMessagesInScope(scope, scopeKey) > 0;
|
|
498
|
+
const result = this.db
|
|
499
|
+
.prepare(`INSERT INTO conversation_sessions (
|
|
500
|
+
platform, channel_id, thread_id, scope, scope_key, status, model, is_dm, backend
|
|
501
|
+
)
|
|
502
|
+
VALUES (?, ?, ?, ?, ?, 'active', ?, 0, ?)`)
|
|
503
|
+
.run(platform, channel, threadId ?? null, scope, scopeKey, defaultModel, effectiveBackend);
|
|
504
|
+
return {
|
|
505
|
+
id: toSessionId(result.lastInsertRowid),
|
|
506
|
+
isActive: false,
|
|
507
|
+
sessionId: null,
|
|
508
|
+
model: defaultModel,
|
|
509
|
+
backend: effectiveBackend,
|
|
510
|
+
requiresHistoryInjection,
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* Look up the DB's currently-bound `channel_id` for an active session.
|
|
515
|
+
*
|
|
516
|
+
* The dashboard SSE route updates `conversation_sessions.channel_id` via
|
|
517
|
+
* `rebindSessionChannel` whenever a browser tab reconnects with a stored
|
|
518
|
+
* sessionId (page navigation, SSE auto-reconnect, etc.). Dispatcher
|
|
519
|
+
* callbacks (stream chunks, session_info pushes, chat_meta, errors)
|
|
520
|
+
* captured `event.channel` in a closure at event creation time, which
|
|
521
|
+
* goes stale the moment the original tab disconnects. Resolving the
|
|
522
|
+
* current channel_id on every send routes those messages to whatever
|
|
523
|
+
* tab is currently connected for this session.
|
|
524
|
+
*
|
|
525
|
+
* Returns `null` when the session is not active (closed/expired) or when
|
|
526
|
+
* no row matches, so callers can fall back to the original event.channel
|
|
527
|
+
* and let DashboardAdapter silently drop if neither is connected.
|
|
528
|
+
*/
|
|
529
|
+
getActiveChannelIdForSession(sessionId) {
|
|
530
|
+
const row = this.db
|
|
531
|
+
.prepare("SELECT channel_id FROM conversation_sessions WHERE id = ? AND status = 'active' LIMIT 1")
|
|
532
|
+
.get(sessionId);
|
|
533
|
+
return row?.channel_id ?? null;
|
|
534
|
+
}
|
|
535
|
+
/** Find an existing active session without creating one */
|
|
536
|
+
async findActive(params) {
|
|
537
|
+
const { platform, channel, threadId, isDm, intent } = params;
|
|
538
|
+
const { scope, scopeKey } = getConversationScope({
|
|
539
|
+
platform,
|
|
540
|
+
channel,
|
|
541
|
+
threadId,
|
|
542
|
+
isDm,
|
|
543
|
+
intent,
|
|
544
|
+
});
|
|
545
|
+
const row = this.db
|
|
546
|
+
.prepare(`SELECT id FROM conversation_sessions
|
|
547
|
+
WHERE scope = ? AND scope_key = ? AND status = 'active'
|
|
548
|
+
ORDER BY last_message_at DESC
|
|
549
|
+
LIMIT 1`)
|
|
550
|
+
.get(scope, scopeKey);
|
|
551
|
+
return row ?? null;
|
|
552
|
+
}
|
|
553
|
+
/** Update the session ID and model for a conversation session */
|
|
554
|
+
async updateSession(id, sessionId, model, backend = "claude") {
|
|
555
|
+
this.db
|
|
556
|
+
.prepare(`UPDATE conversation_sessions
|
|
557
|
+
SET backend_session_id = ?,
|
|
558
|
+
backend = ?,
|
|
559
|
+
model = ?,
|
|
560
|
+
last_message_at = CURRENT_TIMESTAMP
|
|
561
|
+
WHERE id = ?`)
|
|
562
|
+
.run(sessionId, backend, model, id);
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Timestamp of the most recent message in `id` that the SDK session
|
|
566
|
+
* actually consumed — i.e. excluding `proactive_forward(_batched)` rows
|
|
567
|
+
* inserted by the channel-timeline write path. Returns `undefined` when
|
|
568
|
+
* the session has no non-forward messages yet (in which case callers
|
|
569
|
+
* fall back to the row's `last_message_at`).
|
|
570
|
+
*/
|
|
571
|
+
lastNonForwardMessageAt(id) {
|
|
572
|
+
const row = this.db
|
|
573
|
+
.prepare(`SELECT timestamp
|
|
574
|
+
FROM messages
|
|
575
|
+
WHERE session_id = ?
|
|
576
|
+
AND (
|
|
577
|
+
role <> 'assistant'
|
|
578
|
+
OR json_extract(metadata, '$.notificationType') IS NULL
|
|
579
|
+
OR json_extract(metadata, '$.notificationType') NOT IN
|
|
580
|
+
('proactive_forward', 'proactive_forward_batched')
|
|
581
|
+
)
|
|
582
|
+
ORDER BY timestamp DESC, id DESC
|
|
583
|
+
LIMIT 1`)
|
|
584
|
+
.get(id);
|
|
585
|
+
return row?.timestamp;
|
|
586
|
+
}
|
|
587
|
+
/** Touch last_message_at and increment message_count */
|
|
588
|
+
touchSession(id) {
|
|
589
|
+
this.db
|
|
590
|
+
.prepare("UPDATE conversation_sessions SET last_message_at = CURRENT_TIMESTAMP, message_count = message_count + 1 WHERE id = ?")
|
|
591
|
+
.run(id);
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Explicitly close a session (user-initiated). Safe to call from outside
|
|
595
|
+
* any transaction — runs the DB UPDATE and then applies filesystem +
|
|
596
|
+
* in-memory side effects. Callers already inside a transaction should
|
|
597
|
+
* use `closeSessionInTx` with a caller-owned effects buffer instead.
|
|
598
|
+
*/
|
|
599
|
+
closeSession(id) {
|
|
600
|
+
const effects = createDeferredEffects();
|
|
601
|
+
this.closeSessionInTx(id, effects);
|
|
602
|
+
this.applyDeferredEffects(effects);
|
|
603
|
+
}
|
|
604
|
+
/** Check if a message content is a close command */
|
|
605
|
+
isCloseCommand(content) {
|
|
606
|
+
return CLOSE_KEYWORDS.has(content.trim().toLowerCase());
|
|
607
|
+
}
|
|
608
|
+
/** Get platform-specific session timeout in milliseconds */
|
|
609
|
+
getTimeoutMs(platform, isDm) {
|
|
610
|
+
if (platform === "dashboard") {
|
|
611
|
+
return this.config.sessionTimeoutDashboardMinutes * 60 * 1000;
|
|
612
|
+
}
|
|
613
|
+
// DM uses longer timeout; channel mentions use shorter timeout
|
|
614
|
+
if (isDm === false) {
|
|
615
|
+
return this.config.sessionTimeoutChannelMinutes * 60 * 1000;
|
|
616
|
+
}
|
|
617
|
+
return this.config.sessionTimeoutDmMinutes * 60 * 1000;
|
|
618
|
+
}
|
|
619
|
+
countMessagesInScope(scope, scopeKey) {
|
|
620
|
+
const row = this.db
|
|
621
|
+
.prepare(`SELECT COUNT(*) AS count
|
|
622
|
+
FROM messages m
|
|
623
|
+
JOIN conversation_sessions s ON m.session_id = s.id
|
|
624
|
+
WHERE s.scope = ? AND s.scope_key = ?`)
|
|
625
|
+
.get(scope, scopeKey);
|
|
626
|
+
return row.count;
|
|
627
|
+
}
|
|
628
|
+
/**
|
|
629
|
+
* Check if the period between lastMessageAt and now crosses a day boundary.
|
|
630
|
+
* Day boundary = config.dayBoundaryHour (default 04:00).
|
|
631
|
+
*/
|
|
632
|
+
crossedDayBoundary(lastMessageAtMs) {
|
|
633
|
+
const now = new Date();
|
|
634
|
+
const lastMsg = new Date(lastMessageAtMs);
|
|
635
|
+
// If they're in the same "agent day", no boundary crossed
|
|
636
|
+
const lastDay = this.getAgentDay(lastMsg);
|
|
637
|
+
const currentDay = this.getAgentDay(now);
|
|
638
|
+
return lastDay !== currentDay;
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* Get the "agent day" for a timestamp using the configured timezone.
|
|
642
|
+
* An agent day starts at dayBoundaryHour (e.g., 04:00).
|
|
643
|
+
* So 2026-04-02 03:59 is still day 2026-04-01,
|
|
644
|
+
* but 2026-04-02 04:00 is day 2026-04-02.
|
|
645
|
+
*/
|
|
646
|
+
getAgentDay(date) {
|
|
647
|
+
const tz = this.config.timezone || undefined;
|
|
648
|
+
const local = nowInTimezone(tz, date);
|
|
649
|
+
let { year, month, day } = local;
|
|
650
|
+
if (local.hours < this.config.dayBoundaryHour) {
|
|
651
|
+
// Before boundary: still previous agent day — shift back one day
|
|
652
|
+
const shifted = new Date(date);
|
|
653
|
+
shifted.setDate(shifted.getDate() - 1);
|
|
654
|
+
const prev = nowInTimezone(tz, shifted);
|
|
655
|
+
year = prev.year;
|
|
656
|
+
month = prev.month;
|
|
657
|
+
day = prev.day;
|
|
658
|
+
}
|
|
659
|
+
return `${year}-${String(month).padStart(2, "0")}-${String(day).padStart(2, "0")}`;
|
|
660
|
+
}
|
|
661
|
+
// ── DM conversation log (session-independent) ──
|
|
662
|
+
/**
|
|
663
|
+
* Get all DM messages since the last summary, across all sessions.
|
|
664
|
+
* Grouped by platform. Does NOT touch session status.
|
|
665
|
+
*/
|
|
666
|
+
getUnsummarizedDmMessages(platform) {
|
|
667
|
+
// Find the timestamp of the last summary for this platform
|
|
668
|
+
const lastLog = this.db
|
|
669
|
+
.prepare(`SELECT created_at FROM dm_conversation_log
|
|
670
|
+
WHERE scope = 'owner_dm' AND scope_key = ?
|
|
671
|
+
ORDER BY created_at DESC LIMIT 1`)
|
|
672
|
+
.get(platform);
|
|
673
|
+
const since = lastLog?.created_at ?? "1970-01-01 00:00:00";
|
|
674
|
+
return this.db
|
|
675
|
+
.prepare(`SELECT m.role, m.content, m.timestamp, m.metadata FROM messages m
|
|
676
|
+
JOIN conversation_sessions s ON m.session_id = s.id
|
|
677
|
+
WHERE s.scope = ? AND s.scope_key = ? AND m.timestamp > ?
|
|
678
|
+
ORDER BY m.timestamp ASC`)
|
|
679
|
+
.all(OWNER_DM_SCOPE, platform, since);
|
|
680
|
+
}
|
|
681
|
+
/** Get the list of platforms that have DM sessions with messages since last summary */
|
|
682
|
+
getDmPlatformsWithNewMessages() {
|
|
683
|
+
const rows = this.db
|
|
684
|
+
.prepare(`SELECT DISTINCT s.scope_key AS platform FROM conversation_sessions s
|
|
685
|
+
JOIN messages m ON m.session_id = s.id
|
|
686
|
+
WHERE s.scope = 'owner_dm'
|
|
687
|
+
GROUP BY s.scope_key
|
|
688
|
+
HAVING MAX(m.timestamp) > COALESCE(
|
|
689
|
+
(
|
|
690
|
+
SELECT MAX(created_at)
|
|
691
|
+
FROM dm_conversation_log
|
|
692
|
+
WHERE scope = 'owner_dm' AND scope_key = s.scope_key
|
|
693
|
+
),
|
|
694
|
+
'1970-01-01 00:00:00'
|
|
695
|
+
)`)
|
|
696
|
+
.all();
|
|
697
|
+
return rows.map((r) => r.platform);
|
|
698
|
+
}
|
|
699
|
+
/** Get the previous rolling summary for a platform */
|
|
700
|
+
getPreviousDmSummary(platform) {
|
|
701
|
+
const row = this.db
|
|
702
|
+
.prepare(`SELECT summary FROM dm_conversation_log
|
|
703
|
+
WHERE scope = 'owner_dm' AND scope_key = ?
|
|
704
|
+
ORDER BY created_at DESC LIMIT 1`)
|
|
705
|
+
.get(platform);
|
|
706
|
+
return row?.summary ?? null;
|
|
707
|
+
}
|
|
708
|
+
/** Store a new rolling summary */
|
|
709
|
+
saveDmSummary(platform, summary, messageCount) {
|
|
710
|
+
this.db
|
|
711
|
+
.prepare(`INSERT INTO dm_conversation_log (platform, scope, scope_key, summary, message_count)
|
|
712
|
+
VALUES (?, 'owner_dm', ?, ?, ?)`)
|
|
713
|
+
.run(platform, platform, summary, messageCount);
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
//# sourceMappingURL=session-manager.js.map
|