@vellumai/assistant 0.8.3 → 0.8.5
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/ARCHITECTURE.md +2 -2
- package/docker-entrypoint.sh +0 -1
- package/docs/browser-use-architecture-phase2.md +1 -1
- package/knip.json +2 -1
- package/node_modules/@vellumai/gateway-client/src/types.ts +2 -0
- package/openapi.yaml +1492 -100
- package/package.json +1 -1
- package/src/__tests__/agent-loop-exit-reason.test.ts +4 -5
- package/src/__tests__/agent-loop-override-profile.test.ts +1 -1
- package/src/__tests__/agent-loop.test.ts +88 -3
- package/src/__tests__/anthropic-provider.test.ts +302 -33
- package/src/__tests__/approval-cascade.test.ts +1 -1
- package/src/__tests__/assistant-event-hub-self-exclusion.test.ts +293 -0
- package/src/__tests__/assistant-feature-flags-integration.test.ts +3 -3
- package/src/__tests__/audit-log-rotation.test.ts +70 -16
- package/src/__tests__/background-workers-disk-pressure.test.ts +4 -3
- package/src/__tests__/btw-routes.test.ts +2 -3
- package/src/__tests__/call-controller.test.ts +0 -1
- package/src/__tests__/cancel-resolves-conversation-key.test.ts +1 -1
- package/src/__tests__/channel-delivery-store.test.ts +193 -0
- package/src/__tests__/channel-guardian.test.ts +3 -3
- package/src/__tests__/channel-reply-delivery.test.ts +284 -5
- package/src/__tests__/channel-retry-sweep.test.ts +274 -1
- package/src/__tests__/checker.test.ts +6 -15
- package/src/__tests__/compaction-events.test.ts +2 -1
- package/src/__tests__/compactor-call-site-logging.test.ts +214 -0
- package/src/__tests__/compactor-preserved-tail-count.test.ts +110 -0
- package/src/__tests__/computer-use-skill-manifest-regression.test.ts +5 -11
- package/src/__tests__/computer-use-tools.test.ts +2 -4
- package/src/__tests__/config-watcher.test.ts +1 -1
- package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -1
- package/src/__tests__/context-token-estimator.test.ts +91 -1
- package/src/__tests__/conversation-abort-tool-results.test.ts +1 -1
- package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +1 -1
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +55 -4
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +228 -8
- package/src/__tests__/conversation-agent-loop.test.ts +188 -129
- package/src/__tests__/conversation-app-control-instantiation.test.ts +2 -5
- package/src/__tests__/conversation-app-control-lifecycle.test.ts +1 -1
- package/src/__tests__/conversation-clean-command.test.ts +137 -0
- package/src/__tests__/conversation-clear-safety.test.ts +25 -25
- package/src/__tests__/conversation-confirmation-signals.test.ts +1 -1
- package/src/__tests__/conversation-delete-schedule-cleanup.test.ts +1 -1
- package/src/__tests__/conversation-disk-view-integration.test.ts +2 -2
- package/src/__tests__/conversation-error.test.ts +31 -0
- package/src/__tests__/conversation-fork-crud.test.ts +324 -0
- package/src/__tests__/conversation-lifecycle.test.ts +53 -12
- package/src/__tests__/conversation-load-history-repair.test.ts +1 -1
- package/src/__tests__/conversation-load-history-stripped.test.ts +279 -0
- package/src/__tests__/conversation-pairing.test.ts +2 -2
- package/src/__tests__/conversation-process-callsite.test.ts +1 -1
- package/src/__tests__/conversation-provider-retry-repair.test.ts +2 -1
- package/src/__tests__/conversation-queue.test.ts +1 -1
- package/src/__tests__/conversation-routes-disk-view.test.ts +109 -0
- package/src/__tests__/conversation-routes-slash-commands.test.ts +35 -0
- package/src/__tests__/conversation-runtime-assembly.test.ts +264 -81
- package/src/__tests__/conversation-seed-composer.test.ts +66 -4
- package/src/__tests__/conversation-skill-tools.test.ts +2 -5
- package/src/__tests__/conversation-slash-commands.test.ts +36 -8
- package/src/__tests__/conversation-slash-queue.test.ts +1 -1
- package/src/__tests__/conversation-slash-unknown.test.ts +1 -1
- package/src/__tests__/conversation-speed-override.test.ts +1 -1
- package/src/__tests__/conversation-store.test.ts +1 -1
- package/src/__tests__/conversation-surfaces-task-progress.test.ts +220 -0
- package/src/__tests__/conversation-sync-tags.test.ts +99 -32
- package/src/__tests__/conversation-workspace-cache-state.test.ts +2 -1
- package/src/__tests__/conversation-workspace-injection.test.ts +5 -1
- package/src/__tests__/conversation-workspace-tool-tracking.test.ts +5 -1
- package/src/__tests__/credential-execution-feature-gates.test.ts +9 -7
- package/src/__tests__/credential-execution-tools.test.ts +6 -6
- package/src/__tests__/credential-security-invariants.test.ts +7 -0
- package/src/__tests__/credential-vault-unit.test.ts +2 -2
- package/src/__tests__/cu-unified-flow.test.ts +10 -1
- package/src/__tests__/dm-backfill.test.ts +64 -0
- package/src/__tests__/dm-persistence.test.ts +33 -0
- package/src/__tests__/document-find-replace.test.ts +501 -0
- package/src/__tests__/dynamic-page-surface.test.ts +2 -2
- package/src/__tests__/email-html-renderer.test.ts +12 -0
- package/src/__tests__/first-greeting.test.ts +23 -2
- package/src/__tests__/gateway-flag-listener.test.ts +237 -0
- package/src/__tests__/gemini-provider.test.ts +78 -0
- package/src/__tests__/guardian-dispatch.test.ts +0 -1
- package/src/__tests__/guardian-outbound-http.test.ts +7 -5
- package/src/__tests__/handlers-user-message-approval-consumption.test.ts +1 -1
- package/src/__tests__/headless-browser-navigate.test.ts +172 -0
- package/src/__tests__/heartbeat-disk-pressure.test.ts +4 -0
- package/src/__tests__/heartbeat-service.test.ts +4 -0
- package/src/__tests__/host-bash-proxy.test.ts +6 -0
- package/src/__tests__/host-browser-proxy.test.ts +10 -0
- package/src/__tests__/host-cu-proxy.test.ts +8 -1
- package/src/__tests__/host-file-proxy.test.ts +8 -1
- package/src/__tests__/host-shell-tool.test.ts +1 -1
- package/src/__tests__/host-transfer-proxy.test.ts +8 -1
- package/src/__tests__/identity-routes.test.ts +57 -0
- package/src/__tests__/inbound-slack-persistence.test.ts +3 -0
- package/src/__tests__/init-feature-flag-overrides.test.ts +5 -6
- package/src/__tests__/injector-chain.test.ts +2 -0
- package/src/__tests__/injector-document-comments.test.ts +378 -0
- package/src/__tests__/injector-pkb-v2-silenced.test.ts +4 -25
- package/src/__tests__/list-messages-attachments.test.ts +21 -17
- package/src/__tests__/list-messages-hidden-metadata.test.ts +217 -0
- package/src/__tests__/list-messages-page-latest.test.ts +130 -14
- package/src/__tests__/list-messages-tool-merge.test.ts +77 -17
- package/src/__tests__/llm-context-normalization.test.ts +0 -2
- package/src/__tests__/llm-request-log-call-site.test.ts +136 -0
- package/src/__tests__/llm-request-log-source-clickhouse.test.ts +26 -0
- package/src/__tests__/llm-resolver.test.ts +161 -9
- package/src/__tests__/llm-usage-store.test.ts +66 -0
- package/src/__tests__/log-export-routes.test.ts +99 -2
- package/src/__tests__/logger.test.ts +89 -0
- package/src/__tests__/mcp-abort-signal.test.ts +2 -2
- package/src/__tests__/media-generate-image.test.ts +31 -0
- package/src/__tests__/memory-v2-static-injector.test.ts +7 -7
- package/src/__tests__/message-queue-steer.test.ts +114 -0
- package/src/__tests__/model-intents.test.ts +2 -4
- package/src/__tests__/notification-guardian-path.test.ts +0 -1
- package/src/__tests__/onboarding-template-contract.test.ts +1 -1
- package/src/__tests__/openai-provider.test.ts +151 -0
- package/src/__tests__/openai-responses-provider.test.ts +118 -16
- package/src/__tests__/outbound-slack-persistence.test.ts +187 -20
- package/src/__tests__/pending-interactions-resolved-event.test.ts +189 -0
- package/src/__tests__/platform-bash-auto-approve.test.ts +2 -2
- package/src/__tests__/platform.test.ts +2 -5
- package/src/__tests__/plugin-api-tool-definition.test.ts +92 -0
- package/src/__tests__/plugin-bootstrap.test.ts +2 -2
- package/src/__tests__/plugin-source-watcher.test.ts +302 -0
- package/src/__tests__/plugin-tool-contribution.test.ts +13 -6
- package/src/__tests__/plugin-types.test.ts +3 -2
- package/src/__tests__/prechat-onboarding-contract.test.ts +131 -98
- package/src/__tests__/pricing.test.ts +12 -0
- package/src/__tests__/process-message-background-slack.test.ts +1 -51
- package/src/__tests__/process-message-display-content.test.ts +21 -16
- package/src/__tests__/prune-jobs-changes-parser.test.ts +61 -0
- package/src/__tests__/registry.test.ts +2 -8
- package/src/__tests__/require-fresh-approval.test.ts +2 -2
- package/src/__tests__/runtime-events-sse-bilingual.test.ts +154 -0
- package/src/__tests__/server-history-render.test.ts +83 -4
- package/src/__tests__/shell-tool-proxy-mode.test.ts +1 -1
- package/src/__tests__/skill-feature-flags.test.ts +2 -2
- package/src/__tests__/skill-projection-feature-flag.test.ts +4 -7
- package/src/__tests__/skill-projection.benchmark.test.ts +2 -6
- package/src/__tests__/skill-tool-factory.test.ts +1 -1
- package/src/__tests__/steer-tool-repair.test.ts +249 -0
- package/src/__tests__/subagent-notify-parent.test.ts +1 -1
- package/src/__tests__/suggestion-routes.test.ts +1 -0
- package/src/__tests__/sync-message-contract.test.ts +59 -0
- package/src/__tests__/system-prompt.test.ts +161 -124
- package/src/__tests__/terminal-tools.test.ts +12 -2
- package/src/__tests__/thinking-block-replay.test.ts +113 -0
- package/src/__tests__/thread-backfill.test.ts +370 -22
- package/src/__tests__/tool-approval-handler.test.ts +1 -5
- package/src/__tests__/tool-execute-pipeline.test.ts +2 -2
- package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +2 -5
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +15 -5
- package/src/__tests__/tool-executor.test.ts +89 -53
- package/src/__tests__/tool-grant-request-escalation.test.ts +1 -6
- package/src/__tests__/tool-result-metadata-plumbing.test.ts +167 -0
- package/src/__tests__/trusted-contact-approval-notifier.test.ts +0 -1
- package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +1 -6
- package/src/__tests__/trusted-contact-multichannel.test.ts +0 -1
- package/src/__tests__/twilio-routes.test.ts +1 -1
- package/src/__tests__/ui-file-upload-surface.test.ts +2 -2
- package/src/__tests__/usage-routes.test.ts +3 -0
- package/src/__tests__/verification-control-plane-policy.test.ts +2 -2
- package/src/__tests__/web-fetch.test.ts +2 -2
- package/src/__tests__/workspace-git-service.test.ts +94 -10
- package/src/__tests__/workspace-migration-088-deprecate-background-conversation-override.test.ts +158 -0
- package/src/__tests__/workspace-migration-089-move-memory-tree-out-of-v3.test.ts +86 -0
- package/src/acp/__tests__/prepare-agent-env.test.ts +146 -0
- package/src/acp/prepare-agent-env.ts +78 -0
- package/src/acp/session-manager.ts +1 -1
- package/src/agent/attachments.ts +1 -0
- package/src/agent/loop.ts +65 -20
- package/src/api/README.md +5 -0
- package/src/api/index.ts +4 -0
- package/src/api/package.json +10 -0
- package/src/background-wake/background-wake-routes.test.ts +233 -0
- package/src/background-wake/next-wake.test.ts +289 -0
- package/src/background-wake/next-wake.ts +172 -0
- package/src/background-wake/runtime-registry.ts +24 -0
- package/src/browser/operations.ts +15 -0
- package/src/cli/commands/__tests__/browser.test.ts +23 -5
- package/src/cli/commands/__tests__/conversations-slack.test.ts +572 -0
- package/src/cli/commands/__tests__/domain-register.test.ts +110 -0
- package/src/cli/commands/__tests__/domain-status.test.ts +33 -33
- package/src/cli/commands/__tests__/inference-send.test.ts +108 -5
- package/src/cli/commands/__tests__/memory-v2-compare-render.test.ts +98 -0
- package/src/cli/commands/__tests__/memory-v2.test.ts +10 -12
- package/src/cli/commands/__tests__/memory-v3-render.test.ts +340 -0
- package/src/cli/commands/browser.ts +247 -0
- package/src/cli/commands/conversations.ts +128 -1
- package/src/cli/commands/domain.ts +91 -41
- package/src/cli/commands/inference-providers.ts +147 -1
- package/src/cli/commands/inference.ts +93 -40
- package/src/cli/commands/memory-v2-compare-render.ts +115 -0
- package/src/cli/commands/memory-v2.ts +483 -0
- package/src/cli/commands/memory-v3-render.ts +344 -0
- package/src/cli/commands/memory-v3.ts +316 -0
- package/src/cli/commands/notifications.ts +24 -2
- package/src/cli/program.ts +2 -0
- package/src/cli/utils/conversation-id.ts +17 -5
- package/src/config/assistant-feature-flags.ts +21 -9
- package/src/config/bundled-skills/app-builder/SKILL.md +2 -2
- package/src/config/bundled-skills/document-editor/SKILL.md +124 -0
- package/src/config/bundled-skills/document-editor/TOOLS.json +258 -0
- package/src/config/bundled-skills/document-editor/tools/comment-list.ts +12 -0
- package/src/config/bundled-skills/document-editor/tools/comment-reply.ts +12 -0
- package/src/config/bundled-skills/document-editor/tools/comment-resolve.ts +12 -0
- package/src/config/bundled-skills/document-editor/tools/document-find.ts +12 -0
- package/src/config/bundled-skills/document-editor/tools/document-open.ts +12 -0
- package/src/config/bundled-skills/document-editor/tools/document-replace-text.ts +12 -0
- package/src/config/bundled-skills/image-studio/SKILL.md +4 -0
- package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +2 -2
- package/src/config/bundled-skills/media-processing/SKILL.md +8 -0
- package/src/config/bundled-skills/media-processing/tools/ingest-media.ts +13 -8
- package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +10 -3
- package/src/config/bundled-skills/phone-calls/references/TRANSCRIPTS.md +16 -14
- package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +7 -2
- package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +7 -2
- package/src/config/bundled-skills/schedule/SKILL.md +8 -0
- package/src/config/bundled-tool-registry.ts +24 -12
- package/src/config/call-site-defaults.ts +20 -0
- package/src/config/feature-flag-registry.json +115 -3
- package/src/config/llm-resolver.ts +16 -2
- package/src/config/schemas/__tests__/memory-v2.test.ts +217 -1
- package/src/config/schemas/call-site-catalog.ts +35 -0
- package/src/config/schemas/llm.ts +14 -0
- package/src/config/schemas/memory-v2.ts +294 -1
- package/src/config/schemas/memory.ts +2 -1
- package/src/context/compactor.ts +60 -1
- package/src/context/token-estimator.ts +47 -4
- package/src/context/window-manager.ts +25 -0
- package/src/conversations/__tests__/message-consolidation.test.ts +350 -0
- package/src/conversations/message-consolidation.ts +404 -0
- package/src/credential-health/credential-health-service.ts +34 -19
- package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +1 -1
- package/src/daemon/__tests__/conversation-tool-setup.test.ts +66 -6
- package/src/daemon/__tests__/meet-manifest-loader.test.ts +1 -1
- package/src/daemon/__tests__/native-web-search-metadata.test.ts +357 -0
- package/src/daemon/__tests__/web-search-status-text.test.ts +287 -0
- package/src/daemon/conversation-agent-loop-handlers.ts +155 -36
- package/src/daemon/conversation-agent-loop.ts +307 -88
- package/src/daemon/conversation-error.ts +31 -1
- package/src/daemon/conversation-lifecycle.ts +149 -118
- package/src/daemon/conversation-messaging.ts +3 -0
- package/src/daemon/conversation-process.ts +273 -0
- package/src/daemon/conversation-queue-manager.ts +14 -0
- package/src/daemon/conversation-runtime-assembly.ts +145 -84
- package/src/daemon/conversation-slash.ts +37 -5
- package/src/daemon/conversation-surfaces.ts +45 -2
- package/src/daemon/conversation-tool-setup.ts +70 -3
- package/src/daemon/conversation-usage.ts +2 -0
- package/src/daemon/conversation.ts +54 -32
- package/src/daemon/disk-pressure-guard.ts +14 -2
- package/src/daemon/first-greeting.ts +10 -0
- package/src/daemon/handlers/__tests__/config-a2a-accept.test.ts +498 -0
- package/src/daemon/handlers/config-a2a.ts +160 -0
- package/src/daemon/handlers/config-model.test.ts +2 -0
- package/src/daemon/handlers/conversations.ts +90 -3
- package/src/daemon/handlers/shared.ts +92 -29
- package/src/daemon/host-bash-proxy.ts +1 -1
- package/src/daemon/host-browser-proxy.ts +5 -5
- package/src/daemon/host-cu-proxy.ts +5 -5
- package/src/daemon/host-file-proxy.ts +5 -5
- package/src/daemon/host-proxy-base.ts +4 -4
- package/src/daemon/host-transfer-proxy.ts +11 -11
- package/src/daemon/lifecycle.ts +40 -23
- package/src/daemon/meet-manifest-loader.ts +1 -7
- package/src/daemon/message-protocol.ts +4 -0
- package/src/daemon/message-types/conversations.ts +14 -9
- package/src/daemon/message-types/document-comments.ts +50 -0
- package/src/daemon/message-types/home.ts +1 -13
- package/src/daemon/message-types/messages.ts +66 -7
- package/src/daemon/message-types/surfaces.ts +3 -1
- package/src/daemon/message-types/sync.ts +14 -0
- package/src/daemon/message-types/web-activity.ts +57 -0
- package/src/daemon/plugin-source-watcher.ts +135 -3
- package/src/daemon/process-message.ts +69 -12
- package/src/daemon/shutdown-handlers.ts +24 -5
- package/src/daemon/switch-inference-profile-tool.ts +52 -0
- package/src/daemon/tool-setup-types.ts +13 -0
- package/src/daemon/trust-context.ts +6 -0
- package/src/documents/document-comments-store.test.ts +338 -0
- package/src/documents/document-comments-store.ts +237 -0
- package/src/documents/document-store.ts +202 -0
- package/src/events/relationship-state-updated.ts +25 -0
- package/src/heartbeat/__tests__/heartbeat-service.test.ts +1 -2
- package/src/heartbeat/heartbeat-service.ts +1 -0
- package/src/home/__tests__/suggested-prompts.test.ts +33 -2
- package/src/home/feed-types.ts +6 -1
- package/src/home/home-content-refresh.ts +52 -0
- package/src/home/home-greeting-cache.ts +69 -0
- package/src/home/home-greeting.ts +85 -0
- package/src/home/suggested-prompts.ts +168 -9
- package/src/ipc/gateway-flag-listener.ts +123 -0
- package/src/ipc/skill-routes/registries.ts +8 -12
- package/src/memory/__tests__/db-async-query.test.ts +165 -0
- package/src/memory/__tests__/db-maintenance.test.ts +115 -0
- package/src/memory/__tests__/jobs-store-enqueue-gate.test.ts +241 -0
- package/src/memory/__tests__/jobs-store-job-classes.test.ts +28 -1
- package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +135 -2
- package/src/memory/__tests__/memory-retrospective-job.test.ts +327 -6
- package/src/memory/auto-analysis-enqueue.ts +5 -1
- package/src/memory/conversation-crud.ts +191 -100
- package/src/memory/conversation-starters-cadence.ts +3 -1
- package/src/memory/conversation-title-service.ts +19 -3
- package/src/memory/db-async-query.ts +214 -0
- package/src/memory/db-init.ts +26 -0
- package/src/memory/db-maintenance.ts +30 -21
- package/src/memory/delivery-crud.ts +41 -0
- package/src/memory/delivery-status.ts +141 -15
- package/src/memory/external-conversation-store.ts +32 -1
- package/src/memory/graph/bootstrap.ts +8 -1
- package/src/memory/graph/capability-seed.ts +7 -3
- package/src/memory/graph/conversation-graph-memory.ts +100 -17
- package/src/memory/graph/extraction.ts +1 -5
- package/src/memory/graph/graph-search.ts +7 -1
- package/src/memory/indexer.ts +28 -18
- package/src/memory/job-handlers/cleanup.ts +76 -18
- package/src/memory/job-handlers/conversation-starters.ts +1 -4
- package/src/memory/jobs/embed-pkb-file.ts +6 -1
- package/src/memory/jobs-store.ts +14 -0
- package/src/memory/jobs-worker.ts +68 -15
- package/src/memory/llm-request-log-source-clickhouse.ts +42 -2
- package/src/memory/llm-request-log-source-local.ts +7 -0
- package/src/memory/llm-request-log-source.ts +9 -2
- package/src/memory/llm-request-log-store.ts +43 -1
- package/src/memory/llm-usage-store.ts +24 -0
- package/src/memory/memory-retrospective-constants.ts +28 -0
- package/src/memory/memory-retrospective-enqueue.ts +11 -3
- package/src/memory/memory-retrospective-job.ts +413 -18
- package/src/memory/memory-retrospective-startup-cleanup.ts +3 -3
- package/src/memory/memory-v2-activation-log-store.ts +41 -14
- package/src/memory/migrations/100-core-tables.ts +1 -0
- package/src/memory/migrations/109-external-conversation-bindings.ts +1 -0
- package/src/memory/migrations/253-conversation-last-notified-profile.ts +15 -0
- package/src/memory/migrations/253-document-comments.ts +47 -0
- package/src/memory/migrations/254-external-conversation-binding-chat-name.ts +43 -0
- package/src/memory/migrations/255-channel-inbound-delivery-attempts.ts +24 -0
- package/src/memory/migrations/256-memory-v2-injection-events.ts +113 -0
- package/src/memory/migrations/257-strip-base-url-non-openai-compatible.ts +22 -0
- package/src/memory/migrations/258-onboarding-events-prior-assistants.ts +13 -0
- package/src/memory/migrations/259-conversation-cleaned-at.ts +33 -0
- package/src/memory/migrations/260-rename-cleaned-at.ts +44 -0
- package/src/memory/migrations/261-llm-usage-add-raw-usage.ts +36 -0
- package/src/memory/migrations/262-memory-v3-coactivation.ts +57 -0
- package/src/memory/migrations/263-memory-v3-auto-edges.ts +50 -0
- package/src/memory/migrations/264-llm-request-log-call-site.ts +29 -0
- package/src/memory/migrations/index.ts +34 -0
- package/src/memory/migrations/registry.ts +58 -0
- package/src/memory/onboarding-events-store.ts +7 -0
- package/src/memory/schema/calls.ts +1 -0
- package/src/memory/schema/conversations.ts +3 -0
- package/src/memory/schema/infrastructure.ts +22 -0
- package/src/memory/tool-usage-store.ts +36 -8
- package/src/memory/v2/__tests__/consolidation-job.test.ts +1 -0
- package/src/memory/v2/__tests__/harness-compare.test.ts +186 -0
- package/src/memory/v2/__tests__/harness-metrics.test.ts +74 -0
- package/src/memory/v2/__tests__/harness-oracle.test.ts +257 -0
- package/src/memory/v2/__tests__/harness-replay-input.test.ts +225 -0
- package/src/memory/v2/__tests__/harness-runner.test.ts +109 -0
- package/src/memory/v2/__tests__/injection-events.test.ts +318 -0
- package/src/memory/v2/__tests__/injection.test.ts +158 -112
- package/src/memory/v2/__tests__/page-index.test.ts +365 -1
- package/src/memory/v2/__tests__/qdrant.test.ts +36 -0
- package/src/memory/v2/__tests__/router.test.ts +660 -4
- package/src/memory/v2/consolidation-job.ts +14 -0
- package/src/memory/v2/harness/compare.ts +57 -0
- package/src/memory/v2/harness/metrics.ts +124 -0
- package/src/memory/v2/harness/oracle.ts +145 -0
- package/src/memory/v2/harness/replay-input.ts +224 -0
- package/src/memory/v2/harness/retriever.ts +74 -0
- package/src/memory/v2/harness/router-retriever.ts +43 -0
- package/src/memory/v2/harness/runner.ts +106 -0
- package/src/memory/v2/harness/trace.ts +58 -0
- package/src/memory/v2/injection-events.ts +101 -0
- package/src/memory/v2/injection.ts +42 -25
- package/src/memory/v2/page-index.ts +209 -7
- package/src/memory/v2/page-store.ts +18 -0
- package/src/memory/v2/prompts/router.ts +26 -1
- package/src/memory/v2/qdrant.ts +14 -2
- package/src/memory/v2/router.ts +369 -62
- package/src/memory/v3/__tests__/coactivation-store.test.ts +422 -0
- package/src/memory/v3/__tests__/consolidation-job.test.ts +468 -0
- package/src/memory/v3/__tests__/edge-learning-job.test.ts +324 -0
- package/src/memory/v3/__tests__/edges.test.ts +563 -0
- package/src/memory/v3/__tests__/filter.test.ts +512 -0
- package/src/memory/v3/__tests__/gate.test.ts +574 -0
- package/src/memory/v3/__tests__/index-composition.test.ts +233 -0
- package/src/memory/v3/__tests__/loop.test.ts +530 -0
- package/src/memory/v3/__tests__/retriever.test.ts +226 -0
- package/src/memory/v3/__tests__/scouts.test.ts +440 -0
- package/src/memory/v3/__tests__/shadow-middleware.test.ts +312 -0
- package/src/memory/v3/__tests__/system-prompts.test.ts +154 -0
- package/src/memory/v3/__tests__/traversal.test.ts +469 -0
- package/src/memory/v3/__tests__/tree-index.test.ts +280 -0
- package/src/memory/v3/__tests__/tree-store.test.ts +529 -0
- package/src/memory/v3/__tests__/tree-walk.test.ts +707 -0
- package/src/memory/v3/__tests__/validate.test.ts +245 -0
- package/src/memory/v3/auto-edges.ts +223 -0
- package/src/memory/v3/coactivation-store.ts +124 -0
- package/src/memory/v3/consolidation-job.ts +323 -0
- package/src/memory/v3/edge-learning-job.ts +160 -0
- package/src/memory/v3/edges.ts +249 -0
- package/src/memory/v3/filter.ts +281 -0
- package/src/memory/v3/gate.ts +334 -0
- package/src/memory/v3/index-composition.ts +113 -0
- package/src/memory/v3/llm-capture.ts +46 -0
- package/src/memory/v3/loop.ts +382 -0
- package/src/memory/v3/maintenance.ts +144 -0
- package/src/memory/v3/prompt-context.ts +33 -0
- package/src/memory/v3/prompts/consolidation.ts +458 -0
- package/src/memory/v3/prompts/system-prompts.ts +196 -0
- package/src/memory/v3/retriever.ts +33 -0
- package/src/memory/v3/scouts.ts +420 -0
- package/src/memory/v3/shadow-middleware.ts +305 -0
- package/src/memory/v3/traversal.ts +206 -0
- package/src/memory/v3/tree-index.ts +237 -0
- package/src/memory/v3/tree-store.ts +394 -0
- package/src/memory/v3/tree-walk.ts +351 -0
- package/src/memory/v3/types.ts +65 -0
- package/src/memory/v3/validate.ts +300 -0
- package/src/messaging/providers/index.ts +7 -1
- package/src/messaging/providers/slack/__tests__/adapter-mention-rendering.test.ts +329 -3
- package/src/messaging/providers/slack/__tests__/adapter-token-routing.test.ts +34 -1
- package/src/messaging/providers/slack/adapter.ts +178 -25
- package/src/messaging/providers/slack/api.test.ts +54 -0
- package/src/messaging/providers/slack/api.ts +119 -3
- package/src/messaging/providers/slack/client.ts +12 -0
- package/src/messaging/providers/slack/deep-link.ts +20 -1
- package/src/messaging/providers/slack/message-metadata.test.ts +48 -0
- package/src/messaging/providers/slack/message-metadata.ts +156 -0
- package/src/messaging/providers/slack/render-transcript.test.ts +107 -75
- package/src/messaging/providers/slack/render-transcript.ts +176 -49
- package/src/messaging/providers/slack/send.test.ts +77 -0
- package/src/messaging/providers/slack/send.ts +8 -2
- package/src/messaging/providers/slack/types.ts +14 -0
- package/src/notifications/__tests__/emit-signal-home-feed.test.ts +4 -1
- package/src/notifications/__tests__/home-feed-side-effect.test.ts +116 -54
- package/src/notifications/adapters/macos.ts +18 -1
- package/src/notifications/adapters/platform.ts +1 -1
- package/src/notifications/conversation-seed-composer.ts +14 -2
- package/src/notifications/decision-engine.ts +1 -4
- package/src/notifications/deferred-emit.ts +135 -0
- package/src/notifications/emit-signal.ts +38 -50
- package/src/notifications/home-feed-side-effect.ts +60 -30
- package/src/oauth/connect-orchestrator.ts +3 -0
- package/src/oauth/credential-token-resolver.ts +2 -0
- package/src/oauth/manual-token-connection.ts +19 -0
- package/src/oauth/oauth-store.ts +12 -0
- package/src/oauth/seed-providers.ts +22 -0
- package/src/permissions/prompter.ts +8 -5
- package/src/permissions/question-prompter.ts +5 -2
- package/src/permissions/secret-prompter.ts +6 -3
- package/src/plugin-api/index.ts +4 -0
- package/src/plugin-api/types.ts +7 -33
- package/src/plugins/defaults/index.ts +6 -0
- package/src/plugins/defaults/injectors.ts +100 -20
- package/src/plugins/external-plugin-loader.ts +5 -68
- package/src/plugins/types.ts +11 -16
- package/src/proactive-artifact/aux-message-injector.ts +17 -4
- package/src/prompts/__tests__/system-prompt.test.ts +46 -2
- package/src/prompts/__tests__/task-progress-hint-section.test.ts +3 -9
- package/src/prompts/normalize-onboarding.ts +40 -0
- package/src/prompts/persona-resolver.ts +36 -21
- package/src/prompts/sections.ts +69 -19
- package/src/prompts/system-prompt.ts +118 -216
- package/src/prompts/template-detection.ts +37 -0
- package/src/prompts/templates/BOOTSTRAP-CONTENT-AUTOMATION.md +141 -0
- package/src/prompts/templates/BOOTSTRAP.md +10 -2
- package/src/prompts/templates/VOICE.md +3 -0
- package/src/prompts/templates/system-sections.ts +281 -9
- package/src/providers/__tests__/connection-model-compat.test.ts +234 -0
- package/src/providers/__tests__/retry-callsite.test.ts +85 -5
- package/src/providers/anthropic/client.ts +159 -66
- package/src/providers/call-site-routing.ts +14 -2
- package/src/providers/connection-model-compat.ts +38 -0
- package/src/providers/connection-resolution.ts +16 -2
- package/src/providers/fireworks/client.ts +20 -2
- package/src/providers/gemini/client.ts +49 -6
- package/src/providers/inference/__tests__/base-url-route-validation.test.ts +342 -0
- package/src/providers/inference/__tests__/base-url-security.test.ts +189 -0
- package/src/providers/inference/__tests__/codex-token-refresh.test.ts +254 -0
- package/src/providers/inference/adapter-factory.ts +18 -1
- package/src/providers/inference/auth.ts +3 -3
- package/src/providers/inference/codex-token-refresh.ts +128 -0
- package/src/providers/inference/resolve-auth.ts +49 -6
- package/src/providers/minimax/client.ts +106 -0
- package/src/providers/model-catalog.ts +91 -1
- package/src/providers/model-intents.ts +1 -1
- package/src/providers/openai/chat-completions-provider.ts +63 -23
- package/src/providers/openai/codex-models.ts +18 -0
- package/src/providers/openai/responses-provider.ts +86 -23
- package/src/providers/openrouter/client.ts +5 -1
- package/src/providers/provider-send-message.ts +7 -1
- package/src/providers/retry.ts +34 -3
- package/src/providers/thinking-config.ts +26 -1
- package/src/providers/types.ts +25 -0
- package/src/providers/usage-tracking.ts +2 -0
- package/src/runtime/AGENTS.md +2 -2
- package/src/runtime/__tests__/agent-wake.test.ts +214 -0
- package/src/runtime/__tests__/background-job-runner.test.ts +128 -0
- package/src/runtime/agent-wake.ts +152 -56
- package/src/runtime/assistant-event-hub.ts +76 -6
- package/src/runtime/auth/route-policy.ts +43 -3
- package/src/runtime/background-job-runner.ts +26 -0
- package/src/runtime/btw-sidechain.ts +0 -6
- package/src/runtime/channel-reply-delivery.ts +182 -47
- package/src/runtime/channel-retry-sweep.ts +141 -16
- package/src/runtime/http-types.ts +7 -6
- package/src/runtime/migrations/vbundle-builder.ts +10 -3
- package/src/runtime/pending-interactions.ts +50 -8
- package/src/runtime/routes/__tests__/content-source-routes.test.ts +162 -0
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +161 -1
- package/src/runtime/routes/__tests__/memory-v2-routes.test.ts +14 -0
- package/src/runtime/routes/__tests__/memory-v2-simulate-route.test.ts +290 -0
- package/src/runtime/routes/__tests__/plugins-routes.test.ts +512 -0
- package/src/runtime/routes/__tests__/sanity-routes.test.ts +280 -0
- package/src/runtime/routes/__tests__/slack-channel-routes.test.ts +266 -0
- package/src/runtime/routes/acp-routes.test.ts +255 -6
- package/src/runtime/routes/acp-routes.ts +8 -1
- package/src/runtime/routes/approval-routes.ts +4 -1
- package/src/runtime/routes/avatar-routes.ts +10 -10
- package/src/runtime/routes/background-wake-routes.ts +188 -0
- package/src/runtime/routes/browser-tabs-routes.ts +200 -0
- package/src/runtime/routes/btw-routes.ts +0 -6
- package/src/runtime/routes/chatgpt-subscription-auth-routes.ts +246 -0
- package/src/runtime/routes/content-source-routes.ts +78 -0
- package/src/runtime/routes/conversation-cli-routes.ts +147 -2
- package/src/runtime/routes/conversation-list-routes.ts +12 -4
- package/src/runtime/routes/conversation-management-routes.ts +77 -20
- package/src/runtime/routes/conversation-query-routes.ts +196 -31
- package/src/runtime/routes/conversation-routes.ts +472 -425
- package/src/runtime/routes/conversation-starter-routes.ts +6 -3
- package/src/runtime/routes/disk-pressure-routes.ts +1 -1
- package/src/runtime/routes/document-comments-routes.ts +287 -0
- package/src/runtime/routes/documents-routes.ts +33 -0
- package/src/runtime/routes/domain-routes.ts +60 -10
- package/src/runtime/routes/email-routes.ts +5 -2
- package/src/runtime/routes/events-routes.ts +54 -10
- package/src/runtime/routes/group-routes.ts +24 -8
- package/src/runtime/routes/home-feed-routes.ts +6 -3
- package/src/runtime/routes/host-app-control-routes.ts +1 -1
- package/src/runtime/routes/host-browser-routes.ts +17 -2
- package/src/runtime/routes/host-cu-routes.ts +2 -2
- package/src/runtime/routes/identity-routes.ts +21 -0
- package/src/runtime/routes/inbound-message-handler.ts +288 -58
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +96 -3
- package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +365 -6
- package/src/runtime/routes/inbound-stages/background-dispatch.ts +283 -82
- package/src/runtime/routes/index.ts +20 -4
- package/src/runtime/routes/inference-profile-session-handler.ts +22 -12
- package/src/runtime/routes/inference-profile-session-routes.ts +7 -1
- package/src/runtime/routes/inference-provider-connection-routes.ts +63 -7
- package/src/runtime/routes/integrations/a2a.ts +60 -1
- package/src/runtime/routes/llm-call-sites-routes.ts +32 -5
- package/src/runtime/routes/log-export-routes.ts +39 -0
- package/src/runtime/routes/memory-item-routes.ts +8 -3
- package/src/runtime/routes/memory-v2-routes.ts +427 -0
- package/src/runtime/routes/memory-v3-routes.ts +316 -0
- package/src/runtime/routes/migration-routes.ts +21 -24
- package/src/runtime/routes/notification-routes.ts +19 -2
- package/src/runtime/routes/plugins-routes.ts +337 -0
- package/src/runtime/routes/question-routes.ts +4 -1
- package/src/runtime/routes/rename-conversation-routes.ts +6 -2
- package/src/runtime/routes/sanity-routes.ts +159 -0
- package/src/runtime/routes/secret-routes.ts +25 -5
- package/src/runtime/routes/settings-routes.ts +12 -11
- package/src/runtime/routes/slack-channel-routes.ts +188 -0
- package/src/runtime/routes/workspace-routes.ts +25 -10
- package/src/runtime/services/conversation-serializer.ts +30 -4
- package/src/runtime/sync/resource-sync-events.ts +106 -38
- package/src/runtime/sync/sync-publisher.test.ts +49 -0
- package/src/runtime/sync/sync-publisher.ts +2 -1
- package/src/runtime/verification-outbound-actions.ts +73 -1
- package/src/schedule/integration-status.ts +3 -1
- package/src/security/__tests__/oauth2-device-code.test.ts +479 -0
- package/src/security/oauth2-device-code.ts +307 -0
- package/src/security/oauth2.ts +26 -9
- package/src/security/secure-keys.ts +5 -0
- package/src/skills/catalog-install.ts +6 -2
- package/src/telemetry/types.ts +12 -0
- package/src/telemetry/usage-telemetry-reporter.test.ts +48 -0
- package/src/telemetry/usage-telemetry-reporter.ts +1 -0
- package/src/tools/acp/spawn.test.ts +119 -0
- package/src/tools/acp/spawn.ts +15 -2
- package/src/tools/apps/definitions.ts +2 -8
- package/src/tools/ask-question/ask-question-tool.test.ts +3 -3
- package/src/tools/ask-question/ask-question-tool.ts +38 -45
- package/src/tools/browser/__tests__/pinned-tabs.test.ts +150 -0
- package/src/tools/browser/browser-execution.ts +106 -0
- package/src/tools/browser/cdp-client/__tests__/browser-tabs-factory.test.ts +402 -0
- package/src/tools/browser/cdp-client/__tests__/factory.test.ts +28 -0
- package/src/tools/browser/cdp-client/__tests__/types.test.ts +4 -0
- package/src/tools/browser/cdp-client/cdp-inspect-client.ts +22 -0
- package/src/tools/browser/cdp-client/extension-cdp-client.ts +42 -2
- package/src/tools/browser/cdp-client/factory.ts +171 -4
- package/src/tools/browser/cdp-client/local-cdp-client.ts +21 -0
- package/src/tools/browser/cdp-client/types.ts +101 -0
- package/src/tools/browser/pinned-tabs.ts +146 -0
- package/src/tools/computer-use/definitions.ts +22 -78
- package/src/tools/credential-execution/make-authenticated-request.ts +3 -9
- package/src/tools/credential-execution/manage-secure-command-tool.ts +3 -9
- package/src/tools/credential-execution/run-authenticated-command.ts +3 -9
- package/src/tools/credentials/vault.ts +3 -9
- package/src/tools/document/document-comment-tool.test.ts +379 -0
- package/src/tools/document/document-comment-tool.ts +156 -0
- package/src/tools/document/document-tool.ts +187 -2
- package/src/tools/execution-target.ts +21 -23
- package/src/tools/executor.ts +6 -1
- package/src/tools/filesystem/edit.ts +3 -9
- package/src/tools/filesystem/list.ts +3 -9
- package/src/tools/filesystem/read.ts +3 -9
- package/src/tools/filesystem/write.ts +3 -9
- package/src/tools/host-filesystem/edit.ts +3 -9
- package/src/tools/host-filesystem/read.ts +3 -9
- package/src/tools/host-filesystem/transfer.ts +3 -9
- package/src/tools/host-filesystem/write.ts +3 -9
- package/src/tools/host-terminal/host-shell.ts +3 -9
- package/src/tools/mcp/mcp-tool-factory.ts +1 -8
- package/src/tools/memory/register.test.ts +1 -1
- package/src/tools/memory/register.ts +4 -9
- package/src/tools/network/__tests__/web-fetch-metadata.test.ts +229 -0
- package/src/tools/network/__tests__/web-search-metadata.test.ts +346 -0
- package/src/tools/network/domain-normalize.ts +17 -0
- package/src/tools/network/web-fetch.ts +216 -73
- package/src/tools/network/web-search.ts +216 -98
- package/src/tools/registry.ts +7 -23
- package/src/tools/schema-transforms.ts +1 -1
- package/src/tools/skills/execute.ts +3 -9
- package/src/tools/skills/load.ts +3 -9
- package/src/tools/skills/skill-tool-factory.ts +1 -8
- package/src/tools/subagent/notify-parent.ts +3 -9
- package/src/tools/system/request-permission.ts +3 -9
- package/src/tools/terminal/safe-env.ts +3 -2
- package/src/tools/terminal/shell.ts +3 -9
- package/src/tools/tool-approval-handler.ts +19 -12
- package/src/tools/tool-defaults.ts +94 -0
- package/src/tools/types.ts +31 -98
- package/src/tools/ui-surface/definitions.ts +9 -23
- package/src/types/onboarding-context.ts +4 -0
- package/src/usage/pricing.ts +23 -0
- package/src/usage/types.ts +12 -0
- package/src/util/__tests__/favicon.test.ts +84 -0
- package/src/util/favicon.ts +40 -0
- package/src/util/logger.ts +16 -7
- package/src/util/platform.ts +7 -7
- package/src/util/sqlite3-runtime.ts +65 -0
- package/src/workspace/git-service.ts +75 -4
- package/src/workspace/migrations/086-revert-stale-gemini-mis-rewrites.ts +1 -0
- package/src/workspace/migrations/088-deprecate-background-conversation-override.ts +103 -0
- package/src/workspace/migrations/089-move-memory-tree-out-of-v3.ts +86 -0
- package/src/workspace/migrations/registry.ts +4 -0
- package/src/__tests__/compaction-strip-metadata-clear.test.ts +0 -206
- package/src/__tests__/message-complete-display-id.test.ts +0 -175
- package/src/config/bundled-skills/document/SKILL.md +0 -54
- package/src/config/bundled-skills/document/TOOLS.json +0 -106
- package/src/daemon/seed-files.ts +0 -18
- package/src/prompts/cache-boundary.ts +0 -8
- package/src/runtime/routes/interface-routes.ts +0 -43
- /package/src/config/bundled-skills/{document → document-editor}/tools/document-create.ts +0 -0
- /package/src/config/bundled-skills/{document → document-editor}/tools/document-delete.ts +0 -0
- /package/src/config/bundled-skills/{document → document-editor}/tools/document-list.ts +0 -0
- /package/src/config/bundled-skills/{document → document-editor}/tools/document-read.ts +0 -0
- /package/src/config/bundled-skills/{document → document-editor}/tools/document-update.ts +0 -0
|
@@ -30,7 +30,7 @@ export async function run(
|
|
|
30
30
|
});
|
|
31
31
|
if (!credentials) {
|
|
32
32
|
return {
|
|
33
|
-
content: errorHint ?? "Image generation is not configured.",
|
|
33
|
+
content: `${errorHint ?? "Image generation is not configured."}\n\nReport this error to the user. Do not change service configuration (mode, provider, or model) to try to fix it.`,
|
|
34
34
|
isError: true,
|
|
35
35
|
};
|
|
36
36
|
}
|
|
@@ -131,7 +131,7 @@ export async function run(
|
|
|
131
131
|
};
|
|
132
132
|
} catch (error) {
|
|
133
133
|
return {
|
|
134
|
-
content: mapImageGenError(provider, error),
|
|
134
|
+
content: `${mapImageGenError(provider, error)}\n\nReport this error to the user. Do not change service configuration (mode, provider, or model) to try to fix it.`,
|
|
135
135
|
isError: true,
|
|
136
136
|
};
|
|
137
137
|
}
|
|
@@ -6,6 +6,14 @@ metadata:
|
|
|
6
6
|
emoji: "🎬"
|
|
7
7
|
vellum:
|
|
8
8
|
display-name: "Media Processing"
|
|
9
|
+
activation-hints:
|
|
10
|
+
- "User wants to ingest, process, or analyze a local video, audio, or image file"
|
|
11
|
+
- "User wants to ask natural-language questions about a video's content (e.g. 'what happens at 3:14', 'find all the goals', 'who appears in this footage')"
|
|
12
|
+
- "User wants to extract a clip or short segment from a video"
|
|
13
|
+
- "User wants to run keyframe extraction, segmentation, or frame-by-frame analysis on a video"
|
|
14
|
+
avoid-when:
|
|
15
|
+
- "User only wants a plain audio transcript — use the transcribe skill instead"
|
|
16
|
+
- "User just wants to play or open a media file in their default system player — that does not need this pipeline"
|
|
9
17
|
---
|
|
10
18
|
|
|
11
19
|
Ingest and track processing of media files (video, audio, images) through a configurable 3-phase pipeline.
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { access } from "node:fs/promises";
|
|
2
2
|
import { basename, extname } from "node:path";
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
enqueueMemoryJob,
|
|
6
|
+
isMemoryEnabled,
|
|
7
|
+
} from "../../../../memory/jobs-store.js";
|
|
5
8
|
import {
|
|
6
9
|
computeFileHashStreaming,
|
|
7
10
|
createProcessingStage,
|
|
@@ -199,13 +202,15 @@ export async function run(
|
|
|
199
202
|
updateMediaAssetStatus(asset.id, "processing");
|
|
200
203
|
|
|
201
204
|
// Enqueue a processing job via the existing jobs framework
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
205
|
+
if (isMemoryEnabled()) {
|
|
206
|
+
enqueueMemoryJob("media_processing", {
|
|
207
|
+
mediaAssetId: asset.id,
|
|
208
|
+
stage: "ingest",
|
|
209
|
+
filePath,
|
|
210
|
+
mimeType,
|
|
211
|
+
mediaType,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
209
214
|
|
|
210
215
|
context.onOutput?.(`Registered media asset: ${asset.id}\n`);
|
|
211
216
|
|
|
@@ -2,7 +2,10 @@ import { and, eq, sql } from "drizzle-orm";
|
|
|
2
2
|
import { v4 as uuid } from "uuid";
|
|
3
3
|
|
|
4
4
|
import { getDb } from "../../../../memory/db-connection.js";
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
enqueueMemoryJob,
|
|
7
|
+
isMemoryEnabled,
|
|
8
|
+
} from "../../../../memory/jobs-store.js";
|
|
6
9
|
import { memoryGraphNodes } from "../../../../memory/schema.js";
|
|
7
10
|
import { clampUnitInterval } from "../../../../memory/validation.js";
|
|
8
11
|
import { extractStylePatterns } from "../../../../messaging/style-analyzer.js";
|
|
@@ -56,7 +59,9 @@ function upsertMemoryItem(opts: {
|
|
|
56
59
|
})
|
|
57
60
|
.where(eq(memoryGraphNodes.id, existing.id))
|
|
58
61
|
.run();
|
|
59
|
-
|
|
62
|
+
if (isMemoryEnabled()) {
|
|
63
|
+
enqueueMemoryJob("embed_graph_node", { nodeId: existing.id });
|
|
64
|
+
}
|
|
60
65
|
} else {
|
|
61
66
|
const id = uuid();
|
|
62
67
|
db.insert(memoryGraphNodes)
|
|
@@ -82,7 +87,9 @@ function upsertMemoryItem(opts: {
|
|
|
82
87
|
scopeId: opts.scopeId,
|
|
83
88
|
})
|
|
84
89
|
.run();
|
|
85
|
-
|
|
90
|
+
if (isMemoryEnabled()) {
|
|
91
|
+
enqueueMemoryJob("embed_graph_node", { nodeId: id });
|
|
92
|
+
}
|
|
86
93
|
}
|
|
87
94
|
}
|
|
88
95
|
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
# Retrieving Past Call Transcripts
|
|
2
2
|
|
|
3
|
-
After a call ends, the full bidirectional transcript (caller speech, assistant responses, tool calls, and tool results) is stored in the SQLite database. The
|
|
3
|
+
After a call ends, the full bidirectional transcript (caller speech, assistant responses, tool calls, and tool results) is stored in the SQLite database. The assistant logs only contain caller-side transcripts and lifecycle events at the default log level, so they are **not sufficient** for full transcript reconstruction.
|
|
4
|
+
|
|
5
|
+
Logs rotate daily as `$VELLUM_WORKSPACE_DIR/data/logs/assistant-YYYY-MM-DD.log`. The commands below use today's UTC log file; if a call happened on a previous day, swap the date in or grep across `assistant-*.log`.
|
|
4
6
|
|
|
5
7
|
## Finding the conversation
|
|
6
8
|
|
|
7
|
-
1. **Get the call session ID and voice conversation ID** from
|
|
9
|
+
1. **Get the call session ID and voice conversation ID** from today's log by searching for recent session creation entries:
|
|
8
10
|
|
|
9
11
|
```bash
|
|
10
|
-
grep "voiceConversationId"
|
|
12
|
+
grep "voiceConversationId" "$VELLUM_WORKSPACE_DIR/data/logs/assistant-$(date -u +%Y-%m-%d).log" | tail -5
|
|
11
13
|
```
|
|
12
14
|
|
|
13
15
|
The `voiceConversationId` field in the `Created new inbound voice session` (or outbound equivalent) log line is the key you need.
|
|
@@ -15,7 +17,7 @@ The `voiceConversationId` field in the `Created new inbound voice session` (or o
|
|
|
15
17
|
2. **Query the messages table** in the SQLite database using the voice conversation ID:
|
|
16
18
|
|
|
17
19
|
```bash
|
|
18
|
-
sqlite3
|
|
20
|
+
sqlite3 "$VELLUM_WORKSPACE_DIR/data/db/assistant.db" \
|
|
19
21
|
"SELECT role, content FROM messages WHERE conversation_id = '<voiceConversationId>' ORDER BY created_at ASC;"
|
|
20
22
|
```
|
|
21
23
|
|
|
@@ -27,9 +29,9 @@ This returns all messages in chronological order with:
|
|
|
27
29
|
## Quick one-liner for the most recent call
|
|
28
30
|
|
|
29
31
|
```bash
|
|
30
|
-
CONV_ID=$(grep "voiceConversationId"
|
|
32
|
+
CONV_ID=$(grep -h "voiceConversationId" "$VELLUM_WORKSPACE_DIR"/data/logs/assistant-*.log | tail -1 | python3 -c "import sys,json; print(json.loads(sys.stdin.readline().strip())['voiceConversationId'])")
|
|
31
33
|
|
|
32
|
-
sqlite3
|
|
34
|
+
sqlite3 "$VELLUM_WORKSPACE_DIR/data/db/assistant.db" \
|
|
33
35
|
"SELECT role, content FROM messages WHERE conversation_id = '$CONV_ID' ORDER BY created_at ASC;"
|
|
34
36
|
```
|
|
35
37
|
|
|
@@ -44,14 +46,14 @@ sqlite3 ~/.vellum/workspace/data/db/assistant.db \
|
|
|
44
46
|
|
|
45
47
|
## Key paths
|
|
46
48
|
|
|
47
|
-
| Resource | Path
|
|
48
|
-
| --------------------------------------------- |
|
|
49
|
-
| Assistant logs (caller-side transcripts only) |
|
|
50
|
-
| Full conversation database |
|
|
51
|
-
| Messages table | `messages` (keyed by `conversation_id`)
|
|
52
|
-
| Call sessions table | `call_sessions`
|
|
53
|
-
| Call events table | `call_events`
|
|
49
|
+
| Resource | Path |
|
|
50
|
+
| --------------------------------------------- | ----------------------------------------------------- |
|
|
51
|
+
| Assistant logs (caller-side transcripts only) | `$VELLUM_WORKSPACE_DIR/data/logs/assistant-*.log` |
|
|
52
|
+
| Full conversation database | `$VELLUM_WORKSPACE_DIR/data/db/assistant.db` |
|
|
53
|
+
| Messages table | `messages` (keyed by `conversation_id`) |
|
|
54
|
+
| Call sessions table | `call_sessions` |
|
|
55
|
+
| Call events table | `call_events` |
|
|
54
56
|
|
|
55
57
|
## Important
|
|
56
58
|
|
|
57
|
-
|
|
59
|
+
Assistant log files at the default log level do **not** contain assistant responses, TTS text, or LLM completions for voice calls. Always use the `messages` table in `assistant.db` as the source of truth for complete call transcripts.
|
|
@@ -3,7 +3,10 @@ import { sql } from "drizzle-orm";
|
|
|
3
3
|
import { getDb } from "../../../../memory/db-connection.js";
|
|
4
4
|
import { createNode, updateNode } from "../../../../memory/graph/store.js";
|
|
5
5
|
import type { NewNode } from "../../../../memory/graph/types.js";
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
enqueueMemoryJob,
|
|
8
|
+
isMemoryEnabled,
|
|
9
|
+
} from "../../../../memory/jobs-store.js";
|
|
7
10
|
import { memoryGraphNodes } from "../../../../memory/schema.js";
|
|
8
11
|
import type {
|
|
9
12
|
Playbook,
|
|
@@ -116,7 +119,9 @@ export async function executePlaybookCreate(
|
|
|
116
119
|
sourceConversations: [`playbook:${node.id}`],
|
|
117
120
|
});
|
|
118
121
|
|
|
119
|
-
|
|
122
|
+
if (isMemoryEnabled()) {
|
|
123
|
+
enqueueMemoryJob("embed_graph_node", { nodeId: node.id });
|
|
124
|
+
}
|
|
120
125
|
|
|
121
126
|
const autonomyLabel =
|
|
122
127
|
autonomyLevel === "auto"
|
|
@@ -2,7 +2,10 @@ import { and, eq, sql } from "drizzle-orm";
|
|
|
2
2
|
|
|
3
3
|
import { getDb } from "../../../../memory/db-connection.js";
|
|
4
4
|
import { getNode, updateNode } from "../../../../memory/graph/store.js";
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
enqueueMemoryJob,
|
|
7
|
+
isMemoryEnabled,
|
|
8
|
+
} from "../../../../memory/jobs-store.js";
|
|
6
9
|
import { memoryGraphNodes } from "../../../../memory/schema.js";
|
|
7
10
|
import type {
|
|
8
11
|
Playbook,
|
|
@@ -123,7 +126,9 @@ export async function executePlaybookUpdate(
|
|
|
123
126
|
lastAccessed: Date.now(),
|
|
124
127
|
});
|
|
125
128
|
|
|
126
|
-
|
|
129
|
+
if (isMemoryEnabled()) {
|
|
130
|
+
enqueueMemoryJob("embed_graph_node", { nodeId: existing.id });
|
|
131
|
+
}
|
|
127
132
|
|
|
128
133
|
const autonomyLabel =
|
|
129
134
|
updated.autonomyLevel === "auto"
|
|
@@ -6,6 +6,14 @@ metadata:
|
|
|
6
6
|
emoji: "📅"
|
|
7
7
|
vellum:
|
|
8
8
|
display-name: "Schedule"
|
|
9
|
+
activation-hints:
|
|
10
|
+
- "User wants to set a reminder for a future time (e.g. 'remind me at 9am tomorrow', 'remind me to take meds at 8pm')"
|
|
11
|
+
- "User wants to schedule a recurring task or automation (e.g. 'every weekday at 9am', 'every Monday at noon')"
|
|
12
|
+
- "User wants to schedule a one-time future action the assistant should run autonomously (e.g. 'at 5pm check my email and summarize it')"
|
|
13
|
+
- "User wants to list, update, cancel, or inspect existing scheduled tasks or reminders"
|
|
14
|
+
avoid-when:
|
|
15
|
+
- "User wants to add something to their task list or queue — use task-list tools instead"
|
|
16
|
+
- "User wants to act immediately or run a quick command that completes within the conversation — schedule is only for deferred or recurring execution"
|
|
9
17
|
---
|
|
10
18
|
|
|
11
19
|
Manage scheduled automations. Schedules can be **recurring** (cron or RRULE expression) or **one-shot** (a single `fire_at` timestamp). Schedules support three modes: **execute** (run a message through the assistant), **notify** (send a notification to the user), and **script** (run a shell command directly without LLM involvement).
|
|
@@ -50,12 +50,18 @@ import * as computerUseWait from "./bundled-skills/computer-use/tools/computer-u
|
|
|
50
50
|
import * as contactMerge from "./bundled-skills/contacts/tools/contact-merge.js";
|
|
51
51
|
import * as contactSearch from "./bundled-skills/contacts/tools/contact-search.js";
|
|
52
52
|
import * as googleContacts from "./bundled-skills/contacts/tools/google-contacts.js";
|
|
53
|
-
// ── document
|
|
54
|
-
import * as
|
|
55
|
-
import * as
|
|
56
|
-
import * as
|
|
57
|
-
import * as
|
|
58
|
-
import * as
|
|
53
|
+
// ── document-editor ────────────────────────────────────────────────────────────
|
|
54
|
+
import * as commentList from "./bundled-skills/document-editor/tools/comment-list.js";
|
|
55
|
+
import * as commentReply from "./bundled-skills/document-editor/tools/comment-reply.js";
|
|
56
|
+
import * as commentResolve from "./bundled-skills/document-editor/tools/comment-resolve.js";
|
|
57
|
+
import * as documentCreate from "./bundled-skills/document-editor/tools/document-create.js";
|
|
58
|
+
import * as documentDelete from "./bundled-skills/document-editor/tools/document-delete.js";
|
|
59
|
+
import * as documentFind from "./bundled-skills/document-editor/tools/document-find.js";
|
|
60
|
+
import * as documentList from "./bundled-skills/document-editor/tools/document-list.js";
|
|
61
|
+
import * as documentOpen from "./bundled-skills/document-editor/tools/document-open.js";
|
|
62
|
+
import * as documentRead from "./bundled-skills/document-editor/tools/document-read.js";
|
|
63
|
+
import * as documentReplaceText from "./bundled-skills/document-editor/tools/document-replace-text.js";
|
|
64
|
+
import * as documentUpdate from "./bundled-skills/document-editor/tools/document-update.js";
|
|
59
65
|
// ── followups ──────────────────────────────────────────────────────────────────
|
|
60
66
|
import * as followupCreate from "./bundled-skills/followups/tools/followup-create.js";
|
|
61
67
|
import * as followupList from "./bundled-skills/followups/tools/followup-list.js";
|
|
@@ -169,12 +175,18 @@ export const bundledToolRegistry = new Map<string, SkillToolScript>([
|
|
|
169
175
|
["contacts:tools/contact-merge.ts", contactMerge],
|
|
170
176
|
["contacts:tools/google-contacts.ts", googleContacts],
|
|
171
177
|
|
|
172
|
-
// document
|
|
173
|
-
["document:tools/document-
|
|
174
|
-
["document:tools/document-
|
|
175
|
-
["document:tools/document-
|
|
176
|
-
["document:tools/document-read.ts", documentRead],
|
|
177
|
-
["document:tools/document-
|
|
178
|
+
// document-editor
|
|
179
|
+
["document-editor:tools/document-open.ts", documentOpen],
|
|
180
|
+
["document-editor:tools/document-create.ts", documentCreate],
|
|
181
|
+
["document-editor:tools/document-update.ts", documentUpdate],
|
|
182
|
+
["document-editor:tools/document-read.ts", documentRead],
|
|
183
|
+
["document-editor:tools/document-list.ts", documentList],
|
|
184
|
+
["document-editor:tools/document-delete.ts", documentDelete],
|
|
185
|
+
["document-editor:tools/document-find.ts", documentFind],
|
|
186
|
+
["document-editor:tools/document-replace-text.ts", documentReplaceText],
|
|
187
|
+
["document-editor:tools/comment-list.ts", commentList],
|
|
188
|
+
["document-editor:tools/comment-resolve.ts", commentResolve],
|
|
189
|
+
["document-editor:tools/comment-reply.ts", commentReply],
|
|
178
190
|
|
|
179
191
|
// followups
|
|
180
192
|
["followups:tools/followup-create.ts", followupCreate],
|
|
@@ -47,6 +47,13 @@ export const CALL_SITE_DEFAULTS: Record<LLMCallSite, CallSiteDefaultConfig> = {
|
|
|
47
47
|
memoryV2Migration: { profile: "cost-optimized" },
|
|
48
48
|
memoryV2Sweep: { profile: "cost-optimized" },
|
|
49
49
|
memoryV2Consolidation: { profile: "balanced" },
|
|
50
|
+
// memory v3: cheap filter + descent, capable gate. All three are
|
|
51
|
+
// selection/classification calls, not generation — pin temperature to 0 so
|
|
52
|
+
// the same candidate set yields the same keep/descend/select decision instead
|
|
53
|
+
// of sampling-driven variance.
|
|
54
|
+
memoryV3Filter: { profile: "cost-optimized", temperature: 0 },
|
|
55
|
+
memoryV3Descent: { profile: "cost-optimized", temperature: 0 },
|
|
56
|
+
memoryV3Gate: { profile: "balanced", temperature: 0 },
|
|
50
57
|
conversationSummarization: { profile: "cost-optimized" },
|
|
51
58
|
conversationTitle: { profile: "cost-optimized" },
|
|
52
59
|
approvalCopy: { profile: "cost-optimized" },
|
|
@@ -102,4 +109,17 @@ export const CALL_SITE_DEFAULTS: Record<LLMCallSite, CallSiteDefaultConfig> = {
|
|
|
102
109
|
effort: "low",
|
|
103
110
|
thinking: { enabled: false },
|
|
104
111
|
},
|
|
112
|
+
homeGreeting: {
|
|
113
|
+
profile: "cost-optimized",
|
|
114
|
+
maxTokens: 60,
|
|
115
|
+
effort: "low",
|
|
116
|
+
thinking: { enabled: false },
|
|
117
|
+
temperature: 0.7,
|
|
118
|
+
},
|
|
119
|
+
homeSuggestedPrompts: {
|
|
120
|
+
profile: "cost-optimized",
|
|
121
|
+
maxTokens: 512,
|
|
122
|
+
effort: "low",
|
|
123
|
+
thinking: { enabled: false },
|
|
124
|
+
},
|
|
105
125
|
};
|
|
@@ -9,6 +9,14 @@
|
|
|
9
9
|
"description": "Automatically trigger conversation analysis on the same cadence as memory extraction (batch threshold, idle debounce, end-of-conversation). The analysis agent has full tool access and writes back to memory and skills without user approval.",
|
|
10
10
|
"defaultEnabled": false
|
|
11
11
|
},
|
|
12
|
+
{
|
|
13
|
+
"id": "memory-retrospective-fork",
|
|
14
|
+
"scope": "assistant",
|
|
15
|
+
"key": "memory-retrospective-fork",
|
|
16
|
+
"label": "Fork-based memory retrospective",
|
|
17
|
+
"description": "Fork the source conversation through its latest message for memory retrospectives, instead of rendering the slice into a transcript and waking an empty background conversation. Lets the retrospective hit the provider prompt cache and read compaction summary + tail messages natively.",
|
|
18
|
+
"defaultEnabled": false
|
|
19
|
+
},
|
|
12
20
|
{
|
|
13
21
|
"id": "user-hosted-enabled",
|
|
14
22
|
"scope": "client",
|
|
@@ -43,7 +51,7 @@
|
|
|
43
51
|
},
|
|
44
52
|
{
|
|
45
53
|
"id": "settings-developer-nav",
|
|
46
|
-
"scope": "
|
|
54
|
+
"scope": "assistant",
|
|
47
55
|
"key": "settings-developer-nav",
|
|
48
56
|
"label": "Settings Developer Nav",
|
|
49
57
|
"description": "Control Developer nav visibility in macOS settings",
|
|
@@ -89,6 +97,14 @@
|
|
|
89
97
|
"description": "Surface credential grant and audit inspection endpoints for reviewing active grants and access logs",
|
|
90
98
|
"defaultEnabled": false
|
|
91
99
|
},
|
|
100
|
+
{
|
|
101
|
+
"id": "chatgpt-subscription-auth",
|
|
102
|
+
"scope": "assistant",
|
|
103
|
+
"key": "chatgpt-subscription-auth",
|
|
104
|
+
"label": "ChatGPT Subscription Auth",
|
|
105
|
+
"description": "Enable ChatGPT subscription OAuth as a provider auth type for OpenAI models, using the Codex device-code flow.",
|
|
106
|
+
"defaultEnabled": false
|
|
107
|
+
},
|
|
92
108
|
{
|
|
93
109
|
"id": "deploy-to-vercel",
|
|
94
110
|
"scope": "assistant",
|
|
@@ -275,7 +291,7 @@
|
|
|
275
291
|
},
|
|
276
292
|
{
|
|
277
293
|
"id": "account-deletion",
|
|
278
|
-
"scope": "
|
|
294
|
+
"scope": "assistant",
|
|
279
295
|
"key": "account-deletion",
|
|
280
296
|
"label": "Account Deletion",
|
|
281
297
|
"description": "Surfaces the user-initiated account deletion flow in client settings.",
|
|
@@ -299,7 +315,7 @@
|
|
|
299
315
|
},
|
|
300
316
|
{
|
|
301
317
|
"id": "pro-plan-adjust",
|
|
302
|
-
"scope": "
|
|
318
|
+
"scope": "client",
|
|
303
319
|
"key": "pro-plan-adjust",
|
|
304
320
|
"label": "Pro Plan Adjust",
|
|
305
321
|
"description": "Show the rich Plan card (current plan, features, Manage/Upgrade CTA) at the top of the macOS Settings \u2192 Billing tab.",
|
|
@@ -328,6 +344,102 @@
|
|
|
328
344
|
"label": "Velvet Theme",
|
|
329
345
|
"description": "Show the Velvet theme option in the macOS appearance settings. Velvet is a dark-mode variant with red/pink accent colors.",
|
|
330
346
|
"defaultEnabled": false
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"id": "query-complexity-routing",
|
|
350
|
+
"scope": "assistant",
|
|
351
|
+
"key": "query-complexity-routing",
|
|
352
|
+
"label": "Query Complexity Routing",
|
|
353
|
+
"description": "Automatically route user messages to the most appropriate inference profile based on query complexity. Simple queries use the speed profile, complex queries escalate to the quality profile. The user is notified of each switch and can opt out by pinning a profile on the conversation.",
|
|
354
|
+
"defaultEnabled": false
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
"id": "queue-steering",
|
|
358
|
+
"scope": "assistant",
|
|
359
|
+
"key": "queue-steering",
|
|
360
|
+
"label": "Queue Steering",
|
|
361
|
+
"description": "Enable the 'Push to agent' button on queued messages, allowing users to steer the assistant to a specific queued message by aborting the current generation and promoting the message to the head of the queue.",
|
|
362
|
+
"defaultEnabled": false
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"id": "chat-pull-to-refresh-enabled",
|
|
366
|
+
"scope": "client",
|
|
367
|
+
"key": "chat-pull-to-refresh-enabled",
|
|
368
|
+
"label": "Chat Pull to Refresh",
|
|
369
|
+
"description": "Enable pull-to-refresh gesture in the chat view.",
|
|
370
|
+
"defaultEnabled": false
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"id": "doctor",
|
|
374
|
+
"scope": "client",
|
|
375
|
+
"key": "doctor",
|
|
376
|
+
"label": "Doctor",
|
|
377
|
+
"description": "Enable the Doctor diagnostic tab in Debug settings.",
|
|
378
|
+
"defaultEnabled": false
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"id": "home-page",
|
|
382
|
+
"scope": "client",
|
|
383
|
+
"key": "home-page",
|
|
384
|
+
"label": "Home Page",
|
|
385
|
+
"description": "Enable the Home page as the default landing view.",
|
|
386
|
+
"defaultEnabled": false
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"id": "platform-notifications",
|
|
390
|
+
"scope": "client",
|
|
391
|
+
"key": "platform-notifications",
|
|
392
|
+
"label": "Platform Notifications",
|
|
393
|
+
"description": "Enable the Notifications tab in settings.",
|
|
394
|
+
"defaultEnabled": false
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"id": "preview-channel",
|
|
398
|
+
"scope": "client",
|
|
399
|
+
"key": "preview-channel",
|
|
400
|
+
"label": "Preview Channel",
|
|
401
|
+
"description": "Enable user-facing Preview release channel controls in assistant settings.",
|
|
402
|
+
"defaultEnabled": false
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"id": "rollback-enabled",
|
|
406
|
+
"scope": "assistant",
|
|
407
|
+
"key": "rollback-enabled",
|
|
408
|
+
"label": "Rollback Enabled",
|
|
409
|
+
"description": "Show older versions in the version picker, allowing rollback to previous releases.",
|
|
410
|
+
"defaultEnabled": false
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"id": "self-hosted-assistant",
|
|
414
|
+
"scope": "client",
|
|
415
|
+
"key": "self-hosted-assistant",
|
|
416
|
+
"label": "Self-Hosted Assistant",
|
|
417
|
+
"description": "Enable self-hosted assistant configuration.",
|
|
418
|
+
"defaultEnabled": false
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"id": "settings-sleep-policy",
|
|
422
|
+
"scope": "assistant",
|
|
423
|
+
"key": "settings-sleep-policy",
|
|
424
|
+
"label": "Settings Sleep Policy",
|
|
425
|
+
"description": "Enable sleep policy settings.",
|
|
426
|
+
"defaultEnabled": false
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"id": "velvet",
|
|
430
|
+
"scope": "client",
|
|
431
|
+
"key": "velvet",
|
|
432
|
+
"label": "Velvet",
|
|
433
|
+
"description": "Enable the Velvet design theme.",
|
|
434
|
+
"defaultEnabled": false
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"id": "memory-router-playground",
|
|
438
|
+
"scope": "client",
|
|
439
|
+
"key": "memory-router-playground",
|
|
440
|
+
"label": "Memory Router Playground",
|
|
441
|
+
"description": "Expose the developer-only Memory Router Playground tab in macOS Settings and the /assistant/memory-router-playground web page for dry-running v4 router config overrides against the live page index. Dev-only; default off.",
|
|
442
|
+
"defaultEnabled": false
|
|
331
443
|
}
|
|
332
444
|
]
|
|
333
445
|
}
|
|
@@ -81,13 +81,27 @@ export function resolveCallSiteConfig(
|
|
|
81
81
|
type Mergeable = Record<string, unknown>;
|
|
82
82
|
|
|
83
83
|
/**
|
|
84
|
-
* Returns the
|
|
85
|
-
*
|
|
84
|
+
* Returns the effective default profile key the resolver would actually
|
|
85
|
+
* select for a call site when no per-turn `overrideProfile` is supplied.
|
|
86
|
+
*
|
|
87
|
+
* Mirrors the layering in `resolveCallSiteConfig`:
|
|
88
|
+
* - For `mainAgent`, the workspace's `activeProfile` sits ABOVE the
|
|
89
|
+
* call-site catalog default (and above any static `llm.callSites.mainAgent`
|
|
90
|
+
* override), so a non-disabled `activeProfile` wins.
|
|
91
|
+
* - For other call sites, the catalog default sits ABOVE `activeProfile`,
|
|
92
|
+
* so the catalog default (with `custom-*` fallback) wins.
|
|
86
93
|
*/
|
|
87
94
|
export function resolveDefaultProfileKey(
|
|
88
95
|
callSite: LLMCallSite,
|
|
89
96
|
llm: z.infer<typeof LLMSchema>,
|
|
90
97
|
): string | undefined {
|
|
98
|
+
if (callSite === "mainAgent" && llm.activeProfile != null) {
|
|
99
|
+
const active = llm.profiles?.[llm.activeProfile];
|
|
100
|
+
if (active != null && active.status !== "disabled") {
|
|
101
|
+
return llm.activeProfile;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
91
105
|
const dflt = CALL_SITE_DEFAULTS[callSite];
|
|
92
106
|
if (dflt?.profile == null) return undefined;
|
|
93
107
|
const target = llm.profiles?.[dflt.profile];
|