@vellumai/assistant 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ARCHITECTURE.md +38 -56
- package/Dockerfile +2 -0
- package/README.md +3 -4
- package/__tests__/permissions/gateway-threshold-reader.test.ts +88 -142
- package/bun.lock +29 -26
- package/docs/architecture/security.md +38 -16
- package/docs/plugins.md +7 -9
- package/knip.json +2 -0
- package/node_modules/@vellumai/gateway-client/src/index.ts +1 -0
- package/node_modules/@vellumai/gateway-client/src/ipc-client.ts +39 -1
- package/node_modules/@vellumai/gateway-client/src/types.ts +11 -0
- package/node_modules/@vellumai/service-contracts/package.json +2 -0
- package/node_modules/@vellumai/service-contracts/src/__tests__/contracts.test.ts +4 -0
- package/node_modules/@vellumai/service-contracts/src/__tests__/ingress.test.ts +107 -0
- package/node_modules/@vellumai/service-contracts/src/index.ts +5 -1
- package/node_modules/@vellumai/service-contracts/src/ingress.ts +24 -0
- package/node_modules/@vellumai/service-contracts/src/twilio-ingress.ts +84 -0
- package/node_modules/@vellumai/skill-host-contracts/__tests__/client.test.ts +1 -5
- package/node_modules/@vellumai/skill-host-contracts/src/assistant-event.ts +9 -5
- package/node_modules/@vellumai/skill-host-contracts/src/client.ts +10 -16
- package/node_modules/@vellumai/skill-host-contracts/src/skill-host.ts +1 -9
- package/node_modules/@vellumai/skill-host-contracts/src/tool-types.ts +12 -12
- package/node_modules/@vellumai/slack-text/bun.lock +24 -0
- package/node_modules/@vellumai/slack-text/package.json +18 -0
- package/node_modules/@vellumai/slack-text/src/index.test.ts +153 -0
- package/node_modules/@vellumai/slack-text/src/index.ts +235 -0
- package/node_modules/@vellumai/slack-text/tsconfig.json +20 -0
- package/node_modules/@vellumai/twilio-client/bun.lock +24 -0
- package/node_modules/@vellumai/twilio-client/package.json +18 -0
- package/node_modules/@vellumai/twilio-client/src/__tests__/twilio-client.test.ts +128 -0
- package/node_modules/@vellumai/twilio-client/src/index.ts +179 -0
- package/node_modules/@vellumai/twilio-client/tsconfig.json +20 -0
- package/openapi.yaml +869 -129
- package/package.json +8 -3
- package/scripts/generate-openapi.ts +16 -111
- package/src/__tests__/agent-wake-override-profile.test.ts +23 -1
- package/src/__tests__/anthropic-provider.test.ts +56 -13
- package/src/__tests__/app-builder-tool-scripts.test.ts +3 -3
- package/src/__tests__/app-bundler.test.ts +170 -1
- package/src/__tests__/app-control-flow.test.ts +374 -0
- package/src/__tests__/app-control-no-global-cgevent.test.ts +98 -0
- package/src/__tests__/app-control-tool-schemas.test.ts +621 -0
- package/src/__tests__/app-conversation-ids-backfill.test.ts +278 -0
- package/src/__tests__/app-conversation-ids.test.ts +151 -0
- package/src/__tests__/app-executors.test.ts +30 -43
- package/src/__tests__/approval-cascade.test.ts +0 -15
- package/src/__tests__/approval-routes-http.test.ts +29 -23
- package/src/__tests__/assistant-event-hub-machine-name.test.ts +146 -0
- package/src/__tests__/assistant-event-hub-targeted.test.ts +257 -0
- package/src/__tests__/assistant-event-hub.test.ts +235 -79
- package/src/__tests__/assistant-event.test.ts +10 -5
- package/src/__tests__/assistant-events-sse-hardening.test.ts +44 -17
- package/src/__tests__/assistant-feature-flags-integration.test.ts +11 -36
- package/src/__tests__/background-shell-host-bash.test.ts +46 -56
- package/src/__tests__/bootstrap-turn-cleanup.test.ts +44 -0
- package/src/__tests__/btw-routes.test.ts +13 -4
- package/src/__tests__/call-controller.test.ts +50 -2
- package/src/__tests__/call-domain.test.ts +0 -2
- package/src/__tests__/call-routes-http.test.ts +0 -2
- package/src/__tests__/call-site-routing-provider.test.ts +193 -0
- package/src/__tests__/channel-approval-routes.test.ts +10 -296
- package/src/__tests__/channel-approvals.test.ts +25 -17
- package/src/__tests__/channel-guardian.test.ts +100 -146
- package/src/__tests__/channel-readiness-service.test.ts +59 -1
- package/src/__tests__/checker.test.ts +23 -38
- package/src/__tests__/compact-event-conversation-id-guard.test.ts +50 -0
- package/src/__tests__/compaction-events.test.ts +2 -0
- package/src/__tests__/config-loader-backfill.test.ts +90 -155
- package/src/__tests__/config-loader-platform-defaults.test.ts +196 -0
- package/src/__tests__/config-schema-cmd.test.ts +0 -1
- package/src/__tests__/config-schema.test.ts +6 -48
- package/src/__tests__/config-set-platform-guard.test.ts +48 -4
- package/src/__tests__/config-watcher-cleanup-throttle.test.ts +2 -2
- package/src/__tests__/config-watcher.test.ts +14 -2
- package/src/__tests__/connection-policy.test.ts +1 -52
- package/src/__tests__/contacts-write.test.ts +2 -64
- package/src/__tests__/context-image-dimensions.test.ts +1 -1
- package/src/__tests__/context-search-memory-source.test.ts +120 -1
- package/src/__tests__/context-search-memory-v2-source.test.ts +383 -0
- package/src/__tests__/context-search-pkb-source.test.ts +49 -0
- package/src/__tests__/context-search-workspace-source.test.ts +9 -22
- package/src/__tests__/context-window-manager.test.ts +46 -0
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +2 -0
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +102 -29
- package/src/__tests__/conversation-agent-loop.test.ts +980 -13
- package/src/__tests__/conversation-analysis-routes.test.ts +12 -10
- package/src/__tests__/conversation-app-control-instantiation.test.ts +392 -0
- package/src/__tests__/conversation-app-control-lifecycle.test.ts +237 -0
- package/src/__tests__/conversation-attention-telegram.test.ts +11 -3
- package/src/__tests__/conversation-confirmation-signals.test.ts +0 -291
- package/src/__tests__/conversation-history-web-search.test.ts +4 -3
- package/src/__tests__/conversation-inference-profile-route.test.ts +12 -23
- package/src/__tests__/conversation-init.benchmark.test.ts +0 -2
- package/src/__tests__/conversation-lifecycle.test.ts +40 -4
- package/src/__tests__/conversation-process-app-control-preactivation.test.ts +283 -0
- package/src/__tests__/conversation-process-callsite.test.ts +79 -2
- package/src/__tests__/conversation-queue.test.ts +3 -8
- package/src/__tests__/conversation-routes-disk-view.test.ts +7 -161
- package/src/__tests__/conversation-routes-guardian-reply.test.ts +120 -104
- package/src/__tests__/conversation-routes-slash-commands.test.ts +76 -66
- package/src/__tests__/conversation-runtime-assembly.test.ts +257 -3
- package/src/__tests__/conversation-slash-commands.test.ts +24 -8
- package/src/__tests__/conversation-slash-queue.test.ts +2 -0
- package/src/__tests__/conversation-speed-override.test.ts +0 -3
- package/src/__tests__/conversation-starter-routes.test.ts +79 -2
- package/src/__tests__/conversation-surfaces-action-delivery.test.ts +202 -0
- package/src/__tests__/conversation-surfaces-app-control.test.ts +317 -0
- package/src/__tests__/conversation-surfaces-standalone-payloads.test.ts +12 -5
- package/src/__tests__/conversation-surfaces-standalone.test.ts +18 -14
- package/src/__tests__/conversation-surfaces-state-update.test.ts +3 -2
- package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +8 -46
- package/src/__tests__/conversation-usage.test.ts +253 -3
- package/src/__tests__/credential-execution-feature-gates.test.ts +5 -12
- package/src/__tests__/credential-execution-managed-contract.test.ts +3 -131
- package/src/__tests__/credential-execution-shell-lockdown.test.ts +0 -39
- package/src/__tests__/credential-health-service.test.ts +68 -0
- package/src/__tests__/credential-security-e2e.test.ts +4 -3
- package/src/__tests__/credential-security-invariants.test.ts +1 -5
- package/src/__tests__/credential-token-resolver.test.ts +180 -0
- package/src/__tests__/credentials-cli.test.ts +5 -12
- package/src/__tests__/cu-unified-flow.test.ts +206 -27
- package/src/__tests__/daemon-assistant-events.test.ts +34 -21
- package/src/__tests__/daemon-credential-client.test.ts +102 -17
- package/src/__tests__/db-connection-isolation.test.ts +125 -0
- package/src/__tests__/db-migration-rollback.test.ts +101 -0
- package/src/__tests__/db-schedule-syntax-migration.test.ts +2 -0
- package/src/__tests__/db-slack-compaction-watermark-migration.test.ts +169 -0
- package/src/__tests__/deterministic-verification-control-plane.test.ts +7 -80
- package/src/__tests__/document-conversations.test.ts +332 -0
- package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -1
- package/src/__tests__/embedding-managed-proxy-selection.test.ts +2 -2
- package/src/__tests__/emit-event-signal.test.ts +4 -6
- package/src/__tests__/events-client-registration.test.ts +193 -49
- package/src/__tests__/filing-service.test.ts +58 -7
- package/src/__tests__/first-greeting.test.ts +156 -150
- package/src/__tests__/fixtures/mock-chrome-extension.ts +108 -66
- package/src/__tests__/gateway-only-enforcement.test.ts +0 -1
- package/src/__tests__/get-skill-detail-audit.test.ts +3 -8
- package/src/__tests__/guardian-binding-drift-heal.test.ts +1 -1
- package/src/__tests__/guardian-dispatch.test.ts +1 -1
- package/src/__tests__/guardian-grant-minting.test.ts +7 -2
- package/src/__tests__/guardian-routing-invariants.test.ts +7 -2
- package/src/__tests__/guardian-routing-state.test.ts +1 -1
- package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -2
- package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +30 -11
- package/src/__tests__/handlers-user-message-approval-consumption.test.ts +2 -84
- package/src/__tests__/headless-browser-mode.test.ts +4 -9
- package/src/__tests__/headless-browser-navigate.test.ts +21 -20
- package/src/__tests__/heartbeat-service.test.ts +1007 -8
- package/src/__tests__/helpers/call-route-handler.ts +7 -1
- package/src/__tests__/helpers/channel-test-adapter.ts +2 -2
- package/src/__tests__/helpers/create-guardian-binding.ts +91 -0
- package/src/__tests__/host-app-control-proxy.test.ts +602 -0
- package/src/__tests__/host-app-control-routes.test.ts +263 -0
- package/src/__tests__/host-bash-proxy.test.ts +270 -147
- package/src/__tests__/host-bash-routes.test.ts +294 -0
- package/src/__tests__/host-browser-proxy.test.ts +126 -198
- package/src/__tests__/host-browser-routes.test.ts +50 -54
- package/src/__tests__/host-cu-proxy.test.ts +78 -144
- package/src/__tests__/host-cu-routes-targeted.test.ts +300 -0
- package/src/__tests__/host-file-edit-tool.test.ts +47 -1
- package/src/__tests__/host-file-proxy-targeted.test.ts +339 -0
- package/src/__tests__/host-file-proxy.test.ts +62 -122
- package/src/__tests__/host-file-read-tool.test.ts +59 -21
- package/src/__tests__/host-file-routes-targeted.test.ts +262 -0
- package/src/__tests__/host-file-write-tool.test.ts +42 -1
- package/src/__tests__/host-proxy-base.test.ts +312 -0
- package/src/__tests__/host-shell-tool.test.ts +53 -70
- package/src/__tests__/host-transfer-pending-interactions.test.ts +2 -18
- package/src/__tests__/host-transfer-proxy-targeted.test.ts +583 -0
- package/src/__tests__/host-transfer-proxy.test.ts +145 -56
- package/src/__tests__/host-transfer-routes-targeted.test.ts +447 -0
- package/src/__tests__/http-user-message-parity.test.ts +1 -6
- package/src/__tests__/identity-intro-cache.test.ts +29 -0
- package/src/__tests__/identity-routes.test.ts +103 -1
- package/src/__tests__/inbound-slack-persistence.test.ts +31 -0
- package/src/__tests__/init-feature-flag-overrides.test.ts +26 -3
- package/src/__tests__/injector-chain.test.ts +10 -5
- package/src/__tests__/injector-pkb-v2-silenced.test.ts +124 -0
- package/src/__tests__/inline-command-runner.test.ts +0 -67
- package/src/__tests__/inline-skill-load-permissions.test.ts +5 -13
- package/src/__tests__/install-skill-routing.test.ts +1 -13
- package/src/__tests__/integration-status.test.ts +85 -5
- package/src/__tests__/intent-routing.test.ts +0 -1
- package/src/__tests__/jobs-store-qdrant-breaker.test.ts +95 -5
- package/src/__tests__/lifecycle-memory-v2-seed.test.ts +17 -0
- package/src/__tests__/llm-callsite-catalog.test.ts +34 -0
- package/src/__tests__/llm-catalog-parity.test.ts +90 -0
- package/src/__tests__/llm-context-resolution.test.ts +180 -0
- package/src/__tests__/llm-resolver.test.ts +80 -12
- package/src/__tests__/llm-usage-store.test.ts +269 -4
- package/src/__tests__/log-export-routes.test.ts +89 -0
- package/src/__tests__/managed-profile-guard.test.ts +225 -0
- package/src/__tests__/managed-skill-lifecycle.test.ts +0 -11
- package/src/__tests__/manual-token-reconciliation.test.ts +334 -0
- package/src/__tests__/mcp-auth-routes.test.ts +197 -0
- package/src/__tests__/mcp-cli.test.ts +338 -2
- package/src/__tests__/memory-jobs-worker-lanes.test.ts +188 -0
- package/src/__tests__/memory-v2-static-injector.test.ts +95 -0
- package/src/__tests__/migration-cross-version-compatibility.test.ts +197 -291
- package/src/__tests__/migration-export-http.test.ts +33 -26
- package/src/__tests__/migration-export-streaming.test.ts +18 -10
- package/src/__tests__/migration-export-to-gcs.test.ts +49 -9
- package/src/__tests__/migration-import-commit-http.test.ts +172 -21
- package/src/__tests__/migration-import-from-gcs.test.ts +50 -9
- package/src/__tests__/migration-import-from-url.test.ts +20 -6
- package/src/__tests__/migration-import-preflight-http.test.ts +95 -95
- package/src/__tests__/migration-parity-persistence.test.ts +62 -25
- package/src/__tests__/migration-transport.test.ts +115 -23
- package/src/__tests__/migration-validate-http.test.ts +105 -80
- package/src/__tests__/migration-wizard.test.ts +133 -27
- package/src/__tests__/mock-gateway-ipc.ts +1 -0
- package/src/__tests__/non-member-access-request.test.ts +1 -1
- package/src/__tests__/notification-guardian-path.test.ts +1 -1
- package/src/__tests__/oauth-cli.test.ts +0 -2
- package/src/__tests__/oauth-store.test.ts +19 -0
- package/src/__tests__/oauth2-gateway-transport.test.ts +0 -1
- package/src/__tests__/persistence-secret-redaction.test.ts +299 -0
- package/src/__tests__/platform-bash-auto-approve.test.ts +26 -21
- package/src/__tests__/prechat-onboarding-contract.test.ts +34 -8
- package/src/__tests__/pricing.test.ts +68 -4
- package/src/__tests__/process-message-background-slack.test.ts +333 -0
- package/src/__tests__/provider-commit-message-generator.test.ts +0 -1
- package/src/__tests__/provider-managed-proxy-integration.test.ts +153 -17
- package/src/__tests__/provider-send-message-override-profile.test.ts +50 -0
- package/src/__tests__/provider-usage-tracking.test.ts +208 -0
- package/src/__tests__/public-ingress-urls.test.ts +97 -0
- package/src/__tests__/reaction-persistence.test.ts +9 -6
- package/src/__tests__/rebind-secrets-screen.test.ts +53 -16
- package/src/__tests__/recording-handler.test.ts +64 -81
- package/src/__tests__/regenerate-fire-and-forget-trace.test.ts +4 -3
- package/src/__tests__/relay-server.test.ts +18 -13
- package/src/__tests__/require-fresh-approval.test.ts +13 -23
- package/src/__tests__/retry-backoff.test.ts +87 -0
- package/src/__tests__/runtime-attachment-metadata.test.ts +1 -1
- package/src/__tests__/runtime-events-sse-parity.test.ts +3 -4
- package/src/__tests__/runtime-events-sse.test.ts +13 -18
- package/src/__tests__/sanitize-config-for-transfer.test.ts +24 -2
- package/src/__tests__/schedule-retry.test.ts +715 -0
- package/src/__tests__/script-proxy-mitm-handler.test.ts +1 -1
- package/src/__tests__/search-skills-unified.test.ts +9 -15
- package/src/__tests__/secret-ingress-cli.test.ts +2 -5
- package/src/__tests__/secret-ingress-http.test.ts +1 -4
- package/src/__tests__/secret-onetime-send.test.ts +4 -2
- package/src/__tests__/secret-prompt-log-hygiene.test.ts +24 -7
- package/src/__tests__/secret-prompter-channel-fallback.test.ts +42 -47
- package/src/__tests__/secret-response-routing.test.ts +29 -15
- package/src/__tests__/secret-routes-managed-proxy.test.ts +5 -1
- package/src/__tests__/secret-scanner.test.ts +2 -545
- package/src/__tests__/send-endpoint-busy.test.ts +12 -24
- package/src/__tests__/settings-routes.test.ts +1 -1
- package/src/__tests__/shell-credential-ref.test.ts +0 -8
- package/src/__tests__/shell-tool-proxy-mode.test.ts +0 -57
- package/src/__tests__/skill-feature-flags.test.ts +43 -41
- package/src/__tests__/skill-load-feature-flag.test.ts +13 -14
- package/src/__tests__/skill-load-inline-command.test.ts +0 -51
- package/src/__tests__/skill-load-inline-includes.test.ts +0 -43
- package/src/__tests__/skill-projection.benchmark.test.ts +0 -1
- package/src/__tests__/skill-script-runner-sandbox.test.ts +0 -12
- package/src/__tests__/skill-tool-factory.test.ts +97 -0
- package/src/__tests__/skills-file-content-endpoint.test.ts +9 -30
- package/src/__tests__/skills-files-catalog-fallback.test.ts +11 -17
- package/src/__tests__/slack-channel-config.test.ts +9 -14
- package/src/__tests__/slack-inbound-verification.test.ts +1 -62
- package/src/__tests__/subagent-fork-notifications.test.ts +57 -47
- package/src/__tests__/subagent-manager-notify.test.ts +70 -70
- package/src/__tests__/subagent-notify-parent.test.ts +80 -83
- package/src/__tests__/system-prompt-ask-mode.test.ts +0 -1
- package/src/__tests__/system-prompt.test.ts +115 -14
- package/src/__tests__/telegram-config.test.ts +0 -1
- package/src/__tests__/terminal-tools.test.ts +0 -89
- package/src/__tests__/test-preload.ts +8 -0
- package/src/__tests__/thread-backfill.test.ts +945 -31
- package/src/__tests__/tool-approval-handler.test.ts +3 -4
- package/src/__tests__/tool-audit-listener.test.ts +48 -0
- package/src/__tests__/tool-domain-event-publisher.test.ts +0 -36
- package/src/__tests__/tool-execute-pipeline.test.ts +0 -7
- package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -17
- package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +9 -19
- package/src/__tests__/tool-executor-lifecycle-events.test.ts +4 -8
- package/src/__tests__/tool-executor.test.ts +12 -20
- package/src/__tests__/tool-metrics-listener.test.ts +0 -35
- package/src/__tests__/tool-side-effects-slack-dm.test.ts +1 -0
- package/src/__tests__/tool-trace-listener.test.ts +0 -17
- package/src/__tests__/transfer-progress-screen.test.ts +63 -26
- package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +2 -149
- package/src/__tests__/trusted-contact-multichannel.test.ts +2 -4
- package/src/__tests__/trusted-contact-verification.test.ts +1 -1
- package/src/__tests__/tts-catalog-parity.test.ts +16 -5
- package/src/__tests__/twilio-config.test.ts +3 -16
- package/src/__tests__/twilio-routes.test.ts +3 -5
- package/src/__tests__/twilio-validation.test.ts +93 -0
- package/src/__tests__/usage-attribution.test.ts +247 -0
- package/src/__tests__/usage-cli.test.ts +143 -0
- package/src/__tests__/usage-grouped-buckets.test.ts +155 -0
- package/src/__tests__/usage-routes.test.ts +150 -0
- package/src/__tests__/validation-results-screen.test.ts +39 -16
- package/src/__tests__/vbundle-pax-and-symlink.test.ts +12 -3
- package/src/__tests__/vellum-self-knowledge-inline-command.test.ts +47 -138
- package/src/__tests__/verification-control-plane-policy.test.ts +6 -11
- package/src/__tests__/voice-ingress-preflight.test.ts +19 -0
- package/src/__tests__/voice-session-bridge.test.ts +5 -5
- package/src/__tests__/workspace-migration-006-services-config.test.ts +3 -2
- package/src/__tests__/workspace-migration-062-drop-memory-v2-edges-json.test.ts +103 -0
- package/src/__tests__/workspace-migration-063-release-notes-dynamic-model-context.test.ts +77 -0
- package/src/__tests__/workspace-migration-064-unwind-main-agent-opus-seed.test.ts +225 -0
- package/src/__tests__/workspace-migration-backfill-installation-id.test.ts +1 -5
- package/src/__tests__/workspace-migration-down-functions.test.ts +8 -8
- package/src/__tests__/workspace-migration-memory-v2-init.test.ts +8 -30
- package/src/__tests__/workspace-migration-unify-llm-callsite-configs.test.ts +10 -6
- package/src/acp/index.ts +0 -15
- package/src/acp/session-manager.ts +37 -34
- package/src/agent/loop.ts +16 -1
- package/src/approvals/AGENTS.md +4 -0
- package/src/approvals/__tests__/guardian-feed-event.test.ts +10 -3
- package/src/approvals/guardian-request-resolvers.ts +10 -2
- package/src/backup/__tests__/paths.test.ts +0 -22
- package/src/backup/__tests__/restore.test.ts +94 -177
- package/src/backup/paths.ts +2 -15
- package/src/backup/restore.ts +107 -231
- package/src/browser-session/events.ts +0 -9
- package/src/bundler/app-bundler.ts +51 -3
- package/src/calls/call-store.ts +1 -34
- package/src/calls/guardian-question-copy.ts +0 -108
- package/src/calls/relay-server.ts +4 -68
- package/src/calls/twilio-config.ts +2 -17
- package/src/calls/twilio-rest.ts +31 -141
- package/src/calls/twilio-routes.ts +12 -13
- package/src/calls/voice-session-bridge.ts +7 -38
- package/src/channels/types.ts +8 -42
- package/src/cli/commands/__tests__/backup.test.ts +6 -277
- package/src/cli/commands/__tests__/cache.test.ts +152 -5
- package/src/cli/commands/__tests__/gateway.test.ts +288 -0
- package/src/cli/commands/__tests__/memory-v2.test.ts +18 -28
- package/src/cli/commands/__tests__/trust.test.ts +21 -387
- package/src/cli/commands/__tests__/webhooks.test.ts +0 -1
- package/src/cli/commands/backup.ts +6 -331
- package/src/cli/commands/cache-fs.ts +8 -0
- package/src/cli/commands/cache.ts +153 -82
- package/src/cli/commands/clients.ts +64 -7
- package/src/cli/commands/completions.ts +3 -3
- package/src/cli/commands/contacts.ts +304 -76
- package/src/cli/commands/conversations.ts +2 -5
- package/src/cli/commands/credentials.ts +15 -7
- package/src/cli/commands/domain.ts +66 -15
- package/src/cli/commands/gateway.ts +183 -0
- package/src/cli/commands/keys.ts +13 -7
- package/src/cli/commands/mcp.ts +116 -156
- package/src/cli/commands/memory-v2.ts +320 -53
- package/src/cli/commands/oauth/shared.ts +2 -29
- package/src/cli/commands/pending.ts +102 -0
- package/src/cli/commands/platform/__tests__/callback-routes-list.test.ts +0 -1
- package/src/cli/commands/platform/__tests__/connect.test.ts +0 -2
- package/src/cli/commands/platform/__tests__/disconnect.test.ts +0 -2
- package/src/cli/commands/platform/__tests__/status.test.ts +13 -15
- package/src/cli/commands/platform/disconnect.ts +5 -4
- package/src/cli/commands/platform/index.ts +0 -18
- package/src/cli/commands/skills.ts +77 -35
- package/src/cli/commands/trust.ts +70 -430
- package/src/cli/commands/usage.ts +25 -16
- package/src/cli/lib/daemon-credential-client.ts +115 -19
- package/src/cli/program.ts +4 -0
- package/src/cli.ts +0 -21
- package/src/config/__tests__/feature-flag-registry-guard.test.ts +2 -2
- package/src/config/assistant-feature-flags.ts +67 -10
- package/src/config/bundled-skills/acp/SKILL.md +6 -0
- package/src/config/bundled-skills/acp/TOOLS.json +1 -22
- package/src/config/bundled-skills/app-builder/SKILL.md +14 -109
- package/src/config/bundled-skills/app-builder/TOOLS.json +1 -28
- package/src/config/bundled-skills/app-builder/tools/app-create.ts +1 -10
- package/src/config/bundled-skills/app-control/SKILL.md +75 -0
- package/src/config/bundled-skills/app-control/TOOLS.json +299 -0
- package/src/config/bundled-skills/app-control/tools/app-control-click.ts +12 -0
- package/src/config/bundled-skills/app-control/tools/app-control-combo.ts +12 -0
- package/src/config/bundled-skills/app-control/tools/app-control-drag.ts +12 -0
- package/src/config/bundled-skills/app-control/tools/app-control-observe.ts +12 -0
- package/src/config/bundled-skills/app-control/tools/app-control-press.ts +12 -0
- package/src/config/bundled-skills/app-control/tools/app-control-sequence.ts +12 -0
- package/src/config/bundled-skills/app-control/tools/app-control-start.ts +12 -0
- package/src/config/bundled-skills/app-control/tools/app-control-stop.ts +12 -0
- package/src/config/bundled-skills/app-control/tools/app-control-type.ts +12 -0
- package/src/config/bundled-skills/computer-use/SKILL.md +6 -0
- package/src/config/bundled-skills/computer-use/TOOLS.json +67 -43
- package/src/config/bundled-skills/contacts/TOOLS.json +0 -16
- package/src/config/bundled-skills/document/TOOLS.json +0 -8
- package/src/config/bundled-skills/followups/TOOLS.json +0 -12
- package/src/config/bundled-skills/image-studio/SKILL.md +4 -0
- package/src/config/bundled-skills/image-studio/TOOLS.json +0 -4
- package/src/config/bundled-skills/media-processing/TOOLS.json +0 -24
- package/src/config/bundled-skills/messaging/TOOLS.json +14 -44
- package/src/config/bundled-skills/phone-calls/TOOLS.json +0 -12
- package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +19 -4
- package/src/config/bundled-skills/playbooks/TOOLS.json +0 -16
- package/src/config/bundled-skills/schedule/TOOLS.json +14 -14
- package/src/config/bundled-skills/sequences/TOOLS.json +0 -36
- package/src/config/bundled-skills/settings/SKILL.md +4 -0
- package/src/config/bundled-skills/settings/TOOLS.json +0 -12
- package/src/config/bundled-skills/skill-management/SKILL.md +6 -0
- package/src/config/bundled-skills/skill-management/TOOLS.json +0 -8
- package/src/config/bundled-skills/subagent/SKILL.md +6 -2
- package/src/config/bundled-skills/subagent/TOOLS.json +0 -20
- package/src/config/bundled-skills/transcribe/SKILL.md +4 -0
- package/src/config/bundled-skills/transcribe/TOOLS.json +0 -4
- package/src/config/bundled-tool-registry.ts +21 -0
- package/src/config/env-registry.ts +12 -4
- package/src/config/env.ts +22 -26
- package/src/config/feature-flag-registry.json +40 -152
- package/src/config/llm-callsite-catalog.ts +12 -0
- package/src/config/llm-context-resolution.ts +80 -0
- package/src/config/llm-resolver.ts +58 -22
- package/src/config/loader.ts +76 -102
- package/src/config/sanitize-for-transfer.ts +2 -0
- package/src/config/schema.ts +2 -158
- package/src/config/schemas/__tests__/memory-lifecycle.test.ts +80 -0
- package/src/config/schemas/__tests__/memory-v2.test.ts +8 -4
- package/src/config/schemas/call-site-catalog.ts +271 -0
- package/src/config/schemas/calls.ts +5 -14
- package/src/config/schemas/heartbeat.ts +63 -0
- package/src/config/schemas/inference.ts +1 -1
- package/src/config/schemas/ingress.ts +11 -7
- package/src/config/schemas/llm.ts +34 -11
- package/src/config/schemas/memory-lifecycle.ts +77 -24
- package/src/config/schemas/memory-retrieval.ts +2 -2
- package/src/config/schemas/memory-v2.ts +57 -4
- package/src/config/schemas/platform.ts +6 -0
- package/src/config/schemas/security.ts +1 -42
- package/src/config/schemas/services.ts +7 -21
- package/src/config/schemas/skills.ts +5 -11
- package/src/config/schemas/tts.ts +1 -1
- package/src/config/seed-inference-profiles.ts +117 -0
- package/src/config/skills.ts +0 -90
- package/src/config/types.ts +3 -6
- package/src/contacts/contact-store.ts +0 -47
- package/src/contacts/contacts-write.ts +1 -132
- package/src/context/window-manager.ts +43 -5
- package/src/credential-execution/feature-gates.ts +10 -10
- package/src/credential-execution/process-manager.ts +46 -51
- package/src/credential-health/credential-health-service.ts +21 -16
- package/src/daemon/__tests__/conversation-surfaces-launch.test.ts +75 -82
- package/src/daemon/__tests__/conversation-tool-setup.test.ts +126 -5
- package/src/daemon/__tests__/daemon-skill-host.test.ts +2 -9
- package/src/daemon/bootstrap-turn-cleanup.ts +45 -0
- package/src/daemon/config-watcher.ts +4 -3
- package/src/daemon/connection-policy.ts +1 -26
- package/src/daemon/conversation-agent-loop-handlers.ts +74 -7
- package/src/daemon/conversation-agent-loop.ts +309 -64
- package/src/daemon/conversation-history.ts +8 -8
- package/src/daemon/conversation-launch.ts +20 -135
- package/src/daemon/conversation-lifecycle.ts +8 -1
- package/src/daemon/conversation-messaging.ts +1 -0
- package/src/daemon/conversation-process.ts +97 -172
- package/src/daemon/conversation-runtime-assembly.ts +219 -76
- package/src/daemon/conversation-slash.ts +47 -5
- package/src/daemon/conversation-store.ts +7 -31
- package/src/daemon/conversation-surfaces.ts +144 -29
- package/src/daemon/conversation-tool-setup.ts +18 -87
- package/src/daemon/conversation-usage.ts +36 -0
- package/src/daemon/conversation.ts +134 -231
- package/src/daemon/daemon-control.ts +3 -71
- package/src/daemon/daemon-skill-host.ts +8 -11
- package/src/daemon/dictation-profile-store.ts +2 -26
- package/src/daemon/doordash-steps.ts +1 -1
- package/src/daemon/first-greeting.ts +44 -156
- package/src/daemon/handlers/config-channels.ts +12 -12
- package/src/daemon/handlers/config-ingress.ts +4 -165
- package/src/daemon/handlers/config-model.ts +1 -1
- package/src/daemon/handlers/config-voice.ts +0 -42
- package/src/daemon/handlers/conversations.ts +11 -190
- package/src/daemon/handlers/recording.ts +26 -158
- package/src/daemon/handlers/shared.ts +27 -72
- package/src/daemon/handlers/skills.ts +42 -93
- package/src/daemon/host-app-control-proxy.ts +293 -0
- package/src/daemon/host-bash-proxy.ts +124 -92
- package/src/daemon/host-browser-proxy.ts +111 -88
- package/src/daemon/host-cu-proxy.ts +100 -104
- package/src/daemon/host-file-proxy.ts +136 -91
- package/src/daemon/host-proxy-base.ts +294 -0
- package/src/daemon/host-proxy-preactivation.ts +82 -0
- package/src/daemon/host-transfer-proxy.ts +303 -147
- package/src/daemon/lifecycle.ts +164 -132
- package/src/daemon/message-protocol.ts +3 -8
- package/src/daemon/message-types/contacts.ts +23 -1
- package/src/daemon/message-types/conversations.ts +18 -8
- package/src/daemon/message-types/host-app-control.ts +150 -0
- package/src/daemon/message-types/host-bash.ts +5 -0
- package/src/daemon/message-types/host-cu.ts +3 -0
- package/src/daemon/message-types/host-file.ts +5 -0
- package/src/daemon/message-types/host-transfer.ts +4 -0
- package/src/daemon/message-types/messages.ts +10 -9
- package/src/daemon/message-types/schedules.ts +8 -3
- package/src/daemon/message-types/skills.ts +2 -2
- package/src/daemon/message-types/workspace.ts +1 -1
- package/src/daemon/process-message.ts +119 -239
- package/src/daemon/server.ts +13 -462
- package/src/daemon/shutdown-handlers.ts +2 -5
- package/src/daemon/tool-setup-types.ts +51 -0
- package/src/daemon/tool-side-effects.ts +126 -108
- package/src/daemon/trust-context.ts +13 -0
- package/src/daemon/wake-target-adapter.ts +4 -9
- package/src/events/domain-events.ts +0 -8
- package/src/events/tool-audit-listener.ts +5 -2
- package/src/events/tool-domain-event-publisher.ts +0 -10
- package/src/events/tool-metrics-listener.ts +0 -17
- package/src/events/tool-trace-listener.ts +0 -14
- package/src/filing/filing-service.ts +13 -1
- package/src/heartbeat/__tests__/heartbeat-feed-event.test.ts +21 -9
- package/src/heartbeat/__tests__/heartbeat-run-store.test.ts +216 -0
- package/src/heartbeat/heartbeat-run-store.ts +236 -0
- package/src/heartbeat/heartbeat-service.ts +303 -54
- package/src/home/__tests__/feed-writer.test.ts +0 -4
- package/src/home/__tests__/post-connect-feed.test.ts +99 -0
- package/src/home/__tests__/relationship-state-writer.test.ts +41 -9
- package/src/home/__tests__/suggested-prompts.test.ts +89 -0
- package/src/home/feed-writer.ts +1 -2
- package/src/home/post-connect-feed.ts +68 -0
- package/src/home/relationship-state-writer.ts +33 -95
- package/src/home/suggested-prompts.ts +46 -10
- package/src/inbound/public-ingress-urls.ts +32 -34
- package/src/ipc/__tests__/browser-ipc.test.ts +2 -12
- package/src/ipc/__tests__/route-error-envelope.test.ts +80 -0
- package/src/ipc/__tests__/skill-server-bidirectional.test.ts +0 -1
- package/src/ipc/assistant-server.ts +17 -11
- package/src/ipc/cli-client.ts +32 -1
- package/src/ipc/routes/__tests__/memory-v2-backfill.test.ts +39 -20
- package/src/ipc/routes/route-adapter.ts +1 -1
- package/src/ipc/routes/trust-rules.test.ts +0 -95
- package/src/ipc/skill-ipc-types.ts +41 -0
- package/src/ipc/skill-routes/__tests__/events-ipc.test.ts +13 -27
- package/src/ipc/skill-routes/__tests__/identity.test.ts +4 -23
- package/src/ipc/skill-routes/events.ts +12 -23
- package/src/ipc/skill-routes/identity.ts +4 -17
- package/src/ipc/skill-routes/index.ts +1 -1
- package/src/ipc/skill-server.ts +6 -39
- package/src/live-voice/__tests__/runtime-websocket-shell.test.ts +0 -8
- package/src/live-voice/live-voice-metrics.ts +10 -10
- package/src/live-voice/protocol.ts +4 -13
- package/src/mcp/__tests__/mcp-auth-orchestrator.test.ts +304 -0
- package/src/mcp/manager.ts +0 -5
- package/src/mcp/mcp-auth-orchestrator.ts +213 -0
- package/src/mcp/mcp-auth-state.ts +133 -0
- package/src/mcp/mcp-oauth-provider.ts +19 -0
- package/src/memory/__tests__/fixtures/memory-v2-activation-fixtures.ts +55 -0
- package/src/memory/__tests__/jobs-store-job-classes.test.ts +24 -0
- package/src/memory/__tests__/memory-v2-activation-log-store.test.ts +127 -0
- package/src/memory/__tests__/qdrant-client-sentinel.test.ts +49 -0
- package/src/memory/__tests__/sparse-tokenize.test.ts +66 -0
- package/src/memory/anisotropy.test.ts +247 -0
- package/src/memory/anisotropy.ts +443 -0
- package/src/memory/app-git-service.ts +0 -32
- package/src/memory/app-store.ts +154 -0
- package/src/memory/attachments-store.ts +6 -0
- package/src/memory/auto-analysis-constants.ts +17 -0
- package/src/memory/auto-analysis-guard.ts +5 -15
- package/src/memory/canonical-guardian-store.ts +7 -7
- package/src/memory/context-search/__tests__/agent-runner-redaction.test.ts +122 -0
- package/src/memory/context-search/agent-protocol.ts +6 -6
- package/src/memory/context-search/agent-runner.ts +32 -7
- package/src/memory/context-search/sources/memory-v2.ts +590 -0
- package/src/memory/context-search/sources/memory.ts +5 -0
- package/src/memory/context-search/sources/pkb.ts +10 -1
- package/src/memory/context-search/sources/workspace.ts +3 -2
- package/src/memory/conversation-crud.ts +30 -5
- package/src/memory/conversation-disk-view.ts +1 -5
- package/src/memory/conversation-key-store.ts +2 -15
- package/src/memory/conversation-starter-checkpoints.ts +63 -0
- package/src/memory/db-connection.ts +62 -0
- package/src/memory/db-init.ts +18 -0
- package/src/memory/embedding-backend.ts +12 -42
- package/src/memory/embedding-gemini.ts +0 -2
- package/src/memory/embedding-local.ts +6 -6
- package/src/memory/embedding-ollama.ts +6 -6
- package/src/memory/embedding-openai.ts +6 -6
- package/src/memory/embedding-types.ts +21 -0
- package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +49 -8
- package/src/memory/graph/conversation-graph-memory.ts +35 -36
- package/src/memory/graph/graph-search.ts +8 -0
- package/src/memory/graph/injection.test.ts +2 -2
- package/src/memory/graph/injection.ts +1 -1
- package/src/memory/graph/retriever.ts +28 -0
- package/src/memory/graph/tools.ts +1 -1
- package/src/memory/guardian-action-store.ts +0 -83
- package/src/memory/guardian-approvals.ts +0 -48
- package/src/memory/indexer.ts +1 -15
- package/src/memory/job-handlers/conversation-starters.ts +36 -53
- package/src/memory/job-utils.ts +0 -6
- package/src/memory/jobs/__tests__/embed-concept-page.test.ts +8 -2
- package/src/memory/jobs/embed-concept-page.ts +28 -2
- package/src/memory/jobs/embed-pkb-file.test.ts +2 -2
- package/src/memory/jobs-store.ts +66 -23
- package/src/memory/jobs-worker.ts +114 -79
- package/src/memory/llm-request-log-store.ts +0 -41
- package/src/memory/llm-usage-store.ts +129 -43
- package/src/memory/memory-v2-activation-log-store.ts +115 -0
- package/src/memory/migrations/233-document-conversations.ts +54 -0
- package/src/memory/migrations/234-memory-v2-activation-logs.ts +55 -0
- package/src/memory/migrations/235-llm-usage-attribution.ts +31 -0
- package/src/memory/migrations/235-slack-compaction-watermark.ts +44 -0
- package/src/memory/migrations/236-tool-invocations-matched-rule-id.ts +26 -0
- package/src/memory/migrations/237-heartbeat-runs.ts +45 -0
- package/src/memory/migrations/238-schedule-retry-policy.ts +20 -0
- package/src/memory/migrations/__tests__/234-memory-v2-activation-logs.test.ts +182 -0
- package/src/memory/migrations/index.ts +19 -0
- package/src/memory/migrations/registry.ts +32 -0
- package/src/memory/pkb/pkb-search.ts +7 -0
- package/src/memory/qdrant-client.ts +50 -20
- package/src/memory/raw-query.ts +2 -68
- package/src/memory/schema/conversations.ts +7 -0
- package/src/memory/schema/infrastructure.ts +40 -0
- package/src/memory/search/semantic.ts +12 -16
- package/src/memory/sparse-tokenize.ts +49 -0
- package/src/memory/tool-usage-store.ts +2 -0
- package/src/memory/usage-buckets.ts +40 -1
- package/src/memory/usage-grouped-buckets.ts +127 -0
- package/src/memory/v2/__tests__/activation.test.ts +361 -180
- package/src/memory/v2/__tests__/backfill-jobs.test.ts +2 -129
- package/src/memory/v2/__tests__/consolidation-job.test.ts +28 -11
- package/src/memory/v2/__tests__/edge-index.test.ts +278 -0
- package/src/memory/v2/__tests__/injection.test.ts +424 -33
- package/src/memory/v2/__tests__/migration.test.ts +64 -36
- package/src/memory/v2/__tests__/page-store.test.ts +191 -8
- package/src/memory/v2/__tests__/prompts-consolidation.test.ts +181 -0
- package/src/memory/v2/__tests__/sim.test.ts +166 -6
- package/src/memory/v2/__tests__/skill-store.test.ts +115 -3
- package/src/memory/v2/__tests__/sparse-bm25.test.ts +292 -0
- package/src/memory/v2/__tests__/static-context.test.ts +152 -0
- package/src/memory/v2/activation.ts +215 -163
- package/src/memory/v2/backfill-jobs.ts +15 -100
- package/src/memory/v2/consolidation-job.ts +17 -17
- package/src/memory/v2/constants.ts +7 -0
- package/src/memory/v2/edge-index.ts +191 -0
- package/src/memory/v2/injection.ts +241 -84
- package/src/memory/v2/migration.ts +57 -64
- package/src/memory/v2/now-text.ts +2 -3
- package/src/memory/v2/page-store.ts +168 -31
- package/src/memory/v2/prompts/consolidation.ts +385 -88
- package/src/memory/v2/prompts/sweep.ts +3 -3
- package/src/memory/v2/qdrant.ts +99 -1
- package/src/memory/v2/sim.ts +126 -16
- package/src/memory/v2/skill-qdrant.ts +12 -3
- package/src/memory/v2/skill-store.ts +71 -8
- package/src/memory/v2/sparse-bm25.ts +245 -0
- package/src/memory/v2/static-context.ts +63 -0
- package/src/memory/v2/types.ts +10 -20
- package/src/memory/validation.ts +0 -11
- package/src/messaging/draft-store.ts +0 -6
- package/src/messaging/provider-types.ts +8 -0
- package/src/messaging/provider.ts +7 -0
- package/src/messaging/providers/gmail/client.ts +1 -121
- package/src/messaging/providers/gmail/types.ts +0 -49
- package/src/messaging/providers/outlook/client.ts +0 -73
- package/src/messaging/providers/slack/__tests__/adapter-mention-rendering.test.ts +226 -0
- package/src/messaging/providers/slack/adapter.ts +123 -52
- package/src/messaging/providers/slack/backfill.test.ts +95 -6
- package/src/messaging/providers/slack/backfill.ts +89 -11
- package/src/messaging/providers/slack/client.ts +10 -124
- package/src/messaging/providers/slack/message-metadata.ts +12 -2
- package/src/messaging/providers/slack/render-transcript.test.ts +56 -0
- package/src/messaging/providers/slack/render-transcript.ts +126 -25
- package/src/messaging/providers/slack/types.ts +1 -32
- package/src/notifications/README.md +10 -10
- package/src/notifications/broadcaster.ts +1 -1
- package/src/notifications/guardian-question-mode.ts +5 -5
- package/src/oauth/connect-orchestrator.ts +4 -0
- package/src/oauth/connection-resolver.test.ts +8 -0
- package/src/oauth/connection-resolver.ts +8 -16
- package/src/oauth/credential-token-resolver.ts +95 -0
- package/src/oauth/manual-token-connection.ts +26 -34
- package/src/oauth/oauth-store.ts +6 -4
- package/src/outbound-proxy/certs.ts +0 -7
- package/src/outbound-proxy/index.ts +1 -59
- package/src/outbound-proxy/logging.ts +1 -1
- package/src/outbound-proxy/policy.ts +6 -5
- package/src/outbound-proxy/router.ts +2 -1
- package/src/permissions/approval-policy.test.ts +6 -275
- package/src/permissions/approval-policy.ts +0 -51
- package/src/permissions/approval-provenance.test.ts +184 -0
- package/src/permissions/approval-provenance.ts +70 -0
- package/src/permissions/checker.test.ts +0 -1
- package/src/permissions/checker.ts +7 -18
- package/src/permissions/gateway-threshold-reader.ts +6 -1
- package/src/permissions/prompter.ts +43 -3
- package/src/permissions/secret-prompter.ts +25 -48
- package/src/permissions/types.ts +33 -0
- package/src/permissions/workspace-policy.ts +0 -5
- package/src/platform/sync-identity.ts +0 -8
- package/src/plugins/defaults/injectors.ts +69 -2
- package/src/plugins/defaults/overflow-reduce.ts +3 -2
- package/src/plugins/types.ts +8 -0
- package/src/prompts/bootstrap-cleanup.ts +27 -0
- package/src/prompts/system-prompt.ts +37 -88
- package/src/prompts/templates/BOOTSTRAP.md +52 -6
- package/src/prompts/templates/SOUL.md +13 -1
- package/src/prompts/update-bulletin-job.ts +2 -0
- package/src/providers/__tests__/retry-callsite.test.ts +138 -1
- package/src/providers/anthropic/client.ts +72 -33
- package/src/providers/call-site-routing.ts +42 -3
- package/src/providers/gemini/client.ts +18 -2
- package/src/providers/managed-proxy/context.ts +0 -5
- package/src/providers/model-catalog.ts +105 -19
- package/src/providers/openai/chat-completions-provider.ts +6 -0
- package/src/providers/openai/responses-provider.ts +7 -1
- package/src/providers/provider-send-message.ts +45 -2
- package/src/providers/ratelimit.ts +7 -2
- package/src/providers/registry.ts +14 -9
- package/src/providers/retry.ts +96 -8
- package/src/providers/speech-to-text/provider-catalog.ts +7 -8
- package/src/providers/types.ts +13 -0
- package/src/providers/usage-tracking.ts +96 -0
- package/src/runtime/AGENTS.md +10 -6
- package/src/runtime/__tests__/agent-wake.test.ts +89 -0
- package/src/runtime/agent-wake.ts +39 -2
- package/src/runtime/assistant-event-hub.ts +570 -52
- package/src/runtime/assistant-event.ts +2 -6
- package/src/runtime/auth/__tests__/middleware.test.ts +11 -56
- package/src/runtime/auth/context.ts +0 -9
- package/src/runtime/auth/middleware.ts +1 -97
- package/src/runtime/auth/route-policy.ts +30 -9
- package/src/runtime/auth/token-service.ts +0 -11
- package/src/runtime/btw-sidechain.ts +2 -3
- package/src/runtime/channel-approvals.ts +6 -2
- package/src/runtime/channel-invite-transport.ts +2 -48
- package/src/runtime/channel-invite-transports/email.ts +1 -1
- package/src/runtime/channel-invite-transports/slack.ts +1 -1
- package/src/runtime/channel-invite-transports/telegram.ts +1 -1
- package/src/runtime/channel-invite-transports/voice.ts +1 -1
- package/src/runtime/channel-invite-transports/whatsapp.ts +1 -1
- package/src/runtime/channel-invite-types.ts +54 -0
- package/src/runtime/channel-readiness-service.ts +32 -13
- package/src/runtime/channel-verification-service.ts +3 -5
- package/src/runtime/http-errors.ts +0 -34
- package/src/runtime/http-router.ts +6 -3
- package/src/runtime/http-server.ts +16 -402
- package/src/runtime/http-types.ts +5 -5
- package/src/runtime/interactive-ui.ts +0 -1
- package/src/runtime/middleware/auth.ts +0 -20
- package/src/runtime/migrations/__tests__/v1-test-helpers.ts +112 -0
- package/src/runtime/migrations/__tests__/vbundle-builder-credentials.test.ts +11 -4
- package/src/runtime/migrations/__tests__/vbundle-builder-v1-shape.test.ts +253 -0
- package/src/runtime/migrations/__tests__/vbundle-import-credentials.test.ts +19 -6
- package/src/runtime/migrations/__tests__/vbundle-import-parity.test.ts +413 -0
- package/src/runtime/migrations/__tests__/vbundle-import-policy.test.ts +260 -0
- package/src/runtime/migrations/__tests__/vbundle-import-version-compat.test.ts +189 -0
- package/src/runtime/migrations/__tests__/vbundle-legacy-user-md.test.ts +71 -27
- package/src/runtime/migrations/__tests__/vbundle-metadata-merge-integration.test.ts +41 -2
- package/src/runtime/migrations/__tests__/vbundle-streaming-importer.test.ts +296 -80
- package/src/runtime/migrations/__tests__/vbundle-streaming-validator.test.ts +143 -23
- package/src/runtime/migrations/__tests__/vbundle-symlink-importer.test.ts +451 -0
- package/src/runtime/migrations/__tests__/vbundle-symlink-streaming-importer.test.ts +0 -0
- package/src/runtime/migrations/__tests__/vbundle-symlink-streaming.test.ts +515 -0
- package/src/runtime/migrations/__tests__/vbundle-symlink-tar.test.ts +437 -0
- package/src/runtime/migrations/__tests__/vbundle-symlink-walker.test.ts +319 -0
- package/src/runtime/migrations/__tests__/vbundle-tar-stream.test.ts +2 -2
- package/src/runtime/migrations/__tests__/vbundle-validator-v1-schema.test.ts +421 -0
- package/src/runtime/migrations/migration-transport.ts +49 -16
- package/src/runtime/migrations/migration-wizard.ts +2 -2
- package/src/runtime/migrations/origin-mode.ts +40 -0
- package/src/runtime/migrations/vbundle-builder.ts +457 -136
- package/src/runtime/migrations/vbundle-import-analyzer.ts +13 -11
- package/src/runtime/migrations/vbundle-import-policy.ts +172 -0
- package/src/runtime/migrations/vbundle-importer.ts +251 -74
- package/src/runtime/migrations/vbundle-metadata-merge.ts +1 -1
- package/src/runtime/migrations/vbundle-streaming-importer.ts +329 -38
- package/src/runtime/migrations/vbundle-streaming-validator.ts +203 -28
- package/src/runtime/migrations/vbundle-tar-stream.ts +15 -6
- package/src/runtime/migrations/vbundle-validator.ts +328 -41
- package/src/runtime/pending-interactions.ts +48 -13
- package/src/runtime/routes/__tests__/acp-routes.test.ts +0 -1
- package/src/runtime/routes/__tests__/backup-routes.test.ts +49 -168
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +333 -0
- package/src/runtime/routes/__tests__/gateway-log-routes.test.ts +242 -0
- package/src/runtime/routes/__tests__/heartbeat-routes.test.ts +112 -0
- package/src/runtime/routes/__tests__/llm-call-sites-routes.test.ts +58 -0
- package/src/runtime/routes/__tests__/migration-export-secrets-redacted.test.ts +54 -0
- package/src/runtime/routes/__tests__/migration-import-credential-filter.test.ts +19 -6
- package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +7 -7
- package/src/runtime/routes/acp-routes.test.ts +0 -3
- package/src/runtime/routes/acp-routes.ts +3 -7
- package/src/runtime/routes/app-management-routes.ts +18 -9
- package/src/runtime/routes/approval-interception-types.ts +13 -0
- package/src/runtime/routes/approval-routes.ts +55 -14
- package/src/runtime/routes/approval-strategies/guardian-text-engine-strategy.ts +1 -1
- package/src/runtime/routes/avatar-routes.ts +3 -5
- package/src/runtime/routes/backup-routes.ts +15 -38
- package/src/runtime/routes/browser-routes.ts +1 -15
- package/src/runtime/routes/btw-routes.ts +14 -37
- package/src/runtime/routes/channel-guardian-routes.ts +1 -5
- package/src/runtime/routes/channel-readiness-routes.ts +3 -7
- package/src/runtime/routes/channel-route-shared.ts +2 -28
- package/src/runtime/routes/client-routes.ts +46 -12
- package/src/runtime/routes/consolidation-routes.ts +115 -0
- package/src/runtime/routes/contact-prompt-routes.ts +183 -0
- package/src/runtime/routes/conversation-list-routes.ts +12 -29
- package/src/runtime/routes/conversation-management-routes.ts +14 -51
- package/src/runtime/routes/conversation-query-routes.ts +156 -9
- package/src/runtime/routes/conversation-routes.ts +72 -539
- package/src/runtime/routes/conversation-starter-routes.ts +19 -40
- package/src/runtime/routes/document-pdf-renderer.ts +165 -0
- package/src/runtime/routes/documents-routes.ts +83 -18
- package/src/runtime/routes/errors.ts +19 -4
- package/src/runtime/routes/events-routes.ts +68 -94
- package/src/runtime/routes/filing-routes.ts +18 -1
- package/src/runtime/routes/gateway-log-routes.ts +79 -0
- package/src/runtime/routes/guardian-action-routes.ts +4 -9
- package/src/runtime/routes/guardian-approval-interception.ts +2 -8
- package/src/runtime/routes/heartbeat-routes.ts +103 -38
- package/src/runtime/routes/host-app-control-routes.ts +134 -0
- package/src/runtime/routes/host-bash-routes.ts +37 -6
- package/src/runtime/routes/host-browser-routes.ts +96 -25
- package/src/runtime/routes/host-cu-routes.ts +48 -13
- package/src/runtime/routes/host-file-routes.ts +35 -11
- package/src/runtime/routes/host-transfer-routes.ts +73 -37
- package/src/runtime/routes/http-adapter.ts +1 -0
- package/src/runtime/routes/identity-intro-cache.ts +30 -0
- package/src/runtime/routes/identity-routes.ts +93 -49
- package/src/runtime/routes/inbound-message-handler.ts +581 -146
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +2 -95
- package/src/runtime/routes/inbound-stages/background-dispatch.ts +3 -0
- package/src/runtime/routes/inbound-stages/edit-intercept.ts +0 -8
- package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +0 -20
- package/src/runtime/routes/inbound-stages/transcribe-audio.ts +5 -13
- package/src/runtime/routes/index.ts +12 -0
- package/src/runtime/routes/integrations/slack/channel.ts +0 -24
- package/src/runtime/routes/llm-call-sites-routes.ts +22 -0
- package/src/runtime/routes/mcp-auth-routes.ts +132 -0
- package/src/runtime/routes/memory-item-routes.ts +10 -12
- package/src/runtime/routes/memory-v2-routes.ts +451 -16
- package/src/runtime/routes/migration-routes.ts +284 -31
- package/src/runtime/routes/playground/guard.ts +1 -1
- package/src/runtime/routes/playground/index.ts +0 -2
- package/src/runtime/routes/recording-routes.ts +4 -24
- package/src/runtime/routes/rename-conversation-routes.ts +2 -6
- package/src/runtime/routes/schedule-routes.ts +10 -6
- package/src/runtime/routes/secret-routes.ts +87 -18
- package/src/runtime/routes/settings-routes.ts +29 -28
- package/src/runtime/routes/skills-routes.ts +12 -31
- package/src/runtime/routes/suggest-trust-rule-routes.ts +32 -1
- package/src/runtime/routes/task-routes.ts +6 -6
- package/src/runtime/routes/trust-rules-routes.ts +3 -94
- package/src/runtime/routes/types.ts +4 -4
- package/src/runtime/routes/upgrade-broadcast-routes.ts +3 -10
- package/src/runtime/routes/usage-routes.ts +87 -10
- package/src/runtime/routes/user-routes.ts +17 -31
- package/src/runtime/routes/work-items-routes.ts +1 -4
- package/src/runtime/services/__tests__/analyze-conversation.test.ts +2 -2
- package/src/runtime/services/analyze-conversation.ts +7 -17
- package/src/runtime/services/conversation-serializer.ts +2 -4
- package/src/runtime/verification-outbound-actions.ts +1 -1
- package/src/runtime/verification-rate-limiter.ts +1 -1
- package/src/runtime/verification-templates.ts +4 -7
- package/src/schedule/integration-status.ts +66 -2
- package/src/schedule/recurrence-engine.ts +4 -1
- package/src/schedule/retry-backoff.ts +18 -0
- package/src/schedule/retry-policy.ts +82 -0
- package/src/schedule/schedule-recovery.ts +64 -0
- package/src/schedule/schedule-store.ts +106 -18
- package/src/schedule/scheduler-types.ts +25 -0
- package/src/schedule/scheduler.ts +63 -38
- package/src/security/oauth-callback-registry.ts +8 -0
- package/src/security/secret-scanner.ts +14 -547
- package/src/security/secure-keys.ts +31 -11
- package/src/security/token-manager.ts +7 -3
- package/src/sequence/analytics.ts +5 -5
- package/src/sequence/engine.ts +1 -1
- package/src/signals/cancel.ts +16 -25
- package/src/signals/conversation-undo.ts +2 -27
- package/src/signals/emit-event.ts +1 -2
- package/src/signals/user-message.ts +108 -22
- package/src/skills/catalog-files.ts +2 -8
- package/src/skills/catalog-install.ts +1 -0
- package/src/skills/clawhub.ts +2 -2
- package/src/skills/include-graph.ts +5 -5
- package/src/skills/inline-command-runner.ts +1 -7
- package/src/skills/remote-skill-policy.ts +5 -5
- package/src/skills/skill-file-provider.ts +1 -1
- package/src/skills/skill-file-types.ts +13 -0
- package/src/skills/skillssh-audit-types.ts +28 -0
- package/src/skills/skillssh-registry.ts +8 -21
- package/src/subagent/manager.ts +67 -84
- package/src/tasks/task-store.ts +1 -28
- package/src/telemetry/types.ts +8 -0
- package/src/telemetry/usage-telemetry-reporter.test.ts +59 -15
- package/src/telemetry/usage-telemetry-reporter.ts +4 -5
- package/src/tools/acp/spawn.test.ts +1 -2
- package/src/tools/acp/steer.test.ts +1 -2
- package/src/tools/app-control/skill-proxy-bridge.ts +28 -0
- package/src/tools/apps/executors.ts +56 -69
- package/src/tools/browser/__tests__/browser-status.test.ts +55 -135
- package/src/tools/browser/browser-execution.ts +31 -147
- package/src/tools/browser/cdp-client/__tests__/factory.test.ts +145 -70
- package/src/tools/browser/cdp-client/cdp-inspect/__tests__/ws-transport.test.ts +12 -6
- package/src/tools/browser/cdp-client/factory.ts +62 -91
- package/src/tools/browser/cdp-client/index.ts +1 -27
- package/src/tools/computer-use/definitions.ts +42 -20
- package/src/tools/executor.ts +46 -31
- package/src/tools/host-filesystem/edit.ts +29 -2
- package/src/tools/host-filesystem/read.ts +29 -2
- package/src/tools/host-filesystem/transfer.test.ts +45 -42
- package/src/tools/host-filesystem/transfer.ts +35 -4
- package/src/tools/host-filesystem/write.ts +29 -2
- package/src/tools/host-terminal/host-shell.ts +62 -3
- package/src/tools/network/script-proxy/index.ts +1 -10
- package/src/tools/permission-checker.ts +66 -1
- package/src/tools/schedule/create.ts +6 -0
- package/src/tools/schedule/list.ts +2 -0
- package/src/tools/schedule/update.ts +10 -0
- package/src/tools/shared/filesystem/file-ops-service.ts +2 -0
- package/src/tools/shared/filesystem/path-policy.ts +25 -1
- package/src/tools/skills/load.ts +0 -32
- package/src/tools/skills/sandbox-runner.ts +1 -6
- package/src/tools/skills/skill-tool-factory.ts +32 -0
- package/src/tools/terminal/safe-env.ts +1 -0
- package/src/tools/terminal/shell.ts +2 -78
- package/src/tools/tool-approval-handler.ts +1 -5
- package/src/tools/types.ts +16 -39
- package/src/tts/__tests__/provider-catalog.test.ts +2 -2
- package/src/tts/provider-catalog.ts +1 -1
- package/src/usage/actors.ts +2 -1
- package/src/usage/attribution.ts +185 -0
- package/src/usage/pricing.ts +166 -0
- package/src/usage/types.ts +14 -0
- package/src/util/json.ts +13 -0
- package/src/util/logger.ts +3 -3
- package/src/util/pricing.ts +50 -3
- package/src/work-items/work-item-runner.ts +15 -42
- package/src/workspace/hatched-date.ts +86 -0
- package/src/workspace/migrations/003-seed-device-id.ts +1 -1
- package/src/workspace/migrations/006-services-config.ts +8 -5
- package/src/workspace/migrations/016-extract-feature-flags-to-protected.ts +3 -9
- package/src/workspace/migrations/021-move-signals-to-workspace.ts +4 -10
- package/src/workspace/migrations/022-move-hooks-to-workspace.ts +4 -10
- package/src/workspace/migrations/023-move-config-files-to-workspace.ts +4 -11
- package/src/workspace/migrations/024-move-runtime-files-to-workspace.ts +3 -10
- package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +3 -2
- package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +6 -4
- package/src/workspace/migrations/052-seed-default-inference-profiles.ts +3 -3
- package/src/workspace/migrations/059-move-pid-to-workspace.ts +3 -8
- package/src/workspace/migrations/060-memory-v2-init.ts +2 -18
- package/src/workspace/migrations/061-move-backup-key-to-workspace.ts +54 -0
- package/src/workspace/migrations/062-drop-memory-v2-edges-json.ts +27 -0
- package/src/workspace/migrations/063-release-notes-dynamic-model-context.ts +70 -0
- package/src/workspace/migrations/064-unwind-main-agent-opus-seed.ts +64 -0
- package/src/workspace/migrations/AGENTS.md +1 -1
- package/src/workspace/migrations/migrate-to-workspace-volume.ts +4 -10
- package/src/workspace/migrations/registry.ts +8 -0
- package/src/workspace/migrations/utils.ts +21 -0
- package/src/workspace/provider-commit-message-generator.ts +3 -3
- package/src/__tests__/host-browser-e2e-cloud.test.ts +0 -904
- package/src/__tests__/host-browser-e2e-self-hosted-capability.test.ts +0 -296
- package/src/__tests__/host-browser-ws-events-e2e.test.ts +0 -431
- package/src/__tests__/sandbox-diagnostics.test.ts +0 -138
- package/src/__tests__/sandbox-host-parity.test.ts +0 -1024
- package/src/__tests__/secret-detection-handler.test.ts +0 -67
- package/src/__tests__/secret-scanner-executor.test.ts +0 -450
- package/src/__tests__/tcc-sandbox-deny.test.ts +0 -198
- package/src/__tests__/terminal-sandbox.test.ts +0 -374
- package/src/__tests__/tool-notification-listener.test.ts +0 -65
- package/src/__tests__/twilio-rest.test.ts +0 -34
- package/src/backup/__tests__/backup-key.test.ts +0 -152
- package/src/backup/__tests__/backup-worker.test.ts +0 -754
- package/src/backup/__tests__/offsite-writer.test.ts +0 -641
- package/src/backup/__tests__/stream-crypt.test.ts +0 -228
- package/src/backup/backup-key.ts +0 -137
- package/src/backup/backup-worker.ts +0 -438
- package/src/backup/offsite-writer.ts +0 -222
- package/src/backup/stream-crypt.ts +0 -263
- package/src/context/__tests__/microcompact.test.ts +0 -805
- package/src/context/microcompact.ts +0 -443
- package/src/daemon/handlers/slack-channel-oauth-install.ts +0 -197
- package/src/daemon/message-types/pairing.ts +0 -58
- package/src/events/tool-notification-listener.ts +0 -17
- package/src/ipc/routes/__tests__/memory-v2-validate.test.ts +0 -219
- package/src/memory/v2/__tests__/edges.test.ts +0 -435
- package/src/memory/v2/edges.ts +0 -217
- package/src/outbound-proxy/config.ts +0 -94
- package/src/outbound-proxy/health.ts +0 -62
- package/src/outbound-proxy/types.ts +0 -150
- package/src/prompts/__tests__/system-prompt-memory-v2.test.ts +0 -197
- package/src/runtime/__tests__/chrome-extension-registry.test.ts +0 -518
- package/src/runtime/__tests__/client-registry.test.ts +0 -271
- package/src/runtime/capability-tokens.ts +0 -190
- package/src/runtime/chrome-extension-registry.ts +0 -368
- package/src/runtime/client-registry.ts +0 -254
- package/src/runtime/routes/inbound-stages/verification-intercept.ts +0 -329
- package/src/signals/mcp-reload.ts +0 -18
- package/src/tools/secret-detection-handler.ts +0 -269
- package/src/tools/terminal/backends/native.ts +0 -327
- package/src/tools/terminal/backends/types.ts +0 -37
- package/src/tools/terminal/sandbox-diagnostics.ts +0 -87
- package/src/tools/terminal/sandbox.ts +0 -40
package/src/daemon/lifecycle.ts
CHANGED
|
@@ -2,14 +2,15 @@ import { join } from "node:path";
|
|
|
2
2
|
|
|
3
3
|
import { config as dotenvConfig } from "dotenv";
|
|
4
4
|
|
|
5
|
-
import type { BackupWorkerHandle } from "../backup/backup-worker.js";
|
|
6
|
-
import { startBackupWorker } from "../backup/backup-worker.js";
|
|
7
5
|
import { setPointerMessageProcessor } from "../calls/call-pointer-messages.js";
|
|
8
6
|
import { reconcileCallsOnStartup } from "../calls/call-recovery.js";
|
|
9
7
|
import { setRelayBroadcast } from "../calls/relay-server.js";
|
|
10
8
|
import { TwilioConversationRelayProvider } from "../calls/twilio-provider.js";
|
|
11
9
|
import { setVoiceBridgeDeps } from "../calls/voice-session-bridge.js";
|
|
12
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
initFeatureFlagOverrides,
|
|
12
|
+
isAssistantFeatureFlagEnabled,
|
|
13
|
+
} from "../config/assistant-feature-flags.js";
|
|
13
14
|
import {
|
|
14
15
|
getPlatformAssistantId,
|
|
15
16
|
getRuntimeHttpHost,
|
|
@@ -19,12 +20,9 @@ import {
|
|
|
19
20
|
} from "../config/env.js";
|
|
20
21
|
import { loadConfig, mergeDefaultWorkspaceConfig } from "../config/loader.js";
|
|
21
22
|
import type { AssistantConfig } from "../config/schema.js";
|
|
23
|
+
import { seedInferenceProfiles } from "../config/seed-inference-profiles.js";
|
|
22
24
|
import type { CesClient } from "../credential-execution/client.js";
|
|
23
25
|
import { createCesClient } from "../credential-execution/client.js";
|
|
24
|
-
import {
|
|
25
|
-
isCesCredentialBackendEnabled,
|
|
26
|
-
isCesToolsEnabled,
|
|
27
|
-
} from "../credential-execution/feature-gates.js";
|
|
28
26
|
import {
|
|
29
27
|
type CesProcessManager,
|
|
30
28
|
CesUnavailableError,
|
|
@@ -50,10 +48,7 @@ import {
|
|
|
50
48
|
import { expireAllPendingCanonicalRequests } from "../memory/canonical-guardian-store.js";
|
|
51
49
|
import { deleteMessageById, getMessages } from "../memory/conversation-crud.js";
|
|
52
50
|
import { initializeDb } from "../memory/db-init.js";
|
|
53
|
-
import {
|
|
54
|
-
selectEmbeddingBackend,
|
|
55
|
-
SPARSE_EMBEDDING_VERSION,
|
|
56
|
-
} from "../memory/embedding-backend.js";
|
|
51
|
+
import { selectEmbeddingBackend } from "../memory/embedding-backend.js";
|
|
57
52
|
import { enqueueMemoryJob } from "../memory/jobs-store.js";
|
|
58
53
|
import { startMemoryJobsWorker } from "../memory/jobs-worker.js";
|
|
59
54
|
import { initQdrantClient, resolveQdrantUrl } from "../memory/qdrant-client.js";
|
|
@@ -69,6 +64,7 @@ import { seedOAuthProviders } from "../oauth/seed-providers.js";
|
|
|
69
64
|
import { loadUserPlugins } from "../plugins/user-loader.js";
|
|
70
65
|
import { ensurePromptFiles } from "../prompts/system-prompt.js";
|
|
71
66
|
import { resolveManagedProxyContext } from "../providers/managed-proxy/context.js";
|
|
67
|
+
import { broadcastMessage } from "../runtime/assistant-event-hub.js";
|
|
72
68
|
import {
|
|
73
69
|
initAuthSigningKey,
|
|
74
70
|
resolveSigningKey,
|
|
@@ -76,6 +72,7 @@ import {
|
|
|
76
72
|
import { RuntimeHttpServer } from "../runtime/http-server.js";
|
|
77
73
|
import { recoverInterruptedImport } from "../runtime/migrations/vbundle-streaming-importer.js";
|
|
78
74
|
import { registerSecretsDeps } from "../runtime/routes/secrets-deps.js";
|
|
75
|
+
import { recoverStaleSchedules } from "../schedule/schedule-recovery.js";
|
|
79
76
|
import { startScheduler } from "../schedule/scheduler.js";
|
|
80
77
|
import {
|
|
81
78
|
onCesClientChanged,
|
|
@@ -152,17 +149,6 @@ export interface CesStartupResult {
|
|
|
152
149
|
async function startCesProcess(
|
|
153
150
|
config: AssistantConfig,
|
|
154
151
|
): Promise<CesStartupResult> {
|
|
155
|
-
const shouldStartCes =
|
|
156
|
-
isCesToolsEnabled(config) || isCesCredentialBackendEnabled(config);
|
|
157
|
-
if (!shouldStartCes) {
|
|
158
|
-
return {
|
|
159
|
-
client: undefined,
|
|
160
|
-
processManager: undefined,
|
|
161
|
-
clientPromise: undefined,
|
|
162
|
-
abortController: undefined,
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
|
|
166
152
|
const pm = createCesProcessManager({ assistantConfig: config });
|
|
167
153
|
const abortController = new AbortController();
|
|
168
154
|
let clientRef: CesClient | undefined;
|
|
@@ -286,9 +272,16 @@ export async function runDaemon(): Promise<void> {
|
|
|
286
272
|
// Fired non-blocking so a slow or unreachable gateway doesn't delay
|
|
287
273
|
// daemon startup (the IPC call has a 3s connect + 5s call timeout
|
|
288
274
|
// that would otherwise stall the critical path).
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
275
|
+
//
|
|
276
|
+
// On resolve, retry the v2 skill seed: the synchronous gate at the
|
|
277
|
+
// skill-seed call site below evaluates the memory-v2-enabled flag
|
|
278
|
+
// before the gateway has populated overrides, so a cold-boot race
|
|
279
|
+
// can leave the v2 skill collection unseeded for the lifetime of
|
|
280
|
+
// the daemon. seedV2SkillEntries is idempotent, so re-running after
|
|
281
|
+
// overrides land is safe.
|
|
282
|
+
void initFeatureFlagOverrides()
|
|
283
|
+
.then(() => maybeSeedMemoryV2Skills(loadConfig()))
|
|
284
|
+
.catch((err) => log.warn({ err }, "Background feature flag init failed"));
|
|
292
285
|
|
|
293
286
|
seedInterfaceFiles();
|
|
294
287
|
|
|
@@ -455,6 +448,20 @@ export async function runDaemon(): Promise<void> {
|
|
|
455
448
|
}
|
|
456
449
|
} // end if (dbReady)
|
|
457
450
|
|
|
451
|
+
// Seed managed inference profiles into the workspace config. Runs
|
|
452
|
+
// after workspace migrations (which may have created the initial
|
|
453
|
+
// profile slots) and before mergeDefaultWorkspaceConfig / loadConfig
|
|
454
|
+
// so the profiles are on disk for the first config load.
|
|
455
|
+
try {
|
|
456
|
+
seedInferenceProfiles();
|
|
457
|
+
log.info("Inference profile seeding complete");
|
|
458
|
+
} catch (err) {
|
|
459
|
+
log.warn(
|
|
460
|
+
{ err },
|
|
461
|
+
"Inference profile seeding failed — continuing startup",
|
|
462
|
+
);
|
|
463
|
+
}
|
|
464
|
+
|
|
458
465
|
// Merge CLI-provided default config (from VELLUM_DEFAULT_WORKSPACE_CONFIG_PATH)
|
|
459
466
|
// into the workspace config file before the first loadConfig() call so
|
|
460
467
|
// onboarding preferences are persisted alongside schema defaults.
|
|
@@ -505,89 +512,81 @@ export async function runDaemon(): Promise<void> {
|
|
|
505
512
|
// bootstrap connection, so startup must happen at the process level.
|
|
506
513
|
const cesStartupPromise = startCesProcess(config);
|
|
507
514
|
|
|
508
|
-
//
|
|
509
|
-
//
|
|
510
|
-
//
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
},
|
|
527
|
-
},
|
|
528
|
-
);
|
|
529
|
-
if (client) {
|
|
530
|
-
setCesClient(client);
|
|
531
|
-
}
|
|
515
|
+
// CES startup must complete BEFORE provider initialization so credential
|
|
516
|
+
// reads can go through CES. Block with a 20-second timeout — fall back to
|
|
517
|
+
// direct credential store on timeout.
|
|
518
|
+
const cesResult = await cesStartupPromise;
|
|
519
|
+
// startCesProcess() returns immediately — the actual handshake runs
|
|
520
|
+
// inside clientPromise. Await it (with a 20s timeout) so the CES client
|
|
521
|
+
// is available before provider initialization.
|
|
522
|
+
if (cesResult.clientPromise) {
|
|
523
|
+
const client = await awaitCesClientWithTimeout(cesResult.clientPromise, {
|
|
524
|
+
timeoutMs: DEFAULT_CES_STARTUP_TIMEOUT_MS,
|
|
525
|
+
onTimeout: () => {
|
|
526
|
+
log.warn(
|
|
527
|
+
"CES handshake timed out after 20s — falling back to direct credential store",
|
|
528
|
+
);
|
|
529
|
+
},
|
|
530
|
+
});
|
|
531
|
+
if (client) {
|
|
532
|
+
setCesClient(client);
|
|
532
533
|
}
|
|
534
|
+
}
|
|
533
535
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
log.info("CES reconnection handshake accepted");
|
|
572
|
-
return newClient;
|
|
573
|
-
}
|
|
574
|
-
log.warn({ reason }, "CES reconnection handshake rejected");
|
|
575
|
-
newClient.close();
|
|
576
|
-
await pm.stop().catch(() => {});
|
|
577
|
-
return undefined;
|
|
578
|
-
} catch (err) {
|
|
579
|
-
log.warn(
|
|
580
|
-
{ error: err instanceof Error ? err.message : String(err) },
|
|
581
|
-
"CES reconnection attempt failed",
|
|
582
|
-
);
|
|
583
|
-
await pm.stop().catch(() => {});
|
|
584
|
-
return undefined;
|
|
536
|
+
// Register CES reconnection callback so the credential layer can
|
|
537
|
+
// re-establish the connection when the transport dies, instead of
|
|
538
|
+
// falling back to the encrypted file store.
|
|
539
|
+
if (cesResult.processManager) {
|
|
540
|
+
const pm = cesResult.processManager;
|
|
541
|
+
|
|
542
|
+
// Snapshot the managed-proxy context and assistant ID at CES startup
|
|
543
|
+
// so the reconnect closure below never calls back into
|
|
544
|
+
// `resolveManagedProxyContext()`. That function reads the assistant
|
|
545
|
+
// API key via `getSecureKeyAsync()`, which — once `setCesClient()`
|
|
546
|
+
// has resolved the backend to CES RPC — routes the read through CES
|
|
547
|
+
// itself. During a reconnect the old transport is dead and a new
|
|
548
|
+
// one is being set up by this very closure, so the nested credential
|
|
549
|
+
// read recursively awaits its own in-flight reconnection and
|
|
550
|
+
// deadlocks until `CREDENTIAL_OP_TIMEOUT_MS` (45s) fires. That
|
|
551
|
+
// 45-second stall delays every CES restart and causes dependent
|
|
552
|
+
// credential reads (e.g. Meet's STT provider resolution) to return
|
|
553
|
+
// `undefined` during the window. API key rotation uses the
|
|
554
|
+
// `updateAssistantApiKey` RPC on the live client, not a reconnect,
|
|
555
|
+
// so caching at startup is safe.
|
|
556
|
+
const startupProxyCtx = await resolveManagedProxyContext();
|
|
557
|
+
const startupAssistantId = getPlatformAssistantId();
|
|
558
|
+
|
|
559
|
+
setCesReconnect(async () => {
|
|
560
|
+
try {
|
|
561
|
+
await pm.stop();
|
|
562
|
+
const transport = await pm.start();
|
|
563
|
+
const newClient = createCesClient(transport);
|
|
564
|
+
const { accepted, reason } = await newClient.handshake({
|
|
565
|
+
...(startupProxyCtx.assistantApiKey
|
|
566
|
+
? { assistantApiKey: startupProxyCtx.assistantApiKey }
|
|
567
|
+
: {}),
|
|
568
|
+
...(startupAssistantId ? { assistantId: startupAssistantId } : {}),
|
|
569
|
+
});
|
|
570
|
+
if (accepted) {
|
|
571
|
+
log.info("CES reconnection handshake accepted");
|
|
572
|
+
return newClient;
|
|
585
573
|
}
|
|
586
|
-
|
|
587
|
-
|
|
574
|
+
log.warn({ reason }, "CES reconnection handshake rejected");
|
|
575
|
+
newClient.close();
|
|
576
|
+
await pm.stop().catch(() => {});
|
|
577
|
+
return undefined;
|
|
578
|
+
} catch (err) {
|
|
579
|
+
log.warn(
|
|
580
|
+
{ error: err instanceof Error ? err.message : String(err) },
|
|
581
|
+
"CES reconnection attempt failed",
|
|
582
|
+
);
|
|
583
|
+
await pm.stop().catch(() => {});
|
|
584
|
+
return undefined;
|
|
585
|
+
}
|
|
586
|
+
});
|
|
588
587
|
}
|
|
589
588
|
|
|
590
|
-
// Populate the registry with user plugins from
|
|
589
|
+
// Populate the registry with user plugins from `<workspaceDir>/plugins/*`
|
|
591
590
|
// AFTER first-party plugins have already registered via their static
|
|
592
591
|
// side-effect imports. User plugins may fail to load individually; a
|
|
593
592
|
// failing user plugin is logged and skipped so one bad install can't
|
|
@@ -641,13 +640,12 @@ export async function runDaemon(): Promise<void> {
|
|
|
641
640
|
);
|
|
642
641
|
}
|
|
643
642
|
|
|
644
|
-
// Mutable refs for Qdrant
|
|
643
|
+
// Mutable refs for Qdrant and memory worker so background
|
|
645
644
|
// init can assign them and the shutdown handler always sees the latest value.
|
|
646
645
|
const bgRefs: {
|
|
647
646
|
qdrantManager: QdrantManager | null;
|
|
648
647
|
memoryWorker: { stop(): void } | null;
|
|
649
|
-
|
|
650
|
-
} = { qdrantManager: null, memoryWorker: null, backupWorker: null };
|
|
648
|
+
} = { qdrantManager: null, memoryWorker: null };
|
|
651
649
|
|
|
652
650
|
// Initialize Qdrant vector store and memory worker in the background so the
|
|
653
651
|
// RuntimeHttpServer can start accepting requests without waiting for Qdrant.
|
|
@@ -688,8 +686,11 @@ export async function runDaemon(): Promise<void> {
|
|
|
688
686
|
if (qdrantStarted) {
|
|
689
687
|
try {
|
|
690
688
|
const embeddingSelection = await selectEmbeddingBackend(config);
|
|
689
|
+
// Sentinel only encodes the dense provider+model identity; sparse
|
|
690
|
+
// encoder changes never require collection recreation, so they
|
|
691
|
+
// intentionally do not contribute to the v1 collection identity.
|
|
691
692
|
const embeddingModel = embeddingSelection.backend
|
|
692
|
-
? `${embeddingSelection.backend.provider}:${embeddingSelection.backend.model}
|
|
693
|
+
? `${embeddingSelection.backend.provider}:${embeddingSelection.backend.model}`
|
|
693
694
|
: undefined;
|
|
694
695
|
const qdrantClient = initQdrantClient({
|
|
695
696
|
url: qdrantUrl,
|
|
@@ -741,21 +742,32 @@ export async function runDaemon(): Promise<void> {
|
|
|
741
742
|
);
|
|
742
743
|
}
|
|
743
744
|
})();
|
|
745
|
+
|
|
746
|
+
// Build the BM25 corpus stats (per-token document frequencies and
|
|
747
|
+
// average document length) used by the v2 sparse channel. Without
|
|
748
|
+
// this, document-side sparse embeddings fall back to legacy TF-only
|
|
749
|
+
// weighting via the chicken-and-egg guard in
|
|
750
|
+
// `embed-concept-page.ts`. Fire-and-forget for the same reason as
|
|
751
|
+
// PKB reconcile — the stats are an optional optimization, never a
|
|
752
|
+
// boot-blocking dependency.
|
|
753
|
+
void (async () => {
|
|
754
|
+
try {
|
|
755
|
+
const { rebuildConceptPageCorpusStats } =
|
|
756
|
+
await import("../memory/v2/sparse-bm25.js");
|
|
757
|
+
await rebuildConceptPageCorpusStats(getWorkspaceDir());
|
|
758
|
+
log.info("Memory v2 BM25 corpus stats built");
|
|
759
|
+
} catch (err) {
|
|
760
|
+
log.warn(
|
|
761
|
+
{ err },
|
|
762
|
+
"BM25 corpus-stats rebuild failed — sparse channel will fall back to TF-only until next rebuild",
|
|
763
|
+
);
|
|
764
|
+
}
|
|
765
|
+
})();
|
|
744
766
|
}
|
|
745
767
|
|
|
746
768
|
log.info("Daemon startup: starting memory worker");
|
|
747
769
|
bgRefs.memoryWorker = startMemoryJobsWorker();
|
|
748
770
|
|
|
749
|
-
log.info("Daemon startup: starting backup worker");
|
|
750
|
-
try {
|
|
751
|
-
bgRefs.backupWorker = startBackupWorker();
|
|
752
|
-
} catch (err) {
|
|
753
|
-
log.warn(
|
|
754
|
-
{ err },
|
|
755
|
-
"Backup worker failed to start — continuing without backups",
|
|
756
|
-
);
|
|
757
|
-
}
|
|
758
|
-
|
|
759
771
|
// Seed capability graph nodes (new memory graph system)
|
|
760
772
|
try {
|
|
761
773
|
const {
|
|
@@ -797,7 +809,13 @@ export async function runDaemon(): Promise<void> {
|
|
|
797
809
|
|
|
798
810
|
// Register the broadcast function for the notification signal pipeline's
|
|
799
811
|
// macOS adapter so it can deliver notification_intent messages to clients.
|
|
800
|
-
registerBroadcastFn((msg) =>
|
|
812
|
+
registerBroadcastFn((msg) => broadcastMessage(msg));
|
|
813
|
+
|
|
814
|
+
try {
|
|
815
|
+
recoverStaleSchedules();
|
|
816
|
+
} catch (err) {
|
|
817
|
+
log.error({ err }, "Schedule recovery failed — continuing startup");
|
|
818
|
+
}
|
|
801
819
|
|
|
802
820
|
const scheduler = startScheduler(
|
|
803
821
|
async (conversationId, message, options) => {
|
|
@@ -884,7 +902,7 @@ export async function runDaemon(): Promise<void> {
|
|
|
884
902
|
});
|
|
885
903
|
},
|
|
886
904
|
(info) => {
|
|
887
|
-
|
|
905
|
+
broadcastMessage({
|
|
888
906
|
type: "schedule_conversation_created",
|
|
889
907
|
conversationId: info.conversationId,
|
|
890
908
|
scheduleJobId: info.scheduleJobId,
|
|
@@ -961,7 +979,7 @@ export async function runDaemon(): Promise<void> {
|
|
|
961
979
|
});
|
|
962
980
|
try {
|
|
963
981
|
await runtimeHttp.start();
|
|
964
|
-
setRelayBroadcast((msg) =>
|
|
982
|
+
setRelayBroadcast((msg) => broadcastMessage(msg));
|
|
965
983
|
setPointerMessageProcessor(
|
|
966
984
|
async (conversationId, instruction, requiredFacts) => {
|
|
967
985
|
const conversation =
|
|
@@ -1201,9 +1219,9 @@ export async function runDaemon(): Promise<void> {
|
|
|
1201
1219
|
|
|
1202
1220
|
const heartbeatConfig = config.heartbeat;
|
|
1203
1221
|
const heartbeat = new HeartbeatService({
|
|
1204
|
-
alerter: (alert) =>
|
|
1222
|
+
alerter: (alert) => broadcastMessage(alert),
|
|
1205
1223
|
onConversationCreated: (info) =>
|
|
1206
|
-
|
|
1224
|
+
broadcastMessage({
|
|
1207
1225
|
type: "heartbeat_conversation_created",
|
|
1208
1226
|
conversationId: info.conversationId,
|
|
1209
1227
|
title: info.title,
|
|
@@ -1218,16 +1236,31 @@ export async function runDaemon(): Promise<void> {
|
|
|
1218
1236
|
"Heartbeat service configured",
|
|
1219
1237
|
);
|
|
1220
1238
|
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
},
|
|
1229
|
-
"Filing service configured",
|
|
1239
|
+
// Filing yields to the memory v2 consolidation job when the flag is on —
|
|
1240
|
+
// both serve the same role (periodic background memory processing) and
|
|
1241
|
+
// running both is redundant. The consolidation job runs through the
|
|
1242
|
+
// memory jobs worker (see `maybeEnqueueGraphMaintenanceJobs`).
|
|
1243
|
+
const memoryV2Enabled = isAssistantFeatureFlagEnabled(
|
|
1244
|
+
"memory-v2-enabled",
|
|
1245
|
+
config,
|
|
1230
1246
|
);
|
|
1247
|
+
let filing: FilingService | null = null;
|
|
1248
|
+
if (!memoryV2Enabled) {
|
|
1249
|
+
const filingConfig = config.filing;
|
|
1250
|
+
filing = new FilingService();
|
|
1251
|
+
filing.start();
|
|
1252
|
+
log.info(
|
|
1253
|
+
{
|
|
1254
|
+
enabled: filingConfig.enabled,
|
|
1255
|
+
intervalMs: filingConfig.intervalMs,
|
|
1256
|
+
},
|
|
1257
|
+
"Filing service configured",
|
|
1258
|
+
);
|
|
1259
|
+
} else {
|
|
1260
|
+
log.info(
|
|
1261
|
+
"Filing service skipped — memory v2 consolidation is the active background memory job",
|
|
1262
|
+
);
|
|
1263
|
+
}
|
|
1231
1264
|
|
|
1232
1265
|
// Retrieve the MCP manager if MCP servers were configured.
|
|
1233
1266
|
// The manager is a singleton created during initializeProvidersAndTools().
|
|
@@ -1245,7 +1278,6 @@ export async function runDaemon(): Promise<void> {
|
|
|
1245
1278
|
scheduler,
|
|
1246
1279
|
feedScheduler,
|
|
1247
1280
|
getMemoryWorker: () => bgRefs.memoryWorker,
|
|
1248
|
-
getBackupWorker: () => bgRefs.backupWorker,
|
|
1249
1281
|
getQdrantManager: () => bgRefs.qdrantManager,
|
|
1250
1282
|
mcpManager,
|
|
1251
1283
|
telemetryReporter,
|
|
@@ -23,6 +23,7 @@ export * from "./message-types/diagnostics.js";
|
|
|
23
23
|
export * from "./message-types/documents.js";
|
|
24
24
|
export * from "./message-types/guardian-actions.js";
|
|
25
25
|
export * from "./message-types/home.js";
|
|
26
|
+
export * from "./message-types/host-app-control.js";
|
|
26
27
|
export * from "./message-types/host-bash.js";
|
|
27
28
|
export * from "./message-types/host-browser.js";
|
|
28
29
|
export * from "./message-types/host-cu.js";
|
|
@@ -34,7 +35,6 @@ export * from "./message-types/meet.js";
|
|
|
34
35
|
export * from "./message-types/memory.js";
|
|
35
36
|
export * from "./message-types/messages.js";
|
|
36
37
|
export * from "./message-types/notifications.js";
|
|
37
|
-
export * from "./message-types/pairing.js";
|
|
38
38
|
export * from "./message-types/schedules.js";
|
|
39
39
|
export * from "./message-types/settings.js";
|
|
40
40
|
export * from "./message-types/shared.js";
|
|
@@ -80,6 +80,7 @@ import type {
|
|
|
80
80
|
_GuardianActionsServerMessages,
|
|
81
81
|
} from "./message-types/guardian-actions.js";
|
|
82
82
|
import type { _HomeServerMessages } from "./message-types/home.js";
|
|
83
|
+
import type { _HostAppControlServerMessages } from "./message-types/host-app-control.js";
|
|
83
84
|
import type { _HostBashServerMessages } from "./message-types/host-bash.js";
|
|
84
85
|
import type {
|
|
85
86
|
_HostBrowserClientMessages,
|
|
@@ -106,10 +107,6 @@ import type {
|
|
|
106
107
|
_NotificationsClientMessages,
|
|
107
108
|
_NotificationsServerMessages,
|
|
108
109
|
} from "./message-types/notifications.js";
|
|
109
|
-
import type {
|
|
110
|
-
_PairingClientMessages,
|
|
111
|
-
_PairingServerMessages,
|
|
112
|
-
} from "./message-types/pairing.js";
|
|
113
110
|
import type {
|
|
114
111
|
_SchedulesClientMessages,
|
|
115
112
|
_SchedulesServerMessages,
|
|
@@ -170,7 +167,6 @@ export type ClientMessage =
|
|
|
170
167
|
| _SchedulesClientMessages
|
|
171
168
|
| _DiagnosticsClientMessages
|
|
172
169
|
| _InboxClientMessages
|
|
173
|
-
| _PairingClientMessages
|
|
174
170
|
| _NotificationsClientMessages
|
|
175
171
|
| _SettingsClientMessages;
|
|
176
172
|
|
|
@@ -191,6 +187,7 @@ export type ServerMessage =
|
|
|
191
187
|
| _DocumentsServerMessages
|
|
192
188
|
| _GuardianActionsServerMessages
|
|
193
189
|
| _HomeServerMessages
|
|
190
|
+
| _HostAppControlServerMessages
|
|
194
191
|
| _HostBashServerMessages
|
|
195
192
|
| _HostBrowserServerMessages
|
|
196
193
|
| _HostCuServerMessages
|
|
@@ -203,7 +200,6 @@ export type ServerMessage =
|
|
|
203
200
|
| _SettingsServerMessages
|
|
204
201
|
| _DiagnosticsServerMessages
|
|
205
202
|
| _InboxServerMessages
|
|
206
|
-
| _PairingServerMessages
|
|
207
203
|
| _NotificationsServerMessages
|
|
208
204
|
| _UpgradesServerMessages
|
|
209
205
|
| _AcpServerMessages
|
|
@@ -215,4 +211,3 @@ export interface ContractSchema {
|
|
|
215
211
|
client: ClientMessage;
|
|
216
212
|
server: ServerMessage;
|
|
217
213
|
}
|
|
218
|
-
|
|
@@ -36,6 +36,25 @@ export interface ContactsChanged {
|
|
|
36
36
|
type: "contacts_changed";
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Server → Client prompt requesting the user to enter a contact channel address.
|
|
41
|
+
* Emitted by the `contacts/prompt` IPC route.
|
|
42
|
+
*/
|
|
43
|
+
export interface ContactRequest {
|
|
44
|
+
type: "contact_request";
|
|
45
|
+
requestId: string;
|
|
46
|
+
/** Suggested channel type (e.g. "phone", "email") — used as a hint, not enforced. */
|
|
47
|
+
channel?: string;
|
|
48
|
+
/** Placeholder text for the address input field. */
|
|
49
|
+
placeholder?: string;
|
|
50
|
+
/** Display label shown above the input field. */
|
|
51
|
+
label?: string;
|
|
52
|
+
/** Longer description shown below the label. */
|
|
53
|
+
description?: string;
|
|
54
|
+
/** Suggested role for the new contact (guardian / trusted-contact / unknown). */
|
|
55
|
+
role?: string;
|
|
56
|
+
}
|
|
57
|
+
|
|
39
58
|
export interface ContactPayload {
|
|
40
59
|
id: string;
|
|
41
60
|
displayName: string;
|
|
@@ -68,4 +87,7 @@ export interface ContactChannelPayload {
|
|
|
68
87
|
|
|
69
88
|
export type _ContactsClientMessages = ContactsRequest;
|
|
70
89
|
|
|
71
|
-
export type _ContactsServerMessages =
|
|
90
|
+
export type _ContactsServerMessages =
|
|
91
|
+
| ContactsResponse
|
|
92
|
+
| ContactsChanged
|
|
93
|
+
| ContactRequest;
|
|
@@ -184,7 +184,7 @@ export interface ReorderConversationsRequest {
|
|
|
184
184
|
|
|
185
185
|
// === Server → Client ===
|
|
186
186
|
|
|
187
|
-
|
|
187
|
+
interface ConversationSearchMatchingMessage {
|
|
188
188
|
messageId: string;
|
|
189
189
|
role: string;
|
|
190
190
|
/** Plain-text excerpt around the match, truncated to ~200 chars. */
|
|
@@ -192,7 +192,7 @@ export interface ConversationSearchMatchingMessage {
|
|
|
192
192
|
createdAt: number;
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
-
|
|
195
|
+
interface ConversationSearchResultItem {
|
|
196
196
|
conversationId: string;
|
|
197
197
|
conversationTitle: string | null;
|
|
198
198
|
conversationUpdatedAt: number;
|
|
@@ -225,7 +225,7 @@ export interface ConversationTitleUpdated {
|
|
|
225
225
|
}
|
|
226
226
|
|
|
227
227
|
/** Channel binding metadata exposed in conversation list APIs. */
|
|
228
|
-
|
|
228
|
+
interface ChannelBinding {
|
|
229
229
|
sourceChannel: ChannelId;
|
|
230
230
|
externalChatId: string;
|
|
231
231
|
externalUserId?: string | null;
|
|
@@ -234,7 +234,7 @@ export interface ChannelBinding {
|
|
|
234
234
|
}
|
|
235
235
|
|
|
236
236
|
/** Attention state metadata for a conversation's latest assistant message. */
|
|
237
|
-
|
|
237
|
+
interface AssistantAttention {
|
|
238
238
|
hasUnseenLatestAssistantMessage: boolean;
|
|
239
239
|
latestAssistantMessageAt?: number;
|
|
240
240
|
lastSeenAssistantMessageAt?: number;
|
|
@@ -242,7 +242,7 @@ export interface AssistantAttention {
|
|
|
242
242
|
lastSeenSignalType?: string;
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
-
|
|
245
|
+
interface ConversationForkParent {
|
|
246
246
|
conversationId: string;
|
|
247
247
|
messageId: string;
|
|
248
248
|
title: string;
|
|
@@ -314,6 +314,7 @@ export interface GenerationHandoff {
|
|
|
314
314
|
|
|
315
315
|
export interface ModelInfo {
|
|
316
316
|
type: "model_info";
|
|
317
|
+
conversationId?: string;
|
|
317
318
|
model: string;
|
|
318
319
|
provider: string;
|
|
319
320
|
configuredProviders?: string[];
|
|
@@ -328,7 +329,7 @@ export interface ModelInfo {
|
|
|
328
329
|
}>;
|
|
329
330
|
}
|
|
330
331
|
|
|
331
|
-
|
|
332
|
+
interface HistoryResponseToolCall {
|
|
332
333
|
name: string;
|
|
333
334
|
input: Record<string, unknown>;
|
|
334
335
|
result?: string;
|
|
@@ -349,11 +350,20 @@ export interface HistoryResponseToolCall {
|
|
|
349
350
|
riskLevel?: string;
|
|
350
351
|
/** Human-readable reason for the risk classification. */
|
|
351
352
|
riskReason?: string;
|
|
352
|
-
/**
|
|
353
|
+
/**
|
|
354
|
+
* @deprecated Use `approvalMode` and `approvalReason` instead.
|
|
355
|
+
* Kept for backward compatibility during the migration window.
|
|
356
|
+
*/
|
|
353
357
|
autoApproved?: boolean;
|
|
358
|
+
/** How the approval decision was reached: prompted, auto, blocked, or unknown (legacy). */
|
|
359
|
+
approvalMode?: string;
|
|
360
|
+
/** Why the approval decision was reached (stable enum for client display). */
|
|
361
|
+
approvalReason?: string;
|
|
362
|
+
/** Snapshot of the auto-approve threshold at execution time. */
|
|
363
|
+
riskThreshold?: string;
|
|
354
364
|
}
|
|
355
365
|
|
|
356
|
-
|
|
366
|
+
interface HistoryResponseSurface {
|
|
357
367
|
surfaceId: string;
|
|
358
368
|
surfaceType: string;
|
|
359
369
|
title?: string;
|