@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
|
@@ -3,7 +3,7 @@ import { afterEach, beforeEach, describe, expect, test } from "bun:test";
|
|
|
3
3
|
import type { ToolContext } from "../../../../tools/types.js";
|
|
4
4
|
|
|
5
5
|
// The real isWindows() reads process.platform, so simulate the host platform
|
|
6
|
-
// directly instead of mocking util/
|
|
6
|
+
// directly instead of mocking util/os.js.
|
|
7
7
|
const originalProcessPlatform = process.platform;
|
|
8
8
|
|
|
9
9
|
function setProcessPlatform(value: string): void {
|
|
@@ -159,12 +159,6 @@ export const CALL_SITE_DEFAULTS: Record<LLMCallSite, CallSiteDefaultConfig> = {
|
|
|
159
159
|
voiceEscalationJudge: {
|
|
160
160
|
profile: JEV_MANAGED_PROFILE_KEY,
|
|
161
161
|
},
|
|
162
|
-
// Picks the default profile for a turn pinned to the Auto profile. On a
|
|
163
|
-
// BYOK install the cloud-only Jev profile has no body, so the router is
|
|
164
|
-
// unavailable and the turn runs on Balanced.
|
|
165
|
-
autoProfileRouter: {
|
|
166
|
-
profile: JEV_MANAGED_PROFILE_KEY,
|
|
167
|
-
},
|
|
168
162
|
// The barge-in continuation judge remains off until a TypeSafe profile is
|
|
169
163
|
// pinned here (see live-voice/continuation-judge.ts).
|
|
170
164
|
voiceContinuationJudge: { profile: "cost-optimized" },
|
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Django maps an assistant API key to these ids via
|
|
5
5
|
* `POST /v1/internal/assistants/validate/`. Process startup rehydrates from
|
|
6
|
-
* that endpoint into the in-memory overrides. Resolution reads those
|
|
7
|
-
* overrides
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* only while the same API key and base URL are stored).
|
|
6
|
+
* that endpoint into the in-memory overrides. Resolution reads only those
|
|
7
|
+
* overrides. When the in-memory assistant id is empty, the next resolve
|
|
8
|
+
* retries validate (single-flight, with a cooldown after a failed attempt
|
|
9
|
+
* that holds only while the same API key and base URL are stored).
|
|
11
10
|
*/
|
|
12
11
|
|
|
13
12
|
import { credentialKey } from "../security/credential-key.js";
|
|
@@ -174,6 +173,14 @@ export async function ensureCloudIdentityIds(): Promise<void> {
|
|
|
174
173
|
failedFingerprint = null;
|
|
175
174
|
nextEnsureAttemptAt = 0;
|
|
176
175
|
log.info("Loaded platform identity from platform validate");
|
|
176
|
+
} catch (err) {
|
|
177
|
+
// Startup rehydration must never take a process down: an
|
|
178
|
+
// unreachable credential store only means identity is not bound
|
|
179
|
+
// yet, and the next resolve retries.
|
|
180
|
+
log.warn(
|
|
181
|
+
{ error: err instanceof Error ? err.message : String(err) },
|
|
182
|
+
"Failed to ensure cloud identity ids (non-fatal)",
|
|
183
|
+
);
|
|
177
184
|
} finally {
|
|
178
185
|
ensureInFlight = null;
|
|
179
186
|
}
|
|
@@ -10,7 +10,7 @@ import { join } from "node:path";
|
|
|
10
10
|
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
|
|
13
|
-
import { getDataDir } from "../util/
|
|
13
|
+
import { getDataDir } from "../util/layout.js";
|
|
14
14
|
|
|
15
15
|
export const ComposerPreferencesSchema = z.object({
|
|
16
16
|
favoriteModeIds: z.array(z.string().min(1).max(200)).max(5).default([]),
|
|
@@ -8,7 +8,6 @@ import { resolveModelIntent } from "../providers/model-intents.js";
|
|
|
8
8
|
import { isCodexSubscriptionModel } from "../providers/openai/codex-models.js";
|
|
9
9
|
import type { ModelIntent } from "../providers/types.js";
|
|
10
10
|
import {
|
|
11
|
-
AUTO_PROFILE_KEY,
|
|
12
11
|
BACKUP_PROFILE_KEYS,
|
|
13
12
|
type BackupProfileKey,
|
|
14
13
|
DEFAULT_PROFILE_KEYS,
|
|
@@ -93,7 +92,6 @@ const CADET_PROFILE_IMPLS: ProfileImpls = {
|
|
|
93
92
|
balanced: {
|
|
94
93
|
model: "accounts/fireworks/models/glm-5p3-flash",
|
|
95
94
|
provider: "cadet",
|
|
96
|
-
source: "managed",
|
|
97
95
|
label: "Balanced",
|
|
98
96
|
description: "Good balance of quality, cost, and speed",
|
|
99
97
|
fallbackProfile: FALLBACK_PROFILE_BY_KEY.balanced,
|
|
@@ -107,7 +105,6 @@ const CADET_PROFILE_IMPLS: ProfileImpls = {
|
|
|
107
105
|
"quality-optimized": {
|
|
108
106
|
model: "gpt-5.6-sol",
|
|
109
107
|
provider: "cadet",
|
|
110
|
-
source: "managed",
|
|
111
108
|
label: "Quality",
|
|
112
109
|
description: "High-quality results with the most capable model",
|
|
113
110
|
fallbackProfile: FALLBACK_PROFILE_BY_KEY["quality-optimized"],
|
|
@@ -121,7 +118,6 @@ const CADET_PROFILE_IMPLS: ProfileImpls = {
|
|
|
121
118
|
"cost-optimized": {
|
|
122
119
|
model: "accounts/fireworks/models/deepseek-v4p1-flash",
|
|
123
120
|
provider: "cadet",
|
|
124
|
-
source: "managed",
|
|
125
121
|
label: "Budget",
|
|
126
122
|
// Tier intent only - never name the concrete model here. Clients
|
|
127
123
|
// surface the live model beside the description, so a model name in
|
|
@@ -154,7 +150,6 @@ const CADET_PROFILE_IMPLS: ProfileImpls = {
|
|
|
154
150
|
// owner. This model is the one live-voice TTFT drives validated.
|
|
155
151
|
model: "gpt-5.6-luna",
|
|
156
152
|
provider: "cadet",
|
|
157
|
-
source: "managed",
|
|
158
153
|
label: "Fast",
|
|
159
154
|
description: "Fastest responses, with reasoning turned off",
|
|
160
155
|
fallbackProfile: FALLBACK_PROFILE_BY_KEY["latency-optimized"],
|
|
@@ -189,7 +184,6 @@ const BACKUP_PROFILE_IMPLS: Record<BackupProfileKey, DefaultProfileTemplate> = {
|
|
|
189
184
|
"balanced-backup": {
|
|
190
185
|
model: "claude-sonnet-5",
|
|
191
186
|
provider: "cadet",
|
|
192
|
-
source: "managed",
|
|
193
187
|
label: "Balanced Backup",
|
|
194
188
|
description: "Automatic backup for the Balanced profile",
|
|
195
189
|
maxTokens: 32000,
|
|
@@ -202,7 +196,6 @@ const BACKUP_PROFILE_IMPLS: Record<BackupProfileKey, DefaultProfileTemplate> = {
|
|
|
202
196
|
"quality-optimized-backup": {
|
|
203
197
|
model: "claude-opus-5",
|
|
204
198
|
provider: "cadet",
|
|
205
|
-
source: "managed",
|
|
206
199
|
label: "Quality Backup",
|
|
207
200
|
description: "Automatic backup for the Quality profile",
|
|
208
201
|
maxTokens: 32000,
|
|
@@ -215,7 +208,6 @@ const BACKUP_PROFILE_IMPLS: Record<BackupProfileKey, DefaultProfileTemplate> = {
|
|
|
215
208
|
"cost-optimized-backup": {
|
|
216
209
|
model: "gemini-3.1-flash-lite",
|
|
217
210
|
provider: "cadet",
|
|
218
|
-
source: "managed",
|
|
219
211
|
label: "Budget Backup",
|
|
220
212
|
description: "Automatic backup for the Budget profile",
|
|
221
213
|
maxTokens: 8192,
|
|
@@ -233,7 +225,6 @@ const BACKUP_PROFILE_IMPLS: Record<BackupProfileKey, DefaultProfileTemplate> = {
|
|
|
233
225
|
"latency-optimized-backup": {
|
|
234
226
|
model: "claude-haiku-4-5-20251001",
|
|
235
227
|
provider: "cadet",
|
|
236
|
-
source: "managed",
|
|
237
228
|
label: "Fast Backup",
|
|
238
229
|
description: "Automatic backup for the Fast profile",
|
|
239
230
|
maxTokens: 8192,
|
|
@@ -259,7 +250,6 @@ const CHATGPT_PROFILE_IMPLS: ProfileImpls = {
|
|
|
259
250
|
balanced: {
|
|
260
251
|
model: "gpt-5.6-luna",
|
|
261
252
|
provider: "chatgpt",
|
|
262
|
-
source: "managed",
|
|
263
253
|
label: "Balanced",
|
|
264
254
|
description: "Good balance of quality, cost, and speed",
|
|
265
255
|
// Matches the cadet column's Balanced token budget: the Codex path
|
|
@@ -272,7 +262,6 @@ const CHATGPT_PROFILE_IMPLS: ProfileImpls = {
|
|
|
272
262
|
"quality-optimized": {
|
|
273
263
|
model: "gpt-5.6-sol",
|
|
274
264
|
provider: "chatgpt",
|
|
275
|
-
source: "managed",
|
|
276
265
|
label: "Quality",
|
|
277
266
|
description: "Best results with the most capable model",
|
|
278
267
|
maxTokens: 32000,
|
|
@@ -283,7 +272,6 @@ const CHATGPT_PROFILE_IMPLS: ProfileImpls = {
|
|
|
283
272
|
"cost-optimized": {
|
|
284
273
|
model: "gpt-5.6-luna",
|
|
285
274
|
provider: "chatgpt",
|
|
286
|
-
source: "managed",
|
|
287
275
|
label: "Budget",
|
|
288
276
|
description: "Cheapest responses, for high-volume work",
|
|
289
277
|
maxTokens: 8192,
|
|
@@ -294,7 +282,6 @@ const CHATGPT_PROFILE_IMPLS: ProfileImpls = {
|
|
|
294
282
|
"latency-optimized": {
|
|
295
283
|
model: "gpt-5.6-luna",
|
|
296
284
|
provider: "chatgpt",
|
|
297
|
-
source: "managed",
|
|
298
285
|
label: "Fast",
|
|
299
286
|
description: "Fastest responses, with reasoning turned off",
|
|
300
287
|
maxTokens: 8192,
|
|
@@ -322,7 +309,6 @@ const BYOK_PROFILE_IMPLS: Record<
|
|
|
322
309
|
> = {
|
|
323
310
|
balanced: {
|
|
324
311
|
intent: "balanced",
|
|
325
|
-
source: "user",
|
|
326
312
|
label: "Balanced",
|
|
327
313
|
description: "Good balance of quality, cost, and speed",
|
|
328
314
|
maxTokens: 16000,
|
|
@@ -332,7 +318,6 @@ const BYOK_PROFILE_IMPLS: Record<
|
|
|
332
318
|
},
|
|
333
319
|
"quality-optimized": {
|
|
334
320
|
intent: "quality-optimized",
|
|
335
|
-
source: "user",
|
|
336
321
|
label: "Quality",
|
|
337
322
|
description: "Best results with the most capable model",
|
|
338
323
|
maxTokens: 32000,
|
|
@@ -345,7 +330,6 @@ const BYOK_PROFILE_IMPLS: Record<
|
|
|
345
330
|
// is effort alone (see PROVIDER_MODEL_INTENTS).
|
|
346
331
|
"cost-optimized": {
|
|
347
332
|
intent: "cost-optimized",
|
|
348
|
-
source: "user",
|
|
349
333
|
label: "Budget",
|
|
350
334
|
description: "Cheapest responses, for high-volume work",
|
|
351
335
|
maxTokens: 8192,
|
|
@@ -355,7 +339,6 @@ const BYOK_PROFILE_IMPLS: Record<
|
|
|
355
339
|
},
|
|
356
340
|
"latency-optimized": {
|
|
357
341
|
intent: "latency-optimized",
|
|
358
|
-
source: "user",
|
|
359
342
|
label: "Fast",
|
|
360
343
|
description: "Fastest responses, with reasoning turned off",
|
|
361
344
|
maxTokens: 8192,
|
|
@@ -402,7 +385,6 @@ export const PROFILE_IMPLS: Record<
|
|
|
402
385
|
export const JEV_MANAGED_PROFILE_TEMPLATE: DefaultProfileTemplate = {
|
|
403
386
|
model: "jev-latest",
|
|
404
387
|
provider: "cadet",
|
|
405
|
-
source: "managed",
|
|
406
388
|
label: "Jev",
|
|
407
389
|
description:
|
|
408
390
|
"TypeSafe decision model for yes/no verdicts, for the voice judges and memory selection",
|
|
@@ -411,27 +393,6 @@ export const JEV_MANAGED_PROFILE_TEMPLATE: DefaultProfileTemplate = {
|
|
|
411
393
|
contextWindow: { maxInputTokens: 32_000 },
|
|
412
394
|
};
|
|
413
395
|
|
|
414
|
-
/**
|
|
415
|
-
* The Auto profile: the cloud Balanced body under its own label, so that
|
|
416
|
-
* anything dispatching the name directly runs Balanced. The per-message
|
|
417
|
-
* choice among the defaults happens in the agent loop, not here (see
|
|
418
|
-
* `AUTO_PROFILE_KEY`). No `fallbackProfile`: the code-owned fallback mapping
|
|
419
|
-
* is keyed by default profile, and a direct dispatch of this name is already
|
|
420
|
-
* the fallback path. Flag-gated like `os-beta`: NOT in
|
|
421
|
-
* `MANAGED_PROFILE_TEMPLATES`, so the unconditional boot seed never creates
|
|
422
|
-
* it; the flag-gated profile reconcile materializes it while the
|
|
423
|
-
* `auto-profile` feature flag is on.
|
|
424
|
-
*/
|
|
425
|
-
export const AUTO_PROFILE_TEMPLATE: DefaultProfileTemplate = (() => {
|
|
426
|
-
const { fallbackProfile: _fallbackProfile, ...balanced } =
|
|
427
|
-
CADET_PROFILE_IMPLS.balanced;
|
|
428
|
-
return {
|
|
429
|
-
...balanced,
|
|
430
|
-
label: "Auto",
|
|
431
|
-
description: "Picks the profile that fits each message, in beta",
|
|
432
|
-
};
|
|
433
|
-
})();
|
|
434
|
-
|
|
435
396
|
/**
|
|
436
397
|
* Cloud profiles, i.e. the `cadet` column keyed by profile name, plus the
|
|
437
398
|
* managed backup profiles and the cloud Jev profile. Backups come after the
|
|
@@ -498,7 +459,6 @@ export const USER_PROFILE_TEMPLATES: Record<string, DefaultProfileTemplate> =
|
|
|
498
459
|
export const OS_BETA_PROFILE_TEMPLATE: DefaultProfileTemplate = {
|
|
499
460
|
model: "MiniMaxAI/MiniMax-M3",
|
|
500
461
|
provider: "cadet",
|
|
501
|
-
source: "managed",
|
|
502
462
|
label: "OS Beta",
|
|
503
463
|
description: "Good balance of quality, cost, and speed, in beta",
|
|
504
464
|
maxTokens: 32000,
|
|
@@ -537,31 +497,13 @@ export const CODE_OWNED_PROFILE_NAMES = new Set<string>([
|
|
|
537
497
|
JEV_MANAGED_PROFILE_KEY,
|
|
538
498
|
]);
|
|
539
499
|
|
|
540
|
-
//
|
|
541
|
-
//
|
|
542
|
-
//
|
|
543
|
-
// profile sharing one of these names is NOT locked — invariance is gated on
|
|
544
|
-
// the on-disk entry's `source` being `managed`.
|
|
545
|
-
export const INVARIANT_PROFILE_NAMES = new Set<string>([
|
|
546
|
-
...DEFAULT_PROFILE_KEYS,
|
|
547
|
-
...BACKUP_PROFILE_KEYS,
|
|
548
|
-
JEV_MANAGED_PROFILE_KEY,
|
|
549
|
-
AUTO_PROFILE_KEY,
|
|
550
|
-
OS_BETA_PROFILE_KEY,
|
|
551
|
-
]);
|
|
552
|
-
|
|
553
|
-
// Membership here marks a name as managed. The route layer applies managed
|
|
554
|
-
// restrictions (blocking model/provider edits and deletion) only to entries
|
|
555
|
-
// whose on-disk `source` is `managed`; `INVARIANT_PROFILE_NAMES` marks the
|
|
556
|
-
// names whose managed-source entries are additionally frozen at the
|
|
557
|
-
// `commitConfigWrite` choke point. `OS_BETA_PROFILE_KEY` is flag-gated: it is
|
|
558
|
-
// materialized by the flag-gated profile reconcile, which refuses to touch a
|
|
559
|
-
// same-named user profile.
|
|
500
|
+
// Names reserved for code-defined default profiles. Users cannot create or
|
|
501
|
+
// edit profiles under these names — a workspace entry on a non-`cadet`
|
|
502
|
+
// provider under one would be a shadow, which the route layer refuses.
|
|
560
503
|
export const MANAGED_PROFILE_NAMES = new Set<string>([
|
|
561
504
|
...DEFAULT_PROFILE_KEYS,
|
|
562
505
|
...BACKUP_PROFILE_KEYS,
|
|
563
506
|
JEV_MANAGED_PROFILE_KEY,
|
|
564
|
-
AUTO_PROFILE_KEY,
|
|
565
507
|
OS_BETA_PROFILE_KEY,
|
|
566
508
|
]);
|
|
567
509
|
|
|
@@ -691,10 +633,6 @@ function buildDefaultProfileEntries(): Record<string, ProfileEntry> {
|
|
|
691
633
|
JEV_MANAGED_PROFILE_TEMPLATE,
|
|
692
634
|
JEV_MANAGED_PROFILE_TEMPLATE.provider,
|
|
693
635
|
);
|
|
694
|
-
entries[AUTO_PROFILE_KEY] = materializeProfile(
|
|
695
|
-
AUTO_PROFILE_TEMPLATE,
|
|
696
|
-
AUTO_PROFILE_TEMPLATE.provider,
|
|
697
|
-
);
|
|
698
636
|
entries[OS_BETA_PROFILE_KEY] = materializeProfile(
|
|
699
637
|
OS_BETA_PROFILE_TEMPLATE,
|
|
700
638
|
OS_BETA_PROFILE_TEMPLATE.provider,
|
|
@@ -734,9 +672,9 @@ const WORKSPACE_OWNED_DEFAULT_FIELDS = ["label", "status", "topP"] as const;
|
|
|
734
672
|
* Precedence:
|
|
735
673
|
* - A name with no code default resolves to the workspace entry (custom
|
|
736
674
|
* profiles pass through untouched).
|
|
737
|
-
* - A workspace entry
|
|
675
|
+
* - A workspace entry on a non-`cadet` provider wins over the code
|
|
738
676
|
* default — a user-owned profile sharing a default name shadows it.
|
|
739
|
-
* - A
|
|
677
|
+
* - A `cadet`-provider workspace entry contributes only its
|
|
740
678
|
* `WORKSPACE_OWNED_DEFAULT_FIELDS`; all other content comes from the code
|
|
741
679
|
* default body.
|
|
742
680
|
* - A default absent from the workspace resolves to the catalog body as-is —
|
|
@@ -777,7 +715,7 @@ function resolveAgainstBody(
|
|
|
777
715
|
// to the stub would list a profile with no provider or model and let a
|
|
778
716
|
// reference to it look valid, which is precisely what `LLMSchema` rejects
|
|
779
717
|
// on those columns.
|
|
780
|
-
if (isCloudOnlyProfileKey(name) && workspace?.
|
|
718
|
+
if (isCloudOnlyProfileKey(name) && workspace?.provider === "cadet") {
|
|
781
719
|
return undefined;
|
|
782
720
|
}
|
|
783
721
|
return workspace;
|
|
@@ -788,7 +726,7 @@ function resolveAgainstBody(
|
|
|
788
726
|
if (workspace == null) {
|
|
789
727
|
return isFlagGatedProfileKey(name) ? undefined : { ...body };
|
|
790
728
|
}
|
|
791
|
-
if (workspace.
|
|
729
|
+
if (workspace.provider !== "cadet") {
|
|
792
730
|
return workspace;
|
|
793
731
|
}
|
|
794
732
|
const merged: ProfileEntry = { ...body };
|
|
@@ -816,11 +754,7 @@ function resolveAgainstBody(
|
|
|
816
754
|
* - A default provider without a named matrix column materializes from the
|
|
817
755
|
* shared `BYOK_PROFILE_IMPLS` templates, with `resolveModelIntent`
|
|
818
756
|
* falling back to the provider's catalog `defaultModel`.
|
|
819
|
-
*
|
|
820
|
-
* default profile content is code-owned whichever provider implements it.
|
|
821
|
-
* The BYOK templates' `source: "user"` exists for the conversion pass's
|
|
822
|
-
* frozen `custom-*` reference bodies (`USER_PROFILE_TEMPLATES`), not as
|
|
823
|
-
* an ownership claim on the body.
|
|
757
|
+
* Default profile content is code-owned whichever provider implements it.
|
|
824
758
|
*/
|
|
825
759
|
export function resolveDefaultProfileForProvider(
|
|
826
760
|
workspaceProfiles: Record<string, ProfileEntry> | undefined,
|
|
@@ -892,7 +826,6 @@ function defaultProfileBodyForProvider(
|
|
|
892
826
|
impl.provider,
|
|
893
827
|
resolveDefaultConnectionName(defaultBlob) ?? undefined,
|
|
894
828
|
),
|
|
895
|
-
source: "managed",
|
|
896
829
|
});
|
|
897
830
|
}
|
|
898
831
|
|
|
@@ -77,24 +77,6 @@ export function isBackupProfileKey(value: string): value is BackupProfileKey {
|
|
|
77
77
|
*/
|
|
78
78
|
export const JEV_MANAGED_PROFILE_KEY = "jev-managed";
|
|
79
79
|
|
|
80
|
-
/**
|
|
81
|
-
* Cloud profile that picks one of the default profiles per message: the
|
|
82
|
-
* agent loop asks Jev which default fits the user's latest message and runs
|
|
83
|
-
* the turn on that profile (`daemon/auto-profile-router.ts`). Its own body
|
|
84
|
-
* is the cloud Balanced body, so any path that dispatches the name
|
|
85
|
-
* directly, or a turn on which the router is unavailable, runs Balanced.
|
|
86
|
-
* Managed column only, because the router depends on the cloud Jev route,
|
|
87
|
-
* and flag-gated: it exists only while the `auto-profile` feature flag has
|
|
88
|
-
* reconciled it into the workspace (see `sync-gated-profiles.ts`).
|
|
89
|
-
* Deliberately NOT part of `DEFAULT_PROFILE_KEYS`: it is a selection over
|
|
90
|
-
* those keys, not a fifth intent.
|
|
91
|
-
*/
|
|
92
|
-
export const AUTO_PROFILE_KEY = "auto";
|
|
93
|
-
export const AUTO_PROFILE_FEATURE_FLAG_KEY = "auto-profile";
|
|
94
|
-
|
|
95
|
-
/** The call site the automatic profile router asks Jev through. */
|
|
96
|
-
export const AUTO_PROFILE_ROUTER_CALL_SITE = "autoProfileRouter";
|
|
97
|
-
|
|
98
80
|
/**
|
|
99
81
|
* The call sites that consume a structured verdict and so may be pinned to
|
|
100
82
|
* the Jev profile. Every other site expects chat text or a tool call, which
|
|
@@ -104,18 +86,16 @@ export const JEV_MANAGED_PROFILE_CALL_SITES = [
|
|
|
104
86
|
"voiceEscalationJudge",
|
|
105
87
|
"voiceContinuationJudge",
|
|
106
88
|
"memoryV3SelectL2",
|
|
107
|
-
AUTO_PROFILE_ROUTER_CALL_SITE,
|
|
108
89
|
] as const;
|
|
109
90
|
|
|
110
91
|
/**
|
|
111
92
|
* Keys whose profile exists on the cloud (`cadet`) column only: the
|
|
112
|
-
* backups
|
|
93
|
+
* backups and the Jev profile. Under a BYOK or ChatGPT
|
|
113
94
|
* default provider these names have no body to resolve to.
|
|
114
95
|
*/
|
|
115
96
|
export const MANAGED_ONLY_PROFILE_KEYS = [
|
|
116
97
|
...BACKUP_PROFILE_KEYS,
|
|
117
98
|
JEV_MANAGED_PROFILE_KEY,
|
|
118
|
-
AUTO_PROFILE_KEY,
|
|
119
99
|
] as const;
|
|
120
100
|
|
|
121
101
|
export function isCloudOnlyProfileKey(value: string): boolean {
|
|
@@ -136,10 +116,7 @@ export const OS_BETA_PROFILE_KEY = "os-beta";
|
|
|
136
116
|
* a feature flag reconciles that entry in and out. Never always-valid
|
|
137
117
|
* reference targets: a reference to one is valid only with the entry present.
|
|
138
118
|
*/
|
|
139
|
-
export const FLAG_GATED_PROFILE_KEYS = [
|
|
140
|
-
OS_BETA_PROFILE_KEY,
|
|
141
|
-
AUTO_PROFILE_KEY,
|
|
142
|
-
] as const;
|
|
119
|
+
export const FLAG_GATED_PROFILE_KEYS = [OS_BETA_PROFILE_KEY] as const;
|
|
143
120
|
|
|
144
121
|
export function isFlagGatedProfileKey(value: string): boolean {
|
|
145
122
|
return (FLAG_GATED_PROFILE_KEYS as readonly string[]).includes(value);
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* IMPORTANT: This module has NO internal imports (no logger, no platform
|
|
8
8
|
* utilities) so it can be safely imported from bootstrap-level code like
|
|
9
|
-
* util/
|
|
9
|
+
* util/layout.ts and util/logger.ts without circular dependencies.
|
|
10
10
|
*
|
|
11
11
|
* Higher-level env vars that depend on the logger or config system live in
|
|
12
12
|
* config/env.ts, which re-exports selected accessors from this module.
|
|
@@ -68,18 +68,6 @@ export function getIsCloud(): boolean {
|
|
|
68
68
|
return flag("IS_CLOUD");
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
/**
|
|
72
|
-
* CADET_DISABLE_CLOUD — boolean, default: false
|
|
73
|
-
* When true, all outbound cloud API calls in local mode are suppressed.
|
|
74
|
-
* The daemon, gateway, and web UI each no-op cloud requests with a
|
|
75
|
-
* debug log. Has no effect when IS_CLOUD is true (cloud-managed
|
|
76
|
-
* instances always connect to the cloud). Reads the legacy
|
|
77
|
-
* CADET_DISABLE_CLOUD name as a fallback for older deployments.
|
|
78
|
-
*/
|
|
79
|
-
export function getDisableCloud(): boolean {
|
|
80
|
-
return flag("CADET_DISABLE_CLOUD") || flag("CADET_DISABLE_CLOUD");
|
|
81
|
-
}
|
|
82
|
-
|
|
83
71
|
/**
|
|
84
72
|
* CADET_DEVICE_ID — string, default: undefined
|
|
85
73
|
* Host-stable device id injected by the CLI into containerized deployments,
|
|
@@ -182,7 +170,6 @@ const KNOWN_CADET_VARS = new Set([
|
|
|
182
170
|
"CADET_DESKTOP_APP",
|
|
183
171
|
"CADET_DEV",
|
|
184
172
|
"CADET_DEVICE_ID",
|
|
185
|
-
"CADET_DISABLE_CLOUD",
|
|
186
173
|
"CADET_DOCS_BASE_URL",
|
|
187
174
|
"CADET_ENVIRONMENT",
|
|
188
175
|
"CADET_HATCHED_BY",
|
package/src/config/env.ts
CHANGED
|
@@ -232,11 +232,12 @@ export function setCloudOrganizationId(value: string | undefined): void {
|
|
|
232
232
|
}
|
|
233
233
|
|
|
234
234
|
/**
|
|
235
|
-
*
|
|
236
|
-
*
|
|
235
|
+
* Organization ID — UUID of the organization this assistant belongs to.
|
|
236
|
+
* Resolved from the in-memory override (populated by cloud identity
|
|
237
|
+
* validation); the API key resolves the credentials.
|
|
237
238
|
*/
|
|
238
239
|
export function getCloudOrganizationId(): string {
|
|
239
|
-
return
|
|
240
|
+
return _cloudOrganizationIdOverride ?? "";
|
|
240
241
|
}
|
|
241
242
|
|
|
242
243
|
let _platformUserIdOverride: string | undefined;
|
|
@@ -246,11 +247,12 @@ export function setCloudUserId(value: string | undefined): void {
|
|
|
246
247
|
}
|
|
247
248
|
|
|
248
249
|
/**
|
|
249
|
-
*
|
|
250
|
-
*
|
|
250
|
+
* User ID — UUID of the user who owns this assistant.
|
|
251
|
+
* Resolved from the in-memory override (populated by cloud identity
|
|
252
|
+
* validation); the API key resolves the credentials.
|
|
251
253
|
*/
|
|
252
254
|
export function getCloudUserId(): string {
|
|
253
|
-
return
|
|
255
|
+
return _platformUserIdOverride ?? "";
|
|
254
256
|
}
|
|
255
257
|
|
|
256
258
|
// ── Startup validation ──────────────────────────────────────────────────────
|
|
@@ -278,7 +278,7 @@ function providerAwareEntry(
|
|
|
278
278
|
return entry;
|
|
279
279
|
}
|
|
280
280
|
const workspace = llm.profiles?.[name];
|
|
281
|
-
if (workspace != null && workspace.
|
|
281
|
+
if (workspace != null && workspace.provider !== "cadet") {
|
|
282
282
|
return entry;
|
|
283
283
|
}
|
|
284
284
|
return resolveDefaultProfileForProvider(undefined, name, llm.default);
|
|
@@ -477,7 +477,6 @@ function resolveOverrideOrDefault(
|
|
|
477
477
|
* kept — with a single winner there is no cross-profile leakage to guard. */
|
|
478
478
|
function winnerConfigFragment(entry: ProfileEntry): Mergeable {
|
|
479
479
|
const {
|
|
480
|
-
source: _source,
|
|
481
480
|
label: _label,
|
|
482
481
|
description: _description,
|
|
483
482
|
status: _status,
|
package/src/config/loader.ts
CHANGED
|
@@ -10,13 +10,13 @@ import {
|
|
|
10
10
|
import { basename, dirname, join } from "node:path";
|
|
11
11
|
|
|
12
12
|
import { safeStatSync } from "../util/fs.js";
|
|
13
|
-
import { getLogger } from "../util/logger.js";
|
|
14
13
|
import {
|
|
15
14
|
ensureDataDir,
|
|
16
15
|
getConfigQuarantineNoticePath,
|
|
17
16
|
getConfigValidationResetNoticePath,
|
|
18
17
|
getWorkspaceConfigPath,
|
|
19
|
-
} from "../util/
|
|
18
|
+
} from "../util/layout.js";
|
|
19
|
+
import { getLogger } from "../util/logger.js";
|
|
20
20
|
import { validateChatSettingsWrite } from "./chat-settings.js";
|
|
21
21
|
import { pruneSeededCallsiteDefaultsFromConfig } from "./prune-seeded-callsite-defaults.js";
|
|
22
22
|
import { AssistantConfigSchema } from "./schema.js";
|
|
@@ -32,7 +32,7 @@ let suppressConfigDiskWritesDepth = 0;
|
|
|
32
32
|
/**
|
|
33
33
|
* The most recent effective config in this process. Captured inside
|
|
34
34
|
* {@link validateWithSchema} on every validation-success path, then overwritten
|
|
35
|
-
* by {@link
|
|
35
|
+
* by {@link getConfig} with the deployment-context-filled config whenever
|
|
36
36
|
* context defaults apply — so it reflects the config as consumers actually see
|
|
37
37
|
* it (cloud service modes and all), not just the pre-fill schema-defaulted
|
|
38
38
|
* view. It is a safety net for the recovery ladder — when config.json later
|
|
@@ -126,7 +126,7 @@ function cloneDefaultConfig(): AssistantConfig {
|
|
|
126
126
|
|
|
127
127
|
/**
|
|
128
128
|
* Returns deployment-context-aware config defaults that override schema
|
|
129
|
-
* defaults for cloud assistants. Applied to every `
|
|
129
|
+
* defaults for cloud assistants. Applied to every `getConfig()`
|
|
130
130
|
* call as a fill-only pass — they only fill keys that are absent from the
|
|
131
131
|
* raw config on disk, so an explicit user choice (e.g. saving "your-own"
|
|
132
132
|
* via the macOS Models & Services UI) always wins.
|
|
@@ -473,7 +473,7 @@ function clearConfigValidationResetNotice(): void {
|
|
|
473
473
|
* 3. full schema defaults as the true last resort.
|
|
474
474
|
*
|
|
475
475
|
* Every success path records a `structuredClone` of the returned config as the
|
|
476
|
-
* last-known-good safety net. Cloning is required because `
|
|
476
|
+
* last-known-good safety net. Cloning is required because `getConfig` mutates
|
|
477
477
|
* the returned object in place via `fillContextDefaultsForMissingKeys`.
|
|
478
478
|
*/
|
|
479
479
|
function validateWithSchema(raw: Record<string, unknown>): AssistantConfig {
|
|
@@ -939,10 +939,10 @@ function emptyDefaultWorkspaceConfigMergeResult(): DefaultWorkspaceConfigMergeRe
|
|
|
939
939
|
* Merge default workspace config from the file referenced by
|
|
940
940
|
* CADET_DEFAULT_WORKSPACE_CONFIG_PATH into the workspace config on disk.
|
|
941
941
|
*
|
|
942
|
-
* Called once at daemon startup (before the first
|
|
942
|
+
* Called once at daemon startup (before the first getConfig()) so platform
|
|
943
943
|
* overrides are persisted to disk before the daemon's first config read.
|
|
944
944
|
* Schema defaults are no longer materialized into the file on load — the
|
|
945
|
-
* in-memory `
|
|
945
|
+
* in-memory `getConfig()` cache applies them at access time instead.
|
|
946
946
|
*/
|
|
947
947
|
/**
|
|
948
948
|
* Whether an unconsumed onboarding overlay is waiting to be merged this boot.
|
|
@@ -1048,14 +1048,14 @@ export function mergeDefaultWorkspaceConfig(): DefaultWorkspaceConfigMergeResult
|
|
|
1048
1048
|
return mergeResult;
|
|
1049
1049
|
}
|
|
1050
1050
|
|
|
1051
|
-
export function
|
|
1051
|
+
export function getConfig(): AssistantConfig {
|
|
1052
1052
|
const freshCached = getCachedConfigIfFresh();
|
|
1053
1053
|
if (freshCached) {
|
|
1054
1054
|
return freshCached;
|
|
1055
1055
|
}
|
|
1056
1056
|
|
|
1057
1057
|
// Re-entrancy guard: log calls during loading (e.g. file-mode warning)
|
|
1058
|
-
// can trigger
|
|
1058
|
+
// can trigger getConfig again. Return defaults to break the cycle
|
|
1059
1059
|
// instead of recursing to stack overflow.
|
|
1060
1060
|
if (loading) {
|
|
1061
1061
|
return cloneDefaultConfig();
|
|
@@ -1123,7 +1123,7 @@ export function loadConfig(): AssistantConfig {
|
|
|
1123
1123
|
// explicitly set in `fileConfig`. This runs on every load — not just the
|
|
1124
1124
|
// first — because the workspace config file is written by upstream
|
|
1125
1125
|
// lifecycle steps (`mergeDefaultWorkspaceConfig`, `seedInferenceProfiles`)
|
|
1126
|
-
// before `
|
|
1126
|
+
// before `getConfig()` is reached. Gating on `!configFileExisted` would
|
|
1127
1127
|
// make the context defaults dead code on cloud-managed daemons whose
|
|
1128
1128
|
// config.json was created by those earlier steps without service-mode
|
|
1129
1129
|
// entries. Explicit user choices on disk are preserved because the helper
|
|
@@ -1234,14 +1234,10 @@ export function loadConfig(): AssistantConfig {
|
|
|
1234
1234
|
}
|
|
1235
1235
|
}
|
|
1236
1236
|
|
|
1237
|
-
export function getConfig(): AssistantConfig {
|
|
1238
|
-
return loadConfig();
|
|
1239
|
-
}
|
|
1240
|
-
|
|
1241
1237
|
/**
|
|
1242
1238
|
* Read-only config accessor: returns the current config without creating
|
|
1243
1239
|
* directories or writing files. Reads config.json if it exists on disk;
|
|
1244
|
-
* returns schema defaults otherwise. Unlike `getConfig()
|
|
1240
|
+
* returns schema defaults otherwise. Unlike `getConfig()`,
|
|
1245
1241
|
* this never calls `ensureDataDir()` or writes a default config to disk,
|
|
1246
1242
|
* making it safe to call during CLI program construction before the
|
|
1247
1243
|
* workspace-existence check runs.
|
|
@@ -1315,7 +1311,7 @@ export function loadRawConfig(): Record<string, unknown> {
|
|
|
1315
1311
|
try {
|
|
1316
1312
|
parsed = JSON.parse(readFileSync(configPath, "utf-8"));
|
|
1317
1313
|
} catch (err) {
|
|
1318
|
-
// Mirror
|
|
1314
|
+
// Mirror getConfig(): quarantine the corrupt file and return an empty
|
|
1319
1315
|
// object rather than throwing. This prevents /v1/config from surfacing
|
|
1320
1316
|
// a 500 when the user's config.json is malformed.
|
|
1321
1317
|
quarantineCorruptConfig(configPath, err);
|
|
@@ -1440,7 +1436,7 @@ export const _writeQuarantineNotice = writeQuarantineNotice;
|
|
|
1440
1436
|
* Test-only alias for `recoverFromInvalidConfig`. The strip-and-reparse
|
|
1441
1437
|
* cleanup (including sparse-array compaction) repairs every known real-world
|
|
1442
1438
|
* config shape, so no config.json fixture reliably reaches the recovery
|
|
1443
|
-
* ladder through `
|
|
1439
|
+
* ladder through `getConfig` — the ladder is defense-in-depth for schema
|
|
1444
1440
|
* shapes the cleanup does not anticipate. Tests exercise its rungs (last
|
|
1445
1441
|
* known good, per-section salvage, full defaults) by calling it directly.
|
|
1446
1442
|
* Not for production use.
|
|
@@ -41,7 +41,7 @@ export function completeCustomProfile(
|
|
|
41
41
|
dflt: LLMConfigBase,
|
|
42
42
|
profile: ProfileEntry,
|
|
43
43
|
): ProfileEntry {
|
|
44
|
-
if (profile.mix != null || profile.
|
|
44
|
+
if (profile.mix != null || profile.provider === "cadet") {
|
|
45
45
|
return profile;
|
|
46
46
|
}
|
|
47
47
|
|
package/src/config/schema.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
|
|
3
|
-
import { getDataDir } from "../util/
|
|
3
|
+
import { getDataDir } from "../util/layout.js";
|
|
4
4
|
|
|
5
5
|
// Re-export domain schemas that have external consumers
|
|
6
6
|
export { VALID_CALLER_IDENTITY_MODES } from "./schemas/calls.js";
|
|
@@ -146,12 +146,6 @@ export const AssistantConfigSchema = z.object({
|
|
|
146
146
|
pluginUpdates: PluginUpdatesConfigSchema.default(
|
|
147
147
|
PluginUpdatesConfigSchema.parse({}),
|
|
148
148
|
),
|
|
149
|
-
legacyTelemetryOptOut: z
|
|
150
|
-
.boolean()
|
|
151
|
-
.optional()
|
|
152
|
-
.describe(
|
|
153
|
-
"Fail-closed telemetry marker: set for a workspace that had an explicit local usage-data opt-out before telemetry moved to platform share_analytics consent. While set, usage telemetry stays disabled regardless of platform consent.",
|
|
154
|
-
),
|
|
155
149
|
legacyDiagnosticsOptOut: z
|
|
156
150
|
.boolean()
|
|
157
151
|
.optional()
|
|
@@ -317,13 +317,6 @@ const CATALOG_RECORD: CatalogRecord = {
|
|
|
317
317
|
"Decides from the caller's interruption whether a barged-in request should keep running in the background. Runs only when pinned to a TypeSafe profile.",
|
|
318
318
|
domain: "agentLoop",
|
|
319
319
|
},
|
|
320
|
-
autoProfileRouter: {
|
|
321
|
-
id: "autoProfileRouter",
|
|
322
|
-
displayName: "Auto Profile Router",
|
|
323
|
-
description:
|
|
324
|
-
"Picks which default profile answers a message when the conversation runs on the Auto profile. Asks managed Jev one choice question over the latest message; when unavailable the turn runs on Balanced.",
|
|
325
|
-
domain: "agentLoop",
|
|
326
|
-
},
|
|
327
320
|
voiceContinuationLabel: {
|
|
328
321
|
id: "voiceContinuationLabel",
|
|
329
322
|
displayName: "Voice Continuation Label",
|