@vellumai/assistant 0.8.0 → 0.8.1
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/AGENTS.md +11 -0
- package/Dockerfile +5 -4
- package/README.md +2 -2
- package/docker-entrypoint.sh +16 -0
- package/eslint-rules/__tests__/cli-no-daemon-internals.test.ts +420 -0
- package/eslint-rules/cli-no-daemon-internals.js +283 -0
- package/eslint.config.mjs +12 -0
- package/knip.json +2 -1
- package/node_modules/@vellumai/skill-host-contracts/src/client.ts +10 -1
- package/openapi.yaml +4847 -1698
- package/package.json +3 -1
- package/scripts/generate-openapi.ts +52 -4
- package/scripts/sync-llm-catalog.ts +165 -0
- package/scripts/sync-web-search-catalog.ts +107 -0
- package/src/__tests__/actor-trust-resolver-address-fallback.test.ts +169 -0
- package/src/__tests__/agent-loop-override-profile.test.ts +26 -1
- package/src/__tests__/anthropic-provider.test.ts +92 -2
- package/src/__tests__/app-control-flow.test.ts +7 -0
- package/src/__tests__/assistant-events-sse-shed.test.ts +232 -0
- package/src/__tests__/avatar-identity-sync.test.ts +87 -0
- package/src/__tests__/background-workers-disk-pressure.test.ts +11 -22
- package/src/__tests__/btw-routes.test.ts +1 -0
- package/src/__tests__/call-site-routing-provider.test.ts +172 -45
- package/src/__tests__/cancel-resolves-conversation-key.test.ts +44 -3
- package/src/__tests__/channel-policy.test.ts +12 -0
- package/src/__tests__/checker.test.ts +89 -0
- package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +35 -7
- package/src/__tests__/compact-event-conversation-id-guard.test.ts +33 -5
- package/src/__tests__/compaction-strip-metadata-clear.test.ts +26 -1
- package/src/__tests__/config-loader-backfill.test.ts +526 -102
- package/src/__tests__/config-loader-corrupt.test.ts +68 -0
- package/src/__tests__/config-loader-platform-defaults.test.ts +77 -23
- package/src/__tests__/config-schema-cmd.test.ts +63 -29
- package/src/__tests__/config-schema.test.ts +14 -3
- package/src/__tests__/config-set-platform-guard.test.ts +75 -152
- package/src/__tests__/config-set-route.test.ts +198 -0
- package/src/__tests__/config-watcher.test.ts +6 -0
- package/src/__tests__/contacts-tools.test.ts +51 -199
- package/src/__tests__/context-search-agent-protocol.test.ts +21 -2
- package/src/__tests__/context-search-agent-runner.test.ts +22 -138
- package/src/__tests__/context-search-conversations-source.test.ts +42 -16
- package/src/__tests__/context-search-fanout.test.ts +20 -157
- package/src/__tests__/context-search-memory-v2-source.test.ts +3 -3
- package/src/__tests__/context-search-types.test.ts +7 -2
- package/src/__tests__/context-window-manager.test.ts +389 -1
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +1 -0
- package/src/__tests__/conversation-crud-inference-profile.test.ts +100 -0
- package/src/__tests__/conversation-error.test.ts +38 -0
- package/src/__tests__/conversation-fork-crud.test.ts +241 -1
- package/src/__tests__/conversation-inference-profile-route.test.ts +14 -14
- package/src/__tests__/conversation-init.benchmark.test.ts +1 -0
- package/src/__tests__/conversation-lifecycle.test.ts +124 -0
- package/src/__tests__/conversation-process-app-control-preactivation.test.ts +100 -1
- package/src/__tests__/conversation-process-callsite.test.ts +21 -1
- package/src/__tests__/conversation-runtime-assembly.test.ts +4 -4
- package/src/__tests__/conversation-slash-commands.test.ts +194 -2
- package/src/__tests__/conversation-surfaces-app-control.test.ts +323 -3
- package/src/__tests__/credential-security-invariants.test.ts +5 -6
- package/src/__tests__/daemon-credential-client.test.ts +56 -1
- package/src/__tests__/db-activation-state-fk-cascade.test.ts +132 -0
- package/src/__tests__/db-conversation-inference-profile-migration.test.ts +37 -0
- package/src/__tests__/db-memory-graph-event-date-repair.test.ts +43 -20
- package/src/__tests__/db-proxy-transaction.test.ts +206 -0
- package/src/__tests__/external-plugin-loader.test.ts +458 -0
- package/src/__tests__/filing-service.test.ts +23 -3
- package/src/__tests__/fixtures/mock-chrome-extension.ts +5 -0
- package/src/__tests__/gateway-only-guard.test.ts +0 -1
- package/src/__tests__/graph-extraction-event-date.test.ts +34 -0
- package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +0 -8
- package/src/__tests__/heartbeat-disk-pressure.test.ts +21 -8
- package/src/__tests__/heartbeat-service.test.ts +50 -233
- package/src/__tests__/history-repair.test.ts +89 -0
- package/src/__tests__/host-app-control-proxy.test.ts +109 -1
- package/src/__tests__/host-app-control-routes.test.ts +247 -1
- package/src/__tests__/host-browser-proxy.test.ts +416 -20
- package/src/__tests__/host-browser-routes.test.ts +325 -33
- package/src/__tests__/host-proxy-preactivation.test.ts +211 -0
- package/src/__tests__/inference-no-mode-boot-e2e.test.ts +246 -0
- package/src/__tests__/inference-profile-reaper.test.ts +154 -0
- package/src/__tests__/inference-profile-session-handler.test.ts +398 -0
- package/src/__tests__/inference-profile-session-ipc.test.ts +236 -0
- package/src/__tests__/inline-skill-load-permissions.test.ts +6 -1
- package/src/__tests__/install-skill-routing.test.ts +2 -2
- package/src/__tests__/lifecycle-memory-v2-seed.test.ts +15 -0
- package/src/__tests__/llm-callsite-catalog.test.ts +20 -1
- package/src/__tests__/llm-catalog-parity.test.ts +146 -0
- package/src/__tests__/llm-request-log-source-clickhouse.test.ts +188 -0
- package/src/__tests__/llm-request-log-source-factory.test.ts +124 -0
- package/src/__tests__/llm-resolver.test.ts +46 -0
- package/src/__tests__/managed-profile-guard.test.ts +131 -2
- package/src/__tests__/mcp-auth-routes.test.ts +1 -0
- package/src/__tests__/mcp-cli.test.ts +182 -220
- package/src/__tests__/mcp-health-check.test.ts +56 -27
- package/src/__tests__/memory-jobs-worker-lanes.test.ts +18 -11
- package/src/__tests__/message-complete-display-id.test.ts +175 -0
- package/src/__tests__/notification-platform-adapter.test.ts +229 -0
- package/src/__tests__/oauth-cli.test.ts +38 -2009
- package/src/__tests__/oauth-commands-routes.test.ts +711 -0
- package/src/__tests__/oauth-connect-routes.test.ts +174 -11
- package/src/__tests__/oauth-providers-routes.test.ts +14 -10
- package/src/__tests__/openai-responses-cutover-guard.test.ts +33 -12
- package/src/__tests__/openai-responses-provider.test.ts +17 -0
- package/src/__tests__/plugin-bootstrap.test.ts +31 -2
- package/src/__tests__/plugin-route-contribution.test.ts +31 -3
- package/src/__tests__/plugin-tool-contribution.test.ts +31 -3
- package/src/__tests__/plugin-types.test.ts +13 -11
- package/src/__tests__/process-message-background-slack.test.ts +46 -0
- package/src/__tests__/profile-entry-status.test.ts +43 -0
- package/src/__tests__/provider-managed-proxy-integration.test.ts +12 -4
- package/src/__tests__/provider-registry-ollama.test.ts +12 -4
- package/src/__tests__/provider-send-message-override-profile.test.ts +10 -4
- package/src/__tests__/relay-server.test.ts +118 -0
- package/src/__tests__/retry-thinking-tool-choice.test.ts +15 -0
- package/src/__tests__/schedule-retry.test.ts +56 -4
- package/src/__tests__/schedule-routes.test.ts +104 -0
- package/src/__tests__/scheduler-disk-pressure.test.ts +0 -4
- package/src/__tests__/scheduler-recurrence.test.ts +87 -34
- package/src/__tests__/scheduler-reuse-conversation.test.ts +161 -5
- package/src/__tests__/scheduler-wake.test.ts +0 -63
- package/src/__tests__/secret-allowlist.test.ts +1 -0
- package/src/__tests__/secret-routes-managed-proxy.test.ts +12 -4
- package/src/__tests__/shell-credential-ref.test.ts +95 -3
- package/src/__tests__/shell-tool-proxy-mode.test.ts +14 -0
- package/src/__tests__/skill-load-feature-flag.test.ts +1 -0
- package/src/__tests__/skill-load-tool.test.ts +2 -4
- package/src/__tests__/subagent-call-site-routing.test.ts +78 -16
- package/src/__tests__/suggestion-routes.test.ts +3 -3
- package/src/__tests__/sync-message-contract.test.ts +63 -0
- package/src/__tests__/task-scheduler.test.ts +88 -23
- package/src/__tests__/update-bulletin-job.test.ts +96 -193
- package/src/__tests__/usage-cli.test.ts +11 -73
- package/src/__tests__/user-plugin-loader.test.ts +145 -0
- package/src/__tests__/vercel-config.test.ts +168 -0
- package/src/__tests__/web-search-catalog-parity.test.ts +86 -0
- package/src/__tests__/web-search.test.ts +303 -2
- package/src/__tests__/workspace-migration-039-drop-legacy-llm-keys.test.ts +1 -21
- package/src/__tests__/workspace-migration-057-repair-stale-gemini-model-ids.test.ts +58 -0
- package/src/__tests__/workspace-migration-069-seed-onboarding-threads.test.ts +53 -20
- package/src/__tests__/workspace-migration-072-seed-reply-suggestion-callsite.test.ts +191 -0
- package/src/__tests__/workspace-migration-076-drop-services-inference-mode.test.ts +211 -0
- package/src/__tests__/workspace-migration-077-seed-memory-router-callsite.test.ts +174 -0
- package/src/__tests__/workspace-migration-079-home-feed-notification-only.test.ts +323 -0
- package/src/__tests__/workspace-migration-080-restrict-vercel-api-token-metadata.test.ts +299 -0
- package/src/__tests__/workspace-migration-081-backfill-bash-allowed-tools.test.ts +410 -0
- package/src/__tests__/workspace-migration-082-backfill-managed-profile-labels.test.ts +268 -0
- package/src/__tests__/workspace-migration-unify-llm-callsite-configs.test.ts +3 -3
- package/src/__tests__/workspace-release-notes-feature-flag-guard.test.ts +115 -0
- package/src/acp/__tests__/helpers/which-stub.ts +4 -2
- package/src/acp/resolve-agent.test.ts +25 -0
- package/src/acp/resolve-agent.ts +13 -2
- package/src/acp/session-manager.ts +14 -0
- package/src/approvals/guardian-request-resolvers.ts +32 -87
- package/src/calls/relay-server.ts +35 -0
- package/src/calls/relay-setup-router.ts +36 -0
- package/src/calls/types.ts +1 -0
- package/src/calls/voice-session-bridge.ts +23 -4
- package/src/channels/config.ts +14 -1
- package/src/channels/types.ts +1 -0
- package/src/cli/AGENTS.md +164 -4
- package/src/cli/__tests__/notifications.test.ts +54 -0
- package/src/cli/commands/__tests__/avatar.test.ts +540 -0
- package/src/cli/commands/__tests__/backup.test.ts +236 -776
- package/src/cli/commands/__tests__/cache.test.ts +1 -1
- package/src/cli/commands/__tests__/changelog.test.ts +593 -0
- package/src/cli/commands/__tests__/channel-verification-sessions.test.ts +503 -0
- package/src/cli/commands/__tests__/conversations-import.test.ts +515 -0
- package/src/cli/commands/__tests__/domain-register.test.ts +140 -167
- package/src/cli/commands/__tests__/domain-status.test.ts +137 -76
- package/src/cli/commands/__tests__/email-attachment.test.ts +314 -337
- package/src/cli/commands/__tests__/email-core.test.ts +579 -0
- package/src/cli/commands/__tests__/image-generation.test.ts +87 -824
- package/src/cli/commands/__tests__/inference-send.test.ts +30 -266
- package/src/cli/commands/__tests__/inference-session.test.ts +423 -0
- package/src/cli/commands/__tests__/memory-v2.test.ts +81 -110
- package/src/cli/commands/__tests__/skills.test.ts +563 -0
- package/src/cli/commands/__tests__/status.test.ts +249 -0
- package/src/cli/commands/__tests__/stt.test.ts +320 -0
- package/src/cli/commands/__tests__/tts-synthesize.test.ts +4 -603
- package/src/cli/commands/__tests__/tts.test.ts +321 -0
- package/src/cli/commands/__tests__/webhooks.test.ts +86 -511
- package/src/cli/commands/attachment.ts +8 -3
- package/src/cli/commands/audit.ts +95 -64
- package/src/cli/commands/auth.ts +61 -58
- package/src/cli/commands/avatar.ts +276 -390
- package/src/cli/commands/backup.ts +409 -505
- package/src/cli/commands/bash.ts +9 -5
- package/src/cli/commands/browser.ts +28 -9
- package/src/cli/commands/cache.ts +9 -4
- package/src/cli/commands/changelog.ts +414 -0
- package/src/cli/commands/channel-verification-sessions.ts +238 -317
- package/src/cli/commands/clients.ts +8 -3
- package/src/cli/commands/completions.ts +9 -9
- package/src/cli/commands/config.ts +102 -72
- package/src/cli/commands/contacts.ts +575 -696
- package/src/cli/commands/conversations-defer.ts +17 -69
- package/src/cli/commands/conversations-import.ts +90 -253
- package/src/cli/commands/conversations.ts +346 -436
- package/src/cli/commands/credential-execution.ts +9 -6
- package/src/cli/commands/credentials.ts +456 -736
- package/src/cli/commands/domain.ts +128 -206
- package/src/cli/commands/email.ts +606 -794
- package/src/cli/commands/gateway.ts +8 -1
- package/src/cli/commands/image-generation.ts +157 -205
- package/src/cli/commands/inference-providers.ts +352 -0
- package/src/cli/commands/inference-session.ts +415 -0
- package/src/cli/commands/inference.ts +87 -65
- package/src/cli/commands/keys.ts +8 -3
- package/src/cli/commands/mcp.ts +103 -287
- package/src/cli/commands/memory-v2.ts +162 -516
- package/src/cli/commands/notifications.ts +33 -7
- package/src/cli/commands/oauth/apps.ts +292 -261
- package/src/cli/commands/oauth/connect.ts +176 -297
- package/src/cli/commands/oauth/disconnect.ts +16 -215
- package/src/cli/commands/oauth/index.ts +49 -45
- package/src/cli/commands/oauth/mode.ts +43 -199
- package/src/cli/commands/oauth/ping.ts +17 -125
- package/src/cli/commands/oauth/providers.ts +732 -921
- package/src/cli/commands/oauth/request.ts +60 -350
- package/src/cli/commands/oauth/shared.ts +11 -121
- package/src/cli/commands/oauth/status.ts +31 -121
- package/src/cli/commands/oauth/token.ts +13 -55
- package/src/cli/commands/pending.ts +19 -10
- package/src/cli/commands/platform/__tests__/callback-routes-list.test.ts +133 -183
- package/src/cli/commands/platform/__tests__/connect.test.ts +66 -181
- package/src/cli/commands/platform/__tests__/disconnect.test.ts +71 -227
- package/src/cli/commands/platform/__tests__/status.test.ts +169 -287
- package/src/cli/commands/platform/connect.ts +16 -80
- package/src/cli/commands/platform/disconnect.ts +14 -112
- package/src/cli/commands/platform/index.ts +177 -246
- package/src/cli/commands/routes.ts +153 -336
- package/src/cli/commands/sequence.ts +316 -360
- package/src/cli/commands/skills.ts +449 -671
- package/src/cli/commands/status.ts +58 -37
- package/src/cli/commands/stt.ts +94 -262
- package/src/cli/commands/task.ts +14 -40
- package/src/cli/commands/trust.ts +8 -3
- package/src/cli/commands/tts.ts +162 -167
- package/src/cli/commands/ui.ts +35 -42
- package/src/cli/commands/usage.ts +188 -126
- package/src/cli/commands/watchers.ts +8 -3
- package/src/cli/commands/webhooks.ts +99 -193
- package/src/cli/lib/__tests__/register-command.test.ts +85 -0
- package/src/cli/lib/daemon-credential-client.ts +4 -5
- package/src/cli/lib/nested-value.ts +44 -0
- package/src/cli/lib/open-browser.ts +36 -0
- package/src/cli/lib/register-command.ts +19 -0
- package/src/cli/lib/time-ago.ts +34 -0
- package/src/cli/program.ts +2 -4
- package/src/cli/utils/__tests__/conversation-id.test.ts +66 -0
- package/src/cli/utils/__tests__/parse-duration.test.ts +49 -0
- package/src/cli/utils/conversation-id.ts +30 -0
- package/src/cli/utils/parse-duration.ts +41 -0
- package/src/config/acp-defaults.test.ts +5 -1
- package/src/config/acp-defaults.ts +11 -4
- package/src/config/bundled-skills/acp/TOOLS.json +2 -2
- package/src/config/bundled-skills/app-control/TOOLS.json +32 -0
- package/src/config/bundled-skills/contacts/SKILL.md +12 -45
- package/src/config/bundled-skills/contacts/TOOLS.json +0 -57
- package/src/config/bundled-skills/messaging/tools/messaging-archive-by-sender.ts +0 -12
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +0 -58
- package/src/config/bundled-tool-registry.ts +0 -2
- package/src/config/feature-flag-registry.json +16 -0
- package/src/config/llm-resolver.ts +16 -1
- package/src/config/loader.ts +76 -14
- package/src/config/raw-config-utils.ts +2 -30
- package/src/config/schema.ts +4 -0
- package/src/config/schemas/__tests__/memory-v2.test.ts +49 -0
- package/src/config/schemas/call-site-catalog.ts +29 -7
- package/src/config/schemas/llm-request-logs.ts +57 -0
- package/src/config/schemas/llm.ts +52 -2
- package/src/config/schemas/memory-retrospective.ts +48 -0
- package/src/config/schemas/memory-v2.ts +32 -1
- package/src/config/schemas/memory.ts +4 -0
- package/src/config/schemas/services.ts +15 -12
- package/src/config/seed-inference-profiles.ts +195 -134
- package/src/contacts/contact-store.ts +0 -61
- package/src/context/window-manager.ts +191 -5
- package/src/daemon/__tests__/conversation-lifecycle-auto-analyze.test.ts +79 -0
- package/src/daemon/__tests__/conversation-tool-setup.test.ts +109 -4
- package/src/daemon/__tests__/daemon-skill-host.test.ts +10 -4
- package/src/daemon/approval-generators.ts +23 -29
- package/src/daemon/config-watcher.ts +2 -0
- package/src/daemon/conversation-agent-loop-handlers.ts +24 -0
- package/src/daemon/conversation-agent-loop.ts +127 -97
- package/src/daemon/conversation-error.ts +21 -0
- package/src/daemon/conversation-lifecycle.ts +46 -5
- package/src/daemon/conversation-process.ts +36 -19
- package/src/daemon/conversation-runtime-assembly.ts +14 -5
- package/src/daemon/conversation-slash.ts +175 -23
- package/src/daemon/conversation-store.ts +17 -10
- package/src/daemon/conversation-surfaces.ts +76 -12
- package/src/daemon/conversation-tool-setup.ts +24 -14
- package/src/daemon/conversation.ts +48 -9
- package/src/daemon/external-plugins-bootstrap.ts +18 -8
- package/src/daemon/guardian-action-generators.ts +7 -22
- package/src/daemon/handlers/config-model.ts +8 -126
- package/src/daemon/handlers/config-slack-channel.ts +10 -7
- package/src/daemon/handlers/config-vercel.ts +3 -1
- package/src/daemon/handlers/skills.ts +84 -5
- package/src/daemon/history-repair.ts +33 -6
- package/src/daemon/host-app-control-proxy.ts +44 -19
- package/src/daemon/host-bash-proxy.ts +85 -158
- package/src/daemon/host-browser-proxy.ts +96 -35
- package/src/daemon/host-proxy-base.ts +13 -1
- package/src/daemon/host-proxy-preactivation.ts +25 -1
- package/src/daemon/identity-helpers.ts +19 -0
- package/src/daemon/lifecycle.ts +42 -43
- package/src/daemon/meet-host-supervisor.ts +15 -15
- package/src/daemon/memory-v2-startup.ts +9 -2
- package/src/daemon/message-protocol.ts +6 -0
- package/src/daemon/message-types/bookmarks.ts +18 -0
- package/src/daemon/message-types/conversations.ts +12 -9
- package/src/daemon/message-types/messages.ts +9 -1
- package/src/daemon/message-types/sync.ts +60 -0
- package/src/daemon/pkb-reminder-builder.test.ts +54 -13
- package/src/daemon/pkb-reminder-builder.ts +21 -7
- package/src/daemon/process-message.ts +56 -23
- package/src/daemon/server.ts +23 -18
- package/src/daemon/shutdown-handlers.ts +0 -2
- package/src/daemon/tool-setup-types.ts +9 -0
- package/src/daemon/tool-side-effects.ts +6 -4
- package/src/daemon/wake-target-adapter.ts +11 -0
- package/src/export/transcript-formatter.ts +61 -2
- package/src/filing/filing-service.ts +40 -53
- package/src/heartbeat/__tests__/heartbeat-service.test.ts +359 -0
- package/src/heartbeat/heartbeat-run-store.ts +2 -1
- package/src/heartbeat/heartbeat-service.ts +148 -127
- package/src/home/__tests__/feed-types.test.ts +63 -131
- package/src/home/__tests__/feed-writer.test.ts +77 -278
- package/src/home/__tests__/post-connect-feed.test.ts +9 -12
- package/src/home/feed-types.ts +19 -73
- package/src/home/feed-writer.ts +25 -156
- package/src/home/post-connect-feed.ts +1 -3
- package/src/ipc/__tests__/cli-ipc.test.ts +2 -0
- package/src/ipc/__tests__/email-ipc.test.ts +506 -0
- package/src/ipc/__tests__/exit-helper.test.ts +104 -0
- package/src/ipc/__tests__/streaming-client.test.ts +237 -0
- package/src/ipc/__tests__/streaming-framing.test.ts +142 -0
- package/src/ipc/assistant-server.ts +55 -6
- package/src/ipc/cli-client.ts +370 -50
- package/src/ipc/routes/db-proxy-transaction.ts +151 -0
- package/src/ipc/skill-routes/__tests__/events-ipc.test.ts +60 -0
- package/src/ipc/skill-routes/events.ts +30 -3
- package/src/live-voice/__tests__/live-voice-session-manager.test.ts +46 -0
- package/src/live-voice/__tests__/runtime-websocket-shell.test.ts +1 -0
- package/src/live-voice/live-voice-session-manager.ts +11 -4
- package/src/live-voice/live-voice-session.ts +14 -6
- package/src/memory/__tests__/bookmark-crud.test.ts +258 -0
- package/src/memory/__tests__/bookmark-schema.test.ts +181 -0
- package/src/memory/__tests__/conversation-types.test.ts +36 -0
- package/src/memory/__tests__/find-most-recent-retrospective-for.test.ts +130 -0
- package/src/memory/__tests__/memory-retrospective-enqueue.test.ts +177 -0
- package/src/memory/__tests__/memory-retrospective-job.test.ts +328 -0
- package/src/memory/__tests__/memory-retrospective-startup-cleanup.test.ts +213 -0
- package/src/memory/__tests__/memory-retrospective-trigger-check.test.ts +90 -0
- package/src/memory/__tests__/memory-v2-activation-log-store.test.ts +69 -0
- package/src/memory/__tests__/memory-v2-concept-frequency.test.ts +3 -0
- package/src/memory/bookmark-crud.ts +179 -0
- package/src/memory/context-search/__tests__/agent-runner-redaction.test.ts +31 -9
- package/src/memory/context-search/agent-protocol.ts +5 -1
- package/src/memory/context-search/agent-runner.ts +60 -85
- package/src/memory/context-search/limits.ts +1 -4
- package/src/memory/context-search/search.ts +23 -113
- package/src/memory/context-search/sources/conversations.ts +18 -6
- package/src/memory/context-search/sources/memory-v2.ts +39 -14
- package/src/memory/context-search/sources/memory.ts +7 -0
- package/src/memory/context-search/sources/workspace.ts +13 -10
- package/src/memory/context-search/types.ts +1 -1
- package/src/memory/conversation-bootstrap.ts +11 -0
- package/src/memory/conversation-crud.ts +312 -10
- package/src/memory/conversation-queries.ts +9 -5
- package/src/memory/conversation-title-service.ts +1 -0
- package/src/memory/conversation-types.ts +16 -0
- package/src/memory/db-init.ts +14 -0
- package/src/memory/embedding-backend.ts +2 -1
- package/src/memory/embedding-runtime-manager.ts +1 -2
- package/src/memory/graph/__tests__/remember-description.test.ts +55 -0
- package/src/memory/graph/conversation-graph-memory.ts +76 -5
- package/src/memory/graph/extraction.ts +4 -0
- package/src/memory/graph/graph-memory-state-store.ts +16 -3
- package/src/memory/graph/tool-handlers.ts +17 -7
- package/src/memory/graph/tools.ts +44 -5
- package/src/memory/indexer.ts +17 -0
- package/src/memory/jobs/__tests__/embed-concept-page.test.ts +13 -15
- package/src/memory/jobs/embed-concept-page.ts +45 -9
- package/src/memory/jobs-store.ts +51 -1
- package/src/memory/jobs-worker.ts +52 -3
- package/src/memory/llm-request-log-source-clickhouse.ts +317 -0
- package/src/memory/llm-request-log-source-local.ts +26 -0
- package/src/memory/llm-request-log-source.ts +97 -0
- package/src/memory/llm-request-log-store.ts +1 -1
- package/src/memory/memory-retrospective-constants.ts +13 -0
- package/src/memory/memory-retrospective-enqueue.ts +114 -0
- package/src/memory/memory-retrospective-job.ts +351 -0
- package/src/memory/memory-retrospective-startup-cleanup.ts +108 -0
- package/src/memory/memory-retrospective-state.ts +162 -0
- package/src/memory/memory-retrospective-trigger-check.ts +91 -0
- package/src/memory/memory-v2-activation-log-store.ts +49 -5
- package/src/memory/memory-v2-concept-frequency.ts +4 -0
- package/src/memory/message-content.ts +38 -1
- package/src/memory/migrations/227-add-conversation-inference-profile.ts +6 -1
- package/src/memory/migrations/228-rename-inference-profile-snake-case.ts +20 -7
- package/src/memory/migrations/229-delete-private-conversations.test.ts +70 -1
- package/src/memory/migrations/229-delete-private-conversations.ts +12 -0
- package/src/memory/migrations/231-repair-memory-graph-event-dates.ts +16 -2
- package/src/memory/migrations/240-conversation-inference-profile-session.ts +25 -0
- package/src/memory/migrations/241-activation-state-fk-cascade.ts +50 -0
- package/src/memory/migrations/242-message-bookmarks.ts +38 -0
- package/src/memory/migrations/243-provider-connections.ts +68 -0
- package/src/memory/migrations/244-provider-connection-status-label.ts +23 -0
- package/src/memory/migrations/245-memory-retrospective-state.ts +36 -0
- package/src/memory/migrations/246-backfill-provider-connection-label.ts +81 -0
- package/src/memory/migrations/__tests__/244-provider-connection-status-label.test.ts +84 -0
- package/src/memory/migrations/__tests__/245-memory-retrospective-state.test.ts +125 -0
- package/src/memory/migrations/__tests__/246-backfill-provider-connection-label.test.ts +192 -0
- package/src/memory/migrations/index.ts +7 -0
- package/src/memory/published-pages-store.ts +16 -0
- package/src/memory/schema/bookmarks.ts +38 -0
- package/src/memory/schema/conversations.ts +2 -0
- package/src/memory/schema/index.ts +2 -0
- package/src/memory/schema/inference.ts +29 -0
- package/src/memory/schema/memory-core.ts +9 -0
- package/src/memory/search/semantic.ts +1 -4
- package/src/memory/v2/__tests__/__snapshots__/prompts-router.test.ts.snap +27 -0
- package/src/memory/v2/__tests__/activation-store.test.ts +5 -5
- package/src/memory/v2/__tests__/activation.test.ts +11 -4
- package/src/memory/v2/__tests__/backfill-jobs.test.ts +38 -21
- package/src/memory/v2/__tests__/consolidation-job.test.ts +123 -135
- package/src/memory/v2/__tests__/edge-index.test.ts +1 -1
- package/src/memory/v2/__tests__/frontmatter-sweep.test.ts +111 -0
- package/src/memory/v2/__tests__/injection.test.ts +628 -10
- package/src/memory/v2/__tests__/migration.test.ts +7 -3
- package/src/memory/v2/__tests__/page-index.test.ts +277 -0
- package/src/memory/v2/__tests__/page-store.test.ts +14 -1
- package/src/memory/v2/__tests__/prompts-router.test.ts +257 -0
- package/src/memory/v2/__tests__/qdrant.test.ts +72 -0
- package/src/memory/v2/__tests__/reranker.test.ts +4 -4
- package/src/memory/v2/__tests__/router.test.ts +516 -0
- package/src/memory/v2/__tests__/sim.test.ts +45 -1
- package/src/memory/v2/__tests__/skill-store.test.ts +58 -3
- package/src/memory/v2/__tests__/static-context.test.ts +7 -22
- package/src/memory/v2/__tests__/sweep-job.test.ts +95 -0
- package/src/memory/v2/activation-store.ts +34 -5
- package/src/memory/v2/activation.ts +40 -27
- package/src/memory/v2/backfill-jobs.ts +17 -84
- package/src/memory/v2/consolidation-job.ts +85 -78
- package/src/memory/v2/frontmatter-sweep.ts +91 -0
- package/src/memory/v2/injection.ts +440 -109
- package/src/memory/v2/migration.ts +117 -20
- package/src/memory/v2/page-index.ts +191 -0
- package/src/memory/v2/page-store.ts +3 -0
- package/src/memory/v2/prompts/consolidation.ts +9 -7
- package/src/memory/v2/prompts/router.ts +192 -0
- package/src/memory/v2/qdrant.ts +100 -87
- package/src/memory/v2/reranker.ts +14 -7
- package/src/memory/v2/router.ts +322 -0
- package/src/memory/v2/sim.ts +25 -12
- package/src/memory/v2/skill-store.ts +118 -29
- package/src/memory/v2/static-context.ts +16 -9
- package/src/memory/v2/sweep-job.ts +122 -96
- package/src/memory/v2/types.ts +10 -6
- package/src/memory/validation.ts +13 -0
- package/src/notifications/__tests__/emit-signal-home-feed.test.ts +182 -0
- package/src/notifications/__tests__/home-feed-side-effect.test.ts +199 -0
- package/src/notifications/__tests__/signal-registry.test.ts +17 -0
- package/src/notifications/adapters/platform.ts +171 -0
- package/src/notifications/conversation-pairing.ts +2 -2
- package/src/notifications/copy-composer.ts +15 -0
- package/src/notifications/destination-resolver.ts +21 -0
- package/src/notifications/emit-signal.ts +28 -1
- package/src/notifications/home-feed-side-effect.ts +111 -0
- package/src/notifications/signal.ts +5 -0
- package/src/permissions/checker.ts +12 -0
- package/src/permissions/ipc-risk-types.ts +2 -0
- package/src/plugin-api/index.ts +13 -0
- package/src/plugin-api/package.json +12 -0
- package/src/plugin-api/types.ts +62 -0
- package/src/plugins/defaults/injectors.ts +19 -3
- package/src/plugins/external-plugin-loader.ts +294 -0
- package/src/plugins/types.ts +46 -30
- package/src/plugins/user-loader.ts +64 -41
- package/src/proactive-artifact/job.test.ts +12 -4
- package/src/proactive-artifact/job.ts +4 -0
- package/src/proactive-artifact/trigger-state.test.ts +9 -0
- package/src/proactive-artifact/trigger-state.ts +4 -0
- package/src/prompts/__tests__/system-prompt.test.ts +105 -0
- package/src/prompts/system-prompt.ts +22 -1
- package/src/prompts/update-bulletin-job.ts +61 -73
- package/src/providers/__tests__/dispatch-connection-routing.test.ts +279 -0
- package/src/providers/__tests__/inference.test.ts +288 -0
- package/src/providers/__tests__/provider-env-vars.test.ts +6 -0
- package/src/providers/__tests__/provider-secret-catalog.test.ts +6 -0
- package/src/providers/__tests__/retry-callsite.test.ts +14 -32
- package/src/providers/__tests__/satellite-connection-routing.test.ts +510 -0
- package/src/providers/__tests__/search-provider-catalog.test.ts +80 -0
- package/src/providers/anthropic/client.ts +95 -26
- package/src/providers/call-site-routing.ts +94 -16
- package/src/providers/connection-resolution.ts +163 -0
- package/src/providers/inference/__tests__/connections-status-label.test.ts +250 -0
- package/src/providers/inference/adapter-factory.ts +173 -0
- package/src/providers/inference/auth.ts +112 -0
- package/src/providers/inference/backfill.ts +196 -0
- package/src/providers/inference/connections.ts +356 -0
- package/src/providers/inference/resolve-auth.ts +65 -0
- package/src/providers/model-catalog.ts +104 -6
- package/src/providers/openai/responses-provider.ts +4 -2
- package/src/providers/provider-env-vars.ts +17 -7
- package/src/providers/provider-secret-catalog.ts +49 -30
- package/src/providers/provider-send-message.ts +41 -20
- package/src/providers/registry.ts +143 -159
- package/src/providers/retry.ts +18 -10
- package/src/providers/search-provider-catalog.ts +121 -0
- package/src/runtime/AGENTS.md +18 -5
- package/src/runtime/__tests__/background-job-runner.test.ts +357 -0
- package/src/runtime/__tests__/pre-first-message-gate.test.ts +82 -0
- package/src/runtime/actor-trust-resolver.ts +32 -10
- package/src/runtime/agent-wake.ts +35 -6
- package/src/runtime/assistant-event-hub.ts +3 -85
- package/src/runtime/auth/route-policy.ts +303 -8
- package/src/runtime/auth/same-actor.ts +2 -0
- package/src/runtime/background-job-runner.ts +339 -0
- package/src/runtime/btw-sidechain.ts +1 -0
- package/src/runtime/http-router.ts +36 -1
- package/src/runtime/http-server.ts +31 -5
- package/src/runtime/http-types.ts +2 -0
- package/src/runtime/middleware/__tests__/request-logger.test.ts +162 -0
- package/src/runtime/middleware/request-logger.ts +62 -1
- package/src/runtime/pre-first-message-gate.ts +83 -0
- package/src/runtime/routes/__tests__/backup-routes.test.ts +8 -1
- package/src/runtime/routes/__tests__/bookmark-routes.test.ts +251 -0
- package/src/runtime/routes/__tests__/connection-routes-vs-cli-parity.test.ts +142 -0
- package/src/runtime/routes/__tests__/conversation-management-routes.test.ts +315 -0
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +189 -0
- package/src/runtime/routes/__tests__/home-feed-routes.test.ts +15 -136
- package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +736 -0
- package/src/runtime/routes/__tests__/memory-v2-routes.test.ts +4 -4
- package/src/runtime/routes/__tests__/stt-routes.test.ts +5 -1
- package/src/runtime/routes/__tests__/surface-action-routes.test.ts +384 -0
- package/src/runtime/routes/__tests__/tts-routes.test.ts +6 -2
- package/src/runtime/routes/acp-routes.ts +10 -8
- package/src/runtime/routes/app-management-routes.ts +228 -3
- package/src/runtime/routes/approval-routes.ts +0 -18
- package/src/runtime/routes/audit-routes.ts +43 -0
- package/src/runtime/routes/auth-routes.ts +72 -0
- package/src/runtime/routes/avatar-routes.ts +273 -20
- package/src/runtime/routes/backup-routes.ts +406 -2
- package/src/runtime/routes/bookmark-routes.ts +154 -0
- package/src/runtime/routes/channel-verification-routes.ts +2 -1
- package/src/runtime/routes/contact-routes.ts +0 -160
- package/src/runtime/routes/conversation-cli-routes.ts +192 -0
- package/src/runtime/routes/conversation-management-routes.ts +30 -43
- package/src/runtime/routes/conversation-query-routes.ts +334 -86
- package/src/runtime/routes/conversation-routes.ts +31 -10
- package/src/runtime/routes/conversations-import-routes.ts +229 -0
- package/src/runtime/routes/credential-routes.ts +540 -0
- package/src/runtime/routes/debug-routes.ts +2 -2
- package/src/runtime/routes/document-pdf-renderer.ts +5 -1
- package/src/runtime/routes/domain-routes.ts +167 -0
- package/src/runtime/routes/email-routes.ts +603 -0
- package/src/runtime/routes/errors.ts +2 -2
- package/src/runtime/routes/events-routes.ts +192 -0
- package/src/runtime/routes/home-feed-routes.ts +6 -78
- package/src/runtime/routes/host-app-control-routes.ts +44 -2
- package/src/runtime/routes/host-browser-routes.ts +103 -22
- package/src/runtime/routes/http-adapter.ts +2 -0
- package/src/runtime/routes/identity-routes.ts +5 -0
- package/src/runtime/routes/image-generation-routes.ts +99 -0
- package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +137 -1
- package/src/runtime/routes/inbound-stages/background-dispatch.ts +87 -7
- package/src/runtime/routes/inbound-stages/guardian-reply-intercept.test.ts +156 -0
- package/src/runtime/routes/inbound-stages/guardian-reply-intercept.ts +22 -4
- package/src/runtime/routes/index.ts +36 -0
- package/src/runtime/routes/inference-profile-session-handler.ts +312 -0
- package/src/runtime/routes/inference-profile-session-reaper.ts +98 -0
- package/src/runtime/routes/inference-profile-session-routes.ts +146 -0
- package/src/runtime/routes/inference-provider-connection-routes.ts +317 -0
- package/src/runtime/routes/inference-send-routes.ts +115 -0
- package/src/runtime/routes/integrations/twilio.ts +1 -0
- package/src/runtime/routes/mcp-auth-routes.ts +283 -9
- package/src/runtime/routes/memory-v2-routes.ts +13 -398
- package/src/runtime/routes/notification-routes.ts +2 -0
- package/src/runtime/routes/oauth-apps.ts +112 -7
- package/src/runtime/routes/oauth-commands-routes.ts +1007 -0
- package/src/runtime/routes/oauth-connect-routes.ts +67 -5
- package/src/runtime/routes/oauth-providers.ts +298 -8
- package/src/runtime/routes/platform-routes.ts +336 -0
- package/src/runtime/routes/playground/inject-failures.ts +2 -1
- package/src/runtime/routes/playground/reset-circuit.ts +2 -1
- package/src/runtime/routes/playground/state.ts +2 -1
- package/src/runtime/routes/publish-routes.ts +221 -0
- package/src/runtime/routes/schedule-routes.ts +82 -0
- package/src/runtime/routes/sequence-routes.ts +291 -0
- package/src/runtime/routes/settings-routes.ts +2 -10
- package/src/runtime/routes/skills-routes.ts +31 -1
- package/src/runtime/routes/stt-routes.ts +240 -3
- package/src/runtime/routes/surface-action-routes.ts +43 -7
- package/src/runtime/routes/tts-routes.ts +67 -0
- package/src/runtime/routes/types.ts +32 -0
- package/src/runtime/routes/user-routes-cli.ts +243 -0
- package/src/runtime/routes/webhook-routes.ts +165 -0
- package/src/runtime/sync/resource-sync-events.ts +25 -0
- package/src/runtime/sync/sync-publisher.test.ts +105 -0
- package/src/runtime/sync/sync-publisher.ts +21 -0
- package/src/schedule/scheduler.ts +200 -123
- package/src/security/__tests__/provider-key-env-fallback.test.ts +12 -6
- package/src/security/secret-patterns.ts +3 -0
- package/src/sequence/engine.ts +38 -40
- package/src/subagent/manager.ts +20 -15
- package/src/tools/browser/__tests__/browser-execution-acquire.test.ts +206 -0
- package/src/tools/browser/browser-execution.ts +15 -4
- package/src/tools/browser/cdp-client/__tests__/factory.test.ts +174 -0
- package/src/tools/browser/cdp-client/cdp-inspect/__tests__/ws-transport.test.ts +16 -13
- package/src/tools/browser/cdp-client/extension-cdp-client.ts +24 -1
- package/src/tools/browser/cdp-client/factory.ts +66 -5
- package/src/tools/browser/runtime-check.ts +77 -0
- package/src/tools/memory/register.test.ts +3 -3
- package/src/tools/memory/register.ts +9 -1
- package/src/tools/network/__tests__/web-search.test.ts +156 -0
- package/src/tools/network/web-search.ts +280 -37
- package/src/tools/permission-checker.ts +13 -5
- package/src/tools/subagent/spawn.ts +3 -3
- package/src/tools/terminal/shell.ts +44 -0
- package/src/usage/attribution.ts +3 -2
- package/src/util/pricing.ts +86 -160
- package/src/watcher/__tests__/engine.test.ts +301 -0
- package/src/watcher/constants.ts +7 -0
- package/src/watcher/engine.ts +90 -90
- package/src/workspace/migrations/046-seed-conversation-starters-callsite.ts +6 -9
- package/src/workspace/migrations/054-seed-recall-callsite.ts +10 -1
- package/src/workspace/migrations/057-repair-stale-gemini-model-ids.ts +28 -4
- package/src/workspace/migrations/069-seed-onboarding-threads.ts +8 -2
- package/src/workspace/migrations/072-seed-reply-suggestion-callsite.ts +104 -0
- package/src/workspace/migrations/073-repair-recall-callsite-empty-profile.ts +93 -0
- package/src/workspace/migrations/074-drop-deprecated-secret-detection-keys.ts +117 -0
- package/src/workspace/migrations/075-memory-v2-bm25-b-default-reembed.ts +61 -0
- package/src/workspace/migrations/076-drop-services-inference-mode.ts +62 -0
- package/src/workspace/migrations/077-seed-memory-router-callsite.ts +89 -0
- package/src/workspace/migrations/078-release-notes-tavily-web-search.ts +66 -0
- package/src/workspace/migrations/079-home-feed-notification-only.ts +197 -0
- package/src/workspace/migrations/080-restrict-vercel-api-token-metadata.ts +182 -0
- package/src/workspace/migrations/081-backfill-bash-allowed-tools-for-injection-credentials.ts +160 -0
- package/src/workspace/migrations/082-backfill-managed-profile-labels.ts +154 -0
- package/src/workspace/migrations/registry.ts +22 -0
- package/src/workspace/migrations/runner.ts +13 -2
- package/src/workspace/migrations/types.ts +13 -3
- package/src/workspace/provider-commit-message-generator.ts +3 -2
- package/src/__tests__/context-search-pkb-source.test.ts +0 -498
- package/src/__tests__/credentials-cli.test.ts +0 -1225
- package/src/__tests__/memory-admin-recall.test.ts +0 -213
- package/src/approvals/__tests__/guardian-feed-event.test.ts +0 -303
- package/src/cli/commands/__tests__/email-download.test.ts +0 -260
- package/src/cli/commands/__tests__/email-list.test.ts +0 -216
- package/src/cli/commands/__tests__/email-register.test.ts +0 -186
- package/src/cli/commands/__tests__/email-send.test.ts +0 -416
- package/src/cli/commands/__tests__/email-status.test.ts +0 -185
- package/src/cli/commands/__tests__/email-unregister.test.ts +0 -168
- package/src/cli/commands/__tests__/routes.test.ts +0 -562
- package/src/cli/commands/__tests__/stt-transcribe.test.ts +0 -454
- package/src/cli/commands/autonomy.ts +0 -365
- package/src/cli/commands/memory.ts +0 -424
- package/src/cli/commands/oauth/__tests__/connect.test.ts +0 -947
- package/src/cli/commands/oauth/__tests__/disconnect.test.ts +0 -686
- package/src/cli/commands/oauth/__tests__/mode.test.ts +0 -632
- package/src/cli/commands/oauth/__tests__/ping.test.ts +0 -631
- package/src/cli/commands/oauth/__tests__/providers-delete.test.ts +0 -573
- package/src/cli/commands/oauth/__tests__/providers-register.test.ts +0 -330
- package/src/cli/commands/oauth/__tests__/providers-update.test.ts +0 -521
- package/src/cli/commands/oauth/__tests__/status.test.ts +0 -551
- package/src/cli/commands/oauth/__tests__/token.test.ts +0 -420
- package/src/cli/lib/daemon-avatar-client.ts +0 -37
- package/src/config/bundled-skills/contacts/tools/contact-upsert.ts +0 -87
- package/src/config/bundled-skills/messaging/tools/__tests__/messaging-feed-events.test.ts +0 -207
- package/src/daemon/__tests__/conversation-feed-event.test.ts +0 -304
- package/src/heartbeat/__tests__/heartbeat-feed-event.test.ts +0 -233
- package/src/home/__tests__/assistant-feed-authoring.test.ts +0 -156
- package/src/home/__tests__/emit-feed-event.test.ts +0 -169
- package/src/home/__tests__/feed-population-integration.test.ts +0 -312
- package/src/home/__tests__/feed-scheduler.test.ts +0 -222
- package/src/home/__tests__/phase5-exit-criteria.test.ts +0 -229
- package/src/home/__tests__/platform-gmail-digest.test.ts +0 -222
- package/src/home/__tests__/rollup-producer.test.ts +0 -507
- package/src/home/assistant-feed-authoring.ts +0 -135
- package/src/home/emit-feed-event.ts +0 -169
- package/src/home/feed-scheduler.ts +0 -281
- package/src/home/platform-gmail-digest.ts +0 -163
- package/src/home/rewrite-command-preview.ts +0 -66
- package/src/home/rewrite-feed-title.ts +0 -58
- package/src/home/rollup-producer.ts +0 -426
- package/src/memory/admin.ts +0 -326
- package/src/memory/context-search/sources/pkb.ts +0 -476
- package/src/memory/graph/compaction.ts +0 -299
- /package/src/cli/{commands → lib}/cache-fs.ts +0 -0
|
@@ -1,8 +1,37 @@
|
|
|
1
|
+
import { MANAGED_PROVIDER_META } from "./managed-proxy/constants.js";
|
|
2
|
+
|
|
1
3
|
export type LongContextMode =
|
|
2
4
|
| "native-model"
|
|
3
5
|
| "provider-request-option"
|
|
4
6
|
| "unsupported";
|
|
5
7
|
|
|
8
|
+
export interface CatalogModelPricingTier {
|
|
9
|
+
/**
|
|
10
|
+
* Threshold in total prompt input tokens above which this tier's rates
|
|
11
|
+
* apply. The largest matched threshold wins when usage exceeds multiple
|
|
12
|
+
* tiers (single-step staircase, not progressive bracketing).
|
|
13
|
+
*/
|
|
14
|
+
inputTokenThreshold: number;
|
|
15
|
+
inputPer1mTokens: number;
|
|
16
|
+
outputPer1mTokens: number;
|
|
17
|
+
cacheReadPer1mTokens?: number;
|
|
18
|
+
cacheWritePer1mTokens?: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface CatalogModelPricing {
|
|
22
|
+
inputPer1mTokens: number;
|
|
23
|
+
outputPer1mTokens: number;
|
|
24
|
+
cacheWritePer1mTokens?: number;
|
|
25
|
+
cacheReadPer1mTokens?: number;
|
|
26
|
+
/**
|
|
27
|
+
* Optional long-context pricing tiers. Selected by total prompt input
|
|
28
|
+
* tokens. When set, the base fields above apply at the low-context tier
|
|
29
|
+
* (below every tier threshold) and tier entries override at higher
|
|
30
|
+
* thresholds.
|
|
31
|
+
*/
|
|
32
|
+
tiers?: CatalogModelPricingTier[];
|
|
33
|
+
}
|
|
34
|
+
|
|
6
35
|
export interface CatalogModel {
|
|
7
36
|
id: string;
|
|
8
37
|
displayName: string;
|
|
@@ -15,12 +44,7 @@ export interface CatalogModel {
|
|
|
15
44
|
supportsCaching?: boolean;
|
|
16
45
|
supportsVision?: boolean;
|
|
17
46
|
supportsToolUse?: boolean;
|
|
18
|
-
pricing?:
|
|
19
|
-
inputPer1mTokens: number;
|
|
20
|
-
outputPer1mTokens: number;
|
|
21
|
-
cacheWritePer1mTokens?: number;
|
|
22
|
-
cacheReadPer1mTokens?: number;
|
|
23
|
-
};
|
|
47
|
+
pricing?: CatalogModelPricing;
|
|
24
48
|
}
|
|
25
49
|
|
|
26
50
|
const DEFAULT_CONTEXT_WINDOW_TOKENS = 200000;
|
|
@@ -64,6 +88,15 @@ export interface ProviderCatalogEntry {
|
|
|
64
88
|
url: string;
|
|
65
89
|
linkLabel: string;
|
|
66
90
|
};
|
|
91
|
+
/**
|
|
92
|
+
* Whether this provider supports the `platform` auth type (Vellum-managed
|
|
93
|
+
* keys routed through the platform proxy). Derived from
|
|
94
|
+
* `MANAGED_PROVIDER_META` at catalog build time so the two stay in lock
|
|
95
|
+
* step. Clients use this field to hide the "Platform (managed by Vellum)"
|
|
96
|
+
* option from the auth-type dropdown for providers like Fireworks or
|
|
97
|
+
* OpenRouter where managed keys are not available.
|
|
98
|
+
*/
|
|
99
|
+
supportsManagedAuth?: boolean;
|
|
67
100
|
}
|
|
68
101
|
|
|
69
102
|
/**
|
|
@@ -201,6 +234,15 @@ const RAW_PROVIDER_CATALOG: ProviderCatalogEntry[] = [
|
|
|
201
234
|
inputPer1mTokens: 5.0,
|
|
202
235
|
outputPer1mTokens: 30.0,
|
|
203
236
|
cacheReadPer1mTokens: 0.5,
|
|
237
|
+
tiers: [
|
|
238
|
+
{
|
|
239
|
+
inputTokenThreshold:
|
|
240
|
+
OPENAI_LONG_CONTEXT_PRICING_THRESHOLD_TOKENS,
|
|
241
|
+
inputPer1mTokens: 10,
|
|
242
|
+
outputPer1mTokens: 45,
|
|
243
|
+
cacheReadPer1mTokens: 1,
|
|
244
|
+
},
|
|
245
|
+
],
|
|
204
246
|
},
|
|
205
247
|
},
|
|
206
248
|
{
|
|
@@ -217,6 +259,14 @@ const RAW_PROVIDER_CATALOG: ProviderCatalogEntry[] = [
|
|
|
217
259
|
pricing: {
|
|
218
260
|
inputPer1mTokens: 30.0,
|
|
219
261
|
outputPer1mTokens: 180.0,
|
|
262
|
+
tiers: [
|
|
263
|
+
{
|
|
264
|
+
inputTokenThreshold:
|
|
265
|
+
OPENAI_LONG_CONTEXT_PRICING_THRESHOLD_TOKENS,
|
|
266
|
+
inputPer1mTokens: 60,
|
|
267
|
+
outputPer1mTokens: 270,
|
|
268
|
+
},
|
|
269
|
+
],
|
|
220
270
|
},
|
|
221
271
|
},
|
|
222
272
|
{
|
|
@@ -234,6 +284,15 @@ const RAW_PROVIDER_CATALOG: ProviderCatalogEntry[] = [
|
|
|
234
284
|
inputPer1mTokens: 2.5,
|
|
235
285
|
outputPer1mTokens: 15.0,
|
|
236
286
|
cacheReadPer1mTokens: 0.25,
|
|
287
|
+
tiers: [
|
|
288
|
+
{
|
|
289
|
+
inputTokenThreshold:
|
|
290
|
+
OPENAI_LONG_CONTEXT_PRICING_THRESHOLD_TOKENS,
|
|
291
|
+
inputPer1mTokens: 5,
|
|
292
|
+
outputPer1mTokens: 22.5,
|
|
293
|
+
cacheReadPer1mTokens: 0.5,
|
|
294
|
+
},
|
|
295
|
+
],
|
|
237
296
|
},
|
|
238
297
|
},
|
|
239
298
|
{
|
|
@@ -315,6 +374,14 @@ const RAW_PROVIDER_CATALOG: ProviderCatalogEntry[] = [
|
|
|
315
374
|
inputPer1mTokens: 2.0,
|
|
316
375
|
outputPer1mTokens: 12.0,
|
|
317
376
|
cacheReadPer1mTokens: 0.2,
|
|
377
|
+
tiers: [
|
|
378
|
+
{
|
|
379
|
+
inputTokenThreshold: 200_000,
|
|
380
|
+
inputPer1mTokens: 4,
|
|
381
|
+
outputPer1mTokens: 18,
|
|
382
|
+
cacheReadPer1mTokens: 0.4,
|
|
383
|
+
},
|
|
384
|
+
],
|
|
318
385
|
},
|
|
319
386
|
},
|
|
320
387
|
{
|
|
@@ -331,6 +398,14 @@ const RAW_PROVIDER_CATALOG: ProviderCatalogEntry[] = [
|
|
|
331
398
|
inputPer1mTokens: 2.0,
|
|
332
399
|
outputPer1mTokens: 12.0,
|
|
333
400
|
cacheReadPer1mTokens: 0.2,
|
|
401
|
+
tiers: [
|
|
402
|
+
{
|
|
403
|
+
inputTokenThreshold: 200_000,
|
|
404
|
+
inputPer1mTokens: 4,
|
|
405
|
+
outputPer1mTokens: 18,
|
|
406
|
+
cacheReadPer1mTokens: 0.4,
|
|
407
|
+
},
|
|
408
|
+
],
|
|
334
409
|
},
|
|
335
410
|
},
|
|
336
411
|
{
|
|
@@ -407,6 +482,14 @@ const RAW_PROVIDER_CATALOG: ProviderCatalogEntry[] = [
|
|
|
407
482
|
inputPer1mTokens: 1.25,
|
|
408
483
|
outputPer1mTokens: 10.0,
|
|
409
484
|
cacheReadPer1mTokens: 0.3125,
|
|
485
|
+
tiers: [
|
|
486
|
+
{
|
|
487
|
+
inputTokenThreshold: 200_000,
|
|
488
|
+
inputPer1mTokens: 2.5,
|
|
489
|
+
outputPer1mTokens: 15,
|
|
490
|
+
cacheReadPer1mTokens: 0.625,
|
|
491
|
+
},
|
|
492
|
+
],
|
|
410
493
|
},
|
|
411
494
|
},
|
|
412
495
|
],
|
|
@@ -761,6 +844,11 @@ export const PROVIDER_CATALOG: ProviderCatalogEntry[] =
|
|
|
761
844
|
RAW_PROVIDER_CATALOG.map((entry) => ({
|
|
762
845
|
...entry,
|
|
763
846
|
models: entry.models.map(catalogModel),
|
|
847
|
+
// Derive supportsManagedAuth from MANAGED_PROVIDER_META so the catalog
|
|
848
|
+
// and the proxy routing table can never drift. Adding a provider to
|
|
849
|
+
// MANAGED_PROVIDER_META with `managed: true` automatically opts it into
|
|
850
|
+
// the Platform auth-type dropdown in the clients.
|
|
851
|
+
supportsManagedAuth: MANAGED_PROVIDER_META[entry.id]?.managed === true,
|
|
764
852
|
}));
|
|
765
853
|
|
|
766
854
|
/** Check if a model ID is in the catalog for a given provider. */
|
|
@@ -768,3 +856,13 @@ export function isModelInCatalog(provider: string, modelId: string): boolean {
|
|
|
768
856
|
const entry = PROVIDER_CATALOG.find((p) => p.id === provider);
|
|
769
857
|
return entry?.models.some((m) => m.id === modelId) ?? false;
|
|
770
858
|
}
|
|
859
|
+
|
|
860
|
+
/** Return the unique catalog provider that owns a model ID, if known. */
|
|
861
|
+
export function getCatalogProviderForModel(
|
|
862
|
+
modelId: string,
|
|
863
|
+
): string | undefined {
|
|
864
|
+
const matches = PROVIDER_CATALOG.filter((p) =>
|
|
865
|
+
p.models.some((m) => m.id === modelId),
|
|
866
|
+
);
|
|
867
|
+
return matches.length === 1 ? matches[0]?.id : undefined;
|
|
868
|
+
}
|
|
@@ -49,9 +49,11 @@ const VALID_VERBOSITIES = new Set<string>(["low", "medium", "high"]);
|
|
|
49
49
|
* Responses API (o-series, etc.) reject unknown wire fields with HTTP 400, so
|
|
50
50
|
* gate forwarding by model name here. The retry layer can't make this call
|
|
51
51
|
* because verbosity defaults to "medium" in the LLM schema, so every
|
|
52
|
-
* callSite-resolved request would otherwise carry it regardless of model.
|
|
52
|
+
* callSite-resolved request would otherwise carry it regardless of model.
|
|
53
|
+
* Also matches OpenAI fine-tune IDs of the form `ft:gpt-5.x:org::id` so users
|
|
54
|
+
* on GPT-5 fine-tunes keep explicit verbosity control. */
|
|
53
55
|
function modelSupportsVerbosity(model: string): boolean {
|
|
54
|
-
return /^gpt-5(\b|[-.])/i.test(model);
|
|
56
|
+
return /^(ft:)?gpt-5(\b|[-.])/i.test(model);
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
/** Loosely-typed Responses stream event to avoid `any` while the SDK types settle. */
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
* 1. LLM providers — names come from `PROVIDER_CATALOG` in
|
|
7
7
|
* `model-catalog.ts`. `getLlmProviderEnvVar` consults the catalog
|
|
8
8
|
* directly.
|
|
9
|
-
* 2. Search providers —
|
|
10
|
-
*
|
|
9
|
+
* 2. Search providers — names come from `SEARCH_PROVIDER_CATALOG` in
|
|
10
|
+
* `search-provider-catalog.ts`. `getSearchProviderEnvVar` consults
|
|
11
|
+
* the catalog directly.
|
|
11
12
|
*
|
|
12
13
|
* Use `getLlmProviderEnvVar` when you're scoped to LLM providers,
|
|
13
14
|
* `getSearchProviderEnvVar` when you're scoped to search providers, and
|
|
@@ -18,12 +19,21 @@
|
|
|
18
19
|
* unknown IDs, and providers outside the helper's scope.
|
|
19
20
|
*/
|
|
20
21
|
import { PROVIDER_CATALOG } from "./model-catalog.js";
|
|
22
|
+
import { SEARCH_PROVIDER_CATALOG } from "./search-provider-catalog.js";
|
|
21
23
|
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Search-provider env var names, derived from `SEARCH_PROVIDER_CATALOG`.
|
|
26
|
+
* Adding a BYOK provider to the catalog automatically extends this map —
|
|
27
|
+
* managed providers (no `envVar`) are filtered out.
|
|
28
|
+
*/
|
|
29
|
+
const SEARCH_PROVIDER_ENV_VAR_NAMES: Record<string, string> = Object.freeze(
|
|
30
|
+
Object.fromEntries(
|
|
31
|
+
SEARCH_PROVIDER_CATALOG.filter((p) => p.envVar !== undefined).map((p) => [
|
|
32
|
+
p.id,
|
|
33
|
+
p.envVar!,
|
|
34
|
+
]),
|
|
35
|
+
),
|
|
36
|
+
);
|
|
27
37
|
|
|
28
38
|
export function getLlmProviderEnvVar(providerId: string): string | undefined {
|
|
29
39
|
return PROVIDER_CATALOG.find((p) => p.id === providerId)?.envVar;
|
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
* Canonical source for API-key-addressable providers.
|
|
3
3
|
*
|
|
4
4
|
* This module composes the full set of providers that store API keys in
|
|
5
|
-
* secure storage (the `api_key` secret type) from
|
|
5
|
+
* secure storage (the `api_key` secret type) from four sources:
|
|
6
6
|
*
|
|
7
|
-
* 1. **LLM
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* 1. **LLM providers** -- derived from `PROVIDER_CATALOG`
|
|
8
|
+
* (`model-catalog.ts`). Adding a provider to the catalog automatically
|
|
9
|
+
* extends the API-key-addressable set.
|
|
10
|
+
* 2. **Search providers** -- derived from `SEARCH_PROVIDER_CATALOG`
|
|
11
|
+
* (`search-provider-catalog.ts`). Adding a BYOK search provider to
|
|
12
|
+
* the catalog automatically extends the API-key-addressable set.
|
|
13
|
+
* 3. **STT providers** -- dynamically derived from the canonical STT
|
|
10
14
|
* provider catalog by reading credential-provider names.
|
|
11
|
-
*
|
|
15
|
+
* 4. **TTS catalog providers** -- dynamically derived from the canonical
|
|
12
16
|
* TTS provider catalog by selecting entries whose secret requirements
|
|
13
17
|
* use the bare-name (non-credential) storage convention.
|
|
14
18
|
*
|
|
@@ -18,30 +22,45 @@
|
|
|
18
22
|
*/
|
|
19
23
|
|
|
20
24
|
import { listCatalogProviders } from "../tts/provider-catalog.js";
|
|
25
|
+
import { PROVIDER_CATALOG } from "./model-catalog.js";
|
|
26
|
+
import { BYOK_SEARCH_PROVIDERS } from "./search-provider-catalog.js";
|
|
21
27
|
import { listCredentialProviderNames as listSttCredentialProviderNames } from "./speech-to-text/provider-catalog.js";
|
|
22
28
|
|
|
23
29
|
// ---------------------------------------------------------------------------
|
|
24
|
-
//
|
|
30
|
+
// LLM and search providers
|
|
25
31
|
// ---------------------------------------------------------------------------
|
|
26
32
|
|
|
27
33
|
/**
|
|
28
|
-
* LLM
|
|
29
|
-
*
|
|
34
|
+
* LLM providers that store API keys under their bare provider name in the
|
|
35
|
+
* secure credential store (e.g. `anthropic`, `openai`).
|
|
30
36
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
37
|
+
* Derived from `PROVIDER_CATALOG` so that adding a new LLM provider to the
|
|
38
|
+
* catalog automatically extends the API-key-addressable provider set.
|
|
39
|
+
* `ollama` is intentionally included here even though it is `setupMode:
|
|
40
|
+
* "keyless"` — the keyless mode is enforced elsewhere; this list is purely
|
|
41
|
+
* about the set of bare-name credential-store keys accepted by
|
|
42
|
+
* `assistant keys ...`.
|
|
43
|
+
*
|
|
44
|
+
* Search providers (`brave`, `perplexity`, `tavily`) have no catalog module
|
|
45
|
+
* yet and remain statically declared below.
|
|
34
46
|
*/
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
]
|
|
47
|
+
const LLM_API_KEY_PROVIDERS: readonly string[] = PROVIDER_CATALOG.map(
|
|
48
|
+
(p) => p.id,
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Search API providers, derived from `SEARCH_PROVIDER_CATALOG`. Managed
|
|
53
|
+
* search providers (e.g. `inference-provider-native`) are filtered out;
|
|
54
|
+
* only BYOK entries with a `secretKey` end up here.
|
|
55
|
+
*/
|
|
56
|
+
const SEARCH_API_KEY_PROVIDERS: readonly string[] = BYOK_SEARCH_PROVIDERS.map(
|
|
57
|
+
(p) => p.secretKey!,
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
const LLM_AND_SEARCH_API_KEY_PROVIDERS: readonly string[] = [
|
|
61
|
+
...LLM_API_KEY_PROVIDERS,
|
|
62
|
+
...SEARCH_API_KEY_PROVIDERS,
|
|
63
|
+
];
|
|
45
64
|
|
|
46
65
|
// ---------------------------------------------------------------------------
|
|
47
66
|
// STT catalog-derived providers
|
|
@@ -110,15 +129,15 @@ function catalogApiKeyNames(): string[] {
|
|
|
110
129
|
* - CLI `keys` command (help text, list iteration)
|
|
111
130
|
* - Provider availability checks
|
|
112
131
|
*
|
|
113
|
-
* Adding a new
|
|
114
|
-
*
|
|
115
|
-
* provider
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
132
|
+
* Adding a new LLM provider to `PROVIDER_CATALOG` (`model-catalog.ts`)
|
|
133
|
+
* automatically includes it here. Adding a new BYOK search provider to
|
|
134
|
+
* `SEARCH_PROVIDER_CATALOG` (`search-provider-catalog.ts`) automatically
|
|
135
|
+
* includes it here. Adding a new TTS provider to the TTS catalog with a
|
|
136
|
+
* bare-name secret requirement automatically includes it here. Adding a
|
|
137
|
+
* new STT provider to the STT catalog automatically includes it here.
|
|
138
|
+
* Shared credential names across domains (e.g. `openai` for both LLM
|
|
139
|
+
* and STT; `deepgram` for both STT and TTS) are deduplicated so the
|
|
140
|
+
* list contains no duplicates.
|
|
122
141
|
*/
|
|
123
142
|
export const API_KEY_PROVIDERS: readonly string[] = (() => {
|
|
124
143
|
const seen = new Set<string>();
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
import { resolveCallSiteConfig } from "../config/llm-resolver.js";
|
|
8
8
|
import { getConfig } from "../config/loader.js";
|
|
9
9
|
import type { LLMCallSite } from "../config/schemas/llm.js";
|
|
10
|
-
import {
|
|
10
|
+
import { getLogger } from "../util/logger.js";
|
|
11
|
+
import { tryResolveProviderForConnectionName } from "./connection-resolution.js";
|
|
12
|
+
import { initializeProviders, listProviders } from "./registry.js";
|
|
11
13
|
import type {
|
|
12
14
|
ContentBlock,
|
|
13
15
|
Message,
|
|
@@ -18,8 +20,7 @@ import type {
|
|
|
18
20
|
ToolUseContent,
|
|
19
21
|
} from "./types.js";
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
// this category do not need to reach into `./types.js` directly.
|
|
23
|
+
const log = getLogger("provider-send-message");
|
|
23
24
|
|
|
24
25
|
export interface ConfiguredProviderResult {
|
|
25
26
|
provider: Provider;
|
|
@@ -107,25 +108,45 @@ export async function resolveConfiguredProvider(
|
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
110
|
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
111
|
+
const resolved = resolveCallSiteConfig(callSite, config.llm, opts);
|
|
112
|
+
const inferenceProvider = resolved.provider;
|
|
113
|
+
const connectionName = resolved.provider_connection;
|
|
114
|
+
|
|
115
|
+
// Connection-aware path: every dispatch goes through `provider_connection`.
|
|
116
|
+
// The boot-time backfill ensures every profile has one in production.
|
|
117
|
+
// When unset (test envs that skip backfill, freshly-installed configs
|
|
118
|
+
// not yet backfilled, or users who manually cleared the field), we
|
|
119
|
+
// return null so callsites with deterministic fallbacks (invite
|
|
120
|
+
// instructions, telegram username resolution, etc.) keep working.
|
|
121
|
+
// Hard config errors — connection lookup failure, provider mismatch —
|
|
122
|
+
// still throw via `tryResolveProviderForConnectionName` below.
|
|
123
|
+
if (!connectionName) {
|
|
124
|
+
log.debug(
|
|
125
|
+
{ callSite, inferenceProvider },
|
|
126
|
+
"resolveCallSiteConfig yielded no provider_connection — returning null so callsite can fall back",
|
|
127
|
+
);
|
|
127
128
|
return null;
|
|
128
129
|
}
|
|
130
|
+
|
|
131
|
+
const connectionProvider = await tryResolveProviderForConnectionName(
|
|
132
|
+
connectionName,
|
|
133
|
+
config,
|
|
134
|
+
inferenceProvider,
|
|
135
|
+
);
|
|
136
|
+
if (!connectionProvider) {
|
|
137
|
+
// Soft credential failure — the connection resolved to no usable
|
|
138
|
+
// adapter (credential missing, transient auth failure, etc.).
|
|
139
|
+
// Callers handle null as "no provider available" rather than crash.
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
provider: new CallSiteConfiguredProvider(
|
|
144
|
+
connectionProvider,
|
|
145
|
+
callSite,
|
|
146
|
+
opts.overrideProfile,
|
|
147
|
+
),
|
|
148
|
+
configuredProviderName: inferenceProvider,
|
|
149
|
+
};
|
|
129
150
|
}
|
|
130
151
|
|
|
131
152
|
/**
|