@vellumai/assistant 0.8.5 → 0.8.7
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 +1 -1
- package/Dockerfile +1 -0
- package/bun.lock +11 -2
- package/bunfig.toml +6 -1
- package/docker-entrypoint.sh +8 -6
- package/docs/credential-execution-service.md +6 -6
- package/docs/plugins.md +67 -31
- package/examples/plugins/echo/register.ts +4 -7
- package/knip.json +1 -0
- package/node_modules/@vellumai/environments/bun.lock +24 -0
- package/node_modules/@vellumai/environments/package.json +18 -0
- package/node_modules/@vellumai/environments/src/__tests__/package-boundary.test.ts +95 -0
- package/node_modules/@vellumai/environments/src/index.ts +11 -0
- package/node_modules/@vellumai/environments/src/seeds.ts +73 -0
- package/node_modules/@vellumai/environments/src/types.ts +70 -0
- package/node_modules/@vellumai/environments/tsconfig.json +20 -0
- package/node_modules/@vellumai/skill-host-contracts/src/assistant-event.ts +11 -0
- package/node_modules/@vellumai/skill-host-contracts/src/client.ts +15 -17
- package/node_modules/@vellumai/skill-host-contracts/src/skill-host.ts +10 -3
- package/node_modules/@vellumai/skill-host-contracts/src/tool-types.ts +16 -14
- package/openapi.yaml +5585 -469
- package/package.json +7 -3
- package/scripts/generate-openapi.ts +20 -13
- package/src/__tests__/actor-token-service.test.ts +3 -2
- package/src/__tests__/agent-loop-callsite-precedence.test.ts +42 -80
- package/src/__tests__/agent-loop-exit-reason.test.ts +336 -42
- package/src/__tests__/agent-loop-mutable-latest-user-message.test.ts +141 -0
- package/src/__tests__/agent-loop-override-profile.test.ts +21 -33
- package/src/__tests__/agent-loop-provider-error-recording.test.ts +6 -4
- package/src/__tests__/agent-loop-thinking.test.ts +17 -12
- package/src/__tests__/agent-loop.test.ts +207 -341
- package/src/__tests__/agent-wake-disk-pressure-callsite.test.ts +5 -2
- package/src/__tests__/agent-wake-override-profile.test.ts +23 -40
- 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 +201 -55
- package/src/__tests__/app-builder-skill-instructions.test.ts +22 -0
- package/src/__tests__/app-control-flow.test.ts +5 -0
- package/src/__tests__/approval-cascade.test.ts +5 -11
- package/src/__tests__/approval-routes-http.test.ts +13 -15
- package/src/__tests__/assert-not-live-db.ts +79 -0
- package/src/__tests__/assistant-event.test.ts +15 -0
- package/src/__tests__/assistant-feature-flags-integration.test.ts +11 -27
- package/src/__tests__/audit-log-rotation.test.ts +2 -2
- package/src/__tests__/auto-analysis-end-to-end.test.ts +6 -6
- package/src/__tests__/avatar-e2e.test.ts +7 -37
- package/src/__tests__/avatar-generator.test.ts +12 -42
- package/src/__tests__/avatar-identity-sync.test.ts +28 -3
- package/src/__tests__/background-shell-bash.test.ts +3 -7
- package/src/__tests__/background-workers-disk-pressure.test.ts +5 -8
- package/src/__tests__/browser-skill-endstate.test.ts +3 -3
- package/src/__tests__/btw-routes.test.ts +10 -14
- package/src/__tests__/call-controller.test.ts +3 -2
- package/src/__tests__/call-pointer-messages.test.ts +5 -3
- package/src/__tests__/call-site-routing-provider.test.ts +22 -40
- package/src/__tests__/catalog-files.test.ts +1 -0
- package/src/__tests__/channel-approval-routes.test.ts +51 -22
- package/src/__tests__/channel-approvals.test.ts +3 -1
- package/src/__tests__/channel-guardian.test.ts +3 -2
- package/src/__tests__/channel-invite-transport.test.ts +1 -5
- package/src/__tests__/channel-readiness-routes.test.ts +0 -4
- package/src/__tests__/channel-readiness-slack-remote.test.ts +170 -0
- package/src/__tests__/channel-reply-delivery.test.ts +35 -0
- package/src/__tests__/channel-retry-sweep.test.ts +388 -79
- package/src/__tests__/checker.test.ts +12 -12
- package/src/__tests__/circuit-breaker-pipeline.test.ts +3 -3
- package/src/__tests__/clawhub-files.test.ts +1 -0
- package/src/__tests__/compaction-events.test.ts +6 -17
- package/src/__tests__/compaction-pipeline.test.ts +1 -1
- package/src/__tests__/compaction-timeout-recovery.test.ts +37 -48
- package/src/__tests__/compaction-trail-store.test.ts +186 -0
- package/src/__tests__/compactor-call-site-logging.test.ts +1 -0
- package/src/__tests__/compactor-image-manifest-trust.test.ts +112 -0
- package/src/__tests__/compactor-preserved-tail-count.test.ts +1 -0
- package/src/__tests__/computer-use-skill-manifest-regression.test.ts +7 -5
- package/src/__tests__/computer-use-tools.test.ts +14 -16
- 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__/config-watcher.test.ts +28 -0
- package/src/__tests__/connection-model-compat.test.ts +83 -0
- package/src/__tests__/contacts-tools.test.ts +3 -2
- package/src/__tests__/context-search-agent-runner.test.ts +6 -3
- package/src/__tests__/context-token-estimator.test.ts +56 -0
- package/src/__tests__/context-window-manager-compact-retry.test.ts +291 -0
- package/src/__tests__/conversation-abort-tool-results.test.ts +19 -7
- package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +4 -2
- package/src/__tests__/conversation-agent-loop-handlers-max-tokens.test.ts +55 -0
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +13 -27
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +464 -90
- package/src/__tests__/conversation-agent-loop.test.ts +1069 -64
- package/src/__tests__/conversation-analysis-routes.test.ts +2 -3
- package/src/__tests__/conversation-app-control-instantiation.test.ts +29 -19
- package/src/__tests__/conversation-app-control-lifecycle.test.ts +2 -1
- 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 +20 -10
- package/src/__tests__/conversation-confirmation-signals.test.ts +16 -45
- package/src/__tests__/conversation-disk-view-integration.test.ts +2 -2
- package/src/__tests__/conversation-disk-view.test.ts +10 -17
- package/src/__tests__/conversation-error.test.ts +30 -0
- package/src/__tests__/conversation-fork-crud.test.ts +132 -157
- package/src/__tests__/conversation-fork-route.test.ts +19 -16
- 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-init.benchmark.test.ts +6 -6
- package/src/__tests__/conversation-lifecycle.test.ts +4 -2
- package/src/__tests__/conversation-list-source.test.ts +3 -2
- package/src/__tests__/conversation-load-history-repair.test.ts +5 -3
- package/src/__tests__/conversation-load-history-stripped.test.ts +2 -1
- package/src/__tests__/conversation-message-sync-tags.test.ts +3 -4
- package/src/__tests__/conversation-pairing.test.ts +87 -4
- package/src/__tests__/conversation-pre-run-repair.test.ts +1 -1
- package/src/__tests__/conversation-process-app-control-preactivation.test.ts +30 -7
- package/src/__tests__/conversation-process-callsite.test.ts +28 -30
- package/src/__tests__/conversation-provider-retry-repair.test.ts +58 -44
- package/src/__tests__/conversation-queue.test.ts +603 -455
- package/src/__tests__/conversation-routes-disk-view.test.ts +6 -20
- package/src/__tests__/conversation-routes-guardian-reply.test.ts +35 -10
- package/src/__tests__/conversation-routes-slash-commands.test.ts +35 -4
- package/src/__tests__/conversation-runtime-assembly.test.ts +98 -22
- package/src/__tests__/conversation-runtime-workspace.test.ts +19 -1
- package/src/__tests__/conversation-skill-tools.test.ts +38 -142
- package/src/__tests__/conversation-slash-queue.test.ts +120 -62
- package/src/__tests__/conversation-slash-unknown.test.ts +18 -15
- package/src/__tests__/conversation-speed-override.test.ts +9 -22
- package/src/__tests__/conversation-stream-state.test.ts +484 -0
- package/src/__tests__/conversation-surfaces-action-delivery.test.ts +52 -15
- package/src/__tests__/conversation-surfaces-app-control.test.ts +32 -4
- 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 +8 -5
- package/src/__tests__/conversation-surfaces-table-action.test.ts +13 -32
- package/src/__tests__/conversation-sync-tags.test.ts +128 -12
- package/src/__tests__/conversation-title-service.test.ts +1 -0
- package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +53 -11
- package/src/__tests__/conversation-unread-route.test.ts +14 -2
- package/src/__tests__/conversation-usage.test.ts +1 -2
- package/src/__tests__/conversation-wipe.test.ts +1 -1
- package/src/__tests__/conversation-workspace-cache-state.test.ts +4 -1
- package/src/__tests__/conversation-workspace-injection.test.ts +53 -22
- package/src/__tests__/conversation-workspace-tool-tracking.test.ts +32 -7
- 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 +10 -12
- package/src/__tests__/credential-execution-tools.test.ts +1 -2
- package/src/__tests__/credential-health-service.test.ts +252 -3
- package/src/__tests__/credential-security-invariants.test.ts +5 -6
- package/src/__tests__/credential-vault-unit.test.ts +19 -19
- package/src/__tests__/credential-vault.test.ts +5 -5
- package/src/__tests__/cross-provider-web-search.test.ts +61 -3
- package/src/__tests__/cu-unified-flow.test.ts +26 -1
- 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-schedule-syntax-migration.test.ts +11 -0
- package/src/__tests__/db-test-helpers.ts +58 -0
- package/src/__tests__/disk-pressure-guard.test.ts +119 -36
- package/src/__tests__/disk-pressure-lifecycle.test.ts +13 -10
- package/src/__tests__/disk-pressure-routes.test.ts +9 -35
- package/src/__tests__/disk-pressure-tools.test.ts +0 -4
- package/src/__tests__/dm-persistence.test.ts +33 -42
- 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 +68 -0
- package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +5 -4
- package/src/__tests__/edit-propagation.test.ts +1 -2
- package/src/__tests__/empty-response-pipeline.test.ts +127 -5
- 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 +3 -2
- package/src/__tests__/first-greeting.test.ts +103 -12
- package/src/__tests__/gateway-flag-listener.test.ts +0 -1
- package/src/__tests__/gemini-inline-media.test.ts +78 -0
- package/src/__tests__/gemini-provider.test.ts +375 -26
- package/src/__tests__/guardian-action-sweep.test.ts +3 -2
- package/src/__tests__/guardian-outbound-http.test.ts +3 -2
- package/src/__tests__/guardian-routing-state.test.ts +60 -71
- package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +48 -3
- package/src/__tests__/handlers-user-message-approval-consumption.test.ts +10 -7
- package/src/__tests__/heartbeat-disk-pressure.test.ts +2 -0
- package/src/__tests__/heartbeat-service.test.ts +3 -1
- package/src/__tests__/helpers/mock-logger.ts +26 -0
- package/src/__tests__/history-repair-hook.test.ts +161 -0
- package/src/__tests__/history-repair-observability.test.ts +1 -1
- package/src/__tests__/history-repair.test.ts +2 -1
- package/src/__tests__/host-app-control-proxy.test.ts +2 -0
- package/src/__tests__/host-bash-routes.test.ts +1 -0
- package/src/__tests__/host-cu-proxy.test.ts +2 -0
- package/src/__tests__/host-cu-routes-targeted.test.ts +1 -0
- package/src/__tests__/host-file-edit-tool.test.ts +4 -2
- package/src/__tests__/host-file-proxy.test.ts +31 -0
- package/src/__tests__/host-file-read-tool.test.ts +4 -2
- package/src/__tests__/host-file-routes-targeted.test.ts +1 -0
- package/src/__tests__/host-file-write-tool.test.ts +9 -3
- package/src/__tests__/host-proxy-preactivation.test.ts +53 -14
- package/src/__tests__/host-shell-tool.test.ts +11 -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 +31 -9
- package/src/__tests__/identity-intro-cache.test.ts +154 -22
- package/src/__tests__/inbound-slack-persistence.test.ts +51 -74
- package/src/__tests__/inference-profile-reaper.test.ts +3 -2
- package/src/__tests__/inference-profile-session-ipc.test.ts +3 -2
- package/src/__tests__/injector-background-turn.test.ts +1 -1
- package/src/__tests__/injector-chain.test.ts +1 -1
- package/src/__tests__/injector-disk-pressure.test.ts +4 -18
- package/src/__tests__/injector-document-comments.test.ts +1 -1
- package/src/__tests__/injector-pkb-v2-silenced.test.ts +1 -1
- package/src/__tests__/injector-v3-suppression.test.ts +220 -0
- package/src/__tests__/inline-skill-load-permissions.test.ts +4 -4
- package/src/__tests__/list-messages-attachments.test.ts +7 -8
- package/src/__tests__/list-messages-hidden-metadata.test.ts +93 -11
- package/src/__tests__/list-messages-page-latest.test.ts +0 -1
- package/src/__tests__/list-messages-tool-merge.test.ts +36 -6
- package/src/__tests__/llm-call-pipeline.test.ts +21 -15
- package/src/__tests__/llm-context-normalization.test.ts +42 -0
- package/src/__tests__/llm-request-log-turn-query.test.ts +42 -86
- package/src/__tests__/llm-resolver.test.ts +346 -39
- package/src/__tests__/llm-schema.test.ts +1 -1
- package/src/__tests__/llm-usage-store.test.ts +45 -0
- package/src/__tests__/log-export-routes.test.ts +59 -0
- package/src/__tests__/managed-skill-lifecycle.test.ts +1 -8
- package/src/__tests__/manual-token-reconciliation.test.ts +76 -1
- package/src/__tests__/mcp-abort-signal.test.ts +14 -0
- package/src/__tests__/mcp-auth-routes.test.ts +15 -10
- package/src/__tests__/mcp-client-auth.test.ts +14 -0
- package/src/__tests__/mcp-health-check.test.ts +18 -13
- package/src/__tests__/memory-retrieval-pipeline.test.ts +1 -1
- package/src/__tests__/memory-v2-static-injector.test.ts +1 -1
- package/src/__tests__/messaging-send-tool.test.ts +9 -4
- package/src/__tests__/migration-export-http.test.ts +12 -12
- package/src/__tests__/migration-import-commit-http.test.ts +8 -8
- package/src/__tests__/migration-import-from-url.test.ts +3 -3
- package/src/__tests__/migration-import-preflight-http.test.ts +7 -7
- package/src/__tests__/migration-validate-http.test.ts +3 -3
- package/src/__tests__/mock-gateway-ipc.ts +18 -2
- package/src/__tests__/model-intents.test.ts +3 -3
- package/src/__tests__/native-web-search.test.ts +44 -22
- package/src/__tests__/notification-decision-identity.test.ts +9 -18
- package/src/__tests__/notification-decision-recipient-context.test.ts +3 -6
- package/src/__tests__/notification-deep-link.test.ts +62 -0
- package/src/__tests__/oauth-commands-routes.test.ts +38 -1
- 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 +13 -2
- package/src/__tests__/openai-provider.test.ts +74 -79
- package/src/__tests__/openai-responses-provider.test.ts +90 -86
- package/src/__tests__/openrouter-provider-only.test.ts +27 -5
- package/src/__tests__/outbound-slack-persistence.test.ts +48 -2
- package/src/__tests__/overflow-reduce-pipeline.test.ts +2 -4
- package/src/__tests__/parallel-tool.benchmark.test.ts +24 -36
- package/src/__tests__/persistence-pipeline.test.ts +154 -27
- package/src/__tests__/persistence-secret-redaction.test.ts +85 -13
- package/src/__tests__/pipeline-runner.test.ts +2 -3
- package/src/__tests__/plugin-bootstrap.test.ts +60 -36
- package/src/__tests__/plugin-route-contribution.test.ts +6 -16
- package/src/__tests__/plugin-skill-contribution.test.ts +7 -17
- package/src/__tests__/plugin-tool-contribution.test.ts +51 -64
- package/src/__tests__/plugin-types.test.ts +7 -14
- package/src/__tests__/prechat-onboarding-contract.test.ts +23 -0
- package/src/__tests__/process-message-background-slack.test.ts +38 -32
- package/src/__tests__/process-message-display-content.test.ts +49 -64
- package/src/__tests__/provider-catalog-visibility.test.ts +9 -9
- package/src/__tests__/provider-commit-message-generator.test.ts +19 -14
- package/src/__tests__/provider-error-scenarios.test.ts +7 -6
- package/src/__tests__/provider-platform-proxy-integration.test.ts +215 -8
- package/src/__tests__/provider-registry-ollama.test.ts +45 -22
- package/src/__tests__/provider-send-message-override-profile.test.ts +9 -25
- package/src/__tests__/provider-streaming.benchmark.test.ts +12 -22
- package/src/__tests__/provider-usage-tracking.test.ts +0 -6
- package/src/__tests__/ratelimit.test.ts +9 -4
- 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 +82 -76
- package/src/__tests__/relay-server.test.ts +30 -23
- package/src/__tests__/retry-openrouter-only-normalization.test.ts +5 -8
- package/src/__tests__/retry-thinking-tool-choice.test.ts +10 -13
- package/src/__tests__/retry-verbosity-normalization.test.ts +5 -8
- package/src/__tests__/runtime-attachment-metadata.test.ts +3 -2
- package/src/__tests__/runtime-events-sse-reconnect.test.ts +353 -0
- package/src/__tests__/schedule-routes.test.ts +80 -10
- package/src/__tests__/schedule-store.test.ts +83 -1
- package/src/__tests__/schedule-tools.test.ts +125 -0
- package/src/__tests__/scheduler-reuse-conversation.test.ts +48 -3
- package/src/__tests__/secret-ingress-http.test.ts +7 -3
- package/src/__tests__/secret-prompt-log-hygiene.test.ts +11 -7
- package/src/__tests__/secret-prompter-channel-fallback.test.ts +11 -9
- package/src/__tests__/secret-response-routing.test.ts +13 -11
- package/src/__tests__/secure-keys.test.ts +3 -3
- package/src/__tests__/send-endpoint-busy.test.ts +83 -43
- package/src/__tests__/server-history-render.test.ts +4 -1
- package/src/__tests__/shell-observability.test.ts +249 -0
- package/src/__tests__/skill-feature-flags-integration.test.ts +19 -21
- package/src/__tests__/skill-feature-flags.test.ts +20 -22
- package/src/__tests__/skill-load-feature-flag.test.ts +15 -15
- package/src/__tests__/skill-projection-feature-flag.test.ts +44 -30
- package/src/__tests__/skill-projection.benchmark.test.ts +5 -7
- package/src/__tests__/skill-tool-factory.test.ts +96 -95
- package/src/__tests__/skills-files-catalog-fallback.test.ts +10 -0
- package/src/__tests__/skillssh-files.test.ts +1 -0
- package/src/__tests__/slack-channel-config.test.ts +3 -3
- package/src/__tests__/starter-task-flow.test.ts +6 -6
- package/src/__tests__/strip-memory-injections.test.ts +102 -14
- package/src/__tests__/subagent-call-site-routing.test.ts +13 -5
- 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 +5 -4
- 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 +4 -3
- package/src/__tests__/sync-message-contract.test.ts +19 -16
- package/src/__tests__/system-prompt.test.ts +92 -0
- package/src/__tests__/terminal-tools.test.ts +3 -24
- package/src/__tests__/test-preload-verifier.ts +68 -0
- package/src/__tests__/test-preload.ts +32 -39
- package/src/__tests__/thread-backfill.test.ts +4 -9
- package/src/__tests__/title-generate-pipeline.test.ts +1 -1
- package/src/__tests__/token-estimate-pipeline.test.ts +2 -4
- package/src/__tests__/tool-error-pipeline.test.ts +2 -2
- package/src/__tests__/tool-execute-pipeline.test.ts +1 -1
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +20 -7
- package/src/__tests__/tool-executor.test.ts +55 -10
- package/src/__tests__/tool-preview-lifecycle.test.ts +14 -11
- package/src/__tests__/tool-result-metadata-plumbing.test.ts +1 -0
- package/src/__tests__/tool-result-truncate-pipeline.test.ts +9 -12
- package/src/__tests__/tool-result-truncation.test.ts +3 -1
- package/src/__tests__/tools-audio-read.test.ts +113 -0
- package/src/__tests__/turn-boundary-resolution.test.ts +44 -84
- package/src/__tests__/turn-events-store.test.ts +11 -7
- package/src/__tests__/twilio-routes.test.ts +3 -2
- package/src/__tests__/validate-input.test.ts +381 -0
- package/src/__tests__/verification-control-plane-policy.test.ts +1 -0
- package/src/__tests__/voice-scoped-grant-consumer.test.ts +10 -7
- package/src/__tests__/voice-session-bridge.test.ts +50 -35
- 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 +143 -31
- package/src/acp/prepare-agent-env.ts +52 -11
- package/src/acp/session-manager.ts +5 -6
- package/src/agent/compaction-circuit.ts +140 -0
- package/src/agent/loop.ts +489 -85
- package/src/api/README.md +126 -2
- package/src/api/constants/call-sites.ts +27 -0
- package/src/api/constants/tool-execution.ts +21 -0
- package/src/api/events/assistant-activity-state.ts +75 -0
- package/src/api/events/assistant-outbound-attachment.ts +49 -0
- package/src/api/events/assistant-text-delta.ts +30 -0
- package/src/api/events/assistant-turn-start.ts +31 -0
- package/src/api/events/avatar-updated.ts +24 -0
- package/src/api/events/compaction-circuit-closed.ts +26 -0
- package/src/api/events/compaction-circuit-open.ts +28 -0
- package/src/api/events/confirmation-request.ts +114 -0
- package/src/api/events/contact-request.ts +33 -0
- package/src/api/events/conversation-error.ts +77 -0
- package/src/api/events/conversation-list-invalidated.ts +38 -0
- package/src/api/events/conversation-title-updated.ts +24 -0
- package/src/api/events/disk-pressure-status-changed.ts +61 -0
- package/src/api/events/document-comment-created.ts +44 -0
- package/src/api/events/document-comment-deleted.ts +22 -0
- package/src/api/events/document-comment-reopened.ts +23 -0
- package/src/api/events/document-comment-resolved.ts +25 -0
- package/src/api/events/document-editor-update.ts +27 -0
- package/src/api/events/error.ts +32 -0
- package/src/api/events/generation-cancelled.ts +22 -0
- package/src/api/events/generation-handoff.ts +39 -0
- package/src/api/events/home-feed-updated.ts +26 -0
- package/src/api/events/identity-changed.ts +32 -0
- package/src/api/events/interaction-resolved.ts +50 -0
- package/src/api/events/message-complete.ts +40 -0
- package/src/api/events/message-dequeued.ts +21 -0
- package/src/api/events/message-queued-deleted.ts +23 -0
- package/src/api/events/message-queued.ts +22 -0
- package/src/api/events/message-request-complete.ts +29 -0
- package/src/api/events/navigate-settings.ts +20 -0
- package/src/api/events/notification-intent.ts +33 -0
- package/src/api/events/open-url.ts +28 -0
- package/src/api/events/question-request.ts +67 -0
- package/src/{events → api/events}/relationship-state-updated.ts +6 -8
- package/src/api/events/secret-request.ts +42 -0
- package/src/api/events/subagent-event.ts +79 -0
- package/src/api/events/subagent-spawned.ts +40 -0
- package/src/api/events/subagent-status-changed.ts +65 -0
- package/src/api/events/sync-changed.ts +29 -0
- package/src/api/events/tool-result.ts +129 -0
- package/src/api/events/tool-use-start.ts +30 -0
- package/src/api/events/turn-profile-auto-routed.ts +28 -0
- package/src/api/events/ui-surface-complete.ts +30 -0
- package/src/api/events/ui-surface-dismiss.ts +22 -0
- package/src/api/events/ui-surface-show.ts +67 -0
- package/src/api/events/ui-surface-update.ts +26 -0
- package/src/api/events/usage-update.ts +34 -0
- package/src/api/events/user-message-echo.ts +35 -0
- package/src/api/index.ts +482 -3
- package/src/api/requests/dictation.ts +45 -0
- package/src/api/responses/disk-pressure-status.ts +26 -0
- package/src/api/responses/home.ts +217 -0
- package/src/api/responses/llm-context-response.ts +41 -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/api/responses/memory-v3-selection-log.ts +50 -0
- package/src/api/responses/subagent-detail.ts +48 -0
- package/src/approvals/guardian-decision-primitive.ts +7 -15
- package/src/approvals/guardian-request-resolvers.ts +6 -9
- package/src/avatar/__tests__/avatar-manifest.test.ts +236 -0
- package/src/avatar/__tests__/avatar-store.test.ts +193 -0
- package/src/avatar/avatar-manifest.ts +195 -0
- package/src/avatar/avatar-store.ts +113 -0
- package/src/avatar/traits-png-sync.ts +8 -2
- package/src/background-wake/background-wake-routes.test.ts +687 -52
- package/src/background-wake/next-wake.test.ts +31 -1
- package/src/background-wake/next-wake.ts +4 -1
- 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 +2 -2
- package/src/background-wake/wake-intent-hooks.test.ts +282 -0
- package/src/calls/call-conversation-messages.ts +6 -4
- package/src/calls/guardian-action-sweep.ts +6 -4
- package/src/calls/guardian-dispatch.ts +1 -0
- package/src/calls/relay-server.ts +12 -8
- package/src/calls/voice-session-bridge.ts +17 -31
- package/src/cli/commands/__tests__/conversations-slack.test.ts +16 -0
- package/src/cli/commands/__tests__/memory-v3.test.ts +245 -0
- package/src/cli/commands/__tests__/notifications.test.ts +184 -40
- package/src/cli/commands/avatar.ts +17 -11
- package/src/cli/commands/channels/__tests__/channels.test.ts +143 -0
- package/src/cli/commands/channels/index.ts +229 -0
- package/src/cli/commands/conversations.ts +15 -1
- package/src/cli/commands/db/__tests__/repair.test.ts +540 -0
- package/src/cli/commands/db/__tests__/status.test.ts +253 -0
- package/src/cli/commands/db/format.ts +48 -0
- package/src/cli/commands/db/index.ts +29 -0
- package/src/cli/commands/db/repair-step-conversation-backfill.ts +345 -0
- package/src/cli/commands/db/repair-step-integrity.ts +146 -0
- package/src/cli/commands/db/repair-steps.ts +164 -0
- package/src/cli/commands/db/repair.ts +141 -0
- package/src/cli/commands/db/status.ts +366 -0
- package/src/cli/commands/memory-v3.ts +168 -203
- package/src/cli/commands/notifications.ts +365 -55
- package/src/cli/lib/cli-colors.ts +24 -6
- package/src/cli/lib/open-browser.ts +7 -2
- package/src/cli/program.ts +6 -5
- package/src/config/__tests__/feature-flag-registry-guard.test.ts +2 -2
- package/src/config/assistant-feature-flags.ts +25 -44
- package/src/config/bundled-skills/app-builder/SKILL.md +14 -3
- package/src/config/bundled-skills/document-editor/SKILL.md +5 -1
- package/src/config/bundled-skills/media-processing/services/reduce.ts +6 -9
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +7 -2
- package/src/config/bundled-skills/schedule/SKILL.md +2 -2
- package/src/config/bundled-skills/schedule/TOOLS.json +10 -2
- package/src/config/bundled-skills/settings/tools/open-system-settings.ts +1 -0
- package/src/config/call-site-defaults.ts +3 -8
- package/src/config/feature-flag-cache.ts +86 -0
- package/src/config/feature-flag-registry.json +42 -26
- 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 +1 -211
- package/src/config/schemas/call-site-catalog.ts +8 -15
- package/src/config/schemas/heartbeat.ts +1 -1
- package/src/config/schemas/llm.ts +92 -4
- package/src/config/schemas/memory-lifecycle.ts +24 -0
- package/src/config/schemas/memory-v2.ts +0 -227
- package/src/config/schemas/memory-v3.ts +39 -0
- package/src/config/schemas/memory.ts +6 -1
- package/src/config/schemas/services.ts +6 -2
- package/src/config/schemas/timeouts.ts +3 -1
- package/src/config/seed-inference-profiles.ts +36 -16
- package/src/context/compactor.ts +54 -31
- package/src/context/token-estimator.ts +29 -5
- package/src/context/tool-result-truncation.ts +1 -43
- package/src/context/window-manager.ts +138 -20
- 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 +15 -17
- package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +1 -2
- 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 +11 -6
- package/src/daemon/approval-generators.ts +4 -4
- package/src/daemon/config-watcher.ts +7 -1
- package/src/daemon/conversation-agent-loop-handlers.ts +613 -155
- package/src/daemon/conversation-agent-loop.ts +409 -605
- package/src/daemon/conversation-error.ts +40 -12
- package/src/daemon/conversation-history.ts +22 -6
- package/src/daemon/conversation-launch.ts +4 -8
- package/src/daemon/conversation-lifecycle.ts +10 -38
- package/src/daemon/conversation-messaging.ts +83 -44
- package/src/daemon/conversation-notifiers.ts +7 -5
- package/src/daemon/conversation-process.ts +174 -116
- package/src/daemon/conversation-runtime-assembly.ts +76 -30
- package/src/daemon/conversation-skill-tools.ts +14 -30
- package/src/daemon/conversation-store.ts +6 -5
- package/src/daemon/conversation-surfaces.ts +124 -103
- package/src/daemon/conversation-tool-setup.ts +36 -48
- package/src/daemon/conversation.ts +111 -166
- package/src/daemon/daemon-control.ts +1 -1
- package/src/daemon/daemon-skill-host.ts +7 -4
- package/src/daemon/disk-pressure-guard.ts +54 -50
- package/src/daemon/external-plugins-bootstrap.ts +46 -24
- package/src/daemon/first-greeting.ts +53 -13
- package/src/daemon/guardian-action-generators.ts +2 -2
- package/src/daemon/handlers/conversations.ts +6 -22
- package/src/daemon/handlers/shared.ts +10 -1
- package/src/daemon/handlers/skills.ts +15 -14
- package/src/daemon/host-app-control-proxy.ts +54 -1
- package/src/daemon/host-cu-proxy.ts +46 -22
- package/src/daemon/host-file-proxy.ts +25 -1
- package/src/daemon/host-proxy-preactivation.ts +25 -6
- package/src/daemon/lifecycle.ts +40 -67
- package/src/daemon/mcp-reload-service.ts +1 -1
- package/src/daemon/meet-manifest-loader.ts +10 -17
- package/src/daemon/message-protocol.ts +2 -3
- package/src/daemon/message-provenance.ts +49 -0
- package/src/daemon/message-types/contacts.ts +3 -20
- package/src/daemon/message-types/conversations.ts +25 -125
- package/src/daemon/message-types/document-comments.ts +8 -44
- package/src/daemon/message-types/documents.ts +3 -9
- package/src/daemon/message-types/home.ts +5 -18
- package/src/daemon/message-types/integrations.ts +4 -13
- package/src/daemon/message-types/messages.ts +47 -377
- package/src/daemon/message-types/notifications.ts +2 -32
- package/src/daemon/message-types/settings.ts +3 -8
- package/src/daemon/message-types/skills.ts +2 -0
- package/src/daemon/message-types/subagents.ts +6 -0
- package/src/daemon/message-types/surfaces.ts +2 -0
- package/src/daemon/message-types/sync.ts +12 -25
- package/src/daemon/message-types/workspace.ts +3 -11
- package/src/daemon/process-message.ts +58 -55
- package/src/daemon/providers-setup.ts +1 -1
- package/src/daemon/server.ts +28 -0
- package/src/daemon/switch-inference-profile-tool.ts +13 -3
- package/src/daemon/tool-setup-types.ts +0 -6
- package/src/daemon/tool-side-effects.ts +10 -7
- package/src/daemon/trust-context.ts +13 -0
- package/src/daemon/wake-target-adapter.ts +21 -1
- 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 +31 -0
- package/src/heartbeat/heartbeat-run-store.ts +31 -0
- package/src/heartbeat/heartbeat-service.ts +79 -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/feature-gate.ts +22 -0
- package/src/home/feed-types.ts +36 -221
- package/src/home/feed-writer.ts +146 -7
- package/src/home/suggested-prompts.ts +27 -145
- package/src/ipc/__tests__/cli-ipc.test.ts +1 -0
- package/src/ipc/__tests__/email-ipc.test.ts +0 -9
- package/src/ipc/gateway-client.test.ts +4 -1
- package/src/ipc/routes/__tests__/route-adapter.test.ts +244 -0
- package/src/ipc/routes/route-adapter.ts +45 -6
- package/src/ipc/skill-routes/__tests__/memory.test.ts +19 -9
- package/src/ipc/skill-routes/__tests__/providers.test.ts +10 -10
- package/src/ipc/skill-routes/__tests__/registries.test.ts +59 -20
- package/src/ipc/skill-routes/memory.ts +27 -13
- package/src/ipc/skill-routes/providers.ts +5 -6
- package/src/ipc/skill-routes/registries.ts +39 -88
- package/src/live-voice/__tests__/live-voice-archive.test.ts +24 -11
- package/src/memory/__tests__/conversation-queries.test.ts +192 -8
- package/src/memory/__tests__/db-maintenance.test.ts +128 -0
- package/src/memory/__tests__/jobs-store-enqueue-gate.test.ts +1 -0
- package/src/memory/__tests__/jobs-store-job-classes.test.ts +5 -4
- 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 +11 -6
- 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/__tests__/memory-v3-selections-migration.test.ts +103 -0
- package/src/memory/context-search/agent-runner.ts +2 -4
- package/src/memory/conversation-attention-store.ts +17 -3
- package/src/memory/conversation-crud.ts +386 -115
- package/src/memory/conversation-queries.ts +78 -22
- package/src/memory/db-connection.ts +29 -19
- package/src/memory/db-init.ts +12 -0
- package/src/memory/db-maintenance.ts +18 -2
- 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/consolidation.ts +8 -11
- package/src/memory/graph/conversation-graph-memory.ts +41 -8
- package/src/memory/graph/extraction.ts +6 -9
- package/src/memory/graph/narrative.ts +2 -2
- package/src/memory/graph/pattern-scan.ts +2 -2
- package/src/memory/graph/retriever.test.ts +3 -3
- package/src/memory/graph/retriever.ts +20 -26
- package/src/memory/graph/tools.ts +4 -4
- package/src/memory/job-handlers/conversation-starters.ts +32 -32
- package/src/memory/job-handlers/embedding.test.ts +3 -2
- package/src/memory/job-handlers/summarization.ts +1 -2
- package/src/memory/jobs/__tests__/embed-concept-page.test.ts +5 -2
- package/src/memory/jobs-store.ts +3 -1
- package/src/memory/jobs-worker.ts +63 -40
- package/src/memory/llm-request-log-source-clickhouse.ts +55 -1
- package/src/memory/llm-request-log-source-local.ts +13 -0
- package/src/memory/llm-request-log-source.ts +21 -6
- package/src/memory/llm-request-log-store.ts +147 -3
- package/src/memory/llm-usage-store.ts +10 -0
- package/src/memory/memory-marker.ts +17 -0
- package/src/memory/memory-retrospective-job.ts +6 -2
- package/src/memory/memory-v2-activation-log-store.ts +13 -1
- 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/267-llm-usage-events-add-assistant-version.ts +46 -0
- package/src/memory/migrations/268-add-memory-v3-selections.ts +28 -0
- package/src/memory/migrations/269-schedule-script-timeout.ts +11 -0
- package/src/memory/migrations/270-messages-role-created-at-index.ts +18 -0
- package/src/memory/migrations/__tests__/267-llm-usage-events-add-assistant-version.test.ts +117 -0
- package/src/memory/migrations/index.ts +6 -0
- package/src/memory/schema/conversations.ts +9 -1
- package/src/memory/schema/inference.ts +0 -1
- package/src/memory/schema/infrastructure.ts +11 -0
- package/src/memory/v2/__tests__/backfill-jobs.test.ts +5 -2
- package/src/memory/v2/__tests__/consolidation-job.test.ts +124 -0
- package/src/memory/v2/__tests__/harness-metrics.test.ts +9 -0
- package/src/memory/v2/__tests__/harness-replay-input.test.ts +9 -4
- package/src/memory/v2/__tests__/harness-runner.test.ts +26 -0
- package/src/memory/v2/__tests__/migration.test.ts +11 -3
- package/src/memory/v2/__tests__/page-index.test.ts +37 -1
- package/src/memory/v2/__tests__/router.test.ts +14 -4
- package/src/memory/v2/__tests__/sweep-job.test.ts +9 -5
- package/src/memory/v2/backfill-jobs.ts +6 -0
- package/src/memory/v2/consolidation-job.ts +89 -9
- package/src/memory/v2/harness/metrics.ts +5 -1
- package/src/memory/v2/harness/replay-input.ts +19 -3
- package/src/memory/v2/harness/runner.ts +6 -0
- package/src/memory/v2/harness/trace.ts +6 -0
- package/src/memory/v2/migration.ts +5 -3
- package/src/memory/v2/page-index.ts +11 -0
- package/src/memory/v2/router.ts +8 -11
- package/src/memory/v2/sweep-job.ts +8 -11
- package/src/memory/v2/types.ts +1 -0
- package/src/memory/v3/__tests__/assign.test.ts +242 -0
- package/src/memory/v3/__tests__/capabilities.test.ts +118 -0
- package/src/memory/v3/__tests__/core.test.ts +39 -0
- package/src/memory/v3/__tests__/fixtures/eval-turns.json +36 -0
- package/src/memory/v3/__tests__/fixtures/live-turns.json +37 -0
- package/src/memory/v3/__tests__/health.test.ts +203 -0
- package/src/memory/v3/__tests__/live-integration.test.ts +330 -0
- package/src/memory/v3/__tests__/maintain-job.test.ts +288 -0
- package/src/memory/v3/__tests__/needle.test.ts +107 -0
- package/src/memory/v3/__tests__/orchestrate.test.ts +400 -0
- package/src/memory/v3/__tests__/reconcile.test.ts +274 -0
- package/src/memory/v3/__tests__/render-injection.test.ts +61 -0
- package/src/memory/v3/__tests__/router.test.ts +260 -0
- package/src/memory/v3/__tests__/selection-log-store.test.ts +179 -0
- package/src/memory/v3/__tests__/selector.test.ts +404 -0
- package/src/memory/v3/__tests__/shadow-plugin.test.ts +414 -0
- package/src/memory/v3/__tests__/snapshot.test.ts +168 -0
- package/src/memory/v3/__tests__/tree.test.ts +192 -0
- package/src/memory/v3/__tests__/types.test.ts +54 -0
- package/src/memory/v3/__tests__/working-set-eviction.test.ts +106 -0
- package/src/memory/v3/__tests__/working-set-skeleton.test.ts +44 -0
- package/src/memory/v3/assign.ts +268 -0
- package/src/memory/v3/capabilities.ts +124 -0
- package/src/memory/v3/core.ts +26 -0
- package/src/memory/v3/data/README.md +84 -0
- package/src/memory/v3/data/assignments.json +5 -0
- package/src/memory/v3/data/core.json +1 -0
- package/src/memory/v3/data/leaves/domain-a/topic-x.md +9 -0
- package/src/memory/v3/data/leaves/domain-a/topic-y.md +9 -0
- package/src/memory/v3/data/leaves/domain-b/topic-z.md +9 -0
- package/src/memory/v3/health.ts +0 -0
- package/src/memory/v3/maintain-job.ts +314 -0
- package/src/memory/v3/needle.ts +115 -0
- package/src/memory/v3/orchestrate.ts +114 -0
- package/src/memory/v3/page-content.ts +34 -0
- package/src/memory/v3/provider-blocks.ts +16 -0
- package/src/memory/v3/reconcile.ts +523 -0
- package/src/memory/v3/render-injection.ts +32 -0
- package/src/memory/v3/router.ts +184 -0
- package/src/memory/v3/selection-log-store.ts +84 -0
- package/src/memory/v3/selector.ts +211 -0
- package/src/memory/v3/shadow-plugin.ts +379 -0
- package/src/memory/v3/snapshot.ts +209 -0
- package/src/memory/v3/tree.ts +174 -0
- package/src/memory/v3/types.ts +46 -60
- package/src/memory/v3/working-set.ts +88 -0
- package/src/messaging/providers/slack/render-transcript.test.ts +1 -1
- package/src/messaging/providers/slack/render-transcript.ts +2 -2
- package/src/messaging/style-analyzer.ts +8 -11
- 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/slack.ts +45 -11
- package/src/notifications/broadcaster.ts +114 -63
- package/src/notifications/conversation-pairing.ts +30 -8
- package/src/notifications/decision-engine.ts +10 -13
- 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 +11 -1
- package/src/notifications/preference-extractor.ts +11 -14
- 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 +42 -36
- package/src/permissions/question-prompter.test.ts +35 -26
- package/src/permissions/question-prompter.ts +6 -10
- 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 +2 -0
- package/src/plugin-api/types.ts +25 -3
- package/src/plugins/defaults/circuit-breaker/middlewares/circuitBreaker.ts +93 -0
- package/src/plugins/defaults/circuit-breaker/package.json +15 -0
- package/src/plugins/defaults/circuit-breaker/register.ts +39 -0
- package/src/plugins/defaults/compaction/middlewares/compaction.ts +25 -0
- package/src/plugins/defaults/compaction/package.json +15 -0
- package/src/plugins/defaults/compaction/register.ts +35 -0
- package/src/plugins/defaults/compaction/terminal.ts +73 -0
- package/src/plugins/defaults/empty-response/middlewares/emptyResponse.ts +22 -0
- package/src/plugins/defaults/empty-response/package.json +15 -0
- package/src/plugins/defaults/empty-response/register.ts +28 -0
- package/src/plugins/defaults/empty-response/terminal.ts +106 -0
- package/src/plugins/defaults/history-repair/hooks/user-prompt-submit.ts +35 -0
- package/src/plugins/defaults/history-repair/package.json +15 -0
- package/src/plugins/defaults/history-repair/register.ts +24 -0
- package/src/{daemon/history-repair.ts → plugins/defaults/history-repair/terminal.ts} +48 -35
- package/src/plugins/defaults/index.ts +29 -40
- package/src/plugins/defaults/injectors/package.json +15 -0
- package/src/plugins/defaults/{injectors.ts → injectors/register.ts} +16 -46
- package/src/plugins/defaults/llm-call/middlewares/llmCall.ts +17 -0
- package/src/plugins/defaults/llm-call/package.json +15 -0
- package/src/plugins/defaults/{llm-call.ts → llm-call/register.ts} +6 -38
- package/src/plugins/defaults/memory-retrieval/middlewares/memoryRetrieval.ts +17 -0
- package/src/plugins/defaults/memory-retrieval/package.json +15 -0
- package/src/plugins/defaults/{memory-retrieval.ts → memory-retrieval/register.ts} +10 -48
- package/src/plugins/defaults/{overflow-reduce.ts → overflow-reduce/middlewares/overflowReduce.ts} +18 -77
- package/src/plugins/defaults/overflow-reduce/package.json +15 -0
- package/src/plugins/defaults/overflow-reduce/register.ts +42 -0
- package/src/plugins/defaults/persistence/middlewares/persistence.ts +19 -0
- package/src/plugins/defaults/persistence/package.json +15 -0
- package/src/plugins/defaults/persistence/register.ts +38 -0
- package/src/plugins/defaults/persistence/terminal.ts +83 -0
- package/src/plugins/defaults/title-generate/package.json +15 -0
- package/src/plugins/defaults/title-generate/register.ts +35 -0
- package/src/plugins/defaults/title-generate/terminal.ts +31 -0
- package/src/plugins/defaults/token-estimate/middlewares/tokenEstimate.ts +23 -0
- package/src/plugins/defaults/token-estimate/package.json +15 -0
- package/src/plugins/defaults/token-estimate/register.ts +34 -0
- package/src/plugins/defaults/token-estimate/terminal.ts +40 -0
- package/src/plugins/defaults/tool-error/middlewares/toolError.ts +21 -0
- package/src/plugins/defaults/tool-error/package.json +15 -0
- package/src/plugins/defaults/tool-error/register.ts +35 -0
- package/src/plugins/defaults/tool-error/terminal.ts +47 -0
- package/src/plugins/defaults/tool-execute/middlewares/toolExecute.ts +23 -0
- package/src/plugins/defaults/tool-execute/package.json +15 -0
- package/src/plugins/defaults/{tool-execute.ts → tool-execute/register.ts} +8 -46
- package/src/plugins/defaults/tool-result-truncate/middlewares/toolResultTruncate.ts +23 -0
- package/src/plugins/defaults/tool-result-truncate/package.json +15 -0
- package/src/plugins/defaults/tool-result-truncate/register.ts +35 -0
- package/src/plugins/defaults/tool-result-truncate/terminal.ts +113 -0
- package/src/plugins/defaults/tool-result-truncate/types.ts +22 -0
- package/src/plugins/external-plugin-loader.ts +2 -2
- package/src/plugins/pipeline.ts +0 -12
- package/src/plugins/types.ts +107 -102
- package/src/plugins/user-loader.ts +4 -3
- package/src/proactive-artifact/aux-message-injector.ts +0 -1
- package/src/proactive-artifact/job.test.ts +21 -8
- package/src/proactive-artifact/job.ts +3 -1
- package/src/prompts/__tests__/system-prompt.test.ts +4 -4
- package/src/prompts/sections.ts +20 -7
- package/src/prompts/system-prompt.ts +38 -40
- package/src/prompts/template-detection.ts +10 -4
- package/src/prompts/templates/BOOTSTRAP-CONTENT-AUTOMATION.md +2 -2
- package/src/prompts/templates/BOOTSTRAP.md +10 -10
- package/src/prompts/templates/IDENTITY.md +0 -2
- package/src/prompts/templates/system-sections.ts +6 -0
- package/src/providers/__tests__/connection-model-compat.test.ts +3 -4
- package/src/providers/__tests__/registry-native-web-search.test.ts +122 -0
- package/src/providers/__tests__/retry-callsite.test.ts +25 -25
- package/src/providers/__tests__/satellite-connection-routing.test.ts +7 -21
- package/src/providers/anthropic/client.ts +24 -5
- package/src/providers/call-site-routing.ts +34 -18
- package/src/providers/connection-model-compat.ts +23 -0
- package/src/providers/connection-resolution.ts +39 -20
- package/src/providers/fireworks/client.ts +1 -0
- package/src/providers/gemini/client.ts +176 -37
- package/src/providers/gemini/inline-media.ts +74 -0
- 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/auth.ts +0 -8
- package/src/providers/inference/connections.ts +3 -66
- package/src/providers/inference/resolve-auth.ts +2 -3
- package/src/providers/model-catalog.ts +35 -1
- package/src/providers/model-intents.ts +3 -3
- package/src/providers/openai/__tests__/api-error-detail.test.ts +120 -0
- package/src/providers/openai/__tests__/chat-completions-provider-reasoning.test.ts +157 -7
- package/src/providers/openai/chat-completions-provider.ts +111 -16
- package/src/providers/openai/codex-models.ts +2 -0
- package/src/providers/openai/responses-provider.ts +54 -57
- package/src/providers/openrouter/client.ts +14 -14
- package/src/providers/provider-send-message.ts +23 -14
- package/src/providers/ratelimit.ts +1 -9
- package/src/providers/registry.ts +48 -8
- package/src/providers/retry.ts +16 -9
- package/src/providers/search-provider-catalog.ts +17 -9
- package/src/providers/types.ts +20 -2
- package/src/providers/usage-tracking.ts +1 -9
- package/src/runtime/__tests__/agent-wake.test.ts +132 -26
- package/src/runtime/__tests__/background-job-runner.test.ts +2 -3
- package/src/runtime/access-request-helper.ts +1 -0
- package/src/runtime/agent-wake.ts +93 -18
- package/src/runtime/assistant-event-hub.ts +2 -2
- package/src/runtime/auth/__tests__/guard-tests.test.ts +75 -109
- package/src/runtime/auth/__tests__/route-policy.test.ts +153 -170
- package/src/runtime/auth/route-policy.ts +42 -1069
- package/src/runtime/background-job-runner.ts +1 -4
- package/src/runtime/btw-sidechain.ts +3 -1
- package/src/runtime/channel-approvals.ts +3 -14
- package/src/runtime/channel-invite-transport.ts +5 -6
- package/src/runtime/channel-readiness-service.ts +70 -5
- package/src/runtime/channel-reply-delivery.ts +23 -0
- package/src/runtime/channel-retry-sweep.ts +59 -30
- package/src/runtime/confirmation-request-guardian-bridge.ts +1 -1
- package/src/runtime/conversation-stream-state.ts +294 -0
- package/src/runtime/http-router.ts +19 -22
- package/src/runtime/http-types.ts +12 -6
- package/src/runtime/invite-instruction-generator.ts +3 -3
- package/src/runtime/migrations/vbundle-builder.ts +3 -2
- package/src/runtime/pending-interactions.ts +2 -2
- package/src/runtime/routes/__tests__/avatar-state-routes.test.ts +565 -0
- package/src/runtime/routes/__tests__/bookmark-routes.test.ts +1 -0
- package/src/runtime/routes/__tests__/content-source-routes.test.ts +4 -4
- package/src/runtime/routes/__tests__/conversation-compaction-routes.test.ts +436 -0
- package/src/runtime/routes/__tests__/conversation-list-routes.test.ts +237 -0
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +98 -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 +26 -72
- package/src/runtime/routes/__tests__/memory-v2-simulate-route.test.ts +58 -5
- package/src/runtime/routes/__tests__/sanity-routes.test.ts +6 -6
- package/src/runtime/routes/__tests__/slack-channel-routes.test.ts +3 -2
- package/src/runtime/routes/__tests__/stt-routes.test.ts +3 -3
- package/src/runtime/routes/__tests__/suggest-trust-rule-routes.test.ts +5 -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/__tests__/tts-routes.test.ts +3 -3
- package/src/runtime/routes/acp-routes-list.test.ts +3 -0
- package/src/runtime/routes/acp-routes.test.ts +97 -75
- package/src/runtime/routes/acp-routes.ts +29 -6
- package/src/runtime/routes/app-management-routes.ts +208 -28
- package/src/runtime/routes/app-routes.ts +25 -5
- package/src/runtime/routes/approval-routes.ts +16 -4
- package/src/runtime/routes/attachment-routes.ts +25 -1
- package/src/runtime/routes/audio-routes.ts +1 -0
- package/src/runtime/routes/audit-routes.ts +5 -0
- package/src/runtime/routes/auth-routes.ts +5 -0
- package/src/runtime/routes/avatar-routes.ts +238 -59
- package/src/runtime/routes/background-tool-routes.ts +9 -0
- package/src/runtime/routes/background-wake-routes.ts +201 -23
- package/src/runtime/routes/backup-routes.ts +45 -0
- package/src/runtime/routes/bookmark-routes.ts +13 -0
- package/src/runtime/routes/brain-graph-routes.ts +9 -0
- package/src/runtime/routes/browser-routes.ts +5 -0
- package/src/runtime/routes/browser-tabs-routes.ts +5 -0
- package/src/runtime/routes/btw-routes.ts +9 -5
- package/src/runtime/routes/cache-routes.ts +13 -0
- package/src/runtime/routes/call-routes.ts +21 -10
- package/src/runtime/routes/channel-availability-routes.ts +5 -1
- package/src/runtime/routes/channel-readiness-routes.ts +37 -4
- package/src/runtime/routes/channel-route-definitions.ts +21 -0
- package/src/runtime/routes/channel-verification-routes.ts +21 -0
- package/src/runtime/routes/chatgpt-subscription-auth-routes.ts +9 -2
- package/src/runtime/routes/client-routes.ts +9 -0
- package/src/runtime/routes/consolidation-routes.ts +13 -5
- package/src/runtime/routes/contact-prompt-routes.ts +9 -0
- package/src/runtime/routes/contact-routes.ts +90 -23
- package/src/runtime/routes/content-source-routes.ts +5 -1
- package/src/runtime/routes/conversation-analysis-routes.ts +11 -1
- package/src/runtime/routes/conversation-attention-routes.ts +5 -0
- package/src/runtime/routes/conversation-cli-routes.ts +54 -7
- package/src/runtime/routes/conversation-compaction-routes.ts +292 -0
- package/src/runtime/routes/conversation-list-routes.ts +225 -9
- package/src/runtime/routes/conversation-management-routes.ts +96 -28
- package/src/runtime/routes/conversation-query-routes.ts +148 -51
- package/src/runtime/routes/conversation-routes.ts +259 -158
- package/src/runtime/routes/conversation-starter-routes.ts +22 -13
- package/src/runtime/routes/conversations-import-routes.ts +25 -7
- package/src/runtime/routes/credential-prompt-routes.ts +5 -0
- package/src/runtime/routes/credential-routes.ts +25 -6
- package/src/runtime/routes/debug-bash-routes.ts +5 -0
- package/src/runtime/routes/debug-routes.ts +11 -2
- package/src/runtime/routes/defer-routes.ts +13 -0
- package/src/runtime/routes/diagnostics-routes.ts +37 -46
- package/src/runtime/routes/disk-pressure-routes.ts +17 -31
- package/src/runtime/routes/document-comments-routes.ts +46 -27
- package/src/runtime/routes/documents-routes.ts +31 -11
- package/src/runtime/routes/domain-routes.ts +61 -28
- package/src/runtime/routes/email-routes.ts +33 -0
- package/src/runtime/routes/events-routes.ts +114 -9
- package/src/runtime/routes/filing-routes.ts +9 -4
- package/src/runtime/routes/gateway-log-routes.ts +5 -0
- package/src/runtime/routes/global-search-routes.ts +53 -50
- package/src/runtime/routes/group-routes.ts +32 -5
- package/src/runtime/routes/guardian-action-routes.ts +9 -0
- package/src/runtime/routes/guardian-approval-interception.ts +0 -31
- package/src/runtime/routes/heartbeat-routes.ts +25 -9
- package/src/runtime/routes/home-feed-routes.ts +149 -16
- package/src/runtime/routes/home-state-routes.ts +8 -40
- package/src/runtime/routes/host-app-control-routes.ts +5 -0
- package/src/runtime/routes/host-bash-routes.ts +5 -0
- package/src/runtime/routes/host-browser-routes.ts +13 -0
- package/src/runtime/routes/host-cu-routes.ts +5 -0
- package/src/runtime/routes/host-file-routes.ts +26 -6
- package/src/runtime/routes/host-transfer-routes.ts +13 -2
- package/src/runtime/routes/http-adapter.ts +1 -2
- package/src/runtime/routes/identity-intro-cache.ts +72 -16
- package/src/runtime/routes/identity-routes.ts +42 -11
- package/src/runtime/routes/image-generation-routes.ts +5 -0
- package/src/runtime/routes/inbound-message-handler.ts +15 -11
- package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +524 -12
- package/src/runtime/routes/inbound-stages/background-dispatch.ts +72 -27
- package/src/runtime/routes/index.ts +2 -0
- package/src/runtime/routes/inference-profile-session-routes.ts +13 -3
- package/src/runtime/routes/inference-provider-connection-routes.ts +26 -31
- package/src/runtime/routes/inference-send-routes.ts +11 -11
- package/src/runtime/routes/integrations/a2a.ts +30 -7
- package/src/runtime/routes/integrations/slack/channel.ts +19 -3
- package/src/runtime/routes/integrations/slack/share.ts +9 -2
- package/src/runtime/routes/integrations/telegram.ts +28 -9
- package/src/runtime/routes/integrations/twilio.ts +35 -7
- package/src/runtime/routes/integrations/vercel.ts +18 -3
- package/src/runtime/routes/internal-oauth-routes.ts +5 -0
- package/src/runtime/routes/internal-twilio-routes.ts +13 -0
- package/src/runtime/routes/llm-call-sites-routes.ts +39 -4
- package/src/runtime/routes/llm-context-normalization.ts +7 -2
- package/src/runtime/routes/log-export-routes.ts +28 -10
- package/src/runtime/routes/mcp-auth-routes.ts +25 -0
- package/src/runtime/routes/memory-item-routes.ts +21 -10
- package/src/runtime/routes/memory-v2-routes.ts +90 -36
- package/src/runtime/routes/memory-v3-routes.ts +283 -259
- package/src/runtime/routes/migration-rollback-routes.ts +5 -1
- package/src/runtime/routes/migration-routes.ts +49 -13
- package/src/runtime/routes/notification-routes.ts +80 -2
- package/src/runtime/routes/oauth-apps.ts +33 -11
- package/src/runtime/routes/oauth-commands-routes.ts +43 -15
- package/src/runtime/routes/oauth-connect-routes.ts +9 -0
- package/src/runtime/routes/oauth-lifecycle-routes.ts +5 -1
- package/src/runtime/routes/oauth-providers.ts +35 -10
- package/src/runtime/routes/platform-routes.ts +21 -0
- package/src/runtime/routes/playground/__tests__/force-compact.test.ts +3 -2
- package/src/runtime/routes/playground/__tests__/inject-failures.test.ts +37 -16
- package/src/runtime/routes/playground/__tests__/reset-circuit.test.ts +7 -3
- package/src/runtime/routes/playground/__tests__/state.test.ts +10 -3
- package/src/runtime/routes/playground/force-compact.ts +1 -1
- package/src/runtime/routes/playground/helpers.ts +0 -1
- package/src/runtime/routes/playground/inject-failures.ts +13 -8
- package/src/runtime/routes/playground/reset-circuit.ts +14 -9
- package/src/runtime/routes/playground/seed-conversation.ts +1 -1
- package/src/runtime/routes/playground/seeded-conversations.ts +3 -3
- package/src/runtime/routes/playground/state.ts +4 -3
- package/src/runtime/routes/plugins-routes.ts +22 -19
- package/src/runtime/routes/profiler-routes.ts +17 -4
- package/src/runtime/routes/ps-routes.ts +5 -0
- package/src/runtime/routes/publish-routes.ts +13 -3
- package/src/runtime/routes/question-routes.ts +5 -0
- package/src/runtime/routes/recording-routes.ts +25 -12
- package/src/runtime/routes/rename-conversation-routes.ts +5 -0
- package/src/runtime/routes/sanity-routes.ts +9 -2
- package/src/runtime/routes/schedule-routes.ts +137 -47
- package/src/runtime/routes/secret-routes.ts +17 -4
- package/src/runtime/routes/sequence-routes.ts +33 -0
- package/src/runtime/routes/settings-routes.ts +65 -19
- package/src/runtime/routes/skills-routes.ts +133 -69
- package/src/runtime/routes/slack-channel-routes.ts +5 -0
- package/src/runtime/routes/stt-routes.ts +13 -6
- package/src/runtime/routes/subagents-routes.ts +24 -18
- package/src/runtime/routes/suggest-trust-rule-routes.ts +7 -2
- package/src/runtime/routes/surface-action-routes.ts +10 -38
- package/src/runtime/routes/surface-content-routes.ts +21 -6
- package/src/runtime/routes/surface-conversation-resolver.ts +65 -0
- package/src/runtime/routes/task-routes.ts +37 -0
- package/src/runtime/routes/telemetry-routes.ts +9 -0
- package/src/runtime/routes/trace-event-routes.ts +42 -1
- package/src/runtime/routes/trust-rules-routes.ts +5 -0
- package/src/runtime/routes/tts-routes.ts +13 -6
- package/src/runtime/routes/types.ts +17 -8
- package/src/runtime/routes/ui-request-routes.ts +5 -0
- package/src/runtime/routes/upgrade-broadcast-routes.ts +5 -0
- package/src/runtime/routes/usage-routes.ts +71 -3
- package/src/runtime/routes/user-routes-cli.ts +9 -0
- package/src/runtime/routes/user-routes.ts +5 -1
- package/src/runtime/routes/wake-conversation-routes.ts +5 -0
- package/src/runtime/routes/watcher-routes.ts +21 -0
- package/src/runtime/routes/webhook-routes.ts +9 -0
- package/src/runtime/routes/wipe-conversation-routes.ts +8 -0
- package/src/runtime/routes/work-items-routes.ts +47 -19
- package/src/runtime/routes/workspace-commit-routes.ts +5 -0
- package/src/runtime/routes/workspace-routes.test.ts +42 -0
- package/src/runtime/routes/workspace-routes.ts +120 -9
- package/src/runtime/services/__tests__/analyze-conversation.test.ts +4 -4
- package/src/runtime/services/analyze-conversation.ts +3 -6
- package/src/runtime/services/conversation-serializer.ts +24 -2
- package/src/runtime/slack-dm-text-delivery.ts +177 -0
- package/src/runtime/sync/resource-sync-events.ts +17 -3
- package/src/runtime/sync/sync-publisher.ts +2 -2
- package/src/runtime/tool-grant-request-helper.ts +1 -0
- package/src/schedule/run-script.ts +28 -3
- package/src/schedule/schedule-store.ts +16 -1
- package/src/schedule/scheduler.ts +114 -16
- 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 +10 -16
- package/src/skills/catalog-files.ts +4 -1
- package/src/skills/clawhub-files.ts +2 -0
- package/src/skills/skillssh-files.ts +2 -0
- package/src/skills/validate-input.ts +177 -0
- package/src/subagent/manager.ts +16 -19
- package/src/subagent/types.ts +6 -0
- package/src/tasks/tool-sanitizer.ts +2 -2
- package/src/telemetry/types.ts +26 -0
- package/src/telemetry/usage-telemetry-reporter.test.ts +138 -1
- package/src/telemetry/usage-telemetry-reporter.ts +31 -0
- package/src/tools/acp/spawn.test.ts +88 -38
- package/src/tools/apps/definitions.ts +42 -24
- package/src/tools/ask-question/ask-question-tool.test.ts +120 -105
- package/src/tools/ask-question/ask-question-tool.ts +85 -90
- package/src/tools/browser/__tests__/browser-execution-acquire.test.ts +2 -8
- package/src/tools/computer-use/definitions.ts +295 -289
- package/src/tools/credential-execution/make-authenticated-request.ts +56 -51
- package/src/tools/credential-execution/manage-secure-command-tool.ts +2 -2
- package/src/tools/credential-execution/run-authenticated-command.ts +82 -77
- package/src/tools/credentials/vault.ts +112 -111
- package/src/tools/document/document-tool.ts +131 -8
- package/src/tools/execution-target.ts +3 -6
- package/src/tools/execution-timeout.ts +3 -4
- package/src/tools/executor.ts +18 -55
- package/src/tools/filesystem/edit.ts +45 -42
- package/src/tools/filesystem/list.ts +33 -30
- package/src/tools/filesystem/read.ts +54 -35
- package/src/tools/filesystem/write.ts +34 -31
- package/src/tools/host-filesystem/edit.test.ts +1 -0
- package/src/tools/host-filesystem/edit.ts +44 -42
- package/src/tools/host-filesystem/read.test.ts +1 -0
- package/src/tools/host-filesystem/read.ts +49 -35
- package/src/tools/host-filesystem/transfer.test.ts +31 -6
- package/src/tools/host-filesystem/transfer.ts +121 -108
- package/src/tools/host-filesystem/write.test.ts +1 -0
- package/src/tools/host-filesystem/write.ts +33 -31
- package/src/tools/host-terminal/host-shell.ts +50 -48
- package/src/tools/mcp/mcp-tool-factory.ts +0 -2
- package/src/tools/memory/register.ts +23 -24
- 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 +49 -46
- package/src/tools/network/web-search.ts +215 -57
- package/src/tools/policy-context.ts +3 -1
- package/src/tools/registry.ts +184 -118
- package/src/tools/schedule/create.ts +12 -1
- package/src/tools/schedule/update.ts +16 -0
- package/src/tools/shared/filesystem/audio-read.ts +122 -0
- package/src/tools/shared/filesystem/image-read.ts +1 -1
- package/src/tools/skills/execute.ts +34 -31
- package/src/tools/skills/load.ts +29 -23
- package/src/tools/skills/skill-tool-factory.ts +17 -36
- package/src/tools/subagent/notify-parent.ts +35 -32
- package/src/tools/subagent/spawn.ts +3 -0
- package/src/tools/system/avatar-generator.ts +13 -22
- package/src/tools/system/request-permission.ts +30 -27
- package/src/tools/terminal/shell.ts +190 -61
- package/src/tools/tool-approval-handler.ts +10 -4
- package/src/tools/tool-defaults.ts +20 -9
- package/src/tools/tool-manifest.ts +4 -4
- package/src/tools/tool-name-aliases.ts +72 -14
- package/src/tools/types.ts +86 -33
- package/src/tools/ui-surface/definitions.ts +166 -94
- package/src/types/onboarding-context.ts +6 -0
- package/src/usage/attribution.ts +32 -1
- package/src/usage/types.ts +10 -0
- package/src/util/browser.ts +7 -2
- package/src/util/errors.ts +2 -2
- package/src/util/map-limit.ts +27 -0
- package/src/util/platform.ts +15 -12
- package/src/work-items/work-item-runner.ts +7 -2
- package/src/workspace/migrations/028-recover-conversations-from-disk-view.ts +7 -20
- 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/092-backfill-v3-leaves.ts +169 -0
- package/src/workspace/migrations/093-backfill-leaf-ids.ts +144 -0
- package/src/workspace/migrations/094-seed-avatar-manifest.ts +155 -0
- package/src/workspace/migrations/__tests__/094-seed-avatar-manifest.test.ts +136 -0
- package/src/workspace/migrations/__tests__/backfill-leaf-ids.test.ts +175 -0
- package/src/workspace/migrations/__tests__/backfill-v3-leaves.test.ts +124 -0
- package/src/workspace/migrations/registry.ts +10 -0
- package/src/workspace/provider-commit-message-generator.ts +15 -17
- package/tsconfig.json +4 -1
- package/src/__tests__/history-repair-pipeline.test.ts +0 -396
- package/src/cli/commands/__tests__/memory-v3-render.test.ts +0 -340
- package/src/cli/commands/memory-v3-render.ts +0 -344
- package/src/daemon/message-types/disk-pressure.ts +0 -9
- package/src/email/feature-gate.ts +0 -23
- package/src/memory/v3/__tests__/coactivation-store.test.ts +0 -422
- package/src/memory/v3/__tests__/consolidation-job.test.ts +0 -468
- package/src/memory/v3/__tests__/edge-learning-job.test.ts +0 -324
- package/src/memory/v3/__tests__/edges.test.ts +0 -563
- package/src/memory/v3/__tests__/filter.test.ts +0 -512
- package/src/memory/v3/__tests__/gate.test.ts +0 -574
- package/src/memory/v3/__tests__/index-composition.test.ts +0 -233
- package/src/memory/v3/__tests__/loop.test.ts +0 -530
- package/src/memory/v3/__tests__/retriever.test.ts +0 -226
- package/src/memory/v3/__tests__/scouts.test.ts +0 -440
- package/src/memory/v3/__tests__/shadow-middleware.test.ts +0 -312
- package/src/memory/v3/__tests__/system-prompts.test.ts +0 -154
- package/src/memory/v3/__tests__/traversal.test.ts +0 -469
- package/src/memory/v3/__tests__/tree-index.test.ts +0 -280
- package/src/memory/v3/__tests__/tree-store.test.ts +0 -529
- package/src/memory/v3/__tests__/tree-walk.test.ts +0 -707
- package/src/memory/v3/__tests__/validate.test.ts +0 -245
- package/src/memory/v3/auto-edges.ts +0 -223
- package/src/memory/v3/coactivation-store.ts +0 -124
- package/src/memory/v3/consolidation-job.ts +0 -323
- package/src/memory/v3/edge-learning-job.ts +0 -160
- package/src/memory/v3/edges.ts +0 -249
- package/src/memory/v3/filter.ts +0 -281
- package/src/memory/v3/gate.ts +0 -334
- package/src/memory/v3/index-composition.ts +0 -113
- package/src/memory/v3/llm-capture.ts +0 -46
- package/src/memory/v3/loop.ts +0 -382
- package/src/memory/v3/maintenance.ts +0 -144
- package/src/memory/v3/prompt-context.ts +0 -33
- package/src/memory/v3/prompts/consolidation.ts +0 -458
- package/src/memory/v3/prompts/system-prompts.ts +0 -196
- package/src/memory/v3/retriever.ts +0 -33
- package/src/memory/v3/scouts.ts +0 -420
- package/src/memory/v3/shadow-middleware.ts +0 -305
- package/src/memory/v3/traversal.ts +0 -206
- package/src/memory/v3/tree-index.ts +0 -237
- package/src/memory/v3/tree-store.ts +0 -394
- package/src/memory/v3/tree-walk.ts +0 -351
- package/src/memory/v3/validate.ts +0 -300
- package/src/plugins/defaults/circuit-breaker.ts +0 -141
- package/src/plugins/defaults/compaction.ts +0 -141
- package/src/plugins/defaults/empty-response.ts +0 -124
- package/src/plugins/defaults/history-repair.ts +0 -83
- package/src/plugins/defaults/persistence.ts +0 -127
- package/src/plugins/defaults/title-generate.ts +0 -90
- package/src/plugins/defaults/token-estimate.ts +0 -101
- package/src/plugins/defaults/tool-error.ts +0 -119
- package/src/plugins/defaults/tool-result-truncate.ts +0 -84
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
// User/assistant messages, tool results, confirmations, secrets, errors, and generation lifecycle.
|
|
2
2
|
|
|
3
|
+
import type { AssistantActivityStateEvent } from "../../api/events/assistant-activity-state.js";
|
|
4
|
+
import type { AssistantTextDeltaEvent } from "../../api/events/assistant-text-delta.js";
|
|
5
|
+
import type { AssistantTurnStartEvent } from "../../api/events/assistant-turn-start.js";
|
|
6
|
+
import type { ConfirmationRequestEvent } from "../../api/events/confirmation-request.js";
|
|
7
|
+
import type { ErrorEvent } from "../../api/events/error.js";
|
|
8
|
+
import type { InteractionResolvedEvent } from "../../api/events/interaction-resolved.js";
|
|
9
|
+
import type { MessageCompleteEvent } from "../../api/events/message-complete.js";
|
|
10
|
+
import type { MessageDequeuedEvent } from "../../api/events/message-dequeued.js";
|
|
11
|
+
import type { MessageQueuedEvent } from "../../api/events/message-queued.js";
|
|
12
|
+
import type { MessageQueuedDeletedEvent } from "../../api/events/message-queued-deleted.js";
|
|
13
|
+
import type { MessageRequestCompleteEvent } from "../../api/events/message-request-complete.js";
|
|
14
|
+
import type { QuestionRequestEvent } from "../../api/events/question-request.js";
|
|
15
|
+
import type { SecretRequestEvent } from "../../api/events/secret-request.js";
|
|
16
|
+
import type { ToolResultEvent } from "../../api/events/tool-result.js";
|
|
17
|
+
import type { ToolUseStartEvent } from "../../api/events/tool-use-start.js";
|
|
18
|
+
import type { TurnProfileAutoRoutedEvent } from "../../api/events/turn-profile-auto-routed.js";
|
|
19
|
+
import type { UserMessageEchoEvent } from "../../api/events/user-message-echo.js";
|
|
3
20
|
import type { ChannelId, InterfaceId } from "../../channels/types.js";
|
|
4
21
|
import type { CommandIntent, UserMessageAttachment } from "./shared.js";
|
|
5
|
-
import type { ToolActivityMetadata } from "./web-activity.js";
|
|
6
22
|
|
|
7
23
|
// === Client → Server ===
|
|
8
24
|
|
|
@@ -25,7 +41,7 @@ export interface UserMessage {
|
|
|
25
41
|
/** Structured command intent — bypasses text parsing when present. */
|
|
26
42
|
commandIntent?: CommandIntent;
|
|
27
43
|
/** Client-generated correlation nonce for echo dedup. See
|
|
28
|
-
* `
|
|
44
|
+
* `UserMessageEchoEvent.clientMessageId` — the server echoes this value
|
|
29
45
|
* back on the matching `user_message_echo` event. */
|
|
30
46
|
clientMessageId?: string;
|
|
31
47
|
}
|
|
@@ -54,43 +70,13 @@ export interface SuggestionRequest {
|
|
|
54
70
|
|
|
55
71
|
// === Server → Client ===
|
|
56
72
|
|
|
57
|
-
export interface UserMessageEcho {
|
|
58
|
-
type: "user_message_echo";
|
|
59
|
-
text: string;
|
|
60
|
-
conversationId?: string;
|
|
61
|
-
/** Database ID of the persisted user message, used by the originating
|
|
62
|
-
* client to dedupe its optimistic row. Absent for synthetic echoes
|
|
63
|
-
* (e.g. surface-action prompts) where no distinct user row is persisted. */
|
|
64
|
-
messageId?: string;
|
|
65
|
-
/** Server-generated request ID for the send. Allows correlation with
|
|
66
|
-
* `message_queued` / `message_dequeued` events for the same turn. */
|
|
67
|
-
requestId?: string;
|
|
68
|
-
/** Client-generated correlation nonce from the HTTP POST body. Echoed
|
|
69
|
-
* back so the originating client can dedupe its optimistic row even
|
|
70
|
-
* if the SSE echo beats the 202 response. Absent for synthetic echoes
|
|
71
|
-
* (e.g. surface-action prompts) that did not originate from a client POST. */
|
|
72
|
-
clientMessageId?: string;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export interface AssistantTextDelta {
|
|
76
|
-
type: "assistant_text_delta";
|
|
77
|
-
text: string;
|
|
78
|
-
conversationId?: string;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
73
|
export interface AssistantThinkingDelta {
|
|
82
74
|
type: "assistant_thinking_delta";
|
|
83
75
|
thinking: string;
|
|
84
76
|
conversationId?: string;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
type: "tool_use_start";
|
|
89
|
-
toolName: string;
|
|
90
|
-
input: Record<string, unknown>;
|
|
91
|
-
conversationId?: string;
|
|
92
|
-
/** The tool_use block ID for client-side correlation. */
|
|
93
|
-
toolUseId?: string;
|
|
77
|
+
/** Database ID of the assistant message this thinking delta belongs to.
|
|
78
|
+
* Same semantics as `AssistantTextDeltaEvent.messageId`. */
|
|
79
|
+
messageId?: string;
|
|
94
80
|
}
|
|
95
81
|
|
|
96
82
|
export interface ToolOutputChunk {
|
|
@@ -103,6 +89,9 @@ export interface ToolOutputChunk {
|
|
|
103
89
|
subToolInput?: string;
|
|
104
90
|
subToolIsError?: boolean;
|
|
105
91
|
subToolId?: string;
|
|
92
|
+
/** Database ID of the assistant message that owns the parent tool_use
|
|
93
|
+
* block. Same semantics as `AssistantTextDeltaEvent.messageId`. */
|
|
94
|
+
messageId?: string;
|
|
106
95
|
}
|
|
107
96
|
|
|
108
97
|
export interface ToolUsePreviewStart {
|
|
@@ -110,6 +99,9 @@ export interface ToolUsePreviewStart {
|
|
|
110
99
|
toolUseId: string;
|
|
111
100
|
toolName: string;
|
|
112
101
|
conversationId?: string;
|
|
102
|
+
/** Database ID of the assistant message that owns this tool_use block.
|
|
103
|
+
* Same semantics as `AssistantTextDeltaEvent.messageId`. */
|
|
104
|
+
messageId?: string;
|
|
113
105
|
}
|
|
114
106
|
|
|
115
107
|
export interface ToolInputDelta {
|
|
@@ -119,250 +111,9 @@ export interface ToolInputDelta {
|
|
|
119
111
|
conversationId?: string;
|
|
120
112
|
/** The tool_use block ID for client-side correlation. */
|
|
121
113
|
toolUseId?: string;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
export interface ToolResult {
|
|
125
|
-
type: "tool_result";
|
|
126
|
-
toolName: string;
|
|
127
|
-
result: string;
|
|
128
|
-
isError?: boolean;
|
|
129
|
-
diff?: {
|
|
130
|
-
filePath: string;
|
|
131
|
-
oldContent: string;
|
|
132
|
-
newContent: string;
|
|
133
|
-
isNewFile: boolean;
|
|
134
|
-
};
|
|
135
|
-
status?: string;
|
|
136
|
-
conversationId?: string;
|
|
137
|
-
/** Base64-encoded image data extracted from contentBlocks (e.g. browser_screenshot). @deprecated Use imageDataList. */
|
|
138
|
-
imageData?: string;
|
|
139
|
-
/** Base64-encoded image data extracted from contentBlocks (e.g. browser_screenshot, image generation). */
|
|
140
|
-
imageDataList?: string[];
|
|
141
|
-
/** The tool_use block ID for client-side correlation. */
|
|
142
|
-
toolUseId?: string;
|
|
143
|
-
/** Risk level from the classifier ("low" | "medium" | "high" | "unknown"). */
|
|
144
|
-
riskLevel?: string;
|
|
145
|
-
/** Human-readable reason for the risk classification. */
|
|
146
|
-
riskReason?: string;
|
|
147
|
-
/** ID of the trust rule that matched this invocation (if any). */
|
|
148
|
-
matchedTrustRuleId?: string;
|
|
149
|
-
/** Whether the daemon is running in a containerized (Docker) environment. */
|
|
150
|
-
isContainerized?: boolean;
|
|
151
|
-
/**
|
|
152
|
-
* Display-only ladder of scope option labels for the rule editor
|
|
153
|
-
* (narrowest to broadest). The `pattern` here is regex-style and is
|
|
154
|
-
* NOT a valid trust rule pattern. Clients must use
|
|
155
|
-
* `riskAllowlistOptions` for the pattern that gets saved.
|
|
156
|
-
*/
|
|
157
|
-
riskScopeOptions?: Array<{ pattern: string; label: string }>;
|
|
158
|
-
/**
|
|
159
|
-
* Allowlist options for the rule editor save path (narrowest to
|
|
160
|
-
* broadest). Each `pattern` is a Minimatch-glob compatible string —
|
|
161
|
-
* what the gateway actually matches against. Mirrors the
|
|
162
|
-
* `allowlistOptions` field on `ConfirmationRequest`. May be absent
|
|
163
|
-
* for tools whose classifier does not produce an allowlist (e.g.
|
|
164
|
-
* web-risk classifier, MCP tools without classifier coverage).
|
|
165
|
-
*/
|
|
166
|
-
riskAllowlistOptions?: Array<{
|
|
167
|
-
label: string;
|
|
168
|
-
description: string;
|
|
169
|
-
pattern: string;
|
|
170
|
-
}>;
|
|
171
|
-
/** Directory scope ladder for the rule editor modal (narrowest to broadest). */
|
|
172
|
-
riskDirectoryScopeOptions?: Array<{ scope: string; label: string }>;
|
|
173
|
-
/** How the approval decision was reached: prompted, auto, blocked, or unknown (legacy). */
|
|
174
|
-
approvalMode?: string;
|
|
175
|
-
/** Why the approval decision was reached (stable enum for client display). */
|
|
176
|
-
approvalReason?: string;
|
|
177
|
-
/** Snapshot of the auto-approve threshold at execution time. */
|
|
178
|
-
riskThreshold?: string;
|
|
179
|
-
/** Structured activity metadata for rich client rendering. Optional; old
|
|
180
|
-
* clients that key off `result` continue to work unchanged. */
|
|
181
|
-
activityMetadata?: ToolActivityMetadata;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
export interface ConfirmationRequest {
|
|
185
|
-
type: "confirmation_request";
|
|
186
|
-
requestId: string;
|
|
187
|
-
toolName: string;
|
|
188
|
-
input: Record<string, unknown>;
|
|
189
|
-
riskLevel: string;
|
|
190
|
-
/** Human-readable reason for the risk classification (e.g. "Modifies remote repository state"). */
|
|
191
|
-
riskReason?: string;
|
|
192
|
-
/** Whether the daemon is running in a containerized (Docker) environment. */
|
|
193
|
-
isContainerized?: boolean;
|
|
194
|
-
executionTarget?: "sandbox" | "host";
|
|
195
|
-
allowlistOptions: Array<{
|
|
196
|
-
label: string;
|
|
197
|
-
description: string;
|
|
198
|
-
pattern: string;
|
|
199
|
-
}>;
|
|
200
|
-
scopeOptions: Array<{ label: string; scope: string }>;
|
|
201
|
-
directoryScopeOptions?: Array<{ scope: string; label: string }>;
|
|
202
|
-
diff?: {
|
|
203
|
-
filePath: string;
|
|
204
|
-
oldContent: string;
|
|
205
|
-
newContent: string;
|
|
206
|
-
isNewFile: boolean;
|
|
207
|
-
};
|
|
208
|
-
conversationId?: string;
|
|
209
|
-
/** When false, the client should hide "always allow" / trust-rule persistence affordances. */
|
|
210
|
-
persistentDecisionsAllowed?: boolean;
|
|
211
|
-
/** The tool_use block ID for client-side correlation with specific tool calls. */
|
|
212
|
-
toolUseId?: string;
|
|
213
|
-
/** ACP tool kind from the agent (e.g. "read", "edit", "execute"). Present only for ACP permission requests. */
|
|
214
|
-
acpToolKind?: string;
|
|
215
|
-
/** ACP permission options from the agent. Present only for ACP permission requests. Clients should use these to render the correct buttons. */
|
|
216
|
-
acpOptions?: Array<{
|
|
217
|
-
optionId: string;
|
|
218
|
-
name: string;
|
|
219
|
-
kind: "allow_once" | "allow_always" | "reject_once" | "reject_always";
|
|
220
|
-
}>;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
export interface SecretRequest {
|
|
224
|
-
type: "secret_request";
|
|
225
|
-
requestId: string;
|
|
226
|
-
service: string;
|
|
227
|
-
field: string;
|
|
228
|
-
label: string;
|
|
229
|
-
description?: string;
|
|
230
|
-
placeholder?: string;
|
|
231
|
-
conversationId?: string;
|
|
232
|
-
/** Intended purpose of the credential (displayed to user). */
|
|
233
|
-
purpose?: string;
|
|
234
|
-
/** Tools allowed to use this credential. */
|
|
235
|
-
allowedTools?: string[];
|
|
236
|
-
/** Domains where this credential may be used. */
|
|
237
|
-
allowedDomains?: string[];
|
|
238
|
-
/** Whether one-time send override is available. */
|
|
239
|
-
allowOneTimeSend?: boolean;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
export interface QuestionOption {
|
|
243
|
-
id: string;
|
|
244
|
-
label: string;
|
|
245
|
-
description?: string;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
/**
|
|
249
|
-
* One entry in a batched ask-question request.
|
|
250
|
-
*
|
|
251
|
-
* `id` is daemon-assigned (e.g. `q1`, `q2`...) — the LLM neither sees nor
|
|
252
|
-
* supplies it. It exists so the client has a stable handle to post the
|
|
253
|
-
* user's answer back against. See `QuestionRequest` for the batching
|
|
254
|
-
* contract.
|
|
255
|
-
*/
|
|
256
|
-
export interface QuestionEntry {
|
|
257
|
-
id: string;
|
|
258
|
-
question: string;
|
|
259
|
-
description?: string;
|
|
260
|
-
/** LLM-supplied options, capped at 4. The client always renders a fixed
|
|
261
|
-
* 5th "Type something else" slot wired to a free-text response — so this
|
|
262
|
-
* array never represents the full choice set the user sees. */
|
|
263
|
-
options: QuestionOption[];
|
|
264
|
-
/** Optional placeholder shown in the free-text input. */
|
|
265
|
-
freeTextPlaceholder?: string;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* A single broadcast that carries either one or a small batch (≤5) of
|
|
270
|
-
* clarifying questions. The whole batch is one card lifecycle on the client:
|
|
271
|
-
* one render, one state machine, one response submission.
|
|
272
|
-
*
|
|
273
|
-
* Wire-compat plan: both shapes are populated on every broadcast.
|
|
274
|
-
* - `questions[]` is the canonical shape new clients should consume.
|
|
275
|
-
* - The flat `question` / `description` / `options` / `freeTextPlaceholder`
|
|
276
|
-
* fields mirror `questions[0]` for backwards compat with the existing
|
|
277
|
-
* web client, which keys off the flat fields. Once that client adopts
|
|
278
|
-
* `questions[]`, the flat fields can be dropped (separate cleanup).
|
|
279
|
-
*
|
|
280
|
-
* Daemon callers that don't supply a batch get a one-element `questions`
|
|
281
|
-
* array synthesized from the flat fields.
|
|
282
|
-
*/
|
|
283
|
-
export interface QuestionRequest {
|
|
284
|
-
type: "question_request";
|
|
285
|
-
requestId: string;
|
|
286
|
-
/** Batched-question payload. Always populated (single questions are sent
|
|
287
|
-
* as a one-element array). Each entry's `id` is daemon-assigned. */
|
|
288
|
-
questions: QuestionEntry[];
|
|
289
|
-
/** Legacy: mirrors `questions[0].question`. Kept populated for clients
|
|
290
|
-
* that haven't adopted the batched `questions[]` shape yet. */
|
|
291
|
-
question: string;
|
|
292
|
-
/** Legacy: mirrors `questions[0].description`. */
|
|
293
|
-
description?: string;
|
|
294
|
-
/** Legacy: mirrors `questions[0].options`. */
|
|
295
|
-
options: QuestionOption[];
|
|
296
|
-
/** Legacy: mirrors `questions[0].freeTextPlaceholder`. */
|
|
297
|
-
freeTextPlaceholder?: string;
|
|
298
|
-
conversationId?: string;
|
|
299
|
-
toolUseId?: string;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
export interface MessageComplete {
|
|
303
|
-
type: "message_complete";
|
|
304
|
-
conversationId?: string;
|
|
305
|
-
attachments?: UserMessageAttachment[];
|
|
306
|
-
attachmentWarnings?: string[];
|
|
307
|
-
/**
|
|
308
|
-
* Database ID of the completed assistant turn — the id that survives
|
|
309
|
-
* query-time merging when a turn persists multiple assistant rows. Matches
|
|
310
|
-
* the row the messages route returns.
|
|
311
|
-
*/
|
|
114
|
+
/** Database ID of the assistant message that owns this tool_use block.
|
|
115
|
+
* Same semantics as `AssistantTextDeltaEvent.messageId`. */
|
|
312
116
|
messageId?: string;
|
|
313
|
-
/**
|
|
314
|
-
* Distinguishes a real main-turn completion from auxiliary events such as
|
|
315
|
-
* call transcripts, call summaries, and watch notifier outputs. Clients
|
|
316
|
-
* gate turn-completion side effects (e.g. the task_complete sound) on
|
|
317
|
-
* `source !== "aux"`. Absent is treated as main for backwards compatibility.
|
|
318
|
-
*/
|
|
319
|
-
source?: "main" | "aux";
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
export interface ErrorMessage {
|
|
323
|
-
type: "error";
|
|
324
|
-
conversationId?: string;
|
|
325
|
-
requestId?: string;
|
|
326
|
-
code?: string;
|
|
327
|
-
message: string;
|
|
328
|
-
/** Categorizes the error so the client can offer contextual actions (e.g. "Send Anyway" for secret_blocked). */
|
|
329
|
-
category?: string;
|
|
330
|
-
/** Machine-readable conversation error category for clients that need source-aware recovery UI. */
|
|
331
|
-
errorCategory?: string;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
export interface MessageQueued {
|
|
335
|
-
type: "message_queued";
|
|
336
|
-
conversationId: string;
|
|
337
|
-
requestId: string;
|
|
338
|
-
position: number;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
export interface MessageDequeued {
|
|
342
|
-
type: "message_dequeued";
|
|
343
|
-
conversationId: string;
|
|
344
|
-
requestId: string;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
/**
|
|
348
|
-
* Request-level terminal signal for a user message lifecycle.
|
|
349
|
-
*
|
|
350
|
-
* Unlike `message_complete`, this does not imply the active assistant turn
|
|
351
|
-
* has completed. It is used for paths that consume a request inline while a
|
|
352
|
-
* separate in-flight turn may still be running.
|
|
353
|
-
*/
|
|
354
|
-
export interface MessageRequestComplete {
|
|
355
|
-
type: "message_request_complete";
|
|
356
|
-
conversationId: string;
|
|
357
|
-
requestId: string;
|
|
358
|
-
/** True when an existing turn is still running after this request is finalized. */
|
|
359
|
-
runStillActive?: boolean;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
export interface MessageQueuedDeleted {
|
|
363
|
-
type: "message_queued_deleted";
|
|
364
|
-
conversationId: string;
|
|
365
|
-
requestId: string;
|
|
366
117
|
}
|
|
367
118
|
|
|
368
119
|
export interface MessageSteered {
|
|
@@ -398,89 +149,7 @@ export interface ConfirmationStateChanged {
|
|
|
398
149
|
toolUseId?: string;
|
|
399
150
|
}
|
|
400
151
|
|
|
401
|
-
|
|
402
|
-
* Lifecycle states reported by `interaction_resolved`.
|
|
403
|
-
*
|
|
404
|
-
* - `"approved"` / `"rejected"` — user-supplied verdict on a confirmation.
|
|
405
|
-
* - `"answered"` — user/client provided a response (secret value, question
|
|
406
|
-
* answer, host-proxy result).
|
|
407
|
-
* - `"cancelled"` — the interaction was torn down without a user response
|
|
408
|
-
* (timeout, abort, dispose, prompter shutdown).
|
|
409
|
-
* - `"superseded"` — invalidated by a newer event (auto-deny on enqueue, a
|
|
410
|
-
* fresh user message arriving while a confirmation was outstanding).
|
|
411
|
-
*/
|
|
412
|
-
export type InteractionResolutionState =
|
|
413
|
-
| "approved"
|
|
414
|
-
| "rejected"
|
|
415
|
-
| "answered"
|
|
416
|
-
| "cancelled"
|
|
417
|
-
| "superseded";
|
|
418
|
-
|
|
419
|
-
/**
|
|
420
|
-
* Broadcast when a pending interaction (confirmation, secret, question,
|
|
421
|
-
* host-proxy request) transitions to a resolved state. Clients use this to
|
|
422
|
-
* drop attention/processing indicators without polling.
|
|
423
|
-
*/
|
|
424
|
-
export interface InteractionResolved {
|
|
425
|
-
type: "interaction_resolved";
|
|
426
|
-
requestId: string;
|
|
427
|
-
/** Conversation id the interaction belongs to. */
|
|
428
|
-
conversationId: string;
|
|
429
|
-
state: InteractionResolutionState;
|
|
430
|
-
/** Kind of the resolved interaction (e.g. "confirmation", "secret", "host_bash"). */
|
|
431
|
-
kind: string;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
/**
|
|
435
|
-
* Server-side assistant activity lifecycle for thinking indicator placement.
|
|
436
|
-
*
|
|
437
|
-
* `activityVersion` is monotonically increasing per conversation. Clients must
|
|
438
|
-
* ignore events with a version older than their current known version.
|
|
439
|
-
*/
|
|
440
|
-
export interface AssistantActivityState {
|
|
441
|
-
type: "assistant_activity_state";
|
|
442
|
-
conversationId: string;
|
|
443
|
-
activityVersion: number;
|
|
444
|
-
phase:
|
|
445
|
-
| "idle"
|
|
446
|
-
| "thinking"
|
|
447
|
-
| "streaming"
|
|
448
|
-
| "tool_running"
|
|
449
|
-
| "awaiting_confirmation";
|
|
450
|
-
anchor: "assistant_turn" | "user_turn" | "global";
|
|
451
|
-
/** Active user request when available. */
|
|
452
|
-
requestId?: string;
|
|
453
|
-
reason:
|
|
454
|
-
| "message_dequeued"
|
|
455
|
-
| "thinking_delta"
|
|
456
|
-
| "first_text_delta"
|
|
457
|
-
| "tool_use_start"
|
|
458
|
-
| "preview_start"
|
|
459
|
-
| "tool_result_received"
|
|
460
|
-
| "confirmation_requested"
|
|
461
|
-
| "confirmation_resolved"
|
|
462
|
-
| "context_compacting"
|
|
463
|
-
| "message_complete"
|
|
464
|
-
| "generation_cancelled"
|
|
465
|
-
| "error_terminal";
|
|
466
|
-
/** Human-readable description of what the assistant is currently doing. */
|
|
467
|
-
statusText?: string;
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
/**
|
|
471
|
-
* Emitted when the query complexity auto-router selects a non-default
|
|
472
|
-
* profile for the current turn. Clients use this to show an inline
|
|
473
|
-
* notification (e.g. "Using Quality for this response"). Only fires when
|
|
474
|
-
* the router picks a profile — not when the user explicitly pinned one.
|
|
475
|
-
*/
|
|
476
|
-
export interface TurnProfileAutoRouted {
|
|
477
|
-
type: "turn_profile_auto_routed";
|
|
478
|
-
conversationId: string;
|
|
479
|
-
/** Profile key (e.g. "quality-optimized"). */
|
|
480
|
-
profile: string;
|
|
481
|
-
/** Human-readable label (e.g. "Quality"). */
|
|
482
|
-
profileLabel: string;
|
|
483
|
-
}
|
|
152
|
+
export type { TurnProfileAutoRoutedEvent };
|
|
484
153
|
|
|
485
154
|
/**
|
|
486
155
|
* Broadcast to clients when a conversation's inference-profile override
|
|
@@ -536,28 +205,29 @@ export type _MessagesClientMessages =
|
|
|
536
205
|
| SuggestionRequest;
|
|
537
206
|
|
|
538
207
|
export type _MessagesServerMessages =
|
|
539
|
-
|
|
|
540
|
-
|
|
|
208
|
+
| UserMessageEchoEvent
|
|
209
|
+
| AssistantTurnStartEvent
|
|
210
|
+
| AssistantTextDeltaEvent
|
|
541
211
|
| AssistantThinkingDelta
|
|
542
|
-
|
|
|
212
|
+
| ToolUseStartEvent
|
|
543
213
|
| ToolUsePreviewStart
|
|
544
214
|
| ToolOutputChunk
|
|
545
215
|
| ToolInputDelta
|
|
546
|
-
|
|
|
547
|
-
|
|
|
548
|
-
|
|
|
549
|
-
|
|
|
550
|
-
|
|
|
551
|
-
|
|
|
552
|
-
|
|
|
553
|
-
|
|
|
554
|
-
|
|
|
555
|
-
|
|
|
216
|
+
| ToolResultEvent
|
|
217
|
+
| ConfirmationRequestEvent
|
|
218
|
+
| SecretRequestEvent
|
|
219
|
+
| QuestionRequestEvent
|
|
220
|
+
| MessageCompleteEvent
|
|
221
|
+
| ErrorEvent
|
|
222
|
+
| MessageQueuedEvent
|
|
223
|
+
| MessageDequeuedEvent
|
|
224
|
+
| MessageRequestCompleteEvent
|
|
225
|
+
| MessageQueuedDeletedEvent
|
|
556
226
|
| MessageSteered
|
|
557
227
|
| SuggestionResponse
|
|
558
228
|
| TraceEvent
|
|
559
229
|
| ConfirmationStateChanged
|
|
560
|
-
|
|
|
561
|
-
|
|
|
230
|
+
| AssistantActivityStateEvent
|
|
231
|
+
| TurnProfileAutoRoutedEvent
|
|
562
232
|
| ConversationInferenceProfileUpdated
|
|
563
|
-
|
|
|
233
|
+
| InteractionResolvedEvent;
|
|
@@ -1,34 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export interface NotificationIntent {
|
|
3
|
-
type: "notification_intent";
|
|
4
|
-
/** Delivery audit record ID so the client can correlate ack messages. */
|
|
5
|
-
deliveryId?: string;
|
|
6
|
-
sourceEventName: string;
|
|
7
|
-
title: string;
|
|
8
|
-
body: string;
|
|
9
|
-
/** Optional deep-link metadata so the client can navigate to the relevant context. */
|
|
10
|
-
deepLinkMetadata?: Record<string, unknown>;
|
|
11
|
-
/**
|
|
12
|
-
* When set, this notification is guardian-sensitive and should only be
|
|
13
|
-
* displayed by clients whose guardian identity matches this principal ID.
|
|
14
|
-
* Clients not bound to this guardian should ignore the notification.
|
|
15
|
-
*/
|
|
16
|
-
targetGuardianPrincipalId?: string;
|
|
17
|
-
/**
|
|
18
|
-
* When true, the client must NOT post this intent to the OS notification
|
|
19
|
-
* surface (`UNUserNotificationCenter` on macOS). Non-banner side effects
|
|
20
|
-
* (guardian filtering, fallback dedup, mark-unseen + history catch-up on
|
|
21
|
-
* the paired conversation) still run. The home-feed inbox entry is
|
|
22
|
-
* written independently by `home-feed-side-effect.ts` and is unaffected
|
|
23
|
-
* by this flag.
|
|
24
|
-
*
|
|
25
|
-
* Set by the server based on `attentionHints.urgency`: true for
|
|
26
|
-
* `low`/`medium`, false for `high`/`critical`. The notification center
|
|
27
|
-
* is the always-on canonical inbox; the OS banner is reserved for
|
|
28
|
-
* signals the user opted into push for (urgency >= high).
|
|
29
|
-
*/
|
|
30
|
-
silent?: boolean;
|
|
31
|
-
}
|
|
1
|
+
import type { NotificationIntentEvent } from "../../api/events/notification-intent.js";
|
|
32
2
|
|
|
33
3
|
/** Server push — broadcast when a notification creates a new vellum conversation. */
|
|
34
4
|
export interface NotificationConversationCreated {
|
|
@@ -105,5 +75,5 @@ export type _NotificationsClientMessages =
|
|
|
105
75
|
| ConversationUnreadSignal;
|
|
106
76
|
|
|
107
77
|
export type _NotificationsServerMessages =
|
|
108
|
-
|
|
|
78
|
+
| NotificationIntentEvent
|
|
109
79
|
| NotificationConversationCreated;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// Client settings: daemon-pushed configuration updates to connected clients.
|
|
2
2
|
|
|
3
|
+
import type { AvatarUpdatedEvent } from "../../api/events/avatar-updated.js";
|
|
4
|
+
|
|
3
5
|
// === Client → Server ===
|
|
4
6
|
|
|
5
7
|
/** Request from a conversation or client to change the voice activation key. */
|
|
@@ -27,13 +29,6 @@ export interface ClientSettingsUpdate {
|
|
|
27
29
|
value: string;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
|
-
/** Sent by the daemon after the avatar image has been regenerated and saved to disk. */
|
|
31
|
-
export interface AvatarUpdated {
|
|
32
|
-
type: "avatar_updated";
|
|
33
|
-
/** Absolute path to the updated avatar image file. */
|
|
34
|
-
avatarPath: string;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
32
|
/** Sent by the daemon when workspace config.json changes on disk. */
|
|
38
33
|
export interface ConfigChanged {
|
|
39
34
|
type: "config_changed";
|
|
@@ -60,7 +55,7 @@ export type _SettingsClientMessages =
|
|
|
60
55
|
| GenerateAvatarRequest;
|
|
61
56
|
export type _SettingsServerMessages =
|
|
62
57
|
| ClientSettingsUpdate
|
|
63
|
-
|
|
|
58
|
+
| AvatarUpdatedEvent
|
|
64
59
|
| ConfigChanged
|
|
65
60
|
| SoundsConfigUpdated
|
|
66
61
|
| GenerateAvatarResponse;
|
|
@@ -89,6 +89,7 @@ interface SlimSkillBase {
|
|
|
89
89
|
emoji?: string;
|
|
90
90
|
kind: "bundled" | "installed" | "catalog";
|
|
91
91
|
status: "enabled" | "disabled" | "available";
|
|
92
|
+
category: string;
|
|
92
93
|
}
|
|
93
94
|
|
|
94
95
|
interface VellumSlimSkill extends SlimSkillBase {
|
|
@@ -159,6 +160,7 @@ interface SkillDetailBase {
|
|
|
159
160
|
emoji?: string;
|
|
160
161
|
kind: "bundled" | "installed" | "catalog";
|
|
161
162
|
status: "enabled" | "disabled" | "available";
|
|
163
|
+
category: string;
|
|
162
164
|
}
|
|
163
165
|
|
|
164
166
|
interface VellumSkillDetail extends SkillDetailBase {
|
|
@@ -12,6 +12,12 @@ export interface SubagentSpawned {
|
|
|
12
12
|
label: string;
|
|
13
13
|
objective: string;
|
|
14
14
|
isFork?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Tool-use id of the `skill_execute` call that spawned this subagent. Lets
|
|
17
|
+
* the client anchor the inline subagent card to the exact spawn tool call,
|
|
18
|
+
* independent of the (reconcile-volatile) parent message id.
|
|
19
|
+
*/
|
|
20
|
+
parentToolUseId?: string;
|
|
15
21
|
}
|
|
16
22
|
|
|
17
23
|
export interface SubagentStatusChanged {
|
|
@@ -188,6 +188,8 @@ interface UiSurfaceShowBase {
|
|
|
188
188
|
messageId?: string;
|
|
189
189
|
/** When `true`, clicking an action does not dismiss the surface — the client keeps the card visible and only marks the clicked `actionId` as spent so siblings remain clickable. */
|
|
190
190
|
persistent?: boolean;
|
|
191
|
+
/** Id of the tool call that produced this surface (the `ui_show` proxy tool). Lets the client gate app previews on the tool result's arrival rather than whole-turn streaming state. */
|
|
192
|
+
toolCallId?: string;
|
|
191
193
|
}
|
|
192
194
|
|
|
193
195
|
export interface UiSurfaceShowCard extends UiSurfaceShowBase {
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
|
|
3
|
+
import {
|
|
4
|
+
type SyncChangedEvent,
|
|
5
|
+
SyncChangedEventSchema,
|
|
6
|
+
} from "../../api/events/sync-changed.js";
|
|
7
|
+
|
|
8
|
+
export { type SyncChangedEvent, SyncChangedEventSchema };
|
|
9
|
+
|
|
3
10
|
export const SYNC_TAGS = {
|
|
4
11
|
assistantAvatar: "assistant:self:avatar",
|
|
5
12
|
assistantIdentity: "assistant:self:identity",
|
|
13
|
+
assistantIdentityIntro: "assistant:self:identity-intro",
|
|
6
14
|
assistantConfig: "assistant:self:config",
|
|
7
15
|
assistantSounds: "assistant:self:sounds",
|
|
8
16
|
assistantSchedules: "assistant:self:schedules",
|
|
17
|
+
appsList: "apps:list",
|
|
9
18
|
conversationsList: "conversations:list",
|
|
10
19
|
featureFlagsClient: "feature-flags:client",
|
|
11
20
|
featureFlagsAssistant: "feature-flags:assistant",
|
|
@@ -23,29 +32,8 @@ export type SyncInvalidationTag =
|
|
|
23
32
|
| ConversationSyncInvalidationTag
|
|
24
33
|
| (string & {});
|
|
25
34
|
|
|
26
|
-
export interface SyncChangedMessage {
|
|
27
|
-
type: "sync_changed";
|
|
28
|
-
tags: SyncInvalidationTag[];
|
|
29
|
-
/**
|
|
30
|
-
* Optional identifier of the client that originated the change. When set,
|
|
31
|
-
* the server fan-out and clients themselves can suppress self-echoes so
|
|
32
|
-
* the originating tab/process doesn't reinvalidate its own cache off its
|
|
33
|
-
* own mutation. Daemon-internal emits (agent loop, FS watcher, cron) leave
|
|
34
|
-
* this unset so the event fans out to every subscriber as before.
|
|
35
|
-
*/
|
|
36
|
-
originClientId?: string;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
35
|
export const SyncInvalidationTagSchema = z.string().min(1);
|
|
40
36
|
|
|
41
|
-
export const SyncChangedMessageSchema = z
|
|
42
|
-
.object({
|
|
43
|
-
type: z.literal("sync_changed"),
|
|
44
|
-
tags: z.array(SyncInvalidationTagSchema).min(1),
|
|
45
|
-
originClientId: z.string().min(1).optional(),
|
|
46
|
-
})
|
|
47
|
-
.strict();
|
|
48
|
-
|
|
49
37
|
export function conversationMessagesSyncTag(
|
|
50
38
|
conversationId: string,
|
|
51
39
|
): ConversationSyncInvalidationTag {
|
|
@@ -61,15 +49,14 @@ export function conversationMetadataSyncTag(
|
|
|
61
49
|
export function buildSyncChangedMessage(
|
|
62
50
|
tags: SyncInvalidationTag[],
|
|
63
51
|
originClientId?: string,
|
|
64
|
-
):
|
|
52
|
+
): SyncChangedEvent {
|
|
65
53
|
const dedupedTags = Array.from(new Set(tags));
|
|
66
54
|
const trimmedOrigin = originClientId?.trim();
|
|
67
|
-
|
|
55
|
+
return SyncChangedEventSchema.parse({
|
|
68
56
|
type: "sync_changed",
|
|
69
57
|
tags: dedupedTags,
|
|
70
58
|
...(trimmedOrigin ? { originClientId: trimmedOrigin } : {}),
|
|
71
59
|
});
|
|
72
|
-
return parsed as SyncChangedMessage;
|
|
73
60
|
}
|
|
74
61
|
|
|
75
|
-
export type _SyncInvalidationServerMessages =
|
|
62
|
+
export type _SyncInvalidationServerMessages = SyncChangedEvent;
|