@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
|
@@ -62,7 +62,6 @@ import {
|
|
|
62
62
|
deepMergeOverwrite,
|
|
63
63
|
getConfig,
|
|
64
64
|
invalidateConfigCache,
|
|
65
|
-
loadConfig,
|
|
66
65
|
mergeDefaultWorkspaceConfig,
|
|
67
66
|
} from "../config/loader.js";
|
|
68
67
|
import { LLMSchema } from "../config/schemas/llm.js";
|
|
@@ -74,7 +73,7 @@ import { migrateProviderConnectionBaseUrlAndModels } from "../persistence/migrat
|
|
|
74
73
|
import * as schema from "../persistence/schema/index.js";
|
|
75
74
|
import { getConnection } from "../providers/inference/connections.js";
|
|
76
75
|
import { getProviderDefaultModel } from "../providers/model-intents.js";
|
|
77
|
-
import { getConfigQuarantineNoticePath } from "../util/
|
|
76
|
+
import { getConfigQuarantineNoticePath } from "../util/layout.js";
|
|
78
77
|
|
|
79
78
|
// ---------------------------------------------------------------------------
|
|
80
79
|
// Helpers
|
|
@@ -364,15 +363,15 @@ describe("deepMergeOverwrite", () => {
|
|
|
364
363
|
});
|
|
365
364
|
|
|
366
365
|
// ---------------------------------------------------------------------------
|
|
367
|
-
// Tests:
|
|
366
|
+
// Tests: getConfig() startup behavior
|
|
368
367
|
//
|
|
369
|
-
// Contract: disk = user intent, in-memory cache = effective values.
|
|
368
|
+
// Contract: disk = user intent, in-memory cache = effective values. getConfig
|
|
370
369
|
// must NOT silently materialize schema defaults into config.json on load.
|
|
371
370
|
// The legitimate self-healing paths that DO rewrite the file (deprecated-key
|
|
372
371
|
// strip, fresh-config seed, corrupt-JSON quarantine) are protected below.
|
|
373
372
|
// ---------------------------------------------------------------------------
|
|
374
373
|
|
|
375
|
-
describe("
|
|
374
|
+
describe("getConfig startup behavior", () => {
|
|
376
375
|
beforeEach(() => {
|
|
377
376
|
ensureTestDir();
|
|
378
377
|
const resetPaths = [
|
|
@@ -415,19 +414,19 @@ describe("loadConfig startup behavior", () => {
|
|
|
415
414
|
|
|
416
415
|
test("does not modify existing config.json on load", () => {
|
|
417
416
|
// Write a partial config and confirm the file's bytes are unchanged
|
|
418
|
-
// after
|
|
417
|
+
// after getConfig(). Schema defaults must apply in-memory only; disk
|
|
419
418
|
// is the user's source of truth.
|
|
420
419
|
writeConfig({ provider: "anthropic" });
|
|
421
420
|
const before = readFileSync(CONFIG_PATH);
|
|
422
421
|
|
|
423
|
-
|
|
422
|
+
getConfig();
|
|
424
423
|
|
|
425
424
|
const after = readFileSync(CONFIG_PATH);
|
|
426
425
|
expect(after.equals(before)).toBe(true);
|
|
427
426
|
});
|
|
428
427
|
|
|
429
428
|
test("getConfig().memory.v2.bm25_b returns schema default when absent on disk", () => {
|
|
430
|
-
// Consumer-side correctness: even though
|
|
429
|
+
// Consumer-side correctness: even though getConfig no longer writes
|
|
431
430
|
// schema defaults back to disk, accessors still see them via the
|
|
432
431
|
// in-memory `cached: AssistantConfig` populated by `applyNestedDefaults`.
|
|
433
432
|
writeConfig({ provider: "anthropic" });
|
|
@@ -491,15 +490,13 @@ describe("loadConfig startup behavior", () => {
|
|
|
491
490
|
// Models a CLI subprocess writing twilio.accountSid while the assistant
|
|
492
491
|
// process already has an effective config cached in memory.
|
|
493
492
|
writeConfig({ twilio: { accountSid: "AC_cached_before" } });
|
|
494
|
-
expect(
|
|
493
|
+
expect(getConfig().twilio.accountSid).toBe("AC_cached_before");
|
|
495
494
|
|
|
496
495
|
writeConfig({
|
|
497
496
|
twilio: { accountSid: "AC_fresh_after_external_write" },
|
|
498
497
|
});
|
|
499
498
|
|
|
500
|
-
expect(
|
|
501
|
-
"AC_fresh_after_external_write",
|
|
502
|
-
);
|
|
499
|
+
expect(getConfig().twilio.accountSid).toBe("AC_fresh_after_external_write");
|
|
503
500
|
});
|
|
504
501
|
|
|
505
502
|
test("still strips deprecated fields and rewrites", () => {
|
|
@@ -511,7 +508,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
511
508
|
rateLimit: { maxTokensPerSession: 100_000 },
|
|
512
509
|
});
|
|
513
510
|
|
|
514
|
-
|
|
511
|
+
getConfig();
|
|
515
512
|
|
|
516
513
|
const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
517
514
|
expect(raw.rateLimit?.maxTokensPerSession).toBeUndefined();
|
|
@@ -529,7 +526,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
529
526
|
memory: { jobs: { batchSize: 25, workerConcurrency: 4 } },
|
|
530
527
|
});
|
|
531
528
|
|
|
532
|
-
|
|
529
|
+
getConfig();
|
|
533
530
|
|
|
534
531
|
const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
535
532
|
expect(raw.memory?.jobs?.batchSize).toBeUndefined();
|
|
@@ -547,7 +544,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
547
544
|
daemon: { reapOrphanedSubprocesses: true, standaloneRecording: false },
|
|
548
545
|
});
|
|
549
546
|
|
|
550
|
-
|
|
547
|
+
getConfig();
|
|
551
548
|
|
|
552
549
|
const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
553
550
|
expect(raw.daemon?.reapOrphanedSubprocesses).toBeUndefined();
|
|
@@ -566,7 +563,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
566
563
|
calls: { voice: { language: "es-ES", telephonyStreaming: false } },
|
|
567
564
|
});
|
|
568
565
|
|
|
569
|
-
|
|
566
|
+
getConfig();
|
|
570
567
|
|
|
571
568
|
const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
572
569
|
expect(raw.calls?.voice?.language).toBeUndefined();
|
|
@@ -579,7 +576,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
579
576
|
// all schema defaults so users can see and edit available options.
|
|
580
577
|
expect(existsSync(CONFIG_PATH)).toBe(false);
|
|
581
578
|
|
|
582
|
-
|
|
579
|
+
getConfig();
|
|
583
580
|
|
|
584
581
|
expect(existsSync(CONFIG_PATH)).toBe(true);
|
|
585
582
|
const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
@@ -609,7 +606,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
609
606
|
const db = createProviderConnectionsDb();
|
|
610
607
|
|
|
611
608
|
mergeDefaultConfigAndSeedInferenceProfiles(db);
|
|
612
|
-
const config =
|
|
609
|
+
const config = getConfig();
|
|
613
610
|
|
|
614
611
|
// `llm.default` is the base blob — the overlay blob reaches the parsed
|
|
615
612
|
// config as a partial fragment and the seed never writes a separate key.
|
|
@@ -640,7 +637,6 @@ describe("loadConfig startup behavior", () => {
|
|
|
640
637
|
expect(effective.balanced?.provider).toBe("anthropic");
|
|
641
638
|
expect(effective.balanced?.provider_connection).toBe("anthropic-personal");
|
|
642
639
|
expect(effective.balanced?.model).toBe("claude-sonnet-4-6");
|
|
643
|
-
expect(effective.balanced?.source).toBe("managed");
|
|
644
640
|
expect("status" in (effective.balanced ?? {})).toBe(false);
|
|
645
641
|
});
|
|
646
642
|
|
|
@@ -689,7 +685,6 @@ describe("loadConfig startup behavior", () => {
|
|
|
689
685
|
default: { provider: "openai", model: "gpt-5.4-mini" },
|
|
690
686
|
profiles: {
|
|
691
687
|
"custom-balanced": {
|
|
692
|
-
source: "user",
|
|
693
688
|
provider: "openai",
|
|
694
689
|
model: "gpt-5.4-mini",
|
|
695
690
|
},
|
|
@@ -720,7 +715,6 @@ describe("loadConfig startup behavior", () => {
|
|
|
720
715
|
});
|
|
721
716
|
// The pre-existing custom profile is user-owned and never rewritten.
|
|
722
717
|
expect(raw.llm.profiles["custom-balanced"]).toEqual({
|
|
723
|
-
source: "user",
|
|
724
718
|
provider: "openai",
|
|
725
719
|
model: "gpt-5.4-mini",
|
|
726
720
|
});
|
|
@@ -740,7 +734,6 @@ describe("loadConfig startup behavior", () => {
|
|
|
740
734
|
default: { provider: "openai", model: "gpt-5.4-mini" },
|
|
741
735
|
profiles: {
|
|
742
736
|
"custom-balanced": {
|
|
743
|
-
source: "user",
|
|
744
737
|
provider: "openai",
|
|
745
738
|
model: "gpt-5.4-mini",
|
|
746
739
|
},
|
|
@@ -884,7 +877,6 @@ describe("loadConfig startup behavior", () => {
|
|
|
884
877
|
expect(effective.balanced?.provider).toBe("openai");
|
|
885
878
|
expect(effective.balanced?.model).toBe("gpt-5.6-luna");
|
|
886
879
|
expect(effective.balanced?.provider_connection).toBe("openai-personal");
|
|
887
|
-
expect(effective.balanced?.source).toBe("managed");
|
|
888
880
|
expect(effective["quality-optimized"]?.provider).toBe("openai");
|
|
889
881
|
expect(effective["quality-optimized"]?.model).toBe("gpt-5.6-sol");
|
|
890
882
|
expect(effective["cost-optimized"]?.provider).toBe("openai");
|
|
@@ -905,7 +897,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
905
897
|
const db = createProviderConnectionsDb();
|
|
906
898
|
|
|
907
899
|
mergeDefaultConfigAndSeedInferenceProfiles(db);
|
|
908
|
-
const config =
|
|
900
|
+
const config = getConfig();
|
|
909
901
|
const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
910
902
|
|
|
911
903
|
expect(raw.llm.activeProfile).toBe("balanced");
|
|
@@ -927,7 +919,6 @@ describe("loadConfig startup behavior", () => {
|
|
|
927
919
|
expect(effective[name]?.provider).toBe("together");
|
|
928
920
|
expect(effective[name]?.provider_connection).toBe("together-personal");
|
|
929
921
|
expect(effective[name]?.model).toBe(getProviderDefaultModel("together"));
|
|
930
|
-
expect(effective[name]?.source).toBe("managed");
|
|
931
922
|
}
|
|
932
923
|
});
|
|
933
924
|
|
|
@@ -951,7 +942,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
951
942
|
const db = createProviderConnectionsDb();
|
|
952
943
|
|
|
953
944
|
mergeDefaultConfigAndSeedInferenceProfiles(db);
|
|
954
|
-
const config =
|
|
945
|
+
const config = getConfig();
|
|
955
946
|
const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
956
947
|
|
|
957
948
|
expect(raw.llm.activeProfile).toBe("balanced");
|
|
@@ -974,14 +965,12 @@ describe("loadConfig startup behavior", () => {
|
|
|
974
965
|
});
|
|
975
966
|
|
|
976
967
|
test("off-cloud boot leaves an existing managed entry byte-identical", () => {
|
|
977
|
-
// A drifted
|
|
978
|
-
//
|
|
979
|
-
//
|
|
968
|
+
// A drifted full-body entry left by a previous release stays exactly
|
|
969
|
+
// as written — boots never rewrite managed entries. Content is served
|
|
970
|
+
// from the code catalog at resolution time instead.
|
|
980
971
|
const drifted = {
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
model: "old-model-from-previous-release",
|
|
984
|
-
provider_connection: "anthropic-managed",
|
|
972
|
+
provider: "cadet",
|
|
973
|
+
model: "claude-sonnet-4-6",
|
|
985
974
|
};
|
|
986
975
|
writeConfig({
|
|
987
976
|
llm: {
|
|
@@ -996,43 +985,14 @@ describe("loadConfig startup behavior", () => {
|
|
|
996
985
|
|
|
997
986
|
expect(raw.llm.profiles.balanced).toEqual(drifted);
|
|
998
987
|
expect(raw.llm.activeProfile).toBe("balanced");
|
|
999
|
-
// Resolution ignores the drifted body: a
|
|
1000
|
-
// only label/status/topP, everything else comes from the
|
|
988
|
+
// Resolution ignores the drifted body: a cadet-provider entry
|
|
989
|
+
// contributes only label/status/topP, everything else comes from the
|
|
990
|
+
// catalog.
|
|
1001
991
|
const effectiveBalanced = getEffectiveProfile(raw.llm.profiles, "balanced");
|
|
1002
992
|
expect(effectiveBalanced?.model).toBe(MANAGED_BALANCED_MODEL);
|
|
1003
993
|
expect(effectiveBalanced?.provider_connection).toBeUndefined();
|
|
1004
994
|
});
|
|
1005
995
|
|
|
1006
|
-
test("boot leaves a source-less legacy canonical profile as a user-owned shadow", () => {
|
|
1007
|
-
// Migration 052 seeded canonical profiles without a `source`. A
|
|
1008
|
-
// source-less entry on a default name is user-owned: boots leave it
|
|
1009
|
-
// byte-identical (never reclaimed or tagged managed), and it shadows the
|
|
1010
|
-
// code catalog in the effective view.
|
|
1011
|
-
const legacy = {
|
|
1012
|
-
provider: "fireworks",
|
|
1013
|
-
model: "accounts/fireworks/models/glm-5p2",
|
|
1014
|
-
provider_connection: "fireworks-managed",
|
|
1015
|
-
};
|
|
1016
|
-
writeConfig({
|
|
1017
|
-
llm: {
|
|
1018
|
-
profiles: { "quality-optimized": legacy },
|
|
1019
|
-
},
|
|
1020
|
-
});
|
|
1021
|
-
|
|
1022
|
-
mergeDefaultConfigAndSeedInferenceProfiles();
|
|
1023
|
-
const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
1024
|
-
|
|
1025
|
-
expect(raw.llm.profiles["quality-optimized"]).toEqual(legacy);
|
|
1026
|
-
// The shadow wins over the catalog body (which serves gpt-5.6-sol).
|
|
1027
|
-
const effectiveQuality = getEffectiveProfile(
|
|
1028
|
-
raw.llm.profiles,
|
|
1029
|
-
"quality-optimized",
|
|
1030
|
-
);
|
|
1031
|
-
expect(effectiveQuality?.model).toBe("accounts/fireworks/models/glm-5p2");
|
|
1032
|
-
expect(effectiveQuality?.provider_connection).toBe("fireworks-managed");
|
|
1033
|
-
expect(effectiveQuality?.source).toBeUndefined();
|
|
1034
|
-
});
|
|
1035
|
-
|
|
1036
996
|
test("defaults the advisor profile to the cloud Quality profile", () => {
|
|
1037
997
|
writeConfig({ llm: { default: { provider: "anthropic" } } });
|
|
1038
998
|
|
|
@@ -1047,7 +1007,6 @@ describe("loadConfig startup behavior", () => {
|
|
|
1047
1007
|
raw.llm.profiles,
|
|
1048
1008
|
"quality-optimized",
|
|
1049
1009
|
);
|
|
1050
|
-
expect(effectiveQuality?.source).toBe("managed");
|
|
1051
1010
|
expect(effectiveQuality?.model).toBe("gpt-5.6-sol");
|
|
1052
1011
|
});
|
|
1053
1012
|
|
|
@@ -1059,11 +1018,9 @@ describe("loadConfig startup behavior", () => {
|
|
|
1059
1018
|
process.env.IS_CLOUD = "true";
|
|
1060
1019
|
|
|
1061
1020
|
const drifted = {
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
model: "old-model-from-previous-release",
|
|
1021
|
+
provider: "cadet",
|
|
1022
|
+
model: "gpt-5.4",
|
|
1065
1023
|
maxTokens: 1,
|
|
1066
|
-
provider_connection: "anthropic-managed",
|
|
1067
1024
|
};
|
|
1068
1025
|
writeConfig({
|
|
1069
1026
|
llm: {
|
|
@@ -1087,14 +1044,14 @@ describe("loadConfig startup behavior", () => {
|
|
|
1087
1044
|
expect("topP" in (effectiveBalanced ?? {})).toBe(false);
|
|
1088
1045
|
});
|
|
1089
1046
|
|
|
1090
|
-
test("platform boot preserves user-edited label and status on a
|
|
1047
|
+
test("platform boot preserves user-edited label and status on a managed stub", () => {
|
|
1091
1048
|
// The workspace-owned fields a user may set on a cloud profile — label
|
|
1092
1049
|
// and status — live on the stub, which boots never touch. The effective
|
|
1093
1050
|
// view overlays them onto the code-owned body.
|
|
1094
1051
|
process.env.IS_CLOUD = "true";
|
|
1095
1052
|
|
|
1096
1053
|
const edited = {
|
|
1097
|
-
|
|
1054
|
+
provider: "cadet",
|
|
1098
1055
|
label: "My Default",
|
|
1099
1056
|
status: "disabled",
|
|
1100
1057
|
};
|
|
@@ -1117,10 +1074,10 @@ describe("loadConfig startup behavior", () => {
|
|
|
1117
1074
|
expect(effectiveBalanced?.status).toBe("disabled");
|
|
1118
1075
|
});
|
|
1119
1076
|
|
|
1120
|
-
test("off-cloud boot preserves a user-edited label on a
|
|
1077
|
+
test("off-cloud boot preserves a user-edited label on a managed stub (Codex P1 on PR #30362)", () => {
|
|
1121
1078
|
// Simulate a user who renamed the cloud "balanced" profile via
|
|
1122
1079
|
// PUT /v1/config/llm/profiles/balanced { label: "My Default" }.
|
|
1123
|
-
const stub = {
|
|
1080
|
+
const stub = { provider: "cadet", label: "My Default" };
|
|
1124
1081
|
writeConfig({
|
|
1125
1082
|
llm: {
|
|
1126
1083
|
profiles: { balanced: stub },
|
|
@@ -1139,10 +1096,10 @@ describe("loadConfig startup behavior", () => {
|
|
|
1139
1096
|
expect(effectiveBalanced?.model).toBe(MANAGED_BALANCED_MODEL);
|
|
1140
1097
|
});
|
|
1141
1098
|
|
|
1142
|
-
test("off-cloud boot preserves user-toggled status on a
|
|
1099
|
+
test("off-cloud boot preserves user-toggled status on a managed stub", () => {
|
|
1143
1100
|
// Simulate a user who disabled the cloud "balanced" profile via
|
|
1144
1101
|
// PUT /v1/config/llm/profiles/balanced { status: "disabled" }.
|
|
1145
|
-
const stub = {
|
|
1102
|
+
const stub = { provider: "cadet", status: "disabled" };
|
|
1146
1103
|
writeConfig({
|
|
1147
1104
|
llm: {
|
|
1148
1105
|
profiles: { balanced: stub },
|
|
@@ -1161,12 +1118,12 @@ describe("loadConfig startup behavior", () => {
|
|
|
1161
1118
|
expect(effectiveBalanced?.model).toBe(MANAGED_BALANCED_MODEL);
|
|
1162
1119
|
});
|
|
1163
1120
|
|
|
1164
|
-
test("boot preserves a user-edited topP override on a
|
|
1121
|
+
test("boot preserves a user-edited topP override on a managed stub", () => {
|
|
1165
1122
|
// Simulate a user who overrode topP on the cloud "balanced" profile via
|
|
1166
1123
|
// PUT /v1/config/llm/profiles/balanced { topP: 0.5 }. The override lives
|
|
1167
1124
|
// on the stub, survives boots untouched, and overlays the catalog body
|
|
1168
1125
|
// (which carries no topP of its own).
|
|
1169
|
-
const stub = {
|
|
1126
|
+
const stub = { provider: "cadet", topP: 0.5 };
|
|
1170
1127
|
writeConfig({
|
|
1171
1128
|
llm: {
|
|
1172
1129
|
profiles: { balanced: stub },
|
|
@@ -1207,10 +1164,8 @@ describe("loadConfig startup behavior", () => {
|
|
|
1207
1164
|
llm: {
|
|
1208
1165
|
profiles: {
|
|
1209
1166
|
balanced: {
|
|
1210
|
-
|
|
1211
|
-
provider: "anthropic",
|
|
1167
|
+
provider: "cadet",
|
|
1212
1168
|
model: "old-model",
|
|
1213
|
-
provider_connection: "anthropic-managed",
|
|
1214
1169
|
label: null,
|
|
1215
1170
|
},
|
|
1216
1171
|
},
|
|
@@ -1259,8 +1214,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
1259
1214
|
},
|
|
1260
1215
|
profiles: {
|
|
1261
1216
|
balanced: {
|
|
1262
|
-
|
|
1263
|
-
provider: "anthropic",
|
|
1217
|
+
provider: "cadet",
|
|
1264
1218
|
model: "claude-sonnet-4-6",
|
|
1265
1219
|
maxTokens: 16000,
|
|
1266
1220
|
effort: "high",
|
|
@@ -1283,8 +1237,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
1283
1237
|
},
|
|
1284
1238
|
profiles: {
|
|
1285
1239
|
balanced: {
|
|
1286
|
-
|
|
1287
|
-
provider: "openai",
|
|
1240
|
+
provider: "cadet",
|
|
1288
1241
|
model: "gpt-5.4",
|
|
1289
1242
|
label: "Cloud Balanced",
|
|
1290
1243
|
},
|
|
@@ -1299,15 +1252,14 @@ describe("loadConfig startup behavior", () => {
|
|
|
1299
1252
|
process.env.CADET_DEFAULT_WORKSPACE_CONFIG_PATH = overlayPath;
|
|
1300
1253
|
|
|
1301
1254
|
mergeDefaultConfigAndSeedInferenceProfiles();
|
|
1302
|
-
const config =
|
|
1255
|
+
const config = getConfig();
|
|
1303
1256
|
const mainAgentConfig = resolveCallSiteConfig("mainAgent", config.llm);
|
|
1304
1257
|
|
|
1305
1258
|
// Hatch boot: overlay fragment is preserved verbatim on disk
|
|
1306
1259
|
// (preserveProfileNames).
|
|
1307
1260
|
expect(config.llm.activeProfile).toBe("balanced");
|
|
1308
1261
|
expect(config.llm.profiles.balanced).toEqual({
|
|
1309
|
-
|
|
1310
|
-
provider: "openai",
|
|
1262
|
+
provider: "cadet",
|
|
1311
1263
|
model: "gpt-5.4",
|
|
1312
1264
|
label: "Cloud Balanced",
|
|
1313
1265
|
});
|
|
@@ -1320,8 +1272,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
1320
1272
|
|
|
1321
1273
|
const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
1322
1274
|
expect(raw.llm.profiles.balanced).toEqual({
|
|
1323
|
-
|
|
1324
|
-
provider: "openai",
|
|
1275
|
+
provider: "cadet",
|
|
1325
1276
|
model: "gpt-5.4",
|
|
1326
1277
|
label: "Cloud Balanced",
|
|
1327
1278
|
});
|
|
@@ -1336,8 +1287,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
1336
1287
|
const afterRestart = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
1337
1288
|
expect(afterRestart.llm.activeProfile).toBe("balanced");
|
|
1338
1289
|
expect(afterRestart.llm.profiles.balanced).toEqual({
|
|
1339
|
-
|
|
1340
|
-
provider: "openai",
|
|
1290
|
+
provider: "cadet",
|
|
1341
1291
|
model: "gpt-5.4",
|
|
1342
1292
|
label: "Cloud Balanced",
|
|
1343
1293
|
});
|
|
@@ -1408,7 +1358,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
1408
1358
|
// A managed backup resolves from the code catalog without being
|
|
1409
1359
|
// materialized in `llm.profiles`, so selecting one persists nothing but
|
|
1410
1360
|
// the reference. If the schema did not treat backup keys as
|
|
1411
|
-
// always-available references, the strip-and-reparse in `
|
|
1361
|
+
// always-available references, the strip-and-reparse in `getConfig`
|
|
1412
1362
|
// would drop `activeProfile` and the seeder would reset the user's
|
|
1413
1363
|
// chat-model selection to `balanced` on the next boot.
|
|
1414
1364
|
writeConfig({
|
|
@@ -1421,7 +1371,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
1421
1371
|
},
|
|
1422
1372
|
});
|
|
1423
1373
|
|
|
1424
|
-
const config =
|
|
1374
|
+
const config = getConfig();
|
|
1425
1375
|
expect(config.llm.activeProfile).toBe("balanced-backup");
|
|
1426
1376
|
|
|
1427
1377
|
mergeDefaultConfigAndSeedInferenceProfiles();
|
|
@@ -1447,7 +1397,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
1447
1397
|
},
|
|
1448
1398
|
});
|
|
1449
1399
|
|
|
1450
|
-
const config =
|
|
1400
|
+
const config = getConfig();
|
|
1451
1401
|
expect(config.llm.activeProfile).toBeUndefined();
|
|
1452
1402
|
|
|
1453
1403
|
mergeDefaultConfigAndSeedInferenceProfiles();
|
|
@@ -1468,7 +1418,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
1468
1418
|
},
|
|
1469
1419
|
});
|
|
1470
1420
|
|
|
1471
|
-
const config =
|
|
1421
|
+
const config = getConfig();
|
|
1472
1422
|
expect(config.llm.callSites.recall?.profile).toBe("cost-optimized-backup");
|
|
1473
1423
|
|
|
1474
1424
|
const raw = JSON.parse(readFileSync(CONFIG_PATH, "utf-8"));
|
|
@@ -1481,7 +1431,7 @@ describe("loadConfig startup behavior", () => {
|
|
|
1481
1431
|
// with defaults. This must keep working.
|
|
1482
1432
|
writeFileSync(CONFIG_PATH, "{not valid json");
|
|
1483
1433
|
|
|
1484
|
-
|
|
1434
|
+
getConfig();
|
|
1485
1435
|
|
|
1486
1436
|
// A new defaults-populated config.json is written in place
|
|
1487
1437
|
expect(existsSync(CONFIG_PATH)).toBe(true);
|
|
@@ -1574,7 +1524,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1574
1524
|
process.env.CADET_DEFAULT_WORKSPACE_CONFIG_PATH = overlayPath;
|
|
1575
1525
|
|
|
1576
1526
|
mergeDefaultConfigAndSeedInferenceProfiles();
|
|
1577
|
-
const config =
|
|
1527
|
+
const config = getConfig();
|
|
1578
1528
|
|
|
1579
1529
|
expect(config.llm.activeProfile).toBe("balanced");
|
|
1580
1530
|
expect(config.llm.advisorProfile).toBe("quality-optimized");
|
|
@@ -1586,36 +1536,27 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1586
1536
|
advisorProfile: "frontier",
|
|
1587
1537
|
profiles: {
|
|
1588
1538
|
frontier: {
|
|
1589
|
-
|
|
1590
|
-
provider: "anthropic",
|
|
1591
|
-
provider_connection: "anthropic-managed",
|
|
1539
|
+
provider: "cadet",
|
|
1592
1540
|
model: "claude-opus-4-8",
|
|
1593
1541
|
status: "disabled",
|
|
1594
1542
|
},
|
|
1595
1543
|
balanced: {
|
|
1596
|
-
|
|
1597
|
-
provider: "together",
|
|
1598
|
-
provider_connection: "together-managed",
|
|
1544
|
+
provider: "cadet",
|
|
1599
1545
|
model: "open-model",
|
|
1600
1546
|
status: "disabled",
|
|
1601
1547
|
},
|
|
1602
1548
|
"quality-optimized": {
|
|
1603
|
-
|
|
1604
|
-
provider: "fireworks",
|
|
1605
|
-
provider_connection: "fireworks-managed",
|
|
1549
|
+
provider: "cadet",
|
|
1606
1550
|
model: "accounts/fireworks/models/glm-5p2",
|
|
1607
1551
|
status: "disabled",
|
|
1608
1552
|
},
|
|
1609
1553
|
"cost-optimized": {
|
|
1610
|
-
|
|
1611
|
-
provider: "fireworks",
|
|
1612
|
-
provider_connection: "fireworks-managed",
|
|
1554
|
+
provider: "cadet",
|
|
1613
1555
|
model: "accounts/fireworks/models/deepseek-v4-flash",
|
|
1614
1556
|
status: "disabled",
|
|
1615
1557
|
},
|
|
1616
1558
|
"custom-quality-optimized": {
|
|
1617
|
-
|
|
1618
|
-
provider: "anthropic",
|
|
1559
|
+
provider: "cadet",
|
|
1619
1560
|
provider_connection: "anthropic-personal",
|
|
1620
1561
|
model: "claude-opus-4-8",
|
|
1621
1562
|
label: "Quality",
|
|
@@ -1625,7 +1566,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1625
1566
|
});
|
|
1626
1567
|
|
|
1627
1568
|
mergeDefaultConfigAndSeedInferenceProfiles();
|
|
1628
|
-
const config =
|
|
1569
|
+
const config = getConfig();
|
|
1629
1570
|
|
|
1630
1571
|
// Advisor repair only considers the cloud defaults; a user profile is
|
|
1631
1572
|
// never auto-selected, so a fully-disabled managed set clears the field.
|
|
@@ -1639,15 +1580,12 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1639
1580
|
advisorProfile: "frontier",
|
|
1640
1581
|
profiles: {
|
|
1641
1582
|
frontier: {
|
|
1642
|
-
|
|
1643
|
-
provider: "anthropic",
|
|
1644
|
-
provider_connection: "anthropic-managed",
|
|
1583
|
+
provider: "cadet",
|
|
1645
1584
|
model: "claude-opus-4-8",
|
|
1646
1585
|
status: "disabled",
|
|
1647
1586
|
},
|
|
1648
1587
|
"custom-quality-optimized": {
|
|
1649
|
-
|
|
1650
|
-
provider: "anthropic",
|
|
1588
|
+
provider: "cadet",
|
|
1651
1589
|
provider_connection: "anthropic-personal",
|
|
1652
1590
|
model: "claude-opus-4-8",
|
|
1653
1591
|
label: "Quality",
|
|
@@ -1657,7 +1595,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1657
1595
|
});
|
|
1658
1596
|
|
|
1659
1597
|
mergeDefaultConfigAndSeedInferenceProfiles();
|
|
1660
|
-
const config =
|
|
1598
|
+
const config = getConfig();
|
|
1661
1599
|
|
|
1662
1600
|
expect(config.llm.advisorProfile).toBe("quality-optimized");
|
|
1663
1601
|
});
|
|
@@ -1668,30 +1606,22 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1668
1606
|
advisorProfile: "frontier",
|
|
1669
1607
|
profiles: {
|
|
1670
1608
|
frontier: {
|
|
1671
|
-
|
|
1672
|
-
provider: "anthropic",
|
|
1673
|
-
provider_connection: "anthropic-managed",
|
|
1609
|
+
provider: "cadet",
|
|
1674
1610
|
model: "claude-opus-4-8",
|
|
1675
1611
|
status: "disabled",
|
|
1676
1612
|
},
|
|
1677
1613
|
balanced: {
|
|
1678
|
-
|
|
1679
|
-
provider: "together",
|
|
1680
|
-
provider_connection: "together-managed",
|
|
1614
|
+
provider: "cadet",
|
|
1681
1615
|
model: "open-model",
|
|
1682
1616
|
status: "disabled",
|
|
1683
1617
|
},
|
|
1684
1618
|
"quality-optimized": {
|
|
1685
|
-
|
|
1686
|
-
provider: "fireworks",
|
|
1687
|
-
provider_connection: "fireworks-managed",
|
|
1619
|
+
provider: "cadet",
|
|
1688
1620
|
model: "accounts/fireworks/models/glm-5p2",
|
|
1689
1621
|
status: "disabled",
|
|
1690
1622
|
},
|
|
1691
1623
|
"cost-optimized": {
|
|
1692
|
-
|
|
1693
|
-
provider: "fireworks",
|
|
1694
|
-
provider_connection: "fireworks-managed",
|
|
1624
|
+
provider: "cadet",
|
|
1695
1625
|
model: "accounts/fireworks/models/deepseek-v4-flash",
|
|
1696
1626
|
status: "disabled",
|
|
1697
1627
|
},
|
|
@@ -1700,7 +1630,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1700
1630
|
});
|
|
1701
1631
|
|
|
1702
1632
|
mergeDefaultConfigAndSeedInferenceProfiles();
|
|
1703
|
-
const config =
|
|
1633
|
+
const config = getConfig();
|
|
1704
1634
|
|
|
1705
1635
|
expect(config.llm.advisorProfile).toBeUndefined();
|
|
1706
1636
|
});
|
|
@@ -1749,8 +1679,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1749
1679
|
default: { provider: "anthropic" },
|
|
1750
1680
|
profiles: {
|
|
1751
1681
|
balanced: {
|
|
1752
|
-
|
|
1753
|
-
provider: "anthropic",
|
|
1682
|
+
provider: "cadet",
|
|
1754
1683
|
provider_connection: "anthropic-personal",
|
|
1755
1684
|
model: "claude-sonnet-4-6",
|
|
1756
1685
|
},
|
|
@@ -1875,22 +1804,16 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1875
1804
|
// and the bare labels flow through the effective view.
|
|
1876
1805
|
const legacyProfiles = {
|
|
1877
1806
|
balanced: {
|
|
1878
|
-
|
|
1879
|
-
provider: "anthropic",
|
|
1880
|
-
provider_connection: "anthropic-managed",
|
|
1807
|
+
provider: "cadet",
|
|
1881
1808
|
model: "claude-sonnet-4-6",
|
|
1882
1809
|
label: "Balanced",
|
|
1883
1810
|
},
|
|
1884
1811
|
"quality-optimized": {
|
|
1885
|
-
|
|
1886
|
-
provider: "anthropic",
|
|
1887
|
-
provider_connection: "anthropic-managed",
|
|
1812
|
+
provider: "cadet",
|
|
1888
1813
|
label: "Quality",
|
|
1889
1814
|
},
|
|
1890
1815
|
"cost-optimized": {
|
|
1891
|
-
|
|
1892
|
-
provider: "anthropic",
|
|
1893
|
-
provider_connection: "anthropic-managed",
|
|
1816
|
+
provider: "cadet",
|
|
1894
1817
|
label: "Speed",
|
|
1895
1818
|
},
|
|
1896
1819
|
};
|
|
@@ -1922,23 +1845,17 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1922
1845
|
default: { provider: "anthropic", model: "claude-opus-4-7" },
|
|
1923
1846
|
profiles: {
|
|
1924
1847
|
balanced: {
|
|
1925
|
-
|
|
1926
|
-
provider: "anthropic",
|
|
1927
|
-
provider_connection: "anthropic-managed",
|
|
1848
|
+
provider: "cadet",
|
|
1928
1849
|
model: "claude-sonnet-4-6",
|
|
1929
1850
|
label: "My Balanced",
|
|
1930
1851
|
},
|
|
1931
1852
|
"quality-optimized": {
|
|
1932
|
-
|
|
1933
|
-
provider: "anthropic",
|
|
1934
|
-
provider_connection: "anthropic-managed",
|
|
1853
|
+
provider: "cadet",
|
|
1935
1854
|
label: null,
|
|
1936
1855
|
},
|
|
1937
1856
|
// Already-suffixed labels are also preserved (idempotency).
|
|
1938
1857
|
"cost-optimized": {
|
|
1939
|
-
|
|
1940
|
-
provider: "anthropic",
|
|
1941
|
-
provider_connection: "anthropic-managed",
|
|
1858
|
+
provider: "cadet",
|
|
1942
1859
|
label: "Speed (Managed)",
|
|
1943
1860
|
},
|
|
1944
1861
|
},
|
|
@@ -1963,9 +1880,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1963
1880
|
default: { provider: "anthropic", model: "claude-opus-4-7" },
|
|
1964
1881
|
profiles: {
|
|
1965
1882
|
balanced: {
|
|
1966
|
-
|
|
1967
|
-
provider: "anthropic",
|
|
1968
|
-
provider_connection: "anthropic-managed",
|
|
1883
|
+
provider: "cadet",
|
|
1969
1884
|
model: "claude-sonnet-4-6",
|
|
1970
1885
|
label: "Balanced",
|
|
1971
1886
|
},
|
|
@@ -1975,7 +1890,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1975
1890
|
});
|
|
1976
1891
|
|
|
1977
1892
|
mergeDefaultConfigAndSeedInferenceProfiles();
|
|
1978
|
-
const config =
|
|
1893
|
+
const config = getConfig();
|
|
1979
1894
|
|
|
1980
1895
|
expect(config.llm.profiles.balanced?.label).toBe("Balanced");
|
|
1981
1896
|
});
|
|
@@ -1988,16 +1903,13 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
1988
1903
|
default: { provider: "anthropic", model: "claude-opus-4-7" },
|
|
1989
1904
|
profiles: {
|
|
1990
1905
|
balanced: {
|
|
1991
|
-
|
|
1992
|
-
provider: "anthropic",
|
|
1993
|
-
provider_connection: "anthropic-managed",
|
|
1906
|
+
provider: "cadet",
|
|
1994
1907
|
model: "claude-sonnet-4-6",
|
|
1995
1908
|
label: "Balanced (Managed)",
|
|
1996
1909
|
status: "active",
|
|
1997
1910
|
},
|
|
1998
1911
|
"custom-balanced": {
|
|
1999
|
-
|
|
2000
|
-
provider: "anthropic",
|
|
1912
|
+
provider: "cadet",
|
|
2001
1913
|
provider_connection: "anthropic-personal",
|
|
2002
1914
|
model: "claude-sonnet-4-6",
|
|
2003
1915
|
label: "Balanced",
|
|
@@ -2009,7 +1921,7 @@ describe("seedInferenceProfiles BYOK-mode default profiles", () => {
|
|
|
2009
1921
|
|
|
2010
1922
|
// No overlay → this is a normal boot, not a hatch.
|
|
2011
1923
|
mergeDefaultConfigAndSeedInferenceProfiles();
|
|
2012
|
-
const config =
|
|
1924
|
+
const config = getConfig();
|
|
2013
1925
|
|
|
2014
1926
|
// User's "active" decision survives the boot upsert.
|
|
2015
1927
|
expect(config.llm.profiles.balanced?.status).toBe("active");
|
|
@@ -2078,7 +1990,6 @@ describe("OS Beta cloud profile template", () => {
|
|
|
2078
1990
|
expect(entry.provider_connection).toBe("cadet");
|
|
2079
1991
|
expect(entry.provider).toBe("together");
|
|
2080
1992
|
expect(entry.label).toBe("OS Beta");
|
|
2081
|
-
expect(entry.source).toBe("managed");
|
|
2082
1993
|
expect(entry.maxTokens).toBe(32000);
|
|
2083
1994
|
expect(entry.effort).toBe("low");
|
|
2084
1995
|
expect(entry.thinking?.enabled).toBe(true);
|