@mycadet/assistant 0.12.9 → 0.12.11
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/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
- package/node_modules/@mycadet/ces-client/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
- package/node_modules/@mycadet/ces-client/src/http-credentials.ts +18 -1
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
- package/node_modules/@mycadet/gateway-client/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
- package/node_modules/@mycadet/service-contracts/src/__tests__/ingress.test.ts +8 -8
- package/node_modules/@mycadet/service-contracts/src/ingress.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 +87 -404
- 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 +25 -32
- 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 +72 -298
- 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 +49 -706
- 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
|
@@ -109,7 +109,6 @@ import {
|
|
|
109
109
|
type SlackMessageMetadata,
|
|
110
110
|
} from "../../messaging/providers/slack/message-metadata.js";
|
|
111
111
|
import { readProviderMetadata } from "../../messaging/read-provider-metadata.js";
|
|
112
|
-
import { recordOnboardingEvent } from "../../onboarding/onboarding-events-store.js";
|
|
113
112
|
import {
|
|
114
113
|
classifyKind,
|
|
115
114
|
getAttachmentById,
|
|
@@ -145,7 +144,6 @@ import {
|
|
|
145
144
|
import { listConversationModeSessionsByIds } from "../../persistence/conversation-mode-sessions.js";
|
|
146
145
|
import { searchConversations } from "../../persistence/conversation-queries.js";
|
|
147
146
|
import {
|
|
148
|
-
AUTO_ROUTED_PROFILE_METADATA_KEY,
|
|
149
147
|
computerUseScreenshotAttachmentIdsFromMetadata,
|
|
150
148
|
isNoResponseMetadata,
|
|
151
149
|
messageMetadataIsAmbientSightKeep,
|
|
@@ -167,11 +165,8 @@ import {
|
|
|
167
165
|
isHeicFilename,
|
|
168
166
|
normalizeImageBase64,
|
|
169
167
|
} from "../../util/image-conversion.js";
|
|
168
|
+
import { getWorkspaceDir, getWorkspacePromptPath } from "../../util/layout.js";
|
|
170
169
|
import { getLogger } from "../../util/logger.js";
|
|
171
|
-
import {
|
|
172
|
-
getWorkspaceDir,
|
|
173
|
-
getWorkspacePromptPath,
|
|
174
|
-
} from "../../util/platform.js";
|
|
175
170
|
import { safeStringSlice } from "../../util/unicode.js";
|
|
176
171
|
import { assistantEventHub, broadcastMessage } from "../assistant-event-hub.js";
|
|
177
172
|
import { getCurrentSeq } from "../assistant-stream-state.js";
|
|
@@ -1116,7 +1111,6 @@ export async function handleListMessages({
|
|
|
1116
1111
|
let backgroundToolCompletion: ConversationMessage["backgroundToolCompletion"];
|
|
1117
1112
|
let systemCard: boolean | undefined;
|
|
1118
1113
|
let noResponse: boolean | undefined;
|
|
1119
|
-
let autoRoutedProfile: string | undefined;
|
|
1120
1114
|
const cameraFrame = messageMetadataIsAmbientSightKeep(msg.metadata)
|
|
1121
1115
|
? true
|
|
1122
1116
|
: undefined;
|
|
@@ -1137,9 +1131,6 @@ export async function handleListMessages({
|
|
|
1137
1131
|
if (isNoResponseMetadata(meta)) {
|
|
1138
1132
|
noResponse = true;
|
|
1139
1133
|
}
|
|
1140
|
-
if (typeof meta[AUTO_ROUTED_PROFILE_METADATA_KEY] === "string") {
|
|
1141
|
-
autoRoutedProfile = meta[AUTO_ROUTED_PROFILE_METADATA_KEY];
|
|
1142
|
-
}
|
|
1143
1134
|
// Channel facts live in the row's provider envelope. A reaction row,
|
|
1144
1135
|
// either direction, projects its structured fact so clients never
|
|
1145
1136
|
// render the stored "[reaction]" sentinel; a row deleted on its
|
|
@@ -1222,7 +1213,6 @@ export async function handleListMessages({
|
|
|
1222
1213
|
backgroundToolCompletion,
|
|
1223
1214
|
systemCard,
|
|
1224
1215
|
noResponse,
|
|
1225
|
-
autoRoutedProfile,
|
|
1226
1216
|
cameraFrame,
|
|
1227
1217
|
reaction,
|
|
1228
1218
|
providerError,
|
|
@@ -1463,9 +1453,6 @@ export async function handleListMessages({
|
|
|
1463
1453
|
: {}),
|
|
1464
1454
|
...(m.systemCard ? { systemCard: true } : {}),
|
|
1465
1455
|
...(m.noResponse ? { noResponse: true } : {}),
|
|
1466
|
-
...(m.autoRoutedProfile
|
|
1467
|
-
? { autoRoutedProfile: m.autoRoutedProfile }
|
|
1468
|
-
: {}),
|
|
1469
1456
|
...(m.cameraFrame ? { cameraFrame: true as const } : {}),
|
|
1470
1457
|
// The row's own marker, so a client gates per-row presentation on what
|
|
1471
1458
|
// this row was written with rather than on the live flag.
|
|
@@ -2267,18 +2254,6 @@ export async function handleSendMessage(
|
|
|
2267
2254
|
|
|
2268
2255
|
if (isFirstOnboarding) {
|
|
2269
2256
|
persistOnboardingArtifacts(body.onboarding!);
|
|
2270
|
-
try {
|
|
2271
|
-
recordOnboardingEvent({
|
|
2272
|
-
screen: "complete",
|
|
2273
|
-
tools: body.onboarding!.tools,
|
|
2274
|
-
tasks: body.onboarding!.tasks,
|
|
2275
|
-
tone: body.onboarding!.tone,
|
|
2276
|
-
googleConnected: body.onboarding!.googleConnected,
|
|
2277
|
-
googleScopes: body.onboarding!.googleScopes,
|
|
2278
|
-
});
|
|
2279
|
-
} catch (err) {
|
|
2280
|
-
log.warn({ err }, "Failed to record onboarding telemetry event");
|
|
2281
|
-
}
|
|
2282
2257
|
}
|
|
2283
2258
|
|
|
2284
2259
|
scheduleCannedReplyRelease({
|
|
@@ -2360,18 +2335,6 @@ export async function handleSendMessage(
|
|
|
2360
2335
|
|
|
2361
2336
|
if (isFirstOnboarding) {
|
|
2362
2337
|
persistOnboardingArtifacts(body.onboarding!);
|
|
2363
|
-
try {
|
|
2364
|
-
recordOnboardingEvent({
|
|
2365
|
-
screen: "complete",
|
|
2366
|
-
tools: body.onboarding!.tools,
|
|
2367
|
-
tasks: body.onboarding!.tasks,
|
|
2368
|
-
tone: body.onboarding!.tone,
|
|
2369
|
-
googleConnected: body.onboarding!.googleConnected,
|
|
2370
|
-
googleScopes: body.onboarding!.googleScopes,
|
|
2371
|
-
});
|
|
2372
|
-
} catch (err) {
|
|
2373
|
-
log.warn({ err }, "Failed to record onboarding telemetry event");
|
|
2374
|
-
}
|
|
2375
2338
|
}
|
|
2376
2339
|
|
|
2377
2340
|
// When the scan path rewrote the first message, prefer the rewritten
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
listProviders,
|
|
18
18
|
} from "../../providers/registry.js";
|
|
19
19
|
import { countSchedules } from "../../schedule/schedule-store.js";
|
|
20
|
-
import { getDbPath } from "../../util/
|
|
20
|
+
import { getDbPath } from "../../util/layout.js";
|
|
21
21
|
import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
|
|
22
22
|
import type { RouteDefinition } from "./types.js";
|
|
23
23
|
|
|
@@ -1,28 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Deprecated `/x/*` route context — a
|
|
2
|
+
* Deprecated `/x/*` route context — a compatibility shim.
|
|
3
3
|
*
|
|
4
4
|
* Route handlers now reach daemon capabilities through `@mycadet/plugin-api`
|
|
5
5
|
* (`publishEvent`, `runConversationTurn`), which work identically in-process and
|
|
6
6
|
* in the route-host subprocess. Installed route files written against the older
|
|
7
7
|
* `(request, context)` signature keep working: each `context` field delegates
|
|
8
|
-
* to its plugin-api equivalent
|
|
9
|
-
* the first time a given route touches it, so usage can be watched down to zero
|
|
10
|
-
* before the argument is removed.
|
|
8
|
+
* to its plugin-api equivalent.
|
|
11
9
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* Telemetry: emitted daemon-side via the generic `watchdog` event (the
|
|
16
|
-
* sanctioned named-label + open-`detail`-bag carrier, as `memory_tier` uses),
|
|
17
|
-
* so it ships without a new platform wire type. `check_name` is
|
|
18
|
-
* `"deprecated_api_use"`; `detail` carries `{ surface, api, replacement,
|
|
19
|
-
* route_path }`. A dedicated first-class `deprecation` wire event is proposed to
|
|
20
|
-
* platform; when it lands, swap the emit here to it and freeze.
|
|
10
|
+
* The handler's second parameter is deprecated — prefer importing from
|
|
11
|
+
* `@mycadet/plugin-api` directly in new handlers.
|
|
21
12
|
*/
|
|
22
13
|
|
|
23
14
|
import { runConversationTurn } from "../../plugin-api/conversation-turn.js";
|
|
24
15
|
import { publishEvent } from "../../plugin-api/publish-event.js";
|
|
25
|
-
import { recordWatchdogEvent } from "../../telemetry/watchdog-events-store.js";
|
|
26
16
|
|
|
27
17
|
/**
|
|
28
18
|
* The deprecated second argument passed to `/x/*` route handlers. Every member
|
|
@@ -47,60 +37,19 @@ export interface UserRouteContext {
|
|
|
47
37
|
};
|
|
48
38
|
}
|
|
49
39
|
|
|
50
|
-
/** Stable `watchdog` label for a deprecated-API-use signal. Frozen once shipped — dashboards pivot on it. */
|
|
51
|
-
const DEPRECATED_API_CHECK_NAME = "deprecated_api_use";
|
|
52
|
-
|
|
53
|
-
/** Separator for dedup keys. `api` is a fixed `context.*` string, so `::` cannot make two distinct (route, api) pairs collide. */
|
|
54
|
-
const KEY_SEPARATOR = "::";
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Fired-once keys (`route_path <sep> api`) so a route in a hot loop records one
|
|
58
|
-
* signal per deprecated field per process rather than one per call. We only
|
|
59
|
-
* need to learn *which* route depends on *which* field, not the call count.
|
|
60
|
-
*/
|
|
61
|
-
const reportedUses = new Set<string>();
|
|
62
|
-
|
|
63
|
-
function recordDeprecatedUse(
|
|
64
|
-
routePath: string,
|
|
65
|
-
api: string,
|
|
66
|
-
replacement: string,
|
|
67
|
-
): void {
|
|
68
|
-
const key = `${routePath}${KEY_SEPARATOR}${api}`;
|
|
69
|
-
if (reportedUses.has(key)) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
reportedUses.add(key);
|
|
73
|
-
recordWatchdogEvent({
|
|
74
|
-
checkName: DEPRECATED_API_CHECK_NAME,
|
|
75
|
-
detail: {
|
|
76
|
-
surface: "custom_route",
|
|
77
|
-
api,
|
|
78
|
-
replacement,
|
|
79
|
-
route_path: routePath,
|
|
80
|
-
},
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
|
|
84
40
|
/**
|
|
85
41
|
* Build the deprecated `context` argument for a handler serving `routePath`.
|
|
86
42
|
* The route path is captured so a use signal can be attributed to the specific
|
|
87
43
|
* route that must migrate. The object is frozen so a handler cannot corrupt the
|
|
88
44
|
* shared shim by reassigning its members.
|
|
89
45
|
*/
|
|
90
|
-
export function buildDeprecatedRouteContext(
|
|
91
|
-
routePath: string,
|
|
92
|
-
): UserRouteContext {
|
|
46
|
+
export function buildDeprecatedRouteContext(): UserRouteContext {
|
|
93
47
|
return Object.freeze({
|
|
94
48
|
assistantEventHub: Object.freeze({
|
|
95
49
|
publish: (
|
|
96
50
|
event: Parameters<typeof publishEvent>[0],
|
|
97
51
|
options?: Parameters<typeof publishEvent>[1],
|
|
98
52
|
): ReturnType<typeof publishEvent> => {
|
|
99
|
-
recordDeprecatedUse(
|
|
100
|
-
routePath,
|
|
101
|
-
"context.assistantEventHub.publish",
|
|
102
|
-
"plugin-api:publishEvent",
|
|
103
|
-
);
|
|
104
53
|
return publishEvent(event, options);
|
|
105
54
|
},
|
|
106
55
|
}),
|
|
@@ -109,11 +58,6 @@ export function buildDeprecatedRouteContext(
|
|
|
109
58
|
conversationId: string,
|
|
110
59
|
text: string,
|
|
111
60
|
): Promise<{ messageId: string }> => {
|
|
112
|
-
recordDeprecatedUse(
|
|
113
|
-
routePath,
|
|
114
|
-
"context.conversations.postMessage",
|
|
115
|
-
"plugin-api:runConversationTurn",
|
|
116
|
-
);
|
|
117
61
|
const { userMessageId } = await runConversationTurn({
|
|
118
62
|
conversationId,
|
|
119
63
|
content: [{ type: "text", text }],
|
|
@@ -22,8 +22,8 @@ import { getConversation } from "../../persistence/conversation-crud.js";
|
|
|
22
22
|
import { getUsageCostForConversationWindow } from "../../persistence/llm-usage-store.js";
|
|
23
23
|
import { resolveScheduleTimezone } from "../../schedule/schedule-timezone.js";
|
|
24
24
|
import { readTextFileSync } from "../../util/fs.js";
|
|
25
|
+
import { getWorkspacePromptPath } from "../../util/layout.js";
|
|
25
26
|
import { getLogger } from "../../util/logger.js";
|
|
26
|
-
import { getWorkspacePromptPath } from "../../util/platform.js";
|
|
27
27
|
import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
|
|
28
28
|
import { BadRequestError, InternalError } from "./errors.js";
|
|
29
29
|
import {
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from "../../util/cgroup-memory.js";
|
|
22
22
|
import { getCachedContainerCpuPercent } from "../../util/container-cpu-sampler.js";
|
|
23
23
|
import { getDiskUsageInfo } from "../../util/disk-usage.js";
|
|
24
|
-
import { getWorkspacePromptPath } from "../../util/
|
|
24
|
+
import { getWorkspacePromptPath } from "../../util/layout.js";
|
|
25
25
|
import { APP_VERSION } from "../../version.js";
|
|
26
26
|
import { resolveHatchedAtReadOnly } from "../../workspace/hatched-date.js";
|
|
27
27
|
import { WORKSPACE_MIGRATIONS } from "../../workspace/migrations/registry.js";
|
|
@@ -25,7 +25,6 @@ import { ROUTES as ATTACHMENT_ROUTES } from "./attachment-routes.js";
|
|
|
25
25
|
import { ROUTES as AUDIO_ROUTES } from "./audio-routes.js";
|
|
26
26
|
import { ROUTES as AUDIT_ROUTES } from "./audit-routes.js";
|
|
27
27
|
import { ROUTES as AUTH_ROUTES } from "./auth-routes.js";
|
|
28
|
-
import { ROUTES as AUTO_PROFILE_ROUTES } from "./auto-profile-routes.js";
|
|
29
28
|
import { ROUTES as AVATAR_ROUTES } from "./avatar-routes.js";
|
|
30
29
|
import { ROUTES as BACKGROUND_TOOL_ROUTES } from "./background-tool-routes.js";
|
|
31
30
|
import { ROUTES as BACKGROUND_WAKE_ROUTES } from "./background-wake-routes.js";
|
|
@@ -107,7 +106,6 @@ import { ROUTES as TELEGRAM_ROUTES } from "./integrations/telegram.js";
|
|
|
107
106
|
import { ROUTES as TWILIO_ROUTES } from "./integrations/twilio.js";
|
|
108
107
|
import { ROUTES as VERCEL_ROUTES } from "./integrations/vercel.js";
|
|
109
108
|
import { ROUTES as INTERNAL_OAUTH_ROUTES } from "./internal-oauth-routes.js";
|
|
110
|
-
import { ROUTES as INTERNAL_TELEMETRY_ROUTES } from "./internal-telemetry-routes.js";
|
|
111
109
|
import { ROUTES as INTERNAL_TWILIO_ROUTES } from "./internal-twilio-routes.js";
|
|
112
110
|
import { ROUTES as LIFECYCLE_ROUTES } from "./lifecycle-routes.js";
|
|
113
111
|
import { ROUTES as LIVE_VOICE_ROUTES } from "./live-voice-routes.js";
|
|
@@ -153,7 +151,6 @@ import { ROUTES as SUBAGENT_ROUTES } from "./subagents-routes.js";
|
|
|
153
151
|
import { ROUTES as SUGGEST_TRUST_RULE_ROUTES } from "./suggest-trust-rule-routes.js";
|
|
154
152
|
import { ROUTES as SURFACE_ACTION_ROUTES } from "./surface-action-routes.js";
|
|
155
153
|
import { ROUTES as SURFACE_CONTENT_ROUTES } from "./surface-content-routes.js";
|
|
156
|
-
import { ROUTES as TELEMETRY_ROUTES } from "./telemetry-routes.js";
|
|
157
154
|
import { ROUTES as THEME_ROUTES } from "./theme-routes.js";
|
|
158
155
|
import { ROUTES as TRUST_RULES_ROUTES } from "./trust-rules-routes.js";
|
|
159
156
|
import { ROUTES as TTS_ROUTES } from "./tts-routes.js";
|
|
@@ -218,7 +215,6 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
218
215
|
...CONVERSATION_QUERY_ROUTES,
|
|
219
216
|
...CONVERSATION_STARTER_ROUTES,
|
|
220
217
|
...ACTIVATION_ROUTES,
|
|
221
|
-
...AUTO_PROFILE_ROUTES,
|
|
222
218
|
...DEBUG_ROUTES,
|
|
223
219
|
...DEFAULT_PROVIDER_ROUTES,
|
|
224
220
|
...DESKTOP_SETUP_ROUTES,
|
|
@@ -255,7 +251,6 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
255
251
|
...INFERENCE_SEND_ROUTES,
|
|
256
252
|
...INGRESS_STATUS_ROUTES,
|
|
257
253
|
...INTERNAL_OAUTH_ROUTES,
|
|
258
|
-
...INTERNAL_TELEMETRY_ROUTES,
|
|
259
254
|
...MCP_AUTH_ROUTES,
|
|
260
255
|
...OAUTH_CONNECT_ROUTES,
|
|
261
256
|
...INTERNAL_TWILIO_ROUTES,
|
|
@@ -315,7 +310,6 @@ export const ROUTES: RouteDefinition[] = [
|
|
|
315
310
|
...SURFACE_CONTENT_ROUTES,
|
|
316
311
|
...TELEGRAM_ROUTES,
|
|
317
312
|
...TWILIO_ROUTES,
|
|
318
|
-
...TELEMETRY_ROUTES,
|
|
319
313
|
...THEME_ROUTES,
|
|
320
314
|
...TRUST_RULES_ROUTES,
|
|
321
315
|
...TTS_ROUTES,
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import { randomUUID } from "node:crypto";
|
|
16
16
|
|
|
17
17
|
import { getUserSelectableProfilesForProvider } from "../../config/default-profile-catalog.js";
|
|
18
|
-
import {
|
|
18
|
+
import { getConfig } from "../../config/loader.js";
|
|
19
19
|
import {
|
|
20
20
|
nonTextConversationProfileMessage,
|
|
21
21
|
profileSupportsTextGeneration,
|
|
@@ -156,7 +156,7 @@ export async function setInferenceProfileSession({
|
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
// --- Validate profile ---
|
|
159
|
-
const { llm } =
|
|
159
|
+
const { llm } = getConfig();
|
|
160
160
|
const profiles = getUserSelectableProfilesForProvider(llm);
|
|
161
161
|
if (!Object.prototype.hasOwnProperty.call(profiles, profile)) {
|
|
162
162
|
throw new BadRequestError(
|
|
@@ -193,7 +193,7 @@ export async function setInferenceProfileSession({
|
|
|
193
193
|
let clamped: number | null | undefined;
|
|
194
194
|
|
|
195
195
|
if (typeof ttlSeconds === "number") {
|
|
196
|
-
const maxTtl =
|
|
196
|
+
const maxTtl = getConfig().llm?.profileSession?.maxTtlSeconds ?? 43200;
|
|
197
197
|
clamped = Math.min(Math.max(1, ttlSeconds), maxTtl);
|
|
198
198
|
newExpiresAt = Date.now() + clamped * 1000;
|
|
199
199
|
newSessionId = callerSessionId ?? randomUUID();
|
|
@@ -24,6 +24,11 @@ import {
|
|
|
24
24
|
MANAGED_PROFILE_NAMES,
|
|
25
25
|
resolveDefaultProfileForProvider,
|
|
26
26
|
} from "../../config/default-profile-catalog.js";
|
|
27
|
+
import {
|
|
28
|
+
catalogEntryFor,
|
|
29
|
+
modalitiesOf,
|
|
30
|
+
resolveModalityOverride,
|
|
31
|
+
} from "../../config/input-modalities.js";
|
|
27
32
|
import {
|
|
28
33
|
getConfig,
|
|
29
34
|
getConfigReadOnly,
|
|
@@ -60,11 +65,7 @@ import {
|
|
|
60
65
|
isModelInCatalog,
|
|
61
66
|
} from "../../providers/model-catalog.js";
|
|
62
67
|
import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
|
|
63
|
-
import {
|
|
64
|
-
commitConfigWrite,
|
|
65
|
-
normalizeCloudProfileWrites,
|
|
66
|
-
rejectCloudProfileDeletion,
|
|
67
|
-
} from "./conversation-query-routes.js";
|
|
68
|
+
import { commitConfigWrite } from "./conversation-query-routes.js";
|
|
68
69
|
import { BadRequestError, ConflictError, NotFoundError } from "./errors.js";
|
|
69
70
|
import {
|
|
70
71
|
describeUnavailableProfile,
|
|
@@ -111,8 +112,22 @@ const profileSummarySchema = z
|
|
|
111
112
|
provider: z.string().nullable(),
|
|
112
113
|
model: z.string().nullable(),
|
|
113
114
|
status: z.enum(["active", "disabled"]),
|
|
114
|
-
source: z.enum(["managed", "user"]),
|
|
115
115
|
provider_connection: z.string().optional(),
|
|
116
|
+
/**
|
|
117
|
+
* Whether the entry's (provider, model) accepts image input: the model
|
|
118
|
+
* catalog's answer, with the entry's `inputModalities.image` override
|
|
119
|
+
* winning. Absent when the profile has no provider or model to judge
|
|
120
|
+
* (mix profiles, sparse stubs).
|
|
121
|
+
*/
|
|
122
|
+
supportsVision: z.boolean().optional(),
|
|
123
|
+
/**
|
|
124
|
+
* Present when the profile is a mix: the weighted arm list the resolver
|
|
125
|
+
* expands per dispatch, carried so pickers can judge mix
|
|
126
|
+
* dispatchability from the summary. Absent for standard profiles.
|
|
127
|
+
*/
|
|
128
|
+
mix: z
|
|
129
|
+
.array(z.object({ profile: z.string(), weight: z.number() }))
|
|
130
|
+
.optional(),
|
|
116
131
|
/** Null when the profile has no provider to judge (e.g. mix profiles). */
|
|
117
132
|
availability: availabilitySchema.nullable(),
|
|
118
133
|
config_issue: profileConfigIssueSchema.optional(),
|
|
@@ -122,7 +137,8 @@ const profileSummarySchema = z
|
|
|
122
137
|
const profileDetailSchema = z
|
|
123
138
|
.object({
|
|
124
139
|
name: z.string(),
|
|
125
|
-
|
|
140
|
+
/** The full effective body, resolved through the catalog like the list. */
|
|
141
|
+
entry: ProfileEntry,
|
|
126
142
|
availability: availabilitySchema.nullable(),
|
|
127
143
|
config_issue: profileConfigIssueSchema.optional(),
|
|
128
144
|
})
|
|
@@ -280,7 +296,7 @@ function profileConfigIssue(record: Record<string, unknown>): {
|
|
|
280
296
|
code: "model_unknown" | "over_output_cap" | "no_input_room";
|
|
281
297
|
message: string;
|
|
282
298
|
} | null {
|
|
283
|
-
if (record.mix != null || record.
|
|
299
|
+
if (record.mix != null || record.provider === "cadet") {
|
|
284
300
|
return null;
|
|
285
301
|
}
|
|
286
302
|
const provider =
|
|
@@ -531,16 +547,18 @@ async function handleListProfiles() {
|
|
|
531
547
|
orderProfileKeys(effective, config.llm.profileOrder).map(async (name) => {
|
|
532
548
|
const record = effective[name] as Record<string, unknown>;
|
|
533
549
|
const configIssue = profileConfigIssue(record);
|
|
550
|
+
const supportsVision = resolveSupportsVision(effective[name]);
|
|
534
551
|
return {
|
|
535
552
|
name,
|
|
536
553
|
label: typeof record.label === "string" ? record.label : null,
|
|
537
554
|
provider: typeof record.provider === "string" ? record.provider : null,
|
|
538
555
|
model: typeof record.model === "string" ? record.model : null,
|
|
539
556
|
status: record.status === "disabled" ? "disabled" : "active",
|
|
540
|
-
source: record.source === "managed" ? "managed" : "user",
|
|
541
557
|
...(typeof record.provider_connection === "string"
|
|
542
558
|
? { provider_connection: record.provider_connection }
|
|
543
559
|
: {}),
|
|
560
|
+
...(record.mix != null ? { mix: record.mix } : {}),
|
|
561
|
+
...(supportsVision === undefined ? {} : { supportsVision }),
|
|
544
562
|
availability: await computeProfileAvailability(record),
|
|
545
563
|
...(configIssue ? { config_issue: configIssue } : {}),
|
|
546
564
|
};
|
|
@@ -549,6 +567,26 @@ async function handleListProfiles() {
|
|
|
549
567
|
return { profiles };
|
|
550
568
|
}
|
|
551
569
|
|
|
570
|
+
/**
|
|
571
|
+
* Resolve whether the entry's (provider, model) accepts image input: the
|
|
572
|
+
* model catalog's answer, with the entry's `inputModalities.image` override
|
|
573
|
+
* winning. Unknown (provider, model) pairs with no override default to
|
|
574
|
+
* `true` (fail-open) so image upload stays available for custom / unlisted
|
|
575
|
+
* models. Undefined when the entry has no provider or model to judge.
|
|
576
|
+
*/
|
|
577
|
+
function resolveSupportsVision(
|
|
578
|
+
entry: ProfileEntry | undefined,
|
|
579
|
+
): boolean | undefined {
|
|
580
|
+
const provider = entry?.provider;
|
|
581
|
+
const model = entry?.model;
|
|
582
|
+
if (provider == null || model == null) {
|
|
583
|
+
return undefined;
|
|
584
|
+
}
|
|
585
|
+
const catalogVision = catalogEntryFor(provider, model)?.supportsVision;
|
|
586
|
+
const imageOverride = modalitiesOf(entry)?.image;
|
|
587
|
+
return resolveModalityOverride(imageOverride, catalogVision) ?? true;
|
|
588
|
+
}
|
|
589
|
+
|
|
552
590
|
async function handleGetProfile({ pathParams = {} }: RouteHandlerArgs) {
|
|
553
591
|
const name = (pathParams.name ?? "").trim();
|
|
554
592
|
if (!name) {
|
|
@@ -654,9 +692,6 @@ async function handleCreateProfile({ body = {} }: RouteHandlerArgs) {
|
|
|
654
692
|
}
|
|
655
693
|
|
|
656
694
|
profiles[name] = entry;
|
|
657
|
-
// Defensive: for a user-owned name this is a no-op; it re-asserts the
|
|
658
|
-
// managed-name protection at the shared write choke point.
|
|
659
|
-
normalizeCloudProfileWrites({ llm: { profiles: { [name]: entry } } });
|
|
660
695
|
|
|
661
696
|
await commitConfigWrite(raw, "create inference profile");
|
|
662
697
|
|
|
@@ -703,7 +738,7 @@ async function handleUpdateProfile({
|
|
|
703
738
|
}
|
|
704
739
|
throw new NotFoundError(`Profile "${name}" not found.`);
|
|
705
740
|
}
|
|
706
|
-
if (MANAGED_PROFILE_NAMES.has(name) && existing.
|
|
741
|
+
if (MANAGED_PROFILE_NAMES.has(name) && existing.provider === "cadet") {
|
|
707
742
|
throw new BadRequestError(
|
|
708
743
|
`Cannot edit cloud profile "${name}". Cloud profiles are read-only; duplicate to a custom profile to customize.`,
|
|
709
744
|
);
|
|
@@ -764,8 +799,6 @@ async function handleUpdateProfile({
|
|
|
764
799
|
...fragmentFromBody(body as Record<string, unknown>),
|
|
765
800
|
...(input.provider !== undefined ? { provider: input.provider } : {}),
|
|
766
801
|
...(input.model !== undefined ? { model: input.model } : {}),
|
|
767
|
-
source:
|
|
768
|
-
existing.source === "managed" ? "user" : (existing.source ?? "user"),
|
|
769
802
|
};
|
|
770
803
|
// Keep the allowUnlisted marker faithful to the pair being stored: stamp
|
|
771
804
|
// it on a deliberate unlisted acceptance (warnings can only be the
|
|
@@ -799,7 +832,6 @@ async function handleUpdateProfile({
|
|
|
799
832
|
}
|
|
800
833
|
|
|
801
834
|
profiles[name] = merged;
|
|
802
|
-
normalizeCloudProfileWrites({ llm: { profiles: { [name]: merged } } });
|
|
803
835
|
|
|
804
836
|
await commitConfigWrite(raw, "update inference profile");
|
|
805
837
|
|
|
@@ -834,11 +866,6 @@ async function handleDeleteProfile({ pathParams = {} }: RouteHandlerArgs) {
|
|
|
834
866
|
const llm = asPlainObject(raw.llm);
|
|
835
867
|
const profiles = asPlainObject(llm?.profiles);
|
|
836
868
|
|
|
837
|
-
// Reject deletion of a cloud default with a clear message before the
|
|
838
|
-
// existence check, so `delete balanced` explains itself even when the
|
|
839
|
-
// managed stub is on disk.
|
|
840
|
-
rejectCloudProfileDeletion({ llm: { profiles: { [name]: null } } });
|
|
841
|
-
|
|
842
869
|
if (!profiles || profiles[name] === undefined) {
|
|
843
870
|
throw new NotFoundError(`Profile "${name}" not found.`);
|
|
844
871
|
}
|
|
@@ -600,7 +600,6 @@ async function handleDeleteConnection({ pathParams = {} }: RouteHandlerArgs) {
|
|
|
600
600
|
// Cloud connections are write-protected: `seedCanonicalConnections` would
|
|
601
601
|
// re-upsert them on the next daemon boot anyway, so a successful delete here
|
|
602
602
|
// produces a confusing delete → reappear loop. Reject outright. Mirrors
|
|
603
|
-
// `rejectCloudProfileDeletion` for cloud profiles (which are similarly
|
|
604
603
|
// re-overlaid by `seed-inference-profiles.ts` on boot).
|
|
605
604
|
//
|
|
606
605
|
// Gated on the row, not the name: an install predating the reserved name can
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
resolveDefaultProfileKey,
|
|
6
6
|
resolveShippedDefaultProfileKey,
|
|
7
7
|
} from "../../config/llm-resolver.js";
|
|
8
|
-
import {
|
|
8
|
+
import { getConfig } from "../../config/loader.js";
|
|
9
9
|
import {
|
|
10
10
|
CALL_SITE_CATALOG,
|
|
11
11
|
CALL_SITE_DOMAINS,
|
|
@@ -55,7 +55,7 @@ export function buildCallSiteCatalog(llm: LLMConfig) {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
async function handleGetCallSites() {
|
|
58
|
-
const { llm } =
|
|
58
|
+
const { llm } = getConfig();
|
|
59
59
|
return {
|
|
60
60
|
domains: CALL_SITE_DOMAINS,
|
|
61
61
|
callSites: buildCallSiteCatalog(llm),
|
|
@@ -74,7 +74,7 @@ export type LlmProfilesListResult = z.infer<
|
|
|
74
74
|
>;
|
|
75
75
|
|
|
76
76
|
async function handleListProfiles(): Promise<LlmProfilesListResult> {
|
|
77
|
-
const { llm } =
|
|
77
|
+
const { llm } = getConfig();
|
|
78
78
|
const profiles = getUserSelectableProfilesForProvider(llm);
|
|
79
79
|
return {
|
|
80
80
|
profiles: Object.keys(profiles).sort(),
|
|
@@ -19,7 +19,7 @@ import { afterEach, beforeEach, describe, expect, test } from "bun:test";
|
|
|
19
19
|
import {
|
|
20
20
|
getWorkspacePluginsDir,
|
|
21
21
|
getWorkspaceSkillsDir,
|
|
22
|
-
} from "../../../../util/
|
|
22
|
+
} from "../../../../util/layout.js";
|
|
23
23
|
import {
|
|
24
24
|
collectInstalledInventory,
|
|
25
25
|
collectPluginInventory,
|
|
@@ -35,7 +35,7 @@ mock.module("../../../../persistence/conversation-directories.js", () => ({
|
|
|
35
35
|
},
|
|
36
36
|
}));
|
|
37
37
|
|
|
38
|
-
import { getConversationsDir } from "../../../../util/
|
|
38
|
+
import { getConversationsDir } from "../../../../util/layout.js";
|
|
39
39
|
import { collectWorkspaceData } from "../workspace-allowlist.js";
|
|
40
40
|
|
|
41
41
|
let staging: string;
|
|
@@ -25,7 +25,7 @@ import { tmpdir } from "node:os";
|
|
|
25
25
|
import { join } from "node:path";
|
|
26
26
|
import { afterEach, beforeEach, describe, expect, test } from "bun:test";
|
|
27
27
|
|
|
28
|
-
import { getConversationsDir } from "../../../../util/
|
|
28
|
+
import { getConversationsDir } from "../../../../util/layout.js";
|
|
29
29
|
import { collectWorkspaceData } from "../workspace-allowlist.js";
|
|
30
30
|
|
|
31
31
|
// ---------------------------------------------------------------------------
|
|
@@ -28,8 +28,8 @@ import { join } from "node:path";
|
|
|
28
28
|
import { StringDecoder } from "node:string_decoder";
|
|
29
29
|
|
|
30
30
|
import { parseConversationDirName } from "../../../persistence/conversation-directories.js";
|
|
31
|
+
import { getConversationsDir } from "../../../util/layout.js";
|
|
31
32
|
import { getLogger } from "../../../util/logger.js";
|
|
32
|
-
import { getConversationsDir } from "../../../util/platform.js";
|
|
33
33
|
|
|
34
34
|
const log = getLogger("log-export-workspace");
|
|
35
35
|
|
|
@@ -22,7 +22,7 @@ import { join } from "node:path";
|
|
|
22
22
|
import { and, desc, eq, gte, lte } from "drizzle-orm";
|
|
23
23
|
import { z } from "zod";
|
|
24
24
|
|
|
25
|
-
import {
|
|
25
|
+
import { loadWorkspaceMcpConfig } from "../../mcp/workspace-mcp-config.js";
|
|
26
26
|
import { getDb, getLogsDb } from "../../persistence/db-connection.js";
|
|
27
27
|
import {
|
|
28
28
|
llmRequestLogs,
|
|
@@ -30,12 +30,12 @@ import {
|
|
|
30
30
|
messages,
|
|
31
31
|
toolInvocations,
|
|
32
32
|
} from "../../persistence/schema/index.js";
|
|
33
|
-
import { getLogger, LOG_FILE_PATTERN } from "../../util/logger.js";
|
|
34
33
|
import {
|
|
35
34
|
getDaemonStderrLogPath,
|
|
36
35
|
getDataDir,
|
|
37
36
|
getWorkspaceConfigPath,
|
|
38
|
-
} from "../../util/
|
|
37
|
+
} from "../../util/layout.js";
|
|
38
|
+
import { getLogger, LOG_FILE_PATTERN } from "../../util/logger.js";
|
|
39
39
|
import { APP_VERSION, COMMIT_SHA } from "../../version.js";
|
|
40
40
|
import { assistantEventHub } from "../assistant-event-hub.js";
|
|
41
41
|
import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
|
|
@@ -569,20 +569,22 @@ function readSanitizedConfig(): Record<string, unknown> | undefined {
|
|
|
569
569
|
}
|
|
570
570
|
}
|
|
571
571
|
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
572
|
+
// Project the workspace MCP servers onto the export, read through the
|
|
573
|
+
// module's API. Raw on purpose: the walk below redacts transport
|
|
574
|
+
// headers and env, which must be present to sanitize.
|
|
575
|
+
const mcp = loadWorkspaceMcpConfig();
|
|
576
|
+
config.mcp = mcp;
|
|
577
|
+
const mcpServers = mcp.servers;
|
|
578
|
+
for (const server of Object.values(mcpServers)) {
|
|
579
|
+
const transport = server.transport;
|
|
580
|
+
if (transport.type === "stdio") {
|
|
581
|
+
if (transport.env) {
|
|
582
|
+
transport.env = redactValueMap(transport.env);
|
|
583
|
+
}
|
|
577
584
|
continue;
|
|
578
585
|
}
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
transport.headers = redactValueMap(headers);
|
|
582
|
-
}
|
|
583
|
-
const env = asRecord(transport.env);
|
|
584
|
-
if (env) {
|
|
585
|
-
transport.env = redactValueMap(env);
|
|
586
|
+
if (transport.headers) {
|
|
587
|
+
transport.headers = redactValueMap(transport.headers);
|
|
586
588
|
}
|
|
587
589
|
}
|
|
588
590
|
|
|
@@ -13,7 +13,7 @@ import { getDb } from "../../persistence/db-connection.js";
|
|
|
13
13
|
import { getMaxRollbackVersion } from "../../persistence/migrations/run-migrations.js";
|
|
14
14
|
import { rollbackMemoryMigration } from "../../persistence/migrations/validate-migration-state.js";
|
|
15
15
|
import { migrationSteps } from "../../persistence/steps.js";
|
|
16
|
-
import { getWorkspaceDir } from "../../util/
|
|
16
|
+
import { getWorkspaceDir } from "../../util/layout.js";
|
|
17
17
|
import { WORKSPACE_MIGRATIONS } from "../../workspace/migrations/registry.js";
|
|
18
18
|
import {
|
|
19
19
|
getLastWorkspaceMigrationId,
|
|
@@ -33,7 +33,6 @@ import {
|
|
|
33
33
|
getDb,
|
|
34
34
|
getLogsSqlite,
|
|
35
35
|
getMemorySqlite,
|
|
36
|
-
getTelemetrySqlite,
|
|
37
36
|
resetDb,
|
|
38
37
|
} from "../../persistence/db-connection.js";
|
|
39
38
|
import { validateMigrationState } from "../../persistence/migrations/validate-migration-state.js";
|
|
@@ -49,8 +48,8 @@ import {
|
|
|
49
48
|
getCredentialMetadata,
|
|
50
49
|
upsertCredentialMetadata,
|
|
51
50
|
} from "../../tools/credentials/metadata-store.js";
|
|
51
|
+
import { getWorkspaceDir, getWorkspaceHooksDir } from "../../util/layout.js";
|
|
52
52
|
import { getLogger } from "../../util/logger.js";
|
|
53
|
-
import { getWorkspaceDir, getWorkspaceHooksDir } from "../../util/platform.js";
|
|
54
53
|
import { APP_VERSION } from "../../version.js";
|
|
55
54
|
import { DAEMON_INTERNAL_ASSISTANT_ID } from "../assistant-scope.js";
|
|
56
55
|
import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
|
|
@@ -197,7 +196,7 @@ async function checkpointDbsForExport(): Promise<void> {
|
|
|
197
196
|
for (const [label, sqlite] of [
|
|
198
197
|
["logs", getLogsSqlite()],
|
|
199
198
|
["memory", getMemorySqlite()],
|
|
200
|
-
|
|
199
|
+
// (no telemetry: migration 387 deletes that database file outright)
|
|
201
200
|
] as const) {
|
|
202
201
|
if (!sqlite) {
|
|
203
202
|
log.warn(
|
|
@@ -20,11 +20,11 @@ import {
|
|
|
20
20
|
} from "../../monitoring/control.js";
|
|
21
21
|
import type { ResourceSample } from "../../monitoring/resource-sample-types.js";
|
|
22
22
|
import { SampleRingBuffer } from "../../monitoring/sample-ring-buffer.js";
|
|
23
|
-
import { getLogger } from "../../util/logger.js";
|
|
24
23
|
import {
|
|
25
24
|
getMonitoringDataDir,
|
|
26
25
|
getMonitoringPidPath,
|
|
27
|
-
} from "../../util/
|
|
26
|
+
} from "../../util/layout.js";
|
|
27
|
+
import { getLogger } from "../../util/logger.js";
|
|
28
28
|
import { ACTOR_PRINCIPALS } from "../auth/route-policy.js";
|
|
29
29
|
import { InternalError } from "./errors.js";
|
|
30
30
|
import type { RouteDefinition } from "./types.js";
|