@vellumai/assistant 0.7.1 → 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.
Files changed (535) hide show
  1. package/ARCHITECTURE.md +32 -49
  2. package/Dockerfile +1 -0
  3. package/README.md +1 -2
  4. package/__tests__/permissions/gateway-threshold-reader.test.ts +9 -3
  5. package/bun.lock +26 -26
  6. package/docs/architecture/security.md +20 -0
  7. package/docs/plugins.md +7 -9
  8. package/knip.json +1 -0
  9. package/node_modules/@vellumai/gateway-client/src/index.ts +1 -0
  10. package/node_modules/@vellumai/gateway-client/src/ipc-client.ts +39 -1
  11. package/node_modules/@vellumai/gateway-client/src/types.ts +11 -0
  12. package/node_modules/@vellumai/service-contracts/package.json +2 -0
  13. package/node_modules/@vellumai/service-contracts/src/__tests__/contracts.test.ts +4 -0
  14. package/node_modules/@vellumai/service-contracts/src/__tests__/ingress.test.ts +107 -0
  15. package/node_modules/@vellumai/service-contracts/src/index.ts +5 -1
  16. package/node_modules/@vellumai/service-contracts/src/ingress.ts +24 -0
  17. package/node_modules/@vellumai/service-contracts/src/twilio-ingress.ts +84 -0
  18. package/node_modules/@vellumai/skill-host-contracts/src/assistant-event.ts +9 -0
  19. package/node_modules/@vellumai/twilio-client/bun.lock +24 -0
  20. package/node_modules/@vellumai/twilio-client/package.json +18 -0
  21. package/node_modules/@vellumai/twilio-client/src/__tests__/twilio-client.test.ts +128 -0
  22. package/node_modules/@vellumai/twilio-client/src/index.ts +179 -0
  23. package/node_modules/@vellumai/twilio-client/tsconfig.json +20 -0
  24. package/openapi.yaml +565 -12
  25. package/package.json +6 -3
  26. package/src/__tests__/app-builder-tool-scripts.test.ts +3 -3
  27. package/src/__tests__/app-bundler.test.ts +170 -1
  28. package/src/__tests__/app-control-flow.test.ts +374 -0
  29. package/src/__tests__/app-control-no-global-cgevent.test.ts +98 -0
  30. package/src/__tests__/app-control-tool-schemas.test.ts +621 -0
  31. package/src/__tests__/app-executors.test.ts +30 -43
  32. package/src/__tests__/approval-routes-http.test.ts +23 -6
  33. package/src/__tests__/assistant-event-hub-machine-name.test.ts +146 -0
  34. package/src/__tests__/assistant-event-hub-targeted.test.ts +257 -0
  35. package/src/__tests__/assistant-event-hub.test.ts +109 -2
  36. package/src/__tests__/assistant-event.test.ts +10 -0
  37. package/src/__tests__/assistant-events-sse-hardening.test.ts +7 -2
  38. package/src/__tests__/assistant-feature-flags-integration.test.ts +11 -7
  39. package/src/__tests__/background-shell-host-bash.test.ts +14 -15
  40. package/src/__tests__/bootstrap-turn-cleanup.test.ts +44 -0
  41. package/src/__tests__/btw-routes.test.ts +13 -4
  42. package/src/__tests__/call-controller.test.ts +49 -1
  43. package/src/__tests__/call-domain.test.ts +0 -2
  44. package/src/__tests__/call-routes-http.test.ts +0 -2
  45. package/src/__tests__/channel-readiness-service.test.ts +59 -1
  46. package/src/__tests__/checker.test.ts +3 -4
  47. package/src/__tests__/config-loader-backfill.test.ts +90 -155
  48. package/src/__tests__/config-loader-platform-defaults.test.ts +196 -0
  49. package/src/__tests__/config-schema-cmd.test.ts +0 -1
  50. package/src/__tests__/config-set-platform-guard.test.ts +48 -4
  51. package/src/__tests__/config-watcher-cleanup-throttle.test.ts +2 -2
  52. package/src/__tests__/config-watcher.test.ts +2 -2
  53. package/src/__tests__/conversation-app-control-instantiation.test.ts +392 -0
  54. package/src/__tests__/conversation-app-control-lifecycle.test.ts +237 -0
  55. package/src/__tests__/conversation-init.benchmark.test.ts +0 -2
  56. package/src/__tests__/conversation-lifecycle.test.ts +36 -0
  57. package/src/__tests__/conversation-process-app-control-preactivation.test.ts +283 -0
  58. package/src/__tests__/conversation-routes-disk-view.test.ts +6 -0
  59. package/src/__tests__/conversation-routes-guardian-reply.test.ts +120 -72
  60. package/src/__tests__/conversation-routes-slash-commands.test.ts +1 -0
  61. package/src/__tests__/conversation-slash-commands.test.ts +0 -4
  62. package/src/__tests__/conversation-surfaces-action-delivery.test.ts +202 -0
  63. package/src/__tests__/conversation-surfaces-app-control.test.ts +317 -0
  64. package/src/__tests__/credential-execution-feature-gates.test.ts +5 -12
  65. package/src/__tests__/credential-execution-managed-contract.test.ts +3 -131
  66. package/src/__tests__/credentials-cli.test.ts +5 -12
  67. package/src/__tests__/cu-unified-flow.test.ts +185 -23
  68. package/src/__tests__/daemon-credential-client.test.ts +101 -19
  69. package/src/__tests__/db-schedule-syntax-migration.test.ts +2 -0
  70. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -1
  71. package/src/__tests__/gateway-only-enforcement.test.ts +0 -1
  72. package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -2
  73. package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +0 -2
  74. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +0 -1
  75. package/src/__tests__/heartbeat-service.test.ts +718 -1
  76. package/src/__tests__/helpers/call-route-handler.ts +7 -1
  77. package/src/__tests__/host-app-control-proxy.test.ts +602 -0
  78. package/src/__tests__/host-app-control-routes.test.ts +263 -0
  79. package/src/__tests__/host-bash-proxy.test.ts +246 -47
  80. package/src/__tests__/host-bash-routes.test.ts +294 -0
  81. package/src/__tests__/host-browser-proxy.test.ts +24 -22
  82. package/src/__tests__/host-browser-routes.test.ts +39 -13
  83. package/src/__tests__/host-cu-proxy.test.ts +41 -52
  84. package/src/__tests__/host-cu-routes-targeted.test.ts +300 -0
  85. package/src/__tests__/host-file-edit-tool.test.ts +47 -1
  86. package/src/__tests__/host-file-proxy-targeted.test.ts +339 -0
  87. package/src/__tests__/host-file-proxy.test.ts +37 -43
  88. package/src/__tests__/host-file-read-tool.test.ts +17 -0
  89. package/src/__tests__/host-file-routes-targeted.test.ts +262 -0
  90. package/src/__tests__/host-file-write-tool.test.ts +42 -1
  91. package/src/__tests__/host-proxy-base.test.ts +312 -0
  92. package/src/__tests__/host-shell-tool.test.ts +22 -4
  93. package/src/__tests__/host-transfer-proxy-targeted.test.ts +583 -0
  94. package/src/__tests__/host-transfer-proxy.test.ts +121 -22
  95. package/src/__tests__/host-transfer-routes-targeted.test.ts +447 -0
  96. package/src/__tests__/http-user-message-parity.test.ts +1 -0
  97. package/src/__tests__/identity-intro-cache.test.ts +29 -0
  98. package/src/__tests__/identity-routes.test.ts +103 -1
  99. package/src/__tests__/init-feature-flag-overrides.test.ts +26 -3
  100. package/src/__tests__/inline-command-runner.test.ts +0 -1
  101. package/src/__tests__/inline-skill-load-permissions.test.ts +5 -11
  102. package/src/__tests__/integration-status.test.ts +85 -5
  103. package/src/__tests__/intent-routing.test.ts +0 -1
  104. package/src/__tests__/jobs-store-qdrant-breaker.test.ts +95 -5
  105. package/src/__tests__/lifecycle-memory-v2-seed.test.ts +17 -0
  106. package/src/__tests__/managed-skill-lifecycle.test.ts +0 -1
  107. package/src/__tests__/mcp-auth-routes.test.ts +197 -0
  108. package/src/__tests__/mcp-cli.test.ts +338 -2
  109. package/src/__tests__/memory-jobs-worker-lanes.test.ts +188 -0
  110. package/src/__tests__/migration-import-commit-http.test.ts +108 -2
  111. package/src/__tests__/mock-gateway-ipc.ts +1 -0
  112. package/src/__tests__/oauth-cli.test.ts +0 -2
  113. package/src/__tests__/oauth2-gateway-transport.test.ts +0 -1
  114. package/src/__tests__/persistence-secret-redaction.test.ts +299 -0
  115. package/src/__tests__/platform-bash-auto-approve.test.ts +5 -9
  116. package/src/__tests__/prechat-onboarding-contract.test.ts +3 -1
  117. package/src/__tests__/process-message-background-slack.test.ts +2 -0
  118. package/src/__tests__/provider-commit-message-generator.test.ts +0 -1
  119. package/src/__tests__/public-ingress-urls.test.ts +97 -0
  120. package/src/__tests__/require-fresh-approval.test.ts +0 -1
  121. package/src/__tests__/retry-backoff.test.ts +87 -0
  122. package/src/__tests__/runtime-events-sse.test.ts +10 -6
  123. package/src/__tests__/sanitize-config-for-transfer.test.ts +24 -2
  124. package/src/__tests__/schedule-retry.test.ts +715 -0
  125. package/src/__tests__/script-proxy-mitm-handler.test.ts +1 -1
  126. package/src/__tests__/secret-ingress-http.test.ts +1 -0
  127. package/src/__tests__/send-endpoint-busy.test.ts +3 -0
  128. package/src/__tests__/shell-tool-proxy-mode.test.ts +0 -1
  129. package/src/__tests__/skill-feature-flags.test.ts +43 -41
  130. package/src/__tests__/skill-load-feature-flag.test.ts +13 -14
  131. package/src/__tests__/skill-load-inline-command.test.ts +0 -51
  132. package/src/__tests__/skill-load-inline-includes.test.ts +0 -43
  133. package/src/__tests__/skill-projection.benchmark.test.ts +0 -1
  134. package/src/__tests__/skill-script-runner-sandbox.test.ts +0 -1
  135. package/src/__tests__/slack-channel-config.test.ts +9 -14
  136. package/src/__tests__/system-prompt-ask-mode.test.ts +0 -1
  137. package/src/__tests__/system-prompt.test.ts +0 -1
  138. package/src/__tests__/telegram-config.test.ts +0 -1
  139. package/src/__tests__/test-preload.ts +8 -0
  140. package/src/__tests__/tool-approval-handler.test.ts +3 -4
  141. package/src/__tests__/tool-audit-listener.test.ts +48 -0
  142. package/src/__tests__/tool-execute-pipeline.test.ts +0 -1
  143. package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -1
  144. package/src/__tests__/tool-executor-lifecycle-events.test.ts +0 -1
  145. package/src/__tests__/tool-executor.test.ts +0 -1
  146. package/src/__tests__/twilio-config.test.ts +3 -16
  147. package/src/__tests__/twilio-routes.test.ts +3 -5
  148. package/src/__tests__/twilio-validation.test.ts +93 -0
  149. package/src/__tests__/vellum-self-knowledge-inline-command.test.ts +1 -4
  150. package/src/__tests__/verification-control-plane-policy.test.ts +2 -4
  151. package/src/__tests__/voice-ingress-preflight.test.ts +19 -0
  152. package/src/__tests__/workspace-migration-006-services-config.test.ts +3 -2
  153. package/src/__tests__/workspace-migration-backfill-installation-id.test.ts +1 -5
  154. package/src/__tests__/workspace-migration-down-functions.test.ts +8 -8
  155. package/src/__tests__/workspace-migration-unify-llm-callsite-configs.test.ts +10 -6
  156. package/src/backup/__tests__/paths.test.ts +0 -22
  157. package/src/backup/__tests__/restore.test.ts +51 -151
  158. package/src/backup/paths.ts +2 -18
  159. package/src/backup/restore.ts +107 -231
  160. package/src/bundler/app-bundler.ts +51 -3
  161. package/src/calls/relay-server.ts +4 -44
  162. package/src/calls/twilio-config.ts +2 -17
  163. package/src/calls/twilio-rest.ts +33 -105
  164. package/src/calls/twilio-routes.ts +11 -12
  165. package/src/channels/types.ts +8 -7
  166. package/src/cli/commands/__tests__/backup.test.ts +6 -277
  167. package/src/cli/commands/__tests__/gateway.test.ts +288 -0
  168. package/src/cli/commands/__tests__/memory-v2.test.ts +4 -0
  169. package/src/cli/commands/__tests__/webhooks.test.ts +0 -1
  170. package/src/cli/commands/backup.ts +6 -331
  171. package/src/cli/commands/clients.ts +36 -37
  172. package/src/cli/commands/contacts.ts +73 -0
  173. package/src/cli/commands/conversations.ts +2 -5
  174. package/src/cli/commands/credentials.ts +15 -7
  175. package/src/cli/commands/domain.ts +66 -15
  176. package/src/cli/commands/gateway.ts +183 -0
  177. package/src/cli/commands/keys.ts +9 -6
  178. package/src/cli/commands/mcp.ts +116 -156
  179. package/src/cli/commands/memory-v2.ts +296 -1
  180. package/src/cli/commands/platform/__tests__/callback-routes-list.test.ts +0 -1
  181. package/src/cli/commands/platform/__tests__/connect.test.ts +0 -2
  182. package/src/cli/commands/platform/__tests__/disconnect.test.ts +0 -2
  183. package/src/cli/commands/platform/__tests__/status.test.ts +13 -15
  184. package/src/cli/commands/platform/disconnect.ts +5 -4
  185. package/src/cli/commands/platform/index.ts +0 -18
  186. package/src/cli/lib/daemon-credential-client.ts +110 -28
  187. package/src/cli/program.ts +2 -0
  188. package/src/config/assistant-feature-flags.ts +67 -10
  189. package/src/config/bundled-skills/acp/SKILL.md +6 -0
  190. package/src/config/bundled-skills/acp/TOOLS.json +1 -22
  191. package/src/config/bundled-skills/app-builder/SKILL.md +14 -109
  192. package/src/config/bundled-skills/app-builder/TOOLS.json +1 -28
  193. package/src/config/bundled-skills/app-builder/tools/app-create.ts +1 -10
  194. package/src/config/bundled-skills/app-control/SKILL.md +75 -0
  195. package/src/config/bundled-skills/app-control/TOOLS.json +299 -0
  196. package/src/config/bundled-skills/app-control/tools/app-control-click.ts +12 -0
  197. package/src/config/bundled-skills/app-control/tools/app-control-combo.ts +12 -0
  198. package/src/config/bundled-skills/app-control/tools/app-control-drag.ts +12 -0
  199. package/src/config/bundled-skills/app-control/tools/app-control-observe.ts +12 -0
  200. package/src/config/bundled-skills/app-control/tools/app-control-press.ts +12 -0
  201. package/src/config/bundled-skills/app-control/tools/app-control-sequence.ts +12 -0
  202. package/src/config/bundled-skills/app-control/tools/app-control-start.ts +12 -0
  203. package/src/config/bundled-skills/app-control/tools/app-control-stop.ts +12 -0
  204. package/src/config/bundled-skills/app-control/tools/app-control-type.ts +12 -0
  205. package/src/config/bundled-skills/computer-use/SKILL.md +6 -0
  206. package/src/config/bundled-skills/computer-use/TOOLS.json +67 -43
  207. package/src/config/bundled-skills/contacts/TOOLS.json +0 -16
  208. package/src/config/bundled-skills/document/TOOLS.json +0 -8
  209. package/src/config/bundled-skills/followups/TOOLS.json +0 -12
  210. package/src/config/bundled-skills/image-studio/SKILL.md +4 -0
  211. package/src/config/bundled-skills/image-studio/TOOLS.json +0 -4
  212. package/src/config/bundled-skills/media-processing/TOOLS.json +0 -24
  213. package/src/config/bundled-skills/messaging/TOOLS.json +0 -40
  214. package/src/config/bundled-skills/phone-calls/TOOLS.json +0 -12
  215. package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +19 -4
  216. package/src/config/bundled-skills/playbooks/TOOLS.json +0 -16
  217. package/src/config/bundled-skills/schedule/TOOLS.json +14 -14
  218. package/src/config/bundled-skills/sequences/TOOLS.json +0 -36
  219. package/src/config/bundled-skills/settings/SKILL.md +4 -0
  220. package/src/config/bundled-skills/settings/TOOLS.json +0 -12
  221. package/src/config/bundled-skills/skill-management/SKILL.md +6 -0
  222. package/src/config/bundled-skills/skill-management/TOOLS.json +0 -8
  223. package/src/config/bundled-skills/subagent/SKILL.md +6 -2
  224. package/src/config/bundled-skills/subagent/TOOLS.json +0 -20
  225. package/src/config/bundled-skills/transcribe/SKILL.md +4 -0
  226. package/src/config/bundled-skills/transcribe/TOOLS.json +0 -4
  227. package/src/config/bundled-tool-registry.ts +21 -0
  228. package/src/config/env-registry.ts +0 -2
  229. package/src/config/env.ts +19 -12
  230. package/src/config/feature-flag-registry.json +21 -133
  231. package/src/config/loader.ts +73 -99
  232. package/src/config/sanitize-for-transfer.ts +2 -0
  233. package/src/config/schemas/__tests__/memory-lifecycle.test.ts +80 -0
  234. package/src/config/schemas/__tests__/memory-v2.test.ts +7 -4
  235. package/src/config/schemas/calls.ts +0 -9
  236. package/src/config/schemas/heartbeat.ts +63 -0
  237. package/src/config/schemas/ingress.ts +10 -6
  238. package/src/config/schemas/llm.ts +5 -10
  239. package/src/config/schemas/memory-lifecycle.ts +77 -24
  240. package/src/config/schemas/memory-v2.ts +48 -4
  241. package/src/config/schemas/platform.ts +6 -0
  242. package/src/config/schemas/services.ts +1 -15
  243. package/src/config/schemas/skills.ts +0 -6
  244. package/src/config/seed-inference-profiles.ts +1 -1
  245. package/src/contacts/contact-store.ts +0 -30
  246. package/src/contacts/contacts-write.ts +0 -27
  247. package/src/context/window-manager.ts +1 -2
  248. package/src/credential-execution/feature-gates.ts +10 -10
  249. package/src/credential-execution/process-manager.ts +12 -41
  250. package/src/daemon/__tests__/conversation-tool-setup.test.ts +126 -5
  251. package/src/daemon/bootstrap-turn-cleanup.ts +45 -0
  252. package/src/daemon/config-watcher.ts +4 -3
  253. package/src/daemon/conversation-agent-loop-handlers.ts +21 -3
  254. package/src/daemon/conversation-agent-loop.ts +32 -28
  255. package/src/daemon/conversation-lifecycle.ts +8 -1
  256. package/src/daemon/conversation-process.ts +16 -11
  257. package/src/daemon/conversation-runtime-assembly.ts +2 -2
  258. package/src/daemon/conversation-surfaces.ts +125 -4
  259. package/src/daemon/conversation-tool-setup.ts +16 -55
  260. package/src/daemon/conversation.ts +21 -2
  261. package/src/daemon/doordash-steps.ts +1 -1
  262. package/src/daemon/handlers/shared.ts +4 -1
  263. package/src/daemon/host-app-control-proxy.ts +293 -0
  264. package/src/daemon/host-bash-proxy.ts +84 -74
  265. package/src/daemon/host-browser-proxy.ts +67 -82
  266. package/src/daemon/host-cu-proxy.ts +81 -86
  267. package/src/daemon/host-file-proxy.ts +93 -69
  268. package/src/daemon/host-proxy-base.ts +294 -0
  269. package/src/daemon/host-proxy-preactivation.ts +82 -0
  270. package/src/daemon/host-transfer-proxy.ts +247 -129
  271. package/src/daemon/lifecycle.ts +115 -117
  272. package/src/daemon/message-protocol.ts +3 -8
  273. package/src/daemon/message-types/contacts.ts +23 -1
  274. package/src/daemon/message-types/conversations.ts +11 -8
  275. package/src/daemon/message-types/host-app-control.ts +150 -0
  276. package/src/daemon/message-types/host-bash.ts +4 -0
  277. package/src/daemon/message-types/host-cu.ts +2 -0
  278. package/src/daemon/message-types/host-file.ts +4 -0
  279. package/src/daemon/message-types/host-transfer.ts +3 -0
  280. package/src/daemon/message-types/schedules.ts +8 -3
  281. package/src/daemon/message-types/skills.ts +2 -2
  282. package/src/daemon/process-message.ts +18 -1
  283. package/src/daemon/shutdown-handlers.ts +0 -3
  284. package/src/daemon/tool-setup-types.ts +51 -0
  285. package/src/daemon/tool-side-effects.ts +1 -1
  286. package/src/events/tool-audit-listener.ts +2 -1
  287. package/src/heartbeat/__tests__/heartbeat-feed-event.test.ts +15 -7
  288. package/src/heartbeat/__tests__/heartbeat-run-store.test.ts +216 -0
  289. package/src/heartbeat/heartbeat-run-store.ts +236 -0
  290. package/src/heartbeat/heartbeat-service.ts +280 -49
  291. package/src/home/__tests__/post-connect-feed.test.ts +99 -0
  292. package/src/home/__tests__/relationship-state-writer.test.ts +11 -9
  293. package/src/home/__tests__/suggested-prompts.test.ts +89 -0
  294. package/src/home/post-connect-feed.ts +68 -0
  295. package/src/home/relationship-state-writer.ts +17 -92
  296. package/src/home/suggested-prompts.ts +46 -10
  297. package/src/inbound/public-ingress-urls.ts +32 -34
  298. package/src/ipc/__tests__/route-error-envelope.test.ts +80 -0
  299. package/src/ipc/assistant-server.ts +14 -1
  300. package/src/ipc/cli-client.ts +32 -1
  301. package/src/live-voice/live-voice-metrics.ts +10 -10
  302. package/src/mcp/__tests__/mcp-auth-orchestrator.test.ts +304 -0
  303. package/src/mcp/mcp-auth-orchestrator.ts +213 -0
  304. package/src/mcp/mcp-auth-state.ts +133 -0
  305. package/src/mcp/mcp-oauth-provider.ts +19 -0
  306. package/src/memory/__tests__/jobs-store-job-classes.test.ts +24 -0
  307. package/src/memory/__tests__/qdrant-client-sentinel.test.ts +49 -0
  308. package/src/memory/__tests__/sparse-tokenize.test.ts +66 -0
  309. package/src/memory/anisotropy.test.ts +247 -0
  310. package/src/memory/anisotropy.ts +443 -0
  311. package/src/memory/auto-analysis-constants.ts +17 -0
  312. package/src/memory/auto-analysis-guard.ts +5 -15
  313. package/src/memory/canonical-guardian-store.ts +7 -7
  314. package/src/memory/context-search/__tests__/agent-runner-redaction.test.ts +122 -0
  315. package/src/memory/context-search/agent-protocol.ts +6 -6
  316. package/src/memory/context-search/agent-runner.ts +32 -7
  317. package/src/memory/context-search/sources/memory-v2.ts +17 -5
  318. package/src/memory/conversation-crud.ts +1 -1
  319. package/src/memory/conversation-key-store.ts +2 -15
  320. package/src/memory/db-init.ts +4 -0
  321. package/src/memory/embedding-backend.ts +9 -21
  322. package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +49 -4
  323. package/src/memory/graph/conversation-graph-memory.ts +1 -24
  324. package/src/memory/graph/graph-search.ts +8 -0
  325. package/src/memory/graph/retriever.ts +28 -0
  326. package/src/memory/graph/tools.ts +1 -1
  327. package/src/memory/jobs/__tests__/embed-concept-page.test.ts +8 -2
  328. package/src/memory/jobs/embed-concept-page.ts +28 -2
  329. package/src/memory/jobs/embed-pkb-file.test.ts +2 -2
  330. package/src/memory/jobs-store.ts +66 -22
  331. package/src/memory/jobs-worker.ts +112 -63
  332. package/src/memory/memory-v2-activation-log-store.ts +1 -1
  333. package/src/memory/migrations/237-heartbeat-runs.ts +45 -0
  334. package/src/memory/migrations/238-schedule-retry-policy.ts +20 -0
  335. package/src/memory/migrations/index.ts +5 -0
  336. package/src/memory/migrations/registry.ts +8 -0
  337. package/src/memory/pkb/pkb-search.ts +7 -0
  338. package/src/memory/qdrant-client.ts +50 -20
  339. package/src/memory/schema/infrastructure.ts +15 -0
  340. package/src/memory/search/semantic.ts +7 -0
  341. package/src/memory/sparse-tokenize.ts +49 -0
  342. package/src/memory/v2/__tests__/activation.test.ts +77 -95
  343. package/src/memory/v2/__tests__/injection.test.ts +43 -21
  344. package/src/memory/v2/__tests__/sim.test.ts +166 -6
  345. package/src/memory/v2/__tests__/sparse-bm25.test.ts +292 -0
  346. package/src/memory/v2/__tests__/static-context.test.ts +0 -1
  347. package/src/memory/v2/activation.ts +69 -88
  348. package/src/memory/v2/consolidation-job.ts +3 -5
  349. package/src/memory/v2/constants.ts +7 -0
  350. package/src/memory/v2/injection.ts +86 -53
  351. package/src/memory/v2/prompts/consolidation.ts +312 -91
  352. package/src/memory/v2/qdrant.ts +99 -1
  353. package/src/memory/v2/sim.ts +126 -16
  354. package/src/memory/v2/skill-qdrant.ts +12 -3
  355. package/src/memory/v2/skill-store.ts +16 -1
  356. package/src/memory/v2/sparse-bm25.ts +245 -0
  357. package/src/memory/v2/static-context.ts +6 -5
  358. package/src/messaging/providers/gmail/types.ts +0 -49
  359. package/src/messaging/providers/slack/adapter.ts +1 -31
  360. package/src/messaging/providers/slack/types.ts +0 -32
  361. package/src/notifications/README.md +10 -10
  362. package/src/notifications/broadcaster.ts +1 -1
  363. package/src/notifications/guardian-question-mode.ts +5 -5
  364. package/src/oauth/connect-orchestrator.ts +4 -0
  365. package/src/oauth/credential-token-resolver.ts +1 -3
  366. package/src/oauth/manual-token-connection.ts +0 -4
  367. package/src/outbound-proxy/index.ts +1 -37
  368. package/src/outbound-proxy/logging.ts +1 -1
  369. package/src/outbound-proxy/policy.ts +6 -5
  370. package/src/outbound-proxy/router.ts +2 -1
  371. package/src/permissions/approval-policy.test.ts +6 -275
  372. package/src/permissions/approval-policy.ts +0 -51
  373. package/src/permissions/checker.test.ts +0 -1
  374. package/src/permissions/checker.ts +3 -17
  375. package/src/permissions/gateway-threshold-reader.ts +2 -0
  376. package/src/permissions/prompter.ts +34 -1
  377. package/src/permissions/secret-prompter.ts +6 -2
  378. package/src/prompts/bootstrap-cleanup.ts +27 -0
  379. package/src/prompts/system-prompt.ts +3 -18
  380. package/src/prompts/templates/SOUL.md +13 -1
  381. package/src/providers/speech-to-text/provider-catalog.ts +7 -8
  382. package/src/runtime/assistant-event-hub.ts +118 -96
  383. package/src/runtime/assistant-event.ts +1 -0
  384. package/src/runtime/auth/__tests__/middleware.test.ts +11 -56
  385. package/src/runtime/auth/middleware.ts +0 -96
  386. package/src/runtime/auth/route-policy.ts +19 -0
  387. package/src/runtime/btw-sidechain.ts +2 -3
  388. package/src/runtime/channel-invite-transport.ts +2 -48
  389. package/src/runtime/channel-invite-transports/email.ts +1 -1
  390. package/src/runtime/channel-invite-transports/slack.ts +1 -1
  391. package/src/runtime/channel-invite-transports/telegram.ts +1 -1
  392. package/src/runtime/channel-invite-transports/voice.ts +1 -1
  393. package/src/runtime/channel-invite-transports/whatsapp.ts +1 -1
  394. package/src/runtime/channel-invite-types.ts +54 -0
  395. package/src/runtime/channel-readiness-service.ts +32 -13
  396. package/src/runtime/http-server.ts +3 -329
  397. package/src/runtime/http-types.ts +0 -5
  398. package/src/runtime/migrations/__tests__/vbundle-import-parity.test.ts +413 -0
  399. package/src/runtime/migrations/__tests__/vbundle-import-policy.test.ts +260 -0
  400. package/src/runtime/migrations/__tests__/vbundle-import-version-compat.test.ts +189 -0
  401. package/src/runtime/migrations/__tests__/vbundle-streaming-importer.test.ts +153 -1
  402. package/src/runtime/migrations/__tests__/vbundle-symlink-importer.test.ts +451 -0
  403. package/src/runtime/migrations/__tests__/vbundle-symlink-streaming-importer.test.ts +0 -0
  404. package/src/runtime/migrations/__tests__/vbundle-symlink-streaming.test.ts +515 -0
  405. package/src/runtime/migrations/__tests__/vbundle-symlink-tar.test.ts +437 -0
  406. package/src/runtime/migrations/__tests__/vbundle-symlink-walker.test.ts +319 -0
  407. package/src/runtime/migrations/__tests__/vbundle-validator-v1-schema.test.ts +51 -1
  408. package/src/runtime/migrations/migration-transport.ts +7 -7
  409. package/src/runtime/migrations/vbundle-builder.ts +327 -60
  410. package/src/runtime/migrations/vbundle-import-analyzer.ts +4 -4
  411. package/src/runtime/migrations/vbundle-import-policy.ts +172 -0
  412. package/src/runtime/migrations/vbundle-importer.ts +245 -68
  413. package/src/runtime/migrations/vbundle-streaming-importer.ts +326 -35
  414. package/src/runtime/migrations/vbundle-streaming-validator.ts +157 -4
  415. package/src/runtime/migrations/vbundle-tar-stream.ts +15 -6
  416. package/src/runtime/migrations/vbundle-validator.ts +114 -0
  417. package/src/runtime/pending-interactions.ts +35 -9
  418. package/src/runtime/routes/__tests__/backup-routes.test.ts +22 -150
  419. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +98 -0
  420. package/src/runtime/routes/__tests__/gateway-log-routes.test.ts +242 -0
  421. package/src/runtime/routes/__tests__/heartbeat-routes.test.ts +112 -0
  422. package/src/runtime/routes/approval-interception-types.ts +13 -0
  423. package/src/runtime/routes/approval-strategies/guardian-text-engine-strategy.ts +1 -1
  424. package/src/runtime/routes/backup-routes.ts +15 -38
  425. package/src/runtime/routes/btw-routes.ts +14 -37
  426. package/src/runtime/routes/client-routes.ts +1 -0
  427. package/src/runtime/routes/contact-prompt-routes.ts +183 -0
  428. package/src/runtime/routes/conversation-query-routes.ts +36 -1
  429. package/src/runtime/routes/conversation-routes.ts +30 -13
  430. package/src/runtime/routes/document-pdf-renderer.ts +165 -0
  431. package/src/runtime/routes/documents-routes.ts +30 -0
  432. package/src/runtime/routes/errors.ts +19 -4
  433. package/src/runtime/routes/events-routes.ts +12 -6
  434. package/src/runtime/routes/gateway-log-routes.ts +79 -0
  435. package/src/runtime/routes/guardian-approval-interception.ts +2 -8
  436. package/src/runtime/routes/heartbeat-routes.ts +103 -38
  437. package/src/runtime/routes/host-app-control-routes.ts +134 -0
  438. package/src/runtime/routes/host-bash-routes.ts +36 -6
  439. package/src/runtime/routes/host-browser-routes.ts +108 -13
  440. package/src/runtime/routes/host-cu-routes.ts +44 -14
  441. package/src/runtime/routes/host-file-routes.ts +33 -10
  442. package/src/runtime/routes/host-transfer-routes.ts +64 -24
  443. package/src/runtime/routes/http-adapter.ts +1 -0
  444. package/src/runtime/routes/identity-intro-cache.ts +30 -0
  445. package/src/runtime/routes/identity-routes.ts +15 -43
  446. package/src/runtime/routes/inbound-message-handler.ts +1 -9
  447. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +0 -7
  448. package/src/runtime/routes/inbound-stages/edit-intercept.ts +0 -8
  449. package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +0 -20
  450. package/src/runtime/routes/inbound-stages/transcribe-audio.ts +5 -13
  451. package/src/runtime/routes/index.ts +8 -0
  452. package/src/runtime/routes/mcp-auth-routes.ts +132 -0
  453. package/src/runtime/routes/memory-item-routes.ts +10 -12
  454. package/src/runtime/routes/memory-v2-routes.ts +441 -1
  455. package/src/runtime/routes/migration-routes.ts +96 -0
  456. package/src/runtime/routes/schedule-routes.ts +7 -0
  457. package/src/runtime/verification-templates.ts +4 -7
  458. package/src/schedule/integration-status.ts +66 -2
  459. package/src/schedule/recurrence-engine.ts +4 -1
  460. package/src/schedule/retry-backoff.ts +18 -0
  461. package/src/schedule/retry-policy.ts +82 -0
  462. package/src/schedule/schedule-recovery.ts +64 -0
  463. package/src/schedule/schedule-store.ts +106 -2
  464. package/src/schedule/scheduler-types.ts +25 -0
  465. package/src/schedule/scheduler.ts +63 -38
  466. package/src/security/oauth-callback-registry.ts +8 -0
  467. package/src/sequence/analytics.ts +5 -5
  468. package/src/sequence/engine.ts +1 -1
  469. package/src/skills/catalog-files.ts +2 -8
  470. package/src/skills/include-graph.ts +5 -5
  471. package/src/skills/remote-skill-policy.ts +5 -5
  472. package/src/skills/skill-file-provider.ts +1 -1
  473. package/src/skills/skill-file-types.ts +13 -0
  474. package/src/skills/skillssh-audit-types.ts +28 -0
  475. package/src/skills/skillssh-registry.ts +8 -21
  476. package/src/telemetry/types.ts +2 -0
  477. package/src/telemetry/usage-telemetry-reporter.test.ts +21 -0
  478. package/src/telemetry/usage-telemetry-reporter.ts +1 -0
  479. package/src/tools/app-control/skill-proxy-bridge.ts +28 -0
  480. package/src/tools/apps/executors.ts +56 -69
  481. package/src/tools/browser/__tests__/browser-status.test.ts +21 -18
  482. package/src/tools/browser/browser-execution.ts +2 -2
  483. package/src/tools/browser/cdp-client/__tests__/factory.test.ts +55 -4
  484. package/src/tools/browser/cdp-client/cdp-inspect/__tests__/ws-transport.test.ts +12 -6
  485. package/src/tools/browser/cdp-client/factory.ts +23 -24
  486. package/src/tools/browser/cdp-client/index.ts +1 -14
  487. package/src/tools/computer-use/definitions.ts +42 -20
  488. package/src/tools/executor.ts +2 -0
  489. package/src/tools/host-filesystem/edit.ts +26 -0
  490. package/src/tools/host-filesystem/read.ts +26 -0
  491. package/src/tools/host-filesystem/transfer.ts +31 -1
  492. package/src/tools/host-filesystem/write.ts +26 -0
  493. package/src/tools/host-terminal/host-shell.ts +58 -0
  494. package/src/tools/schedule/create.ts +6 -0
  495. package/src/tools/schedule/list.ts +2 -0
  496. package/src/tools/schedule/update.ts +10 -0
  497. package/src/tools/shared/filesystem/file-ops-service.ts +2 -0
  498. package/src/tools/shared/filesystem/path-policy.ts +25 -1
  499. package/src/tools/skills/load.ts +0 -32
  500. package/src/tools/tool-approval-handler.ts +1 -5
  501. package/src/tools/types.ts +4 -0
  502. package/src/usage/pricing.ts +1 -1
  503. package/src/workspace/hatched-date.ts +86 -0
  504. package/src/workspace/migrations/003-seed-device-id.ts +1 -1
  505. package/src/workspace/migrations/006-services-config.ts +8 -5
  506. package/src/workspace/migrations/016-extract-feature-flags-to-protected.ts +3 -9
  507. package/src/workspace/migrations/021-move-signals-to-workspace.ts +4 -10
  508. package/src/workspace/migrations/022-move-hooks-to-workspace.ts +4 -10
  509. package/src/workspace/migrations/023-move-config-files-to-workspace.ts +4 -11
  510. package/src/workspace/migrations/024-move-runtime-files-to-workspace.ts +3 -10
  511. package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +3 -2
  512. package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +2 -1
  513. package/src/workspace/migrations/059-move-pid-to-workspace.ts +3 -8
  514. package/src/workspace/migrations/061-move-backup-key-to-workspace.ts +3 -8
  515. package/src/workspace/migrations/AGENTS.md +1 -1
  516. package/src/workspace/migrations/migrate-to-workspace-volume.ts +4 -10
  517. package/src/workspace/migrations/utils.ts +21 -0
  518. package/src/__tests__/host-browser-e2e-cloud.test.ts +0 -443
  519. package/src/__tests__/host-browser-e2e-self-hosted-capability.test.ts +0 -226
  520. package/src/__tests__/host-browser-ws-events-e2e.test.ts +0 -427
  521. package/src/__tests__/twilio-rest.test.ts +0 -34
  522. package/src/backup/__tests__/backup-key.test.ts +0 -152
  523. package/src/backup/__tests__/backup-worker.test.ts +0 -782
  524. package/src/backup/__tests__/offsite-writer.test.ts +0 -641
  525. package/src/backup/__tests__/stream-crypt.test.ts +0 -228
  526. package/src/backup/backup-key.ts +0 -137
  527. package/src/backup/backup-worker.ts +0 -472
  528. package/src/backup/offsite-writer.ts +0 -222
  529. package/src/backup/stream-crypt.ts +0 -263
  530. package/src/daemon/message-types/pairing.ts +0 -58
  531. package/src/outbound-proxy/config.ts +0 -20
  532. package/src/outbound-proxy/health.ts +0 -18
  533. package/src/outbound-proxy/types.ts +0 -150
  534. package/src/runtime/capability-tokens.ts +0 -190
  535. package/src/signals/mcp-reload.ts +0 -18
package/openapi.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  openapi: 3.0.0
4
4
  info:
5
5
  title: Vellum Assistant API
6
- version: 0.7.1
6
+ version: 0.7.2
7
7
  description: Auto-generated OpenAPI specification for the Vellum Assistant runtime HTTP server.
8
8
  servers:
9
9
  - url: http://127.0.0.1:7821
@@ -3206,6 +3206,68 @@ paths:
3206
3206
  - keepId
3207
3207
  - mergeId
3208
3208
  additionalProperties: false
3209
+ /v1/contacts/prompt:
3210
+ post:
3211
+ operationId: contacts_prompt_post
3212
+ summary: Prompt user to register a contact channel
3213
+ description:
3214
+ Broadcasts a contact_request to connected clients, waits for the user to submit an address via the gateway.
3215
+ The gateway owns the contact write and notifies the daemon via resolve_contact_prompt IPC.
3216
+ tags:
3217
+ - contacts
3218
+ responses:
3219
+ "200":
3220
+ description: Successful response
3221
+ content:
3222
+ application/json:
3223
+ schema:
3224
+ type: object
3225
+ properties:
3226
+ ok:
3227
+ type: boolean
3228
+ error:
3229
+ type: string
3230
+ contactId:
3231
+ type: string
3232
+ channelId:
3233
+ type: string
3234
+ channelType:
3235
+ type: string
3236
+ address:
3237
+ type: string
3238
+ required:
3239
+ - ok
3240
+ additionalProperties: false
3241
+ requestBody:
3242
+ required: true
3243
+ content:
3244
+ application/json:
3245
+ schema:
3246
+ type: object
3247
+ properties:
3248
+ channel:
3249
+ description: Suggested channel type hint (e.g. phone, email, telegram). Free text — not enforced.
3250
+ type: string
3251
+ placeholder:
3252
+ description: Placeholder text for the address input field.
3253
+ type: string
3254
+ label:
3255
+ description: Display label shown in the prompt UI.
3256
+ type: string
3257
+ description:
3258
+ description: Longer description for the prompt UI.
3259
+ type: string
3260
+ role:
3261
+ default: unknown
3262
+ description: Intended role of the contact being registered.
3263
+ type: string
3264
+ enum:
3265
+ - guardian
3266
+ - trusted-contact
3267
+ - unknown
3268
+ required:
3269
+ - role
3270
+ additionalProperties: false
3209
3271
  /v1/contacts/search:
3210
3272
  post:
3211
3273
  operationId: contacts_search_post
@@ -4520,6 +4582,22 @@ paths:
4520
4582
  required: true
4521
4583
  schema:
4522
4584
  type: string
4585
+ /v1/documents/{id}/pdf:
4586
+ get:
4587
+ operationId: documents_by_id_pdf_get
4588
+ summary: Export a document as PDF
4589
+ description: Render a document to PDF and return the binary content.
4590
+ tags:
4591
+ - documents
4592
+ responses:
4593
+ "200":
4594
+ description: Successful response
4595
+ parameters:
4596
+ - name: id
4597
+ in: path
4598
+ required: true
4599
+ schema:
4600
+ type: string
4523
4601
  /v1/events:
4524
4602
  get:
4525
4603
  operationId: events_get
@@ -4647,6 +4725,35 @@ paths:
4647
4725
  - success
4648
4726
  - ran
4649
4727
  additionalProperties: false
4728
+ /v1/gateway/logs/tail:
4729
+ get:
4730
+ operationId: gateway_logs_tail_get
4731
+ summary: Tail gateway log entries
4732
+ description: Return the last N structured log entries from the gateway log files.
4733
+ tags:
4734
+ - gateway-logs
4735
+ responses:
4736
+ "200":
4737
+ description: Successful response
4738
+ parameters:
4739
+ - name: n
4740
+ in: query
4741
+ required: false
4742
+ schema:
4743
+ type: string
4744
+ description: "Number of lines to return (1–1000, default: 10)"
4745
+ - name: level
4746
+ in: query
4747
+ required: false
4748
+ schema:
4749
+ type: string
4750
+ description: "Minimum pino level name (default: info)"
4751
+ - name: module
4752
+ in: query
4753
+ required: false
4754
+ schema:
4755
+ type: string
4756
+ description: Filter to exact pino module name
4650
4757
  /v1/groups:
4651
4758
  get:
4652
4759
  operationId: groups_get
@@ -5175,6 +5282,14 @@ paths:
5175
5282
  anyOf:
5176
5283
  - type: number
5177
5284
  - type: "null"
5285
+ cronExpression:
5286
+ anyOf:
5287
+ - type: string
5288
+ - type: "null"
5289
+ timezone:
5290
+ anyOf:
5291
+ - type: string
5292
+ - type: "null"
5178
5293
  nextRunAt:
5179
5294
  anyOf:
5180
5295
  - type: number
@@ -5190,6 +5305,8 @@ paths:
5190
5305
  - intervalMs
5191
5306
  - activeHoursStart
5192
5307
  - activeHoursEnd
5308
+ - cronExpression
5309
+ - timezone
5193
5310
  - nextRunAt
5194
5311
  - lastRunAt
5195
5312
  - success
@@ -5220,6 +5337,14 @@ paths:
5220
5337
  anyOf:
5221
5338
  - type: number
5222
5339
  - type: "null"
5340
+ cronExpression:
5341
+ anyOf:
5342
+ - type: string
5343
+ - type: "null"
5344
+ timezone:
5345
+ anyOf:
5346
+ - type: string
5347
+ - type: "null"
5223
5348
  nextRunAt:
5224
5349
  anyOf:
5225
5350
  - type: number
@@ -5235,6 +5360,8 @@ paths:
5235
5360
  - intervalMs
5236
5361
  - activeHoursStart
5237
5362
  - activeHoursEnd
5363
+ - cronExpression
5364
+ - timezone
5238
5365
  - nextRunAt
5239
5366
  - lastRunAt
5240
5367
  - success
@@ -5247,22 +5374,31 @@ paths:
5247
5374
  type: object
5248
5375
  properties:
5249
5376
  enabled:
5250
- type: boolean
5251
5377
  description: Enable or disable heartbeat
5378
+ type: boolean
5252
5379
  intervalMs:
5253
- type: number
5254
5380
  description: Heartbeat interval in ms
5255
- activeHoursStart:
5256
5381
  type: number
5382
+ activeHoursStart:
5257
5383
  description: Active hours start (0–23)
5384
+ anyOf:
5385
+ - type: number
5386
+ - type: "null"
5258
5387
  activeHoursEnd:
5259
- type: number
5260
5388
  description: Active hours end (0–23)
5261
- required:
5262
- - enabled
5263
- - intervalMs
5264
- - activeHoursStart
5265
- - activeHoursEnd
5389
+ anyOf:
5390
+ - type: number
5391
+ - type: "null"
5392
+ cronExpression:
5393
+ description: Cron expression for heartbeat timing, or null for fixed interval
5394
+ anyOf:
5395
+ - type: string
5396
+ - type: "null"
5397
+ timezone:
5398
+ description: Timezone for cron evaluation
5399
+ anyOf:
5400
+ - type: string
5401
+ - type: "null"
5266
5402
  additionalProperties: false
5267
5403
  /v1/heartbeat/run-now:
5268
5404
  post:
@@ -5305,7 +5441,53 @@ paths:
5305
5441
  properties:
5306
5442
  runs:
5307
5443
  type: array
5308
- items: {}
5444
+ items:
5445
+ type: object
5446
+ properties:
5447
+ id:
5448
+ type: string
5449
+ scheduledFor:
5450
+ type: number
5451
+ startedAt:
5452
+ anyOf:
5453
+ - type: number
5454
+ - type: "null"
5455
+ finishedAt:
5456
+ anyOf:
5457
+ - type: number
5458
+ - type: "null"
5459
+ durationMs:
5460
+ anyOf:
5461
+ - type: number
5462
+ - type: "null"
5463
+ status:
5464
+ type: string
5465
+ skipReason:
5466
+ anyOf:
5467
+ - type: string
5468
+ - type: "null"
5469
+ error:
5470
+ anyOf:
5471
+ - type: string
5472
+ - type: "null"
5473
+ conversationId:
5474
+ anyOf:
5475
+ - type: string
5476
+ - type: "null"
5477
+ createdAt:
5478
+ type: number
5479
+ required:
5480
+ - id
5481
+ - scheduledFor
5482
+ - startedAt
5483
+ - finishedAt
5484
+ - durationMs
5485
+ - status
5486
+ - skipReason
5487
+ - error
5488
+ - conversationId
5489
+ - createdAt
5490
+ additionalProperties: false
5309
5491
  description: Heartbeat run records
5310
5492
  required:
5311
5493
  - runs
@@ -5811,6 +5993,73 @@ paths:
5811
5993
  additionalProperties: false
5812
5994
  "500":
5813
5995
  description: Failed to compute relationship state
5996
+ /v1/host-app-control-result:
5997
+ post:
5998
+ operationId: hostappcontrolresult_post
5999
+ summary: Submit host app-control result
6000
+ description:
6001
+ Resolve a pending host app-control request by requestId. Returns 200 even when no pending interaction
6002
+ matches (late delivery is tolerated).
6003
+ tags:
6004
+ - host
6005
+ responses:
6006
+ "200":
6007
+ description: Successful response
6008
+ content:
6009
+ application/json:
6010
+ schema:
6011
+ type: object
6012
+ properties:
6013
+ accepted:
6014
+ type: boolean
6015
+ required:
6016
+ - accepted
6017
+ additionalProperties: false
6018
+ requestBody:
6019
+ required: true
6020
+ content:
6021
+ application/json:
6022
+ schema:
6023
+ type: object
6024
+ properties:
6025
+ requestId:
6026
+ type: string
6027
+ description: Pending app-control request ID
6028
+ state:
6029
+ type: string
6030
+ enum:
6031
+ - running
6032
+ - missing
6033
+ - minimized
6034
+ description: Lifecycle state of the targeted application
6035
+ pngBase64:
6036
+ type: string
6037
+ description: Base64 PNG screenshot of the targeted app window
6038
+ windowBounds:
6039
+ type: object
6040
+ properties:
6041
+ x:
6042
+ type: number
6043
+ y:
6044
+ type: number
6045
+ width:
6046
+ type: number
6047
+ height:
6048
+ type: number
6049
+ required:
6050
+ - x
6051
+ - y
6052
+ - width
6053
+ - height
6054
+ additionalProperties: false
6055
+ executionResult:
6056
+ type: string
6057
+ executionError:
6058
+ type: string
6059
+ required:
6060
+ - requestId
6061
+ - state
6062
+ additionalProperties: false
5814
6063
  /v1/host-bash-result:
5815
6064
  post:
5816
6065
  operationId: hostbashresult_post
@@ -5831,6 +6080,14 @@ paths:
5831
6080
  required:
5832
6081
  - accepted
5833
6082
  additionalProperties: false
6083
+ "400":
6084
+ description: x-vellum-client-id header is missing for a targeted host bash request.
6085
+ "403":
6086
+ description: Submitting client does not match the targeted client for this request.
6087
+ "404":
6088
+ description: No pending interaction found for the given requestId.
6089
+ "409":
6090
+ description: Pending interaction exists but is of a different kind (e.g. host_file, host_cu).
5834
6091
  requestBody:
5835
6092
  required: true
5836
6093
  content:
@@ -5852,6 +6109,44 @@ paths:
5852
6109
  required:
5853
6110
  - requestId
5854
6111
  additionalProperties: false
6112
+ /v1/host-browser-event:
6113
+ post:
6114
+ operationId: hostbrowserevent_post
6115
+ summary: Forward a CDP event from the browser extension
6116
+ description: Publishes a chrome.debugger.onEvent firing into the runtime-side browser-session event bus.
6117
+ tags:
6118
+ - host
6119
+ responses:
6120
+ "200":
6121
+ description: Successful response
6122
+ content:
6123
+ application/json:
6124
+ schema:
6125
+ type: object
6126
+ properties:
6127
+ accepted:
6128
+ type: boolean
6129
+ required:
6130
+ - accepted
6131
+ additionalProperties: false
6132
+ requestBody:
6133
+ required: true
6134
+ content:
6135
+ application/json:
6136
+ schema:
6137
+ type: object
6138
+ properties:
6139
+ method:
6140
+ type: string
6141
+ description: CDP event method name
6142
+ params:
6143
+ description: CDP event parameters
6144
+ cdpSessionId:
6145
+ description: CDP session ID (if target-scoped)
6146
+ type: string
6147
+ required:
6148
+ - method
6149
+ additionalProperties: false
5855
6150
  /v1/host-browser-result:
5856
6151
  post:
5857
6152
  operationId: hostbrowserresult_post
@@ -5889,6 +6184,40 @@ paths:
5889
6184
  required:
5890
6185
  - requestId
5891
6186
  additionalProperties: false
6187
+ /v1/host-browser-session-invalidated:
6188
+ post:
6189
+ operationId: hostbrowsersessioninvalidated_post
6190
+ summary: Notify runtime that a CDP session was invalidated
6191
+ description: Marks the target as invalidated in the runtime-side browser session registry.
6192
+ tags:
6193
+ - host
6194
+ responses:
6195
+ "200":
6196
+ description: Successful response
6197
+ content:
6198
+ application/json:
6199
+ schema:
6200
+ type: object
6201
+ properties:
6202
+ accepted:
6203
+ type: boolean
6204
+ required:
6205
+ - accepted
6206
+ additionalProperties: false
6207
+ requestBody:
6208
+ required: true
6209
+ content:
6210
+ application/json:
6211
+ schema:
6212
+ type: object
6213
+ properties:
6214
+ targetId:
6215
+ description: CDP target that was detached
6216
+ type: string
6217
+ reason:
6218
+ description: Detach reason
6219
+ type: string
6220
+ additionalProperties: false
5892
6221
  /v1/host-cu-result:
5893
6222
  post:
5894
6223
  operationId: hostcuresult_post
@@ -5909,6 +6238,14 @@ paths:
5909
6238
  required:
5910
6239
  - accepted
5911
6240
  additionalProperties: false
6241
+ "400":
6242
+ description: x-vellum-client-id header is missing for a targeted host CU request.
6243
+ "403":
6244
+ description: Submitting client does not match the targeted client for this request.
6245
+ "404":
6246
+ description: No pending interaction found for the given requestId, or the conversation/proxy no longer exists.
6247
+ "409":
6248
+ description: Pending interaction exists but is of a different kind (e.g. host_bash, host_file).
5912
6249
  requestBody:
5913
6250
  required: true
5914
6251
  content:
@@ -5967,6 +6304,14 @@ paths:
5967
6304
  required:
5968
6305
  - accepted
5969
6306
  additionalProperties: false
6307
+ "400":
6308
+ description: x-vellum-client-id header is missing for a targeted host file request.
6309
+ "403":
6310
+ description: Submitting client does not match the targeted client for this request.
6311
+ "404":
6312
+ description: No pending interaction found for the given requestId.
6313
+ "409":
6314
+ description: Pending interaction exists but is of a different kind (e.g. host_bash, host_cu).
5970
6315
  requestBody:
5971
6316
  required: true
5972
6317
  content:
@@ -6009,6 +6354,10 @@ paths:
6009
6354
  required:
6010
6355
  - accepted
6011
6356
  additionalProperties: false
6357
+ "400":
6358
+ description: x-vellum-client-id header is missing for a targeted host transfer request.
6359
+ "403":
6360
+ description: Submitting client does not match the targeted client for this transfer.
6012
6361
  requestBody:
6013
6362
  required: true
6014
6363
  content:
@@ -6070,7 +6419,9 @@ paths:
6070
6419
  get:
6071
6420
  operationId: identity_intro_get
6072
6421
  summary: Get identity intro text
6073
- description: Returns the cached identity intro string, preferring SOUL.md over LLM-generated cache.
6422
+ description:
6423
+ Returns a deterministic greeting derived from the assistant name in IDENTITY.md, falling back to
6424
+ LLM-generated cache.
6074
6425
  tags:
6075
6426
  - identity
6076
6427
  responses:
@@ -6355,6 +6706,56 @@ paths:
6355
6706
  required: true
6356
6707
  schema:
6357
6708
  type: string
6709
+ /v1/internal/mcp/auth/start:
6710
+ post:
6711
+ operationId: internal_mcp_auth_start_post
6712
+ summary: Start MCP OAuth flow
6713
+ description: Starts a daemon-owned MCP OAuth flow and returns the authorization URL for the CLI to open in the browser.
6714
+ tags:
6715
+ - internal
6716
+ responses:
6717
+ "200":
6718
+ description: Successful response
6719
+ requestBody:
6720
+ required: true
6721
+ content:
6722
+ application/json:
6723
+ schema:
6724
+ type: object
6725
+ properties:
6726
+ serverId:
6727
+ type: string
6728
+ required:
6729
+ - serverId
6730
+ additionalProperties: false
6731
+ /v1/internal/mcp/auth/status/{serverId}:
6732
+ get:
6733
+ operationId: internal_mcp_auth_status_by_serverId_get
6734
+ summary: Poll MCP OAuth flow status
6735
+ description: Returns the current status of an in-flight MCP OAuth flow (pending/complete/error).
6736
+ tags:
6737
+ - internal
6738
+ responses:
6739
+ "200":
6740
+ description: Successful response
6741
+ "404":
6742
+ description: No active OAuth flow for the given serverId
6743
+ parameters:
6744
+ - name: serverId
6745
+ in: path
6746
+ required: true
6747
+ schema:
6748
+ type: string
6749
+ /v1/internal/mcp/reload:
6750
+ post:
6751
+ operationId: internal_mcp_reload_post
6752
+ summary: Trigger MCP server reload
6753
+ description: Kicks off reloadMcpServers() async on the daemon. Returns immediately.
6754
+ tags:
6755
+ - internal
6756
+ responses:
6757
+ "200":
6758
+ description: Successful response
6358
6759
  /v1/internal/oauth/callback:
6359
6760
  post:
6360
6761
  operationId: internal_oauth_callback_post
@@ -6717,6 +7118,124 @@ paths:
6717
7118
  required:
6718
7119
  - op
6719
7120
  additionalProperties: false
7121
+ /v1/memory/v2/concept-page:
7122
+ post:
7123
+ operationId: memory_v2_conceptpage_post
7124
+ summary: Read a single memory v2 concept page
7125
+ description:
7126
+ Returns the rendered (frontmatter + body) markdown for a slug. 404 when the slug has no on-disk page — the
7127
+ activation log inspector uses this to show what got injected.
7128
+ tags:
7129
+ - memory
7130
+ responses:
7131
+ "200":
7132
+ description: Successful response
7133
+ requestBody:
7134
+ required: true
7135
+ content:
7136
+ application/json:
7137
+ schema:
7138
+ type: object
7139
+ properties:
7140
+ slug:
7141
+ type: string
7142
+ minLength: 1
7143
+ required:
7144
+ - slug
7145
+ additionalProperties: false
7146
+ /v1/memory/v2/explain-similarity:
7147
+ post:
7148
+ operationId: memory_v2_explainsimilarity_post
7149
+ summary: Diagnose dense vs sparse similarity score distributions
7150
+ description:
7151
+ Read-only diagnostic. Embeds the supplied text(s), runs hybrid dense + sparse queries against the
7152
+ concept-page collection, and returns per-slug raw dense, raw sparse, normalized sparse, and fused scores plus
7153
+ per-channel summary stats. Used to investigate score-compression at the head of the activation distribution.
7154
+ tags:
7155
+ - memory
7156
+ responses:
7157
+ "200":
7158
+ description: Successful response
7159
+ requestBody:
7160
+ required: true
7161
+ content:
7162
+ application/json:
7163
+ schema:
7164
+ type: object
7165
+ properties:
7166
+ userText:
7167
+ type: string
7168
+ minLength: 1
7169
+ assistantText:
7170
+ type: string
7171
+ nowText:
7172
+ type: string
7173
+ top:
7174
+ default: 25
7175
+ type: integer
7176
+ minimum: 1
7177
+ maximum: 9007199254740991
7178
+ required:
7179
+ - userText
7180
+ - top
7181
+ additionalProperties: false
7182
+ /v1/memory/v2/fit-anisotropy:
7183
+ post:
7184
+ operationId: memory_v2_fitanisotropy_post
7185
+ summary: Fit the embedding anisotropy correction for memory v2
7186
+ description:
7187
+ Samples stored dense vectors from the concept-page Qdrant collection, fits a corpus mean + top-k principal
7188
+ components (Mu & Viswanath 'all-but-the-top'), and persists the calibration so subsequent embeds and queries
7189
+ apply the correction. Run `assistant memory v2 reembed` after fitting so stored vectors are written under the
7190
+ new calibration — until then, queries (corrected) and stored vectors (uncorrected) live in different spaces.
7191
+ tags:
7192
+ - memory
7193
+ responses:
7194
+ "200":
7195
+ description: Successful response
7196
+ requestBody:
7197
+ required: true
7198
+ content:
7199
+ application/json:
7200
+ schema:
7201
+ type: object
7202
+ properties:
7203
+ k:
7204
+ default: 1
7205
+ type: integer
7206
+ minimum: 1
7207
+ maximum: 16
7208
+ sample:
7209
+ default: 5000
7210
+ type: integer
7211
+ minimum: 1
7212
+ maximum: 100000
7213
+ required:
7214
+ - k
7215
+ - sample
7216
+ additionalProperties: false
7217
+ /v1/memory/v2/rebuild-corpus-stats:
7218
+ post:
7219
+ operationId: memory_v2_rebuildcorpusstats_post
7220
+ summary: Rebuild the BM25 corpus statistics for memory v2
7221
+ description:
7222
+ Walks every concept page on disk, recomputes the document-frequency table and average document length used
7223
+ by the BM25 sparse channel, and atomically swaps the in-memory stats. Run after bulk content imports or to
7224
+ recover from a rebuild that errored at startup. Does not reembed individual page sparse vectors — pair with
7225
+ `assistant memory v2 reembed` when document-side weights need refreshing.
7226
+ tags:
7227
+ - memory
7228
+ responses:
7229
+ "200":
7230
+ description: Successful response
7231
+ requestBody:
7232
+ required: true
7233
+ content:
7234
+ application/json:
7235
+ schema:
7236
+ type: object
7237
+ properties: {}
7238
+ additionalProperties: false
6720
7239
  /v1/memory/v2/reembed-skills:
6721
7240
  post:
6722
7241
  operationId: memory_v2_reembedskills_post
@@ -6874,6 +7393,13 @@ paths:
6874
7393
  properties:
6875
7394
  messageId:
6876
7395
  type: string
7396
+ conversationKind:
7397
+ type: string
7398
+ enum:
7399
+ - user
7400
+ - background
7401
+ - background_memory_consolidation
7402
+ - scheduled
6877
7403
  logs:
6878
7404
  type: array
6879
7405
  items: {}
@@ -6891,6 +7417,7 @@ paths:
6891
7417
  - type: "null"
6892
7418
  required:
6893
7419
  - messageId
7420
+ - conversationKind
6894
7421
  - logs
6895
7422
  - memoryRecall
6896
7423
  - memoryV2Activation
@@ -8243,6 +8770,16 @@ paths:
8243
8770
  required:
8244
8771
  - conversationId
8245
8772
  additionalProperties: false
8773
+ /v1/resolve_contact_prompt:
8774
+ post:
8775
+ operationId: resolve_contact_prompt_post
8776
+ summary: "Gateway callback: resolve a pending contact prompt"
8777
+ description: Called by the gateway after it writes the contact and channel. Unblocks the waiting contacts/prompt IPC call.
8778
+ tags:
8779
+ - contacts
8780
+ responses:
8781
+ "200":
8782
+ description: Successful response
8246
8783
  /v1/schedules:
8247
8784
  get:
8248
8785
  operationId: schedules_get
@@ -8357,6 +8894,12 @@ paths:
8357
8894
  type: boolean
8358
8895
  reuseConversation:
8359
8896
  type: boolean
8897
+ maxRetries:
8898
+ type: number
8899
+ description: Maximum retry attempts
8900
+ retryBackoffMs:
8901
+ type: number
8902
+ description: Retry backoff in milliseconds
8360
8903
  required:
8361
8904
  - name
8362
8905
  - expression
@@ -8367,6 +8910,8 @@ paths:
8367
8910
  - routingIntent
8368
8911
  - quiet
8369
8912
  - reuseConversation
8913
+ - maxRetries
8914
+ - retryBackoffMs
8370
8915
  additionalProperties: false
8371
8916
  /v1/schedules/{id}/cancel:
8372
8917
  post:
@@ -10855,6 +11400,10 @@ paths:
10855
11400
  responses:
10856
11401
  "200":
10857
11402
  description: Successful response
11403
+ "400":
11404
+ description: x-vellum-client-id header is missing for a targeted transfer.
11405
+ "403":
11406
+ description: Submitting client does not match the targeted client for this transfer.
10858
11407
  parameters:
10859
11408
  - name: transferId
10860
11409
  in: path
@@ -10870,6 +11419,10 @@ paths:
10870
11419
  responses:
10871
11420
  "200":
10872
11421
  description: Successful response
11422
+ "400":
11423
+ description: x-vellum-client-id header is missing for a targeted transfer.
11424
+ "403":
11425
+ description: Submitting client does not match the targeted client for this transfer.
10873
11426
  parameters:
10874
11427
  - name: transferId
10875
11428
  in: path