@mycadet/assistant 0.12.9 → 0.12.10
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/Dockerfile +0 -8
- package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +1 -1
- package/openapi.yaml +62 -910
- package/package.json +3 -7
- package/scripts/build-test-fixtures.ts +1 -1
- package/scripts/generate-openapi.ts +22 -6
- package/scripts/postinstall.ts +4 -10
- package/scripts/run-tests.ts +0 -21
- package/src/__tests__/adaptive-thinking-repair.test.ts +19 -57
- package/src/__tests__/agent-loop.test.ts +0 -76
- package/src/__tests__/anthropic-provider.test.ts +6 -6
- package/src/__tests__/assert-not-live-db.ts +1 -1
- package/src/__tests__/assistant-id-boundary-guard.test.ts +3 -3
- package/src/__tests__/attachments-store-heic-normalize.test.ts +1 -1
- package/src/__tests__/attachments-store.test.ts +1 -1
- package/src/__tests__/audit-log-rotation.test.ts +1 -1
- package/src/__tests__/btw-routes.test.ts +1 -1
- package/src/__tests__/byok-default-profile-ensure.test.ts +21 -27
- package/src/__tests__/call-conversation-messages.test.ts +0 -5
- package/src/__tests__/call-recovery.test.ts +2 -7
- package/src/__tests__/call-routes-http.test.ts +0 -12
- package/src/__tests__/call-store.test.ts +2 -7
- package/src/__tests__/catalog-files.test.ts +7 -5
- package/src/__tests__/checker.test.ts +1 -1
- package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +4 -4
- package/src/__tests__/cloud-client-verify-credential.test.ts +0 -4
- package/src/__tests__/cloud-credential-catalog-cli.test.ts +14 -14
- package/src/__tests__/cloud-profile-guard.test.ts +48 -401
- package/src/__tests__/compaction-events.test.ts +2 -2
- package/src/__tests__/config-loader-backfill.test.ts +74 -163
- package/src/__tests__/config-loader-cloud-defaults.test.ts +11 -11
- package/src/__tests__/config-loader-corrupt.test.ts +10 -10
- package/src/__tests__/config-loader-quarantine-notice.test.ts +7 -7
- package/src/__tests__/config-loader-validation-reset-notice.test.ts +11 -11
- package/src/__tests__/config-schema.test.ts +26 -27
- package/src/__tests__/config-set-route.test.ts +2 -6
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +28 -300
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +39 -246
- package/src/__tests__/conversation-agent-loop.test.ts +2 -58
- package/src/__tests__/conversation-clear-safety.test.ts +0 -30
- package/src/__tests__/conversation-inference-profile-route.test.ts +1 -1
- package/src/__tests__/conversation-queue.test.ts +1 -1
- package/src/__tests__/conversation-runtime-assembly.test.ts +1 -1
- package/src/__tests__/conversation-skill-tools.test.ts +4 -444
- package/src/__tests__/conversation-slash-commands.test.ts +1 -1
- package/src/__tests__/conversation-store.test.ts +1 -84
- package/src/__tests__/conversation-surface-state.test.ts +0 -16
- package/src/__tests__/credential-health-service.test.ts +14 -1
- package/src/__tests__/credential-record-retire.test.ts +1 -1
- package/src/__tests__/credential-record-write-through.test.ts +1 -1
- package/src/__tests__/credential-security-invariants.test.ts +0 -145
- package/src/__tests__/custom-profile-ensure.test.ts +1 -1
- package/src/__tests__/default-profile-catalog-fallback.test.ts +5 -15
- package/src/__tests__/deterministic-verification-control-plane.test.ts +0 -2
- package/src/__tests__/dictation-profile-store.test.ts +6 -6
- package/src/__tests__/disk-usage.test.ts +28 -164
- package/src/__tests__/docker-signing-key-bootstrap.test.ts +1 -1
- package/src/__tests__/embedding-cloud-proxy-selection.test.ts +1 -1
- package/src/__tests__/emit-event-signal.test.ts +1 -1
- package/src/__tests__/gateway-client-cloud-outbound.test.ts +3 -3
- package/src/__tests__/gateway-only-enforcement.test.ts +1 -1
- package/src/__tests__/guardian-dispatch.test.ts +0 -13
- package/src/__tests__/helpers/seed-app.ts +1 -1
- package/src/__tests__/host-cu-routes-targeted.test.ts +1 -1
- package/src/__tests__/host-shell-tool.test.ts +1 -1
- package/src/__tests__/identity-routes.test.ts +1 -1
- package/src/__tests__/inference-profile-session-handler.test.ts +1 -1
- package/src/__tests__/inference-profile-session-ipc.test.ts +1 -1
- package/src/__tests__/injector-chain.test.ts +1 -1
- package/src/__tests__/injector-config-quarantine-notice.test.ts +1 -1
- package/src/__tests__/injector-config-validation-reset-notice.test.ts +1 -1
- package/src/__tests__/injector-pkb-v2-silenced.test.ts +1 -1
- package/src/__tests__/{platform.test.ts → layout.test.ts} +1 -1
- package/src/__tests__/list-all-apps.test.ts +1 -1
- package/src/__tests__/live-workspace-guard.test.ts +2 -2
- package/src/__tests__/llm-resolver-override-or-default.test.ts +5 -6
- package/src/__tests__/llm-resolver.test.ts +7 -7
- package/src/__tests__/llm-schema-fallback-profile.test.ts +9 -10
- package/src/__tests__/llm-usage-store.test.ts +0 -495
- package/src/__tests__/log-export-routes.test.ts +1 -1
- package/src/__tests__/mcp-config-secret-boundary.test.ts +12 -53
- package/src/__tests__/mcp-list-plugin-servers.test.ts +1 -1
- package/src/__tests__/memory-config-file-parity.test.ts +1 -1
- package/src/__tests__/memory-v2-static-injector.test.ts +1 -1
- package/src/__tests__/messages-read-boundary-guard.test.ts +0 -2
- package/src/__tests__/notification-guardian-path.test.ts +0 -7
- package/src/__tests__/onboarding-persona-write.test.ts +1 -1
- package/src/__tests__/openai-provider.test.ts +8 -8
- package/src/__tests__/path-policy.test.ts +1 -1
- package/src/__tests__/persona-resolver.test.ts +1 -1
- package/src/__tests__/plugin-app-serve-routes.test.ts +1 -1
- package/src/__tests__/plugin-effective-enabled-set.test.ts +1 -1
- package/src/__tests__/plugin-import-boundary-guard.test.ts +4 -6
- package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +0 -3
- package/src/__tests__/provider-cloud-proxy-integration.test.ts +1 -5
- package/src/__tests__/provider-connections-backfill.test.ts +10 -10
- package/src/__tests__/prune-old-conversations-job.test.ts +6 -31
- package/src/__tests__/resolve-app.test.ts +1 -1
- package/src/__tests__/run-due-schedules.test.ts +1 -1
- package/src/__tests__/scaffold-managed-skill-tool.test.ts +0 -53
- package/src/__tests__/schedule-routes.test.ts +1 -1
- package/src/__tests__/schedule-store.test.ts +1 -1
- package/src/__tests__/secret-routes-cloud-proxy.test.ts +1 -1
- package/src/__tests__/skill-load-plugin-scope.test.ts +1 -1
- package/src/__tests__/surface-completion-compaction-boundary.test.ts +1 -1
- package/src/__tests__/tool-approval-handler.test.ts +1 -1
- package/src/__tests__/tool-audit.test.ts +5 -235
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +54 -114
- package/src/__tests__/tools-get-route.test.ts +1 -1
- package/src/__tests__/turn-outcome-read.test.ts +1 -1
- package/src/__tests__/twilio-routes.test.ts +0 -1
- package/src/__tests__/usage-attribution.test.ts +0 -31
- package/src/__tests__/verification-control-plane-policy.test.ts +3 -10
- package/src/__tests__/visible-app-context.test.ts +1 -1
- package/src/__tests__/voice-ingress-preflight.test.ts +1 -1
- package/src/__tests__/workspace-git-service.test.ts +1 -1
- package/src/__tests__/workspace-greetings.test.ts +1 -1
- package/src/acp/__tests__/helpers/acp-config-stub.ts +1 -1
- package/src/activation/progress-store.ts +1 -1
- package/src/activation/turn-hooks.ts +1 -1
- package/src/agent/loop.ts +0 -51
- package/src/apps/app-store.ts +1 -1
- package/src/avatar/__tests__/avatar-store.test.ts +2 -172
- package/src/avatar/accent-backfill.ts +1 -1
- package/src/avatar/avatar-manifest.ts +1 -1
- package/src/avatar/avatar-store.ts +10 -69
- package/src/avatar/ensure-raster.ts +1 -1
- package/src/avatar/identity-avatar.ts +1 -1
- package/src/avatar/sync-avatar.ts +1 -1
- package/src/avatar/traits-png-sync.ts +1 -1
- package/src/bundler/compiler-tools.ts +1 -1
- package/src/bundler/package-resolver.ts +1 -1
- package/src/calls/__tests__/call-controller.test.ts +25 -27
- package/src/calls/active-call-lease.ts +1 -1
- package/src/calls/call-controller.ts +3 -3
- package/src/calls/call-domain.ts +4 -8
- package/src/calls/call-store.ts +2 -76
- package/src/calls/resolve-call-tts-provider.ts +3 -3
- package/src/calls/twilio-config.ts +3 -3
- package/src/calls/twilio-rest.ts +2 -2
- package/src/calls/voice-ingress-preflight.ts +2 -2
- package/src/cli/bundled-modules.ts +0 -2
- package/src/cli/commands/__tests__/apps.test.ts +1 -1
- package/src/cli/commands/__tests__/plugins.test.ts +9 -66
- package/src/cli/commands/__tests__/ps.test.ts +67 -0
- package/src/cli/commands/auth.help.ts +2 -2
- package/src/cli/commands/avatar.ts +1 -1
- package/src/cli/commands/changelog.ts +1 -1
- package/src/cli/commands/cloud/__tests__/subscription.test.ts +2 -2
- package/src/cli/commands/cloud/index.help.ts +1 -1
- package/src/cli/commands/cloud/index.ts +2 -2
- package/src/cli/commands/db/refresh.ts +1 -1
- package/src/cli/commands/db/repair-step-conversation-backfill.ts +1 -1
- package/src/cli/commands/db/repair.ts +1 -1
- package/src/cli/commands/db/status.ts +1 -1
- package/src/cli/commands/inference-profiles.ts +1 -12
- package/src/cli/commands/memory/__tests__/memory-v3.test.ts +1 -116
- package/src/cli/commands/memory/index.help.ts +1 -43
- package/src/cli/commands/memory/memory-v3.ts +0 -64
- package/src/cli/commands/plugins.ts +54 -205
- package/src/cli/commands/ps.ts +5 -2
- package/src/cli/commands/status.ts +1 -1
- package/src/cli/index.help.ts +0 -2
- package/src/cli/lib/__tests__/inspect-plugin.test.ts +36 -66
- package/src/cli/lib/__tests__/install-from-cloud.test.ts +1 -1
- package/src/cli/lib/__tests__/install-from-github.test.ts +41 -117
- package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +2 -185
- package/src/cli/lib/__tests__/plugin-catalog-resolve.test.ts +36 -66
- package/src/cli/lib/__tests__/plugin-catalog-visibility.test.ts +4 -6
- package/src/cli/lib/__tests__/plugin-details.test.ts +113 -96
- package/src/cli/lib/__tests__/search-plugins.test.ts +9 -16
- package/src/cli/lib/__tests__/uninstall-plugin.test.ts +1 -1
- package/src/cli/lib/__tests__/upgrade-plugin.test.ts +38 -15
- package/src/cli/lib/diff-plugin.ts +1 -1
- package/src/cli/lib/inspect-plugin.ts +13 -97
- package/src/cli/lib/install-from-cloud.ts +1 -1
- package/src/cli/lib/install-from-github.ts +75 -154
- package/src/cli/lib/install-plugin-dependencies.ts +1 -1
- package/src/cli/lib/list-installed-plugins.ts +1 -1
- package/src/cli/lib/open-browser.ts +1 -1
- package/src/cli/lib/plugin-catalog-cache.ts +8 -51
- package/src/cli/lib/plugin-catalog-resolve.ts +3 -22
- package/src/cli/lib/plugin-details.ts +5 -27
- package/src/cli/lib/plugin-marketplace.ts +18 -266
- package/src/cli/lib/search-plugins.ts +23 -43
- package/src/cli/lib/toggle-plugin.ts +1 -1
- package/src/cli/lib/uninstall-plugin.ts +1 -1
- package/src/cli/lib/upgrade-plugin.ts +3 -49
- package/src/cli/program.ts +1 -3
- package/src/cli.ts +1 -1
- package/src/cloud/client.ts +0 -6
- package/src/cloud/consent-cache.test.ts +22 -201
- package/src/cloud/consent-cache.ts +16 -111
- package/src/cloud/sync-identity.ts +1 -1
- package/src/config/__tests__/chat-settings.test.ts +1 -1
- package/src/config/__tests__/cloud-identity.test.ts +15 -2
- package/src/config/__tests__/default-plugin-skill-discovery.test.ts +1 -1
- package/src/config/__tests__/default-profile-catalog.test.ts +12 -51
- package/src/config/__tests__/deployment-context-defaults.test.ts +13 -13
- package/src/config/__tests__/loader-callsite-strip-fallback.test.ts +4 -4
- package/src/config/__tests__/loader-last-known-good.test.ts +9 -9
- package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +7 -7
- package/src/config/__tests__/plugin-resident-skill-discovery.test.ts +1 -1
- package/src/config/__tests__/profile-materialization.test.ts +2 -4
- package/src/config/__tests__/sync-gated-profiles.test.ts +1 -106
- package/src/config/acp-agent-write.ts +1 -1
- package/src/config/bundled-skills/settings/tools/open-system-settings.test.ts +1 -1
- package/src/config/bundled-skills/settings/tools/open-system-settings.ts +1 -1
- package/src/config/call-site-defaults.ts +0 -6
- package/src/config/cloud-identity.ts +12 -5
- package/src/config/composer-preferences.ts +1 -1
- package/src/config/default-profile-catalog.ts +8 -75
- package/src/config/default-profile-names.ts +2 -25
- package/src/config/env-registry.ts +1 -14
- package/src/config/env.ts +8 -6
- package/src/config/llm-resolver.ts +1 -2
- package/src/config/loader.ts +13 -17
- package/src/config/profile-materialization.ts +1 -1
- package/src/config/schema.ts +1 -7
- package/src/config/schemas/call-site-catalog.ts +0 -7
- package/src/config/schemas/llm.ts +22 -27
- package/src/config/seed-inference-profiles.ts +16 -17
- package/src/config/skills.ts +2 -2
- package/src/config/sync-gated-profiles.ts +6 -24
- package/src/credential-health/credential-health-service.ts +10 -3
- package/src/daemon/approval-generators.ts +3 -3
- package/src/daemon/config-watcher.ts +2 -2
- package/src/daemon/conversation-agent-loop-handlers.ts +0 -18
- package/src/daemon/conversation-agent-loop.ts +6 -97
- package/src/daemon/conversation-process.ts +1 -1
- package/src/daemon/conversation-skill-tools.ts +4 -72
- package/src/daemon/conversation-store.ts +1 -1
- package/src/daemon/conversation-surface-state.ts +0 -33
- package/src/daemon/conversation-surfaces.ts +1 -86
- package/src/daemon/conversation-tool-setup.test.ts +1 -1
- package/src/daemon/conversation-tool-setup.ts +0 -23
- package/src/daemon/conversation.ts +3 -5
- package/src/daemon/daemon-control.ts +3 -3
- package/src/daemon/dictation-profile-store.ts +3 -3
- package/src/daemon/event-loop-watchdog.test.ts +2 -198
- package/src/daemon/event-loop-watchdog.ts +0 -185
- package/src/daemon/external-plugins-bootstrap.ts +1 -1
- package/src/daemon/first-greeting.ts +1 -1
- package/src/daemon/handlers/skills.ts +1 -1
- package/src/daemon/host-app-control-proxy.ts +1 -1
- package/src/daemon/host-cu-proxy.ts +2 -2
- package/src/daemon/identity-helpers.ts +1 -1
- package/src/daemon/lifecycle.ts +11 -15
- package/src/daemon/main.ts +1 -1
- package/src/daemon/now-scratchpad.ts +1 -1
- package/src/daemon/process-message.ts +4 -4
- package/src/daemon/profiler-run-store.ts +2 -2
- package/src/daemon/providers-setup.ts +2 -2
- package/src/daemon/shutdown-handlers.ts +0 -10
- package/src/daemon/sqlite-corruption-watchdog.test.ts +2 -142
- package/src/daemon/sqlite-corruption-watchdog.ts +17 -81
- package/src/daemon/tool-side-effects.ts +1 -1
- package/src/desktop/desktop-session-manager.ts +1 -1
- package/src/desktop/desktop-wallpaper-renderer.ts +1 -1
- package/src/heartbeat/heartbeat-service.ts +1 -1
- package/src/home/feed-writer.ts +1 -1
- package/src/home/home-greeting-cache.ts +1 -1
- package/src/home/relationship-state-writer.ts +2 -2
- package/src/hooks/__tests__/hook-live-reload.test.ts +1 -1
- package/src/hooks/hook-loader.ts +2 -2
- package/src/inbound/__tests__/oauth-callback-url.test.ts +2 -2
- package/src/inbound/oauth-callback-url.ts +3 -3
- package/src/ipc/__tests__/attachment-ipc.test.ts +1 -1
- package/src/ipc/socket-path.ts +1 -1
- package/src/live-voice/__tests__/live-voice-archive.test.ts +1 -1
- package/src/live-voice/__tests__/live-voice-vad.test.ts +1 -1
- package/src/live-voice/live-voice-session.ts +3 -66
- package/src/mcp/__tests__/effective-config.test.ts +1 -1
- package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +2 -2
- package/src/mcp/__tests__/mcp-oauth-provider.test.ts +2 -3
- package/src/mcp/__tests__/reload-signal-emission.test.ts +1 -1
- package/src/mcp/__tests__/reload-signal.test.ts +1 -1
- package/src/mcp/__tests__/workspace-mcp-config.test.ts +19 -21
- package/src/mcp/reload-signal.ts +1 -1
- package/src/mcp/workspace-mcp-config.ts +1 -23
- package/src/messaging/draft-store.ts +1 -1
- package/src/monitoring/__tests__/active-conversations.test.ts +1 -1
- package/src/monitoring/__tests__/page-cache.test.ts +1 -1
- package/src/monitoring/__tests__/stall-capture.test.ts +1 -1
- package/src/monitoring/__tests__/workspace-git-heartbeat.test.ts +1 -1
- package/src/monitoring/active-conversations.ts +1 -1
- package/src/monitoring/control.ts +1 -1
- package/src/monitoring/daemon-boot-time.ts +1 -1
- package/src/monitoring/daemon-heartbeat.ts +1 -1
- package/src/monitoring/page-cache.ts +1 -1
- package/src/monitoring/plugin-auto-update.ts +1 -7
- package/src/monitoring/plugin-source-watch.ts +1 -1
- package/src/monitoring/recovery/db.ts +1 -1
- package/src/monitoring/recovery/inflight-content.ts +1 -1
- package/src/monitoring/resource-sampler.ts +3 -14
- package/src/monitoring/stall-capture.ts +1 -1
- package/src/monitoring/worker.ts +9 -76
- package/src/monitoring/workspace-git-heartbeat.ts +1 -1
- package/src/oauth/connect-orchestrator.ts +4 -4
- package/src/permissions/checker.ts +1 -1
- package/src/permissions/workspace-policy.ts +1 -1
- package/src/persistence/__tests__/main-db-readonly-probe.ts +27 -52
- package/src/persistence/__tests__/message-content-file.test.ts +1 -1
- package/src/persistence/__tests__/slow-sync-log.test.ts +0 -2
- package/src/persistence/attachments-store.ts +1 -1
- package/src/persistence/conversation-crud.ts +1 -38
- package/src/persistence/conversation-directories.ts +1 -1
- package/src/persistence/conversation-types.ts +0 -8
- package/src/persistence/db-async-query.ts +1 -1
- package/src/persistence/db-connection.ts +11 -1
- package/src/persistence/db-init.ts +1 -1
- package/src/persistence/db-maintenance.ts +1 -1
- package/src/persistence/embeddings/__tests__/embedding-local-lifecycle.test.ts +1 -1
- package/src/persistence/embeddings/embedding-local.ts +4 -4
- package/src/persistence/embeddings/embedding-runtime-manager.ts +1 -1
- package/src/persistence/embeddings/qdrant-client.ts +1 -1
- package/src/persistence/embeddings/qdrant-manager.ts +1 -1
- package/src/persistence/job-handlers/__tests__/message-lexical-backfill.test.ts +1 -1
- package/src/persistence/job-handlers/__tests__/message-lexical-enqueue.test.ts +1 -1
- package/src/persistence/job-handlers/cleanup.ts +8 -17
- package/src/persistence/llm-usage-store.ts +2 -229
- package/src/persistence/message-content-file.ts +1 -1
- package/src/persistence/migrations/209-strip-thinking-from-consolidated.ts +1 -1
- package/src/persistence/migrations/222-strip-placeholder-sentinels-from-messages.ts +1 -1
- package/src/persistence/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/306-rewrite-frontier-profile-pins.test.ts +1 -1
- package/src/persistence/migrations/329-move-onboarding-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/330-move-auth-fallback-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/331-move-lifecycle-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/332-move-skill-loaded-events-to-telemetry-db.test.ts +13 -0
- package/src/persistence/migrations/333-create-telemetry-events-table.test.ts +7 -4
- package/src/persistence/migrations/334-backfill-telemetry-events-outbox.test.ts +13 -0
- package/src/persistence/migrations/387-drop-telemetry-tables.ts +51 -0
- package/src/persistence/migrations/__tests__/327-create-flush-checkpoints.test.ts +9 -1
- package/src/persistence/migrations/__tests__/387-drop-telemetry-tables.test.ts +79 -0
- package/src/persistence/migrations/helpers/relocation.ts +1 -1
- package/src/persistence/migrations/run-migrations.ts +1 -1
- package/src/persistence/migrations/validate-migration-state.ts +1 -1
- package/src/persistence/raw-query.ts +1 -29
- package/src/persistence/slow-sync-log.ts +0 -23
- package/src/persistence/steps.ts +2 -0
- package/src/{telemetry → persistence}/tool-audit.ts +6 -121
- package/src/plugin-api/index.ts +1 -1
- package/src/plugin-api/plugin-name-env.ts +1 -1
- package/src/plugins/__tests__/installed-plugin-dirs.test.ts +1 -1
- package/src/plugins/collect-source-versions.ts +1 -1
- package/src/plugins/defaults/channel/package.json +1 -1
- package/src/plugins/defaults/cloud-hosted/package.json +1 -1
- package/src/plugins/defaults/compaction/package.json +1 -1
- package/src/plugins/defaults/documents/package.json +1 -1
- package/src/plugins/defaults/empty-response/package.json +1 -1
- package/src/plugins/defaults/exploration-drift/package.json +1 -1
- package/src/plugins/defaults/image-fallback/package.json +1 -1
- package/src/plugins/defaults/image-recovery/package.json +1 -1
- package/src/plugins/defaults/max-tokens-continue/package.json +1 -1
- package/src/plugins/defaults/memory/__tests__/db-async-query.test.ts +1 -1
- package/src/plugins/defaults/memory/__tests__/db-maintenance.test.ts +1 -1
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +0 -82
- package/src/plugins/defaults/memory/__tests__/memory-retrospective-skill-card.test.ts +0 -41
- package/src/plugins/defaults/memory/__tests__/memory-tier-boundary-guard.test.ts +0 -2
- package/src/plugins/defaults/memory/memory-retrospective-job.ts +3 -52
- package/src/plugins/defaults/memory/memory-retrospective-skill-card.ts +0 -18
- package/src/plugins/defaults/memory/package.json +1 -1
- package/src/plugins/defaults/memory/paths.ts +4 -4
- package/src/plugins/defaults/memory/src/__tests__/memory-worker-routes.test.ts +1 -1
- package/src/plugins/defaults/memory/src/memory-v2-routes.ts +5 -5
- package/src/plugins/defaults/memory/src/memory-v3-routes.ts +0 -207
- package/src/plugins/defaults/memory/src/memory-worker-routes.ts +1 -1
- package/src/plugins/defaults/memory/startup.ts +1 -22
- package/src/plugins/defaults/memory/v3/__tests__/orchestrate.test.ts +2 -253
- package/src/plugins/defaults/memory/v3/orchestrate.ts +5 -129
- package/src/plugins/defaults/memory/worker-control.ts +1 -1
- package/src/plugins/defaults/memory/worker.ts +2 -2
- package/src/plugins/defaults/session/package.json +1 -1
- package/src/plugins/defaults/surface-completion-nudge/package.json +1 -1
- package/src/plugins/defaults/task-progress/package.json +1 -1
- package/src/plugins/defaults/task-progress-nudge/package.json +1 -1
- package/src/plugins/defaults/title-generate/package.json +1 -1
- package/src/plugins/defaults/tool-error/package.json +1 -1
- package/src/plugins/defaults/tool-result-truncate/package.json +1 -1
- package/src/plugins/defaults/turn-context/package.json +1 -1
- package/src/plugins/defaults/workspace/injectors.ts +1 -1
- package/src/plugins/defaults/workspace/package.json +1 -1
- package/src/plugins/disabled-state.ts +1 -1
- package/src/plugins/ensure-plugin-api-shim.ts +1 -1
- package/src/plugins/ensure-shared-dep-links.ts +1 -1
- package/src/plugins/installed-plugin-dirs.ts +1 -1
- package/src/plugins/mcp-servers.ts +7 -9
- package/src/plugins/mtime-cache.ts +2 -2
- package/src/plugins/source-versions.ts +1 -1
- package/src/prompts/bootstrap-cleanup.ts +1 -1
- package/src/prompts/persona-resolver.ts +1 -1
- package/src/prompts/sections.ts +2 -2
- package/src/prompts/system-prompt.ts +10 -42
- package/src/prompts/templates/BOOTSTRAP-ACTIVATION-RAIL.md +0 -37
- package/src/providers/__tests__/cadet-connection-routing.test.ts +2 -2
- package/src/providers/cadet/client.ts +1 -1
- package/src/providers/inference/__tests__/base-url-route-validation.test.ts +1 -1
- package/src/providers/inference/adapter-factory.ts +1 -1
- package/src/providers/inference/backfill.ts +3 -10
- package/src/providers/inference/profile-probe.ts +1 -1
- package/src/providers/retry.ts +0 -2
- package/src/providers/types.ts +0 -7
- package/src/providers/usage-tracking.ts +1 -1
- package/src/routes/__tests__/route-host.test.ts +1 -1
- package/src/routes/control.ts +1 -1
- package/src/routes/route-host-client.ts +1 -1
- package/src/routes/worker.ts +2 -2
- package/src/runtime/agent-wake.ts +1 -1
- package/src/runtime/assistant-stream-state.ts +1 -1
- package/src/runtime/auth/token-service.ts +1 -1
- package/src/runtime/background-job-runner.ts +1 -1
- package/src/runtime/middleware/twilio-validation.ts +2 -2
- package/src/runtime/routes/__tests__/app-pin-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/apps-refresh-route.test.ts +1 -1
- package/src/runtime/routes/__tests__/avatar-state-routes.test.ts +3 -33
- package/src/runtime/routes/__tests__/cloud-credits-routes.test.ts +5 -4
- package/src/runtime/routes/__tests__/cloud-invoice-routes.test.ts +4 -3
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +59 -287
- package/src/runtime/routes/__tests__/default-plugin-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/deprecated-route-context.test.ts +15 -62
- package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +105 -12
- package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/monitoring-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/plugins-routes.test.ts +47 -211
- package/src/runtime/routes/__tests__/route-host-worker-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/schedule-routes-disarm-reason.test.ts +1 -1
- package/src/runtime/routes/__tests__/schedule-worker-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-route-dispatcher-host.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-routes-cli.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-routes-notices.test.ts +1 -1
- package/src/runtime/routes/__tests__/user-routes-request.test.ts +1 -1
- package/src/runtime/routes/app-management-routes.ts +1 -1
- package/src/runtime/routes/attachment-routes.ts +1 -1
- package/src/runtime/routes/audit-routes.ts +1 -1
- package/src/runtime/routes/avatar-routes.ts +3 -10
- package/src/runtime/routes/cloud-routes.ts +3 -3
- package/src/runtime/routes/content-source-routes.ts +1 -1
- package/src/runtime/routes/conversation-query-routes.ts +60 -621
- package/src/runtime/routes/conversation-routes.ts +1 -38
- package/src/runtime/routes/debug-routes.ts +1 -1
- package/src/runtime/routes/deprecated-route-context.ts +5 -61
- package/src/runtime/routes/heartbeat-routes.ts +1 -1
- package/src/runtime/routes/identity-routes.ts +1 -1
- package/src/runtime/routes/index.ts +0 -6
- package/src/runtime/routes/inference-profile-session-handler.ts +3 -3
- package/src/runtime/routes/inference-profiles-routes.ts +48 -21
- package/src/runtime/routes/inference-provider-connection-routes.ts +0 -1
- package/src/runtime/routes/llm-call-sites-routes.ts +3 -3
- package/src/runtime/routes/log-export/__tests__/installed-inventory.test.ts +1 -1
- package/src/runtime/routes/log-export/__tests__/workspace-allowlist-error-contract.test.ts +1 -1
- package/src/runtime/routes/log-export/__tests__/workspace-allowlist.test.ts +1 -1
- package/src/runtime/routes/log-export/workspace-allowlist.ts +1 -1
- package/src/runtime/routes/log-export-routes.ts +17 -15
- package/src/runtime/routes/migration-rollback-routes.ts +1 -1
- package/src/runtime/routes/migration-routes.ts +2 -3
- package/src/runtime/routes/monitoring-routes.ts +2 -2
- package/src/runtime/routes/oauth-providers.ts +5 -5
- package/src/runtime/routes/plugins-routes.ts +38 -163
- package/src/runtime/routes/profiler-routes.ts +1 -1
- package/src/runtime/routes/route-host-worker-routes.ts +1 -1
- package/src/runtime/routes/sanity-routes.ts +1 -1
- package/src/runtime/routes/schedule-routes.ts +1 -1
- package/src/runtime/routes/schedule-worker-routes.ts +1 -1
- package/src/runtime/routes/settings-routes.ts +1 -1
- package/src/runtime/routes/sounds-config-routes.ts +1 -1
- package/src/runtime/routes/surface-conversation-resolver.ts +1 -7
- package/src/runtime/routes/user-route-dispatcher.ts +1 -3
- package/src/runtime/routes/user-route-import.ts +1 -1
- package/src/runtime/routes/user-route-resolution.ts +1 -1
- package/src/runtime/routes/user-routes-cli.ts +1 -1
- package/src/runtime/routes/workspace-commit-routes.ts +1 -1
- package/src/runtime/routes/workspace-greetings.ts +1 -1
- package/src/runtime/routes/workspace-routes.ts +1 -1
- package/src/runtime/routes/workspace-utils.ts +1 -1
- package/src/runtime/sync/resource-sync-events.ts +1 -1
- package/src/schedule/__tests__/plugin-schedule-declarations.test.ts +1 -1
- package/src/schedule/__tests__/plugin-schedule-reconciler.test.ts +1 -1
- package/src/schedule/plugin-schedule-availability.ts +1 -1
- package/src/schedule/plugin-schedule-declarations.ts +1 -1
- package/src/schedule/run-script.ts +1 -1
- package/src/schedule/scheduler.ts +1 -11
- package/src/schedule/worker-control.ts +1 -1
- package/src/schedule/worker.ts +3 -3
- package/src/security/oauth2.ts +2 -2
- package/src/security/secret-allowlist.ts +1 -1
- package/src/signals/cancel.ts +1 -1
- package/src/signals/conversation-undo.ts +1 -1
- package/src/signals/emit-event.ts +1 -1
- package/src/signals/event-stream.ts +1 -1
- package/src/signals/user-message.ts +1 -1
- package/src/skills/catalog-install.ts +2 -1
- package/src/skills/clawhub.ts +1 -1
- package/src/skills/cloud-store.ts +1 -1
- package/src/skills/path-classifier.ts +1 -1
- package/src/skills/skill-history.ts +1 -1
- package/src/skills/skillssh-registry.ts +1 -1
- package/src/skills/uninstall.ts +1 -1
- package/src/skills/workspace-skill-md-signature.ts +1 -1
- package/src/subagent/manager.ts +1 -1
- package/src/theme/workspace-theme.ts +1 -1
- package/src/tools/browser/auth-cache.ts +1 -1
- package/src/tools/browser/browser-manager.ts +1 -1
- package/src/tools/browser/runtime-check.ts +1 -1
- package/src/tools/executor.ts +4 -4
- package/src/tools/filesystem/write.ts +1 -1
- package/src/tools/permission-checker.ts +2 -51
- package/src/tools/run-standalone.ts +1 -1
- package/src/tools/skills/format-input-schema.ts +1 -1
- package/src/tools/skills/load.ts +1 -1
- package/src/tools/skills/scaffold-cloud.ts +0 -32
- package/src/tools/terminal/safe-env.ts +1 -2
- package/src/tools/terminal/sanitized-bash.ts +1 -1
- package/src/tools/terminal/shell.ts +1 -1
- package/src/tools/tool-approval-handler.ts +4 -1
- package/src/tools/workflows/manage-workflows.ts +2 -2
- package/src/tools/workflows/run-workflow.test.ts +1 -1
- package/src/tools/workspace-tools/loader.ts +1 -1
- package/src/tts/synthesis-stream.ts +2 -2
- package/src/usage/attribution.ts +1 -11
- package/src/util/browser.ts +1 -1
- package/src/util/bun-runtime.ts +2 -1
- package/src/util/device-id.ts +1 -1
- package/src/util/disk-usage.ts +4 -139
- package/src/util/layout.ts +3 -3
- package/src/util/logger.ts +1 -1
- package/src/util/logs-db-path.ts +1 -1
- package/src/util/memory-db-path.ts +1 -1
- package/src/util/{platform.ts → os.ts} +5 -30
- package/src/util/process-tree.ts +19 -0
- package/src/util/sqlite3-runtime.ts +1 -1
- package/src/util/telemetry-db-path.ts +1 -1
- package/src/watcher/__tests__/engine.test.ts +0 -23
- package/src/watcher/engine.ts +0 -7
- package/src/windows-compiled-cli.ts +0 -4
- package/src/windows-compiled-worker-entry.ts +0 -6
- package/src/workflows/leaf-runner.test.ts +1 -1
- package/src/workflows/leaf-runner.ts +1 -1
- package/src/workflows/library.ts +1 -1
- package/src/workspace/adaptive-thinking-repair.ts +5 -24
- package/src/workspace/byok-default-profile-ensure.ts +24 -26
- package/src/workspace/custom-profile-ensure.ts +2 -2
- package/src/workspace/git-service.ts +1 -1
- package/src/workspace/hatched-date.ts +1 -1
- package/src/workspace/migrations/038-unify-llm-callsite-configs.ts +2 -2
- package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +1 -1
- package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +1 -1
- package/src/workspace/migrations/077-seed-memory-router-callsite.ts +1 -1
- package/src/workspace/migrations/registry.ts +0 -4
- package/src/workspace/turn-commit.ts +1 -1
- package/docs/activation-funnel-telemetry.md +0 -324
- package/scripts/bundled-plugin-packages.ts +0 -154
- package/scripts/generate-bundled-plugin-packages.ts +0 -29
- package/src/__tests__/activation-early-marking.test.ts +0 -114
- package/src/__tests__/auth-fallback-events-store.test.ts +0 -99
- package/src/__tests__/config-get-vision-flag.test.ts +0 -139
- package/src/__tests__/conversation-surfaces-activation-emit.test.ts +0 -400
- package/src/__tests__/internal-telemetry-routes.test.ts +0 -213
- package/src/__tests__/telemetry-routes.test.ts +0 -182
- package/src/__tests__/turn-events-store.test.ts +0 -376
- package/src/__tests__/ui-channel-variants.test.ts +0 -53
- package/src/avatar/__tests__/avatar-changed-telemetry.test.ts +0 -217
- package/src/avatar/avatar-changed-telemetry.ts +0 -128
- package/src/calls/__tests__/call-funnel-telemetry.test.ts +0 -204
- package/src/cli/commands/telemetry.help.ts +0 -27
- package/src/cli/commands/telemetry.ts +0 -83
- package/src/cli/lib/__tests__/local-plugin-upgrade.test.ts +0 -251
- package/src/cli/lib/__tests__/plugin-catalog-local.test.ts +0 -113
- package/src/cli/lib/__tests__/plugin-marketplace.test.ts +0 -384
- package/src/cli/lib/__tests__/plugin-pin-history.test.ts +0 -164
- package/src/cli/lib/__tests__/plugins-install-offline.test.ts +0 -228
- package/src/cli/lib/bundled-marketplace.json +0 -1575
- package/src/cli/lib/bundled-plugin-packages.json +0 -827
- package/src/cli/lib/bundled-plugin-packages.ts +0 -87
- package/src/cli/lib/plugin-catalog-local.ts +0 -94
- package/src/cli/lib/plugin-pin-history.ts +0 -276
- package/src/cloud/feature-gate.ts +0 -8
- package/src/config/__tests__/cloud-rehydration.test.ts +0 -180
- package/src/config/cloud-rehydration.ts +0 -35
- package/src/daemon/__tests__/auto-profile-router.test.ts +0 -380
- package/src/daemon/auto-profile-router.ts +0 -428
- package/src/live-voice/__tests__/live-voice-session-telemetry.test.ts +0 -391
- package/src/monitoring/__tests__/db-integrity-sample.test.ts +0 -113
- package/src/monitoring/__tests__/oom-kill-reporter.test.ts +0 -374
- package/src/monitoring/db-integrity-check.ts +0 -163
- package/src/monitoring/db-integrity-sample.ts +0 -176
- package/src/monitoring/oom-kill-reporter.ts +0 -469
- package/src/onboarding/__tests__/onboarding-events-store.test.ts +0 -158
- package/src/onboarding/onboarding-events-store.ts +0 -296
- package/src/persistence/__tests__/raw-query-telemetry.test.ts +0 -76
- package/src/persistence/lifecycle-events-store.test.ts +0 -134
- package/src/persistence/lifecycle-events-store.ts +0 -110
- package/src/plugins/defaults/memory/__tests__/activation-session-store.test.ts +0 -76
- package/src/plugins/defaults/memory/activation-session-store.ts +0 -50
- package/src/plugins/defaults/memory/src/__tests__/memory-v3-gate-stats.test.ts +0 -281
- package/src/runtime/routes/auto-profile-routes.ts +0 -83
- package/src/runtime/routes/internal-telemetry-routes.ts +0 -142
- package/src/runtime/routes/telemetry-routes.ts +0 -274
- package/src/security/auth-fallback-events-store.ts +0 -57
- package/src/telemetry/__tests__/activation-funnel.test.ts +0 -95
- package/src/telemetry/__tests__/config-setting-events-store.test.ts +0 -63
- package/src/telemetry/__tests__/config-setting-snapshot.test.ts +0 -143
- package/src/telemetry/__tests__/flush-checkpoints.test.ts +0 -56
- package/src/telemetry/__tests__/live-voice-funnel.test.ts +0 -174
- package/src/telemetry/__tests__/outbox-test-harness.ts +0 -85
- package/src/telemetry/__tests__/phone-call-funnel.test.ts +0 -72
- package/src/telemetry/__tests__/telemetry-event-fixtures.ts +0 -282
- package/src/telemetry/__tests__/watchdog-events-store.test.ts +0 -71
- package/src/telemetry/activation-funnel.ts +0 -172
- package/src/telemetry/config-setting-events-store.ts +0 -40
- package/src/telemetry/config-setting-snapshot.ts +0 -170
- package/src/telemetry/flush-checkpoints.ts +0 -70
- package/src/telemetry/live-voice-funnel.ts +0 -185
- package/src/telemetry/memory-corpus-size.test.ts +0 -120
- package/src/telemetry/memory-corpus-size.ts +0 -184
- package/src/telemetry/memory-tier-reporter.test.ts +0 -195
- package/src/telemetry/memory-tier-reporter.ts +0 -130
- package/src/telemetry/phone-call-funnel.ts +0 -144
- package/src/telemetry/skill-loaded-events-store.test.ts +0 -93
- package/src/telemetry/skill-loaded-events-store.ts +0 -39
- package/src/telemetry/telemetry-event-sources.test.ts +0 -223
- package/src/telemetry/telemetry-event-sources.ts +0 -597
- package/src/telemetry/telemetry-events-outbox.test.ts +0 -375
- package/src/telemetry/telemetry-events-outbox.ts +0 -237
- package/src/telemetry/telemetry-main-db.ts +0 -48
- package/src/telemetry/telemetry-wire-source.json +0 -4
- package/src/telemetry/telemetry-wire-validation.test.ts +0 -157
- package/src/telemetry/telemetry-wire-validation.ts +0 -162
- package/src/telemetry/telemetry-wire.generated.ts +0 -483
- package/src/telemetry/tool-executed-events-store.test.ts +0 -210
- package/src/telemetry/tool-executed-events-store.ts +0 -102
- package/src/telemetry/trace-collection-policy.test.ts +0 -28
- package/src/telemetry/trace-collection-policy.ts +0 -30
- package/src/telemetry/turn-events-store.ts +0 -216
- package/src/telemetry/turn-trace-store.test.ts +0 -884
- package/src/telemetry/turn-trace-store.ts +0 -399
- package/src/telemetry/types.test.ts +0 -38
- package/src/telemetry/types.ts +0 -780
- package/src/telemetry/usage-telemetry-reporter.test.ts +0 -3445
- package/src/telemetry/usage-telemetry-reporter.ts +0 -566
- package/src/telemetry/watchdog-direct-emit.test.ts +0 -112
- package/src/telemetry/watchdog-direct-emit.ts +0 -104
- package/src/telemetry/watchdog-events-store.ts +0 -31
- package/src/tools/ui-surface/channel-variants.ts +0 -52
- package/src/watcher/__tests__/telemetry.test.ts +0 -178
- package/src/watcher/telemetry.ts +0 -93
- package/src/workspace/migrations/097-enable-adaptive-thinking-managed-profiles.ts +0 -165
- package/src/workspace/migrations/104-recheck-adaptive-thinking-model-implied-anthropic.ts +0 -151
- /package/src/{telemetry → persistence}/tool-usage-store.ts +0 -0
- /package/src/{telemetry → persistence}/turn-outcome.ts +0 -0
|
@@ -22,12 +22,10 @@ import {
|
|
|
22
22
|
import type { Message, ToolDefinition } from "../providers/types.js";
|
|
23
23
|
import type { ActiveSkillEntry } from "../skills/active-skill-tools.js";
|
|
24
24
|
import { deriveActiveSkills } from "../skills/active-skill-tools.js";
|
|
25
|
-
import { getCachedCatalogSync } from "../skills/catalog-cache.js";
|
|
26
25
|
import { isSkillCompatibleWithCloud } from "../skills/cloud-compatibility.js";
|
|
27
|
-
import {
|
|
26
|
+
import { touchSkillLastUsed } from "../skills/install-meta.js";
|
|
28
27
|
import { parseToolManifestFile } from "../skills/tool-manifest.js";
|
|
29
28
|
import { computeSkillVersionHash } from "../skills/version-hash.js";
|
|
30
|
-
import { recordSkillLoadedEvent } from "../telemetry/skill-loaded-events-store.js";
|
|
31
29
|
import {
|
|
32
30
|
getTool,
|
|
33
31
|
getToolOwner,
|
|
@@ -35,8 +33,6 @@ import {
|
|
|
35
33
|
unregisterSkillTools,
|
|
36
34
|
} from "../tools/registry.js";
|
|
37
35
|
import { createSkillToolsFromManifest } from "../tools/skills/skill-tool-factory.js";
|
|
38
|
-
import type { UsageAttributionSnapshot } from "../usage/attribution.js";
|
|
39
|
-
import { toAttributionColumns } from "../usage/attribution.js";
|
|
40
36
|
import { getLogger } from "../util/logger.js";
|
|
41
37
|
|
|
42
38
|
const log = getLogger("conversation-skill-tools");
|
|
@@ -125,11 +121,6 @@ export interface ProjectSkillToolsOptions {
|
|
|
125
121
|
* conversation's resolution; non-plugin skills are unaffected.
|
|
126
122
|
*/
|
|
127
123
|
effectiveEnabledPluginSet?: Set<string> | null;
|
|
128
|
-
/** Telemetry context for skill_loaded events; absent disables recording. */
|
|
129
|
-
telemetry?: {
|
|
130
|
-
conversationId: string;
|
|
131
|
-
attribution: UsageAttributionSnapshot | null;
|
|
132
|
-
};
|
|
133
124
|
}
|
|
134
125
|
|
|
135
126
|
// ---------------------------------------------------------------------------
|
|
@@ -160,63 +151,11 @@ function loadManifestForSkill(skill: SkillSummary): SkillToolManifest | null {
|
|
|
160
151
|
}
|
|
161
152
|
}
|
|
162
153
|
|
|
163
|
-
/**
|
|
164
|
-
* Whether a skill is Cadet-produced for `skill_loaded` telemetry purposes:
|
|
165
|
-
* bundled skills always are; managed skills only when their install metadata
|
|
166
|
-
* records a `cadet` origin (legacy version.json installs are inferred as
|
|
167
|
-
* cadet by `readInstallMeta`). All other sources (workspace, extra, plugin)
|
|
168
|
-
* never emit.
|
|
169
|
-
*/
|
|
170
|
-
function isCadetProducedSkill(skill: SkillSummary): boolean {
|
|
171
|
-
if (skill.source === "bundled") {
|
|
172
|
-
return true;
|
|
173
|
-
}
|
|
174
|
-
if (skill.source === "managed") {
|
|
175
|
-
return readInstallMeta(skill.directoryPath)?.origin === "cadet";
|
|
176
|
-
}
|
|
177
|
-
return false;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Record a `skill_loaded` telemetry event for a newly-activated Cadet-produced
|
|
182
|
-
* skill. Metadata only — never skill output or conversation content.
|
|
183
|
-
* `skill_updated_at` comes from the cached merged catalog (sync accessor —
|
|
184
|
-
* this runs on the hot tool-projection path). Failures are swallowed at
|
|
185
|
-
* debug level: recording must never break tool projection.
|
|
186
|
-
*/
|
|
187
|
-
function recordSkillLoadedTelemetry(
|
|
188
|
-
skill: SkillSummary,
|
|
189
|
-
telemetry: ProjectSkillToolsOptions["telemetry"],
|
|
190
|
-
): void {
|
|
191
|
-
if (!telemetry) {
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
try {
|
|
195
|
-
if (!isCadetProducedSkill(skill)) {
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
const catalogEntry = getCachedCatalogSync().find((s) => s.id === skill.id);
|
|
199
|
-
recordSkillLoadedEvent({
|
|
200
|
-
conversationId: telemetry.conversationId,
|
|
201
|
-
skillName: skill.id,
|
|
202
|
-
skillUpdatedAt: catalogEntry?.updatedAt,
|
|
203
|
-
...toAttributionColumns(telemetry.attribution),
|
|
204
|
-
});
|
|
205
|
-
} catch (err) {
|
|
206
|
-
log.debug(
|
|
207
|
-
{ err, skillId: skill.id },
|
|
208
|
-
"Failed to record skill_loaded telemetry event (non-fatal)",
|
|
209
|
-
);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
154
|
/**
|
|
214
155
|
* Stamp `lastUsedAt` (day-debounced) on a newly-loaded managed skill's
|
|
215
|
-
* install metadata.
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* track. Only managed skills carry install metadata; bundled, workspace, and
|
|
219
|
-
* plugin skills are skipped. Best-effort: the underlying write never throws.
|
|
156
|
+
* install metadata. Only managed skills carry install metadata; bundled,
|
|
157
|
+
* workspace, and plugin skills are skipped. Best-effort: the underlying
|
|
158
|
+
* write never throws.
|
|
220
159
|
*/
|
|
221
160
|
function stampCloudSkillUsage(skill: SkillSummary): void {
|
|
222
161
|
if (skill.source !== "managed") {
|
|
@@ -439,7 +378,6 @@ export function projectSkillTools(
|
|
|
439
378
|
}
|
|
440
379
|
successfulEntries.set(skillId, NO_TOOLS_VERSION);
|
|
441
380
|
if (prevHash === undefined) {
|
|
442
|
-
recordSkillLoadedTelemetry(skill, options?.telemetry);
|
|
443
381
|
stampCloudSkillUsage(skill);
|
|
444
382
|
}
|
|
445
383
|
continue;
|
|
@@ -481,10 +419,6 @@ export function projectSkillTools(
|
|
|
481
419
|
// skill_loaded record below) is retried next turn.
|
|
482
420
|
continue;
|
|
483
421
|
}
|
|
484
|
-
// A first successful registration counts as the load; a manifest-less
|
|
485
|
-
// activation gaining a TOOLS.json re-registers, which — like a
|
|
486
|
-
// version-hash change — counts as a new load.
|
|
487
|
-
recordSkillLoadedTelemetry(skill, options?.telemetry);
|
|
488
422
|
stampCloudSkillUsage(skill);
|
|
489
423
|
} else if (prevHash !== currentHash) {
|
|
490
424
|
// Hash changed — unregister stale tools, then re-register with new definitions
|
|
@@ -504,8 +438,6 @@ export function projectSkillTools(
|
|
|
504
438
|
// Don't add to successfulEntries — will be cleaned up as transiently-failed
|
|
505
439
|
continue;
|
|
506
440
|
}
|
|
507
|
-
// A version change that re-registers counts as a new skill load.
|
|
508
|
-
recordSkillLoadedTelemetry(skill, options?.telemetry);
|
|
509
441
|
stampCloudSkillUsage(skill);
|
|
510
442
|
} else {
|
|
511
443
|
// Hash unchanged — filter to only tools that are actually registered
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
import { RateLimitProvider } from "../providers/ratelimit.js";
|
|
29
29
|
import { listProviders } from "../providers/registry.js";
|
|
30
30
|
import { getSubagentManager } from "../subagent/index.js";
|
|
31
|
-
import { getSandboxWorkingDir } from "../util/
|
|
31
|
+
import { getSandboxWorkingDir } from "../util/layout.js";
|
|
32
32
|
import { Conversation } from "./conversation.js";
|
|
33
33
|
import { conversationEventSink } from "./conversation-event-sink.js";
|
|
34
34
|
import {
|
|
@@ -12,10 +12,6 @@ import {
|
|
|
12
12
|
type SurfaceType,
|
|
13
13
|
SurfaceTypeSchema,
|
|
14
14
|
} from "../api/surfaces.js";
|
|
15
|
-
import {
|
|
16
|
-
type ActivationMomentParam,
|
|
17
|
-
isActivationMomentParam,
|
|
18
|
-
} from "../telemetry/activation-funnel.js";
|
|
19
15
|
import { isPlainObject } from "../util/object.js";
|
|
20
16
|
|
|
21
17
|
/** Action snapshot stored with a surface (style stays a loose string). */
|
|
@@ -48,14 +44,6 @@ export type SurfaceStateEntry = {
|
|
|
48
44
|
data: SurfaceDataByType[K];
|
|
49
45
|
title?: string;
|
|
50
46
|
actions?: StoredSurfaceAction[];
|
|
51
|
-
/**
|
|
52
|
-
* Activation-rail telemetry tag (daemon-only). When the model tags a
|
|
53
|
-
* `ui_show` surface as an activation funnel moment, the token is captured
|
|
54
|
-
* here so the milestone can be recorded deterministically when the user
|
|
55
|
-
* commits the surface (`handleSurfaceAction`). Never forwarded to the
|
|
56
|
-
* client.
|
|
57
|
-
*/
|
|
58
|
-
activationMoment?: ActivationMomentParam;
|
|
59
47
|
};
|
|
60
48
|
}[SurfaceType];
|
|
61
49
|
|
|
@@ -70,12 +58,6 @@ export type CurrentTurnSurface = {
|
|
|
70
58
|
display?: string;
|
|
71
59
|
persistent?: boolean;
|
|
72
60
|
toolCallId?: string;
|
|
73
|
-
/**
|
|
74
|
-
* Commit-timing activation-rail tag (daemon-only). Carried through to the
|
|
75
|
-
* persisted `ui_surface` history block so it survives a reload — never sent
|
|
76
|
-
* to the client.
|
|
77
|
-
*/
|
|
78
|
-
activationMoment?: ActivationMomentParam;
|
|
79
61
|
/**
|
|
80
62
|
* Completion stamped when the user answers the surface before this turn's
|
|
81
63
|
* message lands. The snapshot is the only record of the surface at that
|
|
@@ -170,18 +152,6 @@ export function parseStoredActions(
|
|
|
170
152
|
});
|
|
171
153
|
}
|
|
172
154
|
|
|
173
|
-
/**
|
|
174
|
-
* The daemon-only commit-timing activation tag from a persisted block,
|
|
175
|
-
* validated and dropped if malformed. This field never reaches the client.
|
|
176
|
-
*/
|
|
177
|
-
export function parseActivationMomentTag(
|
|
178
|
-
value: unknown,
|
|
179
|
-
): ActivationMomentParam | undefined {
|
|
180
|
-
return typeof value === "string" && isActivationMomentParam(value)
|
|
181
|
-
? value
|
|
182
|
-
: undefined;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
155
|
/**
|
|
186
156
|
* Map a persisted `ui_surface` history block to a live `surfaceState` entry.
|
|
187
157
|
* The block is untyped JSON from the messages table: both `surfaceType` and
|
|
@@ -209,13 +179,10 @@ export function restoreSurfaceStateEntry(
|
|
|
209
179
|
typeof b.surfaceType === "string" && b.surfaceType.trim().length > 0
|
|
210
180
|
? b.surfaceType
|
|
211
181
|
: "dynamic_page";
|
|
212
|
-
const activationMoment = parseActivationMomentTag(b.activationMoment);
|
|
213
|
-
|
|
214
182
|
return {
|
|
215
183
|
surfaceType,
|
|
216
184
|
data: coerceSurfaceDataRecord(b.data),
|
|
217
185
|
title: typeof b.title === "string" ? b.title : undefined,
|
|
218
186
|
actions: parseStoredActions(b.actions),
|
|
219
|
-
...(activationMoment ? { activationMoment } : {}),
|
|
220
187
|
} as SurfaceStateEntry;
|
|
221
188
|
}
|
|
@@ -30,12 +30,10 @@ import {
|
|
|
30
30
|
} from "../apps/app-store.js";
|
|
31
31
|
import { executeDesktopComputerUse } from "../desktop/desktop-computer-use.js";
|
|
32
32
|
import { canUseVirtualDesktop } from "../desktop/virtual-desktop-feature.js";
|
|
33
|
-
import { recordActivationEvent } from "../onboarding/onboarding-events-store.js";
|
|
34
33
|
import {
|
|
35
34
|
getMessages,
|
|
36
35
|
updateMessageContent,
|
|
37
36
|
} from "../persistence/conversation-crud.js";
|
|
38
|
-
import { isActivationSession } from "../plugins/defaults/memory/activation-session-store.js";
|
|
39
37
|
import {
|
|
40
38
|
assistantEventHub,
|
|
41
39
|
broadcastMessage,
|
|
@@ -50,12 +48,6 @@ import type {
|
|
|
50
48
|
InteractiveUiRequest,
|
|
51
49
|
InteractiveUiResult,
|
|
52
50
|
} from "../runtime/interactive-ui-types.js";
|
|
53
|
-
import {
|
|
54
|
-
activationMomentEmitsAtShow,
|
|
55
|
-
type ActivationMomentParam,
|
|
56
|
-
activationStepNameForMomentParam,
|
|
57
|
-
isActivationMomentParam,
|
|
58
|
-
} from "../telemetry/activation-funnel.js";
|
|
59
51
|
import { resolveAppId } from "../tools/apps/resolve-app-id.js";
|
|
60
52
|
import { formatDesktopAppRequired } from "../tools/capability-offer.js";
|
|
61
53
|
import { POINT_AT_PROXY_TOOL } from "../tools/computer-use/skill-proxy-bridge.js";
|
|
@@ -1837,53 +1829,6 @@ function getRequestedSurfaceCompletionSummary(
|
|
|
1837
1829
|
* when the surface renders) and the commit-time path (the other moments,
|
|
1838
1830
|
* recorded when the user commits the surface).
|
|
1839
1831
|
*/
|
|
1840
|
-
function recordActivationMoment(
|
|
1841
|
-
ctx: Conversation,
|
|
1842
|
-
moment: ActivationMomentParam,
|
|
1843
|
-
): void {
|
|
1844
|
-
try {
|
|
1845
|
-
if (!isActivationSession(ctx.conversationId)) {
|
|
1846
|
-
return;
|
|
1847
|
-
}
|
|
1848
|
-
recordActivationEvent({
|
|
1849
|
-
stepName: activationStepNameForMomentParam(moment),
|
|
1850
|
-
sessionId: ctx.conversationId,
|
|
1851
|
-
});
|
|
1852
|
-
} catch (err) {
|
|
1853
|
-
log.warn(
|
|
1854
|
-
{ err, conversationId: ctx.conversationId, moment },
|
|
1855
|
-
"Failed to record activation moment",
|
|
1856
|
-
);
|
|
1857
|
-
}
|
|
1858
|
-
}
|
|
1859
|
-
|
|
1860
|
-
/**
|
|
1861
|
-
* Best-effort activation-funnel emission on a user surface commit.
|
|
1862
|
-
*
|
|
1863
|
-
* When the committed surface carries a commit-timing `activationMoment` tag,
|
|
1864
|
-
* record the corresponding funnel milestone. Show-timing moments
|
|
1865
|
-
* (`first_wow_executed`) are recorded at render time in `surfaceProxyResolver`
|
|
1866
|
-
* and are NOT stored on `surfaceState`, so they never reach this path. The tag
|
|
1867
|
-
* is cleared after the first record so re-entrant or repeated commits on the
|
|
1868
|
-
* same surface do not double-emit (and the deterministic `daemon_event_id`
|
|
1869
|
-
* collapses any cross-surface duplicate downstream anyway).
|
|
1870
|
-
*
|
|
1871
|
-
* Must be called only from terminal-commit paths (user clicked an action /
|
|
1872
|
-
* submitted / selected-and-committed), NOT from intermediate non-terminal
|
|
1873
|
-
* events (`selection_changed` / `content_changed` / `state_update`).
|
|
1874
|
-
*/
|
|
1875
|
-
function maybeEmitActivationMoment(ctx: Conversation, surfaceId: string): void {
|
|
1876
|
-
const stored = ctx.surfaceState.get(surfaceId);
|
|
1877
|
-
const moment = stored?.activationMoment;
|
|
1878
|
-
if (!moment) {
|
|
1879
|
-
return;
|
|
1880
|
-
}
|
|
1881
|
-
// Clear the tag first so this can fire at most once per surface even if the
|
|
1882
|
-
// commit path is re-entered.
|
|
1883
|
-
stored.activationMoment = undefined;
|
|
1884
|
-
recordActivationMoment(ctx, moment);
|
|
1885
|
-
}
|
|
1886
|
-
|
|
1887
1832
|
/** The action result for an enqueue the message queue refused. */
|
|
1888
1833
|
const QUEUE_FULL_RESULT: SurfaceActionResult = {
|
|
1889
1834
|
accepted: false,
|
|
@@ -2081,7 +2026,6 @@ export async function handleSurfaceAction(
|
|
|
2081
2026
|
// — record an activation milestone if tagged. Must run before
|
|
2082
2027
|
// `cleanupStandaloneSurface` clears the surface state.
|
|
2083
2028
|
if (!isCancellation) {
|
|
2084
|
-
maybeEmitActivationMoment(ctx, surfaceId);
|
|
2085
2029
|
}
|
|
2086
2030
|
|
|
2087
2031
|
// Cleanup and resolve — order matters: cleanup clears the timer
|
|
@@ -2174,7 +2118,6 @@ export async function handleSurfaceAction(
|
|
|
2174
2118
|
// Launching a child conversation is a terminal user commit — record an
|
|
2175
2119
|
// activation milestone if tagged. The helper clears the tag after firing,
|
|
2176
2120
|
// so the other commit-path call sites below can't double-emit.
|
|
2177
|
-
maybeEmitActivationMoment(ctx, surfaceId);
|
|
2178
2121
|
return { accepted: true, conversationId };
|
|
2179
2122
|
}
|
|
2180
2123
|
|
|
@@ -2347,7 +2290,6 @@ export async function handleSurfaceAction(
|
|
|
2347
2290
|
// surface was tagged (best-effort, no-op otherwise). Deferred until after
|
|
2348
2291
|
// the rejection check so a queue-full click doesn't over-report a moment
|
|
2349
2292
|
// (and the one-shot tag stays intact for the user's retry).
|
|
2350
|
-
maybeEmitActivationMoment(ctx, surfaceId);
|
|
2351
2293
|
|
|
2352
2294
|
maybeCompleteSurfaceAfterAction(ctx, surfaceId, actionId, mergedData, {
|
|
2353
2295
|
liveSurfaceType: stored?.surfaceType,
|
|
@@ -2603,7 +2545,6 @@ export async function handleSurfaceAction(
|
|
|
2603
2545
|
// surface was tagged (best-effort, no-op otherwise). Deferred until after the
|
|
2604
2546
|
// rejection check so a queue-full click doesn't over-report a moment (and the
|
|
2605
2547
|
// one-shot tag stays intact for the user's retry).
|
|
2606
|
-
maybeEmitActivationMoment(ctx, surfaceId);
|
|
2607
2548
|
|
|
2608
2549
|
maybeCompleteSurfaceAfterAction(ctx, surfaceId, actionId, mergedData, {
|
|
2609
2550
|
liveSurfaceType: pending.surfaceType,
|
|
@@ -3706,37 +3647,14 @@ export async function surfaceProxyResolver(
|
|
|
3706
3647
|
...(a.data ? { data: a.data } : {}),
|
|
3707
3648
|
}));
|
|
3708
3649
|
|
|
3709
|
-
// Optional activation-rail telemetry tag. Daemon-only metadata: validated
|
|
3710
|
-
// and ignored if invalid; never forwarded to the client.
|
|
3711
|
-
const activationMoment =
|
|
3712
|
-
typeof input.activation_moment === "string" &&
|
|
3713
|
-
isActivationMomentParam(input.activation_moment)
|
|
3714
|
-
? input.activation_moment
|
|
3715
|
-
: undefined;
|
|
3716
|
-
|
|
3717
|
-
// Show-timing moments (`first_wow_executed`) record the instant the surface
|
|
3718
|
-
// renders — a display-only result/`work_result` card may never be committed,
|
|
3719
|
-
// so a commit-time emit would never fire. We record now and do NOT store the
|
|
3720
|
-
// tag, so the commit path won't double-emit. Commit-timing moments are
|
|
3721
|
-
// stored and recorded when the user commits the surface (see
|
|
3722
|
-
// `handleSurfaceAction` → `maybeEmitActivationMoment`).
|
|
3723
|
-
const storeTagForCommit =
|
|
3724
|
-
activationMoment !== undefined &&
|
|
3725
|
-
!activationMomentEmitsAtShow(activationMoment);
|
|
3726
|
-
|
|
3727
3650
|
// Track surface state for ui_update merging (includes actions so we can
|
|
3728
3651
|
// look up per-action data payloads when the client sends an action back).
|
|
3729
3652
|
ctx.surfaceState.set(surfaceId, {
|
|
3730
3653
|
title,
|
|
3731
3654
|
actions: mappedActions,
|
|
3732
|
-
...(storeTagForCommit ? { activationMoment } : {}),
|
|
3733
3655
|
...showPair,
|
|
3734
3656
|
});
|
|
3735
3657
|
|
|
3736
|
-
if (activationMoment !== undefined && !storeTagForCommit) {
|
|
3737
|
-
recordActivationMoment(ctx, activationMoment);
|
|
3738
|
-
}
|
|
3739
|
-
|
|
3740
3658
|
log.info(
|
|
3741
3659
|
{
|
|
3742
3660
|
surfaceId,
|
|
@@ -3763,9 +3681,7 @@ export async function surfaceProxyResolver(
|
|
|
3763
3681
|
...showPair,
|
|
3764
3682
|
});
|
|
3765
3683
|
|
|
3766
|
-
// Track surface for persistence with the message.
|
|
3767
|
-
// activation tag rides along (daemon-only) so it survives history restore;
|
|
3768
|
-
// show-timing moments aren't stored here (already recorded at render).
|
|
3684
|
+
// Track surface for persistence with the message.
|
|
3769
3685
|
ctx.currentTurnSurfaces.push({
|
|
3770
3686
|
surfaceId,
|
|
3771
3687
|
title,
|
|
@@ -3773,7 +3689,6 @@ export async function surfaceProxyResolver(
|
|
|
3773
3689
|
display,
|
|
3774
3690
|
...(persistent ? { persistent: true } : {}),
|
|
3775
3691
|
...(toolUseId ? { toolCallId: toolUseId } : {}),
|
|
3776
|
-
...(storeTagForCommit ? { activationMoment } : {}),
|
|
3777
3692
|
...showPair,
|
|
3778
3693
|
});
|
|
3779
3694
|
|
|
@@ -3,7 +3,7 @@ import { join } from "node:path";
|
|
|
3
3
|
import { afterEach, describe, expect, test } from "bun:test";
|
|
4
4
|
|
|
5
5
|
import { getAllDefaultPlugins } from "../plugins/defaults/index.js";
|
|
6
|
-
import { getWorkspacePluginsDir } from "../util/
|
|
6
|
+
import { getWorkspacePluginsDir } from "../util/layout.js";
|
|
7
7
|
import { getEffectiveEnabledPluginSet } from "./conversation-tool-setup.js";
|
|
8
8
|
|
|
9
9
|
const DEFAULT_NAMES = getAllDefaultPlugins().map((p) => p.manifest.name);
|
|
@@ -30,7 +30,6 @@ import {
|
|
|
30
30
|
} from "../persistence/conversation-tool-surface.js";
|
|
31
31
|
import { getBindingByConversation } from "../persistence/external-conversation-store.js";
|
|
32
32
|
import { getAllDefaultPluginNames } from "../plugins/defaults/main.js";
|
|
33
|
-
import { isActivationSession } from "../plugins/defaults/memory/activation-session-store.js";
|
|
34
33
|
import { isPluginDisabled } from "../plugins/disabled-state.js";
|
|
35
34
|
import type { Message, ToolDefinition } from "../providers/types.js";
|
|
36
35
|
import { registerConversationSender } from "../tools/browser/browser-screencast.js";
|
|
@@ -64,7 +63,6 @@ import {
|
|
|
64
63
|
type ToolContext,
|
|
65
64
|
type ToolExecutionResult,
|
|
66
65
|
} from "../tools/types.js";
|
|
67
|
-
import { injectActivationMomentParam } from "../tools/ui-surface/channel-variants.js";
|
|
68
66
|
import { loadWorkspaceTools } from "../tools/workspace-tools/loader.js";
|
|
69
67
|
import {
|
|
70
68
|
resolveUsageAttribution,
|
|
@@ -1198,14 +1196,6 @@ export function createResolveToolsCallback(
|
|
|
1198
1196
|
: definition,
|
|
1199
1197
|
);
|
|
1200
1198
|
}
|
|
1201
|
-
// Activation-rail conversations carry the optional `activation_moment`
|
|
1202
|
-
// telemetry param on ui_show. The marker is written before the first
|
|
1203
|
-
// tool resolution (see `applyBootstrapTemplate` in system-prompt.ts), so
|
|
1204
|
-
// the projected schema is stable for the conversation's lifetime.
|
|
1205
|
-
if (isActivationSession(ctx.conversationId)) {
|
|
1206
|
-
allBaseDefs = injectActivationMomentParam(allBaseDefs);
|
|
1207
|
-
}
|
|
1208
|
-
|
|
1209
1199
|
const effectivePreactivated = [
|
|
1210
1200
|
...DEFAULT_PREACTIVATED_SKILL_IDS,
|
|
1211
1201
|
...(ctx.preactivatedSkillIds ?? []),
|
|
@@ -1220,19 +1210,6 @@ export function createResolveToolsCallback(
|
|
|
1220
1210
|
// Scope plugin-contributed skills to the conversation's per-chat plugin
|
|
1221
1211
|
// selection (null = no restriction).
|
|
1222
1212
|
effectiveEnabledPluginSet,
|
|
1223
|
-
// skill_loaded telemetry context — resolved per turn so attribution
|
|
1224
|
-
// reflects the call site/profile the current turn actually runs on.
|
|
1225
|
-
telemetry:
|
|
1226
|
-
ctx.conversationId !== undefined
|
|
1227
|
-
? {
|
|
1228
|
-
conversationId: ctx.conversationId,
|
|
1229
|
-
attribution: resolveConversationAttribution({
|
|
1230
|
-
conversationId: ctx.conversationId,
|
|
1231
|
-
currentCallSite: ctx.currentCallSite,
|
|
1232
|
-
currentTurnOverrideProfile: ctx.currentTurnOverrideProfile,
|
|
1233
|
-
}),
|
|
1234
|
-
}
|
|
1235
|
-
: undefined,
|
|
1236
1213
|
});
|
|
1237
1214
|
const turnAllowed = new Set(allBaseDefs.map((d) => d.name));
|
|
1238
1215
|
for (const name of projection.allowedToolNames) {
|
|
@@ -1167,12 +1167,10 @@ export class Conversation {
|
|
|
1167
1167
|
|
|
1168
1168
|
setOnboardingContext(ctx: OnboardingContext): void {
|
|
1169
1169
|
this.onboardingContext = ctx;
|
|
1170
|
-
// Reseed BOOTSTRAP.md
|
|
1171
|
-
// the conversation knows its bootstrap selection
|
|
1172
|
-
// tool resolution, which `buildSystemPrompt` is too late for. See
|
|
1173
|
-
// `applyBootstrapTemplate`.
|
|
1170
|
+
// Reseed BOOTSTRAP.md from the requested onboarding template at the
|
|
1171
|
+
// earliest point the conversation knows its bootstrap selection.
|
|
1174
1172
|
if (ctx.bootstrapTemplate) {
|
|
1175
|
-
applyBootstrapTemplate(ctx.bootstrapTemplate
|
|
1173
|
+
applyBootstrapTemplate(ctx.bootstrapTemplate);
|
|
1176
1174
|
}
|
|
1177
1175
|
}
|
|
1178
1176
|
|
|
@@ -14,7 +14,6 @@ import { getIsContainerized } from "../config/env-registry.js";
|
|
|
14
14
|
import { loadOrCreateSigningKey } from "../runtime/auth/token-service.js";
|
|
15
15
|
import { ensureBun } from "../util/bun-runtime.js";
|
|
16
16
|
import { DaemonError } from "../util/errors.js";
|
|
17
|
-
import { getLogger } from "../util/logger.js";
|
|
18
17
|
import {
|
|
19
18
|
ensureDataDir,
|
|
20
19
|
getDaemonStartupLockPath,
|
|
@@ -22,7 +21,8 @@ import {
|
|
|
22
21
|
getDataDir,
|
|
23
22
|
getPidPath,
|
|
24
23
|
getWorkspaceConfigPath,
|
|
25
|
-
} from "../util/
|
|
24
|
+
} from "../util/layout.js";
|
|
25
|
+
import { getLogger } from "../util/logger.js";
|
|
26
26
|
import { readRawProcessCommand } from "../util/process-table.js";
|
|
27
27
|
import { isDaemonCommand } from "../util/worker-ownership.js";
|
|
28
28
|
|
|
@@ -43,7 +43,7 @@ function isPositiveInteger(v: unknown): v is number {
|
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* Read daemon timeout values directly from the config JSON file, bypassing
|
|
46
|
-
*
|
|
46
|
+
* getConfig() and its ensureDataDir() side effects.
|
|
47
47
|
* Falls back to hardcoded defaults on any error (missing file, malformed JSON,
|
|
48
48
|
* unexpected shape) so daemon stop/start never fails due to config issues.
|
|
49
49
|
*/
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
import { existsSync, readFileSync } from "node:fs";
|
|
9
9
|
import { join } from "node:path";
|
|
10
10
|
|
|
11
|
+
import { getWorkspaceDir } from "../util/layout.js";
|
|
11
12
|
import { getLogger } from "../util/logger.js";
|
|
12
|
-
import { getWorkspaceDir } from "../util/platform.js";
|
|
13
13
|
import { safeStringSlice } from "../util/unicode.js";
|
|
14
14
|
|
|
15
15
|
const log = getLogger("dictation-profile-store");
|
|
@@ -262,7 +262,7 @@ function loadFromDisk(): DictationProfilesConfig {
|
|
|
262
262
|
|
|
263
263
|
// --- Public API ---
|
|
264
264
|
|
|
265
|
-
export function
|
|
265
|
+
export function getConfig(): DictationProfilesConfig {
|
|
266
266
|
if (cachedConfig == null) {
|
|
267
267
|
cachedConfig = loadFromDisk();
|
|
268
268
|
}
|
|
@@ -283,7 +283,7 @@ export function resolveProfile(
|
|
|
283
283
|
appName: string,
|
|
284
284
|
requestProfileId?: string,
|
|
285
285
|
): ProfileResolution {
|
|
286
|
-
const config =
|
|
286
|
+
const config = getConfig();
|
|
287
287
|
|
|
288
288
|
const enabledProfiles = config.profiles.filter(isProfileEnabled);
|
|
289
289
|
const profileById = (id: string) => enabledProfiles.find((p) => p.id === id);
|