@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,944 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import { existsSync, mkdirSync, readdirSync, rmSync } from "node:fs";
|
|
3
|
+
import { basename, dirname, join, resolve } from "node:path";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import { getContextDir, getFsInfo, validatePrimaryVaultPath } from "../../config.js";
|
|
6
|
+
import { createBackup, finalizeBackup, inspectTarget, listTopLevel, MigrationFsError, moveTree, resolveConflictPolicy, restoreFromBackup, restoreOverwrittenTargetEntries, stashOverwrittenTargetEntries, verifyMoveCompleted, } from "../../core/migration-backup.js";
|
|
7
|
+
import { rewritePathsInDb } from "../../core/path-rewrite.js";
|
|
8
|
+
import { clearDegradedMode, isSetupCompleted } from "../../db/runtime-state.js";
|
|
9
|
+
import { ensureSkeletonFiles } from "../../core/skeleton.js";
|
|
10
|
+
import { createLogger } from "../../logging.js";
|
|
11
|
+
const logger = createLogger("setup-migrate");
|
|
12
|
+
/**
|
|
13
|
+
* How long to wait after pausing observers + EventBus dispatch for any
|
|
14
|
+
* in-flight cron tick to settle (plan §6.2 step 4). Configurable so
|
|
15
|
+
* tests can override to 0; production default 1s is sufficient because
|
|
16
|
+
* all known cron handlers either stop immediately (observer pollers)
|
|
17
|
+
* or enqueue to the paused EventBus (schedule watcher / hourly check).
|
|
18
|
+
*
|
|
19
|
+
* Plan says "up to 10s" but that's a ceiling; shorter is fine when no
|
|
20
|
+
* cron handler is known to block for that long.
|
|
21
|
+
*/
|
|
22
|
+
const DEFAULT_SETTLE_DELAY_MS = 1000;
|
|
23
|
+
function expandHome(p) {
|
|
24
|
+
if (p.startsWith("~/") || p.startsWith("~\\")) {
|
|
25
|
+
return resolve(homedir(), p.slice(2));
|
|
26
|
+
}
|
|
27
|
+
return resolve(p);
|
|
28
|
+
}
|
|
29
|
+
function validateMigrationTargetPath(rawPath, config, options) {
|
|
30
|
+
const expanded = expandHome(rawPath);
|
|
31
|
+
const validation = validatePrimaryVaultPath(expanded, {
|
|
32
|
+
dataDir: config.dataDir,
|
|
33
|
+
externalObsidianVaultPath: config.externalObsidianVaultPath,
|
|
34
|
+
}, {
|
|
35
|
+
autoCreate: false,
|
|
36
|
+
allowMissingLeaf: true,
|
|
37
|
+
collectFsInfo: options.collectFsInfo,
|
|
38
|
+
});
|
|
39
|
+
if (!validation.ok) {
|
|
40
|
+
return {
|
|
41
|
+
ok: false,
|
|
42
|
+
status: 400,
|
|
43
|
+
body: {
|
|
44
|
+
error: "target_invalid",
|
|
45
|
+
message: validation.message ?? "Target path failed validation.",
|
|
46
|
+
detail: validation.error,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
ok: true,
|
|
52
|
+
targetDir: expanded,
|
|
53
|
+
fsInfo: validation.fsInfo ?? null,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function describeTargetConflict(report) {
|
|
57
|
+
if (report.agentFileConflicts.length > 0) {
|
|
58
|
+
return {
|
|
59
|
+
kind: "target_has_agent_file_conflicts",
|
|
60
|
+
entries: report.agentFileConflicts,
|
|
61
|
+
allowedPolicies: ["overwrite_agent_files"],
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (report.foreignEntries.length > 0) {
|
|
65
|
+
return {
|
|
66
|
+
kind: "target_has_unrelated_files",
|
|
67
|
+
entries: report.foreignEntries,
|
|
68
|
+
allowedPolicies: ["merge", "overwrite_agent_files"],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
export function createSetupMigrateRoutes(deps) {
|
|
74
|
+
const app = new Hono();
|
|
75
|
+
const { db, config, settingsStore, migrationLock, contextWriteGate, observerManager, eventBus, eventBroadcaster, getInFlightExecutions, } = deps;
|
|
76
|
+
const settleDelayMs = deps.settleDelayMs ?? DEFAULT_SETTLE_DELAY_MS;
|
|
77
|
+
const emitProgress = async (phase, status, target, progress, message) => {
|
|
78
|
+
try {
|
|
79
|
+
await eventBroadcaster?.broadcastNamedEvent("context_migration_progress", {
|
|
80
|
+
type: "context_migration_progress",
|
|
81
|
+
phase,
|
|
82
|
+
status,
|
|
83
|
+
message,
|
|
84
|
+
target,
|
|
85
|
+
progress,
|
|
86
|
+
timestamp: new Date().toISOString(),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
logger.warn({ err, phase, target }, "Failed to broadcast migration progress");
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* POST /setup/reseed-skeleton — manual recovery endpoint for the
|
|
95
|
+
* case where the post-migration skeleton seed failed silently (e.g.
|
|
96
|
+
* `agent-assets/templates/` was not locatable on the daemon host).
|
|
97
|
+
* Idempotent: `ensureSkeletonFiles` preserves existing files, so
|
|
98
|
+
* hitting this more than once is safe. Body takes no parameters —
|
|
99
|
+
* the target is always the currently-configured `getContextDir`.
|
|
100
|
+
*
|
|
101
|
+
* Returns `{ status: "seeded", contextDir, templatesUsed }` where
|
|
102
|
+
* `templatesUsed` is `false` if the templates tree could not be
|
|
103
|
+
* located (only canonical directories + placeholders were written).
|
|
104
|
+
*/
|
|
105
|
+
app.post("/setup/reseed-skeleton", async (c) => {
|
|
106
|
+
const contextDir = getContextDir(config);
|
|
107
|
+
try {
|
|
108
|
+
ensureSkeletonFiles(contextDir, config.workspaceDir, {
|
|
109
|
+
skipManagementRules: !isSetupCompleted(db),
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
logger.error({ err, contextDir }, "Manual reseed failed");
|
|
114
|
+
return c.json({
|
|
115
|
+
error: "reseed_failed",
|
|
116
|
+
message: err instanceof Error ? err.message : "Unknown reseed error",
|
|
117
|
+
}, 500);
|
|
118
|
+
}
|
|
119
|
+
// Best-effort detection of whether templates were applied vs. only
|
|
120
|
+
// placeholders — checked by looking for a representative template
|
|
121
|
+
// file (`rules/management.md` in plain mode indicates the templates
|
|
122
|
+
// tree was available).
|
|
123
|
+
const templatesUsed = existsSync(join(contextDir, "rules", "redaction.md"));
|
|
124
|
+
return c.json({
|
|
125
|
+
status: "seeded",
|
|
126
|
+
contextDir,
|
|
127
|
+
templatesUsed,
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
app.post("/setup/validate-vault-path", async (c) => {
|
|
131
|
+
let body;
|
|
132
|
+
try {
|
|
133
|
+
body = await c.req.json();
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
137
|
+
return c.json({ error: "invalid_request", message: `Invalid JSON: ${detail}` }, 400);
|
|
138
|
+
}
|
|
139
|
+
const targetVaultMode = body.targetVaultMode;
|
|
140
|
+
if (targetVaultMode !== "plain" && targetVaultMode !== "obsidian") {
|
|
141
|
+
return c.json({
|
|
142
|
+
error: "invalid_request",
|
|
143
|
+
message: "targetVaultMode must be 'plain' or 'obsidian'.",
|
|
144
|
+
}, 400);
|
|
145
|
+
}
|
|
146
|
+
if (targetVaultMode === "plain") {
|
|
147
|
+
return c.json({
|
|
148
|
+
ok: true,
|
|
149
|
+
targetDir: resolve(config.dataDir, "context"),
|
|
150
|
+
fsInfo: null,
|
|
151
|
+
conflict: null,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
if (typeof body.targetVaultPath !== "string" || body.targetVaultPath.length === 0) {
|
|
155
|
+
return c.json({
|
|
156
|
+
error: "invalid_request",
|
|
157
|
+
message: "targetVaultPath is required for 'obsidian' mode.",
|
|
158
|
+
}, 400);
|
|
159
|
+
}
|
|
160
|
+
const targetValidation = validateMigrationTargetPath(body.targetVaultPath, config, {
|
|
161
|
+
collectFsInfo: true,
|
|
162
|
+
});
|
|
163
|
+
if (!targetValidation.ok) {
|
|
164
|
+
return c.json(targetValidation.body, targetValidation.status);
|
|
165
|
+
}
|
|
166
|
+
const sourceDir = getContextDir(config);
|
|
167
|
+
const targetReport = inspectTarget(targetValidation.targetDir, listTopLevel(sourceDir));
|
|
168
|
+
return c.json({
|
|
169
|
+
ok: true,
|
|
170
|
+
targetDir: targetValidation.targetDir,
|
|
171
|
+
fsInfo: targetValidation.fsInfo,
|
|
172
|
+
conflict: describeTargetConflict(targetReport),
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
app.post("/setup/migrate-context", async (c) => {
|
|
176
|
+
let body;
|
|
177
|
+
try {
|
|
178
|
+
body = await c.req.json();
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
182
|
+
return c.json({ error: "invalid_request", message: `Invalid JSON: ${detail}` }, 400);
|
|
183
|
+
}
|
|
184
|
+
const targetVaultMode = body.targetVaultMode;
|
|
185
|
+
if (targetVaultMode !== "plain" && targetVaultMode !== "obsidian") {
|
|
186
|
+
return c.json({
|
|
187
|
+
error: "invalid_request",
|
|
188
|
+
message: "targetVaultMode must be 'plain' or 'obsidian'.",
|
|
189
|
+
}, 400);
|
|
190
|
+
}
|
|
191
|
+
let targetVaultPathInput = null;
|
|
192
|
+
if (targetVaultMode === "obsidian") {
|
|
193
|
+
if (typeof body.targetVaultPath !== "string" || body.targetVaultPath.length === 0) {
|
|
194
|
+
return c.json({
|
|
195
|
+
error: "invalid_request",
|
|
196
|
+
message: "targetVaultPath is required for 'obsidian' mode.",
|
|
197
|
+
}, 400);
|
|
198
|
+
}
|
|
199
|
+
targetVaultPathInput = body.targetVaultPath;
|
|
200
|
+
}
|
|
201
|
+
const conflictPolicy = (body.conflictPolicy ?? "abort");
|
|
202
|
+
if (conflictPolicy !== "abort"
|
|
203
|
+
&& conflictPolicy !== "merge"
|
|
204
|
+
&& conflictPolicy !== "overwrite_agent_files") {
|
|
205
|
+
return c.json({
|
|
206
|
+
error: "invalid_request",
|
|
207
|
+
message: "conflictPolicy must be 'abort', 'merge', or 'overwrite_agent_files'.",
|
|
208
|
+
}, 400);
|
|
209
|
+
}
|
|
210
|
+
// Resolve source (current context dir) and target.
|
|
211
|
+
const sourceDir = getContextDir(config);
|
|
212
|
+
let targetDir;
|
|
213
|
+
if (targetVaultMode === "obsidian" && targetVaultPathInput) {
|
|
214
|
+
const targetValidation = validateMigrationTargetPath(targetVaultPathInput, config, {
|
|
215
|
+
collectFsInfo: false,
|
|
216
|
+
});
|
|
217
|
+
if (!targetValidation.ok) {
|
|
218
|
+
return c.json(targetValidation.body, targetValidation.status);
|
|
219
|
+
}
|
|
220
|
+
targetDir = targetValidation.targetDir;
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
targetDir = resolve(config.dataDir, "context");
|
|
224
|
+
}
|
|
225
|
+
// Noop short-circuit — both path AND mode already match. The
|
|
226
|
+
// {source, target} pair can only collide when both modes equal
|
|
227
|
+
// plain (obsidian mode's validator rejects paths inside dataDir,
|
|
228
|
+
// so an obsidian target can never coincide with the plain default).
|
|
229
|
+
if (sourceDir === targetDir && config.vaultMode === targetVaultMode) {
|
|
230
|
+
return c.json({
|
|
231
|
+
status: "noop",
|
|
232
|
+
from: sourceDir,
|
|
233
|
+
to: targetDir,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
// Active-session / in-flight execution check (first pass —
|
|
237
|
+
// informative, avoids paying for the lock/gate/pause cycle when
|
|
238
|
+
// we're obviously blocked).
|
|
239
|
+
const checkActiveSessions = () => db
|
|
240
|
+
.prepare("SELECT id, scope, scope_key FROM conversation_sessions WHERE status = 'active'")
|
|
241
|
+
.all();
|
|
242
|
+
const checkRunningScheduledExecutions = () => db
|
|
243
|
+
.prepare(`SELECT id, task_type, task_description
|
|
244
|
+
FROM agent_schedule
|
|
245
|
+
WHERE status = 'running'`)
|
|
246
|
+
.all();
|
|
247
|
+
const checkExecutionBlockers = () => {
|
|
248
|
+
const scheduledExecutions = checkRunningScheduledExecutions()
|
|
249
|
+
.map((row) => ({
|
|
250
|
+
kind: "scheduled_task",
|
|
251
|
+
id: row.id,
|
|
252
|
+
taskType: row.task_type,
|
|
253
|
+
detail: row.task_description,
|
|
254
|
+
}));
|
|
255
|
+
const seen = new Set();
|
|
256
|
+
const combined = [
|
|
257
|
+
...scheduledExecutions,
|
|
258
|
+
...(getInFlightExecutions?.() ?? []),
|
|
259
|
+
];
|
|
260
|
+
return combined.filter((entry) => {
|
|
261
|
+
const key = JSON.stringify(entry);
|
|
262
|
+
if (seen.has(key))
|
|
263
|
+
return false;
|
|
264
|
+
seen.add(key);
|
|
265
|
+
return true;
|
|
266
|
+
});
|
|
267
|
+
};
|
|
268
|
+
const activeSessions = checkActiveSessions();
|
|
269
|
+
const activeExecutions = checkExecutionBlockers();
|
|
270
|
+
if (activeSessions.length > 0 || activeExecutions.length > 0) {
|
|
271
|
+
return c.json({
|
|
272
|
+
error: (activeSessions.length > 0 ? "sessions_active" : "executions_active"),
|
|
273
|
+
message: activeSessions.length > 0
|
|
274
|
+
? "Active sessions block migration. Wait for them to close."
|
|
275
|
+
: "In-flight executions block migration. Wait for them to finish.",
|
|
276
|
+
sessions: activeSessions,
|
|
277
|
+
executions: activeExecutions,
|
|
278
|
+
}, 409);
|
|
279
|
+
}
|
|
280
|
+
// Acquire the migration lock. A second concurrent migrate gets 409.
|
|
281
|
+
const lock = migrationLock.acquire();
|
|
282
|
+
if (!lock.ok) {
|
|
283
|
+
return c.json({
|
|
284
|
+
error: "migration_in_progress",
|
|
285
|
+
message: "A migration is already running.",
|
|
286
|
+
}, 409);
|
|
287
|
+
}
|
|
288
|
+
// From here on, every early return MUST release the lock + gate + resume observers.
|
|
289
|
+
contextWriteGate.engage("migration_in_progress");
|
|
290
|
+
// Second active-session check, this time AFTER the lock is held and
|
|
291
|
+
// the write gate is engaged. Closes the race where an adapter accepts
|
|
292
|
+
// an inbound DM in the window between the first SELECT and our pause
|
|
293
|
+
// calls; a session landing there would begin executing against the
|
|
294
|
+
// old contextDir right as we move files out from under it. The lock
|
|
295
|
+
// alone doesn't stop dispatch — this re-check does.
|
|
296
|
+
const racedSessions = checkActiveSessions();
|
|
297
|
+
const racedExecutions = checkExecutionBlockers();
|
|
298
|
+
if (racedSessions.length > 0 || racedExecutions.length > 0) {
|
|
299
|
+
contextWriteGate.disengage();
|
|
300
|
+
migrationLock.release(lock.lockId);
|
|
301
|
+
return c.json({
|
|
302
|
+
error: (racedSessions.length > 0 ? "sessions_active" : "executions_active"),
|
|
303
|
+
message: racedSessions.length > 0
|
|
304
|
+
? "A session started during migration setup. Wait for sessions to close and retry."
|
|
305
|
+
: "An execution started during migration setup. Wait for it to finish and retry.",
|
|
306
|
+
sessions: racedSessions,
|
|
307
|
+
executions: racedExecutions,
|
|
308
|
+
}, 409);
|
|
309
|
+
}
|
|
310
|
+
// Snapshot pre-migration settings for rollback.
|
|
311
|
+
const previousSettings = {
|
|
312
|
+
vaultMode: config.vaultMode,
|
|
313
|
+
primaryVaultPath: config.primaryVaultPath,
|
|
314
|
+
primaryVaultName: config.primaryVaultName,
|
|
315
|
+
};
|
|
316
|
+
let observersPaused = false;
|
|
317
|
+
let dispatchPaused = false;
|
|
318
|
+
let backup = null;
|
|
319
|
+
let backupRowId = null;
|
|
320
|
+
let moveCompleted = false;
|
|
321
|
+
const startedAt = Date.now();
|
|
322
|
+
// Snapshot of target's pre-existing top-level entries. Captured
|
|
323
|
+
// BEFORE the move so rollback can remove only what we added and
|
|
324
|
+
// leave the user's pre-existing content (notably `.obsidian/`)
|
|
325
|
+
// intact. Without this, a failed move + rmSync(targetDir) would
|
|
326
|
+
// wipe an Obsidian workspace state that never participated in the
|
|
327
|
+
// migration.
|
|
328
|
+
let preExistingTargetEntries = null;
|
|
329
|
+
// Names of target-side files that `overwrite_agent_files` would
|
|
330
|
+
// destroy; stashed into the backup before the move so a failed
|
|
331
|
+
// migration can restore the user's pre-existing versions.
|
|
332
|
+
let overwrittenEntries = [];
|
|
333
|
+
let cleanupComplete = false;
|
|
334
|
+
const classifyFsError = (err, fallbackError, fallbackMessage) => {
|
|
335
|
+
if (err instanceof MigrationFsError) {
|
|
336
|
+
if (err.code === "icloud_file_evicted") {
|
|
337
|
+
return {
|
|
338
|
+
error: "icloud_file_evicted",
|
|
339
|
+
message: err.message,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
if (err.code === "cross_fs_partial_failure") {
|
|
343
|
+
return {
|
|
344
|
+
error: "cross_fs_partial_failure",
|
|
345
|
+
message: err.message,
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return { error: fallbackError, message: fallbackMessage };
|
|
350
|
+
};
|
|
351
|
+
const cleanupAfterMigration = async () => {
|
|
352
|
+
if (cleanupComplete) {
|
|
353
|
+
return { resumeFailures: [] };
|
|
354
|
+
}
|
|
355
|
+
cleanupComplete = true;
|
|
356
|
+
const resumeFailures = [];
|
|
357
|
+
try {
|
|
358
|
+
if (dispatchPaused && eventBus) {
|
|
359
|
+
try {
|
|
360
|
+
eventBus.resumeDispatch();
|
|
361
|
+
}
|
|
362
|
+
catch (err) {
|
|
363
|
+
resumeFailures.push("event_bus");
|
|
364
|
+
logger.error({ err }, "Failed to resume event bus");
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
if (observersPaused && observerManager) {
|
|
368
|
+
try {
|
|
369
|
+
await observerManager.resumeAll();
|
|
370
|
+
}
|
|
371
|
+
catch (err) {
|
|
372
|
+
resumeFailures.push("observer_manager");
|
|
373
|
+
logger.error({ err }, "Failed to resume observers");
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
finally {
|
|
378
|
+
contextWriteGate.disengage();
|
|
379
|
+
migrationLock.release(lock.lockId);
|
|
380
|
+
}
|
|
381
|
+
return { resumeFailures };
|
|
382
|
+
};
|
|
383
|
+
const respondAfterCleanup = async (payload, status, options = {}) => {
|
|
384
|
+
if (status !== 200) {
|
|
385
|
+
await emitProgress("failed", "failed", targetDir, 100, typeof payload.message === "string"
|
|
386
|
+
? payload.message
|
|
387
|
+
: "Migration failed.");
|
|
388
|
+
}
|
|
389
|
+
const { resumeFailures } = await cleanupAfterMigration();
|
|
390
|
+
if (options.surfaceResumeFailures && resumeFailures.length > 0) {
|
|
391
|
+
payload = {
|
|
392
|
+
...payload,
|
|
393
|
+
resumeStatus: "manual_required",
|
|
394
|
+
manualActionRequired: true,
|
|
395
|
+
message: "Migration committed, but observers/schedulers failed to resume. Restart the daemon.",
|
|
396
|
+
resumeFailures,
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
return c.json(payload, status);
|
|
400
|
+
};
|
|
401
|
+
const restoreSettingsDirectly = (settings) => {
|
|
402
|
+
const upsert = db.prepare(`INSERT INTO settings (key, value_json, updated_at)
|
|
403
|
+
VALUES (?, ?, CURRENT_TIMESTAMP)
|
|
404
|
+
ON CONFLICT(key) DO UPDATE SET
|
|
405
|
+
value_json = excluded.value_json,
|
|
406
|
+
updated_at = CURRENT_TIMESTAMP`);
|
|
407
|
+
const tx = db.transaction(() => {
|
|
408
|
+
upsert.run("vaultMode", JSON.stringify(settings.vaultMode));
|
|
409
|
+
upsert.run("primaryVaultPath", JSON.stringify(settings.primaryVaultPath));
|
|
410
|
+
upsert.run("primaryVaultName", JSON.stringify(settings.primaryVaultName));
|
|
411
|
+
});
|
|
412
|
+
tx();
|
|
413
|
+
Object.assign(config, settings);
|
|
414
|
+
};
|
|
415
|
+
const commitVaultSettings = (nextVaultMode, nextTargetDir) => {
|
|
416
|
+
const nextPrimaryVaultPath = nextVaultMode === "obsidian" ? nextTargetDir : null;
|
|
417
|
+
const nextPrimaryVaultName = nextVaultMode === "obsidian" ? basename(nextTargetDir) : null;
|
|
418
|
+
settingsStore.setMany({
|
|
419
|
+
vaultMode: nextVaultMode,
|
|
420
|
+
primaryVaultPath: nextPrimaryVaultPath,
|
|
421
|
+
primaryVaultName: nextPrimaryVaultName,
|
|
422
|
+
});
|
|
423
|
+
Object.assign(config, {
|
|
424
|
+
vaultMode: nextVaultMode,
|
|
425
|
+
primaryVaultPath: nextPrimaryVaultPath,
|
|
426
|
+
primaryVaultName: nextPrimaryVaultName,
|
|
427
|
+
});
|
|
428
|
+
clearDegradedMode(db);
|
|
429
|
+
};
|
|
430
|
+
// Seed / top up the canonical vault skeleton (B-007 §5.1) on the
|
|
431
|
+
// freshly-committed target. Idempotent via
|
|
432
|
+
// `copyTreePreservingExisting`, so an existing-vault move through
|
|
433
|
+
// this endpoint only fills gaps and never overwrites user edits.
|
|
434
|
+
// Non-fatal: the migration has already committed, so a skeleton
|
|
435
|
+
// failure is logged but does not surface a 500 to the client.
|
|
436
|
+
//
|
|
437
|
+
// Ordering vs `finalizeBackup`: `ensureSkeletonFiles` writes new
|
|
438
|
+
// file inodes at the target (or no-ops on existing ones), so it
|
|
439
|
+
// never mutates the hardlinked backup. Running it here — after
|
|
440
|
+
// `commitVaultSettings` and before backup finalization — means
|
|
441
|
+
// `getContextDir(config)` already returns the committed path and
|
|
442
|
+
// any downstream API caller observes a fully provisioned vault.
|
|
443
|
+
const seedTargetSkeleton = async (nextTargetDir) => {
|
|
444
|
+
await emitProgress("skeleton_seed", "running", nextTargetDir, 90, "Seeding the skeleton templates into the target vault…");
|
|
445
|
+
try {
|
|
446
|
+
ensureSkeletonFiles(nextTargetDir, config.workspaceDir, {
|
|
447
|
+
skipManagementRules: !isSetupCompleted(db),
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
catch (err) {
|
|
451
|
+
logger.warn({ err, targetDir: nextTargetDir, workspaceDir: config.workspaceDir }, "skeleton seed after migration failed — vault may be missing template files");
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
// Re-target path-sensitive observers (PrimaryVaultWatcher) after
|
|
455
|
+
// settings commit. The migration already paused all observers
|
|
456
|
+
// earlier; firing this callback between commit and resume gives
|
|
457
|
+
// the observer the authoritative new path before its `start()`
|
|
458
|
+
// runs during resume. Non-fatal — an observer wiring failure must
|
|
459
|
+
// not roll back a migration that otherwise succeeded.
|
|
460
|
+
const notifyVaultPathChange = async (nextPath) => {
|
|
461
|
+
if (!deps.onPrimaryVaultPathChange)
|
|
462
|
+
return;
|
|
463
|
+
try {
|
|
464
|
+
await deps.onPrimaryVaultPathChange(nextPath);
|
|
465
|
+
}
|
|
466
|
+
catch (err) {
|
|
467
|
+
logger.warn({ err, nextPath }, "onPrimaryVaultPathChange callback failed — observers may be targeting a stale path");
|
|
468
|
+
}
|
|
469
|
+
};
|
|
470
|
+
const rollback = async (reason) => {
|
|
471
|
+
try {
|
|
472
|
+
if (moveCompleted && backup) {
|
|
473
|
+
restoreFromBackup(backup, sourceDir);
|
|
474
|
+
// Before deciding what to remove at target, put the user's
|
|
475
|
+
// pre-existing overwritten versions BACK. This undoes the
|
|
476
|
+
// irrecoverable side effect of `overwrite_agent_files`:
|
|
477
|
+
// without restoring the stash, the user's original target
|
|
478
|
+
// files are gone, replaced by source's versions that the
|
|
479
|
+
// move wrote in their place.
|
|
480
|
+
if (overwrittenEntries.length > 0) {
|
|
481
|
+
try {
|
|
482
|
+
restoreOverwrittenTargetEntries(backup, targetDir, overwrittenEntries);
|
|
483
|
+
}
|
|
484
|
+
catch (err) {
|
|
485
|
+
logger.warn({ err }, "rollback: overwritten-target restore failed");
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
// Remove only entries moveTree added at target. Reading the
|
|
489
|
+
// post-move target and subtracting `preExistingTargetEntries`
|
|
490
|
+
// (captured pre-move) yields the set we introduced; everything
|
|
491
|
+
// else was the user's and must stay. If we can't read the
|
|
492
|
+
// target (e.g. partial cross-fs failure left it in odd state),
|
|
493
|
+
// fall back to a whole-tree rm ONLY when the target had no
|
|
494
|
+
// pre-existing entries — that's the only case where rm is safe.
|
|
495
|
+
try {
|
|
496
|
+
if (existsSync(targetDir) && targetDir !== sourceDir) {
|
|
497
|
+
const pre = preExistingTargetEntries ?? new Set();
|
|
498
|
+
if (pre.size === 0) {
|
|
499
|
+
rmSync(targetDir, { recursive: true, force: true });
|
|
500
|
+
}
|
|
501
|
+
else {
|
|
502
|
+
for (const name of readdirSync(targetDir)) {
|
|
503
|
+
if (pre.has(name))
|
|
504
|
+
continue;
|
|
505
|
+
try {
|
|
506
|
+
rmSync(join(targetDir, name), { recursive: true, force: true });
|
|
507
|
+
}
|
|
508
|
+
catch (err) {
|
|
509
|
+
logger.warn({ err, entry: name, targetDir }, "rollback: failed to remove migration-added entry");
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
catch (err) {
|
|
516
|
+
logger.warn({ err, targetDir }, "rollback: target cleanup failed");
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
// Reapply previous settings defensively — a step that got as far
|
|
520
|
+
// as settings update and then failed would have left them
|
|
521
|
+
// partially applied.
|
|
522
|
+
try {
|
|
523
|
+
restoreSettingsDirectly(previousSettings);
|
|
524
|
+
}
|
|
525
|
+
catch (err) {
|
|
526
|
+
logger.warn({ err }, "rollback: settings revert failed");
|
|
527
|
+
}
|
|
528
|
+
if (backupRowId !== null) {
|
|
529
|
+
db.prepare("UPDATE migration_backups SET status = 'rolled_back', rollback_completed_at = ? WHERE id = ?").run(new Date().toISOString(), backupRowId);
|
|
530
|
+
}
|
|
531
|
+
logger.warn({ reason, sourceDir, targetDir }, "Migration rollback complete");
|
|
532
|
+
return { rollbackStatus: "completed" };
|
|
533
|
+
}
|
|
534
|
+
catch (err) {
|
|
535
|
+
logger.error({ err, reason }, "Migration rollback failed");
|
|
536
|
+
return { rollbackStatus: "manual_required" };
|
|
537
|
+
}
|
|
538
|
+
};
|
|
539
|
+
try {
|
|
540
|
+
await emitProgress("preflight", "running", targetDir, 5, "Pausing observers and validating the target directory…");
|
|
541
|
+
if (observerManager) {
|
|
542
|
+
await observerManager.pauseAll();
|
|
543
|
+
observersPaused = true;
|
|
544
|
+
}
|
|
545
|
+
if (eventBus) {
|
|
546
|
+
eventBus.pauseDispatch();
|
|
547
|
+
dispatchPaused = true;
|
|
548
|
+
}
|
|
549
|
+
// Plan §6.2 step 4 — give any in-flight cron tick that fired
|
|
550
|
+
// just before pause a chance to settle. Every known cron
|
|
551
|
+
// handler either (a) respects observer stop() via pauseAll, or
|
|
552
|
+
// (b) enqueues events onto the now-paused EventBus. The delay
|
|
553
|
+
// is belt-and-suspenders for handlers that do direct I/O
|
|
554
|
+
// without going through either gate; exposed for tests so the
|
|
555
|
+
// 1s wall clock doesn't bloat the suite.
|
|
556
|
+
if (settleDelayMs > 0) {
|
|
557
|
+
await new Promise((r) => setTimeout(r, settleDelayMs));
|
|
558
|
+
}
|
|
559
|
+
// Recovery edge case: degraded "obsidian without a primary path"
|
|
560
|
+
// resolves to the plain fallback directory. There is no file move
|
|
561
|
+
// to perform, but we still must commit the mode switch so the app
|
|
562
|
+
// leaves degraded mode instead of colliding with itself.
|
|
563
|
+
if (sourceDir === targetDir && config.vaultMode !== targetVaultMode) {
|
|
564
|
+
await emitProgress("settings_update", "running", targetDir, 85, "Updating Management Mode settings…");
|
|
565
|
+
try {
|
|
566
|
+
commitVaultSettings(targetVaultMode, targetDir);
|
|
567
|
+
}
|
|
568
|
+
catch (err) {
|
|
569
|
+
logger.error({ err }, "Settings update failed during zero-copy migration");
|
|
570
|
+
const { rollbackStatus } = await rollback("settings_update_failed");
|
|
571
|
+
return await respondAfterCleanup({
|
|
572
|
+
error: "settings_update_failed",
|
|
573
|
+
message: "Settings update failed; source and DB restored.",
|
|
574
|
+
rollbackStatus,
|
|
575
|
+
backupPath: null,
|
|
576
|
+
}, 500);
|
|
577
|
+
}
|
|
578
|
+
await seedTargetSkeleton(targetDir);
|
|
579
|
+
await notifyVaultPathChange(targetVaultMode === "obsidian" ? targetDir : null);
|
|
580
|
+
const durationMs = Date.now() - startedAt;
|
|
581
|
+
let fsInfo = null;
|
|
582
|
+
try {
|
|
583
|
+
fsInfo = getFsInfo(targetDir);
|
|
584
|
+
}
|
|
585
|
+
catch (err) {
|
|
586
|
+
logger.warn({ err }, "fsInfo probe failed after zero-copy migration");
|
|
587
|
+
}
|
|
588
|
+
await emitProgress("resume", "running", targetDir, 95, "Resuming observers and schedulers…");
|
|
589
|
+
const { resumeFailures } = await cleanupAfterMigration();
|
|
590
|
+
const resumeStatus = resumeFailures.length > 0 ? "manual_required" : "resumed";
|
|
591
|
+
try {
|
|
592
|
+
db.prepare(`INSERT INTO agent_actions
|
|
593
|
+
(action_type, result, detail, started_at, completed_at, duration_ms)
|
|
594
|
+
VALUES ('context_dir_migration', 'success', ?, ?, ?, ?)`).run(JSON.stringify({
|
|
595
|
+
from: sourceDir,
|
|
596
|
+
to: targetDir,
|
|
597
|
+
filesMoved: 0,
|
|
598
|
+
bytes: 0,
|
|
599
|
+
conflictPolicy,
|
|
600
|
+
backupPath: null,
|
|
601
|
+
dbRewrite: null,
|
|
602
|
+
fsInfo,
|
|
603
|
+
resumeStatus,
|
|
604
|
+
resumeFailures,
|
|
605
|
+
}), new Date(startedAt).toISOString(), new Date().toISOString(), durationMs);
|
|
606
|
+
}
|
|
607
|
+
catch (err) {
|
|
608
|
+
logger.warn({ err }, "failed to write zero-copy context_dir_migration audit row");
|
|
609
|
+
}
|
|
610
|
+
logger.info({
|
|
611
|
+
from: sourceDir,
|
|
612
|
+
to: targetDir,
|
|
613
|
+
files: 0,
|
|
614
|
+
bytes: 0,
|
|
615
|
+
durationMs,
|
|
616
|
+
conflictPolicy,
|
|
617
|
+
dbRewrite: null,
|
|
618
|
+
fsInfo,
|
|
619
|
+
resumeStatus,
|
|
620
|
+
resumeFailures,
|
|
621
|
+
}, "context_migration_complete_without_move");
|
|
622
|
+
await emitProgress("completed", "completed", targetDir, 100, "Migration complete.");
|
|
623
|
+
return c.json({
|
|
624
|
+
status: "migrated",
|
|
625
|
+
from: sourceDir,
|
|
626
|
+
to: targetDir,
|
|
627
|
+
filesMoved: 0,
|
|
628
|
+
bytes: 0,
|
|
629
|
+
durationMs,
|
|
630
|
+
backupPath: null,
|
|
631
|
+
backupExpiresAt: null,
|
|
632
|
+
fsInfo,
|
|
633
|
+
resumeStatus,
|
|
634
|
+
manualActionRequired: resumeFailures.length > 0,
|
|
635
|
+
...(resumeFailures.length > 0
|
|
636
|
+
? {
|
|
637
|
+
message: "Migration committed, but observers/schedulers failed to resume. Restart the daemon.",
|
|
638
|
+
resumeFailures,
|
|
639
|
+
}
|
|
640
|
+
: {}),
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
// Conflict detection against target.
|
|
644
|
+
const sourceTopLevel = listTopLevel(sourceDir);
|
|
645
|
+
const targetReport = inspectTarget(targetDir, sourceTopLevel);
|
|
646
|
+
const resolution = resolveConflictPolicy(targetReport, conflictPolicy);
|
|
647
|
+
if (!resolution.ok) {
|
|
648
|
+
return await respondAfterCleanup({
|
|
649
|
+
error: resolution.error,
|
|
650
|
+
message: resolution.error === "target_has_unrelated_files"
|
|
651
|
+
? "Target directory contains foreign files. Pick a policy or choose an empty target."
|
|
652
|
+
: "Target directory has agent-file name collisions. Pass conflictPolicy='overwrite_agent_files' to proceed.",
|
|
653
|
+
entries: resolution.entries,
|
|
654
|
+
}, 400);
|
|
655
|
+
}
|
|
656
|
+
// Backup — place under dataDir so cleanup is local; timestamp in UTC.
|
|
657
|
+
await emitProgress("backup", "running", targetDir, 20, "Creating a safety backup before moving files…");
|
|
658
|
+
const backupPath = join(config.dataDir, "migration-backups", `migration-backup-${new Date().toISOString().replace(/[:.]/g, "-")}`);
|
|
659
|
+
mkdirSync(dirname(backupPath), { recursive: true });
|
|
660
|
+
try {
|
|
661
|
+
backup = createBackup(sourceDir, backupPath);
|
|
662
|
+
}
|
|
663
|
+
catch (err) {
|
|
664
|
+
logger.error({ err, sourceDir, backupPath }, "Backup creation failed");
|
|
665
|
+
const classified = classifyFsError(err, "backup_failed", "Failed to create backup before migration.");
|
|
666
|
+
return await respondAfterCleanup({
|
|
667
|
+
error: classified.error,
|
|
668
|
+
message: classified.message,
|
|
669
|
+
}, 500);
|
|
670
|
+
}
|
|
671
|
+
// Ledger row (pending).
|
|
672
|
+
const expiresAt = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString();
|
|
673
|
+
const ledgerResult = db
|
|
674
|
+
.prepare(`INSERT INTO migration_backups
|
|
675
|
+
(created_at, source_path, target_path, backup_path, files_count, bytes, status, expires_at)
|
|
676
|
+
VALUES (?, ?, ?, ?, ?, ?, 'pending', ?)`)
|
|
677
|
+
.run(new Date().toISOString(), sourceDir, targetDir, backup.backupDir, backup.manifest.files.length, backup.manifest.totalBytes, expiresAt);
|
|
678
|
+
backupRowId = Number(ledgerResult.lastInsertRowid);
|
|
679
|
+
// Capture the target's pre-existing top-level entries BEFORE the
|
|
680
|
+
// move so rollback can tell apart "we moved this here" from "the
|
|
681
|
+
// user had this here already". Includes benign entries like
|
|
682
|
+
// `.obsidian/` so they survive a rollback intact. Uses raw
|
|
683
|
+
// readdir (not listTopLevel, which filters benigns) because the
|
|
684
|
+
// rollback logic needs to preserve them specifically.
|
|
685
|
+
preExistingTargetEntries = existsSync(targetDir)
|
|
686
|
+
? new Set(readdirSync(targetDir))
|
|
687
|
+
: new Set();
|
|
688
|
+
// Stash agent-file entries that `overwrite_agent_files` is about
|
|
689
|
+
// to destroy at target. Only runs when the user opted into the
|
|
690
|
+
// destructive policy AND real conflicts exist. The stash lives
|
|
691
|
+
// inside the backup dir so the retention cron reaches it too.
|
|
692
|
+
if (conflictPolicy === "overwrite_agent_files"
|
|
693
|
+
&& targetReport.agentFileConflicts.length > 0) {
|
|
694
|
+
try {
|
|
695
|
+
overwrittenEntries = stashOverwrittenTargetEntries(targetDir, targetReport.agentFileConflicts, backup.backupDir);
|
|
696
|
+
}
|
|
697
|
+
catch (err) {
|
|
698
|
+
logger.error({ err }, "Failed to stash overwritten target entries — aborting migration");
|
|
699
|
+
const { rollbackStatus } = await rollback("overwrite_stash_failed");
|
|
700
|
+
return await respondAfterCleanup({
|
|
701
|
+
error: "backup_failed",
|
|
702
|
+
message: "Could not stash target-side versions of colliding files; refusing to proceed with overwrite.",
|
|
703
|
+
rollbackStatus,
|
|
704
|
+
backupPath: backup.backupDir,
|
|
705
|
+
}, 500);
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
// Move.
|
|
709
|
+
await emitProgress("move", "running", targetDir, 45, "Moving context files to the selected directory…");
|
|
710
|
+
try {
|
|
711
|
+
moveTree(sourceDir, targetDir);
|
|
712
|
+
moveCompleted = true;
|
|
713
|
+
}
|
|
714
|
+
catch (err) {
|
|
715
|
+
logger.error({ err, sourceDir, targetDir }, "Move failed");
|
|
716
|
+
const { rollbackStatus } = await rollback("move_failed");
|
|
717
|
+
const classified = classifyFsError(err, "move_failed", "File move failed.");
|
|
718
|
+
return await respondAfterCleanup({
|
|
719
|
+
error: classified.error,
|
|
720
|
+
message: classified.message,
|
|
721
|
+
rollbackStatus,
|
|
722
|
+
backupPath: backup.backupDir,
|
|
723
|
+
}, 500);
|
|
724
|
+
}
|
|
725
|
+
// Plan §6.5 "verification after move" — walk the source manifest
|
|
726
|
+
// against the target, confirming every file exists with the
|
|
727
|
+
// expected size. Catches partial copies, truncation, or a
|
|
728
|
+
// filesystem that silently dropped files. Cheap O(n) stat walk;
|
|
729
|
+
// SHA-256 content verification is deferred to Phase 2.x.
|
|
730
|
+
await emitProgress("verify", "running", targetDir, 60, "Verifying the moved files…");
|
|
731
|
+
const verification = verifyMoveCompleted(backup.manifest, targetDir);
|
|
732
|
+
if (!verification.ok) {
|
|
733
|
+
logger.error({ missing: verification.missing, sizeMismatch: verification.sizeMismatch }, "Move verification failed");
|
|
734
|
+
const { rollbackStatus } = await rollback("move_verification_failed");
|
|
735
|
+
return await respondAfterCleanup({
|
|
736
|
+
error: "move_verification_failed",
|
|
737
|
+
message: "Move completed but target does not match source manifest.",
|
|
738
|
+
missing: verification.missing,
|
|
739
|
+
sizeMismatch: verification.sizeMismatch,
|
|
740
|
+
rollbackStatus,
|
|
741
|
+
backupPath: backup.backupDir,
|
|
742
|
+
}, 500);
|
|
743
|
+
}
|
|
744
|
+
// DB path rewrite.
|
|
745
|
+
let dbRewriteStats = null;
|
|
746
|
+
await emitProgress("db_rewrite", "running", targetDir, 75, "Rewriting stored absolute paths in the database…");
|
|
747
|
+
try {
|
|
748
|
+
dbRewriteStats = rewritePathsInDb(db, sourceDir, targetDir);
|
|
749
|
+
}
|
|
750
|
+
catch (err) {
|
|
751
|
+
logger.error({ err }, "DB path rewrite failed");
|
|
752
|
+
const { rollbackStatus } = await rollback("db_rewrite_failed");
|
|
753
|
+
return await respondAfterCleanup({
|
|
754
|
+
error: "db_rewrite_failed",
|
|
755
|
+
message: "DB path rewrite failed; source restored from backup.",
|
|
756
|
+
rollbackStatus,
|
|
757
|
+
backupPath: backup.backupDir,
|
|
758
|
+
}, 500);
|
|
759
|
+
}
|
|
760
|
+
// Settings update. We write directly via settingsStore — env-writer
|
|
761
|
+
// rejects `vaultMode` / `primaryVaultPath` PATCH to steer callers
|
|
762
|
+
// into this endpoint, and the migration endpoint is the one place
|
|
763
|
+
// that legitimately owns those writes.
|
|
764
|
+
await emitProgress("settings_update", "running", targetDir, 85, "Updating Management Mode settings…");
|
|
765
|
+
try {
|
|
766
|
+
commitVaultSettings(targetVaultMode, targetDir);
|
|
767
|
+
// Gemini's `.pa-admin-policy.toml` embeds an absolute contextDir
|
|
768
|
+
// regex (audit §5.3). No separate regeneration is needed:
|
|
769
|
+
// `gemini-cli-core.ts` re-runs `generateAdminPolicy` with the
|
|
770
|
+
// current `getContextDir(this.config)` on every execute, and
|
|
771
|
+
// the Object.assign above makes the next execute see the new
|
|
772
|
+
// vault. Persisted workdirs are overwritten on resume, not
|
|
773
|
+
// before. The active-session check earlier in this handler
|
|
774
|
+
// guarantees no execute is currently running against the old
|
|
775
|
+
// path.
|
|
776
|
+
}
|
|
777
|
+
catch (err) {
|
|
778
|
+
logger.error({ err }, "Settings update failed");
|
|
779
|
+
// Plan §6.9 row "settings update failure" — reverse the DB
|
|
780
|
+
// rewrite BEFORE restoring files. Reversal is safe here
|
|
781
|
+
// because (a) observers are paused so no new row could have
|
|
782
|
+
// landed referencing the new path, (b) the rewrite is
|
|
783
|
+
// directional and monotonic, and (c) the temporal window
|
|
784
|
+
// between rewritePathsInDb and this catch is sub-millisecond
|
|
785
|
+
// in practice. If the reverse rewrite itself throws, the
|
|
786
|
+
// rollback still restores the files, and the user is
|
|
787
|
+
// notified via `manual_required` status.
|
|
788
|
+
try {
|
|
789
|
+
rewritePathsInDb(db, targetDir, sourceDir);
|
|
790
|
+
}
|
|
791
|
+
catch (reverseErr) {
|
|
792
|
+
logger.error({ reverseErr }, "DB rewrite reverse failed — rollback marked manual_required");
|
|
793
|
+
const { rollbackStatus: _ } = await rollback("settings_update_failed_with_db_unreversed");
|
|
794
|
+
return await respondAfterCleanup({
|
|
795
|
+
error: "settings_update_failed",
|
|
796
|
+
message: "Settings update failed AND the DB rewrite reverse also failed. Restore manually from backup.",
|
|
797
|
+
rollbackStatus: "manual_required",
|
|
798
|
+
backupPath: backup.backupDir,
|
|
799
|
+
}, 500);
|
|
800
|
+
}
|
|
801
|
+
const { rollbackStatus } = await rollback("settings_update_failed");
|
|
802
|
+
return await respondAfterCleanup({
|
|
803
|
+
error: "settings_update_failed",
|
|
804
|
+
message: "Settings update failed; source and DB restored.",
|
|
805
|
+
rollbackStatus,
|
|
806
|
+
backupPath: backup.backupDir,
|
|
807
|
+
}, 500);
|
|
808
|
+
}
|
|
809
|
+
await seedTargetSkeleton(targetDir);
|
|
810
|
+
await notifyVaultPathChange(targetVaultMode === "obsidian" ? targetDir : null);
|
|
811
|
+
// Finalize backup (break hardlinks so it's a true 7-day rollback snapshot).
|
|
812
|
+
try {
|
|
813
|
+
finalizeBackup(backup);
|
|
814
|
+
}
|
|
815
|
+
catch (err) {
|
|
816
|
+
// Non-fatal: the migration succeeded; the 7-day retention guarantee
|
|
817
|
+
// is best-effort for same-fs hardlinks in this narrow case.
|
|
818
|
+
logger.warn({ err }, "finalizeBackup failed — rollback window is reduced to pre-migration only");
|
|
819
|
+
}
|
|
820
|
+
db.prepare("UPDATE migration_backups SET status = 'completed' WHERE id = ?").run(backupRowId);
|
|
821
|
+
const durationMs = Date.now() - startedAt;
|
|
822
|
+
// Plan §4.3 / §6.1 — collect fsInfo on the now-populated target
|
|
823
|
+
// so the dashboard can surface "iCloud sync detected" or similar
|
|
824
|
+
// banners. Probed AFTER the move because some checks (case
|
|
825
|
+
// sensitivity via probe files) need the directory to exist.
|
|
826
|
+
let fsInfo = null;
|
|
827
|
+
try {
|
|
828
|
+
fsInfo = getFsInfo(targetDir);
|
|
829
|
+
}
|
|
830
|
+
catch (err) {
|
|
831
|
+
logger.warn({ err }, "fsInfo probe failed post-migration");
|
|
832
|
+
}
|
|
833
|
+
await emitProgress("resume", "running", targetDir, 95, "Resuming observers and schedulers…");
|
|
834
|
+
const { resumeFailures } = await cleanupAfterMigration();
|
|
835
|
+
const resumeStatus = resumeFailures.length > 0 ? "manual_required" : "resumed";
|
|
836
|
+
// Plan §6.6, §6.14, §10 — emit an agent_actions audit row so
|
|
837
|
+
// `/api/metrics` and the dashboard cost timeline surface the
|
|
838
|
+
// context-directory migration. `action_type` is the canonical
|
|
839
|
+
// agent_actions field; `detail` carries the structured payload
|
|
840
|
+
// the plan enumerates.
|
|
841
|
+
try {
|
|
842
|
+
db.prepare(`INSERT INTO agent_actions
|
|
843
|
+
(action_type, result, detail, started_at, completed_at, duration_ms)
|
|
844
|
+
VALUES ('context_dir_migration', 'success', ?, ?, ?, ?)`).run(JSON.stringify({
|
|
845
|
+
from: sourceDir,
|
|
846
|
+
to: targetDir,
|
|
847
|
+
filesMoved: backup.manifest.files.length,
|
|
848
|
+
bytes: backup.manifest.totalBytes,
|
|
849
|
+
conflictPolicy,
|
|
850
|
+
backupPath: backup.backupDir,
|
|
851
|
+
dbRewrite: dbRewriteStats,
|
|
852
|
+
fsInfo,
|
|
853
|
+
resumeStatus,
|
|
854
|
+
resumeFailures,
|
|
855
|
+
}), new Date(startedAt).toISOString(), new Date().toISOString(), durationMs);
|
|
856
|
+
}
|
|
857
|
+
catch (err) {
|
|
858
|
+
logger.warn({ err }, "failed to write context_dir_migration audit row");
|
|
859
|
+
}
|
|
860
|
+
logger.info({
|
|
861
|
+
from: sourceDir,
|
|
862
|
+
to: targetDir,
|
|
863
|
+
files: backup.manifest.files.length,
|
|
864
|
+
bytes: backup.manifest.totalBytes,
|
|
865
|
+
durationMs,
|
|
866
|
+
conflictPolicy,
|
|
867
|
+
dbRewrite: dbRewriteStats,
|
|
868
|
+
fsInfo,
|
|
869
|
+
resumeStatus,
|
|
870
|
+
resumeFailures,
|
|
871
|
+
}, "context_migration_complete");
|
|
872
|
+
await emitProgress("completed", "completed", targetDir, 100, "Migration complete.");
|
|
873
|
+
return c.json({
|
|
874
|
+
status: "migrated",
|
|
875
|
+
from: sourceDir,
|
|
876
|
+
to: targetDir,
|
|
877
|
+
filesMoved: backup.manifest.files.length,
|
|
878
|
+
bytes: backup.manifest.totalBytes,
|
|
879
|
+
durationMs,
|
|
880
|
+
backupPath: backup.backupDir,
|
|
881
|
+
backupExpiresAt: expiresAt,
|
|
882
|
+
fsInfo,
|
|
883
|
+
resumeStatus,
|
|
884
|
+
manualActionRequired: resumeFailures.length > 0,
|
|
885
|
+
...(resumeFailures.length > 0
|
|
886
|
+
? {
|
|
887
|
+
message: "Migration committed, but observers/schedulers failed to resume. Restart the daemon.",
|
|
888
|
+
resumeFailures,
|
|
889
|
+
}
|
|
890
|
+
: {}),
|
|
891
|
+
});
|
|
892
|
+
}
|
|
893
|
+
catch (err) {
|
|
894
|
+
logger.error({ err }, "Unhandled migration error");
|
|
895
|
+
const { rollbackStatus } = await rollback("internal_error");
|
|
896
|
+
return await respondAfterCleanup({
|
|
897
|
+
error: "internal_error",
|
|
898
|
+
message: "Unexpected error during migration.",
|
|
899
|
+
rollbackStatus,
|
|
900
|
+
backupPath: backup?.backupDir ?? null,
|
|
901
|
+
}, 500);
|
|
902
|
+
}
|
|
903
|
+
finally {
|
|
904
|
+
if (!cleanupComplete) {
|
|
905
|
+
await cleanupAfterMigration();
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
});
|
|
909
|
+
return app;
|
|
910
|
+
}
|
|
911
|
+
/**
|
|
912
|
+
* Daily retention sweep — delete backup directories whose `expires_at`
|
|
913
|
+
* is in the past AND whose status is 'completed' or 'rolled_back'.
|
|
914
|
+
* 'pending' rows are left alone: they represent an in-flight or
|
|
915
|
+
* crashed migration whose resolution the operator should inspect.
|
|
916
|
+
* Called by the scheduler; see `index.ts` wiring.
|
|
917
|
+
*/
|
|
918
|
+
export function sweepExpiredMigrationBackups(db) {
|
|
919
|
+
const now = new Date().toISOString();
|
|
920
|
+
const rows = db
|
|
921
|
+
.prepare("SELECT id, backup_path FROM migration_backups WHERE status IN ('completed', 'rolled_back') AND expires_at < ?")
|
|
922
|
+
.all(now);
|
|
923
|
+
let swept = 0;
|
|
924
|
+
let errors = 0;
|
|
925
|
+
const updateStatus = db.prepare("UPDATE migration_backups SET status = 'expired' WHERE id = ?");
|
|
926
|
+
for (const row of rows) {
|
|
927
|
+
try {
|
|
928
|
+
if (existsSync(row.backup_path)) {
|
|
929
|
+
rmSync(row.backup_path, { recursive: true, force: true });
|
|
930
|
+
}
|
|
931
|
+
updateStatus.run(row.id);
|
|
932
|
+
swept += 1;
|
|
933
|
+
}
|
|
934
|
+
catch (err) {
|
|
935
|
+
logger.error({ err, backupPath: row.backup_path }, "sweep: backup removal failed");
|
|
936
|
+
errors += 1;
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
if (swept > 0 || errors > 0) {
|
|
940
|
+
logger.info({ swept, errors }, "sweepExpiredMigrationBackups complete");
|
|
941
|
+
}
|
|
942
|
+
return { swept, errors };
|
|
943
|
+
}
|
|
944
|
+
//# sourceMappingURL=setup-migrate.js.map
|