@aitne/daemon 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/composite-dashboard-stream.d.ts +8 -11
- package/dist/adapters/composite-dashboard-stream.js +8 -11
- package/dist/adapters/dashboard-adapter.d.ts +18 -6
- package/dist/adapters/dashboard-adapter.js +101 -55
- package/dist/adapters/discord.d.ts +10 -3
- package/dist/adapters/discord.js +102 -26
- package/dist/adapters/docs-qa-adapter.d.ts +15 -16
- package/dist/adapters/docs-qa-adapter.js +14 -15
- package/dist/adapters/message-hub.d.ts +2 -3
- package/dist/adapters/message-hub.js +9 -3
- package/dist/adapters/notification-manager.d.ts +100 -3
- package/dist/adapters/notification-manager.js +244 -23
- package/dist/adapters/outbound-text.d.ts +17 -4
- package/dist/adapters/outbound-text.js +119 -5
- package/dist/adapters/primary-platform-resolver.d.ts +68 -0
- package/dist/adapters/primary-platform-resolver.js +54 -0
- package/dist/adapters/slack-adapter.d.ts +32 -5
- package/dist/adapters/slack-adapter.js +146 -58
- package/dist/adapters/telegram-adapter.d.ts +11 -8
- package/dist/adapters/telegram-adapter.js +63 -42
- package/dist/adapters/types.d.ts +3 -4
- package/dist/adapters/types.js +0 -1
- package/dist/adapters/whatsapp-adapter.d.ts +104 -18
- package/dist/adapters/whatsapp-adapter.js +305 -69
- package/dist/api/chat-binding-query.d.ts +0 -1
- package/dist/api/chat-binding-query.js +0 -1
- package/dist/api/chat-session-resume.d.ts +0 -1
- package/dist/api/chat-session-resume.js +0 -1
- package/dist/api/directory-picker.d.ts +0 -1
- package/dist/api/directory-picker.js +14 -1
- package/dist/api/env-writer.d.ts +0 -1
- package/dist/api/env-writer.js +108 -5
- package/dist/api/helpers/agent-errors-envelope.d.ts +116 -0
- package/dist/api/helpers/agent-errors-envelope.js +165 -0
- package/dist/api/helpers/agent-errors-registry.d.ts +2290 -0
- package/dist/api/helpers/agent-errors-registry.js +2197 -0
- package/dist/api/helpers/agent-errors-types.d.ts +193 -0
- package/dist/api/helpers/agent-errors-types.js +15 -0
- package/dist/api/helpers/agent-errors-zod.d.ts +33 -0
- package/dist/api/helpers/agent-errors-zod.js +138 -0
- package/dist/api/helpers/agent-errors.d.ts +4 -0
- package/dist/api/helpers/agent-errors.js +17 -0
- package/dist/api/integration-route-gate.d.ts +0 -1
- package/dist/api/integration-route-gate.js +10 -4
- package/dist/api/json-body.d.ts +3 -4
- package/dist/api/json-body.js +3 -4
- package/dist/api/routes/activity-sources.d.ts +1 -2
- package/dist/api/routes/activity-sources.js +0 -1
- package/dist/api/routes/agent-schedule-plan-match.d.ts +4 -0
- package/dist/api/routes/agent-schedule-plan-match.js +100 -0
- package/dist/api/routes/agent-schedule.d.ts +3 -0
- package/dist/api/routes/agent-schedule.js +790 -0
- package/dist/api/routes/agent.d.ts +0 -1
- package/dist/api/routes/agent.js +233 -367
- package/dist/api/routes/agents/index.d.ts +3 -0
- package/dist/api/routes/agents/index.js +404 -0
- package/dist/api/routes/agents/views.d.ts +185 -0
- package/dist/api/routes/agents/views.js +514 -0
- package/dist/api/routes/apple-calendar.d.ts +1 -2
- package/dist/api/routes/apple-calendar.js +110 -29
- package/dist/api/routes/attachments.d.ts +0 -1
- package/dist/api/routes/attachments.js +113 -22
- package/dist/api/routes/backends.d.ts +0 -1
- package/dist/api/routes/backends.js +144 -40
- package/dist/api/routes/books.d.ts +0 -1
- package/dist/api/routes/books.js +65 -26
- package/dist/api/routes/browser-automation-purchase.d.ts +31 -0
- package/dist/api/routes/browser-automation-purchase.js +251 -0
- package/dist/api/routes/browser-automation-sites.d.ts +22 -0
- package/dist/api/routes/browser-automation-sites.js +238 -0
- package/dist/api/routes/browser-history-managed.d.ts +23 -0
- package/dist/api/routes/browser-history-managed.js +202 -0
- package/dist/api/routes/browser-history.d.ts +3 -0
- package/dist/api/routes/browser-history.js +433 -0
- package/dist/api/routes/browser-task.d.ts +43 -0
- package/dist/api/routes/browser-task.js +617 -0
- package/dist/api/routes/calendar.d.ts +3 -3
- package/dist/api/routes/calendar.js +330 -56
- package/dist/api/routes/commands.d.ts +0 -1
- package/dist/api/routes/commands.js +27 -2
- package/dist/api/routes/context/frontmatter-merge.d.ts +28 -0
- package/dist/api/routes/context/frontmatter-merge.js +56 -0
- package/dist/api/routes/context/index.d.ts +40 -0
- package/dist/api/routes/context/index.js +174 -0
- package/dist/api/routes/context/locks.d.ts +3 -0
- package/dist/api/routes/context/locks.js +136 -0
- package/dist/api/routes/context/path-resolve.d.ts +26 -0
- package/dist/api/routes/context/path-resolve.js +125 -0
- package/dist/api/routes/context/permissions.d.ts +58 -0
- package/dist/api/routes/context/permissions.js +234 -0
- package/dist/api/routes/context/read.d.ts +3 -0
- package/dist/api/routes/context/read.js +306 -0
- package/dist/api/routes/context/repair.d.ts +3 -0
- package/dist/api/routes/context/repair.js +114 -0
- package/dist/api/routes/context/snapshots.d.ts +3 -0
- package/dist/api/routes/context/snapshots.js +208 -0
- package/dist/api/routes/context/write-step.d.ts +132 -0
- package/dist/api/routes/context/write-step.js +151 -0
- package/dist/api/routes/context/write.d.ts +3 -0
- package/dist/api/routes/context/write.js +781 -0
- package/dist/api/routes/dashboard/config.d.ts +3 -0
- package/dist/api/routes/dashboard/config.js +507 -0
- package/dist/api/routes/dashboard/conversations.d.ts +3 -0
- package/dist/api/routes/dashboard/conversations.js +308 -0
- package/dist/api/routes/dashboard/cost-approvals.d.ts +28 -0
- package/dist/api/routes/dashboard/cost-approvals.js +258 -0
- package/dist/api/routes/dashboard/index.d.ts +26 -0
- package/dist/api/routes/dashboard/index.js +46 -0
- package/dist/api/routes/dashboard/messaging.d.ts +3 -0
- package/dist/api/routes/dashboard/messaging.js +349 -0
- package/dist/api/routes/dashboard/notifications.d.ts +3 -0
- package/dist/api/routes/dashboard/notifications.js +108 -0
- package/dist/api/routes/dashboard/oauth-google.d.ts +3 -0
- package/dist/api/routes/dashboard/oauth-google.js +288 -0
- package/dist/api/routes/dashboard/schedule-readonly.d.ts +3 -0
- package/dist/api/routes/dashboard/schedule-readonly.js +54 -0
- package/dist/api/routes/dashboard/secrets.d.ts +23 -0
- package/dist/api/routes/dashboard/secrets.js +306 -0
- package/dist/api/routes/dashboard/snapshots.d.ts +3 -0
- package/dist/api/routes/dashboard/snapshots.js +32 -0
- package/dist/api/routes/delegated-sync.d.ts +0 -1
- package/dist/api/routes/delegated-sync.js +0 -1
- package/dist/api/routes/delegated.d.ts +5 -5
- package/dist/api/routes/delegated.js +6 -6
- package/dist/api/routes/docs.d.ts +0 -1
- package/dist/api/routes/docs.js +72 -10
- package/dist/api/routes/entities.d.ts +0 -1
- package/dist/api/routes/entities.js +114 -45
- package/dist/api/routes/fs.d.ts +0 -1
- package/dist/api/routes/fs.js +27 -13
- package/dist/api/routes/fs.logic.d.ts +0 -1
- package/dist/api/routes/fs.logic.js +6 -2
- package/dist/api/routes/git-accounts.d.ts +0 -1
- package/dist/api/routes/git-accounts.js +0 -1
- package/dist/api/routes/git-templates.d.ts +0 -1
- package/dist/api/routes/git-templates.js +113 -28
- package/dist/api/routes/git.d.ts +0 -1
- package/dist/api/routes/git.js +65 -16
- package/dist/api/routes/github.d.ts +0 -1
- package/dist/api/routes/github.js +130 -24
- package/dist/api/routes/health.d.ts +0 -1
- package/dist/api/routes/health.js +4 -3
- package/dist/api/routes/integrations/crud-patch.d.ts +16 -0
- package/dist/api/routes/integrations/crud-patch.js +638 -0
- package/dist/api/routes/integrations/crud.d.ts +15 -0
- package/dist/api/routes/integrations/crud.js +157 -0
- package/dist/api/routes/integrations/exec.d.ts +22 -0
- package/dist/api/routes/integrations/exec.js +349 -0
- package/dist/api/routes/integrations/index.d.ts +61 -0
- package/dist/api/routes/integrations/index.js +69 -0
- package/dist/api/routes/integrations/probe.d.ts +20 -0
- package/dist/api/routes/integrations/probe.js +246 -0
- package/dist/api/routes/integrations-reconcile.d.ts +0 -1
- package/dist/api/routes/integrations-reconcile.js +0 -1
- package/dist/api/routes/knowledge.d.ts +0 -1
- package/dist/api/routes/knowledge.js +14 -4
- package/dist/api/routes/mail/accounts.d.ts +3 -0
- package/dist/api/routes/mail/accounts.js +288 -0
- package/dist/api/routes/mail/app-password.d.ts +3 -0
- package/dist/api/routes/mail/app-password.js +191 -0
- package/dist/api/routes/mail/body-helpers.d.ts +55 -0
- package/dist/api/routes/mail/body-helpers.js +90 -0
- package/dist/api/routes/mail/dependencies.d.ts +35 -0
- package/dist/api/routes/mail/dependencies.js +1 -0
- package/dist/api/routes/mail/drafts.d.ts +4 -0
- package/dist/api/routes/mail/drafts.js +138 -0
- package/dist/api/routes/mail/gating.d.ts +44 -0
- package/dist/api/routes/mail/gating.js +98 -0
- package/dist/api/routes/mail/index.d.ts +17 -0
- package/dist/api/routes/mail/index.js +39 -0
- package/dist/api/routes/mail/messages.d.ts +14 -0
- package/dist/api/routes/mail/messages.js +238 -0
- package/dist/api/routes/mail/outlook-config.d.ts +3 -0
- package/dist/api/routes/mail/outlook-config.js +72 -0
- package/dist/api/routes/mail/provider-resolver.d.ts +63 -0
- package/dist/api/routes/mail/provider-resolver.js +285 -0
- package/dist/api/routes/mail/providers.d.ts +3 -0
- package/dist/api/routes/mail/providers.js +72 -0
- package/dist/api/routes/mail/search-health.d.ts +3 -0
- package/dist/api/routes/mail/search-health.js +130 -0
- package/dist/api/routes/mail/tags-folders.d.ts +4 -0
- package/dist/api/routes/mail/tags-folders.js +34 -0
- package/dist/api/routes/mail/validators.d.ts +22 -0
- package/dist/api/routes/mail/validators.js +130 -0
- package/dist/api/routes/managed-tasks.d.ts +0 -1
- package/dist/api/routes/managed-tasks.js +154 -63
- package/dist/api/routes/mcp.d.ts +0 -1
- package/dist/api/routes/mcp.js +115 -48
- package/dist/api/routes/metrics.d.ts +1 -2
- package/dist/api/routes/metrics.js +2 -3
- package/dist/api/routes/notion.d.ts +0 -1
- package/dist/api/routes/notion.js +234 -55
- package/dist/api/routes/observations.d.ts +0 -1
- package/dist/api/routes/observations.js +53 -184
- package/dist/api/routes/obsidian.d.ts +0 -1
- package/dist/api/routes/obsidian.js +193 -33
- package/dist/api/routes/profile-questions.d.ts +0 -1
- package/dist/api/routes/profile-questions.js +26 -5
- package/dist/api/routes/receipts.d.ts +0 -1
- package/dist/api/routes/receipts.js +64 -25
- package/dist/api/routes/recurring-schedules.d.ts +0 -1
- package/dist/api/routes/recurring-schedules.js +288 -15
- package/dist/api/routes/repositories.d.ts +0 -1
- package/dist/api/routes/repositories.js +278 -105
- package/dist/api/routes/schedule-model-resolver.d.ts +152 -0
- package/dist/api/routes/schedule-model-resolver.js +285 -0
- package/dist/api/routes/schedule-options.d.ts +24 -0
- package/dist/api/routes/schedule-options.js +76 -0
- package/dist/api/routes/schedule-validation.d.ts +145 -0
- package/dist/api/routes/schedule-validation.js +152 -0
- package/dist/api/routes/setup-migrate.d.ts +0 -1
- package/dist/api/routes/setup-migrate.js +6 -4
- package/dist/api/routes/setup.d.ts +0 -1
- package/dist/api/routes/setup.js +142 -27
- package/dist/api/routes/skill-curation.d.ts +0 -1
- package/dist/api/routes/skill-curation.js +0 -1
- package/dist/api/routes/skills.d.ts +2 -1
- package/dist/api/routes/skills.js +92 -33
- package/dist/api/routes/sot-bindings.d.ts +1 -2
- package/dist/api/routes/sot-bindings.js +46 -12
- package/dist/api/routes/sse.d.ts +0 -1
- package/dist/api/routes/sse.js +6 -2
- package/dist/api/routes/system.d.ts +0 -1
- package/dist/api/routes/system.js +15 -3
- package/dist/api/routes/task-flows.d.ts +0 -1
- package/dist/api/routes/task-flows.js +0 -1
- package/dist/api/routes/travel-bookings.d.ts +0 -1
- package/dist/api/routes/travel-bookings.js +26 -10
- package/dist/api/routes/triggers.d.ts +0 -1
- package/dist/api/routes/triggers.js +0 -1
- package/dist/api/routes/voice.d.ts +0 -1
- package/dist/api/routes/voice.js +0 -1
- package/dist/api/routes/wiki.d.ts +0 -1
- package/dist/api/routes/wiki.js +84 -17
- package/dist/api/server.d.ts +55 -6
- package/dist/api/server.js +76 -22
- package/dist/bootstrap/adapters.d.ts +0 -1
- package/dist/bootstrap/adapters.js +7 -5
- package/dist/bootstrap/api.d.ts +219 -0
- package/dist/bootstrap/api.js +502 -0
- package/dist/bootstrap/catchup.d.ts +0 -1
- package/dist/bootstrap/catchup.js +1 -2
- package/dist/bootstrap/db.d.ts +213 -0
- package/dist/bootstrap/db.js +617 -0
- package/dist/bootstrap/event-pipeline.d.ts +329 -0
- package/dist/bootstrap/event-pipeline.js +1203 -0
- package/dist/bootstrap/managed-chromium.d.ts +26 -0
- package/dist/bootstrap/managed-chromium.js +66 -0
- package/dist/bootstrap/observers.d.ts +147 -0
- package/dist/bootstrap/observers.js +586 -0
- package/dist/bootstrap/schedule-helpers.d.ts +122 -1
- package/dist/bootstrap/schedule-helpers.js +206 -6
- package/dist/bootstrap/services.d.ts +0 -1
- package/dist/bootstrap/services.js +1 -11
- package/dist/config.d.ts +1 -2
- package/dist/config.js +32 -15
- package/dist/core/abort-utils.d.ts +13 -0
- package/dist/core/abort-utils.js +35 -0
- package/dist/core/agent-core.d.ts +36 -4
- package/dist/core/agent-core.js +3 -2
- package/dist/core/agent-execution-recorder.d.ts +78 -0
- package/dist/core/agent-execution-recorder.js +60 -0
- package/dist/core/agents/agent-execution-tracker.d.ts +91 -0
- package/dist/core/agents/agent-execution-tracker.js +226 -0
- package/dist/core/agents/agent-frontmatter.d.ts +57 -0
- package/dist/core/agents/agent-frontmatter.js +74 -0
- package/dist/core/agents/agent-id-resolver.d.ts +47 -0
- package/dist/core/agents/agent-id-resolver.js +61 -0
- package/dist/core/agents/builtin-registry.d.ts +156 -0
- package/dist/core/agents/builtin-registry.js +257 -0
- package/dist/core/agents/cron-substitute.d.ts +60 -0
- package/dist/core/agents/cron-substitute.js +100 -0
- package/dist/core/agents/definition-criteria.d.ts +14 -0
- package/dist/core/agents/definition-criteria.js +25 -0
- package/dist/core/agents/effective-definition.d.ts +47 -0
- package/dist/core/agents/effective-definition.js +101 -0
- package/dist/core/agents/firing-blocked.d.ts +28 -0
- package/dist/core/agents/firing-blocked.js +27 -0
- package/dist/core/agents/loader-boot.d.ts +26 -0
- package/dist/core/agents/loader-boot.js +98 -0
- package/dist/core/agents/loader-watcher.d.ts +23 -0
- package/dist/core/agents/loader-watcher.js +84 -0
- package/dist/core/agents/loader.d.ts +188 -0
- package/dist/core/agents/loader.js +754 -0
- package/dist/core/agents/override-merge.d.ts +57 -0
- package/dist/core/agents/override-merge.js +131 -0
- package/dist/core/agents/recurrence-convert.d.ts +92 -0
- package/dist/core/agents/recurrence-convert.js +207 -0
- package/dist/core/agents/recurring-schedule-adapter.d.ts +24 -0
- package/dist/core/agents/recurring-schedule-adapter.js +157 -0
- package/dist/core/agents/success-criteria.d.ts +60 -0
- package/dist/core/agents/success-criteria.js +139 -0
- package/dist/core/agents/validate-agent-md.d.ts +17 -0
- package/dist/core/agents/validate-agent-md.js +64 -0
- package/dist/core/alerts.d.ts +0 -1
- package/dist/core/alerts.js +0 -1
- package/dist/core/atomic-write.d.ts +0 -1
- package/dist/core/atomic-write.js +17 -4
- package/dist/core/backends/api-key-probe.d.ts +0 -1
- package/dist/core/backends/api-key-probe.js +0 -1
- package/dist/core/backends/auth-health-monitor.d.ts +0 -1
- package/dist/core/backends/auth-health-monitor.js +31 -5
- package/dist/core/backends/auth-recovery.d.ts +0 -1
- package/dist/core/backends/auth-recovery.js +17 -4
- package/dist/core/backends/auth-telemetry.d.ts +0 -1
- package/dist/core/backends/auth-telemetry.js +0 -1
- package/dist/core/backends/backend-router.d.ts +44 -3
- package/dist/core/backends/backend-router.js +230 -3
- package/dist/core/backends/claude-auth.d.ts +0 -1
- package/dist/core/backends/claude-auth.js +0 -1
- package/dist/core/backends/claude-code-core.d.ts +53 -2
- package/dist/core/backends/claude-code-core.js +202 -29
- package/dist/core/backends/claude-credentials-store.d.ts +0 -1
- package/dist/core/backends/claude-credentials-store.js +0 -1
- package/dist/core/backends/claude-delegated.d.ts +0 -1
- package/dist/core/backends/claude-delegated.js +14 -15
- package/dist/core/backends/claude-errors.d.ts +0 -1
- package/dist/core/backends/claude-errors.js +0 -1
- package/dist/core/backends/claude-probe.d.ts +0 -1
- package/dist/core/backends/claude-probe.js +0 -1
- package/dist/core/backends/claude-tool-collection.d.ts +0 -1
- package/dist/core/backends/claude-tool-collection.js +177 -32
- package/dist/core/backends/cli-quota-guards.d.ts +100 -0
- package/dist/core/backends/cli-quota-guards.js +95 -0
- package/dist/core/backends/cli-utils.d.ts +26 -2
- package/dist/core/backends/cli-utils.js +133 -15
- package/dist/core/backends/codex-core.d.ts +13 -2
- package/dist/core/backends/codex-core.js +470 -63
- package/dist/core/backends/gemini-cli-core.d.ts +5 -2
- package/dist/core/backends/gemini-cli-core.js +348 -68
- package/dist/core/backends/idle-watchdog.d.ts +0 -1
- package/dist/core/backends/idle-watchdog.js +0 -1
- package/dist/core/backends/install-methods.d.ts +0 -1
- package/dist/core/backends/install-methods.js +22 -1
- package/dist/core/backends/model-registry.d.ts +10 -6
- package/dist/core/backends/model-registry.js +204 -34
- package/dist/core/backends/native-skill-discovery-probe.d.ts +77 -0
- package/dist/core/backends/native-skill-discovery-probe.js +172 -0
- package/dist/core/backends/opencode-basic-auth-fetch.d.ts +26 -0
- package/dist/core/backends/opencode-basic-auth-fetch.js +39 -0
- package/dist/core/backends/opencode-config-builder.d.ts +113 -0
- package/dist/core/backends/opencode-config-builder.js +184 -0
- package/dist/core/backends/opencode-core.d.ts +315 -0
- package/dist/core/backends/opencode-core.js +1508 -0
- package/dist/core/backends/opencode-event-mapper.d.ts +132 -0
- package/dist/core/backends/opencode-event-mapper.js +197 -0
- package/dist/core/backends/opencode-mcp.d.ts +81 -0
- package/dist/core/backends/opencode-mcp.js +157 -0
- package/dist/core/backends/opencode-server-manager.d.ts +113 -0
- package/dist/core/backends/opencode-server-manager.js +221 -0
- package/dist/core/backends/opencode-types.d.ts +45 -0
- package/dist/core/backends/opencode-types.js +13 -0
- package/dist/core/backends/plan-presets.d.ts +18 -6
- package/dist/core/backends/plan-presets.js +191 -24
- package/dist/core/backends/price-fetcher.d.ts +0 -1
- package/dist/core/backends/price-fetcher.js +0 -1
- package/dist/core/backends/process-config-cascade.d.ts +35 -1
- package/dist/core/backends/process-config-cascade.js +35 -2
- package/dist/core/backends/prompt-utils.d.ts +0 -1
- package/dist/core/backends/prompt-utils.js +0 -3
- package/dist/core/backends/proxy-model-registry.d.ts +0 -1
- package/dist/core/backends/proxy-model-registry.js +0 -1
- package/dist/core/backends/quota-reset-hints.d.ts +43 -0
- package/dist/core/backends/quota-reset-hints.js +116 -0
- package/dist/core/backends/silent-api-error-detector.d.ts +0 -1
- package/dist/core/backends/silent-api-error-detector.js +0 -1
- package/dist/core/bang-commands/commands-checks.d.ts +16 -0
- package/dist/core/bang-commands/commands-checks.js +58 -0
- package/dist/core/bang-commands/commands-close.d.ts +23 -0
- package/dist/core/bang-commands/commands-close.js +23 -0
- package/dist/core/bang-commands/commands-cost.d.ts +0 -1
- package/dist/core/bang-commands/commands-cost.js +13 -1
- package/dist/core/bang-commands/commands-help.d.ts +0 -1
- package/dist/core/bang-commands/commands-help.js +44 -6
- package/dist/core/bang-commands/commands-report.d.ts +0 -1
- package/dist/core/bang-commands/commands-report.js +1 -1
- package/dist/core/bang-commands/commands-research.d.ts +36 -0
- package/dist/core/bang-commands/commands-research.js +284 -0
- package/dist/core/bang-commands/commands-stop-start.d.ts +0 -1
- package/dist/core/bang-commands/commands-stop-start.js +2 -1
- package/dist/core/bang-commands/commands-wiki.d.ts +0 -1
- package/dist/core/bang-commands/commands-wiki.js +53 -14
- package/dist/core/bang-commands/format-utils.d.ts +15 -3
- package/dist/core/bang-commands/format-utils.js +23 -4
- package/dist/core/bang-commands/index.d.ts +3 -1
- package/dist/core/bang-commands/index.js +14 -1
- package/dist/core/bang-commands/registry.d.ts +59 -1
- package/dist/core/bang-commands/registry.js +175 -23
- package/dist/core/bang-commands/user-commands.d.ts +0 -1
- package/dist/core/bang-commands/user-commands.js +0 -1
- package/dist/core/browser-history/pre-morning-digest-job.d.ts +79 -0
- package/dist/core/browser-history/pre-morning-digest-job.js +89 -0
- package/dist/core/browser-history/research-cluster-fanout.d.ts +40 -0
- package/dist/core/browser-history/research-cluster-fanout.js +47 -0
- package/dist/core/browser-history/research-events.d.ts +37 -0
- package/dist/core/browser-history/research-events.js +70 -0
- package/dist/core/channel-timeline.d.ts +18 -2
- package/dist/core/channel-timeline.js +44 -1
- package/dist/core/character-block.d.ts +0 -1
- package/dist/core/character-block.js +0 -1
- package/dist/core/context/activity-sources.d.ts +3 -4
- package/dist/core/context/activity-sources.js +0 -1
- package/dist/core/context/activity-view-reconciler.d.ts +1 -2
- package/dist/core/context/activity-view-reconciler.js +10 -10
- package/dist/core/context/activity-view-runner.d.ts +0 -1
- package/dist/core/context/activity-view-runner.js +11 -3
- package/dist/core/context/default-schedules-reconciler.d.ts +1 -2
- package/dist/core/context/default-schedules-reconciler.js +1 -2
- package/dist/core/context/default-schedules-runner.d.ts +0 -1
- package/dist/core/context/default-schedules-runner.js +44 -5
- package/dist/core/context/domain-index-reconciler.d.ts +3 -1
- package/dist/core/context/domain-index-reconciler.js +11 -5
- package/dist/core/context/domain-index-runner.d.ts +0 -1
- package/dist/core/context/domain-index-runner.js +9 -2
- package/dist/core/context/entity-mirror.d.ts +9 -7
- package/dist/core/context/entity-mirror.js +21 -9
- package/dist/core/context/entity-source-rename.d.ts +0 -1
- package/dist/core/context/entity-source-rename.js +9 -2
- package/dist/core/context/index-reconciler.d.ts +26 -5
- package/dist/core/context/index-reconciler.js +110 -56
- package/dist/core/context/policy-index-reconciler.d.ts +6 -7
- package/dist/core/context/policy-index-reconciler.js +6 -7
- package/dist/core/context/policy-index-runner.d.ts +2 -3
- package/dist/core/context/policy-index-runner.js +10 -3
- package/dist/core/context/reconciler-runner.d.ts +0 -1
- package/dist/core/context/reconciler-runner.js +46 -6
- package/dist/core/context/reconciler-section.d.ts +30 -0
- package/dist/core/context/reconciler-section.js +39 -0
- package/dist/core/context-builder-calendar.d.ts +36 -0
- package/dist/core/context-builder-calendar.js +245 -0
- package/dist/core/context-builder-conversation.d.ts +95 -0
- package/dist/core/context-builder-conversation.js +444 -0
- package/dist/core/context-builder-format.d.ts +8 -0
- package/dist/core/context-builder-format.js +22 -0
- package/dist/core/context-builder-projects.d.ts +11 -0
- package/dist/core/context-builder-projects.js +102 -0
- package/dist/core/context-builder-yesterday.d.ts +30 -0
- package/dist/core/context-builder-yesterday.js +198 -0
- package/dist/core/context-builder.d.ts +73 -124
- package/dist/core/context-builder.js +272 -903
- package/dist/core/context-file-serializer.d.ts +92 -0
- package/dist/core/context-file-serializer.js +126 -0
- package/dist/core/context-frontmatter-extract.d.ts +32 -0
- package/dist/core/context-frontmatter-extract.js +98 -0
- package/dist/core/context-frontmatter.d.ts +14 -1
- package/dist/core/context-frontmatter.js +180 -109
- package/dist/core/context-health.d.ts +0 -1
- package/dist/core/context-health.js +25 -14
- package/dist/core/context-paths.d.ts +128 -85
- package/dist/core/context-paths.js +190 -108
- package/dist/core/context-staleness.d.ts +0 -1
- package/dist/core/context-staleness.js +2 -3
- package/dist/core/context-validation/frontmatter.d.ts +73 -0
- package/dist/core/context-validation/frontmatter.js +216 -0
- package/dist/core/context-validation/index.d.ts +19 -0
- package/dist/core/context-validation/index.js +19 -0
- package/dist/core/context-validation/prepare-write.d.ts +94 -0
- package/dist/core/context-validation/prepare-write.js +145 -0
- package/dist/core/context-validation/routine-rulebook.d.ts +59 -0
- package/dist/core/context-validation/routine-rulebook.js +155 -0
- package/dist/core/context-validation/section.d.ts +40 -0
- package/dist/core/context-validation/section.js +90 -0
- package/dist/core/context-validation/snapshot-debounce.d.ts +51 -0
- package/dist/core/context-validation/snapshot-debounce.js +109 -0
- package/dist/core/context-validation/today.d.ts +84 -0
- package/dist/core/context-validation/today.js +167 -0
- package/dist/core/context-vault-aliases.d.ts +107 -0
- package/dist/core/context-vault-aliases.js +253 -0
- package/dist/core/custom-routine-scheduler.d.ts +5 -6
- package/dist/core/custom-routine-scheduler.js +3 -4
- package/dist/core/daemon-api-cli.d.ts +6 -6
- package/dist/core/daemon-api-cli.js +132 -33
- package/dist/core/dashboard-session-cleanup.d.ts +0 -1
- package/dist/core/dashboard-session-cleanup.js +0 -1
- package/dist/core/dashboard-session-controls.d.ts +0 -1
- package/dist/core/dashboard-session-controls.js +0 -1
- package/dist/core/delegated-connector-health.d.ts +0 -1
- package/dist/core/delegated-connector-health.js +0 -1
- package/dist/core/dispatcher-date-utils.d.ts +0 -1
- package/dist/core/dispatcher-date-utils.js +0 -1
- package/dist/core/dispatcher-error-handling.d.ts +13 -1
- package/dist/core/dispatcher-error-handling.js +69 -1
- package/dist/core/dispatcher-hourly-check.d.ts +73 -2
- package/dist/core/dispatcher-hourly-check.js +258 -153
- package/dist/core/dispatcher-message-handler.d.ts +32 -2
- package/dist/core/dispatcher-message-handler.js +310 -53
- package/dist/core/dispatcher-morning-routine.d.ts +38 -31
- package/dist/core/dispatcher-morning-routine.js +238 -156
- package/dist/core/dispatcher-prompt.d.ts +4 -2
- package/dist/core/dispatcher-prompt.js +19 -4
- package/dist/core/dispatcher-repository-helpers.d.ts +0 -1
- package/dist/core/dispatcher-repository-helpers.js +5 -2
- package/dist/core/dispatcher-result-processor.d.ts +20 -1
- package/dist/core/dispatcher-result-processor.js +94 -5
- package/dist/core/dispatcher-scheduled-browser-task.d.ts +91 -0
- package/dist/core/dispatcher-scheduled-browser-task.js +228 -0
- package/dist/core/dispatcher-scheduled-tasks.d.ts +69 -2
- package/dist/core/dispatcher-scheduled-tasks.js +452 -29
- package/dist/core/dispatcher-types.d.ts +140 -13
- package/dist/core/dispatcher-types.js +0 -1
- package/dist/core/dispatcher.d.ts +194 -5
- package/dist/core/dispatcher.js +487 -11
- package/dist/core/dm-freshness-metrics.d.ts +6 -6
- package/dist/core/dm-freshness-metrics.js +7 -7
- package/dist/core/dm-token-router.d.ts +58 -0
- package/dist/core/dm-token-router.js +58 -0
- package/dist/core/docs/citation-validator.d.ts +0 -1
- package/dist/core/docs/citation-validator.js +0 -1
- package/dist/core/docs/extract-terms.d.ts +0 -1
- package/dist/core/docs/extract-terms.js +0 -1
- package/dist/core/docs/indexer.d.ts +0 -1
- package/dist/core/docs/indexer.js +0 -1
- package/dist/core/drift-effects.d.ts +0 -1
- package/dist/core/drift-effects.js +6 -3
- package/dist/core/evening-review-verify.d.ts +163 -0
- package/dist/core/evening-review-verify.js +636 -0
- package/dist/core/event-bus.d.ts +0 -1
- package/dist/core/event-bus.js +0 -1
- package/dist/core/fetch-window-prompt-loader.d.ts +46 -0
- package/dist/core/fetch-window-prompt-loader.js +71 -0
- package/dist/core/git-project-docs.d.ts +0 -1
- package/dist/core/git-project-docs.js +13 -6
- package/dist/core/health-monitor.d.ts +2 -2
- package/dist/core/health-monitor.js +6 -3
- package/dist/core/heartbeat.d.ts +0 -1
- package/dist/core/heartbeat.js +0 -1
- package/dist/core/injection-policy.d.ts +107 -0
- package/dist/core/injection-policy.js +117 -0
- package/dist/core/integration-health.d.ts +0 -1
- package/dist/core/integration-health.js +1 -2
- package/dist/core/integration-lifecycle.d.ts +0 -1
- package/dist/core/integration-lifecycle.js +0 -1
- package/dist/core/integration-main-backend.d.ts +0 -1
- package/dist/core/integration-main-backend.js +11 -4
- package/dist/core/integration-probe.d.ts +0 -1
- package/dist/core/integration-probe.js +0 -1
- package/dist/core/management-md-write-lock.d.ts +1 -2
- package/dist/core/management-md-write-lock.js +1 -2
- package/dist/core/management-md.d.ts +24 -10
- package/dist/core/management-md.js +65 -33
- package/dist/core/management-registry.d.ts +16 -25
- package/dist/core/management-registry.js +32 -54
- package/dist/core/management-telemetry.d.ts +1 -2
- package/dist/core/management-telemetry.js +1 -2
- package/dist/core/message-recorder.d.ts +3 -4
- package/dist/core/message-recorder.js +3 -4
- package/dist/core/metrics.d.ts +88 -2
- package/dist/core/metrics.js +78 -3
- package/dist/core/migration-backup.d.ts +0 -1
- package/dist/core/migration-backup.js +11 -1
- package/dist/core/morning/agent-journal-appender.d.ts +264 -0
- package/dist/core/morning/agent-journal-appender.js +632 -0
- package/dist/core/morning/daily-journal-composer.d.ts +183 -0
- package/dist/core/morning/daily-journal-composer.js +421 -0
- package/dist/core/morning/handoff-parser.d.ts +43 -0
- package/dist/core/morning/handoff-parser.js +115 -0
- package/dist/core/morning/journal-skeleton-builder.d.ts +155 -0
- package/dist/core/morning/journal-skeleton-builder.js +301 -0
- package/dist/core/morning/orchestrator.d.ts +424 -0
- package/dist/core/morning/orchestrator.js +1230 -0
- package/dist/core/morning/parent-audit-emitter.d.ts +80 -0
- package/dist/core/morning/parent-audit-emitter.js +118 -0
- package/dist/core/morning/partial-extract-streak.d.ts +76 -0
- package/dist/core/morning/partial-extract-streak.js +165 -0
- package/dist/core/morning/roadmap-skeleton-builder.d.ts +158 -0
- package/dist/core/morning/roadmap-skeleton-builder.js +337 -0
- package/dist/core/output-language-policy.d.ts +0 -1
- package/dist/core/output-language-policy.js +7 -8
- package/dist/core/overview-write-lock.d.ts +0 -1
- package/dist/core/overview-write-lock.js +0 -1
- package/dist/core/path-compat.d.ts +0 -1
- package/dist/core/path-compat.js +0 -1
- package/dist/core/path-rewrite.d.ts +1 -2
- package/dist/core/path-rewrite.js +0 -1
- package/dist/core/policy-files.d.ts +39 -13
- package/dist/core/policy-files.js +62 -12
- package/dist/core/pre-pass-freshness.d.ts +27 -0
- package/dist/core/pre-pass-freshness.js +9 -0
- package/dist/core/previous-week-digest.d.ts +129 -0
- package/dist/core/previous-week-digest.js +256 -0
- package/dist/core/profile-questions/seed.d.ts +2 -3
- package/dist/core/profile-questions/seed.js +4 -4
- package/dist/core/profile-questions/slot-filled.d.ts +0 -1
- package/dist/core/profile-questions/slot-filled.js +0 -1
- package/dist/core/prompts.d.ts +0 -1
- package/dist/core/prompts.js +6 -7
- package/dist/core/quiet-hours-sync.d.ts +0 -1
- package/dist/core/quiet-hours-sync.js +7 -1
- package/dist/core/quiet-hours.d.ts +35 -0
- package/dist/core/quiet-hours.js +93 -0
- package/dist/core/read-sensitive-token-manager.d.ts +0 -1
- package/dist/core/read-sensitive-token-manager.js +0 -1
- package/dist/core/recurrence.d.ts +13 -1
- package/dist/core/recurrence.js +108 -14
- package/dist/core/reinstall.d.ts +5 -1
- package/dist/core/reinstall.js +12 -2
- package/dist/core/release-assets.d.ts +39 -4
- package/dist/core/release-assets.js +83 -8
- package/dist/core/repository-management-docs.d.ts +0 -1
- package/dist/core/repository-management-docs.js +32 -11
- package/dist/core/retention.d.ts +49 -4
- package/dist/core/retention.js +218 -5
- package/dist/core/review-context.d.ts +10 -1
- package/dist/core/review-context.js +51 -6
- package/dist/core/roadmap-horizon.d.ts +0 -1
- package/dist/core/roadmap-horizon.js +0 -1
- package/dist/core/roadmap-ids.d.ts +4 -6
- package/dist/core/roadmap-ids.js +4 -6
- package/dist/core/roadmap-maintenance.d.ts +212 -0
- package/dist/core/roadmap-maintenance.js +732 -0
- package/dist/core/roadmap-refresh-triggers.d.ts +0 -1
- package/dist/core/roadmap-refresh-triggers.js +0 -1
- package/dist/core/roadmap-truncate.d.ts +0 -1
- package/dist/core/roadmap-truncate.js +0 -1
- package/dist/core/roadmap-validate.d.ts +5 -1
- package/dist/core/roadmap-validate.js +12 -75
- package/dist/core/roadmap-write-lock.d.ts +0 -1
- package/dist/core/roadmap-write-lock.js +0 -1
- package/dist/core/routine-acquisition-plan.d.ts +43 -8
- package/dist/core/routine-acquisition-plan.js +99 -9
- package/dist/core/routine-fetch-window-retry.d.ts +40 -3
- package/dist/core/routine-fetch-window-retry.js +90 -9
- package/dist/core/routine-fetch-window-runner.d.ts +55 -22
- package/dist/core/routine-fetch-window-runner.js +287 -41
- package/dist/core/routine-windows.d.ts +17 -19
- package/dist/core/routine-windows.js +80 -44
- package/dist/core/schedule-insert-helper.d.ts +0 -1
- package/dist/core/schedule-insert-helper.js +0 -1
- package/dist/core/schedule-maintenance.d.ts +0 -1
- package/dist/core/schedule-maintenance.js +0 -1
- package/dist/core/scheduler.d.ts +179 -37
- package/dist/core/scheduler.js +614 -91
- package/dist/core/semaphore.d.ts +0 -1
- package/dist/core/semaphore.js +0 -1
- package/dist/core/session-gate.d.ts +0 -1
- package/dist/core/session-gate.js +0 -1
- package/dist/core/session-manager.d.ts +25 -7
- package/dist/core/session-manager.js +32 -16
- package/dist/core/signal-detector.d.ts +2 -3
- package/dist/core/signal-detector.js +3 -4
- package/dist/core/skeleton.d.ts +1 -2
- package/dist/core/skeleton.js +31 -32
- package/dist/core/skill-curation/apply-proposal.d.ts +0 -1
- package/dist/core/skill-curation/apply-proposal.js +0 -1
- package/dist/core/skill-curation/auto-revert.d.ts +0 -1
- package/dist/core/skill-curation/auto-revert.js +4 -5
- package/dist/core/skill-curation/classify-diff.d.ts +0 -1
- package/dist/core/skill-curation/classify-diff.js +0 -0
- package/dist/core/skill-curation/declarations.d.ts +0 -1
- package/dist/core/skill-curation/declarations.js +0 -1
- package/dist/core/skill-curation/knowledge-map.d.ts +0 -1
- package/dist/core/skill-curation/knowledge-map.js +0 -1
- package/dist/core/skill-curation/orphan-overlay.d.ts +2 -3
- package/dist/core/skill-curation/orphan-overlay.js +5 -6
- package/dist/core/skill-curation/overlay-store.d.ts +6 -4
- package/dist/core/skill-curation/overlay-store.js +12 -7
- package/dist/core/skill-curation/render/convention-notes.d.ts +0 -1
- package/dist/core/skill-curation/render/convention-notes.js +0 -1
- package/dist/core/skill-curation/render/cross-references.d.ts +0 -1
- package/dist/core/skill-curation/render/cross-references.js +0 -1
- package/dist/core/skill-curation/render/frontmatter-schema.d.ts +0 -1
- package/dist/core/skill-curation/render/frontmatter-schema.js +0 -1
- package/dist/core/skill-curation/render/index.d.ts +0 -1
- package/dist/core/skill-curation/render/index.js +0 -1
- package/dist/core/skill-curation/render/knowledge-layout.d.ts +0 -1
- package/dist/core/skill-curation/render/knowledge-layout.js +0 -1
- package/dist/core/skill-curation/render/routing-table.d.ts +0 -1
- package/dist/core/skill-curation/render/routing-table.js +0 -1
- package/dist/core/skill-curation/render/search-recipes.d.ts +0 -1
- package/dist/core/skill-curation/render/search-recipes.js +0 -1
- package/dist/core/skill-curation/run-token.d.ts +0 -1
- package/dist/core/skill-curation/run-token.js +0 -1
- package/dist/core/skill-curation/signals.d.ts +0 -1
- package/dist/core/skill-curation/signals.js +0 -1
- package/dist/core/skill-curation/smoke-test.d.ts +0 -1
- package/dist/core/skill-curation/smoke-test.js +0 -1
- package/dist/core/skill-curation/splicer.d.ts +0 -1
- package/dist/core/skill-curation/splicer.js +0 -1
- package/dist/core/skill-curation/workdir.d.ts +0 -1
- package/dist/core/skill-curation/workdir.js +0 -1
- package/dist/core/skill-source-paths.d.ts +0 -1
- package/dist/core/skill-source-paths.js +0 -1
- package/dist/core/skills-compiler-cli-renderer.d.ts +79 -0
- package/dist/core/skills-compiler-cli-renderer.js +289 -0
- package/dist/core/skills-compiler-denied-tools.d.ts +57 -0
- package/dist/core/skills-compiler-denied-tools.js +204 -0
- package/dist/core/skills-compiler-skill-index.d.ts +117 -0
- package/dist/core/skills-compiler-skill-index.js +262 -0
- package/dist/core/skills-compiler-tree.d.ts +38 -0
- package/dist/core/skills-compiler-tree.js +157 -0
- package/dist/core/skills-compiler-types.d.ts +46 -0
- package/dist/core/skills-compiler-types.js +1 -0
- package/dist/core/skills-compiler-variants.d.ts +117 -0
- package/dist/core/skills-compiler-variants.js +337 -0
- package/dist/core/skills-compiler.d.ts +169 -217
- package/dist/core/skills-compiler.js +385 -940
- package/dist/core/skills-manifest.d.ts +133 -1
- package/dist/core/skills-manifest.js +507 -40
- package/dist/core/system-reset.d.ts +1 -2
- package/dist/core/system-reset.js +1 -2
- package/dist/core/template-store.d.ts +2 -3
- package/dist/core/template-store.js +7 -4
- package/dist/core/template-versions.d.ts +1 -2
- package/dist/core/template-versions.js +1 -2
- package/dist/core/today-agent-plan.d.ts +0 -1
- package/dist/core/today-agent-plan.js +0 -1
- package/dist/core/today-direct-writer.d.ts +11 -2
- package/dist/core/today-direct-writer.js +42 -27
- package/dist/core/today-write-lock.d.ts +0 -1
- package/dist/core/today-write-lock.js +0 -1
- package/dist/core/trigger-dispatch.d.ts +0 -1
- package/dist/core/trigger-dispatch.js +0 -1
- package/dist/core/trigger-evaluator.d.ts +0 -1
- package/dist/core/trigger-evaluator.js +0 -1
- package/dist/core/user-skills-root.d.ts +24 -0
- package/dist/core/user-skills-root.js +29 -0
- package/dist/core/wiki/approval-queue.d.ts +0 -1
- package/dist/core/wiki/approval-queue.js +7 -3
- package/dist/core/wiki/bridge.d.ts +0 -1
- package/dist/core/wiki/bridge.js +0 -1
- package/dist/core/wiki/compile-lock.d.ts +0 -1
- package/dist/core/wiki/compile-lock.js +0 -1
- package/dist/core/wiki/compile-preview.d.ts +0 -1
- package/dist/core/wiki/compile-preview.js +0 -1
- package/dist/core/wiki/cost-estimate.d.ts +0 -1
- package/dist/core/wiki/cost-estimate.js +23 -3
- package/dist/core/wiki/dispatcher.d.ts +1 -21
- package/dist/core/wiki/dispatcher.js +0 -26
- package/dist/core/wiki/git-precompile.d.ts +9 -1
- package/dist/core/wiki/git-precompile.js +7 -2
- package/dist/core/wiki/import-migrate.d.ts +0 -1
- package/dist/core/wiki/import-migrate.js +0 -1
- package/dist/core/wiki/import-probe.d.ts +0 -1
- package/dist/core/wiki/import-probe.js +7 -5
- package/dist/core/wiki/index-cache.d.ts +0 -1
- package/dist/core/wiki/index-cache.js +0 -1
- package/dist/core/wiki/multi-url-dispatch.d.ts +0 -1
- package/dist/core/wiki/multi-url-dispatch.js +19 -9
- package/dist/core/wiki/wiki-fts.d.ts +0 -1
- package/dist/core/wiki/wiki-fts.js +0 -1
- package/dist/core/wiki/workspaces.d.ts +17 -2
- package/dist/core/wiki/workspaces.js +28 -17
- package/dist/core/wiki/write-strategy.d.ts +0 -1
- package/dist/core/wiki/write-strategy.js +19 -3
- package/dist/core/workdir.d.ts +38 -2
- package/dist/core/workdir.js +159 -17
- package/dist/db/agent-executions-store.d.ts +149 -0
- package/dist/db/agent-executions-store.js +209 -0
- package/dist/db/agents-store.d.ts +179 -0
- package/dist/db/agents-store.js +264 -0
- package/dist/db/automation-triggers.d.ts +0 -1
- package/dist/db/automation-triggers.js +0 -1
- package/dist/db/browser-automation-b4-config-store.d.ts +68 -0
- package/dist/db/browser-automation-b4-config-store.js +111 -0
- package/dist/db/browser-automation-purchase-primary-channels-store.d.ts +48 -0
- package/dist/db/browser-automation-purchase-primary-channels-store.js +88 -0
- package/dist/db/browser-automation-purchase-replies-store.d.ts +48 -0
- package/dist/db/browser-automation-purchase-replies-store.js +71 -0
- package/dist/db/browser-automation-purchase-tokens-store.d.ts +276 -0
- package/dist/db/browser-automation-purchase-tokens-store.js +483 -0
- package/dist/db/browser-automation-store.d.ts +37 -0
- package/dist/db/browser-automation-store.js +41 -0
- package/dist/db/browser-history-store.d.ts +231 -0
- package/dist/db/browser-history-store.js +601 -0
- package/dist/db/browser-task-action-log-store.d.ts +41 -0
- package/dist/db/browser-task-action-log-store.js +74 -0
- package/dist/db/browser-task-clarifications-store.d.ts +67 -0
- package/dist/db/browser-task-clarifications-store.js +118 -0
- package/dist/db/browser-task-final-confirm-tokens-store.d.ts +108 -0
- package/dist/db/browser-task-final-confirm-tokens-store.js +251 -0
- package/dist/db/browser-task-store.d.ts +114 -0
- package/dist/db/browser-task-store.js +250 -0
- package/dist/db/client.d.ts +0 -1
- package/dist/db/client.js +0 -1
- package/dist/db/entities-store.d.ts +6 -7
- package/dist/db/entities-store.js +5 -6
- package/dist/db/hourly-check-signals.d.ts +0 -1
- package/dist/db/hourly-check-signals.js +121 -36
- package/dist/db/integration-probe-store.d.ts +0 -1
- package/dist/db/integration-probe-store.js +0 -1
- package/dist/db/integrations-store.d.ts +0 -1
- package/dist/db/integrations-store.js +0 -1
- package/dist/db/managed-chromium-sites-store.d.ts +110 -0
- package/dist/db/managed-chromium-sites-store.js +174 -0
- package/dist/db/managed-chromium-state.d.ts +58 -0
- package/dist/db/managed-chromium-state.js +104 -0
- package/dist/db/managed-tasks-store.d.ts +0 -1
- package/dist/db/managed-tasks-store.js +0 -1
- package/dist/db/management-parse-failures-store.d.ts +0 -1
- package/dist/db/management-parse-failures-store.js +0 -1
- package/dist/db/migrations/context-vault-restructure.d.ts +263 -0
- package/dist/db/migrations/context-vault-restructure.js +1384 -0
- package/dist/db/migrations.d.ts +111 -0
- package/dist/db/migrations.js +476 -0
- package/dist/db/observations.d.ts +1 -2
- package/dist/db/observations.js +13 -4
- package/dist/db/recurring-schedules.d.ts +44 -3
- package/dist/db/recurring-schedules.js +116 -21
- package/dist/db/repositories-store.d.ts +2 -2
- package/dist/db/repositories-store.js +41 -4
- package/dist/db/runtime-state.d.ts +32 -2
- package/dist/db/runtime-state.js +33 -2
- package/dist/db/schema.d.ts +0 -1
- package/dist/db/schema.js +923 -54
- package/dist/db/sot-bindings-store.d.ts +0 -1
- package/dist/db/sot-bindings-store.js +0 -1
- package/dist/db/voice-transcripts-store.d.ts +0 -1
- package/dist/db/voice-transcripts-store.js +0 -1
- package/dist/db/wiki-store.d.ts +0 -1
- package/dist/db/wiki-store.js +3 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +408 -1522
- package/dist/init.d.ts +0 -1
- package/dist/init.js +0 -2
- package/dist/log-buffer.d.ts +0 -1
- package/dist/log-buffer.js +0 -2
- package/dist/logging.d.ts +0 -1
- package/dist/logging.js +0 -2
- package/dist/management-rules.d.ts +0 -1
- package/dist/management-rules.js +0 -1
- package/dist/messaging/browser-task-mcp-notifier.d.ts +77 -0
- package/dist/messaging/browser-task-mcp-notifier.js +164 -0
- package/dist/messaging/browser-task-screenshot-attachment.d.ts +62 -0
- package/dist/messaging/browser-task-screenshot-attachment.js +115 -0
- package/dist/messaging/constants.d.ts +0 -1
- package/dist/messaging/constants.js +0 -1
- package/dist/messaging/final-confirm-system-message-sender.d.ts +53 -0
- package/dist/messaging/final-confirm-system-message-sender.js +165 -0
- package/dist/messaging/magic-phrase.d.ts +16 -1
- package/dist/messaging/magic-phrase.js +60 -3
- package/dist/messaging/owner-channels.d.ts +40 -1
- package/dist/messaging/owner-channels.js +59 -1
- package/dist/messaging/purchase-system-message-sender.d.ts +54 -0
- package/dist/messaging/purchase-system-message-sender.js +213 -0
- package/dist/messaging/setup-welcome-dm.d.ts +0 -1
- package/dist/messaging/setup-welcome-dm.js +0 -1
- package/dist/messaging/url-extract.d.ts +0 -1
- package/dist/messaging/url-extract.js +5 -1
- package/dist/observers/browser-history-poller.d.ts +113 -0
- package/dist/observers/browser-history-poller.js +404 -0
- package/dist/observers/calendar-poller.d.ts +2 -1
- package/dist/observers/calendar-poller.js +76 -55
- package/dist/observers/context-index-reconciler-observer.d.ts +0 -1
- package/dist/observers/context-index-reconciler-observer.js +0 -1
- package/dist/observers/delegated-probe-observer.d.ts +0 -1
- package/dist/observers/delegated-probe-observer.js +0 -1
- package/dist/observers/delegated-sync-worker.d.ts +70 -10
- package/dist/observers/delegated-sync-worker.js +138 -12
- package/dist/observers/entity-mirror-observer.d.ts +0 -1
- package/dist/observers/entity-mirror-observer.js +0 -1
- package/dist/observers/git-delegated-cron.d.ts +0 -1
- package/dist/observers/git-delegated-cron.js +0 -1
- package/dist/observers/git-event-classifier.d.ts +0 -1
- package/dist/observers/git-event-classifier.js +0 -1
- package/dist/observers/git-watcher.d.ts +22 -1
- package/dist/observers/git-watcher.js +38 -9
- package/dist/observers/github-poller-classifier.d.ts +0 -1
- package/dist/observers/github-poller-classifier.js +0 -1
- package/dist/observers/github-poller.d.ts +3 -1
- package/dist/observers/github-poller.js +28 -3
- package/dist/observers/imminent-event-scheduler.d.ts +2 -1
- package/dist/observers/imminent-event-scheduler.js +30 -2
- package/dist/observers/mail-poller.d.ts +0 -1
- package/dist/observers/mail-poller.js +45 -18
- package/dist/observers/mail-reconciliation.d.ts +1 -2
- package/dist/observers/mail-reconciliation.js +1 -2
- package/dist/observers/manager.d.ts +7 -8
- package/dist/observers/manager.js +7 -8
- package/dist/observers/notion-poller.d.ts +2 -1
- package/dist/observers/notion-poller.js +44 -7
- package/dist/observers/observation-summarizer/index.d.ts +0 -1
- package/dist/observers/observation-summarizer/index.js +0 -1
- package/dist/observers/observation-summarizer/pre-filter.d.ts +0 -1
- package/dist/observers/observation-summarizer/pre-filter.js +0 -1
- package/dist/observers/observation-summarizer/response-parser.d.ts +0 -1
- package/dist/observers/observation-summarizer/response-parser.js +7 -7
- package/dist/observers/observation-summarizer/summarizer-client.d.ts +0 -1
- package/dist/observers/observation-summarizer/summarizer-client.js +0 -1
- package/dist/observers/observation-summarizer/summarizer-prompts.d.ts +0 -1
- package/dist/observers/observation-summarizer/summarizer-prompts.js +0 -1
- package/dist/observers/observation-summarizer/worker.d.ts +2 -1
- package/dist/observers/observation-summarizer/worker.js +25 -1
- package/dist/observers/obsidian-watcher.d.ts +0 -1
- package/dist/observers/obsidian-watcher.js +0 -1
- package/dist/observers/poll-guard.d.ts +62 -0
- package/dist/observers/poll-guard.js +88 -0
- package/dist/observers/primary-vault-watcher.d.ts +0 -1
- package/dist/observers/primary-vault-watcher.js +0 -1
- package/dist/observers/repository-management-cron.d.ts +0 -1
- package/dist/observers/repository-management-cron.js +0 -1
- package/dist/observers/skill-curation-walker.d.ts +0 -1
- package/dist/observers/skill-curation-walker.js +0 -1
- package/dist/safety/absolute-block-audit.d.ts +17 -1
- package/dist/safety/absolute-block-audit.js +28 -3
- package/dist/safety/agent-write-tracker.d.ts +42 -2
- package/dist/safety/agent-write-tracker.js +81 -2
- package/dist/safety/always-disallowed.d.ts +93 -3
- package/dist/safety/always-disallowed.js +504 -20
- package/dist/safety/audit.d.ts +37 -6
- package/dist/safety/audit.js +263 -15
- package/dist/safety/integration-write-tracker.d.ts +0 -1
- package/dist/safety/integration-write-tracker.js +0 -1
- package/dist/safety/outbound-purchase-guard.d.ts +60 -0
- package/dist/safety/outbound-purchase-guard.js +82 -0
- package/dist/safety/risk-classifier.d.ts +21 -6
- package/dist/safety/risk-classifier.js +296 -70
- package/dist/safety/subprocess-block-scanner.d.ts +88 -0
- package/dist/safety/subprocess-block-scanner.js +176 -0
- package/dist/scheduler/hourly-check-gate.d.ts +23 -10
- package/dist/scheduler/hourly-check-gate.js +11 -7
- package/dist/secrets/backend-api-key-env.d.ts +0 -1
- package/dist/secrets/backend-api-key-env.js +1 -1
- package/dist/secrets/codex-home-materializer.d.ts +0 -1
- package/dist/secrets/codex-home-materializer.js +0 -1
- package/dist/secrets/encrypted-blob-store.d.ts +0 -1
- package/dist/secrets/encrypted-blob-store.js +0 -1
- package/dist/secrets/platform-secret-store.d.ts +0 -1
- package/dist/secrets/platform-secret-store.js +0 -1
- package/dist/secrets/redaction.d.ts +0 -1
- package/dist/secrets/redaction.js +0 -1
- package/dist/secrets/secret-broker.d.ts +0 -2
- package/dist/secrets/secret-broker.js +0 -4
- package/dist/secrets/secret-names.d.ts +1 -2
- package/dist/secrets/secret-names.js +0 -2
- package/dist/secrets/secret-store.d.ts +0 -1
- package/dist/secrets/secret-store.js +0 -1
- package/dist/secrets/types.d.ts +0 -1
- package/dist/secrets/types.js +0 -1
- package/dist/services/apple-calendar/caldav-client.d.ts +0 -1
- package/dist/services/apple-calendar/caldav-client.js +0 -1
- package/dist/services/apple-calendar/caldav-codec.d.ts +0 -1
- package/dist/services/apple-calendar/caldav-codec.js +0 -1
- package/dist/services/apple-calendar/index.d.ts +0 -1
- package/dist/services/apple-calendar/index.js +0 -1
- package/dist/services/apple-calendar/service.d.ts +0 -1
- package/dist/services/apple-calendar/service.js +0 -1
- package/dist/services/apple-calendar/types.d.ts +0 -1
- package/dist/services/apple-calendar/types.js +0 -1
- package/dist/services/attachments/hardlink.d.ts +0 -1
- package/dist/services/attachments/hardlink.js +0 -1
- package/dist/services/attachments/sanitize.d.ts +0 -1
- package/dist/services/attachments/sanitize.js +0 -1
- package/dist/services/attachments/store.d.ts +0 -1
- package/dist/services/attachments/store.js +1 -3
- package/dist/services/browser-history/automation/browser-task-tools/dom-snapshot-output.d.ts +48 -0
- package/dist/services/browser-history/automation/browser-task-tools/dom-snapshot-output.js +98 -0
- package/dist/services/browser-history/automation/browser-task-tools/extract-cap.d.ts +76 -0
- package/dist/services/browser-history/automation/browser-task-tools/extract-cap.js +79 -0
- package/dist/services/browser-history/automation/browser-task-tools/extract-output.d.ts +66 -0
- package/dist/services/browser-history/automation/browser-task-tools/extract-output.js +69 -0
- package/dist/services/browser-history/automation/browser-task-tools/final-confirm-gate.d.ts +129 -0
- package/dist/services/browser-history/automation/browser-task-tools/final-confirm-gate.js +150 -0
- package/dist/services/browser-history/automation/browser-task-tools/loop-guard.d.ts +95 -0
- package/dist/services/browser-history/automation/browser-task-tools/loop-guard.js +123 -0
- package/dist/services/browser-history/automation/browser-task-tools/navigate-guard.d.ts +54 -0
- package/dist/services/browser-history/automation/browser-task-tools/navigate-guard.js +62 -0
- package/dist/services/browser-history/automation/browser-task-tools/schemas.d.ts +201 -0
- package/dist/services/browser-history/automation/browser-task-tools/schemas.js +248 -0
- package/dist/services/browser-history/automation/browser-task-tools/screenshot-output.d.ts +76 -0
- package/dist/services/browser-history/automation/browser-task-tools/screenshot-output.js +101 -0
- package/dist/services/browser-history/automation/browser-task-tools/server.d.ts +240 -0
- package/dist/services/browser-history/automation/browser-task-tools/server.js +1016 -0
- package/dist/services/browser-history/automation/cdp-network-interception.d.ts +74 -0
- package/dist/services/browser-history/automation/cdp-network-interception.js +106 -0
- package/dist/services/browser-history/automation/egress-denylist.d.ts +167 -0
- package/dist/services/browser-history/automation/egress-denylist.js +452 -0
- package/dist/services/browser-history/automation/external-content.d.ts +72 -0
- package/dist/services/browser-history/automation/external-content.js +0 -0
- package/dist/services/browser-history/automation/final-confirm-handler.d.ts +178 -0
- package/dist/services/browser-history/automation/final-confirm-handler.js +462 -0
- package/dist/services/browser-history/automation/lite-final-confirm-tokens.d.ts +100 -0
- package/dist/services/browser-history/automation/lite-final-confirm-tokens.js +126 -0
- package/dist/services/browser-history/automation/payment-path-blocker.d.ts +62 -0
- package/dist/services/browser-history/automation/payment-path-blocker.js +113 -0
- package/dist/services/browser-history/automation/purchase-handler.d.ts +344 -0
- package/dist/services/browser-history/automation/purchase-handler.js +666 -0
- package/dist/services/browser-history/automation/purchase-tokens.d.ts +265 -0
- package/dist/services/browser-history/automation/purchase-tokens.js +271 -0
- package/dist/services/browser-history/automation/site-registry.d.ts +176 -0
- package/dist/services/browser-history/automation/site-registry.js +290 -0
- package/dist/services/browser-history/automation/trace-store-paths.d.ts +80 -0
- package/dist/services/browser-history/automation/trace-store-paths.js +119 -0
- package/dist/services/browser-history/automation/trace-store.d.ts +29 -0
- package/dist/services/browser-history/automation/trace-store.js +63 -0
- package/dist/services/browser-history/cleanup-interests-reflection.d.ts +39 -0
- package/dist/services/browser-history/cleanup-interests-reflection.js +204 -0
- package/dist/services/browser-history/detectors/atlas.d.ts +2 -0
- package/dist/services/browser-history/detectors/atlas.js +4 -0
- package/dist/services/browser-history/detectors/chrome.d.ts +2 -0
- package/dist/services/browser-history/detectors/chrome.js +4 -0
- package/dist/services/browser-history/detectors/chromium.d.ts +2 -0
- package/dist/services/browser-history/detectors/chromium.js +193 -0
- package/dist/services/browser-history/detectors/comet.d.ts +2 -0
- package/dist/services/browser-history/detectors/comet.js +4 -0
- package/dist/services/browser-history/detectors/registry.d.ts +15 -0
- package/dist/services/browser-history/detectors/registry.js +82 -0
- package/dist/services/browser-history/history-mtime.d.ts +8 -0
- package/dist/services/browser-history/history-mtime.js +31 -0
- package/dist/services/browser-history/interests-reflection-lock.d.ts +26 -0
- package/dist/services/browser-history/interests-reflection-lock.js +84 -0
- package/dist/services/browser-history/lifecycle/chromium-install.d.ts +78 -0
- package/dist/services/browser-history/lifecycle/chromium-install.js +206 -0
- package/dist/services/browser-history/lifecycle/chromium-launcher.d.ts +77 -0
- package/dist/services/browser-history/lifecycle/chromium-launcher.js +288 -0
- package/dist/services/browser-history/lifecycle/failure-escalation.d.ts +3 -0
- package/dist/services/browser-history/lifecycle/failure-escalation.js +54 -0
- package/dist/services/browser-history/lifecycle/health-check.d.ts +8 -0
- package/dist/services/browser-history/lifecycle/health-check.js +17 -0
- package/dist/services/browser-history/lifecycle/platform.d.ts +99 -0
- package/dist/services/browser-history/lifecycle/platform.js +597 -0
- package/dist/services/browser-history/lifecycle/supervisor.d.ts +24 -0
- package/dist/services/browser-history/lifecycle/supervisor.js +334 -0
- package/dist/services/browser-history/managed-chromium/cdp-connect.d.ts +110 -0
- package/dist/services/browser-history/managed-chromium/cdp-connect.js +171 -0
- package/dist/services/browser-history/managed-chromium/instance-a-config.d.ts +116 -0
- package/dist/services/browser-history/managed-chromium/instance-a-config.js +164 -0
- package/dist/services/browser-history/managed-chromium/instance-a-launcher.d.ts +82 -0
- package/dist/services/browser-history/managed-chromium/instance-a-launcher.js +200 -0
- package/dist/services/browser-history/managed-chromium/managed-chromium-supervisor.d.ts +69 -0
- package/dist/services/browser-history/managed-chromium/managed-chromium-supervisor.js +334 -0
- package/dist/services/browser-history/managed-chromium/reauth-detector.d.ts +60 -0
- package/dist/services/browser-history/managed-chromium/reauth-detector.js +179 -0
- package/dist/services/browser-history/managed-chromium/sandbox-install.d.ts +69 -0
- package/dist/services/browser-history/managed-chromium/sandbox-install.js +123 -0
- package/dist/services/browser-history/managed-chromium/sandbox-launcher.d.ts +117 -0
- package/dist/services/browser-history/managed-chromium/sandbox-launcher.js +244 -0
- package/dist/services/browser-history/managed-chromium/setup-bootstrap.d.ts +149 -0
- package/dist/services/browser-history/managed-chromium/setup-bootstrap.js +404 -0
- package/dist/services/browser-history/managed-chromium/site-bootstrap.d.ts +133 -0
- package/dist/services/browser-history/managed-chromium/site-bootstrap.js +360 -0
- package/dist/services/browser-history/managed-chromium/supervisor-config.d.ts +75 -0
- package/dist/services/browser-history/managed-chromium/supervisor-config.js +146 -0
- package/dist/services/browser-history/managed-chromium/types.d.ts +199 -0
- package/dist/services/browser-history/managed-chromium/types.js +116 -0
- package/dist/services/browser-history/pipeline/amazon-extractor.d.ts +11 -0
- package/dist/services/browser-history/pipeline/amazon-extractor.js +33 -0
- package/dist/services/browser-history/pipeline/classifier.d.ts +7 -0
- package/dist/services/browser-history/pipeline/classifier.js +208 -0
- package/dist/services/browser-history/pipeline/cluster-extractor.d.ts +76 -0
- package/dist/services/browser-history/pipeline/cluster-extractor.js +271 -0
- package/dist/services/browser-history/pipeline/interests-block.d.ts +99 -0
- package/dist/services/browser-history/pipeline/interests-block.js +333 -0
- package/dist/services/browser-history/pipeline/meaningful-filter.d.ts +47 -0
- package/dist/services/browser-history/pipeline/meaningful-filter.js +228 -0
- package/dist/services/browser-history/pipeline/offer-rate-limit.d.ts +75 -0
- package/dist/services/browser-history/pipeline/offer-rate-limit.js +188 -0
- package/dist/services/browser-history/pipeline/offer-triggers.d.ts +150 -0
- package/dist/services/browser-history/pipeline/offer-triggers.js +164 -0
- package/dist/services/browser-history/pipeline/pre-morning-digest.d.ts +118 -0
- package/dist/services/browser-history/pipeline/pre-morning-digest.js +399 -0
- package/dist/services/browser-history/pipeline/project-matcher.d.ts +26 -0
- package/dist/services/browser-history/pipeline/project-matcher.js +314 -0
- package/dist/services/browser-history/pipeline/redactor.d.ts +15 -0
- package/dist/services/browser-history/pipeline/redactor.js +119 -0
- package/dist/services/browser-history/pipeline/reload-detector.d.ts +6 -0
- package/dist/services/browser-history/pipeline/reload-detector.js +16 -0
- package/dist/services/browser-history/pipeline/sensitive-hosts.d.ts +2 -0
- package/dist/services/browser-history/pipeline/sensitive-hosts.js +173 -0
- package/dist/services/browser-history/pipeline/summarizer.d.ts +52 -0
- package/dist/services/browser-history/pipeline/summarizer.js +97 -0
- package/dist/services/browser-history/pipeline/weekly-interests-summary.d.ts +139 -0
- package/dist/services/browser-history/pipeline/weekly-interests-summary.js +227 -0
- package/dist/services/browser-history/readers/chromium-reader.d.ts +30 -0
- package/dist/services/browser-history/readers/chromium-reader.js +139 -0
- package/dist/services/browser-history/readers/snapshot.d.ts +19 -0
- package/dist/services/browser-history/readers/snapshot.js +67 -0
- package/dist/services/browser-history/refresh-interests-reflection.d.ts +125 -0
- package/dist/services/browser-history/refresh-interests-reflection.js +424 -0
- package/dist/services/browser-history/types.d.ts +60 -0
- package/dist/services/browser-history/types.js +1 -0
- package/dist/services/browser-task/browser-task-allowlist.d.ts +107 -0
- package/dist/services/browser-task/browser-task-allowlist.js +247 -0
- package/dist/services/browser-task/browser-task-deadline-scanner.d.ts +76 -0
- package/dist/services/browser-task/browser-task-deadline-scanner.js +68 -0
- package/dist/services/browser-task/browser-task-driver.d.ts +188 -0
- package/dist/services/browser-task/browser-task-driver.js +714 -0
- package/dist/services/browser-task/browser-task-runner.d.ts +166 -0
- package/dist/services/browser-task/browser-task-runner.js +781 -0
- package/dist/services/browser-task/browser-task-slots.d.ts +212 -0
- package/dist/services/browser-task/browser-task-slots.js +404 -0
- package/dist/services/browser-task/browser-task-transition-events.d.ts +76 -0
- package/dist/services/browser-task/browser-task-transition-events.js +80 -0
- package/dist/services/calendar/outlook/graph-calendar-client.d.ts +0 -1
- package/dist/services/calendar/outlook/graph-calendar-client.js +0 -1
- package/dist/services/calendar.d.ts +0 -1
- package/dist/services/calendar.js +21 -16
- package/dist/services/delegated-backend-invoker.d.ts +0 -1
- package/dist/services/delegated-backend-invoker.js +8 -2
- package/dist/services/delegated-invoker-audit.d.ts +0 -1
- package/dist/services/delegated-invoker-audit.js +5 -2
- package/dist/services/delegated-invoker-cache-hits.d.ts +0 -1
- package/dist/services/delegated-invoker-cache-hits.js +0 -1
- package/dist/services/delegated-invoker-janitors.d.ts +0 -1
- package/dist/services/delegated-invoker-janitors.js +0 -1
- package/dist/services/delegated-invoker-utils.d.ts +0 -1
- package/dist/services/delegated-invoker-utils.js +0 -1
- package/dist/services/delegated-proxy-config.d.ts +3 -3
- package/dist/services/delegated-proxy-config.js +0 -1
- package/dist/services/delegated-task-result-cache.d.ts +0 -1
- package/dist/services/delegated-task-result-cache.js +0 -0
- package/dist/services/delegated-task-runtime.d.ts +0 -1
- package/dist/services/delegated-task-runtime.js +0 -1
- package/dist/services/delegated-task-session-pool.d.ts +0 -1
- package/dist/services/delegated-task-session-pool.js +0 -1
- package/dist/services/delegated-tool-runtime.d.ts +0 -1
- package/dist/services/delegated-tool-runtime.js +0 -1
- package/dist/services/fts5.d.ts +0 -1
- package/dist/services/fts5.js +0 -1
- package/dist/services/git-account-registry.d.ts +0 -1
- package/dist/services/git-account-registry.js +0 -1
- package/dist/services/github.d.ts +9 -40
- package/dist/services/github.js +9 -107
- package/dist/services/gmail-classifier.d.ts +0 -1
- package/dist/services/gmail-classifier.js +0 -1
- package/dist/services/gmail.d.ts +0 -1
- package/dist/services/gmail.js +31 -52
- package/dist/services/google-auth.d.ts +0 -1
- package/dist/services/google-auth.js +0 -1
- package/dist/services/integrations/extract-write-item-id.d.ts +5 -3
- package/dist/services/integrations/extract-write-item-id.js +6 -1
- package/dist/services/integrations/reconcile.d.ts +0 -1
- package/dist/services/integrations/reconcile.js +0 -1
- package/dist/services/integrations/snapshot-partitions.d.ts +0 -1
- package/dist/services/integrations/snapshot-partitions.js +8 -1
- package/dist/services/journal/render.d.ts +0 -1
- package/dist/services/journal/render.js +0 -1
- package/dist/services/journal/writer.d.ts +0 -1
- package/dist/services/journal/writer.js +0 -1
- package/dist/services/mail/account-registry.d.ts +0 -1
- package/dist/services/mail/account-registry.js +7 -3
- package/dist/services/mail/gmail/auth-failure-classifier.d.ts +0 -1
- package/dist/services/mail/gmail/auth-failure-classifier.js +0 -1
- package/dist/services/mail/gmail/gmail-provider.d.ts +0 -1
- package/dist/services/mail/gmail/gmail-provider.js +0 -1
- package/dist/services/mail/gmail/legacy-row.d.ts +0 -1
- package/dist/services/mail/gmail/legacy-row.js +0 -1
- package/dist/services/mail/gmail/poll-cursor.d.ts +0 -1
- package/dist/services/mail/gmail/poll-cursor.js +0 -1
- package/dist/services/mail/html-to-plaintext.d.ts +0 -1
- package/dist/services/mail/html-to-plaintext.js +0 -1
- package/dist/services/mail/imap/app-password.d.ts +0 -1
- package/dist/services/mail/imap/app-password.js +0 -1
- package/dist/services/mail/imap/auth-failure-classifier.d.ts +0 -1
- package/dist/services/mail/imap/auth-failure-classifier.js +0 -1
- package/dist/services/mail/imap/capabilities.d.ts +0 -1
- package/dist/services/mail/imap/capabilities.js +0 -1
- package/dist/services/mail/imap/client.d.ts +0 -1
- package/dist/services/mail/imap/client.js +0 -1
- package/dist/services/mail/imap/cursor.d.ts +0 -1
- package/dist/services/mail/imap/cursor.js +0 -1
- package/dist/services/mail/imap/folder-resolver.d.ts +0 -1
- package/dist/services/mail/imap/folder-resolver.js +0 -1
- package/dist/services/mail/imap/icloud-provider.d.ts +0 -1
- package/dist/services/mail/imap/icloud-provider.js +0 -1
- package/dist/services/mail/imap/imap-provider-base.d.ts +0 -1
- package/dist/services/mail/imap/imap-provider-base.js +12 -7
- package/dist/services/mail/imap/query-translator.d.ts +0 -1
- package/dist/services/mail/imap/query-translator.js +0 -1
- package/dist/services/mail/imap/reconcile-planner.d.ts +0 -1
- package/dist/services/mail/imap/reconcile-planner.js +0 -1
- package/dist/services/mail/imap/reply-mime.d.ts +0 -1
- package/dist/services/mail/imap/reply-mime.js +0 -1
- package/dist/services/mail/imap/yahoo-provider.d.ts +0 -1
- package/dist/services/mail/imap/yahoo-provider.js +0 -1
- package/dist/services/mail/mail-search.d.ts +0 -1
- package/dist/services/mail/mail-search.js +0 -1
- package/dist/services/mail/outlook/auth-failure-classifier.d.ts +0 -1
- package/dist/services/mail/outlook/auth-failure-classifier.js +0 -1
- package/dist/services/mail/outlook/client-config.d.ts +0 -1
- package/dist/services/mail/outlook/client-config.js +0 -1
- package/dist/services/mail/outlook/delta-cursor.d.ts +0 -1
- package/dist/services/mail/outlook/delta-cursor.js +0 -1
- package/dist/services/mail/outlook/graph-client.d.ts +0 -1
- package/dist/services/mail/outlook/graph-client.js +0 -1
- package/dist/services/mail/outlook/msal-app-factory.d.ts +0 -1
- package/dist/services/mail/outlook/msal-app-factory.js +0 -1
- package/dist/services/mail/outlook/msal-cache-plugin.d.ts +0 -1
- package/dist/services/mail/outlook/msal-cache-plugin.js +0 -1
- package/dist/services/mail/outlook/oauth-device-code.d.ts +0 -1
- package/dist/services/mail/outlook/oauth-device-code.js +0 -1
- package/dist/services/mail/outlook/oauth-loopback.d.ts +0 -1
- package/dist/services/mail/outlook/oauth-loopback.js +0 -1
- package/dist/services/mail/outlook/outlook-provider.d.ts +0 -1
- package/dist/services/mail/outlook/outlook-provider.js +0 -1
- package/dist/services/mail/outlook/query-translator.d.ts +0 -1
- package/dist/services/mail/outlook/query-translator.js +0 -1
- package/dist/services/mail/provider.d.ts +0 -1
- package/dist/services/mail/provider.js +0 -1
- package/dist/services/mail/query-utils.d.ts +0 -1
- package/dist/services/mail/query-utils.js +0 -1
- package/dist/services/mail-classifier.d.ts +0 -1
- package/dist/services/mail-classifier.js +0 -1
- package/dist/services/mail-ingestion.d.ts +0 -1
- package/dist/services/mail-ingestion.js +0 -1
- package/dist/services/mcp/auto-probe.d.ts +0 -1
- package/dist/services/mcp/auto-probe.js +0 -1
- package/dist/services/mcp/generators/claude.d.ts +0 -1
- package/dist/services/mcp/generators/claude.js +0 -1
- package/dist/services/mcp/generators/codex.d.ts +0 -1
- package/dist/services/mcp/generators/codex.js +0 -1
- package/dist/services/mcp/generators/gemini.d.ts +0 -1
- package/dist/services/mcp/generators/gemini.js +0 -1
- package/dist/services/mcp/generators/index.d.ts +1 -1
- package/dist/services/mcp/generators/index.js +3 -1
- package/dist/services/mcp/generators/types.d.ts +0 -1
- package/dist/services/mcp/generators/types.js +0 -1
- package/dist/services/mcp/probe.d.ts +0 -1
- package/dist/services/mcp/probe.js +7 -1
- package/dist/services/mcp/registry.d.ts +0 -1
- package/dist/services/mcp/registry.js +0 -1
- package/dist/services/mcp/risk.d.ts +1 -2
- package/dist/services/mcp/risk.js +1 -2
- package/dist/services/mcp/sdk-observations-server.d.ts +59 -0
- package/dist/services/mcp/sdk-observations-server.js +160 -0
- package/dist/services/mcp/session-materializer.d.ts +2 -3
- package/dist/services/mcp/session-materializer.js +15 -12
- package/dist/services/mcp/tool-audit.d.ts +0 -1
- package/dist/services/mcp/tool-audit.js +0 -1
- package/dist/services/mcp/types.d.ts +1 -1
- package/dist/services/mcp/types.js +0 -1
- package/dist/services/notion.d.ts +17 -2
- package/dist/services/notion.js +39 -3
- package/dist/services/observations-batch.d.ts +98 -0
- package/dist/services/observations-batch.js +256 -0
- package/dist/services/obsidian.d.ts +0 -1
- package/dist/services/obsidian.js +0 -1
- package/dist/services/service-registry.d.ts +0 -3
- package/dist/services/service-registry.js +0 -2
- package/dist/services/voice/transcriber-impl.d.ts +0 -1
- package/dist/services/voice/transcriber-impl.js +21 -20
- package/dist/services/voice/transcriber.d.ts +22 -2
- package/dist/services/voice/transcriber.js +68 -11
- package/dist/settings/runtime-settings.d.ts +52 -8
- package/dist/settings/runtime-settings.js +172 -20
- package/dist/settings/settings-store.d.ts +0 -1
- package/dist/settings/settings-store.js +44 -2
- package/native/win-appcontainer/README.md +66 -0
- package/native/win-appcontainer/binding.gyp +33 -0
- package/native/win-appcontainer/loader.js +29 -0
- package/native/win-appcontainer/package.json +18 -0
- package/native/win-appcontainer/src/win_appcontainer.cc +67 -0
- package/package.json +8 -3
- package/dist/adapters/composite-dashboard-stream.d.ts.map +0 -1
- package/dist/adapters/composite-dashboard-stream.js.map +0 -1
- package/dist/adapters/dashboard-adapter.d.ts.map +0 -1
- package/dist/adapters/dashboard-adapter.js.map +0 -1
- package/dist/adapters/discord.d.ts.map +0 -1
- package/dist/adapters/discord.js.map +0 -1
- package/dist/adapters/docs-qa-adapter.d.ts.map +0 -1
- package/dist/adapters/docs-qa-adapter.js.map +0 -1
- package/dist/adapters/message-hub.d.ts.map +0 -1
- package/dist/adapters/message-hub.js.map +0 -1
- package/dist/adapters/notification-manager.d.ts.map +0 -1
- package/dist/adapters/notification-manager.js.map +0 -1
- package/dist/adapters/outbound-text.d.ts.map +0 -1
- package/dist/adapters/outbound-text.js.map +0 -1
- package/dist/adapters/slack-adapter.d.ts.map +0 -1
- package/dist/adapters/slack-adapter.js.map +0 -1
- package/dist/adapters/telegram-adapter.d.ts.map +0 -1
- package/dist/adapters/telegram-adapter.js.map +0 -1
- package/dist/adapters/types.d.ts.map +0 -1
- package/dist/adapters/types.js.map +0 -1
- package/dist/adapters/whatsapp-adapter.d.ts.map +0 -1
- package/dist/adapters/whatsapp-adapter.js.map +0 -1
- package/dist/api/chat-binding-query.d.ts.map +0 -1
- package/dist/api/chat-binding-query.js.map +0 -1
- package/dist/api/chat-session-resume.d.ts.map +0 -1
- package/dist/api/chat-session-resume.js.map +0 -1
- package/dist/api/delegated-proxy-helper.d.ts +0 -33
- package/dist/api/delegated-proxy-helper.d.ts.map +0 -1
- package/dist/api/delegated-proxy-helper.js +0 -54
- package/dist/api/delegated-proxy-helper.js.map +0 -1
- package/dist/api/directory-picker.d.ts.map +0 -1
- package/dist/api/directory-picker.js.map +0 -1
- package/dist/api/env-writer.d.ts.map +0 -1
- package/dist/api/env-writer.js.map +0 -1
- package/dist/api/integration-route-gate.d.ts.map +0 -1
- package/dist/api/integration-route-gate.js.map +0 -1
- package/dist/api/json-body.d.ts.map +0 -1
- package/dist/api/json-body.js.map +0 -1
- package/dist/api/routes/activity-sources.d.ts.map +0 -1
- package/dist/api/routes/activity-sources.js.map +0 -1
- package/dist/api/routes/agent.d.ts.map +0 -1
- package/dist/api/routes/agent.js.map +0 -1
- package/dist/api/routes/apple-calendar.d.ts.map +0 -1
- package/dist/api/routes/apple-calendar.js.map +0 -1
- package/dist/api/routes/attachments.d.ts.map +0 -1
- package/dist/api/routes/attachments.js.map +0 -1
- package/dist/api/routes/backends.d.ts.map +0 -1
- package/dist/api/routes/backends.js.map +0 -1
- package/dist/api/routes/books.d.ts.map +0 -1
- package/dist/api/routes/books.js.map +0 -1
- package/dist/api/routes/calendar.d.ts.map +0 -1
- package/dist/api/routes/calendar.js.map +0 -1
- package/dist/api/routes/commands.d.ts.map +0 -1
- package/dist/api/routes/commands.js.map +0 -1
- package/dist/api/routes/context.d.ts +0 -57
- package/dist/api/routes/context.d.ts.map +0 -1
- package/dist/api/routes/context.js +0 -1788
- package/dist/api/routes/context.js.map +0 -1
- package/dist/api/routes/dashboard.d.ts +0 -29
- package/dist/api/routes/dashboard.d.ts.map +0 -1
- package/dist/api/routes/dashboard.js +0 -2160
- package/dist/api/routes/dashboard.js.map +0 -1
- package/dist/api/routes/delegated-sync.d.ts.map +0 -1
- package/dist/api/routes/delegated-sync.js.map +0 -1
- package/dist/api/routes/delegated.d.ts.map +0 -1
- package/dist/api/routes/delegated.js.map +0 -1
- package/dist/api/routes/docs.d.ts.map +0 -1
- package/dist/api/routes/docs.js.map +0 -1
- package/dist/api/routes/entities.d.ts.map +0 -1
- package/dist/api/routes/entities.js.map +0 -1
- package/dist/api/routes/fs.d.ts.map +0 -1
- package/dist/api/routes/fs.js.map +0 -1
- package/dist/api/routes/fs.logic.d.ts.map +0 -1
- package/dist/api/routes/fs.logic.js.map +0 -1
- package/dist/api/routes/git-accounts.d.ts.map +0 -1
- package/dist/api/routes/git-accounts.js.map +0 -1
- package/dist/api/routes/git-templates.d.ts.map +0 -1
- package/dist/api/routes/git-templates.js.map +0 -1
- package/dist/api/routes/git.d.ts.map +0 -1
- package/dist/api/routes/git.js.map +0 -1
- package/dist/api/routes/github.d.ts.map +0 -1
- package/dist/api/routes/github.js.map +0 -1
- package/dist/api/routes/health.d.ts.map +0 -1
- package/dist/api/routes/health.js.map +0 -1
- package/dist/api/routes/integrations-reconcile.d.ts.map +0 -1
- package/dist/api/routes/integrations-reconcile.js.map +0 -1
- package/dist/api/routes/integrations.d.ts +0 -48
- package/dist/api/routes/integrations.d.ts.map +0 -1
- package/dist/api/routes/integrations.js +0 -1572
- package/dist/api/routes/integrations.js.map +0 -1
- package/dist/api/routes/knowledge.d.ts.map +0 -1
- package/dist/api/routes/knowledge.js.map +0 -1
- package/dist/api/routes/mail.d.ts +0 -39
- package/dist/api/routes/mail.d.ts.map +0 -1
- package/dist/api/routes/mail.js +0 -1472
- package/dist/api/routes/mail.js.map +0 -1
- package/dist/api/routes/managed-tasks.d.ts.map +0 -1
- package/dist/api/routes/managed-tasks.js.map +0 -1
- package/dist/api/routes/mcp.d.ts.map +0 -1
- package/dist/api/routes/mcp.js.map +0 -1
- package/dist/api/routes/metrics.d.ts.map +0 -1
- package/dist/api/routes/metrics.js.map +0 -1
- package/dist/api/routes/notion.d.ts.map +0 -1
- package/dist/api/routes/notion.js.map +0 -1
- package/dist/api/routes/observations.d.ts.map +0 -1
- package/dist/api/routes/observations.js.map +0 -1
- package/dist/api/routes/obsidian.d.ts.map +0 -1
- package/dist/api/routes/obsidian.js.map +0 -1
- package/dist/api/routes/profile-questions.d.ts.map +0 -1
- package/dist/api/routes/profile-questions.js.map +0 -1
- package/dist/api/routes/receipts.d.ts.map +0 -1
- package/dist/api/routes/receipts.js.map +0 -1
- package/dist/api/routes/recurring-schedules.d.ts.map +0 -1
- package/dist/api/routes/recurring-schedules.js.map +0 -1
- package/dist/api/routes/repositories.d.ts.map +0 -1
- package/dist/api/routes/repositories.js.map +0 -1
- package/dist/api/routes/setup-migrate.d.ts.map +0 -1
- package/dist/api/routes/setup-migrate.js.map +0 -1
- package/dist/api/routes/setup.d.ts.map +0 -1
- package/dist/api/routes/setup.js.map +0 -1
- package/dist/api/routes/skill-curation.d.ts.map +0 -1
- package/dist/api/routes/skill-curation.js.map +0 -1
- package/dist/api/routes/skills.d.ts.map +0 -1
- package/dist/api/routes/skills.js.map +0 -1
- package/dist/api/routes/sot-bindings.d.ts.map +0 -1
- package/dist/api/routes/sot-bindings.js.map +0 -1
- package/dist/api/routes/sse.d.ts.map +0 -1
- package/dist/api/routes/sse.js.map +0 -1
- package/dist/api/routes/system.d.ts.map +0 -1
- package/dist/api/routes/system.js.map +0 -1
- package/dist/api/routes/task-flows.d.ts.map +0 -1
- package/dist/api/routes/task-flows.js.map +0 -1
- package/dist/api/routes/travel-bookings.d.ts.map +0 -1
- package/dist/api/routes/travel-bookings.js.map +0 -1
- package/dist/api/routes/travel-time.d.ts +0 -8
- package/dist/api/routes/travel-time.d.ts.map +0 -1
- package/dist/api/routes/travel-time.js +0 -87
- package/dist/api/routes/travel-time.js.map +0 -1
- package/dist/api/routes/triggers.d.ts.map +0 -1
- package/dist/api/routes/triggers.js.map +0 -1
- package/dist/api/routes/voice.d.ts.map +0 -1
- package/dist/api/routes/voice.js.map +0 -1
- package/dist/api/routes/wiki.d.ts.map +0 -1
- package/dist/api/routes/wiki.js.map +0 -1
- package/dist/api/server.d.ts.map +0 -1
- package/dist/api/server.js.map +0 -1
- package/dist/bootstrap/adapters.d.ts.map +0 -1
- package/dist/bootstrap/adapters.js.map +0 -1
- package/dist/bootstrap/catchup.d.ts.map +0 -1
- package/dist/bootstrap/catchup.js.map +0 -1
- package/dist/bootstrap/schedule-helpers.d.ts.map +0 -1
- package/dist/bootstrap/schedule-helpers.js.map +0 -1
- package/dist/bootstrap/services.d.ts.map +0 -1
- package/dist/bootstrap/services.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/core/agent-core.d.ts.map +0 -1
- package/dist/core/agent-core.js.map +0 -1
- package/dist/core/alerts.d.ts.map +0 -1
- package/dist/core/alerts.js.map +0 -1
- package/dist/core/atomic-write.d.ts.map +0 -1
- package/dist/core/atomic-write.js.map +0 -1
- package/dist/core/backends/api-key-probe.d.ts.map +0 -1
- package/dist/core/backends/api-key-probe.js.map +0 -1
- package/dist/core/backends/auth-health-monitor.d.ts.map +0 -1
- package/dist/core/backends/auth-health-monitor.js.map +0 -1
- package/dist/core/backends/auth-recovery.d.ts.map +0 -1
- package/dist/core/backends/auth-recovery.js.map +0 -1
- package/dist/core/backends/auth-telemetry.d.ts.map +0 -1
- package/dist/core/backends/auth-telemetry.js.map +0 -1
- package/dist/core/backends/backend-router.d.ts.map +0 -1
- package/dist/core/backends/backend-router.js.map +0 -1
- package/dist/core/backends/claude-auth.d.ts.map +0 -1
- package/dist/core/backends/claude-auth.js.map +0 -1
- package/dist/core/backends/claude-code-core.d.ts.map +0 -1
- package/dist/core/backends/claude-code-core.js.map +0 -1
- package/dist/core/backends/claude-credentials-store.d.ts.map +0 -1
- package/dist/core/backends/claude-credentials-store.js.map +0 -1
- package/dist/core/backends/claude-delegated.d.ts.map +0 -1
- package/dist/core/backends/claude-delegated.js.map +0 -1
- package/dist/core/backends/claude-errors.d.ts.map +0 -1
- package/dist/core/backends/claude-errors.js.map +0 -1
- package/dist/core/backends/claude-probe.d.ts.map +0 -1
- package/dist/core/backends/claude-probe.js.map +0 -1
- package/dist/core/backends/claude-tool-collection.d.ts.map +0 -1
- package/dist/core/backends/claude-tool-collection.js.map +0 -1
- package/dist/core/backends/cli-utils.d.ts.map +0 -1
- package/dist/core/backends/cli-utils.js.map +0 -1
- package/dist/core/backends/codex-core.d.ts.map +0 -1
- package/dist/core/backends/codex-core.js.map +0 -1
- package/dist/core/backends/gemini-cli-core.d.ts.map +0 -1
- package/dist/core/backends/gemini-cli-core.js.map +0 -1
- package/dist/core/backends/idle-watchdog.d.ts.map +0 -1
- package/dist/core/backends/idle-watchdog.js.map +0 -1
- package/dist/core/backends/install-methods.d.ts.map +0 -1
- package/dist/core/backends/install-methods.js.map +0 -1
- package/dist/core/backends/model-registry.d.ts.map +0 -1
- package/dist/core/backends/model-registry.js.map +0 -1
- package/dist/core/backends/plan-presets.d.ts.map +0 -1
- package/dist/core/backends/plan-presets.js.map +0 -1
- package/dist/core/backends/price-fetcher.d.ts.map +0 -1
- package/dist/core/backends/price-fetcher.js.map +0 -1
- package/dist/core/backends/process-config-cascade.d.ts.map +0 -1
- package/dist/core/backends/process-config-cascade.js.map +0 -1
- package/dist/core/backends/prompt-utils.d.ts.map +0 -1
- package/dist/core/backends/prompt-utils.js.map +0 -1
- package/dist/core/backends/proxy-model-registry.d.ts.map +0 -1
- package/dist/core/backends/proxy-model-registry.js.map +0 -1
- package/dist/core/backends/silent-api-error-detector.d.ts.map +0 -1
- package/dist/core/backends/silent-api-error-detector.js.map +0 -1
- package/dist/core/bang-commands/commands-cost.d.ts.map +0 -1
- package/dist/core/bang-commands/commands-cost.js.map +0 -1
- package/dist/core/bang-commands/commands-help.d.ts.map +0 -1
- package/dist/core/bang-commands/commands-help.js.map +0 -1
- package/dist/core/bang-commands/commands-report.d.ts.map +0 -1
- package/dist/core/bang-commands/commands-report.js.map +0 -1
- package/dist/core/bang-commands/commands-stop-start.d.ts.map +0 -1
- package/dist/core/bang-commands/commands-stop-start.js.map +0 -1
- package/dist/core/bang-commands/commands-wiki.d.ts.map +0 -1
- package/dist/core/bang-commands/commands-wiki.js.map +0 -1
- package/dist/core/bang-commands/format-utils.d.ts.map +0 -1
- package/dist/core/bang-commands/format-utils.js.map +0 -1
- package/dist/core/bang-commands/index.d.ts.map +0 -1
- package/dist/core/bang-commands/index.js.map +0 -1
- package/dist/core/bang-commands/registry.d.ts.map +0 -1
- package/dist/core/bang-commands/registry.js.map +0 -1
- package/dist/core/bang-commands/user-commands.d.ts.map +0 -1
- package/dist/core/bang-commands/user-commands.js.map +0 -1
- package/dist/core/channel-timeline.d.ts.map +0 -1
- package/dist/core/channel-timeline.js.map +0 -1
- package/dist/core/character-block.d.ts.map +0 -1
- package/dist/core/character-block.js.map +0 -1
- package/dist/core/context/activity-sources.d.ts.map +0 -1
- package/dist/core/context/activity-sources.js.map +0 -1
- package/dist/core/context/activity-view-reconciler.d.ts.map +0 -1
- package/dist/core/context/activity-view-reconciler.js.map +0 -1
- package/dist/core/context/activity-view-runner.d.ts.map +0 -1
- package/dist/core/context/activity-view-runner.js.map +0 -1
- package/dist/core/context/default-schedules-reconciler.d.ts.map +0 -1
- package/dist/core/context/default-schedules-reconciler.js.map +0 -1
- package/dist/core/context/default-schedules-runner.d.ts.map +0 -1
- package/dist/core/context/default-schedules-runner.js.map +0 -1
- package/dist/core/context/domain-index-reconciler.d.ts.map +0 -1
- package/dist/core/context/domain-index-reconciler.js.map +0 -1
- package/dist/core/context/domain-index-runner.d.ts.map +0 -1
- package/dist/core/context/domain-index-runner.js.map +0 -1
- package/dist/core/context/entity-mirror.d.ts.map +0 -1
- package/dist/core/context/entity-mirror.js.map +0 -1
- package/dist/core/context/entity-source-rename.d.ts.map +0 -1
- package/dist/core/context/entity-source-rename.js.map +0 -1
- package/dist/core/context/index-reconciler.d.ts.map +0 -1
- package/dist/core/context/index-reconciler.js.map +0 -1
- package/dist/core/context/policy-index-reconciler.d.ts.map +0 -1
- package/dist/core/context/policy-index-reconciler.js.map +0 -1
- package/dist/core/context/policy-index-runner.d.ts.map +0 -1
- package/dist/core/context/policy-index-runner.js.map +0 -1
- package/dist/core/context/reconciler-runner.d.ts.map +0 -1
- package/dist/core/context/reconciler-runner.js.map +0 -1
- package/dist/core/context-builder.d.ts.map +0 -1
- package/dist/core/context-builder.js.map +0 -1
- package/dist/core/context-frontmatter-backfill.d.ts +0 -33
- package/dist/core/context-frontmatter-backfill.d.ts.map +0 -1
- package/dist/core/context-frontmatter-backfill.js +0 -111
- package/dist/core/context-frontmatter-backfill.js.map +0 -1
- package/dist/core/context-frontmatter.d.ts.map +0 -1
- package/dist/core/context-frontmatter.js.map +0 -1
- package/dist/core/context-health.d.ts.map +0 -1
- package/dist/core/context-health.js.map +0 -1
- package/dist/core/context-paths.d.ts.map +0 -1
- package/dist/core/context-paths.js.map +0 -1
- package/dist/core/context-staleness.d.ts.map +0 -1
- package/dist/core/context-staleness.js.map +0 -1
- package/dist/core/custom-routine-scheduler.d.ts.map +0 -1
- package/dist/core/custom-routine-scheduler.js.map +0 -1
- package/dist/core/daemon-api-cli.d.ts.map +0 -1
- package/dist/core/daemon-api-cli.js.map +0 -1
- package/dist/core/dashboard-session-cleanup.d.ts.map +0 -1
- package/dist/core/dashboard-session-cleanup.js.map +0 -1
- package/dist/core/dashboard-session-controls.d.ts.map +0 -1
- package/dist/core/dashboard-session-controls.js.map +0 -1
- package/dist/core/delegated-connector-health.d.ts.map +0 -1
- package/dist/core/delegated-connector-health.js.map +0 -1
- package/dist/core/dispatcher-date-utils.d.ts.map +0 -1
- package/dist/core/dispatcher-date-utils.js.map +0 -1
- package/dist/core/dispatcher-error-handling.d.ts.map +0 -1
- package/dist/core/dispatcher-error-handling.js.map +0 -1
- package/dist/core/dispatcher-hourly-check.d.ts.map +0 -1
- package/dist/core/dispatcher-hourly-check.js.map +0 -1
- package/dist/core/dispatcher-message-handler.d.ts.map +0 -1
- package/dist/core/dispatcher-message-handler.js.map +0 -1
- package/dist/core/dispatcher-morning-routine.d.ts.map +0 -1
- package/dist/core/dispatcher-morning-routine.js.map +0 -1
- package/dist/core/dispatcher-prompt.d.ts.map +0 -1
- package/dist/core/dispatcher-prompt.js.map +0 -1
- package/dist/core/dispatcher-repository-helpers.d.ts.map +0 -1
- package/dist/core/dispatcher-repository-helpers.js.map +0 -1
- package/dist/core/dispatcher-result-processor.d.ts.map +0 -1
- package/dist/core/dispatcher-result-processor.js.map +0 -1
- package/dist/core/dispatcher-scheduled-tasks.d.ts.map +0 -1
- package/dist/core/dispatcher-scheduled-tasks.js.map +0 -1
- package/dist/core/dispatcher-types.d.ts.map +0 -1
- package/dist/core/dispatcher-types.js.map +0 -1
- package/dist/core/dispatcher.d.ts.map +0 -1
- package/dist/core/dispatcher.js.map +0 -1
- package/dist/core/dm-freshness-metrics.d.ts.map +0 -1
- package/dist/core/dm-freshness-metrics.js.map +0 -1
- package/dist/core/docs/citation-validator.d.ts.map +0 -1
- package/dist/core/docs/citation-validator.js.map +0 -1
- package/dist/core/docs/extract-terms.d.ts.map +0 -1
- package/dist/core/docs/extract-terms.js.map +0 -1
- package/dist/core/docs/indexer.d.ts.map +0 -1
- package/dist/core/docs/indexer.js.map +0 -1
- package/dist/core/drift-effects.d.ts.map +0 -1
- package/dist/core/drift-effects.js.map +0 -1
- package/dist/core/event-bus.d.ts.map +0 -1
- package/dist/core/event-bus.js.map +0 -1
- package/dist/core/git-project-docs.d.ts.map +0 -1
- package/dist/core/git-project-docs.js.map +0 -1
- package/dist/core/health-monitor.d.ts.map +0 -1
- package/dist/core/health-monitor.js.map +0 -1
- package/dist/core/heartbeat.d.ts.map +0 -1
- package/dist/core/heartbeat.js.map +0 -1
- package/dist/core/integration-health.d.ts.map +0 -1
- package/dist/core/integration-health.js.map +0 -1
- package/dist/core/integration-lifecycle.d.ts.map +0 -1
- package/dist/core/integration-lifecycle.js.map +0 -1
- package/dist/core/integration-main-backend.d.ts.map +0 -1
- package/dist/core/integration-main-backend.js.map +0 -1
- package/dist/core/integration-probe.d.ts.map +0 -1
- package/dist/core/integration-probe.js.map +0 -1
- package/dist/core/management-md-write-lock.d.ts.map +0 -1
- package/dist/core/management-md-write-lock.js.map +0 -1
- package/dist/core/management-md.d.ts.map +0 -1
- package/dist/core/management-md.js.map +0 -1
- package/dist/core/management-registry.d.ts.map +0 -1
- package/dist/core/management-registry.js.map +0 -1
- package/dist/core/management-telemetry.d.ts.map +0 -1
- package/dist/core/management-telemetry.js.map +0 -1
- package/dist/core/message-recorder.d.ts.map +0 -1
- package/dist/core/message-recorder.js.map +0 -1
- package/dist/core/metrics.d.ts.map +0 -1
- package/dist/core/metrics.js.map +0 -1
- package/dist/core/migration-backup.d.ts.map +0 -1
- package/dist/core/migration-backup.js.map +0 -1
- package/dist/core/output-language-policy.d.ts.map +0 -1
- package/dist/core/output-language-policy.js.map +0 -1
- package/dist/core/overview-write-lock.d.ts.map +0 -1
- package/dist/core/overview-write-lock.js.map +0 -1
- package/dist/core/path-compat.d.ts.map +0 -1
- package/dist/core/path-compat.js.map +0 -1
- package/dist/core/path-rewrite.d.ts.map +0 -1
- package/dist/core/path-rewrite.js.map +0 -1
- package/dist/core/policy-files.d.ts.map +0 -1
- package/dist/core/policy-files.js.map +0 -1
- package/dist/core/profile-questions/seed.d.ts.map +0 -1
- package/dist/core/profile-questions/seed.js.map +0 -1
- package/dist/core/profile-questions/slot-filled.d.ts.map +0 -1
- package/dist/core/profile-questions/slot-filled.js.map +0 -1
- package/dist/core/prompts.d.ts.map +0 -1
- package/dist/core/prompts.js.map +0 -1
- package/dist/core/quiet-hours-sync.d.ts.map +0 -1
- package/dist/core/quiet-hours-sync.js.map +0 -1
- package/dist/core/read-sensitive-token-manager.d.ts.map +0 -1
- package/dist/core/read-sensitive-token-manager.js.map +0 -1
- package/dist/core/recurrence.d.ts.map +0 -1
- package/dist/core/recurrence.js.map +0 -1
- package/dist/core/reinstall.d.ts.map +0 -1
- package/dist/core/reinstall.js.map +0 -1
- package/dist/core/release-assets.d.ts.map +0 -1
- package/dist/core/release-assets.js.map +0 -1
- package/dist/core/repository-management-docs.d.ts.map +0 -1
- package/dist/core/repository-management-docs.js.map +0 -1
- package/dist/core/retention.d.ts.map +0 -1
- package/dist/core/retention.js.map +0 -1
- package/dist/core/review-context.d.ts.map +0 -1
- package/dist/core/review-context.js.map +0 -1
- package/dist/core/roadmap-horizon.d.ts.map +0 -1
- package/dist/core/roadmap-horizon.js.map +0 -1
- package/dist/core/roadmap-ids.d.ts.map +0 -1
- package/dist/core/roadmap-ids.js.map +0 -1
- package/dist/core/roadmap-merge.d.ts +0 -7
- package/dist/core/roadmap-merge.d.ts.map +0 -1
- package/dist/core/roadmap-merge.js +0 -187
- package/dist/core/roadmap-merge.js.map +0 -1
- package/dist/core/roadmap-refresh-triggers.d.ts.map +0 -1
- package/dist/core/roadmap-refresh-triggers.js.map +0 -1
- package/dist/core/roadmap-truncate.d.ts.map +0 -1
- package/dist/core/roadmap-truncate.js.map +0 -1
- package/dist/core/roadmap-validate.d.ts.map +0 -1
- package/dist/core/roadmap-validate.js.map +0 -1
- package/dist/core/roadmap-write-lock.d.ts.map +0 -1
- package/dist/core/roadmap-write-lock.js.map +0 -1
- package/dist/core/routine-acquisition-plan.d.ts.map +0 -1
- package/dist/core/routine-acquisition-plan.js.map +0 -1
- package/dist/core/routine-fetch-window-retry.d.ts.map +0 -1
- package/dist/core/routine-fetch-window-retry.js.map +0 -1
- package/dist/core/routine-fetch-window-runner.d.ts.map +0 -1
- package/dist/core/routine-fetch-window-runner.js.map +0 -1
- package/dist/core/routine-windows.d.ts.map +0 -1
- package/dist/core/routine-windows.js.map +0 -1
- package/dist/core/schedule-insert-helper.d.ts.map +0 -1
- package/dist/core/schedule-insert-helper.js.map +0 -1
- package/dist/core/schedule-maintenance.d.ts.map +0 -1
- package/dist/core/schedule-maintenance.js.map +0 -1
- package/dist/core/scheduler.d.ts.map +0 -1
- package/dist/core/scheduler.js.map +0 -1
- package/dist/core/semaphore.d.ts.map +0 -1
- package/dist/core/semaphore.js.map +0 -1
- package/dist/core/session-gate.d.ts.map +0 -1
- package/dist/core/session-gate.js.map +0 -1
- package/dist/core/session-manager.d.ts.map +0 -1
- package/dist/core/session-manager.js.map +0 -1
- package/dist/core/signal-detector.d.ts.map +0 -1
- package/dist/core/signal-detector.js.map +0 -1
- package/dist/core/skeleton.d.ts.map +0 -1
- package/dist/core/skeleton.js.map +0 -1
- package/dist/core/skill-curation/apply-proposal.d.ts.map +0 -1
- package/dist/core/skill-curation/apply-proposal.js.map +0 -1
- package/dist/core/skill-curation/auto-revert.d.ts.map +0 -1
- package/dist/core/skill-curation/auto-revert.js.map +0 -1
- package/dist/core/skill-curation/classify-diff.d.ts.map +0 -1
- package/dist/core/skill-curation/classify-diff.js.map +0 -1
- package/dist/core/skill-curation/declarations.d.ts.map +0 -1
- package/dist/core/skill-curation/declarations.js.map +0 -1
- package/dist/core/skill-curation/knowledge-map.d.ts.map +0 -1
- package/dist/core/skill-curation/knowledge-map.js.map +0 -1
- package/dist/core/skill-curation/orphan-overlay.d.ts.map +0 -1
- package/dist/core/skill-curation/orphan-overlay.js.map +0 -1
- package/dist/core/skill-curation/overlay-store.d.ts.map +0 -1
- package/dist/core/skill-curation/overlay-store.js.map +0 -1
- package/dist/core/skill-curation/render/convention-notes.d.ts.map +0 -1
- package/dist/core/skill-curation/render/convention-notes.js.map +0 -1
- package/dist/core/skill-curation/render/cross-references.d.ts.map +0 -1
- package/dist/core/skill-curation/render/cross-references.js.map +0 -1
- package/dist/core/skill-curation/render/frontmatter-schema.d.ts.map +0 -1
- package/dist/core/skill-curation/render/frontmatter-schema.js.map +0 -1
- package/dist/core/skill-curation/render/index.d.ts.map +0 -1
- package/dist/core/skill-curation/render/index.js.map +0 -1
- package/dist/core/skill-curation/render/knowledge-layout.d.ts.map +0 -1
- package/dist/core/skill-curation/render/knowledge-layout.js.map +0 -1
- package/dist/core/skill-curation/render/routing-table.d.ts.map +0 -1
- package/dist/core/skill-curation/render/routing-table.js.map +0 -1
- package/dist/core/skill-curation/render/search-recipes.d.ts.map +0 -1
- package/dist/core/skill-curation/render/search-recipes.js.map +0 -1
- package/dist/core/skill-curation/run-token.d.ts.map +0 -1
- package/dist/core/skill-curation/run-token.js.map +0 -1
- package/dist/core/skill-curation/signals.d.ts.map +0 -1
- package/dist/core/skill-curation/signals.js.map +0 -1
- package/dist/core/skill-curation/smoke-test.d.ts.map +0 -1
- package/dist/core/skill-curation/smoke-test.js.map +0 -1
- package/dist/core/skill-curation/splicer.d.ts.map +0 -1
- package/dist/core/skill-curation/splicer.js.map +0 -1
- package/dist/core/skill-curation/workdir.d.ts.map +0 -1
- package/dist/core/skill-curation/workdir.js.map +0 -1
- package/dist/core/skill-source-paths.d.ts.map +0 -1
- package/dist/core/skill-source-paths.js.map +0 -1
- package/dist/core/skills-compiler.d.ts.map +0 -1
- package/dist/core/skills-compiler.js.map +0 -1
- package/dist/core/skills-manifest.d.ts.map +0 -1
- package/dist/core/skills-manifest.js.map +0 -1
- package/dist/core/system-reset.d.ts.map +0 -1
- package/dist/core/system-reset.js.map +0 -1
- package/dist/core/template-store.d.ts.map +0 -1
- package/dist/core/template-store.js.map +0 -1
- package/dist/core/template-versions.d.ts.map +0 -1
- package/dist/core/template-versions.js.map +0 -1
- package/dist/core/today-agent-plan.d.ts.map +0 -1
- package/dist/core/today-agent-plan.js.map +0 -1
- package/dist/core/today-direct-writer.d.ts.map +0 -1
- package/dist/core/today-direct-writer.js.map +0 -1
- package/dist/core/today-write-lock.d.ts.map +0 -1
- package/dist/core/today-write-lock.js.map +0 -1
- package/dist/core/trigger-dispatch.d.ts.map +0 -1
- package/dist/core/trigger-dispatch.js.map +0 -1
- package/dist/core/trigger-evaluator.d.ts.map +0 -1
- package/dist/core/trigger-evaluator.js.map +0 -1
- package/dist/core/wiki/approval-queue.d.ts.map +0 -1
- package/dist/core/wiki/approval-queue.js.map +0 -1
- package/dist/core/wiki/bridge.d.ts.map +0 -1
- package/dist/core/wiki/bridge.js.map +0 -1
- package/dist/core/wiki/compile-lock.d.ts.map +0 -1
- package/dist/core/wiki/compile-lock.js.map +0 -1
- package/dist/core/wiki/compile-preview.d.ts.map +0 -1
- package/dist/core/wiki/compile-preview.js.map +0 -1
- package/dist/core/wiki/cost-estimate.d.ts.map +0 -1
- package/dist/core/wiki/cost-estimate.js.map +0 -1
- package/dist/core/wiki/dispatcher.d.ts.map +0 -1
- package/dist/core/wiki/dispatcher.js.map +0 -1
- package/dist/core/wiki/git-precompile.d.ts.map +0 -1
- package/dist/core/wiki/git-precompile.js.map +0 -1
- package/dist/core/wiki/import-migrate.d.ts.map +0 -1
- package/dist/core/wiki/import-migrate.js.map +0 -1
- package/dist/core/wiki/import-probe.d.ts.map +0 -1
- package/dist/core/wiki/import-probe.js.map +0 -1
- package/dist/core/wiki/index-cache.d.ts.map +0 -1
- package/dist/core/wiki/index-cache.js.map +0 -1
- package/dist/core/wiki/multi-url-dispatch.d.ts.map +0 -1
- package/dist/core/wiki/multi-url-dispatch.js.map +0 -1
- package/dist/core/wiki/wiki-fts.d.ts.map +0 -1
- package/dist/core/wiki/wiki-fts.js.map +0 -1
- package/dist/core/wiki/workspaces.d.ts.map +0 -1
- package/dist/core/wiki/workspaces.js.map +0 -1
- package/dist/core/wiki/write-strategy.d.ts.map +0 -1
- package/dist/core/wiki/write-strategy.js.map +0 -1
- package/dist/core/workdir.d.ts.map +0 -1
- package/dist/core/workdir.js.map +0 -1
- package/dist/db/automation-triggers.d.ts.map +0 -1
- package/dist/db/automation-triggers.js.map +0 -1
- package/dist/db/client.d.ts.map +0 -1
- package/dist/db/client.js.map +0 -1
- package/dist/db/entities-store.d.ts.map +0 -1
- package/dist/db/entities-store.js.map +0 -1
- package/dist/db/hourly-check-signals.d.ts.map +0 -1
- package/dist/db/hourly-check-signals.js.map +0 -1
- package/dist/db/integration-probe-store.d.ts.map +0 -1
- package/dist/db/integration-probe-store.js.map +0 -1
- package/dist/db/integrations-store.d.ts.map +0 -1
- package/dist/db/integrations-store.js.map +0 -1
- package/dist/db/managed-tasks-store.d.ts.map +0 -1
- package/dist/db/managed-tasks-store.js.map +0 -1
- package/dist/db/management-parse-failures-store.d.ts.map +0 -1
- package/dist/db/management-parse-failures-store.js.map +0 -1
- package/dist/db/observations.d.ts.map +0 -1
- package/dist/db/observations.js.map +0 -1
- package/dist/db/recurring-schedules.d.ts.map +0 -1
- package/dist/db/recurring-schedules.js.map +0 -1
- package/dist/db/repositories-store.d.ts.map +0 -1
- package/dist/db/repositories-store.js.map +0 -1
- package/dist/db/runtime-state.d.ts.map +0 -1
- package/dist/db/runtime-state.js.map +0 -1
- package/dist/db/schema.d.ts.map +0 -1
- package/dist/db/schema.js.map +0 -1
- package/dist/db/sot-bindings-store.d.ts.map +0 -1
- package/dist/db/sot-bindings-store.js.map +0 -1
- package/dist/db/test-schemas.d.ts +0 -23
- package/dist/db/test-schemas.d.ts.map +0 -1
- package/dist/db/test-schemas.js +0 -111
- package/dist/db/test-schemas.js.map +0 -1
- package/dist/db/voice-transcripts-store.d.ts.map +0 -1
- package/dist/db/voice-transcripts-store.js.map +0 -1
- package/dist/db/wiki-store.d.ts.map +0 -1
- package/dist/db/wiki-store.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js.map +0 -1
- package/dist/log-buffer.d.ts.map +0 -1
- package/dist/log-buffer.js.map +0 -1
- package/dist/logging.d.ts.map +0 -1
- package/dist/logging.js.map +0 -1
- package/dist/management-rules.d.ts.map +0 -1
- package/dist/management-rules.js.map +0 -1
- package/dist/messaging/constants.d.ts.map +0 -1
- package/dist/messaging/constants.js.map +0 -1
- package/dist/messaging/magic-phrase.d.ts.map +0 -1
- package/dist/messaging/magic-phrase.js.map +0 -1
- package/dist/messaging/owner-channels.d.ts.map +0 -1
- package/dist/messaging/owner-channels.js.map +0 -1
- package/dist/messaging/setup-welcome-dm.d.ts.map +0 -1
- package/dist/messaging/setup-welcome-dm.js.map +0 -1
- package/dist/messaging/url-extract.d.ts.map +0 -1
- package/dist/messaging/url-extract.js.map +0 -1
- package/dist/observers/calendar-poller.d.ts.map +0 -1
- package/dist/observers/calendar-poller.js.map +0 -1
- package/dist/observers/context-index-reconciler-observer.d.ts.map +0 -1
- package/dist/observers/context-index-reconciler-observer.js.map +0 -1
- package/dist/observers/delegated-probe-observer.d.ts.map +0 -1
- package/dist/observers/delegated-probe-observer.js.map +0 -1
- package/dist/observers/delegated-sync-worker.d.ts.map +0 -1
- package/dist/observers/delegated-sync-worker.js.map +0 -1
- package/dist/observers/entity-mirror-observer.d.ts.map +0 -1
- package/dist/observers/entity-mirror-observer.js.map +0 -1
- package/dist/observers/git-delegated-cron.d.ts.map +0 -1
- package/dist/observers/git-delegated-cron.js.map +0 -1
- package/dist/observers/git-event-classifier.d.ts.map +0 -1
- package/dist/observers/git-event-classifier.js.map +0 -1
- package/dist/observers/git-watcher.d.ts.map +0 -1
- package/dist/observers/git-watcher.js.map +0 -1
- package/dist/observers/github-poller-classifier.d.ts.map +0 -1
- package/dist/observers/github-poller-classifier.js.map +0 -1
- package/dist/observers/github-poller.d.ts.map +0 -1
- package/dist/observers/github-poller.js.map +0 -1
- package/dist/observers/imminent-event-scheduler.d.ts.map +0 -1
- package/dist/observers/imminent-event-scheduler.js.map +0 -1
- package/dist/observers/mail-poller.d.ts.map +0 -1
- package/dist/observers/mail-poller.js.map +0 -1
- package/dist/observers/mail-reconciliation.d.ts.map +0 -1
- package/dist/observers/mail-reconciliation.js.map +0 -1
- package/dist/observers/manager.d.ts.map +0 -1
- package/dist/observers/manager.js.map +0 -1
- package/dist/observers/notion-poller.d.ts.map +0 -1
- package/dist/observers/notion-poller.js.map +0 -1
- package/dist/observers/observation-summarizer/index.d.ts.map +0 -1
- package/dist/observers/observation-summarizer/index.js.map +0 -1
- package/dist/observers/observation-summarizer/pre-filter.d.ts.map +0 -1
- package/dist/observers/observation-summarizer/pre-filter.js.map +0 -1
- package/dist/observers/observation-summarizer/response-parser.d.ts.map +0 -1
- package/dist/observers/observation-summarizer/response-parser.js.map +0 -1
- package/dist/observers/observation-summarizer/summarizer-client.d.ts.map +0 -1
- package/dist/observers/observation-summarizer/summarizer-client.js.map +0 -1
- package/dist/observers/observation-summarizer/summarizer-prompts.d.ts.map +0 -1
- package/dist/observers/observation-summarizer/summarizer-prompts.js.map +0 -1
- package/dist/observers/observation-summarizer/worker.d.ts.map +0 -1
- package/dist/observers/observation-summarizer/worker.js.map +0 -1
- package/dist/observers/obsidian-watcher.d.ts.map +0 -1
- package/dist/observers/obsidian-watcher.js.map +0 -1
- package/dist/observers/primary-vault-watcher.d.ts.map +0 -1
- package/dist/observers/primary-vault-watcher.js.map +0 -1
- package/dist/observers/repository-management-cron.d.ts.map +0 -1
- package/dist/observers/repository-management-cron.js.map +0 -1
- package/dist/observers/skill-curation-walker.d.ts.map +0 -1
- package/dist/observers/skill-curation-walker.js.map +0 -1
- package/dist/safety/absolute-block-audit.d.ts.map +0 -1
- package/dist/safety/absolute-block-audit.js.map +0 -1
- package/dist/safety/agent-write-tracker.d.ts.map +0 -1
- package/dist/safety/agent-write-tracker.js.map +0 -1
- package/dist/safety/always-disallowed.d.ts.map +0 -1
- package/dist/safety/always-disallowed.js.map +0 -1
- package/dist/safety/audit.d.ts.map +0 -1
- package/dist/safety/audit.js.map +0 -1
- package/dist/safety/integration-write-tracker.d.ts.map +0 -1
- package/dist/safety/integration-write-tracker.js.map +0 -1
- package/dist/safety/risk-classifier.d.ts.map +0 -1
- package/dist/safety/risk-classifier.js.map +0 -1
- package/dist/scheduler/hourly-check-gate.d.ts.map +0 -1
- package/dist/scheduler/hourly-check-gate.js.map +0 -1
- package/dist/secrets/backend-api-key-env.d.ts.map +0 -1
- package/dist/secrets/backend-api-key-env.js.map +0 -1
- package/dist/secrets/codex-home-materializer.d.ts.map +0 -1
- package/dist/secrets/codex-home-materializer.js.map +0 -1
- package/dist/secrets/encrypted-blob-store.d.ts.map +0 -1
- package/dist/secrets/encrypted-blob-store.js.map +0 -1
- package/dist/secrets/platform-secret-store.d.ts.map +0 -1
- package/dist/secrets/platform-secret-store.js.map +0 -1
- package/dist/secrets/redaction.d.ts.map +0 -1
- package/dist/secrets/redaction.js.map +0 -1
- package/dist/secrets/secret-broker.d.ts.map +0 -1
- package/dist/secrets/secret-broker.js.map +0 -1
- package/dist/secrets/secret-names.d.ts.map +0 -1
- package/dist/secrets/secret-names.js.map +0 -1
- package/dist/secrets/secret-store.d.ts.map +0 -1
- package/dist/secrets/secret-store.js.map +0 -1
- package/dist/secrets/types.d.ts.map +0 -1
- package/dist/secrets/types.js.map +0 -1
- package/dist/services/apple-calendar/caldav-client.d.ts.map +0 -1
- package/dist/services/apple-calendar/caldav-client.js.map +0 -1
- package/dist/services/apple-calendar/caldav-codec.d.ts.map +0 -1
- package/dist/services/apple-calendar/caldav-codec.js.map +0 -1
- package/dist/services/apple-calendar/index.d.ts.map +0 -1
- package/dist/services/apple-calendar/index.js.map +0 -1
- package/dist/services/apple-calendar/service.d.ts.map +0 -1
- package/dist/services/apple-calendar/service.js.map +0 -1
- package/dist/services/apple-calendar/types.d.ts.map +0 -1
- package/dist/services/apple-calendar/types.js.map +0 -1
- package/dist/services/attachments/hardlink.d.ts.map +0 -1
- package/dist/services/attachments/hardlink.js.map +0 -1
- package/dist/services/attachments/sanitize.d.ts.map +0 -1
- package/dist/services/attachments/sanitize.js.map +0 -1
- package/dist/services/attachments/store.d.ts.map +0 -1
- package/dist/services/attachments/store.js.map +0 -1
- package/dist/services/calendar/outlook/graph-calendar-client.d.ts.map +0 -1
- package/dist/services/calendar/outlook/graph-calendar-client.js.map +0 -1
- package/dist/services/calendar.d.ts.map +0 -1
- package/dist/services/calendar.js.map +0 -1
- package/dist/services/delegated-backend-invoker.d.ts.map +0 -1
- package/dist/services/delegated-backend-invoker.js.map +0 -1
- package/dist/services/delegated-invoker-audit.d.ts.map +0 -1
- package/dist/services/delegated-invoker-audit.js.map +0 -1
- package/dist/services/delegated-invoker-cache-hits.d.ts.map +0 -1
- package/dist/services/delegated-invoker-cache-hits.js.map +0 -1
- package/dist/services/delegated-invoker-janitors.d.ts.map +0 -1
- package/dist/services/delegated-invoker-janitors.js.map +0 -1
- package/dist/services/delegated-invoker-utils.d.ts.map +0 -1
- package/dist/services/delegated-invoker-utils.js.map +0 -1
- package/dist/services/delegated-proxy-config.d.ts.map +0 -1
- package/dist/services/delegated-proxy-config.js.map +0 -1
- package/dist/services/delegated-task-result-cache.d.ts.map +0 -1
- package/dist/services/delegated-task-result-cache.js.map +0 -1
- package/dist/services/delegated-task-runtime.d.ts.map +0 -1
- package/dist/services/delegated-task-runtime.js.map +0 -1
- package/dist/services/delegated-task-session-pool.d.ts.map +0 -1
- package/dist/services/delegated-task-session-pool.js.map +0 -1
- package/dist/services/delegated-tool-runtime.d.ts.map +0 -1
- package/dist/services/delegated-tool-runtime.js.map +0 -1
- package/dist/services/fts5.d.ts.map +0 -1
- package/dist/services/fts5.js.map +0 -1
- package/dist/services/git-account-registry.d.ts.map +0 -1
- package/dist/services/git-account-registry.js.map +0 -1
- package/dist/services/github.d.ts.map +0 -1
- package/dist/services/github.js.map +0 -1
- package/dist/services/gmail-classifier.d.ts.map +0 -1
- package/dist/services/gmail-classifier.js.map +0 -1
- package/dist/services/gmail.d.ts.map +0 -1
- package/dist/services/gmail.js.map +0 -1
- package/dist/services/google-auth.d.ts.map +0 -1
- package/dist/services/google-auth.js.map +0 -1
- package/dist/services/google-maps.d.ts +0 -35
- package/dist/services/google-maps.d.ts.map +0 -1
- package/dist/services/google-maps.js +0 -82
- package/dist/services/google-maps.js.map +0 -1
- package/dist/services/integrations/extract-write-item-id.d.ts.map +0 -1
- package/dist/services/integrations/extract-write-item-id.js.map +0 -1
- package/dist/services/integrations/reconcile.d.ts.map +0 -1
- package/dist/services/integrations/reconcile.js.map +0 -1
- package/dist/services/integrations/snapshot-partitions.d.ts.map +0 -1
- package/dist/services/integrations/snapshot-partitions.js.map +0 -1
- package/dist/services/journal/render.d.ts.map +0 -1
- package/dist/services/journal/render.js.map +0 -1
- package/dist/services/journal/writer.d.ts.map +0 -1
- package/dist/services/journal/writer.js.map +0 -1
- package/dist/services/mail/account-registry.d.ts.map +0 -1
- package/dist/services/mail/account-registry.js.map +0 -1
- package/dist/services/mail/gmail/auth-failure-classifier.d.ts.map +0 -1
- package/dist/services/mail/gmail/auth-failure-classifier.js.map +0 -1
- package/dist/services/mail/gmail/gmail-provider.d.ts.map +0 -1
- package/dist/services/mail/gmail/gmail-provider.js.map +0 -1
- package/dist/services/mail/gmail/legacy-row.d.ts.map +0 -1
- package/dist/services/mail/gmail/legacy-row.js.map +0 -1
- package/dist/services/mail/gmail/poll-cursor.d.ts.map +0 -1
- package/dist/services/mail/gmail/poll-cursor.js.map +0 -1
- package/dist/services/mail/html-to-plaintext.d.ts.map +0 -1
- package/dist/services/mail/html-to-plaintext.js.map +0 -1
- package/dist/services/mail/imap/app-password.d.ts.map +0 -1
- package/dist/services/mail/imap/app-password.js.map +0 -1
- package/dist/services/mail/imap/auth-failure-classifier.d.ts.map +0 -1
- package/dist/services/mail/imap/auth-failure-classifier.js.map +0 -1
- package/dist/services/mail/imap/capabilities.d.ts.map +0 -1
- package/dist/services/mail/imap/capabilities.js.map +0 -1
- package/dist/services/mail/imap/client.d.ts.map +0 -1
- package/dist/services/mail/imap/client.js.map +0 -1
- package/dist/services/mail/imap/cursor.d.ts.map +0 -1
- package/dist/services/mail/imap/cursor.js.map +0 -1
- package/dist/services/mail/imap/folder-resolver.d.ts.map +0 -1
- package/dist/services/mail/imap/folder-resolver.js.map +0 -1
- package/dist/services/mail/imap/icloud-provider.d.ts.map +0 -1
- package/dist/services/mail/imap/icloud-provider.js.map +0 -1
- package/dist/services/mail/imap/imap-provider-base.d.ts.map +0 -1
- package/dist/services/mail/imap/imap-provider-base.js.map +0 -1
- package/dist/services/mail/imap/query-translator.d.ts.map +0 -1
- package/dist/services/mail/imap/query-translator.js.map +0 -1
- package/dist/services/mail/imap/reconcile-planner.d.ts.map +0 -1
- package/dist/services/mail/imap/reconcile-planner.js.map +0 -1
- package/dist/services/mail/imap/reply-mime.d.ts.map +0 -1
- package/dist/services/mail/imap/reply-mime.js.map +0 -1
- package/dist/services/mail/imap/yahoo-provider.d.ts.map +0 -1
- package/dist/services/mail/imap/yahoo-provider.js.map +0 -1
- package/dist/services/mail/mail-search.d.ts.map +0 -1
- package/dist/services/mail/mail-search.js.map +0 -1
- package/dist/services/mail/outlook/auth-failure-classifier.d.ts.map +0 -1
- package/dist/services/mail/outlook/auth-failure-classifier.js.map +0 -1
- package/dist/services/mail/outlook/client-config.d.ts.map +0 -1
- package/dist/services/mail/outlook/client-config.js.map +0 -1
- package/dist/services/mail/outlook/delta-cursor.d.ts.map +0 -1
- package/dist/services/mail/outlook/delta-cursor.js.map +0 -1
- package/dist/services/mail/outlook/graph-client.d.ts.map +0 -1
- package/dist/services/mail/outlook/graph-client.js.map +0 -1
- package/dist/services/mail/outlook/msal-app-factory.d.ts.map +0 -1
- package/dist/services/mail/outlook/msal-app-factory.js.map +0 -1
- package/dist/services/mail/outlook/msal-cache-plugin.d.ts.map +0 -1
- package/dist/services/mail/outlook/msal-cache-plugin.js.map +0 -1
- package/dist/services/mail/outlook/oauth-device-code.d.ts.map +0 -1
- package/dist/services/mail/outlook/oauth-device-code.js.map +0 -1
- package/dist/services/mail/outlook/oauth-loopback.d.ts.map +0 -1
- package/dist/services/mail/outlook/oauth-loopback.js.map +0 -1
- package/dist/services/mail/outlook/outlook-provider.d.ts.map +0 -1
- package/dist/services/mail/outlook/outlook-provider.js.map +0 -1
- package/dist/services/mail/outlook/query-translator.d.ts.map +0 -1
- package/dist/services/mail/outlook/query-translator.js.map +0 -1
- package/dist/services/mail/provider.d.ts.map +0 -1
- package/dist/services/mail/provider.js.map +0 -1
- package/dist/services/mail/query-utils.d.ts.map +0 -1
- package/dist/services/mail/query-utils.js.map +0 -1
- package/dist/services/mail-classifier.d.ts.map +0 -1
- package/dist/services/mail-classifier.js.map +0 -1
- package/dist/services/mail-ingestion.d.ts.map +0 -1
- package/dist/services/mail-ingestion.js.map +0 -1
- package/dist/services/mcp/auto-probe.d.ts.map +0 -1
- package/dist/services/mcp/auto-probe.js.map +0 -1
- package/dist/services/mcp/generators/claude.d.ts.map +0 -1
- package/dist/services/mcp/generators/claude.js.map +0 -1
- package/dist/services/mcp/generators/codex.d.ts.map +0 -1
- package/dist/services/mcp/generators/codex.js.map +0 -1
- package/dist/services/mcp/generators/gemini.d.ts.map +0 -1
- package/dist/services/mcp/generators/gemini.js.map +0 -1
- package/dist/services/mcp/generators/index.d.ts.map +0 -1
- package/dist/services/mcp/generators/index.js.map +0 -1
- package/dist/services/mcp/generators/types.d.ts.map +0 -1
- package/dist/services/mcp/generators/types.js.map +0 -1
- package/dist/services/mcp/probe.d.ts.map +0 -1
- package/dist/services/mcp/probe.js.map +0 -1
- package/dist/services/mcp/registry.d.ts.map +0 -1
- package/dist/services/mcp/registry.js.map +0 -1
- package/dist/services/mcp/risk.d.ts.map +0 -1
- package/dist/services/mcp/risk.js.map +0 -1
- package/dist/services/mcp/session-materializer.d.ts.map +0 -1
- package/dist/services/mcp/session-materializer.js.map +0 -1
- package/dist/services/mcp/tool-audit.d.ts.map +0 -1
- package/dist/services/mcp/tool-audit.js.map +0 -1
- package/dist/services/mcp/types.d.ts.map +0 -1
- package/dist/services/mcp/types.js.map +0 -1
- package/dist/services/notion.d.ts.map +0 -1
- package/dist/services/notion.js.map +0 -1
- package/dist/services/obsidian.d.ts.map +0 -1
- package/dist/services/obsidian.js.map +0 -1
- package/dist/services/service-registry.d.ts.map +0 -1
- package/dist/services/service-registry.js.map +0 -1
- package/dist/services/voice/transcriber-impl.d.ts.map +0 -1
- package/dist/services/voice/transcriber-impl.js.map +0 -1
- package/dist/services/voice/transcriber.d.ts.map +0 -1
- package/dist/services/voice/transcriber.js.map +0 -1
- package/dist/settings/runtime-settings.d.ts.map +0 -1
- package/dist/settings/runtime-settings.js.map +0 -1
- package/dist/settings/settings-store.d.ts.map +0 -1
- package/dist/settings/settings-store.js.map +0 -1
|
@@ -1,211 +1,38 @@
|
|
|
1
|
-
import { cpSync, existsSync, mkdirSync,
|
|
2
|
-
import { dirname, join
|
|
3
|
-
import { APP_NAME,
|
|
4
|
-
import { getProfileForEvent, getProfileForProcess,
|
|
1
|
+
import { cpSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { APP_NAME, INTEGRATION_KEYS, applyIntegrationModeFilter, selectSkillVariantFile, substituteBrandTokens, } from "@aitne/shared";
|
|
4
|
+
import { composeSkillSet, getProfileForEvent, getProfileForProcess, resolveSkillManifest, resolveSkillManifestForProcess, } from "./skills-manifest.js";
|
|
5
5
|
import { applyCharacterBlockRewrite, buildCharacterBlock } from "./character-block.js";
|
|
6
|
-
import { applyOutputLanguagePointerRewrite
|
|
6
|
+
import { applyOutputLanguagePointerRewrite } from "./output-language-policy.js";
|
|
7
7
|
import { createLogger } from "../logging.js";
|
|
8
|
+
import { loadFetchWindowSystemPrompt } from "./fetch-window-prompt-loader.js";
|
|
8
9
|
import { substituteIntegrationRoutingTables } from "./management-md.js";
|
|
9
10
|
import { loadCurationDeclaration, } from "./skill-curation/declarations.js";
|
|
10
|
-
import {
|
|
11
|
+
import { resolveBuiltinSkillDir } from "./skill-source-paths.js";
|
|
11
12
|
import { OverlayStore } from "./skill-curation/overlay-store.js";
|
|
12
13
|
import { hasCurationAnchors, spliceCurationAnchors, } from "./skill-curation/splicer.js";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
* cases. We pin the integration's mode locally as `delegated` with the
|
|
36
|
-
* supplied `delegatedBackend` so the resolvers see the post-PATCH state.
|
|
37
|
-
*
|
|
38
|
-
* Consumed by:
|
|
39
|
-
* - `SkillsCompiler.validateDelegatedVariants()` — startup aggregate
|
|
40
|
-
* - `PATCH /api/integrations/:key` — pre-commit hard reject (§4.7)
|
|
41
|
-
* - `buildIntegrationHealthMap` — surfaces the list in
|
|
42
|
-
* `/health.integrationModes.<key>.variantsMissing`
|
|
43
|
-
*/
|
|
44
|
-
/**
|
|
45
|
-
* Walk a materialized session subdirectory and rewrite every `.md` file with
|
|
46
|
-
* `{APP_NAME}` tokens resolved. Called immediately after `cpSync(src, dest, …)`
|
|
47
|
-
* so the verbatim copy from `agent-assets/` becomes brand-substituted before
|
|
48
|
-
* any downstream transform (renderReferenceIncludes, applyIntegrationModeFilter,
|
|
49
|
-
* tool-deny filter) reads it. Idempotent — running it twice is a no-op.
|
|
50
|
-
*/
|
|
51
|
-
function substituteBrandTokensInDir(dir) {
|
|
52
|
-
if (!existsSync(dir))
|
|
53
|
-
return;
|
|
54
|
-
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
55
|
-
const full = join(dir, entry.name);
|
|
56
|
-
if (entry.isDirectory()) {
|
|
57
|
-
substituteBrandTokensInDir(full);
|
|
58
|
-
}
|
|
59
|
-
else if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
60
|
-
const original = readFileSync(full, "utf-8");
|
|
61
|
-
const substituted = substituteBrandTokens(original);
|
|
62
|
-
if (substituted !== original) {
|
|
63
|
-
writeFileSync(full, substituted, "utf-8");
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
let wikiWorkspaceTokenResolver = null;
|
|
69
|
-
export function setWikiWorkspaceTokenResolver(resolver) {
|
|
70
|
-
wikiWorkspaceTokenResolver = resolver;
|
|
71
|
-
}
|
|
72
|
-
function wikiTokensFor(processKey, workspaceName) {
|
|
73
|
-
if (!processKey?.startsWith("wiki."))
|
|
74
|
-
return null;
|
|
75
|
-
return wikiWorkspaceTokenResolver?.(processKey, workspaceName) ?? null;
|
|
76
|
-
}
|
|
77
|
-
function substituteWikiWorkspaceTokens(content, processKey, workspaceName) {
|
|
78
|
-
const tokens = wikiTokensFor(processKey, workspaceName);
|
|
79
|
-
if (!tokens)
|
|
80
|
-
return content;
|
|
81
|
-
return content
|
|
82
|
-
.replaceAll("{{vault_path}}", tokens.vault_path)
|
|
83
|
-
.replaceAll("{{language}}", tokens.language)
|
|
84
|
-
.replaceAll("{{workspace_name}}", tokens.workspace_name)
|
|
85
|
-
.replaceAll("{{schema_version}}", tokens.schema_version);
|
|
86
|
-
}
|
|
87
|
-
function substituteWikiWorkspaceTokensInDir(dir, processKey, workspaceName) {
|
|
88
|
-
if (!existsSync(dir))
|
|
89
|
-
return;
|
|
90
|
-
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
91
|
-
const full = join(dir, entry.name);
|
|
92
|
-
if (entry.isDirectory()) {
|
|
93
|
-
substituteWikiWorkspaceTokensInDir(full, processKey, workspaceName);
|
|
94
|
-
}
|
|
95
|
-
else if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
96
|
-
const original = readFileSync(full, "utf-8");
|
|
97
|
-
const substituted = substituteWikiWorkspaceTokens(original, processKey, workspaceName);
|
|
98
|
-
if (substituted !== original) {
|
|
99
|
-
writeFileSync(full, substituted, "utf-8");
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
export function missingDelegatedVariants(workspaceDir, integrationKey, delegatedBackend) {
|
|
105
|
-
return missingVariantsForMode(workspaceDir, integrationKey, {
|
|
106
|
-
mode: "delegated",
|
|
107
|
-
delegatedBackend,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* INTEGRATION_NATIVE_MODE_DESIGN.md §7.4 / §8.5 — symmetric to
|
|
112
|
-
* {@link missingDelegatedVariants} for the new `native` mode. Used by
|
|
113
|
-
* the PATCH route's pre-commit hard reject and (Phase B2 onwards) by
|
|
114
|
-
* `skills-manifest.test.ts` to assert variant existence on every
|
|
115
|
-
* supported `(integration, native backend)` pair before a release.
|
|
116
|
-
*/
|
|
117
|
-
export function missingNativeVariants(workspaceDir, integrationKey, nativeBackend) {
|
|
118
|
-
return missingVariantsForMode(workspaceDir, integrationKey, {
|
|
119
|
-
mode: "native",
|
|
120
|
-
nativeBackend,
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
function missingVariantsForMode(workspaceDir, integrationKey, pinnedState) {
|
|
124
|
-
const descriptor = INTEGRATION_DESCRIPTORS[integrationKey];
|
|
125
|
-
const skillsRoot = join(workspaceDir, "agent-assets", "skills");
|
|
126
|
-
const taskFlowsRoot = join(workspaceDir, "agent-assets", "task-flows");
|
|
127
|
-
// Synthetic post-PATCH state. The resolvers consume only `mode` and
|
|
128
|
-
// the backend binding; `lastChangedAt` is required by the type but not
|
|
129
|
-
// read here.
|
|
130
|
-
const synthetic = pinnedState.mode === "delegated"
|
|
131
|
-
? {
|
|
132
|
-
mode: "delegated",
|
|
133
|
-
delegatedBackend: pinnedState.delegatedBackend,
|
|
134
|
-
deniedTools: [],
|
|
135
|
-
lastChangedAt: "1970-01-01T00:00:00.000Z",
|
|
136
|
-
}
|
|
137
|
-
: {
|
|
138
|
-
mode: "native",
|
|
139
|
-
nativeBackend: pinnedState.nativeBackend,
|
|
140
|
-
deniedTools: [],
|
|
141
|
-
lastChangedAt: "1970-01-01T00:00:00.000Z",
|
|
142
|
-
};
|
|
143
|
-
const integrationsState = {
|
|
144
|
-
[integrationKey]: synthetic,
|
|
145
|
-
};
|
|
146
|
-
// For `native` mode the variant is only required when the session
|
|
147
|
-
// backend is the bound native backend (other session backends would
|
|
148
|
-
// resolve to `disabled` per §5.4.1's safety degrade, so they don't need
|
|
149
|
-
// a SKILL.native.<other>.md file). For `delegated` we keep the original
|
|
150
|
-
// walk over every session backend since cross-backend variants ARE
|
|
151
|
-
// required.
|
|
152
|
-
const sessionBackendsToCheck = pinnedState.mode === "native"
|
|
153
|
-
? [pinnedState.nativeBackend]
|
|
154
|
-
: BACKEND_IDS;
|
|
155
|
-
// De-dup with sets — the same file path can come up under multiple
|
|
156
|
-
// session backends when descriptors share a slug.
|
|
157
|
-
const skills = new Set();
|
|
158
|
-
for (const slug of descriptor.skillsTouched) {
|
|
159
|
-
for (const sessionBackend of sessionBackendsToCheck) {
|
|
160
|
-
const variantFile = selectSkillVariantFile(slug, sessionBackend, integrationsState);
|
|
161
|
-
// null → same-backend delegated drops body; no file required.
|
|
162
|
-
// SKILL.md → resolver fell back to direct/disabled; no variant file.
|
|
163
|
-
if (variantFile === null || variantFile === "SKILL.md")
|
|
164
|
-
continue;
|
|
165
|
-
const variantPath = join(resolveBuiltinSkillDir(skillsRoot, slug), variantFile);
|
|
166
|
-
if (!existsSync(variantPath))
|
|
167
|
-
skills.add(variantPath);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
const taskFlows = new Set();
|
|
171
|
-
for (const flowKey of descriptor.taskFlowsTouched) {
|
|
172
|
-
for (const sessionBackend of sessionBackendsToCheck) {
|
|
173
|
-
const suffix = selectTaskFlowVariantSuffix(flowKey, sessionBackend, integrationsState);
|
|
174
|
-
if (suffix === "direct")
|
|
175
|
-
continue;
|
|
176
|
-
const variantPath = join(taskFlowsRoot, `${flowKey}.${suffix}.md`);
|
|
177
|
-
if (existsSync(variantPath))
|
|
178
|
-
continue;
|
|
179
|
-
// INTEGRATION_NATIVE_MODE_DESIGN.md §8.1 — when a task-flow lists a
|
|
180
|
-
// mode-aware integration in `taskFlowsTouched` but doesn't ship a
|
|
181
|
-
// per-mode variant file, the loader (`prompts.ts:loadFlowVariant`)
|
|
182
|
-
// gracefully falls back to the canonical base file. Treat that as
|
|
183
|
-
// a valid coverage path so the `missingDelegatedVariants` /
|
|
184
|
-
// `missingNativeVariants` PATCH-time check doesn't reject a flip
|
|
185
|
-
// for which the loader's base-file fallback is the designed answer.
|
|
186
|
-
//
|
|
187
|
-
// Concrete example: `message.received.dm` is listed in gmail /
|
|
188
|
-
// google_calendar / notion `taskFlowsTouched` so the native DM
|
|
189
|
-
// variant resolves; the matching delegated variant
|
|
190
|
-
// (`message.received.dm.delegated.<backend>.md`) is intentionally
|
|
191
|
-
// absent. The base `message.received.dm.md` carries inline
|
|
192
|
-
// `<!-- mode:<predicate>:<key> -->` markers for the Calendar block
|
|
193
|
-
// and routes other integrations through their per-skill bodies. The
|
|
194
|
-
// loader correctly falls back, so the missing variant is not a real
|
|
195
|
-
// configuration gap.
|
|
196
|
-
//
|
|
197
|
-
// Skill variants remain strict — a missing `SKILL.<mode>.<backend>.md`
|
|
198
|
-
// leaves the agent with no per-mode body for the integration, which
|
|
199
|
-
// IS a real gap. The strict check above (no leniency branch) handles
|
|
200
|
-
// that.
|
|
201
|
-
const basePath = join(taskFlowsRoot, `${flowKey}.md`);
|
|
202
|
-
if (!existsSync(basePath)) {
|
|
203
|
-
taskFlows.add(variantPath);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
return { skills: [...skills], taskFlows: [...taskFlows] };
|
|
208
|
-
}
|
|
14
|
+
import { isValidSkillSlug, missingDelegatedVariants, } from "./skills-compiler-variants.js";
|
|
15
|
+
import { EMPTY_MAIL_ACCOUNTS_MD, pruneStaleBuiltinSkillDirs, readTreeFiles, renderMailAccountsMd, substituteBrandTokensInDir, substituteWikiWorkspaceTokens, substituteWikiWorkspaceTokensInDir, } from "./skills-compiler-tree.js";
|
|
16
|
+
import { loadSkillIndexPreamble, renderPartialIncludes, renderReferenceIncludes, renderSkillIndexBlock, stripUnconfiguredServices, } from "./skills-compiler-skill-index.js";
|
|
17
|
+
import { applyAllDeniedToolsForSkill, buildSameBackendDenyBlock } from "./skills-compiler-denied-tools.js";
|
|
18
|
+
import { cliInstructionFileName, cliSkillsDirName, prependCodexReadSensitiveBanner, renderCliInstructionFile, renderDaemonApiUsageSection, } from "./skills-compiler-cli-renderer.js";
|
|
19
|
+
// Module logger for the class's own warn callsites (invalid-slug warning
|
|
20
|
+
// in writeSkillsDir, skill-curation declaration / anchor warnings in
|
|
21
|
+
// spliceCurationAnchorsInSkill). Not exported — sibling modules carry
|
|
22
|
+
// their own peer loggers; the test suite spies on those.
|
|
23
|
+
const logger = createLogger("skills-compiler");
|
|
24
|
+
// docs/design/appendices/fetch-window-cost-reduction.md Phase 1.5 — single shared constant
|
|
25
|
+
// for the pre-pass process key. Typed as `ProcessKey` (not the inferred
|
|
26
|
+
// string literal) so a rename in `@aitne/shared/process-key.ts` lights up
|
|
27
|
+
// here rather than silently dead-branching the slim materializer.
|
|
28
|
+
const FETCH_WINDOW_PROCESS_KEY = "routine.fetch_window";
|
|
29
|
+
// Single skill kept in the slim fetch_window CLI session: the
|
|
30
|
+
// `observations` SKILL.md is the POST contract for
|
|
31
|
+
// `/api/observations/batch` and the fetcher's only structural assertion.
|
|
32
|
+
// The other skills the wide path inlines (`mail`, `notion`,
|
|
33
|
+
// `external-services`, `attach`) are already restated by the integration
|
|
34
|
+
// partial the runner inlines into the user prompt.
|
|
35
|
+
const FETCH_WINDOW_SLIM_SKILL = "observations";
|
|
209
36
|
/**
|
|
210
37
|
* Materializes backend-specific instruction files for session workdirs
|
|
211
38
|
* by reading directly from the source tree (agent-assets/agent-profiles/ and
|
|
@@ -259,7 +86,7 @@ export class SkillsCompiler {
|
|
|
259
86
|
/**
|
|
260
87
|
* P22 — skill-curation overlay context. When set, the materializer runs an
|
|
261
88
|
* extra pass that resolves `<!-- CURATION:<kind> id="<id>" -->` anchors in
|
|
262
|
-
* each skill's SKILL.md against `<dataDir>/
|
|
89
|
+
* each skill's SKILL.md against `<dataDir>/skill-curation-overlays/<slug>/<id>.json`
|
|
263
90
|
* (overlay) or `agent-assets/skills/<slug>/seeds/<id>.seed.json` (seed).
|
|
264
91
|
*
|
|
265
92
|
* Optional and default-OFF — daemon code is expected to call
|
|
@@ -289,10 +116,10 @@ export class SkillsCompiler {
|
|
|
289
116
|
* §4.7 "Missing-variant policy": if any paths come back, the caller
|
|
290
117
|
* should refuse to enter delegated mode or at least log a loud warning.
|
|
291
118
|
* The per-integration variant for the hypothetical PATCH path lives in
|
|
292
|
-
*
|
|
293
|
-
* aggregates across every currently-delegated integration using
|
|
294
|
-
* declared `delegatedBackend` (not the session backend — see the
|
|
295
|
-
* docstring for the rationale).
|
|
119
|
+
* `missingDelegatedVariants` in `./skills-compiler-variants.js`; this
|
|
120
|
+
* method aggregates across every currently-delegated integration using
|
|
121
|
+
* its declared `delegatedBackend` (not the session backend — see the
|
|
122
|
+
* helper docstring for the rationale).
|
|
296
123
|
*/
|
|
297
124
|
validateDelegatedVariants() {
|
|
298
125
|
const skills = [];
|
|
@@ -357,18 +184,36 @@ export class SkillsCompiler {
|
|
|
357
184
|
const profileName = params.processKey
|
|
358
185
|
? getProfileForProcess(params.processKey)
|
|
359
186
|
: getProfileForEvent(params.eventType);
|
|
187
|
+
// `evening-review-slimdown.md` §2.1 — route through the predicate-aware
|
|
188
|
+
// wrapper so the evening rulebook gate (and any future per-event
|
|
189
|
+
// predicate) is consulted exactly once per session, at materialization
|
|
190
|
+
// time. The wrapper passes non-conditional events through verbatim, so
|
|
191
|
+
// every other process key keeps its old behaviour.
|
|
192
|
+
const manifestOpts = {
|
|
193
|
+
...(params.contextDir ? { contextDir: params.contextDir } : {}),
|
|
194
|
+
...(params.db !== undefined ? { db: params.db } : {}),
|
|
195
|
+
...(params.messageText !== undefined ? { messageText: params.messageText } : {}),
|
|
196
|
+
};
|
|
197
|
+
const hasManifestOpts = Object.keys(manifestOpts).length > 0;
|
|
360
198
|
const manifestSkills = params.processKey
|
|
361
|
-
?
|
|
362
|
-
:
|
|
199
|
+
? resolveSkillManifestForProcess(params.processKey, hasManifestOpts ? manifestOpts : undefined)
|
|
200
|
+
: resolveSkillManifest(params.eventType, hasManifestOpts ? manifestOpts : undefined);
|
|
363
201
|
// Custom bang command override: when the dispatcher passes a slug array
|
|
364
202
|
// we use it verbatim, ignoring the manifest. Empty array is allowed and
|
|
365
203
|
// means "no skills." `null` keeps manifest behavior — the override is a
|
|
366
204
|
// partial replacement so a future caller can pass just `profileBody`
|
|
367
205
|
// without affecting skill selection.
|
|
368
|
-
const
|
|
206
|
+
const baseSkills = params.override?.skillSlugs !== null
|
|
369
207
|
&& params.override?.skillSlugs !== undefined
|
|
370
208
|
? [...params.override.skillSlugs]
|
|
371
209
|
: manifestSkills;
|
|
210
|
+
// AGENT_DEFINITIONS_DESIGN.md §4.2 — fold the firing Agent's `tools.skills`
|
|
211
|
+
// onto the resolved bundle (union, or replace when `skillsReplace`). A
|
|
212
|
+
// no-op when `extraSkills` is empty/absent, so every non-Agent site keeps
|
|
213
|
+
// its prior set verbatim. Applied AFTER the bang-command override so the
|
|
214
|
+
// two surfaces never silently fight; in practice they never co-occur (an
|
|
215
|
+
// Agent firing carries no `override`).
|
|
216
|
+
const skills = composeSkillSet(baseSkills, params.extraSkills, params.skillsReplace ?? false);
|
|
372
217
|
const profileBodyOverride = params.override?.profileBody ?? null;
|
|
373
218
|
// Always materialize the `mail` skill when the manifest asks for it —
|
|
374
219
|
// even if the current account list is empty. The skill is inert when
|
|
@@ -378,13 +223,32 @@ export class SkillsCompiler {
|
|
|
378
223
|
// adds their first account mid-session (0→N transition). Filtering
|
|
379
224
|
// here would leave the skill dir absent forever since refresh only
|
|
380
225
|
// writes into existing dirs.
|
|
226
|
+
// docs/design/appendices/opencode-backend.md §6.5 / Phase 4 — opencode discovers
|
|
227
|
+
// skills via cwd auto-discovery from `.claude/skills/` (V2) AND uses
|
|
228
|
+
// a per-process agent file at `.opencode/agent/<slug>.md` (V5,
|
|
229
|
+
// singular `agent/`). Routing through `materializeCliSession` would
|
|
230
|
+
// inline skill bodies into AGENTS.md, which we explicitly do NOT
|
|
231
|
+
// want for opencode (skills are auto-discovered by the `skill` tool).
|
|
381
232
|
if (params.backendId === "claude") {
|
|
382
233
|
this.materializeClaudeSession(params.sessionDir, profileName, skills, profileBodyOverride, params.processKey ?? params.eventType, params.wikiWorkspaceName);
|
|
383
234
|
}
|
|
235
|
+
else if (params.backendId === "opencode") {
|
|
236
|
+
this.materializeOpencodeSession(params.sessionDir, profileName, skills, profileBodyOverride, params.processKey ?? params.eventType, params.wikiWorkspaceName);
|
|
237
|
+
}
|
|
384
238
|
else {
|
|
385
239
|
this.materializeCliSession(params.sessionDir, profileName, skills, params.backendId, params.processKey ?? params.eventType, profileBodyOverride, params.wikiWorkspaceName);
|
|
386
240
|
}
|
|
387
|
-
|
|
241
|
+
// docs/design/appendices/fetch-window-cost-reduction.md Phase 1.5 — the slim
|
|
242
|
+
// CLI materializer drops every manifest skill except `observations`.
|
|
243
|
+
// The Claude path is wide for fetch_window today (Phase 1 swaps only
|
|
244
|
+
// the system prompt, not the workdir layout). Report what was
|
|
245
|
+
// actually written so log lines / callers see truth, not the
|
|
246
|
+
// manifest's pre-narrow list.
|
|
247
|
+
const effectiveSkills = params.backendId !== "claude"
|
|
248
|
+
&& (params.processKey ?? params.eventType) === FETCH_WINDOW_PROCESS_KEY
|
|
249
|
+
? [FETCH_WINDOW_SLIM_SKILL]
|
|
250
|
+
: skills;
|
|
251
|
+
return { profile: profileName, skills: effectiveSkills };
|
|
388
252
|
}
|
|
389
253
|
/** Read raw profile .md without safety injection. */
|
|
390
254
|
readProfile(profileName) {
|
|
@@ -492,8 +356,39 @@ export class SkillsCompiler {
|
|
|
492
356
|
mkdirSync(dirname(join(sessionDir, "CLAUDE.md")), { recursive: true });
|
|
493
357
|
writeFileSync(join(sessionDir, "CLAUDE.md"), profileContent, "utf-8");
|
|
494
358
|
}
|
|
359
|
+
this.writeSkillsDir(sessionDir, join(".claude", "skills"), skillSlugs, "claude", processKey, wikiWorkspaceName);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* docs/design/appendices/skills-unification.md Phase 1 — per-backend skill-dir writer.
|
|
363
|
+
*
|
|
364
|
+
* Writes `<sessionDir>/<destSkillsRootRelative>/<slug>/SKILL.md` for each
|
|
365
|
+
* slug, applying the full per-skill transformation pipeline:
|
|
366
|
+
* variant resolution → brand tokens → partial / reference inlining →
|
|
367
|
+
* service strip → mode filter → deny filter → curation splice → mail
|
|
368
|
+
* `accounts.md`. The destination directory is the only thing that varies
|
|
369
|
+
* across backends:
|
|
370
|
+
*
|
|
371
|
+
* - Claude → `.claude/skills`
|
|
372
|
+
* - OpenCode → `.opencode/skills`
|
|
373
|
+
* - Codex → `.codex/skills`
|
|
374
|
+
* - Gemini → `.gemini/skills`
|
|
375
|
+
*
|
|
376
|
+
* For Codex sessions, this method ALSO prepends a one-line read-sensitive
|
|
377
|
+
* banner to each materialised SKILL.md whose body references a read-
|
|
378
|
+
* sensitive `/api/*` endpoint (those endpoints 401 on Codex because the
|
|
379
|
+
* Codex backend does not hold the read-sensitive token). The banner
|
|
380
|
+
* points the agent at the `## Read-sensitive endpoints are UNAVAILABLE`
|
|
381
|
+
* section already rendered into `AGENTS.md`.
|
|
382
|
+
*
|
|
383
|
+
* Returns the list of slugs that ended up on disk (slugs whose variant
|
|
384
|
+
* resolved to `null` for same-backend native MCP and slugs whose source
|
|
385
|
+
* SKILL.md was missing are excluded). Callers use this list to render
|
|
386
|
+
* the `<skill-index>` block from a stable, post-materialisation source.
|
|
387
|
+
*/
|
|
388
|
+
writeSkillsDir(sessionDir, destSkillsRootRelative, skillSlugs, sessionBackend, processKey, wikiWorkspaceName) {
|
|
389
|
+
const materialised = [];
|
|
495
390
|
const skillsRoot = this.getSourceSkillsRoot();
|
|
496
|
-
const destSkillsRoot = join(sessionDir,
|
|
391
|
+
const destSkillsRoot = join(sessionDir, destSkillsRootRelative);
|
|
497
392
|
mkdirSync(destSkillsRoot, { recursive: true });
|
|
498
393
|
// Re-materialize cleanup: a previous turn (especially one with a wider
|
|
499
394
|
// skill set or a different custom-command override) may have left
|
|
@@ -504,11 +399,19 @@ export class SkillsCompiler {
|
|
|
504
399
|
// `syncAllUserSkills` is the authoritative writer for that subset.
|
|
505
400
|
pruneStaleBuiltinSkillDirs(destSkillsRoot, skillsRoot, skillSlugs);
|
|
506
401
|
for (const skillSlug of skillSlugs) {
|
|
402
|
+
// docs/design/appendices/opencode-backend.md §10 D6 / Phase 4 — slug must match
|
|
403
|
+
// opencode's skill-name lint regex `[a-z0-9-]{1,64}` because a
|
|
404
|
+
// future opencode release may reject names that fall outside it.
|
|
405
|
+
// Warn at materialisation; do not strip the skill (every Aitne
|
|
406
|
+
// built-in slug already conforms — see audit acceptance criterion).
|
|
407
|
+
if (!isValidSkillSlug(skillSlug)) {
|
|
408
|
+
logger.warn({ skillSlug, expected: "[a-z0-9-]{1,64}" }, "skills_compiler.skill_slug_invalid");
|
|
409
|
+
}
|
|
507
410
|
const src = resolveBuiltinSkillDir(skillsRoot, skillSlug);
|
|
508
411
|
if (!existsSync(join(src, "SKILL.md"))) {
|
|
509
412
|
continue;
|
|
510
413
|
}
|
|
511
|
-
const variantFile = this.resolveSkillVariantFile(skillSlug,
|
|
414
|
+
const variantFile = this.resolveSkillVariantFile(skillSlug, sessionBackend);
|
|
512
415
|
const destDir = join(destSkillsRoot, skillSlug);
|
|
513
416
|
// DELEGATED-MODE-V2-DESIGN.md §4.1.2 — same-backend native MCP. The
|
|
514
417
|
// agent already has the connector's tools in its inventory; a skill
|
|
@@ -545,10 +448,10 @@ export class SkillsCompiler {
|
|
|
545
448
|
//
|
|
546
449
|
// Order: refs BEFORE strip-services. The CLI paths
|
|
547
450
|
// (`materializeCliSession` inline + directory copy) both run refs
|
|
548
|
-
// before strip; aligning
|
|
451
|
+
// before strip; aligning here preserves the byte-equivalence
|
|
549
452
|
// contract (plan §3.1) for the case where a reference file carries
|
|
550
453
|
// `<!-- service:* -->` markers — strip-first would leak those on
|
|
551
|
-
// Claude while CLI scrubs them.
|
|
454
|
+
// Claude/OpenCode while CLI scrubs them.
|
|
552
455
|
const destSkillMdForRefs = join(destDir, "SKILL.md");
|
|
553
456
|
if (existsSync(destSkillMdForRefs)) {
|
|
554
457
|
const raw = readFileSync(destSkillMdForRefs, "utf-8");
|
|
@@ -578,18 +481,20 @@ export class SkillsCompiler {
|
|
|
578
481
|
const destSkillMdForMode = join(destDir, "SKILL.md");
|
|
579
482
|
if (existsSync(destSkillMdForMode)) {
|
|
580
483
|
const raw = readFileSync(destSkillMdForMode, "utf-8");
|
|
581
|
-
const filtered = applyIntegrationModeFilter(raw, this.integrations,
|
|
484
|
+
const filtered = applyIntegrationModeFilter(raw, this.integrations, sessionBackend);
|
|
582
485
|
if (filtered !== raw) {
|
|
583
486
|
writeFileSync(destSkillMdForMode, filtered, "utf-8");
|
|
584
487
|
}
|
|
585
488
|
}
|
|
586
489
|
// §7.7 — apply tool-deny policy AFTER partial includes and
|
|
587
|
-
// service-section stripping. For Claude this rewrites the
|
|
588
|
-
// `allowed-tools` frontmatter; the
|
|
490
|
+
// service-section stripping. For the Claude SDK this rewrites the
|
|
491
|
+
// `allowed-tools` frontmatter (hard); for opencode the rewrite is
|
|
492
|
+
// a soft-enforcement prose body addition that the runtime config
|
|
493
|
+
// doubles up via `permission.bash.deny` rules.
|
|
589
494
|
const destSkillMdForDeny = join(destDir, "SKILL.md");
|
|
590
495
|
if (existsSync(destSkillMdForDeny)) {
|
|
591
496
|
const raw = readFileSync(destSkillMdForDeny, "utf-8");
|
|
592
|
-
const filtered = applyAllDeniedToolsForSkill(raw, skillSlug,
|
|
497
|
+
const filtered = applyAllDeniedToolsForSkill(raw, skillSlug, sessionBackend, this.integrations);
|
|
593
498
|
if (filtered !== raw) {
|
|
594
499
|
writeFileSync(destSkillMdForDeny, filtered, "utf-8");
|
|
595
500
|
}
|
|
@@ -608,7 +513,141 @@ export class SkillsCompiler {
|
|
|
608
513
|
? renderMailAccountsMd(this.mailAccounts)
|
|
609
514
|
: EMPTY_MAIL_ACCOUNTS_MD, "utf-8");
|
|
610
515
|
}
|
|
516
|
+
// Phase 1 §"Codex read-sensitive banner inheritance" — prepend the
|
|
517
|
+
// 3-line caveat banner to every Codex skill body that touches a
|
|
518
|
+
// read-sensitive `/api/*` endpoint. Skipped for the other three
|
|
519
|
+
// backends: Claude / Gemini hold the read-sensitive token; OpenCode
|
|
520
|
+
// surfaces those routes via its own credential flow.
|
|
521
|
+
if (sessionBackend === "codex") {
|
|
522
|
+
prependCodexReadSensitiveBanner(join(destDir, "SKILL.md"));
|
|
523
|
+
}
|
|
524
|
+
materialised.push(skillSlug);
|
|
611
525
|
}
|
|
526
|
+
return materialised;
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* docs/design/appendices/opencode-backend.md §6.5 / Phase 4 — opencode-specific
|
|
530
|
+
* materialisation.
|
|
531
|
+
*
|
|
532
|
+
* Three on-disk artefacts are written per session:
|
|
533
|
+
* 1. `AGENTS.md` (cwd-auto-discovered by opencode per V1) — same
|
|
534
|
+
* shape as `materializeCliSession` produces for Codex EXCEPT
|
|
535
|
+
* skill bodies are NOT inlined (skills auto-discover from
|
|
536
|
+
* `.claude/skills/` via opencode's `skill` tool — V2). Includes
|
|
537
|
+
* safety, character, behavioral rules, daemon-API, integration
|
|
538
|
+
* routing tables, and the runtime profile body.
|
|
539
|
+
* 2. `.opencode/agent/<profile-slug>.md` (singular `agent/` per V5)
|
|
540
|
+
* — the per-process agent persona with V5-correct frontmatter
|
|
541
|
+
* (`mode: primary`, `permission` block keyed only on
|
|
542
|
+
* `edit/bash/webfetch/doom_loop/external_directory` — NO `read`
|
|
543
|
+
* key per V5 contract). Body is the profile body; opencode
|
|
544
|
+
* invokes this via `session.prompt({ body: { agent: <slug> } })`
|
|
545
|
+
* so the per-agent permission overrides the server-level
|
|
546
|
+
* defaults.
|
|
547
|
+
* 3. `.opencode/skills/<slug>/` via `writeSkillsDir` — every
|
|
548
|
+
* manifest skill becomes a discoverable SKILL.md tree opencode
|
|
549
|
+
* reads on `skill` tool activation. `.claude/skills/` is
|
|
550
|
+
* intentionally NOT written: docs/design/appendices/skills-unification.md Phase 1
|
|
551
|
+
* flipped opencode from V2 path (b) (`.claude/skills/`
|
|
552
|
+
* redundancy-avoiding alias) to V2 path (c) (`.opencode/skills/`)
|
|
553
|
+
* so each backend lives under its own brand-aligned namespace.
|
|
554
|
+
*
|
|
555
|
+
* The dispatcher passes `agent: <slug>` (where `<slug>` matches the
|
|
556
|
+
* profile filename without `.md`) on every `session.prompt` call so
|
|
557
|
+
* the right agent file is selected.
|
|
558
|
+
*/
|
|
559
|
+
materializeOpencodeSession(sessionDir, profileName, skillSlugs, profileBodyOverride, processKey, wikiWorkspaceName) {
|
|
560
|
+
// ── 1. AGENTS.md — cwd context (no skill inlining) ──
|
|
561
|
+
let profileContent = profileBodyOverride !== null
|
|
562
|
+
? profileBodyOverride.trim()
|
|
563
|
+
: (this.readProfile(profileName) ?? "");
|
|
564
|
+
profileContent = substituteWikiWorkspaceTokens(profileContent, processKey, wikiWorkspaceName);
|
|
565
|
+
const safetyContent = this.readSafetyPreamble();
|
|
566
|
+
const characterBlock = buildCharacterBlock(this.character);
|
|
567
|
+
// DELEGATED-MODE-V2-DESIGN.md §4.3.3-§4.3.4 — same-backend deny prose.
|
|
568
|
+
// Opencode's MCP-tool deny is server-level only (§5.6 v1: drop the
|
|
569
|
+
// server from config to deny). The prose duplicates intent so the
|
|
570
|
+
// agent doesn't waste tokens drafting calls that will be dropped.
|
|
571
|
+
const sameBackendDenyBlock = buildSameBackendDenyBlock(this.integrations, "opencode");
|
|
572
|
+
const rawInstruction = renderCliInstructionFile({
|
|
573
|
+
backendId: "opencode",
|
|
574
|
+
processKey,
|
|
575
|
+
profileName,
|
|
576
|
+
profileContent,
|
|
577
|
+
safetyContent,
|
|
578
|
+
characterBlock,
|
|
579
|
+
skillSlugs,
|
|
580
|
+
// R3 — OpenCode never gets a `<skill-index>` block. The cwd
|
|
581
|
+
// auto-discovery loader is the source of truth; emitting an index
|
|
582
|
+
// here would inject a second listing the runtime ignores and the
|
|
583
|
+
// agent could mistake for canonical. The `## Skills` slug manifest
|
|
584
|
+
// (no path, no inlined bodies) survives as a turn-scope hint.
|
|
585
|
+
skillPreamble: null,
|
|
586
|
+
skillIndexBlock: null,
|
|
587
|
+
sameBackendDenyBlock,
|
|
588
|
+
});
|
|
589
|
+
const instruction = substituteWikiWorkspaceTokens(substituteIntegrationRoutingTables(rawInstruction, this.integrations), processKey, wikiWorkspaceName);
|
|
590
|
+
writeFileSync(join(sessionDir, "AGENTS.md"), instruction, "utf-8");
|
|
591
|
+
// ── 2. .opencode/agent/<profileName>.md — V5 frontmatter wrapper ──
|
|
592
|
+
this.writeOpencodeAgentFile(sessionDir, profileName, profileContent, safetyContent, characterBlock);
|
|
593
|
+
// ── 3. .opencode/skills/ — auto-discovered by opencode 1.14+ ──
|
|
594
|
+
// docs/design/appendices/skills-unification.md Phase 1 — opencode 1.14+ auto-discovers
|
|
595
|
+
// skills from `.opencode/skills/<slug>/SKILL.md` (V2 path (c),
|
|
596
|
+
// empirically verified). The earlier path (b) (`.claude/skills/`)
|
|
597
|
+
// worked as a redundancy-avoiding alias; per-backend brand-aligned
|
|
598
|
+
// naming now picks (c) explicitly.
|
|
599
|
+
this.writeSkillsDir(sessionDir, join(".opencode", "skills"), skillSlugs, "opencode", processKey, wikiWorkspaceName);
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* docs/design/appendices/opencode-backend.md §6.5 / V5 — write the per-process agent
|
|
603
|
+
* profile to `.opencode/agent/<slug>.md` (singular `agent/`; the
|
|
604
|
+
* plural form does NOT register per V5).
|
|
605
|
+
*
|
|
606
|
+
* Frontmatter shape (V5-correct keys only):
|
|
607
|
+
* - `mode: primary` — opencode's primary-agent mode; subagent is
|
|
608
|
+
* reserved for the disabled `task` tool path.
|
|
609
|
+
* - NO `permission` block here — the server-level
|
|
610
|
+
* `OpencodeRuntimeConfig.permission` is the per-session truth and
|
|
611
|
+
* is stricter for narrow agents (delegated runs use a separate
|
|
612
|
+
* `delegated-<callId>` agent file with its own tight permission).
|
|
613
|
+
* Emitting `permission: {}` here would NOT widen anything (the
|
|
614
|
+
* server-level deny still wins), but the absence keeps the
|
|
615
|
+
* frontmatter a manifest and avoids drift between two seats.
|
|
616
|
+
* - NO `model` field — opencode falls back to `OPENCODE_CONFIG_CONTENT.model`
|
|
617
|
+
* (set per-session by `OpencodeCore`'s runtime-config builder),
|
|
618
|
+
* and the dispatcher additionally overrides per `session.prompt`
|
|
619
|
+
* body. Pinning here would either drift from the per-call value
|
|
620
|
+
* or duplicate it.
|
|
621
|
+
*
|
|
622
|
+
* Body composition mirrors AGENTS.md (safety + character + profile)
|
|
623
|
+
* so an `agent: <slug>` invocation that REPLACES opencode's default
|
|
624
|
+
* cwd context still gets safety/character rules — V5 confirmed the
|
|
625
|
+
* agent body becomes the system prompt for that turn.
|
|
626
|
+
*/
|
|
627
|
+
writeOpencodeAgentFile(sessionDir, profileName, profileBody, safetyContent, characterBlock) {
|
|
628
|
+
const agentDir = join(sessionDir, ".opencode", "agent");
|
|
629
|
+
mkdirSync(agentDir, { recursive: true });
|
|
630
|
+
// Strip a description from the profile body's first paragraph for
|
|
631
|
+
// the frontmatter `description` field. Opencode displays this in
|
|
632
|
+
// its agent picker; we use a stable phrasing so re-renders produce
|
|
633
|
+
// identical bytes.
|
|
634
|
+
const description = `${APP_NAME} ${profileName} — per-process persona`;
|
|
635
|
+
const frontmatter = [
|
|
636
|
+
"---",
|
|
637
|
+
`description: ${description}`,
|
|
638
|
+
"mode: primary",
|
|
639
|
+
"---",
|
|
640
|
+
"",
|
|
641
|
+
].join("\n");
|
|
642
|
+
const bodySections = [];
|
|
643
|
+
if (safetyContent)
|
|
644
|
+
bodySections.push(safetyContent);
|
|
645
|
+
if (characterBlock)
|
|
646
|
+
bodySections.push(characterBlock);
|
|
647
|
+
if (profileBody.trim())
|
|
648
|
+
bodySections.push(profileBody.trim());
|
|
649
|
+
const body = bodySections.join("\n\n");
|
|
650
|
+
writeFileSync(join(agentDir, `${profileName}.md`), `${frontmatter}${body}\n`, "utf-8");
|
|
612
651
|
}
|
|
613
652
|
/**
|
|
614
653
|
* P22 §1.5 — splice CURATION anchors in a single skill's materialized
|
|
@@ -648,64 +687,121 @@ export class SkillsCompiler {
|
|
|
648
687
|
writeFileSync(skillMdPath, result.body, "utf-8");
|
|
649
688
|
}
|
|
650
689
|
}
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
690
|
+
/**
|
|
691
|
+
* docs/design/appendices/skills-unification.md Phase 1 item 15 — the slim path does NOT
|
|
692
|
+
* emit a `<skill-index>` block or the skill-discovery preamble. The
|
|
693
|
+
* fetch_window system prompt is a self-contained operational contract
|
|
694
|
+
* (one-window-one-curl, no sub-tasks, exactly-one JSON-on-stdout) and
|
|
695
|
+
* the only skill copied (`observations`) is referenced inline by the
|
|
696
|
+
* runner-emitted user prompt. Adding the index would mis-signal the
|
|
697
|
+
* fetcher to scan for skills before executing the acquisition plan.
|
|
698
|
+
*
|
|
699
|
+
* docs/design/appendices/fetch-window-cost-reduction.md Phase 1.5 — slim instruction-file
|
|
700
|
+
* materializer for `routine.fetch_window` on Codex / Gemini CLI.
|
|
701
|
+
*
|
|
702
|
+
* Mirrors the Claude SDK's Phase 1 systemPrompt swap (the same
|
|
703
|
+
* `agent-assets/system-prompts/routine-fetch-window.md` template is the
|
|
704
|
+
* single source of truth): write the slim body verbatim as AGENTS.md /
|
|
705
|
+
* GEMINI.md and copy only the `observations` skill — the
|
|
706
|
+
* `/api/observations/batch` POST contract is the fetcher's sole
|
|
707
|
+
* structural assertion. The integration partial inlined by the runner
|
|
708
|
+
* (`routine-fetch-window-runner.ts:reassemblePrompt`) covers the
|
|
709
|
+
* per-attempt call shape, so `mail` / `notion` / `external-services` /
|
|
710
|
+
* `attach` skill bodies are deliberately omitted.
|
|
711
|
+
*
|
|
712
|
+
* No safety preamble / character / behavioral-rules / daemon-API
|
|
713
|
+
* sections — the slim template restates the only rules the fetcher
|
|
714
|
+
* needs (localhost-only curl, no sub-tasks, no context writes, no
|
|
715
|
+
* notify, JSON-on-stdout-and-exit). The destructive-action policy layer
|
|
716
|
+
* (absolute-block list, Codex sandbox, Gemini admin TOML) still applies
|
|
717
|
+
* unchanged at runtime.
|
|
718
|
+
*
|
|
719
|
+
* The `<mcp-servers>` section is appended downstream by
|
|
720
|
+
* `services/mcp/session-materializer.ts:appendMcpSection` exactly as on
|
|
721
|
+
* the wide path — Phase 3's allowlist filter, when it lands, will scope
|
|
722
|
+
* that section without further changes here.
|
|
723
|
+
*/
|
|
724
|
+
materializeFetchWindowCliSession(sessionDir, backendId) {
|
|
725
|
+
mkdirSync(sessionDir, { recursive: true });
|
|
726
|
+
const slim = loadFetchWindowSystemPrompt();
|
|
727
|
+
writeFileSync(join(sessionDir, cliInstructionFileName(backendId)), slim, "utf-8");
|
|
728
|
+
// Copy ONLY the `observations` skill dir. The wide path's prune step
|
|
729
|
+
// is replaced by an explicit single-slug list — `pruneStaleBuiltinSkillDirs`
|
|
730
|
+
// removes any other built-in skill dir that a prior re-materialization
|
|
731
|
+
// (e.g. a fallback-driven wide path on the same workdir) may have left.
|
|
732
|
+
const cliSkillsRoot = cliSkillsDirName(backendId);
|
|
733
|
+
if (cliSkillsRoot === null)
|
|
734
|
+
return; // Claude-only — fetch_window slim runs on Claude SDK natively.
|
|
659
735
|
const skillsRoot = this.getSourceSkillsRoot();
|
|
660
|
-
const
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
736
|
+
const destSkillsRoot = join(sessionDir, cliSkillsRoot, "skills");
|
|
737
|
+
mkdirSync(destSkillsRoot, { recursive: true });
|
|
738
|
+
pruneStaleBuiltinSkillDirs(destSkillsRoot, skillsRoot, [FETCH_WINDOW_SLIM_SKILL]);
|
|
739
|
+
const src = resolveBuiltinSkillDir(skillsRoot, FETCH_WINDOW_SLIM_SKILL);
|
|
740
|
+
const skillMdPath = join(src, "SKILL.md");
|
|
741
|
+
if (!existsSync(skillMdPath))
|
|
742
|
+
return;
|
|
743
|
+
const destDir = join(destSkillsRoot, FETCH_WINDOW_SLIM_SKILL);
|
|
744
|
+
cpSync(src, destDir, { recursive: true });
|
|
745
|
+
substituteBrandTokensInDir(destDir);
|
|
746
|
+
// No `substituteWikiWorkspaceTokensInDir` — fetch_window never touches
|
|
747
|
+
// wiki workspace state, and the resolver is a no-op for non-wiki
|
|
748
|
+
// process keys anyway.
|
|
749
|
+
let adapted = substituteBrandTokens(readFileSync(skillMdPath, "utf-8"));
|
|
750
|
+
// observations/SKILL.md ships no `{{> base }}` or `{{> ref:* }}`
|
|
751
|
+
// directives today, but run the resolvers anyway so a future curation
|
|
752
|
+
// edit cannot silently drop content. Idempotent on plain content.
|
|
753
|
+
adapted = substituteBrandTokens(renderPartialIncludes(adapted, join(src, "SKILL.base.md")));
|
|
754
|
+
adapted = substituteBrandTokens(renderReferenceIncludes(adapted, src));
|
|
755
|
+
// Mode-conditional filter — observations/SKILL.md carries
|
|
756
|
+
// `<!-- mode:<predicate>:notion -->` markers (lines 273-345 today)
|
|
757
|
+
// because the source / consume contract differs across `direct` /
|
|
758
|
+
// `delegated-same` / `delegated-cross` / `native` / `disabled`. The
|
|
759
|
+
// wide path applies this filter at `materializeCliSession`; the
|
|
760
|
+
// slim path must match so the agent doesn't get every mode's prose
|
|
761
|
+
// for every integration. Idempotent on bodies that lack markers.
|
|
762
|
+
adapted = applyIntegrationModeFilter(adapted, this.integrations, backendId);
|
|
763
|
+
// Tool-deny policy stays in force — even though the fetcher is fed a
|
|
764
|
+
// narrow allowlist, the soft-enforcement prose lands in the body
|
|
765
|
+
// BEFORE the CLI frontmatter strip so it's not lost.
|
|
766
|
+
adapted = applyAllDeniedToolsForSkill(adapted, FETCH_WINDOW_SLIM_SKILL, backendId, this.integrations);
|
|
767
|
+
// docs/design/appendices/skills-unification.md Phase 1 §R6 — frontmatter stays intact
|
|
768
|
+
// across all backends. `adaptSkillForCli` is gone; the source body's
|
|
769
|
+
// YAML preamble flows through verbatim.
|
|
770
|
+
writeFileSync(join(destDir, "SKILL.md"), adapted, "utf-8");
|
|
771
|
+
this.spliceCurationAnchorsInSkill(destDir, FETCH_WINDOW_SLIM_SKILL);
|
|
772
|
+
}
|
|
773
|
+
materializeCliSession(sessionDir, profileName, skillSlugs, backendId, processKey, profileBodyOverride, wikiWorkspaceName) {
|
|
774
|
+
// docs/design/appendices/fetch-window-cost-reduction.md Phase 1.5 — divert
|
|
775
|
+
// `routine.fetch_window` to a slim materializer that mirrors the
|
|
776
|
+
// Claude SDK's Phase 1 systemPrompt swap. Custom bang commands cannot
|
|
777
|
+
// reach this branch (they bind to `messaging.custom_command`), so
|
|
778
|
+
// `profileBodyOverride` is intentionally NOT forwarded.
|
|
779
|
+
if (processKey === FETCH_WINDOW_PROCESS_KEY) {
|
|
780
|
+
this.materializeFetchWindowCliSession(sessionDir, backendId);
|
|
781
|
+
return;
|
|
782
|
+
}
|
|
783
|
+
// docs/design/appendices/skills-unification.md Phase 1 — directory-based skill delivery.
|
|
784
|
+
// The Codex / Gemini CLIs have no native cwd auto-discovery today, so
|
|
785
|
+
// the instruction file (AGENTS.md / GEMINI.md) carries a compact
|
|
786
|
+
// `<skill-index>` block and the agent `Read`s each `SKILL.md` from the
|
|
787
|
+
// per-backend dir on demand. Skill bodies are NEVER inlined into the
|
|
788
|
+
// instruction file.
|
|
789
|
+
//
|
|
790
|
+
// OpenCode reaches `materializeOpencodeSession` instead, so this method
|
|
791
|
+
// only handles Codex and Gemini. The defensive `null` check below
|
|
792
|
+
// protects future backends that might temporarily route through here
|
|
793
|
+
// before getting their own materialiser.
|
|
794
|
+
const cliSkillsDir = cliSkillsDirName(backendId);
|
|
795
|
+
if (cliSkillsDir === null) {
|
|
796
|
+
throw new Error(`materializeCliSession: no skills directory mapped for backend "${backendId}"`);
|
|
703
797
|
}
|
|
798
|
+
const destSkillsRootRelative = join(cliSkillsDir, "skills");
|
|
799
|
+
const materialisedSlugs = this.writeSkillsDir(sessionDir, destSkillsRootRelative, skillSlugs, backendId, processKey, wikiWorkspaceName);
|
|
704
800
|
// Read profile and safety separately so renderCliInstructionFile can
|
|
705
801
|
// place safety at the top level for prominence (instead of burying it
|
|
706
802
|
// inside the profile section). For custom bang commands the dispatcher
|
|
707
803
|
// passes a `profileBodyOverride` that replaces the persona body; the
|
|
708
|
-
// safety + character +
|
|
804
|
+
// safety + character + skill index sections still wrap around it via
|
|
709
805
|
// `renderCliInstructionFile`.
|
|
710
806
|
let profileContent = profileBodyOverride !== null
|
|
711
807
|
? profileBodyOverride.trim()
|
|
@@ -721,6 +817,18 @@ export class SkillsCompiler {
|
|
|
721
817
|
// prose duplicates intent so the agent doesn't waste tokens drafting
|
|
722
818
|
// calls that will be denied at the policy layer.
|
|
723
819
|
const sameBackendDenyBlock = buildSameBackendDenyBlock(this.integrations, backendId);
|
|
820
|
+
// docs/design/appendices/skills-unification.md Phase 1 §"Skill preamble" — render the
|
|
821
|
+
// universal preamble + `<skill-index>` block. The index is derived
|
|
822
|
+
// from the **materialised** SKILL.md frontmatter on disk so curation /
|
|
823
|
+
// mode-filter / deny passes are reflected. Reading post-materialisation
|
|
824
|
+
// also keeps user-authored slugs synced by `syncAllUserSkills` (which
|
|
825
|
+
// runs LATER from the workdir layer) out of the index — those land in
|
|
826
|
+
// the same dir but are appended after this render. The
|
|
827
|
+
// `refreshSkillIndexBlock` helper (called by workdir.ts post-sync) is
|
|
828
|
+
// responsible for splicing user-authored slugs into the block.
|
|
829
|
+
const skillPreamble = loadSkillIndexPreamble(this.workspaceDir);
|
|
830
|
+
const destSkillsRootAbs = join(sessionDir, destSkillsRootRelative);
|
|
831
|
+
const skillIndexBlock = renderSkillIndexBlock(destSkillsRootAbs, destSkillsRootRelative);
|
|
724
832
|
const rawInstruction = renderCliInstructionFile({
|
|
725
833
|
backendId,
|
|
726
834
|
processKey,
|
|
@@ -728,680 +836,17 @@ export class SkillsCompiler {
|
|
|
728
836
|
profileContent,
|
|
729
837
|
safetyContent,
|
|
730
838
|
characterBlock,
|
|
731
|
-
skillSlugs,
|
|
732
|
-
|
|
839
|
+
skillSlugs: materialisedSlugs,
|
|
840
|
+
skillPreamble,
|
|
841
|
+
skillIndexBlock,
|
|
733
842
|
sameBackendDenyBlock,
|
|
734
843
|
});
|
|
735
844
|
// INTEGRATION_NATIVE_MODE_DESIGN.md §7.3 — substitute the
|
|
736
845
|
// `<integration-routing-table>` placeholder in the rendered
|
|
737
846
|
// instruction file. Runs after the whole document is assembled so
|
|
738
|
-
// placeholders anywhere (profile body,
|
|
739
|
-
//
|
|
740
|
-
// placeholder string is present.
|
|
847
|
+
// placeholders anywhere (profile body, preamble, index) all resolve
|
|
848
|
+
// in one pass.
|
|
741
849
|
const instruction = substituteWikiWorkspaceTokens(substituteIntegrationRoutingTables(rawInstruction, this.integrations), processKey, wikiWorkspaceName);
|
|
742
|
-
writeFileSync(join(sessionDir, backendId
|
|
743
|
-
// Copy skills to the backend-specific skill directory for native CLI
|
|
744
|
-
// discovery: .codex/skills/<slug>/ or .gemini/skills/<slug>/
|
|
745
|
-
const cliSkillsDir = cliSkillsDirName(backendId);
|
|
746
|
-
const destSkillsRoot = join(sessionDir, cliSkillsDir, "skills");
|
|
747
|
-
mkdirSync(destSkillsRoot, { recursive: true });
|
|
748
|
-
// See `materializeClaudeSession` — same prune contract for CLI workdirs.
|
|
749
|
-
pruneStaleBuiltinSkillDirs(destSkillsRoot, skillsRoot, skillSlugs);
|
|
750
|
-
for (const skillSlug of skillSlugs) {
|
|
751
|
-
const src = resolveBuiltinSkillDir(skillsRoot, skillSlug);
|
|
752
|
-
const variantFile = this.resolveSkillVariantFile(skillSlug, backendId);
|
|
753
|
-
const destDir = join(destSkillsRoot, skillSlug);
|
|
754
|
-
// §4.1.2 same-backend short-circuit: no SKILL.md / .codex/skills/<slug>
|
|
755
|
-
// / .gemini/skills/<slug> directory written. The connector ships its
|
|
756
|
-
// own descriptions; injecting prose only confuses the dispatch.
|
|
757
|
-
// Remove any prior-materialization leftovers so a mode flip doesn't
|
|
758
|
-
// leak stale prose into the workdir.
|
|
759
|
-
if (variantFile === null) {
|
|
760
|
-
if (existsSync(destDir)) {
|
|
761
|
-
rmSync(destDir, { recursive: true, force: true });
|
|
762
|
-
}
|
|
763
|
-
continue;
|
|
764
|
-
}
|
|
765
|
-
const variantPath = join(src, variantFile);
|
|
766
|
-
if (!existsSync(variantPath)) {
|
|
767
|
-
continue;
|
|
768
|
-
}
|
|
769
|
-
// Copy the whole skill directory (scripts/, references/, etc.)
|
|
770
|
-
cpSync(src, destDir, { recursive: true });
|
|
771
|
-
// Resolve `{APP_NAME}` brand tokens in the verbatim copy before any
|
|
772
|
-
// downstream transform reads them. Source-of-truth: branding.ts.
|
|
773
|
-
substituteBrandTokensInDir(destDir);
|
|
774
|
-
substituteWikiWorkspaceTokensInDir(destDir, processKey, wikiWorkspaceName);
|
|
775
|
-
// Render variant (resolving partials), adapt frontmatter for CLI, and
|
|
776
|
-
// write as SKILL.md in the dest dir.
|
|
777
|
-
let adapted = substituteBrandTokens(readFileSync(variantPath, "utf-8"));
|
|
778
|
-
// SKILL.base.md and references/*.md are read directly from src by these
|
|
779
|
-
// inliners; wrap the results so future tokens added to those files still
|
|
780
|
-
// reach single-point-of-change. Idempotent.
|
|
781
|
-
adapted = substituteBrandTokens(renderPartialIncludes(adapted, join(src, "SKILL.base.md")));
|
|
782
|
-
// Resolve `{{> ref:<name> }}` directives — keeps the
|
|
783
|
-
// `.codex/skills/<slug>/SKILL.md` and `.gemini/skills/<slug>/SKILL.md`
|
|
784
|
-
// bodies byte-identical to the inline-into-AGENTS.md / GEMINI.md
|
|
785
|
-
// copy emitted above (modulo CLI frontmatter strip), preserving the
|
|
786
|
-
// "guaranteed availability" contract that motivated this resolver.
|
|
787
|
-
adapted = substituteBrandTokens(renderReferenceIncludes(adapted, src));
|
|
788
|
-
adapted = substituteWikiWorkspaceTokens(adapted, processKey, wikiWorkspaceName);
|
|
789
|
-
if (skillSlug === "external-services" && this.configuredServices.size > 0) {
|
|
790
|
-
adapted = stripUnconfiguredServices(adapted, this.configuredServices);
|
|
791
|
-
}
|
|
792
|
-
// Mode-conditional filter — keep this dest-dir copy byte-aligned with
|
|
793
|
-
// the inline copy emitted into AGENTS.md / GEMINI.md (modulo
|
|
794
|
-
// adaptSkillForCli's frontmatter strip). The filter is idempotent so
|
|
795
|
-
// running it on both copies independently is safe.
|
|
796
|
-
adapted = applyIntegrationModeFilter(adapted, this.integrations, backendId);
|
|
797
|
-
// §7.7 — apply tool-deny policy BEFORE adaptSkillForCli strips
|
|
798
|
-
// frontmatter so the soft-enforcement prose block lands in body
|
|
799
|
-
// content (CLI skills carry only `name` + `description` in
|
|
800
|
-
// frontmatter, no `allowed-tools` to filter).
|
|
801
|
-
adapted = applyAllDeniedToolsForSkill(adapted, skillSlug, backendId, this.integrations);
|
|
802
|
-
adapted = adaptSkillForCli(adapted);
|
|
803
|
-
writeFileSync(join(destDir, "SKILL.md"), adapted, "utf-8");
|
|
804
|
-
// P22 — splice CURATION anchors against overlay/seed JSON so the
|
|
805
|
-
// CLI-side .codex/.gemini skill copy stays byte-equivalent to the
|
|
806
|
-
// Claude-side copy after curation. No-op when no curation context.
|
|
807
|
-
this.spliceCurationAnchorsInSkill(destDir, skillSlug);
|
|
808
|
-
if (skillSlug === "mail") {
|
|
809
|
-
writeFileSync(join(destDir, "accounts.md"), this.mailAccounts.length > 0
|
|
810
|
-
? renderMailAccountsMd(this.mailAccounts)
|
|
811
|
-
: EMPTY_MAIL_ACCOUNTS_MD, "utf-8");
|
|
812
|
-
}
|
|
813
|
-
}
|
|
814
|
-
}
|
|
815
|
-
}
|
|
816
|
-
export const EMPTY_MAIL_ACCOUNTS_MD = [
|
|
817
|
-
"# Mail accounts",
|
|
818
|
-
"",
|
|
819
|
-
"No active mail accounts are configured right now. The `mail` skill's API",
|
|
820
|
-
"calls will fail without an `accountId` — do NOT guess account ids. If no",
|
|
821
|
-
"account matches, tell the user no active mail account is configured and",
|
|
822
|
-
"stop — account setup is outside this skill's scope.",
|
|
823
|
-
"",
|
|
824
|
-
].join("\n");
|
|
825
|
-
export function renderMailAccountsMd(accounts) {
|
|
826
|
-
const rows = accounts.map((a) => {
|
|
827
|
-
const label = a.label ? ` (${a.label})` : "";
|
|
828
|
-
return `| \`${a.id}\` | ${a.kind} | ${a.email}${label} | ${a.idleEnabled ? "IDLE" : "poll"} |`;
|
|
829
|
-
});
|
|
830
|
-
return [
|
|
831
|
-
"# Mail accounts",
|
|
832
|
-
"",
|
|
833
|
-
"Active mail accounts this session can use. Resolve `accountId` from this",
|
|
834
|
-
"table before calling `/api/mail/:accountId/*`. Inactive / unhealthy",
|
|
835
|
-
"accounts are omitted by design — no global \"primary\" default exists;",
|
|
836
|
-
"pick the account from conversation context (reply thread, user mention,",
|
|
837
|
-
"or a single active row) and ask when ambiguous.",
|
|
838
|
-
"",
|
|
839
|
-
"| accountId | kind | email | transport |",
|
|
840
|
-
"|---|---|---|---|",
|
|
841
|
-
...rows,
|
|
842
|
-
"",
|
|
843
|
-
].join("\n");
|
|
844
|
-
}
|
|
845
|
-
/**
|
|
846
|
-
* Return the backend-specific skills directory name for a given backend.
|
|
847
|
-
* Returns null for Claude (which uses `.claude/skills/` managed separately).
|
|
848
|
-
*/
|
|
849
|
-
export function cliSkillsDirName(backendId) {
|
|
850
|
-
switch (backendId) {
|
|
851
|
-
case "codex": return ".codex";
|
|
852
|
-
case "gemini": return ".gemini";
|
|
853
|
-
default: return null;
|
|
854
|
-
}
|
|
855
|
-
}
|
|
856
|
-
/**
|
|
857
|
-
* Session instruction files the live-overwrite path (design §15.6.1 /
|
|
858
|
-
* §15.9) walks when the owner PATCHes `character` mid-session. Each file
|
|
859
|
-
* corresponds to a backend (CLAUDE.md = Claude Code SDK, AGENTS.md =
|
|
860
|
-
* Codex CLI, GEMINI.md = Gemini CLI). A workdir that has already seen a
|
|
861
|
-
* heavy-tier fallback can contain two of these side-by-side — see
|
|
862
|
-
* CLAUDE.md "Fallback re-materialization".
|
|
863
|
-
*/
|
|
864
|
-
const CHARACTER_INSTRUCTION_FILES = [
|
|
865
|
-
"CLAUDE.md",
|
|
866
|
-
"AGENTS.md",
|
|
867
|
-
"GEMINI.md",
|
|
868
|
-
];
|
|
869
|
-
/**
|
|
870
|
-
* Rewrite the `## Character (user-defined)` block inside every backend
|
|
871
|
-
* instruction file that currently lives in `workdir`. Used by the
|
|
872
|
-
* `PATCH /api/config` live-overwrite path (§15.6.1) so an owner editing
|
|
873
|
-
* character on the dashboard doesn't have to wait for the next session
|
|
874
|
-
* spawn for the change to land.
|
|
875
|
-
*
|
|
876
|
-
* Multi-backend aware: a workdir that has seen a Claude→Codex fallback
|
|
877
|
-
* contains both CLAUDE.md and AGENTS.md, and both must end up byte-
|
|
878
|
-
* identical in their character block. Each write is atomic (tmp +
|
|
879
|
-
* rename, both on the same filesystem so rename stays cheap) and
|
|
880
|
-
* per-file errors are logged without failing the whole call.
|
|
881
|
-
*
|
|
882
|
-
* Returns a summary of how many files were rewritten. Useful for
|
|
883
|
-
* instrumentation and for the dashboard PATCH handler to log.
|
|
884
|
-
*
|
|
885
|
-
* The helper is an FS wrapper: its pure parse/compose half lives in
|
|
886
|
-
* `character-block.ts` and is covered 100% there. This side is excluded
|
|
887
|
-
* from coverage along with the rest of `skills-compiler.ts`.
|
|
888
|
-
*/
|
|
889
|
-
export function rewriteCharacterBlock(workdir, character) {
|
|
890
|
-
const summary = { rewritten: 0, skipped: 0, failed: 0 };
|
|
891
|
-
for (const name of CHARACTER_INSTRUCTION_FILES) {
|
|
892
|
-
const target = join(workdir, name);
|
|
893
|
-
if (!existsSync(target)) {
|
|
894
|
-
summary.skipped++;
|
|
895
|
-
continue;
|
|
896
|
-
}
|
|
897
|
-
try {
|
|
898
|
-
const current = readFileSync(target, "utf-8");
|
|
899
|
-
const next = applyCharacterBlockRewrite(current, character);
|
|
900
|
-
if (next === current) {
|
|
901
|
-
summary.skipped++;
|
|
902
|
-
continue;
|
|
903
|
-
}
|
|
904
|
-
// `.tmp` lives next to the target so the rename stays on one
|
|
905
|
-
// filesystem (design R1 mitigation).
|
|
906
|
-
const tmp = `${target}.tmp`;
|
|
907
|
-
writeFileSync(tmp, next, "utf-8");
|
|
908
|
-
renameSync(tmp, target);
|
|
909
|
-
summary.rewritten++;
|
|
910
|
-
}
|
|
911
|
-
catch (err) {
|
|
912
|
-
// Per-file logging so a partial failure (e.g. CLAUDE.md written,
|
|
913
|
-
// AGENTS.md EACCES) is recoverable post-hoc — the outer PATCH
|
|
914
|
-
// handler only sees aggregate totals.
|
|
915
|
-
logger.warn({ err, target }, "rewriteCharacterBlock failed to update instruction file");
|
|
916
|
-
summary.failed++;
|
|
917
|
-
}
|
|
918
|
-
}
|
|
919
|
-
return summary;
|
|
920
|
-
}
|
|
921
|
-
function renderCliInstructionFile(params) {
|
|
922
|
-
const toolName = params.backendId === "codex" ? "AGENTS.md" : "GEMINI.md";
|
|
923
|
-
const parts = [
|
|
924
|
-
`# ${APP_NAME} ${toolName}`,
|
|
925
|
-
"",
|
|
926
|
-
`Process key: \`${params.processKey}\``,
|
|
927
|
-
`Profile: \`${params.profileName}\``,
|
|
928
|
-
"",
|
|
929
|
-
];
|
|
930
|
-
// Safety invariants at top level for prominence — CLI backends don't
|
|
931
|
-
// have a separate project-instruction layer, so burying safety inside
|
|
932
|
-
// the profile section risks it being overlooked by weaker models.
|
|
933
|
-
if (params.safetyContent) {
|
|
934
|
-
parts.push(params.safetyContent, "");
|
|
935
|
-
}
|
|
936
|
-
// User-defined character sits immediately after safety so it strictly
|
|
937
|
-
// outranks every profile / skill / task-flow layer below it, and
|
|
938
|
-
// strictly below safety (design §15.4.2 / §15.5).
|
|
939
|
-
if (params.characterBlock) {
|
|
940
|
-
parts.push(params.characterBlock, "");
|
|
941
|
-
}
|
|
942
|
-
// DELEGATED-MODE-V2-DESIGN.md §4.3.4 — same-backend integration deny block.
|
|
943
|
-
// Sits right after character / safety (above behavioral rules + skills) so
|
|
944
|
-
// weak models cannot miss it. For Codex this is the only enforcement
|
|
945
|
-
// surface; for Gemini it duplicates the admin-policy hard-deny.
|
|
946
|
-
if (params.sameBackendDenyBlock) {
|
|
947
|
-
parts.push(params.sameBackendDenyBlock, "");
|
|
948
|
-
}
|
|
949
|
-
// Output-language pointer paragraph (design `output-language-policy.md`
|
|
950
|
-
// §13.3). Identical byte-for-byte across CLAUDE.md / AGENTS.md /
|
|
951
|
-
// GEMINI.md — declarative only, never inlines the current
|
|
952
|
-
// `primaryLanguage` (that lives in the per-turn XML and would go
|
|
953
|
-
// stale here on a PATCH /api/config mid-session).
|
|
954
|
-
parts.push(renderOutputLanguagePolicyPointer(), "");
|
|
955
|
-
// Behavioral rules that Claude Code receives via system prompt append but
|
|
956
|
-
// CLI backends don't have a system prompt layer for.
|
|
957
|
-
parts.push("## Behavioral rules", "", "- WhatsApp outbound messages are prefixed by the daemon. Do not add that prefix yourself unless the user explicitly asks.", "");
|
|
958
|
-
// Daemon-API usage hoisted ABOVE the skills (was: appended at the end
|
|
959
|
-
// of the file). Skill bodies inline below carry hundreds of `curl
|
|
960
|
-
// http://localhost:8321/api/...` examples; for Codex specifically those
|
|
961
|
-
// examples target endpoints that return 401 because Codex does not
|
|
962
|
-
// hold the read-sensitive token. Surfacing the constraint up-front
|
|
963
|
-
// gives the agent the routing rule before it reads the first skill.
|
|
964
|
-
// For Gemini / Claude the section is informational; the position is
|
|
965
|
-
// kept consistent so the rendered file shape is uniform.
|
|
966
|
-
parts.push(renderDaemonApiUsageSection(params.backendId !== "codex"), "");
|
|
967
|
-
parts.push("## Runtime profile", "", params.profileContent.trim(), "", "## Skills", "");
|
|
968
|
-
if (params.skillSlugs.length === 0) {
|
|
969
|
-
parts.push("No process-scoped built-in skills were selected for this turn.");
|
|
970
|
-
}
|
|
971
|
-
else {
|
|
972
|
-
for (const slug of params.skillSlugs) {
|
|
973
|
-
const content = params.skillContents[slug];
|
|
974
|
-
if (content) {
|
|
975
|
-
parts.push(`### ${slug}`, "", content.trim(), "");
|
|
976
|
-
}
|
|
977
|
-
else {
|
|
978
|
-
parts.push(`### ${slug}`, "", `See \`skills/${slug}/SKILL.md\` for details.`, "");
|
|
979
|
-
}
|
|
980
|
-
}
|
|
981
|
-
}
|
|
982
|
-
parts.push("", "User-authored skills may also exist under `skills/<name>/SKILL.md`.");
|
|
983
|
-
return parts.join("\n");
|
|
984
|
-
}
|
|
985
|
-
function renderDaemonApiUsageSection(readSensitiveAvailable) {
|
|
986
|
-
const lines = [
|
|
987
|
-
"## Daemon API Usage",
|
|
988
|
-
"",
|
|
989
|
-
"- Use plain `curl` for daemon API calls. The daemon prepends a session-local wrapper on PATH.",
|
|
990
|
-
"- Never use absolute curl paths, alternative HTTP clients, connection overrides, or custom auth headers.",
|
|
991
|
-
];
|
|
992
|
-
if (readSensitiveAvailable) {
|
|
993
|
-
lines.push("- The wrapper auto-attaches session auth for read-sensitive endpoints.");
|
|
994
|
-
}
|
|
995
|
-
else {
|
|
996
|
-
lines.push("", "### Read-sensitive endpoints are UNAVAILABLE on this backend", "", "Codex sessions do not receive the read-sensitive daemon token. The", "wrapper still prepends headers it can supply, but the daemon answers", "personal-data reads with `401 Unauthorized` regardless. Endpoints", "below are affected; the skill bodies in `## Skills` describe them", "as if they were available — treat the section as a contract you", "cannot satisfy on this backend.", "", "- Context vault: `GET /api/context/*`, `GET /api/context/list/*`", "- Mail (multi-provider): `GET /api/mail/*` (read), search, providers", "- Calendar (direct mode): `GET /api/calendar/*`", "- Notion (direct mode): `GET /api/notion/{query,search,pages}`", "- Obsidian: `GET /api/obsidian/*`", "- Observations: `GET /api/observations`", "- Reading list / receipts / travel bookings", "", "If a skill body directs you at one of these reads, stop and tell", "the user the task needs a different backend (Claude or Gemini).", "Do not hammer the endpoint — the 401 is permanent for this", "session, not transient. Writes and autonomous-tier endpoints", "stay reachable; the gate is read-sensitive scope only.");
|
|
997
|
-
}
|
|
998
|
-
return lines.join("\n");
|
|
999
|
-
}
|
|
1000
|
-
/**
|
|
1001
|
-
* Strip service sections from external-services/SKILL.md that correspond to
|
|
1002
|
-
* unconfigured integrations. Sections are delimited by HTML comments:
|
|
1003
|
-
* <!-- service:calendar --> ... <!-- /service:calendar -->
|
|
1004
|
-
* When `configuredServices` is empty the content is returned unchanged — the
|
|
1005
|
-
* "no services configured yet" case keeps every section so the agent can see
|
|
1006
|
-
* the full menu. Only strips once the user has configured at least one
|
|
1007
|
-
* service (and therefore expressed an intent to narrow the surface).
|
|
1008
|
-
*/
|
|
1009
|
-
export function stripUnconfiguredServices(content, configuredServices) {
|
|
1010
|
-
if (configuredServices.size === 0)
|
|
1011
|
-
return content;
|
|
1012
|
-
const servicePattern = /<!-- service:(\w+) -->\n([\s\S]*?)<!-- \/service:\1 -->\n?/g;
|
|
1013
|
-
return content.replace(servicePattern, (match, service) => configuredServices.has(service) ? match : "");
|
|
1014
|
-
}
|
|
1015
|
-
/** Strip YAML frontmatter (--- ... ---) from markdown content. */
|
|
1016
|
-
function stripFrontmatter(content) {
|
|
1017
|
-
if (!content.startsWith("---"))
|
|
1018
|
-
return content;
|
|
1019
|
-
const endIdx = content.indexOf("\n---", 3);
|
|
1020
|
-
if (endIdx < 0)
|
|
1021
|
-
return content;
|
|
1022
|
-
return content.slice(endIdx + 4).replace(/^\n+/, "");
|
|
1023
|
-
}
|
|
1024
|
-
/**
|
|
1025
|
-
* Adapt a SKILL.md for CLI backends (Codex / Gemini): retain only `name`,
|
|
1026
|
-
* `description`, and `when_to_use` frontmatter fields, stripping
|
|
1027
|
-
* Claude-specific fields like `allowed-tools`. The body content is
|
|
1028
|
-
* preserved unchanged.
|
|
1029
|
-
*
|
|
1030
|
-
* `when_to_use` is the secondary trigger-shape clarification documented
|
|
1031
|
-
* in `SKILLS-PHASE-2-PLAN.md` §3.2 / §5; the Claude Agent SDK reads it
|
|
1032
|
-
* verbatim from `q.when_to_use` (verified against
|
|
1033
|
-
* `claude-agent-sdk@0.2.98/cli.js`). Preserving it on the CLI side keeps
|
|
1034
|
-
* the per-backend skill frontmatter aligned even though Codex / Gemini
|
|
1035
|
-
* do not currently consume the field — drift would surface as a missing
|
|
1036
|
-
* activation hint when they eventually do.
|
|
1037
|
-
*
|
|
1038
|
-
* Assumes `name`, `description`, and `when_to_use` are each single-line
|
|
1039
|
-
* YAML scalars (no `|` / `>` block forms). A multi-line `when_to_use:`
|
|
1040
|
-
* is matched only by its first line — the `.+` regex stops at the
|
|
1041
|
-
* newline — but since YAML block scalars start with the line that
|
|
1042
|
-
* contains only `|` or `>`, the captured value would be the empty
|
|
1043
|
-
* indicator and the inlined value would be useless. Phase 2 v1 keeps
|
|
1044
|
-
* this conservative: callers must use single-line scalars (NG5).
|
|
1045
|
-
*/
|
|
1046
|
-
export function adaptSkillForCli(content) {
|
|
1047
|
-
if (!content.startsWith("---"))
|
|
1048
|
-
return content;
|
|
1049
|
-
const endIdx = content.indexOf("\n---", 3);
|
|
1050
|
-
if (endIdx < 0)
|
|
1051
|
-
return content;
|
|
1052
|
-
const frontmatter = content.slice(4, endIdx);
|
|
1053
|
-
const body = content.slice(endIdx + 4);
|
|
1054
|
-
const nameMatch = frontmatter.match(/^name:\s*(.+)$/m);
|
|
1055
|
-
const descMatch = frontmatter.match(/^description:\s*(.+)$/m);
|
|
1056
|
-
const whenMatch = frontmatter.match(/^when_to_use:\s*(.+)$/m);
|
|
1057
|
-
// Reject multi-line block scalars (`when_to_use: |` / `when_to_use: >`):
|
|
1058
|
-
// their first-line capture would just be the indicator. Falling through
|
|
1059
|
-
// to "no when_to_use" matches the documented contract (§3.4.2 #9).
|
|
1060
|
-
const whenIsBlockScalar = whenMatch !== null && /^[|>][-+]?\s*$/.test(whenMatch[1].trim());
|
|
1061
|
-
const parts = ["---"];
|
|
1062
|
-
if (nameMatch)
|
|
1063
|
-
parts.push(`name: ${nameMatch[1].trim()}`);
|
|
1064
|
-
if (descMatch)
|
|
1065
|
-
parts.push(`description: ${descMatch[1].trim()}`);
|
|
1066
|
-
if (whenMatch && !whenIsBlockScalar) {
|
|
1067
|
-
parts.push(`when_to_use: ${whenMatch[1].trim()}`);
|
|
1068
|
-
}
|
|
1069
|
-
parts.push("---");
|
|
1070
|
-
return parts.join("\n") + body;
|
|
1071
|
-
}
|
|
1072
|
-
/**
|
|
1073
|
-
* Resolve `{{> base }}` include directives in a skill/task-flow variant file.
|
|
1074
|
-
* Reads `SKILL.base.md` (or `<key>.base.md` for task flows) from `basePath`
|
|
1075
|
-
* and replaces every occurrence of `{{> base }}` with the base file's content
|
|
1076
|
-
* (frontmatter stripped). A missing or empty base file is silently ignored.
|
|
1077
|
-
*
|
|
1078
|
-
* Only `{{> base }}` is supported — this is intentionally minimal (§4.7
|
|
1079
|
-
* design note: "~40 lines of pure TS").
|
|
1080
|
-
*
|
|
1081
|
-
* @deprecated DELEGATED-PROXY-API-DESIGN.md §11 — after Phase D no in-tree
|
|
1082
|
-
* skill uses `{{> base }}`: mail / external-services unified their bodies
|
|
1083
|
-
* during Phase D, and the lone surviving `notion/SKILL.base.md` was
|
|
1084
|
-
* removed in Phase 9 (its hourly-check read-only constraint moved to
|
|
1085
|
-
* `routine.hourly_check.md` task-flow where the rule applies in every
|
|
1086
|
-
* integration mode, including same-backend delegated where the skill
|
|
1087
|
-
* body is dropped). The helper is retained for future composition needs;
|
|
1088
|
-
* remove the call sites in `materializeClaudeSession` /
|
|
1089
|
-
* `materializeCliSession` when no consumer reappears.
|
|
1090
|
-
*/
|
|
1091
|
-
export function renderPartialIncludes(content, basePath) {
|
|
1092
|
-
if (!content.includes("{{> base }}"))
|
|
1093
|
-
return content;
|
|
1094
|
-
if (!existsSync(basePath))
|
|
1095
|
-
return content.replace(/\{\{> base \}\}/g, "");
|
|
1096
|
-
const baseRaw = readFileSync(basePath, "utf-8");
|
|
1097
|
-
const baseContent = stripFrontmatter(baseRaw).trim();
|
|
1098
|
-
return content.replace(/\{\{> base \}\}/g, baseContent);
|
|
1099
|
-
}
|
|
1100
|
-
/**
|
|
1101
|
-
* Resolve `{{> ref:<name> }}` directives in a skill body by inlining
|
|
1102
|
-
* `references/<name>.md` (frontmatter stripped) from the skill's source dir.
|
|
1103
|
-
*
|
|
1104
|
-
* Mirrors `renderPartialIncludes` but is intra-skill, not cross-skill: each
|
|
1105
|
-
* skill carries its own `references/` dir. Used by progressive-disclosure
|
|
1106
|
-
* skills (planned for `mail`, `roadmap`, `reading`, `user-interview` after
|
|
1107
|
-
* Phase 2-B) so heavy reference tables can live next to the skill body
|
|
1108
|
-
* without bloating the navigation overview.
|
|
1109
|
-
*
|
|
1110
|
-
* Behaviour:
|
|
1111
|
-
* - Missing `references/<name>.md` → directive replaced with empty string;
|
|
1112
|
-
* logged at WARN. (Mirrors the deprecated helper's missing-base behaviour.)
|
|
1113
|
-
* - The directive matches `{{> ref:<name> }}` with the strict-kebab name
|
|
1114
|
-
* pattern `[a-z][a-z0-9-]*`. Path-traversal (`../`, leading underscore,
|
|
1115
|
-
* uppercase) is rejected at the regex level — `existsSync` is never
|
|
1116
|
-
* consulted for invalid names.
|
|
1117
|
-
* - Multiple occurrences each inline the same file's content (re-read per
|
|
1118
|
-
* occurrence — pinned by the unit tests so a later caching refactor must
|
|
1119
|
-
* surface as a deliberate change).
|
|
1120
|
-
* - Frontmatter on the reference file (if present) is stripped before
|
|
1121
|
-
* inline, so reference files can carry `---\nkind: reference\n---`
|
|
1122
|
-
* headers for tooling without leaking YAML into skill bodies.
|
|
1123
|
-
* - The resolver is NOT fence-aware; a directive inside a triple-backtick
|
|
1124
|
-
* fence is still expanded. This matches `renderPartialIncludes` and is
|
|
1125
|
-
* deliberate for v1 — fence-aware resolution would be a separate refactor.
|
|
1126
|
-
*
|
|
1127
|
-
* Phase 2-A ships compiler-only; no in-tree skill carries a directive yet
|
|
1128
|
-
* (`skills-manifest.test.ts` pins `0` as the lockstep count). Phase 2-B
|
|
1129
|
-
* starts emitting them per the migration map in `SKILLS-PHASE-2-PLAN.md`.
|
|
1130
|
-
*/
|
|
1131
|
-
export function renderReferenceIncludes(content, skillSrcDir) {
|
|
1132
|
-
return content.replace(/\{\{> ref:([a-z][a-z0-9-]*) \}\}/g, (_match, name) => {
|
|
1133
|
-
const refPath = join(skillSrcDir, "references", `${name}.md`);
|
|
1134
|
-
if (!existsSync(refPath)) {
|
|
1135
|
-
logger.warn({ skillSrcDir, name }, "renderReferenceIncludes: missing reference file");
|
|
1136
|
-
return "";
|
|
1137
|
-
}
|
|
1138
|
-
return stripFrontmatter(readFileSync(refPath, "utf-8")).trim();
|
|
1139
|
-
});
|
|
1140
|
-
}
|
|
1141
|
-
/**
|
|
1142
|
-
* §7.7 — apply the per-integration tool-deny policy to a delegated skill
|
|
1143
|
-
* body. Two enforcement modes:
|
|
1144
|
-
*
|
|
1145
|
-
* - **Claude (hard enforcement):** parse the YAML frontmatter and remove
|
|
1146
|
-
* every `allowed-tools` entry whose unsuffixed name (after the
|
|
1147
|
-
* descriptor's `toolNamespace`) is in `deniedTools`. The Claude Agent
|
|
1148
|
-
* SDK refuses to invoke any tool not present in `allowed-tools`, so
|
|
1149
|
-
* this is hard enforcement at the SDK boundary.
|
|
1150
|
-
*
|
|
1151
|
-
* - **Codex / Gemini (soft enforcement):** append a "Denied tools (do
|
|
1152
|
-
* not invoke)" prose block at the end of the skill body listing the
|
|
1153
|
-
* full namespaced tool names. The CLI surfaces have no per-tool deny
|
|
1154
|
-
* mechanism comparable to Claude's `allowed-tools`; the prose is the
|
|
1155
|
-
* only guard. Documented soft-enforcement gap.
|
|
1156
|
-
*
|
|
1157
|
-
* Stale entries (a deniedTools name that doesn't match any tool in the
|
|
1158
|
-
* active backend's `capabilityTools`) are silently ignored — the API
|
|
1159
|
-
* already rejects them at PATCH time, but a delegatedBackend swap can
|
|
1160
|
-
* leave Claude-namespaced names in a list now active for Codex.
|
|
1161
|
-
*
|
|
1162
|
-
* Run AFTER `renderPartialIncludes` and `stripUnconfiguredServices` so
|
|
1163
|
-
* partial includes and service-section gating land first.
|
|
1164
|
-
*/
|
|
1165
|
-
export function applyDeniedTools(content, integrationKey, backendId, deniedTools) {
|
|
1166
|
-
if (deniedTools.length === 0)
|
|
1167
|
-
return content;
|
|
1168
|
-
const descriptor = INTEGRATION_DESCRIPTORS[integrationKey];
|
|
1169
|
-
const connector = descriptor.backendConnectors[backendId];
|
|
1170
|
-
if (!connector)
|
|
1171
|
-
return content;
|
|
1172
|
-
const { active } = filterDeniedToolsForBackend(integrationKey, backendId, deniedTools);
|
|
1173
|
-
if (active.length === 0)
|
|
1174
|
-
return content;
|
|
1175
|
-
const namespacedDenied = active.map((t) => `${connector.toolNamespace}${t}`);
|
|
1176
|
-
if (backendId === "claude") {
|
|
1177
|
-
return filterClaudeAllowedTools(content, new Set(namespacedDenied));
|
|
1178
|
-
}
|
|
1179
|
-
return appendCliDenyBlock(content, namespacedDenied);
|
|
1180
|
-
}
|
|
1181
|
-
/**
|
|
1182
|
-
* Strip every `allowed-tools` frontmatter entry whose name appears in
|
|
1183
|
-
* `deniedSet`. Preserves frontmatter ordering, line breaks, and any other
|
|
1184
|
-
* fields. Tolerates two YAML shapes:
|
|
1185
|
-
*
|
|
1186
|
-
* allowed-tools:
|
|
1187
|
-
* - name1
|
|
1188
|
-
* - name2
|
|
1189
|
-
*
|
|
1190
|
-
* allowed-tools: [name1, name2]
|
|
1191
|
-
*
|
|
1192
|
-
* The first form is what every skill in `agent-assets/skills/` uses today;
|
|
1193
|
-
* the inline form is supported because it's valid YAML and the API + UI
|
|
1194
|
-
* have no way to prevent a hand-edited skill from using it.
|
|
1195
|
-
*/
|
|
1196
|
-
function filterClaudeAllowedTools(content, deniedSet) {
|
|
1197
|
-
if (!content.startsWith("---"))
|
|
1198
|
-
return content;
|
|
1199
|
-
const endIdx = content.indexOf("\n---", 3);
|
|
1200
|
-
if (endIdx < 0)
|
|
1201
|
-
return content;
|
|
1202
|
-
const frontmatter = content.slice(4, endIdx);
|
|
1203
|
-
const body = content.slice(endIdx + 4);
|
|
1204
|
-
const lines = frontmatter.split("\n");
|
|
1205
|
-
const out = [];
|
|
1206
|
-
let inAllowedTools = false;
|
|
1207
|
-
for (const line of lines) {
|
|
1208
|
-
if (/^allowed-tools:\s*\[/.test(line)) {
|
|
1209
|
-
// Inline-array form: parse, filter, re-emit on one line.
|
|
1210
|
-
const m = /^(allowed-tools:\s*)\[([^\]]*)\]/.exec(line);
|
|
1211
|
-
if (m) {
|
|
1212
|
-
const items = m[2]
|
|
1213
|
-
.split(",")
|
|
1214
|
-
.map((s) => s.trim().replace(/^["']|["']$/g, ""))
|
|
1215
|
-
.filter((s) => s.length > 0 && !deniedSet.has(s));
|
|
1216
|
-
out.push(`${m[1]}[${items.join(", ")}]`);
|
|
1217
|
-
continue;
|
|
1218
|
-
}
|
|
1219
|
-
}
|
|
1220
|
-
if (/^allowed-tools:\s*$/.test(line)) {
|
|
1221
|
-
inAllowedTools = true;
|
|
1222
|
-
out.push(line);
|
|
1223
|
-
continue;
|
|
1224
|
-
}
|
|
1225
|
-
if (inAllowedTools) {
|
|
1226
|
-
// Block-list form continuation. A block-list item is ` - <name>`;
|
|
1227
|
-
// anything else (next top-level key, blank, or end of frontmatter)
|
|
1228
|
-
// ends the section.
|
|
1229
|
-
const itemMatch = /^\s*-\s*(.+?)\s*$/.exec(line);
|
|
1230
|
-
if (itemMatch) {
|
|
1231
|
-
const name = itemMatch[1].replace(/^["']|["']$/g, "");
|
|
1232
|
-
if (!deniedSet.has(name))
|
|
1233
|
-
out.push(line);
|
|
1234
|
-
continue;
|
|
1235
|
-
}
|
|
1236
|
-
// Anything else closes the block.
|
|
1237
|
-
inAllowedTools = false;
|
|
1238
|
-
}
|
|
1239
|
-
out.push(line);
|
|
1240
|
-
}
|
|
1241
|
-
return `---\n${out.join("\n")}\n---${body}`;
|
|
1242
|
-
}
|
|
1243
|
-
/**
|
|
1244
|
-
* DELEGATED-MODE-V2-DESIGN.md §4.3.3-§4.3.4 — render a top-level prose
|
|
1245
|
-
* deny block listing every same-backend integration tool the user has
|
|
1246
|
-
* denied. Returns `null` when no integration is in same-backend mode for
|
|
1247
|
-
* this backend or the deny lists are empty.
|
|
1248
|
-
*
|
|
1249
|
-
* Codex (γ outcome): this prose is the ONLY enforcement surface — the
|
|
1250
|
-
* Codex CLI's connector apps have no admin-policy or per-tool deny config.
|
|
1251
|
-
* The agent profile (`AGENTS.md`) inlines this block above the behavioral
|
|
1252
|
-
* rules so it is impossible to miss.
|
|
1253
|
-
*
|
|
1254
|
-
* Gemini: duplicate intent — admin-policy already hard-denies these tools
|
|
1255
|
-
* (§4.3.3 hard enforcement), but echoing the deny in prose saves tokens
|
|
1256
|
-
* the model would otherwise spend drafting a doomed call.
|
|
1257
|
-
*/
|
|
1258
|
-
export function buildSameBackendDenyBlock(integrations, sessionBackend) {
|
|
1259
|
-
const map = collectSessionDeniedTools(integrations, sessionBackend);
|
|
1260
|
-
if (map.size === 0)
|
|
1261
|
-
return null;
|
|
1262
|
-
const lines = [
|
|
1263
|
-
"## Denied tools (per-integration)",
|
|
1264
|
-
"",
|
|
1265
|
-
"The user has restricted the following connector tools for this session.",
|
|
1266
|
-
"Do NOT invoke them in any flow — including hourly check, morning routine,",
|
|
1267
|
-
"or DM responses. If a workflow appears to require one, stop and tell the",
|
|
1268
|
-
"user the tool is denied.",
|
|
1269
|
-
];
|
|
1270
|
-
for (const [key, names] of map.entries()) {
|
|
1271
|
-
lines.push("", `### ${key}`, "");
|
|
1272
|
-
for (const n of names)
|
|
1273
|
-
lines.push(`- \`${n}\``);
|
|
1274
|
-
}
|
|
1275
|
-
return lines.join("\n");
|
|
1276
|
-
}
|
|
1277
|
-
/**
|
|
1278
|
-
* Append a soft-enforcement deny block to a CLI skill body. The block is
|
|
1279
|
-
* idempotent — re-running with the same denied set produces identical
|
|
1280
|
-
* output.
|
|
1281
|
-
*/
|
|
1282
|
-
function appendCliDenyBlock(content, namespacedDenied) {
|
|
1283
|
-
// Strip any prior deny block we wrote, so re-materialization with a
|
|
1284
|
-
// changed list doesn't accumulate stale ones. The block starts with
|
|
1285
|
-
// `\n## Denied tools (do not invoke)` (one preceding newline, the join
|
|
1286
|
-
// contributes the second) and runs until either the next `## ` heading
|
|
1287
|
-
// or end of file.
|
|
1288
|
-
const stripped = content.replace(/\n+## Denied tools \(do not invoke\)[\s\S]*?(?=\n## (?!Denied tools)|$)/, "");
|
|
1289
|
-
const items = namespacedDenied.map((n) => `- \`${n}\``).join("\n");
|
|
1290
|
-
// Two leading empty strings → block begins with "\n\n## " so the heading
|
|
1291
|
-
// sits on its own paragraph (markdown convention) regardless of what
|
|
1292
|
-
// trailing whitespace the body carried.
|
|
1293
|
-
const block = [
|
|
1294
|
-
"",
|
|
1295
|
-
"",
|
|
1296
|
-
"## Denied tools (do not invoke)",
|
|
1297
|
-
"",
|
|
1298
|
-
"The user has restricted these connector tools for this integration. Do",
|
|
1299
|
-
"NOT invoke them in any flow — including hourly check, morning routine,",
|
|
1300
|
-
"or DM responses. If a workflow appears to require one, stop and tell",
|
|
1301
|
-
"the user the tool is denied.",
|
|
1302
|
-
"",
|
|
1303
|
-
items,
|
|
1304
|
-
"",
|
|
1305
|
-
].join("\n");
|
|
1306
|
-
return stripped.replace(/\s*$/, "") + block;
|
|
1307
|
-
}
|
|
1308
|
-
/**
|
|
1309
|
-
* Apply the deny pass for every integration whose `skillsTouched` OR
|
|
1310
|
-
* `deniedToolsAppliesToSkills` includes the given skill slug. A skill that
|
|
1311
|
-
* touches no integration leaves content unchanged. Touching multiple
|
|
1312
|
-
* integrations runs the pass once per integration so each contributes its
|
|
1313
|
-
* own deny list.
|
|
1314
|
-
*
|
|
1315
|
-
* Hard enforcement of the same deny list for cross-backend delegated
|
|
1316
|
-
* calls lives at the `POST /api/integrations/:key/invoke` chokepoint
|
|
1317
|
-
* (DELEGATED-MODE-V2-DESIGN.md §4.3.2). For same-backend native MCP it
|
|
1318
|
-
* is enforced via SDK `disallowedTools` (Claude) / admin policy
|
|
1319
|
-
* (Gemini); see `collectSessionDeniedTools` (§4.3.3).
|
|
1320
|
-
*/
|
|
1321
|
-
export function applyAllDeniedToolsForSkill(content, skillSlug, backendId, integrations) {
|
|
1322
|
-
let result = content;
|
|
1323
|
-
for (const key of INTEGRATION_KEYS) {
|
|
1324
|
-
const descriptor = INTEGRATION_DESCRIPTORS[key];
|
|
1325
|
-
const touched = descriptor.skillsTouched.includes(skillSlug)
|
|
1326
|
-
|| (descriptor.deniedToolsAppliesToSkills?.includes(skillSlug) ?? false);
|
|
1327
|
-
if (!touched)
|
|
1328
|
-
continue;
|
|
1329
|
-
const state = integrations[key];
|
|
1330
|
-
if (!state)
|
|
1331
|
-
continue;
|
|
1332
|
-
if (state.mode !== "delegated")
|
|
1333
|
-
continue;
|
|
1334
|
-
if (!state.delegatedBackend || state.delegatedBackend !== backendId)
|
|
1335
|
-
continue;
|
|
1336
|
-
const denied = state.deniedTools ?? [];
|
|
1337
|
-
if (denied.length === 0)
|
|
1338
|
-
continue;
|
|
1339
|
-
result = applyDeniedTools(result, key, backendId, denied);
|
|
1340
|
-
}
|
|
1341
|
-
return result;
|
|
1342
|
-
}
|
|
1343
|
-
/**
|
|
1344
|
-
* Remove any built-in skill directory under `destRoot` whose slug is not
|
|
1345
|
-
* in `keep`. Recognises a directory as a built-in by its presence under
|
|
1346
|
-
* the source `agent-assets/skills/` tree — anything else (user-authored
|
|
1347
|
-
* skill, accounts.md, etc.) is left alone, since `syncAllUserSkills` is
|
|
1348
|
-
* the canonical writer for those.
|
|
1349
|
-
*
|
|
1350
|
-
* Idempotent and side-effect-free when there is nothing to prune.
|
|
1351
|
-
* Exported for unit testing only.
|
|
1352
|
-
*/
|
|
1353
|
-
export function pruneStaleBuiltinSkillDirs(destRoot, sourceSkillsRoot, keep) {
|
|
1354
|
-
if (!existsSync(destRoot))
|
|
1355
|
-
return;
|
|
1356
|
-
if (!existsSync(sourceSkillsRoot))
|
|
1357
|
-
return;
|
|
1358
|
-
const keepSet = new Set(keep);
|
|
1359
|
-
// `listBuiltinSlugs` recurses one level into category subdirs (e.g.
|
|
1360
|
-
// WIKI_BUILDER_DESIGN.md §9.1 `wiki/`) so wiki slugs are recognised
|
|
1361
|
-
// as built-ins for prune purposes even though their source dir is
|
|
1362
|
-
// nested. Destination layout stays flat — `<destRoot>/<slug>/` for
|
|
1363
|
-
// every slug regardless of source category.
|
|
1364
|
-
const builtinSlugs = new Set(listBuiltinSlugs(sourceSkillsRoot));
|
|
1365
|
-
for (const entry of readdirSync(destRoot, { withFileTypes: true })) {
|
|
1366
|
-
if (!entry.isDirectory())
|
|
1367
|
-
continue;
|
|
1368
|
-
if (!builtinSlugs.has(entry.name))
|
|
1369
|
-
continue;
|
|
1370
|
-
if (keepSet.has(entry.name))
|
|
1371
|
-
continue;
|
|
1372
|
-
rmSync(join(destRoot, entry.name), { recursive: true, force: true });
|
|
1373
|
-
}
|
|
1374
|
-
}
|
|
1375
|
-
function readTreeFiles(root) {
|
|
1376
|
-
if (!existsSync(root)) {
|
|
1377
|
-
return [];
|
|
1378
|
-
}
|
|
1379
|
-
const files = [];
|
|
1380
|
-
for (const relPath of walkTree(root)) {
|
|
1381
|
-
const absPath = join(root, relPath);
|
|
1382
|
-
const stat = statSync(absPath);
|
|
1383
|
-
files.push({
|
|
1384
|
-
path: relPath,
|
|
1385
|
-
content: readFileSync(absPath, "utf-8"),
|
|
1386
|
-
updatedAt: stat.mtime.toISOString(),
|
|
1387
|
-
});
|
|
1388
|
-
}
|
|
1389
|
-
return files;
|
|
1390
|
-
}
|
|
1391
|
-
function walkTree(root, current = root) {
|
|
1392
|
-
if (!existsSync(current)) {
|
|
1393
|
-
return [];
|
|
1394
|
-
}
|
|
1395
|
-
const entries = readdirSync(current, { withFileTypes: true });
|
|
1396
|
-
const files = [];
|
|
1397
|
-
for (const entry of entries) {
|
|
1398
|
-
const absPath = join(current, entry.name);
|
|
1399
|
-
if (entry.isDirectory()) {
|
|
1400
|
-
files.push(...walkTree(root, absPath));
|
|
1401
|
-
continue;
|
|
1402
|
-
}
|
|
1403
|
-
files.push(relative(root, absPath));
|
|
850
|
+
writeFileSync(join(sessionDir, cliInstructionFileName(backendId)), instruction, "utf-8");
|
|
1404
851
|
}
|
|
1405
|
-
return files.sort();
|
|
1406
852
|
}
|
|
1407
|
-
//# sourceMappingURL=skills-compiler.js.map
|