@vellumai/assistant 0.8.4 → 0.8.6
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 +33 -1
- package/ARCHITECTURE.md +3 -3
- package/bunfig.toml +6 -1
- package/docs/browser-use-architecture-phase2.md +1 -1
- package/docs/credential-execution-service.md +6 -6
- package/docs/plugins.md +4 -3
- package/knip.json +2 -1
- package/node_modules/@vellumai/skill-host-contracts/src/client.ts +12 -13
- package/node_modules/@vellumai/skill-host-contracts/src/skill-host.ts +4 -1
- package/node_modules/@vellumai/skill-host-contracts/src/tool-types.ts +16 -14
- package/openapi.yaml +2748 -216
- package/package.json +1 -1
- package/src/__tests__/actor-token-service.test.ts +3 -2
- package/src/__tests__/agent-loop-exit-reason.test.ts +102 -9
- package/src/__tests__/agent-loop-override-profile.test.ts +2 -1
- package/src/__tests__/agent-wake-disk-pressure-callsite.test.ts +1 -0
- package/src/__tests__/agent-wake-override-profile.test.ts +1 -0
- package/src/__tests__/always-loaded-tools-guard.test.ts +2 -2
- package/src/__tests__/annotate-risk-options.test.ts +1 -0
- package/src/__tests__/anthropic-provider.test.ts +34 -37
- package/src/__tests__/approval-cascade.test.ts +1 -0
- package/src/__tests__/approval-routes-http.test.ts +9 -13
- package/src/__tests__/assert-not-live-db.ts +79 -0
- package/src/__tests__/assistant-event-hub-self-exclusion.test.ts +293 -0
- package/src/__tests__/assistant-feature-flags-integration.test.ts +12 -28
- package/src/__tests__/audit-log-rotation.test.ts +72 -18
- package/src/__tests__/auto-analysis-end-to-end.test.ts +6 -6
- package/src/__tests__/background-workers-disk-pressure.test.ts +8 -11
- package/src/__tests__/browser-skill-endstate.test.ts +3 -3
- package/src/__tests__/btw-routes.test.ts +5 -5
- package/src/__tests__/call-controller.test.ts +3 -3
- package/src/__tests__/cancel-resolves-conversation-key.test.ts +1 -1
- package/src/__tests__/channel-approval-routes.test.ts +3 -2
- package/src/__tests__/channel-guardian.test.ts +6 -5
- package/src/__tests__/channel-readiness-slack-remote.test.ts +175 -0
- package/src/__tests__/channel-reply-delivery.test.ts +35 -0
- package/src/__tests__/channel-retry-sweep.test.ts +320 -3
- package/src/__tests__/checker.test.ts +18 -27
- package/src/__tests__/compaction-events.test.ts +2 -0
- package/src/__tests__/compaction-trail-store.test.ts +264 -0
- package/src/__tests__/compactor-call-site-logging.test.ts +215 -0
- package/src/__tests__/compactor-preserved-tail-count.test.ts +1 -0
- package/src/__tests__/computer-use-skill-manifest-regression.test.ts +12 -16
- package/src/__tests__/computer-use-tools.test.ts +14 -18
- package/src/__tests__/config-loader-backfill.test.ts +13 -28
- package/src/__tests__/config-loader-corrupt.test.ts +5 -5
- package/src/__tests__/config-loader-platform-defaults.test.ts +93 -26
- package/src/__tests__/config-loader-quarantine-bulletin.test.ts +3 -3
- package/src/__tests__/config-managed-gemini-defaults.test.ts +3 -4
- package/src/__tests__/config-schema.test.ts +10 -10
- package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -1
- package/src/__tests__/connection-model-compat.test.ts +83 -0
- package/src/__tests__/contacts-tools.test.ts +3 -2
- package/src/__tests__/context-token-estimator.test.ts +22 -0
- package/src/__tests__/conversation-abort-tool-results.test.ts +5 -0
- package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +2 -1
- package/src/__tests__/conversation-agent-loop-handlers-max-tokens.test.ts +55 -0
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +2 -1
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +231 -2
- package/src/__tests__/conversation-agent-loop.test.ts +581 -54
- package/src/__tests__/conversation-analysis-routes.test.ts +1 -0
- package/src/__tests__/conversation-app-control-instantiation.test.ts +31 -24
- package/src/__tests__/conversation-app-control-lifecycle.test.ts +1 -0
- package/src/__tests__/conversation-attention-store.test.ts +101 -0
- package/src/__tests__/conversation-attention-telegram.test.ts +3 -2
- package/src/__tests__/conversation-clear-safety.test.ts +25 -25
- package/src/__tests__/conversation-confirmation-signals.test.ts +1 -0
- 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 +61 -0
- package/src/__tests__/conversation-fork-crud.test.ts +239 -15
- package/src/__tests__/conversation-fork-route.test.ts +3 -2
- package/src/__tests__/conversation-history-web-search.test.ts +1 -0
- package/src/__tests__/conversation-inference-profile-list.test.ts +3 -2
- package/src/__tests__/conversation-inference-profile-route.test.ts +3 -2
- package/src/__tests__/conversation-lifecycle.test.ts +53 -11
- package/src/__tests__/conversation-list-source.test.ts +3 -2
- package/src/__tests__/conversation-load-history-repair.test.ts +2 -1
- package/src/__tests__/{conversation-load-cleaned-at.test.ts → conversation-load-history-stripped.test.ts} +14 -13
- package/src/__tests__/conversation-pairing.test.ts +53 -0
- package/src/__tests__/conversation-process-app-control-preactivation.test.ts +26 -7
- package/src/__tests__/conversation-process-callsite.test.ts +1 -0
- package/src/__tests__/conversation-provider-retry-repair.test.ts +6 -0
- package/src/__tests__/conversation-queue.test.ts +333 -291
- package/src/__tests__/conversation-routes-disk-view.test.ts +112 -18
- package/src/__tests__/conversation-routes-guardian-reply.test.ts +33 -8
- package/src/__tests__/conversation-routes-slash-commands.test.ts +68 -2
- package/src/__tests__/conversation-runtime-assembly.test.ts +78 -0
- package/src/__tests__/conversation-skill-tools.test.ts +40 -147
- package/src/__tests__/conversation-slash-queue.test.ts +84 -32
- package/src/__tests__/conversation-slash-unknown.test.ts +5 -0
- package/src/__tests__/conversation-speed-override.test.ts +1 -0
- package/src/__tests__/conversation-store.test.ts +1 -1
- package/src/__tests__/conversation-surfaces-action-delivery.test.ts +46 -0
- package/src/__tests__/conversation-surfaces-data-persist.test.ts +1 -0
- package/src/__tests__/conversation-surfaces-standalone-payloads.test.ts +6 -3
- package/src/__tests__/conversation-surfaces-standalone.test.ts +6 -3
- package/src/__tests__/conversation-surfaces-state-update.test.ts +3 -3
- package/src/__tests__/conversation-surfaces-table-action.test.ts +7 -17
- package/src/__tests__/conversation-sync-tags.test.ts +218 -35
- package/src/__tests__/conversation-title-service.test.ts +1 -0
- package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +30 -0
- package/src/__tests__/conversation-usage.test.ts +1 -0
- package/src/__tests__/conversation-workspace-cache-state.test.ts +2 -0
- package/src/__tests__/conversation-workspace-injection.test.ts +6 -1
- package/src/__tests__/conversation-workspace-tool-tracking.test.ts +6 -1
- package/src/__tests__/credential-broker-browser-fill.test.ts +3 -3
- package/src/__tests__/credential-broker-server-use.test.ts +5 -5
- package/src/__tests__/credential-execution-client.test.ts +72 -1
- package/src/__tests__/credential-execution-feature-gates.test.ts +19 -19
- package/src/__tests__/credential-execution-tools.test.ts +6 -6
- package/src/__tests__/credential-health-service.test.ts +252 -3
- package/src/__tests__/credential-security-invariants.test.ts +6 -5
- package/src/__tests__/credential-vault-unit.test.ts +21 -21
- package/src/__tests__/credential-vault.test.ts +5 -5
- package/src/__tests__/cross-provider-web-search.test.ts +56 -2
- package/src/__tests__/db-connection-isolation.test.ts +7 -6
- package/src/__tests__/db-conversation-fork-lineage-migration.test.ts +8 -10
- package/src/__tests__/db-conversation-inference-profile-migration.test.ts +7 -10
- package/src/__tests__/db-llm-request-log-provider-migration.test.ts +9 -15
- package/src/__tests__/db-test-helpers.ts +58 -0
- package/src/__tests__/disk-pressure-guard.test.ts +58 -41
- package/src/__tests__/disk-pressure-lifecycle.test.ts +13 -10
- package/src/__tests__/disk-pressure-routes.test.ts +0 -33
- package/src/__tests__/disk-pressure-tools.test.ts +0 -4
- package/src/__tests__/dm-persistence.test.ts +26 -40
- package/src/__tests__/document-create-dedupe.test.ts +189 -0
- package/src/__tests__/document-find-replace.test.ts +3 -2
- package/src/__tests__/document-tool-security.test.ts +81 -2
- package/src/__tests__/dynamic-page-surface.test.ts +2 -2
- package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +5 -4
- package/src/__tests__/email-html-renderer.test.ts +12 -0
- package/src/__tests__/encrypted-store-test-helpers.ts +56 -0
- package/src/__tests__/encrypted-store.test.ts +11 -9
- package/src/__tests__/feature-flag-test-helpers.ts +53 -0
- package/src/__tests__/filing-service.test.ts +1 -0
- package/src/__tests__/first-greeting.test.ts +62 -12
- package/src/__tests__/gateway-flag-listener.test.ts +236 -0
- package/src/__tests__/gemini-provider.test.ts +104 -0
- package/src/__tests__/guardian-action-sweep.test.ts +3 -2
- package/src/__tests__/guardian-dispatch.test.ts +0 -1
- package/src/__tests__/guardian-outbound-http.test.ts +10 -7
- package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +48 -3
- package/src/__tests__/handlers-user-message-approval-consumption.test.ts +2 -1
- package/src/__tests__/heartbeat-disk-pressure.test.ts +5 -0
- package/src/__tests__/heartbeat-service.test.ts +5 -0
- package/src/__tests__/helpers/mock-logger.ts +26 -0
- package/src/__tests__/host-bash-routes.test.ts +1 -0
- package/src/__tests__/host-cu-routes-targeted.test.ts +1 -0
- package/src/__tests__/host-file-routes-targeted.test.ts +1 -0
- package/src/__tests__/host-shell-tool.test.ts +6 -5
- package/src/__tests__/host-transfer-routes-targeted.test.ts +1 -0
- package/src/__tests__/http-conversation-lineage.test.ts +3 -2
- package/src/__tests__/http-user-message-parity.test.ts +29 -7
- package/src/__tests__/identity-intro-cache.test.ts +133 -22
- package/src/__tests__/inbound-slack-persistence.test.ts +44 -72
- package/src/__tests__/inference-profile-reaper.test.ts +3 -2
- package/src/__tests__/inference-profile-session-ipc.test.ts +3 -2
- package/src/__tests__/init-feature-flag-overrides.test.ts +5 -6
- package/src/__tests__/injector-disk-pressure.test.ts +3 -17
- package/src/__tests__/inline-skill-load-permissions.test.ts +4 -4
- package/src/__tests__/list-messages-hidden-metadata.test.ts +80 -0
- package/src/__tests__/list-messages-tool-merge.test.ts +70 -11
- package/src/__tests__/llm-context-normalization.test.ts +42 -0
- 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 +408 -9
- package/src/__tests__/llm-schema.test.ts +1 -1
- package/src/__tests__/llm-usage-store.test.ts +66 -0
- package/src/__tests__/logger.test.ts +89 -0
- package/src/__tests__/manual-token-reconciliation.test.ts +76 -1
- package/src/__tests__/mcp-abort-signal.test.ts +16 -2
- package/src/__tests__/mcp-client-auth.test.ts +14 -0
- package/src/__tests__/media-generate-image.test.ts +31 -0
- package/src/__tests__/memory-v2-static-injector.test.ts +7 -7
- package/src/__tests__/messaging-send-tool.test.ts +1 -0
- package/src/__tests__/migration-import-from-url.test.ts +3 -3
- package/src/__tests__/mock-gateway-ipc.ts +18 -2
- package/src/__tests__/model-intents.test.ts +4 -6
- package/src/__tests__/native-web-search.test.ts +30 -2
- package/src/__tests__/notification-deep-link.test.ts +62 -0
- package/src/__tests__/notification-guardian-path.test.ts +0 -1
- package/src/__tests__/oauth-commands-routes.test.ts +37 -0
- package/src/__tests__/oauth-provider-visibility.test.ts +8 -8
- package/src/__tests__/oauth-store.test.ts +3 -2
- package/src/__tests__/onboarding-template-contract.test.ts +4 -3
- package/src/__tests__/openai-provider.test.ts +54 -9
- package/src/__tests__/openai-responses-provider.test.ts +176 -14
- package/src/__tests__/openrouter-provider-only.test.ts +27 -5
- package/src/__tests__/outbound-slack-persistence.test.ts +46 -1
- package/src/__tests__/pending-interactions-resolved-event.test.ts +0 -1
- package/src/__tests__/persistence-pipeline.test.ts +139 -1
- package/src/__tests__/persistence-secret-redaction.test.ts +83 -12
- package/src/__tests__/platform-bash-auto-approve.test.ts +2 -2
- package/src/__tests__/platform.test.ts +2 -2
- package/src/__tests__/plugin-api-tool-definition.test.ts +92 -0
- package/src/__tests__/plugin-bootstrap.test.ts +11 -13
- package/src/__tests__/plugin-tool-contribution.test.ts +50 -40
- 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 +21 -16
- package/src/__tests__/process-message-display-content.test.ts +19 -22
- package/src/__tests__/provider-catalog-visibility.test.ts +9 -9
- package/src/__tests__/provider-platform-proxy-integration.test.ts +216 -4
- package/src/__tests__/provider-registry-ollama.test.ts +45 -22
- package/src/__tests__/prune-jobs-changes-parser.test.ts +61 -0
- package/src/__tests__/recording-handler.test.ts +1 -0
- package/src/__tests__/regenerate-fire-and-forget-trace.test.ts +1 -0
- package/src/__tests__/registry.test.ts +84 -84
- package/src/__tests__/relay-server.test.ts +10 -10
- package/src/__tests__/require-fresh-approval.test.ts +2 -2
- package/src/__tests__/runtime-attachment-metadata.test.ts +3 -2
- package/src/__tests__/runtime-events-sse-bilingual.test.ts +154 -0
- package/src/__tests__/schedule-store.test.ts +16 -1
- package/src/__tests__/scheduler-reuse-conversation.test.ts +48 -3
- package/src/__tests__/secret-ingress-http.test.ts +5 -1
- package/src/__tests__/secure-keys.test.ts +3 -3
- package/src/__tests__/send-endpoint-busy.test.ts +81 -42
- package/src/__tests__/server-history-render.test.ts +4 -1
- package/src/__tests__/shell-tool-proxy-mode.test.ts +1 -1
- package/src/__tests__/skill-feature-flags-integration.test.ts +8 -10
- package/src/__tests__/skill-feature-flags.test.ts +16 -18
- package/src/__tests__/skill-load-feature-flag.test.ts +5 -5
- package/src/__tests__/skill-projection-feature-flag.test.ts +48 -37
- package/src/__tests__/skill-projection.benchmark.test.ts +7 -13
- package/src/__tests__/skill-tool-factory.test.ts +97 -96
- package/src/__tests__/slack-channel-config.test.ts +3 -3
- package/src/__tests__/subagent-call-site-routing.test.ts +11 -3
- package/src/__tests__/subagent-disposal.test.ts +27 -8
- package/src/__tests__/subagent-fork-notifications.test.ts +24 -9
- package/src/__tests__/subagent-fork-spawn.test.ts +13 -4
- package/src/__tests__/subagent-manager-notify.test.ts +20 -8
- package/src/__tests__/subagent-notify-parent.test.ts +6 -5
- package/src/__tests__/subagent-spawn-tool-fork.test.ts +58 -0
- package/src/__tests__/subagent-tools.test.ts +2 -1
- package/src/__tests__/suggestion-routes.test.ts +2 -0
- package/src/__tests__/sync-message-contract.test.ts +59 -0
- package/src/__tests__/system-prompt.test.ts +183 -131
- package/src/__tests__/terminal-tools.test.ts +1 -1
- package/src/__tests__/test-preload-verifier.ts +68 -0
- package/src/__tests__/test-preload.ts +32 -39
- 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 +35 -12
- package/src/__tests__/tool-executor.test.ts +64 -72
- package/src/__tests__/tool-grant-request-escalation.test.ts +1 -6
- package/src/__tests__/tool-preview-lifecycle.test.ts +1 -0
- package/src/__tests__/tool-result-metadata-plumbing.test.ts +1 -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 +3 -2
- package/src/__tests__/ui-file-upload-surface.test.ts +2 -2
- package/src/__tests__/usage-routes.test.ts +3 -0
- package/src/__tests__/validate-input.test.ts +381 -0
- package/src/__tests__/verification-control-plane-policy.test.ts +3 -2
- package/src/__tests__/voice-scoped-grant-consumer.test.ts +2 -1
- package/src/__tests__/voice-session-bridge.test.ts +37 -28
- package/src/__tests__/workspace-git-service.test.ts +6 -5
- package/src/__tests__/workspace-migration-089-move-memory-tree-out-of-v3.test.ts +86 -0
- package/src/__tests__/workspace-migration-090-memory-router-cost-optimized-profile.test.ts +326 -0
- package/src/__tests__/workspace-migration-091-retighten-migration-onboarding-thread.test.ts +166 -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 +6 -7
- package/src/agent/loop.ts +88 -0
- package/src/api/README.md +127 -0
- package/src/api/constants/call-sites.ts +27 -0
- package/src/api/events/assistant-outbound-attachment.ts +51 -0
- package/src/api/events/assistant-text-delta.ts +32 -0
- package/src/api/events/assistant-turn-start.ts +33 -0
- package/src/api/events/document-comment-created.ts +48 -0
- package/src/api/events/document-comment-deleted.ts +24 -0
- package/src/api/events/document-comment-reopened.ts +25 -0
- package/src/api/events/document-comment-resolved.ts +27 -0
- package/src/api/events/generation-cancelled.ts +24 -0
- package/src/api/events/generation-handoff.ts +41 -0
- package/src/api/events/message-complete.ts +42 -0
- package/src/api/events/open-url.ts +30 -0
- package/src/api/events/relationship-state-updated.ts +25 -0
- package/src/api/events/tool-use-start.ts +32 -0
- package/src/api/index.ts +129 -0
- package/src/api/package.json +10 -0
- package/src/api/responses/llm-context-response.ts +39 -0
- package/src/api/responses/llm-request-log-entry.ts +93 -0
- package/src/api/responses/memory-recall-log.ts +65 -0
- package/src/api/responses/memory-v2-activation-log.ts +78 -0
- package/src/background-wake/background-wake-routes.test.ts +868 -0
- package/src/background-wake/platform-client.test.ts +308 -0
- package/src/background-wake/platform-client.ts +167 -0
- package/src/background-wake/publisher.ts +91 -0
- package/src/background-wake/runtime-registry.ts +24 -0
- package/src/background-wake/wake-intent-hooks.test.ts +282 -0
- package/src/calls/guardian-dispatch.ts +1 -0
- package/src/calls/voice-session-bridge.ts +4 -4
- package/src/cli/commands/__tests__/browser.test.ts +23 -5
- package/src/cli/commands/__tests__/conversations-slack.test.ts +16 -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 +1 -0
- package/src/cli/commands/__tests__/memory-v3-render.test.ts +340 -0
- package/src/cli/commands/__tests__/notifications.test.ts +184 -40
- package/src/cli/commands/browser.ts +247 -0
- package/src/cli/commands/channels/__tests__/channels.test.ts +143 -0
- package/src/cli/commands/channels/index.ts +229 -0
- package/src/cli/commands/domain.ts +91 -41
- 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 +176 -1
- package/src/cli/commands/memory-v3-render.ts +491 -0
- package/src/cli/commands/memory-v3.ts +567 -0
- package/src/cli/commands/notifications.ts +365 -55
- package/src/cli/lib/open-browser.ts +7 -2
- package/src/cli/program.ts +4 -0
- package/src/config/assistant-feature-flags.ts +39 -46
- package/src/config/bundled-skills/document-editor/SKILL.md +16 -3
- package/src/config/bundled-skills/document-editor/TOOLS.json +18 -0
- package/src/config/bundled-skills/document-editor/tools/document-open.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/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 +1 -1
- package/src/config/bundled-skills/schedule/TOOLS.json +2 -2
- package/src/config/bundled-skills/settings/tools/open-system-settings.ts +1 -0
- package/src/config/bundled-tool-registry.ts +2 -0
- package/src/config/call-site-defaults.ts +8 -7
- package/src/config/feature-flag-cache.ts +86 -0
- package/src/config/feature-flag-registry.json +33 -17
- package/src/config/llm-context-resolution.ts +10 -1
- package/src/config/llm-resolver.ts +121 -15
- package/src/config/loader.ts +4 -5
- package/src/config/schemas/__tests__/memory-v2.test.ts +228 -1
- package/src/config/schemas/call-site-catalog.ts +21 -7
- package/src/config/schemas/heartbeat.ts +1 -1
- package/src/config/schemas/llm.ts +102 -2
- package/src/config/schemas/memory-v2.ts +272 -0
- package/src/config/schemas/memory.ts +2 -1
- package/src/config/schemas/services.ts +6 -2
- package/src/config/seed-inference-profiles.ts +36 -16
- package/src/context/compactor.ts +52 -0
- package/src/context/token-estimator.ts +10 -5
- package/src/conversations/__tests__/message-consolidation.test.ts +350 -0
- package/src/conversations/message-consolidation.ts +404 -0
- package/src/credential-execution/executable-discovery.ts +40 -0
- package/src/credential-execution/process-manager.ts +6 -2
- package/src/credential-health/credential-health-service.ts +125 -40
- package/src/daemon/__tests__/conversation-lifecycle-auto-analyze.test.ts +3 -6
- package/src/daemon/__tests__/conversation-surfaces-launch.test.ts +13 -15
- package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +2 -3
- package/src/daemon/__tests__/daemon-skill-host.test.ts +2 -0
- package/src/daemon/__tests__/meet-manifest-loader.test.ts +25 -12
- package/src/daemon/__tests__/native-web-search-metadata.test.ts +1 -0
- package/src/daemon/__tests__/switch-inference-profile-tool.test.ts +107 -0
- package/src/daemon/__tests__/web-search-status-text.test.ts +1 -0
- package/src/daemon/conversation-agent-loop-handlers.ts +390 -80
- package/src/daemon/conversation-agent-loop.ts +244 -90
- package/src/daemon/conversation-error.ts +64 -6
- package/src/daemon/conversation-lifecycle.ts +27 -22
- package/src/daemon/conversation-messaging.ts +84 -43
- package/src/daemon/conversation-process.ts +74 -37
- package/src/daemon/conversation-runtime-assembly.ts +38 -17
- package/src/daemon/conversation-skill-tools.ts +14 -30
- package/src/daemon/conversation-surfaces.ts +69 -34
- package/src/daemon/conversation-tool-setup.ts +77 -32
- package/src/daemon/conversation-usage.ts +2 -0
- package/src/daemon/conversation.ts +40 -75
- package/src/daemon/daemon-control.ts +1 -1
- package/src/daemon/daemon-skill-host.ts +9 -2
- package/src/daemon/disk-pressure-guard.ts +39 -29
- package/src/daemon/first-greeting.ts +31 -13
- package/src/daemon/handlers/config-model.test.ts +1 -0
- package/src/daemon/handlers/conversations.ts +11 -3
- package/src/daemon/handlers/shared.ts +6 -1
- package/src/daemon/host-browser-proxy.ts +5 -5
- package/src/daemon/host-cu-proxy.ts +4 -4
- package/src/daemon/host-file-proxy.ts +4 -4
- package/src/daemon/host-proxy-base.ts +4 -4
- package/src/daemon/host-transfer-proxy.ts +10 -10
- package/src/daemon/lifecycle.ts +29 -26
- package/src/daemon/mcp-reload-service.ts +1 -1
- package/src/daemon/meet-manifest-loader.ts +11 -24
- package/src/daemon/message-types/conversations.ts +22 -27
- package/src/daemon/message-types/document-comments.ts +8 -44
- package/src/daemon/message-types/home.ts +2 -14
- package/src/daemon/message-types/integrations.ts +2 -7
- package/src/daemon/message-types/messages.ts +25 -48
- package/src/daemon/message-types/subagents.ts +6 -0
- package/src/daemon/message-types/sync.ts +14 -0
- package/src/daemon/process-message.ts +9 -9
- package/src/daemon/providers-setup.ts +1 -1
- package/src/daemon/server.ts +16 -0
- package/src/daemon/shutdown-handlers.ts +24 -5
- package/src/daemon/switch-inference-profile-tool.ts +62 -0
- package/src/daemon/tool-setup-types.ts +7 -0
- package/src/daemon/wake-target-adapter.ts +10 -0
- package/src/documents/document-store.ts +38 -0
- package/src/export/__tests__/transcript-formatter.test.ts +1 -0
- package/src/heartbeat/__tests__/heartbeat-service.test.ts +30 -1
- package/src/heartbeat/heartbeat-service.ts +63 -0
- package/src/home/__tests__/feed-writer.test.ts +161 -0
- package/src/home/__tests__/post-connect-feed.test.ts +1 -0
- package/src/home/__tests__/suggested-prompts.test.ts +55 -59
- package/src/home/feed-writer.ts +146 -7
- package/src/home/home-greeting.ts +0 -9
- package/src/home/suggested-prompts.ts +27 -154
- package/src/ipc/__tests__/cli-ipc.test.ts +1 -0
- package/src/ipc/gateway-client.test.ts +4 -1
- package/src/ipc/gateway-flag-listener.ts +123 -0
- package/src/ipc/skill-routes/__tests__/memory.test.ts +1 -0
- package/src/ipc/skill-routes/__tests__/registries.test.ts +36 -7
- package/src/ipc/skill-routes/memory.ts +4 -3
- package/src/ipc/skill-routes/registries.ts +35 -40
- 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 +242 -0
- package/src/memory/__tests__/jobs-store-job-classes.test.ts +28 -1
- package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +26 -5
- package/src/memory/__tests__/memory-retrospective-enqueue.test.ts +1 -0
- package/src/memory/__tests__/memory-retrospective-job.test.ts +8 -0
- package/src/memory/__tests__/memory-retrospective-startup-cleanup.test.ts +1 -0
- package/src/memory/__tests__/memory-v2-activation-log-store.test.ts +31 -0
- package/src/memory/auto-analysis-enqueue.ts +5 -1
- package/src/memory/conversation-attention-store.ts +17 -3
- package/src/memory/conversation-crud.ts +423 -182
- 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-connection.ts +29 -19
- package/src/memory/db-init.ts +14 -0
- package/src/memory/db-maintenance.ts +30 -21
- package/src/memory/db-singleton.ts +77 -0
- package/src/memory/delivery-channels.ts +82 -0
- package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +2 -4
- 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/graph/retriever.test.ts +3 -3
- 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/job-handlers/embedding.test.ts +3 -2
- package/src/memory/jobs/__tests__/embed-concept-page.test.ts +5 -2
- package/src/memory/jobs/embed-pkb-file.ts +6 -1
- package/src/memory/jobs-store.ts +14 -0
- package/src/memory/jobs-worker.ts +66 -22
- package/src/memory/llm-request-log-source-clickhouse.ts +122 -2
- package/src/memory/llm-request-log-source-local.ts +31 -0
- package/src/memory/llm-request-log-source.ts +40 -2
- package/src/memory/llm-request-log-store.ts +228 -1
- package/src/memory/llm-usage-store.ts +24 -0
- package/src/memory/memory-retrospective-enqueue.ts +8 -1
- package/src/memory/memory-retrospective-job.ts +5 -0
- package/src/memory/memory-v2-activation-log-store.ts +110 -7
- 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/265-drop-provider-connection-status.ts +26 -0
- package/src/memory/migrations/266-messages-client-message-id.ts +43 -0
- package/src/memory/migrations/index.ts +19 -0
- package/src/memory/migrations/registry.ts +33 -0
- package/src/memory/schema/conversations.ts +10 -2
- package/src/memory/schema/inference.ts +0 -1
- package/src/memory/schema/infrastructure.ts +21 -0
- package/src/memory/tool-usage-store.ts +36 -8
- package/src/memory/v2/__tests__/backfill-jobs.test.ts +5 -2
- 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 +83 -0
- package/src/memory/v2/__tests__/harness-oracle.test.ts +257 -0
- package/src/memory/v2/__tests__/harness-replay-input.test.ts +230 -0
- package/src/memory/v2/__tests__/harness-runner.test.ts +135 -0
- package/src/memory/v2/__tests__/injection.test.ts +127 -98
- package/src/memory/v2/__tests__/qdrant.test.ts +36 -0
- package/src/memory/v2/__tests__/router.test.ts +171 -3
- package/src/memory/v2/__tests__/sweep-job.test.ts +6 -3
- package/src/memory/v2/harness/compare.ts +57 -0
- package/src/memory/v2/harness/metrics.ts +128 -0
- package/src/memory/v2/harness/oracle.ts +145 -0
- package/src/memory/v2/harness/replay-input.ts +240 -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 +112 -0
- package/src/memory/v2/harness/trace.ts +64 -0
- package/src/memory/v2/injection.ts +21 -15
- package/src/memory/v2/prompts/router.ts +26 -1
- package/src/memory/v2/qdrant.ts +14 -2
- package/src/memory/v2/router.ts +171 -18
- package/src/memory/v3/__tests__/coactivation-store.test.ts +422 -0
- package/src/memory/v3/__tests__/consolidation-job.test.ts +466 -0
- package/src/memory/v3/__tests__/coretrieval-seed.test.ts +270 -0
- package/src/memory/v3/__tests__/edge-learning-job.test.ts +324 -0
- package/src/memory/v3/__tests__/edges.test.ts +706 -0
- package/src/memory/v3/__tests__/filter.test.ts +560 -0
- package/src/memory/v3/__tests__/gate.test.ts +637 -0
- package/src/memory/v3/__tests__/index-composition.test.ts +291 -0
- package/src/memory/v3/__tests__/loop.test.ts +775 -0
- package/src/memory/v3/__tests__/retriever.test.ts +226 -0
- package/src/memory/v3/__tests__/scouts.test.ts +489 -0
- package/src/memory/v3/__tests__/shadow-diff.test.ts +225 -0
- package/src/memory/v3/__tests__/shadow-middleware.test.ts +398 -0
- package/src/memory/v3/__tests__/system-prompts.test.ts +154 -0
- package/src/memory/v3/__tests__/traversal.test.ts +508 -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 +784 -0
- package/src/memory/v3/__tests__/validate.test.ts +277 -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/coretrieval-seed.ts +240 -0
- package/src/memory/v3/edge-learning-job.ts +160 -0
- package/src/memory/v3/edges.ts +286 -0
- package/src/memory/v3/filter.ts +286 -0
- package/src/memory/v3/gate.ts +349 -0
- package/src/memory/v3/index-composition.ts +126 -0
- package/src/memory/v3/llm-capture.ts +46 -0
- package/src/memory/v3/loop.ts +430 -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 +431 -0
- package/src/memory/v3/shadow-diff.ts +287 -0
- package/src/memory/v3/shadow-middleware.ts +347 -0
- package/src/memory/v3/traversal.ts +211 -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 +356 -0
- package/src/memory/v3/types.ts +65 -0
- package/src/memory/v3/validate.ts +323 -0
- package/src/notifications/__tests__/emit-signal-home-feed.test.ts +1 -0
- package/src/notifications/__tests__/home-feed-side-effect.test.ts +1 -0
- package/src/notifications/adapters/macos.ts +18 -1
- package/src/notifications/adapters/platform.ts +1 -1
- package/src/notifications/adapters/slack.ts +45 -11
- package/src/notifications/broadcaster.ts +114 -63
- package/src/notifications/conversation-pairing.ts +23 -3
- package/src/notifications/decision-engine.ts +1 -4
- package/src/notifications/decisions-store.ts +32 -1
- package/src/notifications/deliveries-store.ts +45 -0
- package/src/notifications/edit-notification.ts +201 -0
- package/src/notifications/emit-signal.ts +40 -50
- package/src/notifications/signal.ts +10 -0
- package/src/notifications/types.ts +37 -0
- package/src/oauth/byo-connection.test.ts +67 -3
- package/src/oauth/byo-connection.ts +32 -5
- package/src/oauth/connect-orchestrator.ts +9 -0
- package/src/oauth/connection-resolver.test.ts +76 -0
- package/src/oauth/connection-resolver.ts +49 -10
- package/src/oauth/manual-token-connection.ts +51 -3
- package/src/oauth/seed-providers.ts +3 -0
- package/src/permissions/approval-policy.test.ts +19 -5
- package/src/permissions/approval-policy.ts +14 -3
- package/src/permissions/checker.ts +21 -8
- package/src/permissions/prompter.ts +3 -3
- package/src/permissions/question-prompter.ts +5 -2
- package/src/permissions/secret-prompter.ts +2 -2
- package/src/platform/client.test.ts +24 -1
- package/src/platform/client.ts +8 -0
- package/src/platform/feature-gate.ts +15 -0
- 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 +20 -19
- package/src/plugins/defaults/persistence.ts +25 -6
- package/src/plugins/external-plugin-loader.ts +5 -68
- package/src/plugins/types.ts +68 -29
- package/src/proactive-artifact/aux-message-injector.ts +17 -4
- package/src/proactive-artifact/job.test.ts +1 -0
- package/src/prompts/__tests__/system-prompt.test.ts +4 -4
- package/src/prompts/__tests__/task-progress-hint-section.test.ts +3 -9
- package/src/prompts/persona-resolver.ts +36 -21
- package/src/prompts/sections.ts +39 -7
- package/src/prompts/system-prompt.ts +84 -221
- package/src/prompts/template-detection.ts +10 -4
- package/src/prompts/templates/BOOTSTRAP.md +9 -13
- package/src/prompts/templates/IDENTITY.md +0 -2
- package/src/prompts/templates/system-sections.ts +230 -8
- package/src/providers/__tests__/connection-model-compat.test.ts +233 -0
- package/src/providers/__tests__/registry-native-web-search.test.ts +122 -0
- package/src/providers/__tests__/retry-callsite.test.ts +85 -5
- package/src/providers/anthropic/client.ts +32 -66
- package/src/providers/call-site-routing.ts +42 -6
- package/src/providers/connection-model-compat.ts +61 -0
- package/src/providers/connection-resolution.ts +47 -14
- package/src/providers/fireworks/client.ts +1 -0
- package/src/providers/gemini/client.ts +70 -6
- package/src/providers/inference/__tests__/adapter-factory-openai-compatible.test.ts +0 -2
- package/src/providers/inference/__tests__/base-url-security.test.ts +2 -3
- package/src/providers/inference/__tests__/{connections-status-label.test.ts → connections-label.test.ts} +12 -111
- package/src/providers/inference/adapter-factory.ts +3 -0
- package/src/providers/inference/auth.ts +0 -8
- package/src/providers/inference/connections.ts +3 -66
- package/src/providers/inference/resolve-auth.ts +2 -3
- package/src/providers/minimax/client.ts +106 -0
- package/src/providers/model-catalog.ts +78 -1
- package/src/providers/model-intents.ts +4 -4
- package/src/providers/openai/__tests__/api-error-detail.test.ts +120 -0
- package/src/providers/openai/__tests__/chat-completions-provider-reasoning.test.ts +157 -5
- package/src/providers/openai/chat-completions-provider.ts +116 -15
- package/src/providers/openai/codex-models.ts +20 -0
- package/src/providers/openai/responses-provider.ts +87 -30
- package/src/providers/openrouter/client.ts +13 -8
- package/src/providers/provider-send-message.ts +20 -5
- package/src/providers/registry.ts +48 -8
- package/src/providers/retry.ts +50 -7
- package/src/providers/search-provider-catalog.ts +17 -9
- package/src/providers/thinking-config.ts +26 -1
- package/src/providers/types.ts +9 -0
- package/src/providers/usage-tracking.ts +2 -0
- package/src/runtime/AGENTS.md +2 -2
- package/src/runtime/__tests__/agent-wake.test.ts +1 -0
- package/src/runtime/__tests__/background-job-runner.test.ts +1 -0
- package/src/runtime/access-request-helper.ts +1 -0
- package/src/runtime/agent-wake.ts +1 -0
- package/src/runtime/assistant-event-hub.ts +76 -6
- package/src/runtime/auth/route-policy.ts +46 -0
- package/src/runtime/btw-sidechain.ts +0 -6
- package/src/runtime/channel-readiness-service.ts +68 -0
- package/src/runtime/channel-reply-delivery.ts +23 -0
- package/src/runtime/channel-retry-sweep.ts +47 -14
- package/src/runtime/confirmation-request-guardian-bridge.ts +1 -1
- package/src/runtime/http-types.ts +0 -2
- package/src/runtime/migrations/vbundle-builder.ts +12 -4
- package/src/runtime/pending-interactions.ts +0 -1
- package/src/runtime/routes/__tests__/bookmark-routes.test.ts +1 -0
- package/src/runtime/routes/__tests__/conversation-compaction-routes.test.ts +406 -0
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +204 -0
- package/src/runtime/routes/__tests__/heartbeat-routes.test.ts +1 -1
- package/src/runtime/routes/__tests__/home-feed-routes.test.ts +209 -1
- package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +13 -50
- package/src/runtime/routes/__tests__/memory-v2-simulate-route.test.ts +76 -9
- package/src/runtime/routes/__tests__/memory-v3-simulate-params.test.ts +35 -0
- package/src/runtime/routes/__tests__/plugins-routes.test.ts +512 -0
- package/src/runtime/routes/__tests__/slack-channel-routes.test.ts +3 -2
- package/src/runtime/routes/__tests__/surface-content-routes.test.ts +294 -0
- package/src/runtime/routes/__tests__/task-routes.test.ts +48 -3
- package/src/runtime/routes/acp-routes-list.test.ts +3 -0
- package/src/runtime/routes/acp-routes.test.ts +255 -6
- package/src/runtime/routes/acp-routes.ts +8 -1
- package/src/runtime/routes/app-management-routes.ts +111 -4
- package/src/runtime/routes/avatar-routes.ts +10 -10
- package/src/runtime/routes/background-wake-routes.ts +356 -0
- package/src/runtime/routes/browser-tabs-routes.ts +200 -0
- package/src/runtime/routes/btw-routes.ts +4 -10
- package/src/runtime/routes/conversation-analysis-routes.ts +6 -0
- package/src/runtime/routes/conversation-cli-routes.ts +1 -1
- package/src/runtime/routes/conversation-compaction-routes.ts +263 -0
- package/src/runtime/routes/conversation-list-routes.ts +159 -4
- package/src/runtime/routes/conversation-management-routes.ts +108 -26
- package/src/runtime/routes/conversation-query-routes.ts +200 -44
- package/src/runtime/routes/conversation-routes.ts +409 -521
- package/src/runtime/routes/conversation-starter-routes.ts +6 -3
- package/src/runtime/routes/conversations-import-routes.ts +19 -6
- package/src/runtime/routes/disk-pressure-routes.ts +1 -1
- package/src/runtime/routes/documents-routes.ts +10 -1
- 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 +35 -8
- package/src/runtime/routes/home-feed-routes.ts +129 -0
- package/src/runtime/routes/host-browser-routes.ts +10 -2
- package/src/runtime/routes/host-cu-routes.ts +2 -2
- package/src/runtime/routes/identity-intro-cache.ts +61 -16
- package/src/runtime/routes/identity-routes.ts +30 -9
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +96 -3
- package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +530 -6
- package/src/runtime/routes/inbound-stages/background-dispatch.ts +57 -8
- package/src/runtime/routes/index.ts +10 -0
- 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 +5 -26
- package/src/runtime/routes/integrations/vercel.ts +15 -0
- package/src/runtime/routes/llm-call-sites-routes.ts +32 -5
- package/src/runtime/routes/llm-context-normalization.ts +7 -2
- package/src/runtime/routes/memory-item-routes.ts +8 -3
- package/src/runtime/routes/memory-v2-routes.ts +215 -5
- package/src/runtime/routes/memory-v3-routes.ts +474 -0
- package/src/runtime/routes/migration-routes.ts +32 -28
- package/src/runtime/routes/notification-routes.ts +63 -1
- package/src/runtime/routes/oauth-commands-routes.ts +6 -1
- package/src/runtime/routes/plugins-routes.ts +337 -0
- package/src/runtime/routes/rename-conversation-routes.ts +6 -2
- 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 +5 -4
- package/src/runtime/routes/surface-action-routes.ts +1 -38
- package/src/runtime/routes/surface-content-routes.ts +12 -5
- package/src/runtime/routes/surface-conversation-resolver.ts +65 -0
- package/src/runtime/routes/wipe-conversation-routes.ts +3 -0
- package/src/runtime/routes/workspace-routes.ts +25 -10
- package/src/runtime/services/__tests__/analyze-conversation.test.ts +2 -0
- package/src/runtime/slack-dm-text-delivery.ts +177 -0
- 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/tool-grant-request-helper.ts +1 -0
- package/src/runtime/verification-outbound-actions.ts +73 -1
- package/src/schedule/schedule-store.ts +8 -1
- package/src/schedule/scheduler.ts +111 -15
- package/src/security/__tests__/provider-key-env-fallback.test.ts +3 -3
- package/src/security/encrypted-store.ts +7 -16
- package/src/security/store-path-override.ts +61 -0
- package/src/signals/user-message.ts +5 -8
- package/src/skills/validate-input.ts +177 -0
- package/src/subagent/manager.ts +13 -13
- package/src/subagent/types.ts +6 -0
- package/src/tasks/tool-sanitizer.ts +2 -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 +36 -28
- 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__/browser-execution-acquire.test.ts +2 -8
- package/src/tools/browser/__tests__/pinned-tabs.test.ts +70 -0
- package/src/tools/browser/browser-execution.ts +16 -3
- package/src/tools/browser/cdp-client/__tests__/browser-tabs-factory.test.ts +402 -0
- package/src/tools/browser/cdp-client/__tests__/types.test.ts +3 -0
- package/src/tools/browser/cdp-client/cdp-inspect-client.ts +12 -0
- package/src/tools/browser/cdp-client/extension-cdp-client.ts +27 -1
- package/src/tools/browser/cdp-client/factory.ts +100 -17
- package/src/tools/browser/cdp-client/local-cdp-client.ts +12 -0
- package/src/tools/browser/cdp-client/types.ts +65 -0
- package/src/tools/browser/pinned-tabs.ts +96 -40
- package/src/tools/computer-use/definitions.ts +282 -336
- 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-tool.ts +189 -7
- package/src/tools/execution-target.ts +18 -23
- package/src/tools/executor.ts +24 -56
- 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.test.ts +1 -0
- package/src/tools/host-filesystem/edit.ts +3 -9
- package/src/tools/host-filesystem/read.test.ts +1 -0
- package/src/tools/host-filesystem/read.ts +3 -9
- package/src/tools/host-filesystem/transfer.test.ts +31 -6
- package/src/tools/host-filesystem/transfer.ts +3 -9
- package/src/tools/host-filesystem/write.test.ts +1 -0
- 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 -10
- package/src/tools/memory/register.test.ts +1 -1
- package/src/tools/memory/register.ts +4 -9
- package/src/tools/network/__tests__/managed-search-proxy.test.ts +282 -0
- package/src/tools/network/__tests__/web-search.test.ts +211 -3
- package/src/tools/network/managed-search-proxy.ts +183 -0
- package/src/tools/network/web-fetch.ts +3 -9
- package/src/tools/network/web-search.ts +224 -76
- package/src/tools/policy-context.ts +3 -1
- package/src/tools/registry.ts +150 -123
- package/src/tools/schedule/create.ts +1 -1
- 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 +18 -44
- package/src/tools/subagent/notify-parent.ts +3 -9
- package/src/tools/subagent/spawn.ts +3 -0
- package/src/tools/system/request-permission.ts +3 -9
- package/src/tools/terminal/shell.ts +3 -9
- package/src/tools/tool-approval-handler.ts +10 -4
- package/src/tools/tool-defaults.ts +94 -0
- package/src/tools/tool-name-aliases.ts +72 -14
- package/src/tools/types.ts +32 -101
- package/src/tools/ui-surface/definitions.ts +104 -108
- package/src/types/onboarding-context.ts +6 -0
- package/src/usage/attribution.ts +32 -1
- package/src/usage/pricing.ts +23 -0
- package/src/usage/types.ts +12 -0
- package/src/util/browser.ts +7 -2
- package/src/util/logger.ts +16 -7
- package/src/util/platform.ts +7 -2
- package/src/util/sqlite3-runtime.ts +65 -0
- package/src/workspace/migrations/086-revert-stale-gemini-mis-rewrites.ts +1 -0
- package/src/workspace/migrations/089-move-memory-tree-out-of-v3.ts +86 -0
- package/src/workspace/migrations/090-memory-router-cost-optimized-profile.ts +109 -0
- package/src/workspace/migrations/091-retighten-migration-onboarding-thread.ts +41 -0
- package/src/workspace/migrations/registry.ts +6 -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/daemon/query-complexity-router.ts +0 -75
- package/src/prompts/cache-boundary.ts +0 -8
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `generation_handoff` SSE event.
|
|
3
|
+
*
|
|
4
|
+
* Emitted when an assistant turn finishes and the daemon's agent loop
|
|
5
|
+
* yields control to the next queued user message in the same
|
|
6
|
+
* conversation. Functionally similar to `message_complete` — same
|
|
7
|
+
* attachment payload, same `messageId` semantics — but tells the
|
|
8
|
+
* client that another turn is about to begin without an intervening
|
|
9
|
+
* idle state, so the UI can keep the activity indicator on.
|
|
10
|
+
*
|
|
11
|
+
* `queuedCount` is the depth of the conversation's pending-message
|
|
12
|
+
* queue at handoff time (not including the just-finished turn). Used
|
|
13
|
+
* by the client to size queued-message UI affordances.
|
|
14
|
+
*
|
|
15
|
+
* Canonical wire-contract source. Daemon code imports the type directly
|
|
16
|
+
* from this file; external consumers import via `@vellumai/assistant-api`.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { z } from "zod";
|
|
20
|
+
|
|
21
|
+
import { AssistantOutboundAttachmentSchema } from "./assistant-outbound-attachment.js";
|
|
22
|
+
|
|
23
|
+
export const GenerationHandoffEventSchema = z
|
|
24
|
+
.object({
|
|
25
|
+
type: z.literal("generation_handoff"),
|
|
26
|
+
conversationId: z.string().optional(),
|
|
27
|
+
/** Daemon request id of the just-finished turn — correlates with
|
|
28
|
+
* the request id surfaced by the inbound user message. */
|
|
29
|
+
requestId: z.string().optional(),
|
|
30
|
+
/** Depth of the pending-message queue at handoff time. */
|
|
31
|
+
queuedCount: z.number(),
|
|
32
|
+
/** Database row id of the just-finished assistant turn. */
|
|
33
|
+
messageId: z.string().optional(),
|
|
34
|
+
attachments: z.array(AssistantOutboundAttachmentSchema).optional(),
|
|
35
|
+
attachmentWarnings: z.array(z.string()).optional(),
|
|
36
|
+
})
|
|
37
|
+
.strict();
|
|
38
|
+
|
|
39
|
+
export type GenerationHandoffEvent = z.infer<
|
|
40
|
+
typeof GenerationHandoffEventSchema
|
|
41
|
+
>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `message_complete` SSE event.
|
|
3
|
+
*
|
|
4
|
+
* Marks the end of an assistant turn — emitted once per turn after the
|
|
5
|
+
* final `assistant_text_delta` (or as the sole turn event for canned
|
|
6
|
+
* one-shot messages, recording-handler echoes, slash-command outputs,
|
|
7
|
+
* and aux notifier injections that don't stream text). Clients gate
|
|
8
|
+
* task-completion side effects on this event.
|
|
9
|
+
*
|
|
10
|
+
* `messageId` is the database row id of the completed assistant turn;
|
|
11
|
+
* shared with the `assistant_text_delta` chunks that streamed it. May
|
|
12
|
+
* be absent on synthetic completions that don't bind to a persisted
|
|
13
|
+
* row.
|
|
14
|
+
*
|
|
15
|
+
* `source` distinguishes a real main-turn completion from auxiliary
|
|
16
|
+
* notifier injections (call transcripts, call summaries, watch
|
|
17
|
+
* notifier outputs). Clients gate the task-complete sound and similar
|
|
18
|
+
* side effects on `source !== "aux"`. Absent is treated as `"main"`
|
|
19
|
+
* for backwards compatibility.
|
|
20
|
+
*
|
|
21
|
+
* Canonical wire-contract source. Daemon code imports the type directly
|
|
22
|
+
* from this file; external consumers import via `@vellumai/assistant-api`.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import { z } from "zod";
|
|
26
|
+
|
|
27
|
+
import { AssistantOutboundAttachmentSchema } from "./assistant-outbound-attachment.js";
|
|
28
|
+
|
|
29
|
+
export const MessageCompleteEventSchema = z
|
|
30
|
+
.object({
|
|
31
|
+
type: z.literal("message_complete"),
|
|
32
|
+
messageId: z.string().optional(),
|
|
33
|
+
conversationId: z.string().optional(),
|
|
34
|
+
source: z.enum(["main", "aux"]).optional(),
|
|
35
|
+
attachments: z.array(AssistantOutboundAttachmentSchema).optional(),
|
|
36
|
+
/** Soft warnings produced while resolving attachments (e.g. format
|
|
37
|
+
* conversions, size truncations). Display-only — not blocking. */
|
|
38
|
+
attachmentWarnings: z.array(z.string()).optional(),
|
|
39
|
+
})
|
|
40
|
+
.strict();
|
|
41
|
+
|
|
42
|
+
export type MessageCompleteEvent = z.infer<typeof MessageCompleteEventSchema>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `open_url` SSE event.
|
|
3
|
+
*
|
|
4
|
+
* Sent by the assistant when it wants the client to open a URL — OAuth
|
|
5
|
+
* authorization popups, system-settings deep links, and browser hand-offs
|
|
6
|
+
* from tool execution. The web client routes the URL through same-origin
|
|
7
|
+
* detection, an OAuth popup, or `window.open`, depending on the URL shape.
|
|
8
|
+
*
|
|
9
|
+
* Canonical wire-contract source. Assistant code imports the type directly
|
|
10
|
+
* from this file; external consumers import via `@vellumai/assistant-api`.
|
|
11
|
+
*
|
|
12
|
+
* `conversationId` is optional: emit sites with a conversation context
|
|
13
|
+
* (OAuth orchestrator, conversation-scoped tools) should set it on the
|
|
14
|
+
* inner message; CLI signal-file broadcasts and other global flows omit
|
|
15
|
+
* it. The parser never grafts the envelope-level routing key onto the
|
|
16
|
+
* typed event — the schema is the contract.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { z } from "zod";
|
|
20
|
+
|
|
21
|
+
export const OpenUrlEventSchema = z
|
|
22
|
+
.object({
|
|
23
|
+
type: z.literal("open_url"),
|
|
24
|
+
url: z.string().min(1),
|
|
25
|
+
title: z.string().optional(),
|
|
26
|
+
conversationId: z.string().optional(),
|
|
27
|
+
})
|
|
28
|
+
.strict();
|
|
29
|
+
|
|
30
|
+
export type OpenUrlEvent = z.infer<typeof OpenUrlEventSchema>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `relationship_state_updated` SSE event.
|
|
3
|
+
*
|
|
4
|
+
* Broadcast by the daemon after a successful write of
|
|
5
|
+
* `relationship-state.json` to disk. Subscribers refetch
|
|
6
|
+
* `GET /v1/home/state` to read the new state — payload here just
|
|
7
|
+
* carries the new `updatedAt` for cache-tag comparison.
|
|
8
|
+
*
|
|
9
|
+
* Canonical wire-contract source. Daemon code imports the type
|
|
10
|
+
* directly from this file; external consumers import via
|
|
11
|
+
* `@vellumai/assistant-api`.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { z } from "zod";
|
|
15
|
+
|
|
16
|
+
export const RelationshipStateUpdatedEventSchema = z
|
|
17
|
+
.object({
|
|
18
|
+
type: z.literal("relationship_state_updated"),
|
|
19
|
+
updatedAt: z.string(),
|
|
20
|
+
})
|
|
21
|
+
.strict();
|
|
22
|
+
|
|
23
|
+
export type RelationshipStateUpdatedEvent = z.infer<
|
|
24
|
+
typeof RelationshipStateUpdatedEventSchema
|
|
25
|
+
>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `tool_use_start` SSE event.
|
|
3
|
+
*
|
|
4
|
+
* Emitted by the daemon's agent loop when a tool invocation begins —
|
|
5
|
+
* carries the tool name, the structured input the model produced, and
|
|
6
|
+
* correlation ids for the conversation, the message, and the tool_use
|
|
7
|
+
* block itself.
|
|
8
|
+
*
|
|
9
|
+
* `messageId` is the database row id of the assistant message that owns
|
|
10
|
+
* this tool_use block; absent on streams produced by older daemons that
|
|
11
|
+
* pre-date the anchor protocol. Same semantics as
|
|
12
|
+
* `AssistantTextDeltaEvent.messageId`.
|
|
13
|
+
*
|
|
14
|
+
* Canonical wire-contract source. Daemon code imports the type
|
|
15
|
+
* directly from this file; external consumers import via
|
|
16
|
+
* `@vellumai/assistant-api`.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { z } from "zod";
|
|
20
|
+
|
|
21
|
+
export const ToolUseStartEventSchema = z
|
|
22
|
+
.object({
|
|
23
|
+
type: z.literal("tool_use_start"),
|
|
24
|
+
toolName: z.string(),
|
|
25
|
+
input: z.record(z.string(), z.unknown()),
|
|
26
|
+
toolUseId: z.string().optional(),
|
|
27
|
+
messageId: z.string().optional(),
|
|
28
|
+
conversationId: z.string().optional(),
|
|
29
|
+
})
|
|
30
|
+
.strict();
|
|
31
|
+
|
|
32
|
+
export type ToolUseStartEvent = z.infer<typeof ToolUseStartEventSchema>;
|
package/src/api/index.ts
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
import { AssistantTextDeltaEventSchema } from "./events/assistant-text-delta.js";
|
|
4
|
+
import { AssistantTurnStartEventSchema } from "./events/assistant-turn-start.js";
|
|
5
|
+
import { DocumentCommentCreatedEventSchema } from "./events/document-comment-created.js";
|
|
6
|
+
import { DocumentCommentDeletedEventSchema } from "./events/document-comment-deleted.js";
|
|
7
|
+
import { DocumentCommentReopenedEventSchema } from "./events/document-comment-reopened.js";
|
|
8
|
+
import { DocumentCommentResolvedEventSchema } from "./events/document-comment-resolved.js";
|
|
9
|
+
import { GenerationCancelledEventSchema } from "./events/generation-cancelled.js";
|
|
10
|
+
import { GenerationHandoffEventSchema } from "./events/generation-handoff.js";
|
|
11
|
+
import { MessageCompleteEventSchema } from "./events/message-complete.js";
|
|
12
|
+
import { OpenUrlEventSchema } from "./events/open-url.js";
|
|
13
|
+
import { RelationshipStateUpdatedEventSchema } from "./events/relationship-state-updated.js";
|
|
14
|
+
import { ToolUseStartEventSchema } from "./events/tool-use-start.js";
|
|
15
|
+
|
|
16
|
+
export { CALL_SITE_SYNTHETIC_AGENT_ERROR_MESSAGE } from "./constants/call-sites.js";
|
|
17
|
+
export {
|
|
18
|
+
type AssistantOutboundAttachment,
|
|
19
|
+
AssistantOutboundAttachmentSchema,
|
|
20
|
+
} from "./events/assistant-outbound-attachment.js";
|
|
21
|
+
export {
|
|
22
|
+
type AssistantTextDeltaEvent,
|
|
23
|
+
AssistantTextDeltaEventSchema,
|
|
24
|
+
} from "./events/assistant-text-delta.js";
|
|
25
|
+
export {
|
|
26
|
+
type AssistantTurnStartEvent,
|
|
27
|
+
AssistantTurnStartEventSchema,
|
|
28
|
+
} from "./events/assistant-turn-start.js";
|
|
29
|
+
export {
|
|
30
|
+
type DocumentCommentCreatedEvent,
|
|
31
|
+
DocumentCommentCreatedEventSchema,
|
|
32
|
+
} from "./events/document-comment-created.js";
|
|
33
|
+
export {
|
|
34
|
+
type DocumentCommentDeletedEvent,
|
|
35
|
+
DocumentCommentDeletedEventSchema,
|
|
36
|
+
} from "./events/document-comment-deleted.js";
|
|
37
|
+
export {
|
|
38
|
+
type DocumentCommentReopenedEvent,
|
|
39
|
+
DocumentCommentReopenedEventSchema,
|
|
40
|
+
} from "./events/document-comment-reopened.js";
|
|
41
|
+
export {
|
|
42
|
+
type DocumentCommentResolvedEvent,
|
|
43
|
+
DocumentCommentResolvedEventSchema,
|
|
44
|
+
} from "./events/document-comment-resolved.js";
|
|
45
|
+
export {
|
|
46
|
+
type GenerationCancelledEvent,
|
|
47
|
+
GenerationCancelledEventSchema,
|
|
48
|
+
} from "./events/generation-cancelled.js";
|
|
49
|
+
export {
|
|
50
|
+
type GenerationHandoffEvent,
|
|
51
|
+
GenerationHandoffEventSchema,
|
|
52
|
+
} from "./events/generation-handoff.js";
|
|
53
|
+
export {
|
|
54
|
+
type MessageCompleteEvent,
|
|
55
|
+
MessageCompleteEventSchema,
|
|
56
|
+
} from "./events/message-complete.js";
|
|
57
|
+
export { type OpenUrlEvent, OpenUrlEventSchema } from "./events/open-url.js";
|
|
58
|
+
export {
|
|
59
|
+
type RelationshipStateUpdatedEvent,
|
|
60
|
+
RelationshipStateUpdatedEventSchema,
|
|
61
|
+
} from "./events/relationship-state-updated.js";
|
|
62
|
+
export {
|
|
63
|
+
type ToolUseStartEvent,
|
|
64
|
+
ToolUseStartEventSchema,
|
|
65
|
+
} from "./events/tool-use-start.js";
|
|
66
|
+
export {
|
|
67
|
+
type LlmContextResponse,
|
|
68
|
+
LlmContextResponseSchema,
|
|
69
|
+
} from "./responses/llm-context-response.js";
|
|
70
|
+
export {
|
|
71
|
+
type LLMCallSummary,
|
|
72
|
+
LLMCallSummarySchema,
|
|
73
|
+
type LLMContextSection,
|
|
74
|
+
LLMContextSectionSchema,
|
|
75
|
+
type LLMRequestLogEntry,
|
|
76
|
+
LLMRequestLogEntrySchema,
|
|
77
|
+
} from "./responses/llm-request-log-entry.js";
|
|
78
|
+
export {
|
|
79
|
+
type MemoryCandidate,
|
|
80
|
+
MemoryCandidateSchema,
|
|
81
|
+
type MemoryDegradation,
|
|
82
|
+
MemoryDegradationSchema,
|
|
83
|
+
type MemoryRecallLog,
|
|
84
|
+
MemoryRecallLogSchema,
|
|
85
|
+
} from "./responses/memory-recall-log.js";
|
|
86
|
+
export {
|
|
87
|
+
type MemoryV2ActivationLog,
|
|
88
|
+
MemoryV2ActivationLogSchema,
|
|
89
|
+
type MemoryV2ConceptRow,
|
|
90
|
+
MemoryV2ConceptRowSchema,
|
|
91
|
+
type MemoryV2ConfigSnapshot,
|
|
92
|
+
MemoryV2ConfigSnapshotSchema,
|
|
93
|
+
} from "./responses/memory-v2-activation-log.js";
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Canonical SSE event schema for the assistant runtime.
|
|
97
|
+
*
|
|
98
|
+
* Discriminated union over the `type` field. Each member is the
|
|
99
|
+
* canonical wire-contract schema for a single event type, defined
|
|
100
|
+
* alongside the daemon code that emits it. Consumers (web client,
|
|
101
|
+
* gateway, evals) parse incoming events with this single schema
|
|
102
|
+
* rather than maintaining their own dispatch table.
|
|
103
|
+
*
|
|
104
|
+
* Add new events by exporting their schema from `./events/` and
|
|
105
|
+
* appending them to the union below. See `./README.md` for the full
|
|
106
|
+
* migration recipe.
|
|
107
|
+
*/
|
|
108
|
+
export const AssistantEventSchema = z.discriminatedUnion("type", [
|
|
109
|
+
AssistantTextDeltaEventSchema,
|
|
110
|
+
AssistantTurnStartEventSchema,
|
|
111
|
+
DocumentCommentCreatedEventSchema,
|
|
112
|
+
DocumentCommentDeletedEventSchema,
|
|
113
|
+
DocumentCommentReopenedEventSchema,
|
|
114
|
+
DocumentCommentResolvedEventSchema,
|
|
115
|
+
GenerationCancelledEventSchema,
|
|
116
|
+
GenerationHandoffEventSchema,
|
|
117
|
+
MessageCompleteEventSchema,
|
|
118
|
+
OpenUrlEventSchema,
|
|
119
|
+
RelationshipStateUpdatedEventSchema,
|
|
120
|
+
ToolUseStartEventSchema,
|
|
121
|
+
]);
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Inferred TypeScript union for every event currently covered by
|
|
125
|
+
* `AssistantEventSchema`. Consumers should reference this single type
|
|
126
|
+
* rather than re-listing the individual member types — as each new
|
|
127
|
+
* event migrates into the schema, it appears here automatically.
|
|
128
|
+
*/
|
|
129
|
+
export type AssistantEvent = z.infer<typeof AssistantEventSchema>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire contract for the full payload returned by
|
|
3
|
+
* `GET /v1/conversations/llm-context`. Hydrates the Overview / Memory
|
|
4
|
+
* / Prompt / Response tabs from a single fetch.
|
|
5
|
+
*
|
|
6
|
+
* Canonical wire-contract source. Assistant code imports the types
|
|
7
|
+
* directly from this file via relative paths; external consumers
|
|
8
|
+
* (web client, gateway, evals) import via `@vellumai/assistant-api`.
|
|
9
|
+
*
|
|
10
|
+
* The route is reachable on web through the gateway's runtime-proxy
|
|
11
|
+
* wildcard at
|
|
12
|
+
* `/v1/assistants/{assistantId}/conversations/llm-context/`. The
|
|
13
|
+
* response is built in `assistant/src/runtime/routes/conversation-query-routes.ts`.
|
|
14
|
+
*
|
|
15
|
+
* `conversationTotalEstimatedCostUsd` is the running total of priced
|
|
16
|
+
* LLM costs across every call in the conversation, sourced from the
|
|
17
|
+
* daemon's `conversations.total_estimated_cost` column. The field is
|
|
18
|
+
* optional because older daemons predate it — treat undefined / null
|
|
19
|
+
* as "unavailable".
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import { z } from "zod";
|
|
23
|
+
|
|
24
|
+
import { LLMRequestLogEntrySchema } from "./llm-request-log-entry.js";
|
|
25
|
+
import { MemoryRecallLogSchema } from "./memory-recall-log.js";
|
|
26
|
+
import { MemoryV2ActivationLogSchema } from "./memory-v2-activation-log.js";
|
|
27
|
+
|
|
28
|
+
export const LlmContextResponseSchema = z.object({
|
|
29
|
+
messageId: z.string().nullish(),
|
|
30
|
+
conversationKey: z.string().nullish(),
|
|
31
|
+
conversationId: z.string().nullish(),
|
|
32
|
+
conversationKind: z.string(),
|
|
33
|
+
conversationTotalEstimatedCostUsd: z.number().nullish(),
|
|
34
|
+
logs: z.array(LLMRequestLogEntrySchema),
|
|
35
|
+
memoryRecall: MemoryRecallLogSchema.nullable(),
|
|
36
|
+
memoryV2Activation: MemoryV2ActivationLogSchema.nullable(),
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export type LlmContextResponse = z.infer<typeof LlmContextResponseSchema>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire contract for a single LLM request log row, as returned by
|
|
3
|
+
* `GET /v1/conversations/llm-context`. Hydrates each call rail entry
|
|
4
|
+
* + tab in the inspector.
|
|
5
|
+
*
|
|
6
|
+
* Canonical wire-contract source. Assistant code imports the types
|
|
7
|
+
* directly from this file via relative paths; external consumers (web
|
|
8
|
+
* client, gateway, evals) import via `@vellumai/assistant-api`.
|
|
9
|
+
*
|
|
10
|
+
* The route is implemented in
|
|
11
|
+
* `assistant/src/runtime/routes/conversation-query-routes.ts` and the
|
|
12
|
+
* row shape is constructed by `normalizeLlmContextLog` there. Keep the
|
|
13
|
+
* schemas here aligned with that constructor — the schema IS the
|
|
14
|
+
* contract; types are `z.infer`-derived.
|
|
15
|
+
*
|
|
16
|
+
* `requestPayload` / `responsePayload` are always `null` on the list
|
|
17
|
+
* endpoint; raw JSON is fetched lazily through
|
|
18
|
+
* `/v1/llm-request-logs/{logId}/payload`.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import { z } from "zod";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Provider-normalized summary attached to each request log. `null` /
|
|
25
|
+
* missing fields are common — formatters fall back to a shared
|
|
26
|
+
* "Unavailable" placeholder.
|
|
27
|
+
*
|
|
28
|
+
* `durationMs` isn't in the macOS reference shape today but the daemon
|
|
29
|
+
* already populates it for some providers — surfaced when present so
|
|
30
|
+
* web debugging gets the extra signal.
|
|
31
|
+
*/
|
|
32
|
+
export const LLMCallSummarySchema = z.object({
|
|
33
|
+
provider: z.string().nullish(),
|
|
34
|
+
model: z.string().nullish(),
|
|
35
|
+
status: z.string().nullish(),
|
|
36
|
+
inputTokens: z.number().nullish(),
|
|
37
|
+
outputTokens: z.number().nullish(),
|
|
38
|
+
cacheCreationInputTokens: z.number().nullish(),
|
|
39
|
+
cacheReadInputTokens: z.number().nullish(),
|
|
40
|
+
stopReason: z.string().nullish(),
|
|
41
|
+
requestMessageCount: z.number().nullish(),
|
|
42
|
+
requestToolCount: z.number().nullish(),
|
|
43
|
+
responseMessageCount: z.number().nullish(),
|
|
44
|
+
responseToolCallCount: z.number().nullish(),
|
|
45
|
+
responsePreview: z.string().nullish(),
|
|
46
|
+
toolCallNames: z.array(z.string()).nullish(),
|
|
47
|
+
estimatedCostUsd: z.number().nullish(),
|
|
48
|
+
durationMs: z.number().nullish(),
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
export type LLMCallSummary = z.infer<typeof LLMCallSummarySchema>;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* A single normalized request- or response-side section. The daemon
|
|
55
|
+
* splits a provider payload into kind-tagged blocks before returning;
|
|
56
|
+
* each block becomes one card in the Prompt / Response tabs.
|
|
57
|
+
*/
|
|
58
|
+
export const LLMContextSectionSchema = z.object({
|
|
59
|
+
kind: z.string(),
|
|
60
|
+
label: z.string().nullish(),
|
|
61
|
+
role: z.string().nullish(),
|
|
62
|
+
text: z.string().nullish(),
|
|
63
|
+
toolName: z.string().nullish(),
|
|
64
|
+
data: z.unknown().optional(),
|
|
65
|
+
language: z.string().nullish(),
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
export type LLMContextSection = z.infer<typeof LLMContextSectionSchema>;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* One LLM request log row.
|
|
72
|
+
*
|
|
73
|
+
* `callSite` is the logical call site that produced this row —
|
|
74
|
+
* `mainAgent`, `compactionAgent`, `syntheticAgentErrorMessage`, etc.
|
|
75
|
+
* `null` on pre-migration-264 rows or callers that hadn't been wired
|
|
76
|
+
* through yet. The inspector branches on this value alone to
|
|
77
|
+
* distinguish real LLM calls from synthetic error-message rows. See
|
|
78
|
+
* `../constants/call-sites.ts` for the canonical identifiers.
|
|
79
|
+
*/
|
|
80
|
+
export const LLMRequestLogEntrySchema = z.object({
|
|
81
|
+
id: z.string(),
|
|
82
|
+
createdAt: z.number(),
|
|
83
|
+
requestPayload: z.null(),
|
|
84
|
+
responsePayload: z.null(),
|
|
85
|
+
provider: z.string().nullish(),
|
|
86
|
+
summary: LLMCallSummarySchema.nullish(),
|
|
87
|
+
requestSections: z.array(LLMContextSectionSchema).nullish(),
|
|
88
|
+
responseSections: z.array(LLMContextSectionSchema).nullish(),
|
|
89
|
+
agentLoopExitReason: z.string().nullish(),
|
|
90
|
+
callSite: z.string().nullish(),
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
export type LLMRequestLogEntry = z.infer<typeof LLMRequestLogEntrySchema>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire contract for the memory-recall log surfaced in the inspector's
|
|
3
|
+
* Memory tab. Mirrors `MemoryRecallLog` from
|
|
4
|
+
* `assistant/src/memory/memory-recall-log-store.ts`.
|
|
5
|
+
*
|
|
6
|
+
* Canonical wire-contract source. Assistant code imports the types
|
|
7
|
+
* directly from this file via relative paths; external consumers
|
|
8
|
+
* (web client, gateway, evals) import via `@vellumai/assistant-api`.
|
|
9
|
+
*
|
|
10
|
+
* Returned as part of `LlmContextResponse` — see
|
|
11
|
+
* `./llm-context-response.ts`.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { z } from "zod";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A single recalled memory candidate, normalized by the daemon from
|
|
18
|
+
* the SSE-event format into inspector format.
|
|
19
|
+
*/
|
|
20
|
+
export const MemoryCandidateSchema = z.object({
|
|
21
|
+
nodeId: z.string(),
|
|
22
|
+
score: z.number(),
|
|
23
|
+
semanticSimilarity: z.number(),
|
|
24
|
+
recencyBoost: z.number(),
|
|
25
|
+
type: z.string().optional(),
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
export type MemoryCandidate = z.infer<typeof MemoryCandidateSchema>;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Degradation details when memory recall ran in a degraded mode.
|
|
32
|
+
*/
|
|
33
|
+
export const MemoryDegradationSchema = z.object({
|
|
34
|
+
reason: z.string(),
|
|
35
|
+
semanticUnavailable: z.boolean(),
|
|
36
|
+
fallbackSources: z.array(z.string()),
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export type MemoryDegradation = z.infer<typeof MemoryDegradationSchema>;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Memory recall log shape.
|
|
43
|
+
*/
|
|
44
|
+
export const MemoryRecallLogSchema = z.object({
|
|
45
|
+
enabled: z.boolean(),
|
|
46
|
+
degraded: z.boolean(),
|
|
47
|
+
provider: z.string().nullable(),
|
|
48
|
+
model: z.string().nullable(),
|
|
49
|
+
degradation: MemoryDegradationSchema.nullable(),
|
|
50
|
+
semanticHits: z.number().nullish(),
|
|
51
|
+
mergedCount: z.number().nullish(),
|
|
52
|
+
selectedCount: z.number().nullish(),
|
|
53
|
+
tier1Count: z.number().nullish(),
|
|
54
|
+
tier2Count: z.number().nullish(),
|
|
55
|
+
hybridSearchLatencyMs: z.number().nullish(),
|
|
56
|
+
sparseVectorUsed: z.boolean().nullish(),
|
|
57
|
+
injectedTokens: z.number().nullish(),
|
|
58
|
+
latencyMs: z.number().nullish(),
|
|
59
|
+
topCandidates: z.array(MemoryCandidateSchema),
|
|
60
|
+
injectedText: z.string().nullable(),
|
|
61
|
+
reason: z.string().nullable(),
|
|
62
|
+
queryContext: z.string().nullable(),
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
export type MemoryRecallLog = z.infer<typeof MemoryRecallLogSchema>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire contract for the memory v2 activation log surfaced in the
|
|
3
|
+
* inspector's Memory tab. Mirrors the return value of
|
|
4
|
+
* `getMemoryV2ActivationLogByMessageIds` in
|
|
5
|
+
* `assistant/src/memory/memory-v2-activation-log-store.ts`.
|
|
6
|
+
*
|
|
7
|
+
* Canonical wire-contract source. Assistant code imports the types
|
|
8
|
+
* directly from this file via relative paths; external consumers
|
|
9
|
+
* (web client, gateway, evals) import via `@vellumai/assistant-api`.
|
|
10
|
+
*
|
|
11
|
+
* Returned as part of `LlmContextResponse` — see
|
|
12
|
+
* `./llm-context-response.ts`.
|
|
13
|
+
*
|
|
14
|
+
* Note: daemon emits the `config` block with snake_case keys; the
|
|
15
|
+
* schema below preserves that on the wire.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { z } from "zod";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* One concept row in the V2 activation log. Mirrors
|
|
22
|
+
* `MemoryV2ConceptRowRecord` from
|
|
23
|
+
* `assistant/src/memory/memory-v2-activation-log-store.ts`.
|
|
24
|
+
*
|
|
25
|
+
* `source` and `status` are open-ended strings on the wire — the
|
|
26
|
+
* daemon emits known values like `prior_state`, `ann_top50`, `both`
|
|
27
|
+
* for `source` and `in_context`, `injected`, `not_injected`,
|
|
28
|
+
* `page_missing` for `status`, but the schema stays permissive so a
|
|
29
|
+
* new daemon value doesn't break parsing on the FE.
|
|
30
|
+
*/
|
|
31
|
+
export const MemoryV2ConceptRowSchema = z.object({
|
|
32
|
+
slug: z.string(),
|
|
33
|
+
finalActivation: z.number(),
|
|
34
|
+
ownActivation: z.number(),
|
|
35
|
+
priorActivation: z.number(),
|
|
36
|
+
simUser: z.number(),
|
|
37
|
+
simAssistant: z.number(),
|
|
38
|
+
simNow: z.number(),
|
|
39
|
+
simUserRerankBoost: z.number().optional(),
|
|
40
|
+
simAssistantRerankBoost: z.number().optional(),
|
|
41
|
+
inRerankPool: z.boolean().optional(),
|
|
42
|
+
spreadContribution: z.number(),
|
|
43
|
+
source: z.string(),
|
|
44
|
+
status: z.string(),
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
export type MemoryV2ConceptRow = z.infer<typeof MemoryV2ConceptRowSchema>;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Config snapshot used when the V2 activation ran. Mirrors
|
|
51
|
+
* `MemoryV2ConfigSnapshot` (daemon uses snake_case keys).
|
|
52
|
+
*/
|
|
53
|
+
export const MemoryV2ConfigSnapshotSchema = z.object({
|
|
54
|
+
d: z.number(),
|
|
55
|
+
c_user: z.number(),
|
|
56
|
+
c_assistant: z.number(),
|
|
57
|
+
c_now: z.number(),
|
|
58
|
+
k: z.number(),
|
|
59
|
+
hops: z.number(),
|
|
60
|
+
top_k: z.number(),
|
|
61
|
+
epsilon: z.number(),
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
export type MemoryV2ConfigSnapshot = z.infer<
|
|
65
|
+
typeof MemoryV2ConfigSnapshotSchema
|
|
66
|
+
>;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Memory v2 activation log shape.
|
|
70
|
+
*/
|
|
71
|
+
export const MemoryV2ActivationLogSchema = z.object({
|
|
72
|
+
turn: z.number(),
|
|
73
|
+
mode: z.string(),
|
|
74
|
+
concepts: z.array(MemoryV2ConceptRowSchema),
|
|
75
|
+
config: MemoryV2ConfigSnapshotSchema,
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
export type MemoryV2ActivationLog = z.infer<typeof MemoryV2ActivationLogSchema>;
|