@vellumai/assistant 0.7.1 → 0.7.3

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 (739) hide show
  1. package/ARCHITECTURE.md +48 -50
  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/memory.md +5 -2
  7. package/docs/architecture/security.md +20 -0
  8. package/docs/plugins.md +7 -9
  9. package/knip.json +1 -0
  10. package/node_modules/@vellumai/gateway-client/src/index.ts +1 -0
  11. package/node_modules/@vellumai/gateway-client/src/ipc-client.ts +52 -5
  12. package/node_modules/@vellumai/gateway-client/src/types.ts +11 -0
  13. package/node_modules/@vellumai/service-contracts/package.json +2 -0
  14. package/node_modules/@vellumai/service-contracts/src/__tests__/contracts.test.ts +4 -0
  15. package/node_modules/@vellumai/service-contracts/src/__tests__/ingress.test.ts +107 -0
  16. package/node_modules/@vellumai/service-contracts/src/index.ts +5 -1
  17. package/node_modules/@vellumai/service-contracts/src/ingress.ts +24 -0
  18. package/node_modules/@vellumai/service-contracts/src/twilio-ingress.ts +84 -0
  19. package/node_modules/@vellumai/slack-text/src/index.test.ts +18 -35
  20. package/node_modules/@vellumai/slack-text/src/index.ts +2 -48
  21. package/node_modules/@vellumai/twilio-client/bun.lock +24 -0
  22. package/node_modules/@vellumai/twilio-client/package.json +18 -0
  23. package/node_modules/@vellumai/twilio-client/src/__tests__/twilio-client.test.ts +128 -0
  24. package/node_modules/@vellumai/twilio-client/src/index.ts +179 -0
  25. package/node_modules/@vellumai/twilio-client/tsconfig.json +20 -0
  26. package/openapi.yaml +1020 -40
  27. package/package.json +6 -3
  28. package/src/__tests__/app-builder-tool-scripts.test.ts +3 -3
  29. package/src/__tests__/app-bundler.test.ts +170 -1
  30. package/src/__tests__/app-control-flow.test.ts +384 -0
  31. package/src/__tests__/app-control-no-global-cgevent.test.ts +98 -0
  32. package/src/__tests__/app-control-tool-schemas.test.ts +621 -0
  33. package/src/__tests__/app-executors.test.ts +30 -43
  34. package/src/__tests__/approval-routes-http.test.ts +23 -6
  35. package/src/__tests__/assistant-event-hub-machine-name.test.ts +146 -0
  36. package/src/__tests__/assistant-event-hub-targeted.test.ts +257 -0
  37. package/src/__tests__/assistant-event-hub.test.ts +157 -2
  38. package/src/__tests__/assistant-feature-flags-integration.test.ts +29 -7
  39. package/src/__tests__/auto-analysis-end-to-end.test.ts +62 -1
  40. package/src/__tests__/background-shell-host-bash.test.ts +14 -15
  41. package/src/__tests__/background-workers-disk-pressure.test.ts +268 -0
  42. package/src/__tests__/bootstrap-turn-cleanup.test.ts +44 -0
  43. package/src/__tests__/btw-routes.test.ts +13 -4
  44. package/src/__tests__/call-controller.test.ts +49 -1
  45. package/src/__tests__/call-conversation-messages.test.ts +8 -2
  46. package/src/__tests__/call-domain.test.ts +0 -2
  47. package/src/__tests__/call-routes-http.test.ts +0 -2
  48. package/src/__tests__/channel-inbound-disk-pressure.test.ts +537 -0
  49. package/src/__tests__/channel-readiness-service.test.ts +62 -2
  50. package/src/__tests__/checker.test.ts +3 -4
  51. package/src/__tests__/config-loader-backfill.test.ts +461 -147
  52. package/src/__tests__/config-loader-platform-defaults.test.ts +196 -0
  53. package/src/__tests__/config-schema-cmd.test.ts +0 -1
  54. package/src/__tests__/config-schema.test.ts +1 -0
  55. package/src/__tests__/config-set-platform-guard.test.ts +48 -4
  56. package/src/__tests__/config-watcher-cleanup-throttle.test.ts +20 -11
  57. package/src/__tests__/config-watcher.test.ts +142 -71
  58. package/src/__tests__/context-search-agent-runner.test.ts +61 -3
  59. package/src/__tests__/context-search-conversations-source.test.ts +0 -24
  60. package/src/__tests__/context-search-fanout.test.ts +0 -1
  61. package/src/__tests__/context-search-memory-source.test.ts +3 -7
  62. package/src/__tests__/context-search-memory-v2-source.test.ts +0 -2
  63. package/src/__tests__/context-search-pkb-source.test.ts +0 -1
  64. package/src/__tests__/context-search-workspace-source.test.ts +0 -1
  65. package/src/__tests__/conversation-abort-tool-results.test.ts +6 -0
  66. package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +223 -0
  67. package/src/__tests__/conversation-agent-loop.test.ts +454 -5
  68. package/src/__tests__/conversation-app-control-instantiation.test.ts +392 -0
  69. package/src/__tests__/conversation-app-control-lifecycle.test.ts +237 -0
  70. package/src/__tests__/conversation-error.test.ts +150 -3
  71. package/src/__tests__/conversation-init.benchmark.test.ts +0 -2
  72. package/src/__tests__/conversation-lifecycle.test.ts +36 -0
  73. package/src/__tests__/conversation-process-app-control-preactivation.test.ts +283 -0
  74. package/src/__tests__/conversation-process-callsite.test.ts +43 -0
  75. package/src/__tests__/conversation-provider-retry-repair.test.ts +6 -0
  76. package/src/__tests__/conversation-routes-disk-view.test.ts +6 -0
  77. package/src/__tests__/conversation-routes-guardian-reply.test.ts +120 -72
  78. package/src/__tests__/conversation-routes-slash-commands.test.ts +1 -0
  79. package/src/__tests__/conversation-runtime-assembly.test.ts +65 -0
  80. package/src/__tests__/conversation-slash-commands.test.ts +0 -4
  81. package/src/__tests__/conversation-slash-unknown.test.ts +6 -0
  82. package/src/__tests__/conversation-speed-override.test.ts +0 -3
  83. package/src/__tests__/conversation-store.test.ts +0 -18
  84. package/src/__tests__/conversation-surfaces-action-delivery.test.ts +202 -0
  85. package/src/__tests__/conversation-surfaces-app-control.test.ts +328 -0
  86. package/src/__tests__/conversation-surfaces-data-persist.test.ts +404 -0
  87. package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +2 -5
  88. package/src/__tests__/conversation-workspace-injection.test.ts +6 -0
  89. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +6 -0
  90. package/src/__tests__/credential-execution-feature-gates.test.ts +5 -12
  91. package/src/__tests__/credential-execution-managed-contract.test.ts +3 -131
  92. package/src/__tests__/credentials-cli.test.ts +12 -12
  93. package/src/__tests__/cu-unified-flow.test.ts +351 -23
  94. package/src/__tests__/daemon-credential-client.test.ts +101 -19
  95. package/src/__tests__/date-context.test.ts +164 -2
  96. package/src/__tests__/db-schedule-syntax-migration.test.ts +2 -0
  97. package/src/__tests__/disk-pressure-guard.test.ts +262 -0
  98. package/src/__tests__/disk-pressure-lifecycle.test.ts +168 -0
  99. package/src/__tests__/disk-pressure-policy.test.ts +241 -0
  100. package/src/__tests__/disk-pressure-routes.test.ts +379 -0
  101. package/src/__tests__/disk-pressure-tools.test.ts +277 -0
  102. package/src/__tests__/disk-usage.test.ts +150 -0
  103. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -1
  104. package/src/__tests__/events-client-registration.test.ts +52 -0
  105. package/src/__tests__/events-dev-bypass-actor.test.ts +162 -0
  106. package/src/__tests__/file-write-tool.test.ts +4 -10
  107. package/src/__tests__/filing-service.test.ts +3 -4
  108. package/src/__tests__/gateway-only-enforcement.test.ts +0 -1
  109. package/src/__tests__/guardian-verification-voice-binding.test.ts +0 -2
  110. package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +0 -2
  111. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +0 -1
  112. package/src/__tests__/heartbeat-disk-pressure.test.ts +183 -0
  113. package/src/__tests__/heartbeat-service.test.ts +968 -2
  114. package/src/__tests__/helpers/call-route-handler.ts +7 -1
  115. package/src/__tests__/host-app-control-proxy.test.ts +772 -0
  116. package/src/__tests__/host-app-control-routes.test.ts +263 -0
  117. package/src/__tests__/host-bash-proxy.test.ts +439 -47
  118. package/src/__tests__/host-bash-routes.test.ts +459 -0
  119. package/src/__tests__/host-browser-proxy.test.ts +24 -22
  120. package/src/__tests__/host-browser-routes.test.ts +39 -13
  121. package/src/__tests__/host-cu-proxy.test.ts +248 -52
  122. package/src/__tests__/host-cu-routes-targeted.test.ts +429 -0
  123. package/src/__tests__/host-file-edit-tool.test.ts +47 -1
  124. package/src/__tests__/host-file-proxy-targeted.test.ts +378 -0
  125. package/src/__tests__/host-file-proxy.test.ts +301 -45
  126. package/src/__tests__/host-file-read-tool.test.ts +17 -0
  127. package/src/__tests__/host-file-routes-targeted.test.ts +420 -0
  128. package/src/__tests__/host-file-write-tool.test.ts +42 -1
  129. package/src/__tests__/host-proxy-base.test.ts +312 -0
  130. package/src/__tests__/host-shell-tool.test.ts +22 -4
  131. package/src/__tests__/host-transfer-proxy-targeted.test.ts +932 -0
  132. package/src/__tests__/host-transfer-proxy.test.ts +121 -22
  133. package/src/__tests__/host-transfer-routes-targeted.test.ts +662 -0
  134. package/src/__tests__/http-user-message-parity.test.ts +108 -1
  135. package/src/__tests__/identity-intro-cache.test.ts +29 -0
  136. package/src/__tests__/identity-routes.test.ts +103 -1
  137. package/src/__tests__/init-feature-flag-overrides.test.ts +26 -3
  138. package/src/__tests__/injector-chain.test.ts +18 -6
  139. package/src/__tests__/injector-disk-pressure.test.ts +224 -0
  140. package/src/__tests__/inline-command-runner.test.ts +0 -1
  141. package/src/__tests__/inline-skill-load-permissions.test.ts +5 -11
  142. package/src/__tests__/integration-status.test.ts +85 -5
  143. package/src/__tests__/intent-routing.test.ts +0 -1
  144. package/src/__tests__/jobs-store-qdrant-breaker.test.ts +95 -5
  145. package/src/__tests__/lifecycle-memory-v2-seed.test.ts +17 -0
  146. package/src/__tests__/managed-profile-guard.test.ts +18 -0
  147. package/src/__tests__/managed-skill-lifecycle.test.ts +0 -1
  148. package/src/__tests__/mcp-abort-signal.test.ts +130 -0
  149. package/src/__tests__/mcp-auth-routes.test.ts +197 -0
  150. package/src/__tests__/mcp-cli.test.ts +338 -2
  151. package/src/__tests__/memory-admin-recall.test.ts +3 -11
  152. package/src/__tests__/memory-jobs-worker-lanes.test.ts +188 -0
  153. package/src/__tests__/memory-retrieval-pipeline.test.ts +22 -1
  154. package/src/__tests__/migration-import-commit-http.test.ts +108 -2
  155. package/src/__tests__/mock-gateway-ipc.ts +1 -0
  156. package/src/__tests__/normalize-onboarding.test.ts +180 -0
  157. package/src/__tests__/oauth-cli.test.ts +0 -2
  158. package/src/__tests__/oauth-connect-routes.test.ts +316 -0
  159. package/src/__tests__/oauth-provider-seed-logos.test.ts +24 -2
  160. package/src/__tests__/oauth2-gateway-transport.test.ts +0 -1
  161. package/src/__tests__/onboarding-persona-write.test.ts +308 -0
  162. package/src/__tests__/openai-provider.test.ts +45 -8
  163. package/src/__tests__/persist-onboarding-artifacts.test.ts +44 -64
  164. package/src/__tests__/persistence-secret-redaction.test.ts +299 -0
  165. package/src/__tests__/platform-bash-auto-approve.test.ts +5 -9
  166. package/src/__tests__/platform-callback-registration.test.ts +21 -4
  167. package/src/__tests__/platform.test.ts +2 -1
  168. package/src/__tests__/playbook-execution.test.ts +0 -43
  169. package/src/__tests__/plugin-tool-contribution.test.ts +47 -0
  170. package/src/__tests__/prechat-onboarding-contract.test.ts +214 -25
  171. package/src/__tests__/process-message-background-slack.test.ts +2 -0
  172. package/src/__tests__/provider-commit-message-generator.test.ts +0 -1
  173. package/src/__tests__/provider-tool-name.test.ts +23 -0
  174. package/src/__tests__/public-ingress-urls.test.ts +97 -0
  175. package/src/__tests__/relay-server.test.ts +15 -4
  176. package/src/__tests__/require-fresh-approval.test.ts +0 -1
  177. package/src/__tests__/retry-backoff.test.ts +87 -0
  178. package/src/__tests__/runtime-events-sse.test.ts +2 -2
  179. package/src/__tests__/sanitize-config-for-transfer.test.ts +24 -2
  180. package/src/__tests__/schedule-retry.test.ts +715 -0
  181. package/src/__tests__/scheduler-disk-pressure.test.ts +148 -0
  182. package/src/__tests__/script-proxy-mitm-handler.test.ts +1 -1
  183. package/src/__tests__/secret-ingress-http.test.ts +1 -1
  184. package/src/__tests__/send-endpoint-busy.test.ts +3 -0
  185. package/src/__tests__/shell-tool-proxy-mode.test.ts +0 -1
  186. package/src/__tests__/skill-feature-flags.test.ts +43 -41
  187. package/src/__tests__/skill-load-feature-flag.test.ts +13 -14
  188. package/src/__tests__/skill-load-inline-command.test.ts +0 -51
  189. package/src/__tests__/skill-load-inline-includes.test.ts +0 -43
  190. package/src/__tests__/skill-projection.benchmark.test.ts +0 -1
  191. package/src/__tests__/skill-script-runner-sandbox.test.ts +0 -1
  192. package/src/__tests__/slack-channel-config.test.ts +9 -14
  193. package/src/__tests__/suggestion-routes.test.ts +46 -0
  194. package/src/__tests__/system-prompt-ask-mode.test.ts +0 -1
  195. package/src/__tests__/system-prompt.test.ts +0 -1
  196. package/src/__tests__/telegram-config.test.ts +0 -1
  197. package/src/__tests__/test-preload.ts +8 -0
  198. package/src/__tests__/tool-approval-handler.test.ts +3 -4
  199. package/src/__tests__/tool-audit-listener.test.ts +48 -0
  200. package/src/__tests__/tool-execute-pipeline.test.ts +0 -1
  201. package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -1
  202. package/src/__tests__/tool-executor-lifecycle-events.test.ts +0 -1
  203. package/src/__tests__/tool-executor.test.ts +0 -1
  204. package/src/__tests__/twilio-config.test.ts +3 -16
  205. package/src/__tests__/twilio-routes.test.ts +3 -5
  206. package/src/__tests__/twilio-validation.test.ts +93 -0
  207. package/src/__tests__/vellum-self-knowledge-inline-command.test.ts +1 -4
  208. package/src/__tests__/verification-control-plane-policy.test.ts +2 -4
  209. package/src/__tests__/voice-ingress-preflight.test.ts +19 -0
  210. package/src/__tests__/workspace-migration-006-services-config.test.ts +3 -2
  211. package/src/__tests__/workspace-migration-065-bump-stale-heartbeat-interval.test.ts +122 -0
  212. package/src/__tests__/workspace-migration-066-seed-heartbeat-callsite-cost-default.test.ts +285 -0
  213. package/src/__tests__/workspace-migration-068-release-notes-local-timezone.test.ts +90 -0
  214. package/src/__tests__/workspace-migration-backfill-installation-id.test.ts +1 -5
  215. package/src/__tests__/workspace-migration-down-functions.test.ts +8 -8
  216. package/src/__tests__/workspace-migration-safe-storage-limits-release.test.ts +90 -0
  217. package/src/__tests__/workspace-migration-unify-llm-callsite-configs.test.ts +10 -6
  218. package/src/approvals/guardian-decision-primitive.ts +13 -0
  219. package/src/approvals/guardian-request-resolvers.ts +16 -17
  220. package/src/backup/__tests__/paths.test.ts +0 -22
  221. package/src/backup/__tests__/restore.test.ts +51 -151
  222. package/src/backup/paths.ts +2 -18
  223. package/src/backup/restore.ts +107 -231
  224. package/src/backup/snapshot-lock.ts +2 -27
  225. package/src/bundler/app-bundler.ts +51 -3
  226. package/src/bundler/compiler-tools.ts +3 -2
  227. package/src/calls/call-conversation-messages.ts +46 -10
  228. package/src/calls/relay-server.ts +4 -44
  229. package/src/calls/twilio-config.ts +2 -17
  230. package/src/calls/twilio-rest.ts +33 -105
  231. package/src/calls/twilio-routes.ts +11 -12
  232. package/src/channels/types.ts +8 -7
  233. package/src/cli/commands/__tests__/backup.test.ts +6 -277
  234. package/src/cli/commands/__tests__/gateway.test.ts +288 -0
  235. package/src/cli/commands/__tests__/memory-v2.test.ts +4 -0
  236. package/src/cli/commands/__tests__/webhooks.test.ts +0 -5
  237. package/src/cli/commands/backup.ts +6 -331
  238. package/src/cli/commands/bash.ts +35 -108
  239. package/src/cli/commands/clients.ts +36 -37
  240. package/src/cli/commands/contacts.ts +137 -25
  241. package/src/cli/commands/conversations.ts +2 -5
  242. package/src/cli/commands/credentials.ts +71 -7
  243. package/src/cli/commands/domain.ts +66 -15
  244. package/src/cli/commands/gateway.ts +183 -0
  245. package/src/cli/commands/keys.ts +9 -6
  246. package/src/cli/commands/mcp.ts +116 -156
  247. package/src/cli/commands/memory-v2.ts +303 -7
  248. package/src/cli/commands/oauth/__tests__/connect.test.ts +437 -1
  249. package/src/cli/commands/oauth/connect.ts +127 -1
  250. package/src/cli/commands/platform/__tests__/callback-routes-list.test.ts +0 -4
  251. package/src/cli/commands/platform/__tests__/connect.test.ts +7 -3
  252. package/src/cli/commands/platform/__tests__/disconnect.test.ts +7 -3
  253. package/src/cli/commands/platform/__tests__/status.test.ts +116 -21
  254. package/src/cli/commands/platform/disconnect.ts +5 -4
  255. package/src/cli/commands/platform/index.ts +16 -25
  256. package/src/cli/commands/status.ts +57 -0
  257. package/src/cli/lib/daemon-credential-client.ts +110 -28
  258. package/src/cli/program.ts +6 -2
  259. package/src/config/assistant-feature-flags.ts +79 -12
  260. package/src/config/bundled-skills/acp/SKILL.md +6 -0
  261. package/src/config/bundled-skills/acp/TOOLS.json +1 -22
  262. package/src/config/bundled-skills/app-builder/SKILL.md +14 -109
  263. package/src/config/bundled-skills/app-builder/TOOLS.json +1 -28
  264. package/src/config/bundled-skills/app-builder/tools/app-create.ts +1 -10
  265. package/src/config/bundled-skills/app-control/SKILL.md +75 -0
  266. package/src/config/bundled-skills/app-control/TOOLS.json +299 -0
  267. package/src/config/bundled-skills/app-control/tools/app-control-click.ts +12 -0
  268. package/src/config/bundled-skills/app-control/tools/app-control-combo.ts +12 -0
  269. package/src/config/bundled-skills/app-control/tools/app-control-drag.ts +12 -0
  270. package/src/config/bundled-skills/app-control/tools/app-control-observe.ts +12 -0
  271. package/src/config/bundled-skills/app-control/tools/app-control-press.ts +12 -0
  272. package/src/config/bundled-skills/app-control/tools/app-control-sequence.ts +12 -0
  273. package/src/config/bundled-skills/app-control/tools/app-control-start.ts +12 -0
  274. package/src/config/bundled-skills/app-control/tools/app-control-stop.ts +12 -0
  275. package/src/config/bundled-skills/app-control/tools/app-control-type.ts +12 -0
  276. package/src/config/bundled-skills/computer-use/SKILL.md +6 -0
  277. package/src/config/bundled-skills/computer-use/TOOLS.json +67 -43
  278. package/src/config/bundled-skills/contacts/TOOLS.json +0 -16
  279. package/src/config/bundled-skills/document/TOOLS.json +0 -8
  280. package/src/config/bundled-skills/followups/TOOLS.json +0 -12
  281. package/src/config/bundled-skills/image-studio/SKILL.md +4 -0
  282. package/src/config/bundled-skills/image-studio/TOOLS.json +0 -4
  283. package/src/config/bundled-skills/media-processing/TOOLS.json +0 -24
  284. package/src/config/bundled-skills/messaging/TOOLS.json +0 -40
  285. package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +4 -3
  286. package/src/config/bundled-skills/phone-calls/TOOLS.json +0 -12
  287. package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +25 -4
  288. package/src/config/bundled-skills/playbooks/TOOLS.json +0 -16
  289. package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +2 -2
  290. package/src/config/bundled-skills/playbooks/tools/playbook-delete.ts +2 -2
  291. package/src/config/bundled-skills/playbooks/tools/playbook-list.ts +2 -2
  292. package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +2 -2
  293. package/src/config/bundled-skills/schedule/TOOLS.json +14 -14
  294. package/src/config/bundled-skills/sequences/TOOLS.json +0 -36
  295. package/src/config/bundled-skills/settings/SKILL.md +4 -0
  296. package/src/config/bundled-skills/settings/TOOLS.json +0 -12
  297. package/src/config/bundled-skills/skill-management/SKILL.md +6 -0
  298. package/src/config/bundled-skills/skill-management/TOOLS.json +0 -8
  299. package/src/config/bundled-skills/subagent/SKILL.md +6 -2
  300. package/src/config/bundled-skills/subagent/TOOLS.json +0 -20
  301. package/src/config/bundled-skills/transcribe/SKILL.md +4 -0
  302. package/src/config/bundled-skills/transcribe/TOOLS.json +0 -4
  303. package/src/config/bundled-tool-registry.ts +21 -0
  304. package/src/config/env-registry.ts +0 -2
  305. package/src/config/env.ts +19 -20
  306. package/src/config/feature-flag-registry.json +47 -135
  307. package/src/config/loader.ts +197 -104
  308. package/src/config/sanitize-for-transfer.ts +2 -0
  309. package/src/config/schemas/__tests__/memory-lifecycle.test.ts +80 -0
  310. package/src/config/schemas/__tests__/memory-v2.test.ts +17 -9
  311. package/src/config/schemas/call-site-catalog.ts +14 -0
  312. package/src/config/schemas/calls.ts +0 -9
  313. package/src/config/schemas/channels.ts +0 -5
  314. package/src/config/schemas/heartbeat.ts +64 -1
  315. package/src/config/schemas/ingress.ts +10 -6
  316. package/src/config/schemas/llm.ts +7 -10
  317. package/src/config/schemas/memory-lifecycle.ts +90 -24
  318. package/src/config/schemas/memory-v2.ts +121 -13
  319. package/src/config/schemas/platform.ts +49 -3
  320. package/src/config/schemas/services.ts +29 -15
  321. package/src/config/schemas/skills.ts +0 -6
  322. package/src/config/seed-inference-profiles.ts +230 -33
  323. package/src/contacts/contact-store.ts +0 -55
  324. package/src/contacts/contacts-write.ts +0 -27
  325. package/src/context/window-manager.ts +1 -2
  326. package/src/credential-execution/feature-gates.ts +10 -10
  327. package/src/credential-execution/process-manager.ts +12 -41
  328. package/src/daemon/__tests__/conversation-tool-setup.test.ts +187 -5
  329. package/src/daemon/assistant-attachments.ts +4 -4
  330. package/src/daemon/bootstrap-turn-cleanup.ts +45 -0
  331. package/src/daemon/config-watcher.ts +89 -60
  332. package/src/daemon/conversation-agent-loop-handlers.ts +27 -3
  333. package/src/daemon/conversation-agent-loop.ts +202 -61
  334. package/src/daemon/conversation-error.ts +87 -15
  335. package/src/daemon/conversation-lifecycle.ts +9 -4
  336. package/src/daemon/conversation-process.ts +24 -11
  337. package/src/daemon/conversation-runtime-assembly.ts +28 -2
  338. package/src/daemon/conversation-store.ts +2 -2
  339. package/src/daemon/conversation-surfaces.ts +305 -4
  340. package/src/daemon/conversation-tool-setup.ts +66 -62
  341. package/src/daemon/conversation.ts +38 -24
  342. package/src/daemon/date-context.ts +71 -22
  343. package/src/daemon/disk-pressure-background-gate.ts +73 -0
  344. package/src/daemon/disk-pressure-guard.ts +343 -0
  345. package/src/daemon/disk-pressure-policy.ts +163 -0
  346. package/src/daemon/doordash-steps.ts +1 -1
  347. package/src/daemon/handlers/shared.ts +4 -2
  348. package/src/daemon/handlers/skills.ts +3 -4
  349. package/src/daemon/host-app-control-proxy.ts +389 -0
  350. package/src/daemon/host-bash-proxy.ts +117 -82
  351. package/src/daemon/host-browser-proxy.ts +67 -82
  352. package/src/daemon/host-cu-proxy.ts +127 -86
  353. package/src/daemon/host-file-proxy.ts +129 -69
  354. package/src/daemon/host-proxy-base.ts +294 -0
  355. package/src/daemon/host-proxy-preactivation.ts +82 -0
  356. package/src/daemon/host-transfer-proxy.ts +338 -129
  357. package/src/daemon/lifecycle.ts +194 -145
  358. package/src/daemon/meet-host-supervisor.ts +4 -4
  359. package/src/daemon/meet-manifest-loader.ts +0 -1
  360. package/src/daemon/memory-v2-startup.ts +14 -4
  361. package/src/daemon/message-protocol.ts +6 -8
  362. package/src/daemon/message-types/contacts.ts +23 -1
  363. package/src/daemon/message-types/conversations.ts +15 -8
  364. package/src/daemon/message-types/disk-pressure.ts +9 -0
  365. package/src/daemon/message-types/host-app-control.ts +150 -0
  366. package/src/daemon/message-types/host-bash.ts +4 -0
  367. package/src/daemon/message-types/host-cu.ts +2 -0
  368. package/src/daemon/message-types/host-file.ts +4 -0
  369. package/src/daemon/message-types/host-transfer.ts +3 -0
  370. package/src/daemon/message-types/messages.ts +3 -0
  371. package/src/daemon/message-types/schedules.ts +8 -3
  372. package/src/daemon/message-types/skills.ts +2 -2
  373. package/src/daemon/process-message.ts +18 -1
  374. package/src/daemon/profiler-run-store.ts +5 -5
  375. package/src/daemon/shutdown-handlers.ts +0 -3
  376. package/src/daemon/tool-setup-types.ts +51 -0
  377. package/src/daemon/tool-side-effects.ts +1 -1
  378. package/src/documents/document-store.ts +85 -0
  379. package/src/events/tool-audit-listener.ts +2 -1
  380. package/src/filing/filing-service.ts +30 -5
  381. package/src/heartbeat/__tests__/heartbeat-feed-event.test.ts +24 -23
  382. package/src/heartbeat/__tests__/heartbeat-run-store.test.ts +252 -0
  383. package/src/heartbeat/heartbeat-run-store.ts +249 -0
  384. package/src/heartbeat/heartbeat-service.ts +459 -54
  385. package/src/home/__tests__/post-connect-feed.test.ts +99 -0
  386. package/src/home/__tests__/relationship-state-writer.test.ts +11 -9
  387. package/src/home/__tests__/suggested-prompts.test.ts +89 -0
  388. package/src/home/feed-scheduler.ts +18 -0
  389. package/src/home/post-connect-feed.ts +68 -0
  390. package/src/home/relationship-state-writer.ts +17 -92
  391. package/src/home/suggested-prompts.ts +46 -10
  392. package/src/inbound/platform-callback-registration.ts +8 -15
  393. package/src/inbound/public-ingress-urls.ts +32 -34
  394. package/src/ipc/__tests__/clients-list-ipc.test.ts +169 -0
  395. package/src/ipc/__tests__/route-error-envelope.test.ts +80 -0
  396. package/src/ipc/assistant-server.ts +70 -3
  397. package/src/ipc/cli-client.ts +32 -1
  398. package/src/ipc/gateway-client.ts +37 -3
  399. package/src/live-voice/live-voice-archive.ts +4 -4
  400. package/src/live-voice/live-voice-metrics.ts +10 -10
  401. package/src/live-voice/protocol.ts +5 -7
  402. package/src/mcp/__tests__/mcp-auth-orchestrator.test.ts +304 -0
  403. package/src/mcp/mcp-auth-orchestrator.ts +213 -0
  404. package/src/mcp/mcp-auth-state.ts +133 -0
  405. package/src/mcp/mcp-oauth-provider.ts +19 -0
  406. package/src/media/image-service.ts +1 -7
  407. package/src/memory/__tests__/fixtures/memory-v2-activation-fixtures.ts +21 -13
  408. package/src/memory/__tests__/jobs-store-job-classes.test.ts +24 -0
  409. package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +52 -22
  410. package/src/memory/__tests__/memory-v2-activation-log-store.test.ts +0 -6
  411. package/src/memory/__tests__/memory-v2-concept-frequency.test.ts +272 -0
  412. package/src/memory/__tests__/qdrant-client-sentinel.test.ts +49 -0
  413. package/src/memory/__tests__/sparse-tokenize.test.ts +66 -0
  414. package/src/memory/admin.ts +5 -9
  415. package/src/memory/anisotropy.test.ts +247 -0
  416. package/src/memory/anisotropy.ts +443 -0
  417. package/src/memory/auto-analysis-constants.ts +17 -0
  418. package/src/memory/auto-analysis-guard.ts +5 -15
  419. package/src/memory/canonical-guardian-store.ts +7 -7
  420. package/src/memory/context-search/__tests__/agent-runner-redaction.test.ts +122 -0
  421. package/src/memory/context-search/agent-protocol.ts +6 -6
  422. package/src/memory/context-search/agent-runner.ts +51 -9
  423. package/src/memory/context-search/sources/conversations.ts +2 -11
  424. package/src/memory/context-search/sources/memory-v2.ts +22 -9
  425. package/src/memory/context-search/sources/memory.ts +0 -1
  426. package/src/memory/context-search/types.ts +0 -1
  427. package/src/memory/conversation-crud.ts +5 -13
  428. package/src/memory/conversation-key-store.ts +2 -15
  429. package/src/memory/db-init.ts +6 -0
  430. package/src/memory/embedding-backend.ts +9 -21
  431. package/src/memory/embedding-runtime-manager.ts +119 -5
  432. package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +81 -25
  433. package/src/memory/graph/conversation-graph-memory.ts +43 -78
  434. package/src/memory/graph/extraction.ts +1 -3
  435. package/src/memory/graph/graph-search.test.ts +10 -67
  436. package/src/memory/graph/graph-search.ts +9 -20
  437. package/src/memory/graph/retriever.test.ts +6 -0
  438. package/src/memory/graph/retriever.ts +34 -10
  439. package/src/memory/graph/tools.ts +1 -1
  440. package/src/memory/indexer.ts +54 -45
  441. package/src/memory/job-handlers/backfill.ts +2 -11
  442. package/src/memory/job-handlers/cleanup.ts +43 -0
  443. package/src/memory/job-handlers/embedding.ts +6 -8
  444. package/src/memory/job-handlers/summarization.ts +2 -7
  445. package/src/memory/jobs/__tests__/embed-concept-page.test.ts +8 -2
  446. package/src/memory/jobs/embed-concept-page.ts +28 -2
  447. package/src/memory/jobs/embed-pkb-file.test.ts +2 -2
  448. package/src/memory/jobs-store.ts +114 -22
  449. package/src/memory/jobs-worker.ts +193 -106
  450. package/src/memory/memory-v2-activation-log-store.ts +33 -15
  451. package/src/memory/memory-v2-concept-frequency.ts +169 -0
  452. package/src/memory/migrations/237-heartbeat-runs.ts +45 -0
  453. package/src/memory/migrations/238-schedule-retry-policy.ts +20 -0
  454. package/src/memory/migrations/239-trace-events-created-at-index.ts +18 -0
  455. package/src/memory/migrations/index.ts +6 -0
  456. package/src/memory/migrations/registry.ts +8 -0
  457. package/src/memory/pkb/pkb-search.test.ts +6 -0
  458. package/src/memory/pkb/pkb-search.ts +7 -0
  459. package/src/memory/qdrant-client.ts +49 -32
  460. package/src/memory/rerank-local.ts +374 -0
  461. package/src/memory/schema/infrastructure.ts +15 -0
  462. package/src/memory/search/semantic.ts +13 -67
  463. package/src/memory/sparse-tokenize.ts +49 -0
  464. package/src/memory/trace-event-store.ts +1 -17
  465. package/src/memory/v2/__tests__/activation.test.ts +387 -344
  466. package/src/memory/v2/__tests__/consolidation-job.test.ts +40 -8
  467. package/src/memory/v2/__tests__/injection.test.ts +181 -169
  468. package/src/memory/v2/__tests__/prompts-consolidation.test.ts +61 -2
  469. package/src/memory/v2/__tests__/qdrant.test.ts +16 -0
  470. package/src/memory/v2/__tests__/reranker.test.ts +338 -0
  471. package/src/memory/v2/__tests__/sim.test.ts +154 -188
  472. package/src/memory/v2/__tests__/skill-store.test.ts +71 -65
  473. package/src/memory/v2/__tests__/sparse-bm25.test.ts +292 -0
  474. package/src/memory/v2/__tests__/static-context.test.ts +76 -2
  475. package/src/memory/v2/activation.ts +213 -239
  476. package/src/memory/v2/consolidation-job.ts +65 -17
  477. package/src/memory/v2/constants.ts +7 -0
  478. package/src/memory/v2/injection.ts +123 -103
  479. package/src/memory/v2/prompts/consolidation.ts +348 -92
  480. package/src/memory/v2/qdrant.ts +198 -1
  481. package/src/memory/v2/reranker.ts +177 -0
  482. package/src/memory/v2/sim.ts +113 -77
  483. package/src/memory/v2/skill-content.ts +4 -3
  484. package/src/memory/v2/skill-store.ts +91 -53
  485. package/src/memory/v2/sparse-bm25.ts +245 -0
  486. package/src/memory/v2/static-context.ts +28 -5
  487. package/src/memory/v2/types.ts +10 -10
  488. package/src/messaging/providers/gmail/types.ts +0 -49
  489. package/src/messaging/providers/slack/adapter.ts +1 -31
  490. package/src/messaging/providers/slack/types.ts +0 -32
  491. package/src/notifications/README.md +10 -10
  492. package/src/notifications/broadcaster.ts +1 -1
  493. package/src/notifications/copy-composer.ts +13 -0
  494. package/src/notifications/guardian-question-mode.ts +5 -5
  495. package/src/notifications/signal.ts +4 -0
  496. package/src/oauth/AGENTS.md +3 -1
  497. package/src/oauth/__tests__/oauth-connect-state.test.ts +137 -0
  498. package/src/oauth/connect-orchestrator.ts +6 -0
  499. package/src/oauth/connection-resolver.test.ts +66 -1
  500. package/src/oauth/connection-resolver.ts +55 -1
  501. package/src/oauth/credential-token-resolver.ts +1 -3
  502. package/src/oauth/manual-token-connection.ts +0 -4
  503. package/src/oauth/oauth-connect-state.ts +77 -0
  504. package/src/oauth/seed-providers.ts +58 -1
  505. package/src/outbound-proxy/index.ts +1 -37
  506. package/src/outbound-proxy/logging.ts +1 -1
  507. package/src/outbound-proxy/policy.ts +6 -5
  508. package/src/outbound-proxy/router.ts +2 -1
  509. package/src/permissions/approval-policy.test.ts +6 -275
  510. package/src/permissions/approval-policy.ts +0 -51
  511. package/src/permissions/checker.test.ts +0 -1
  512. package/src/permissions/checker.ts +3 -17
  513. package/src/permissions/gateway-threshold-reader.ts +2 -0
  514. package/src/permissions/prompter.ts +34 -1
  515. package/src/permissions/secret-prompter.ts +6 -2
  516. package/src/plugins/defaults/injectors.ts +35 -2
  517. package/src/plugins/defaults/memory-retrieval.ts +5 -6
  518. package/src/plugins/types.ts +7 -0
  519. package/src/proactive-artifact/aux-message-injector.ts +74 -0
  520. package/src/proactive-artifact/decision.test.ts +226 -0
  521. package/src/proactive-artifact/decision.ts +165 -0
  522. package/src/proactive-artifact/index.ts +7 -0
  523. package/src/proactive-artifact/job.test.ts +867 -0
  524. package/src/proactive-artifact/job.ts +352 -0
  525. package/src/proactive-artifact/message-copy.ts +41 -0
  526. package/src/proactive-artifact/trigger-state.test.ts +277 -0
  527. package/src/proactive-artifact/trigger-state.ts +119 -0
  528. package/src/prompts/bootstrap-cleanup.ts +27 -0
  529. package/src/prompts/normalize-onboarding.ts +80 -0
  530. package/src/prompts/persona-resolver.ts +101 -9
  531. package/src/prompts/system-prompt.ts +23 -24
  532. package/src/prompts/templates/BOOTSTRAP.md +13 -5
  533. package/src/prompts/templates/SOUL.md +13 -1
  534. package/src/providers/__tests__/retry-callsite.test.ts +222 -1
  535. package/src/providers/model-intents.ts +7 -0
  536. package/src/providers/openrouter/client.ts +8 -0
  537. package/src/providers/retry.ts +50 -0
  538. package/src/providers/speech-to-text/provider-catalog.ts +7 -8
  539. package/src/providers/types.ts +1 -0
  540. package/src/runtime/__tests__/agent-wake.test.ts +456 -3
  541. package/src/runtime/agent-wake.ts +238 -100
  542. package/src/runtime/assistant-event-hub.ts +151 -99
  543. package/src/runtime/auth/__tests__/middleware.test.ts +11 -56
  544. package/src/runtime/auth/__tests__/route-policy.test.ts +64 -0
  545. package/src/runtime/auth/middleware.ts +0 -96
  546. package/src/runtime/auth/route-policy.ts +32 -0
  547. package/src/runtime/auth/same-actor.ts +216 -0
  548. package/src/runtime/btw-sidechain.ts +2 -3
  549. package/src/runtime/channel-invite-transport.ts +2 -48
  550. package/src/runtime/channel-invite-transports/email.ts +1 -1
  551. package/src/runtime/channel-invite-transports/slack.ts +1 -1
  552. package/src/runtime/channel-invite-transports/telegram.ts +1 -1
  553. package/src/runtime/channel-invite-transports/voice.ts +1 -1
  554. package/src/runtime/channel-invite-transports/whatsapp.ts +1 -1
  555. package/src/runtime/channel-invite-types.ts +54 -0
  556. package/src/runtime/channel-readiness-service.ts +32 -13
  557. package/src/runtime/channel-retry-sweep.ts +65 -1
  558. package/src/runtime/guardian-reply-router.ts +10 -0
  559. package/src/runtime/http-server.ts +3 -329
  560. package/src/runtime/http-types.ts +0 -5
  561. package/src/runtime/local-actor-identity.ts +52 -11
  562. package/src/runtime/migrations/__tests__/vbundle-import-parity.test.ts +413 -0
  563. package/src/runtime/migrations/__tests__/vbundle-import-policy.test.ts +260 -0
  564. package/src/runtime/migrations/__tests__/vbundle-import-version-compat.test.ts +189 -0
  565. package/src/runtime/migrations/__tests__/vbundle-streaming-importer.test.ts +153 -1
  566. package/src/runtime/migrations/__tests__/vbundle-symlink-importer.test.ts +451 -0
  567. package/src/runtime/migrations/__tests__/vbundle-symlink-streaming-importer.test.ts +0 -0
  568. package/src/runtime/migrations/__tests__/vbundle-symlink-streaming.test.ts +515 -0
  569. package/src/runtime/migrations/__tests__/vbundle-symlink-tar.test.ts +437 -0
  570. package/src/runtime/migrations/__tests__/vbundle-symlink-walker.test.ts +319 -0
  571. package/src/runtime/migrations/__tests__/vbundle-validator-v1-schema.test.ts +51 -1
  572. package/src/runtime/migrations/migration-transport.ts +7 -7
  573. package/src/runtime/migrations/vbundle-builder.ts +327 -60
  574. package/src/runtime/migrations/vbundle-import-analyzer.ts +4 -4
  575. package/src/runtime/migrations/vbundle-import-policy.ts +172 -0
  576. package/src/runtime/migrations/vbundle-importer.ts +245 -68
  577. package/src/runtime/migrations/vbundle-streaming-importer.ts +326 -35
  578. package/src/runtime/migrations/vbundle-streaming-validator.ts +157 -4
  579. package/src/runtime/migrations/vbundle-tar-stream.ts +15 -6
  580. package/src/runtime/migrations/vbundle-validator.ts +114 -0
  581. package/src/runtime/pending-interactions.ts +43 -9
  582. package/src/runtime/routes/__tests__/backup-routes.test.ts +22 -150
  583. package/src/runtime/routes/__tests__/client-routes.test.ts +155 -0
  584. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +98 -5
  585. package/src/runtime/routes/__tests__/gateway-log-routes.test.ts +242 -0
  586. package/src/runtime/routes/__tests__/heartbeat-routes.test.ts +112 -0
  587. package/src/runtime/routes/approval-interception-types.ts +13 -0
  588. package/src/runtime/routes/approval-strategies/guardian-text-engine-strategy.ts +1 -1
  589. package/src/runtime/routes/backup-routes.ts +15 -38
  590. package/src/runtime/routes/btw-routes.ts +14 -37
  591. package/src/runtime/routes/client-routes.ts +21 -2
  592. package/src/runtime/routes/contact-prompt-routes.ts +183 -0
  593. package/src/runtime/routes/contact-routes.ts +0 -25
  594. package/src/runtime/routes/conversation-query-routes.ts +36 -1
  595. package/src/runtime/routes/conversation-routes.ts +65 -39
  596. package/src/runtime/routes/debug-bash-routes.ts +163 -0
  597. package/src/runtime/routes/disk-pressure-routes.ts +121 -0
  598. package/src/runtime/routes/document-pdf-renderer.ts +169 -0
  599. package/src/runtime/routes/documents-routes.ts +32 -75
  600. package/src/runtime/routes/errors.ts +19 -4
  601. package/src/runtime/routes/events-routes.ts +38 -0
  602. package/src/runtime/routes/gateway-log-routes.ts +79 -0
  603. package/src/runtime/routes/guardian-approval-interception.ts +2 -8
  604. package/src/runtime/routes/heartbeat-routes.ts +103 -38
  605. package/src/runtime/routes/host-app-control-routes.ts +134 -0
  606. package/src/runtime/routes/host-bash-routes.ts +56 -6
  607. package/src/runtime/routes/host-browser-routes.ts +108 -13
  608. package/src/runtime/routes/host-cu-routes.ts +66 -9
  609. package/src/runtime/routes/host-file-routes.ts +54 -5
  610. package/src/runtime/routes/host-transfer-routes.ts +122 -19
  611. package/src/runtime/routes/http-adapter.ts +1 -0
  612. package/src/runtime/routes/identity-intro-cache.ts +30 -0
  613. package/src/runtime/routes/identity-routes.ts +21 -180
  614. package/src/runtime/routes/inbound-message-handler.ts +78 -21
  615. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +0 -7
  616. package/src/runtime/routes/inbound-stages/edit-intercept.ts +0 -8
  617. package/src/runtime/routes/inbound-stages/guardian-reply-intercept.ts +3 -0
  618. package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +0 -20
  619. package/src/runtime/routes/inbound-stages/transcribe-audio.ts +5 -13
  620. package/src/runtime/routes/index.ts +14 -0
  621. package/src/runtime/routes/mcp-auth-routes.ts +132 -0
  622. package/src/runtime/routes/memory-item-routes.test.ts +41 -15
  623. package/src/runtime/routes/memory-item-routes.ts +10 -12
  624. package/src/runtime/routes/memory-v2-routes.ts +474 -1
  625. package/src/runtime/routes/migration-routes.ts +96 -0
  626. package/src/runtime/routes/oauth-connect-routes.ts +153 -0
  627. package/src/runtime/routes/schedule-routes.ts +7 -0
  628. package/src/runtime/verification-outbound-actions.ts +4 -4
  629. package/src/runtime/verification-templates.ts +4 -7
  630. package/src/schedule/integration-status.ts +66 -2
  631. package/src/schedule/recurrence-engine.ts +4 -1
  632. package/src/schedule/retry-backoff.ts +18 -0
  633. package/src/schedule/retry-policy.ts +82 -0
  634. package/src/schedule/run-script.ts +37 -5
  635. package/src/schedule/schedule-recovery.ts +64 -0
  636. package/src/schedule/schedule-store.ts +106 -2
  637. package/src/schedule/scheduler-types.ts +25 -0
  638. package/src/schedule/scheduler.ts +83 -39
  639. package/src/security/encrypted-store.ts +2 -0
  640. package/src/security/oauth-callback-registry.ts +8 -0
  641. package/src/security/secure-keys.ts +55 -0
  642. package/src/sequence/analytics.ts +5 -5
  643. package/src/sequence/engine.ts +1 -1
  644. package/src/skills/catalog-files.ts +2 -8
  645. package/src/skills/include-graph.ts +5 -5
  646. package/src/skills/remote-skill-policy.ts +10 -16
  647. package/src/skills/skill-file-provider.ts +1 -1
  648. package/src/skills/skill-file-types.ts +13 -0
  649. package/src/skills/skillssh-audit-types.ts +28 -0
  650. package/src/skills/skillssh-registry.ts +8 -21
  651. package/src/subagent/index.ts +1 -7
  652. package/src/subagent/manager.ts +1 -15
  653. package/src/tasks/task-runner.ts +0 -1
  654. package/src/tasks/task-store.ts +0 -3
  655. package/src/telemetry/types.ts +2 -0
  656. package/src/telemetry/usage-telemetry-reporter.test.ts +21 -0
  657. package/src/telemetry/usage-telemetry-reporter.ts +1 -0
  658. package/src/tools/app-control/skill-proxy-bridge.ts +28 -0
  659. package/src/tools/apps/executors.ts +56 -69
  660. package/src/tools/background-tool-registry.ts +17 -3
  661. package/src/tools/browser/__tests__/browser-status.test.ts +21 -18
  662. package/src/tools/browser/browser-execution.ts +2 -2
  663. package/src/tools/browser/cdp-client/__tests__/factory.test.ts +55 -4
  664. package/src/tools/browser/cdp-client/cdp-inspect/__tests__/ws-transport.test.ts +12 -6
  665. package/src/tools/browser/cdp-client/factory.ts +23 -24
  666. package/src/tools/browser/cdp-client/index.ts +1 -14
  667. package/src/tools/computer-use/definitions.ts +42 -20
  668. package/src/tools/executor.ts +2 -0
  669. package/src/tools/host-filesystem/edit.test.ts +151 -0
  670. package/src/tools/host-filesystem/edit.ts +68 -0
  671. package/src/tools/host-filesystem/read.test.ts +129 -0
  672. package/src/tools/host-filesystem/read.ts +68 -0
  673. package/src/tools/host-filesystem/transfer.test.ts +127 -2
  674. package/src/tools/host-filesystem/transfer.ts +78 -3
  675. package/src/tools/host-filesystem/write.test.ts +134 -0
  676. package/src/tools/host-filesystem/write.ts +68 -0
  677. package/src/tools/host-terminal/host-shell.ts +66 -1
  678. package/src/tools/mcp/mcp-tool-factory.ts +2 -1
  679. package/src/tools/memory/register.test.ts +12 -9
  680. package/src/tools/memory/register.ts +1 -2
  681. package/src/tools/provider-tool-name.ts +28 -0
  682. package/src/tools/registry.ts +30 -9
  683. package/src/tools/schedule/create.ts +6 -0
  684. package/src/tools/schedule/list.ts +2 -0
  685. package/src/tools/schedule/update.ts +10 -0
  686. package/src/tools/shared/filesystem/file-ops-service.ts +2 -0
  687. package/src/tools/shared/filesystem/path-policy.ts +25 -1
  688. package/src/tools/skills/load.ts +0 -32
  689. package/src/tools/terminal/shell.ts +9 -1
  690. package/src/tools/tool-approval-handler.ts +32 -11
  691. package/src/tools/types.ts +28 -2
  692. package/src/tts/provider-catalog.ts +3 -5
  693. package/src/usage/pricing.ts +1 -1
  694. package/src/util/disk-usage.ts +138 -0
  695. package/src/util/platform.ts +21 -11
  696. package/src/util/process-liveness.ts +26 -0
  697. package/src/workspace/hatched-date.ts +86 -0
  698. package/src/workspace/heartbeat-service.ts +19 -0
  699. package/src/workspace/migrations/003-seed-device-id.ts +1 -1
  700. package/src/workspace/migrations/006-services-config.ts +8 -5
  701. package/src/workspace/migrations/016-extract-feature-flags-to-protected.ts +3 -9
  702. package/src/workspace/migrations/021-move-signals-to-workspace.ts +4 -10
  703. package/src/workspace/migrations/022-move-hooks-to-workspace.ts +4 -10
  704. package/src/workspace/migrations/023-move-config-files-to-workspace.ts +4 -11
  705. package/src/workspace/migrations/024-move-runtime-files-to-workspace.ts +3 -10
  706. package/src/workspace/migrations/040-seed-latency-callsite-defaults.ts +3 -2
  707. package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +2 -1
  708. package/src/workspace/migrations/059-move-pid-to-workspace.ts +3 -8
  709. package/src/workspace/migrations/061-move-backup-key-to-workspace.ts +3 -8
  710. package/src/workspace/migrations/065-bump-stale-heartbeat-interval.ts +60 -0
  711. package/src/workspace/migrations/066-seed-heartbeat-callsite-cost-default.ts +146 -0
  712. package/src/workspace/migrations/067-release-notes-safe-storage-limits.ts +72 -0
  713. package/src/workspace/migrations/068-release-notes-local-timezone.ts +65 -0
  714. package/src/workspace/migrations/AGENTS.md +1 -1
  715. package/src/workspace/migrations/migrate-to-workspace-volume.ts +4 -10
  716. package/src/workspace/migrations/registry.ts +8 -0
  717. package/src/workspace/migrations/utils.ts +21 -0
  718. package/src/__tests__/conversation-tool-setup-memory-scope.test.ts +0 -167
  719. package/src/__tests__/host-browser-e2e-cloud.test.ts +0 -443
  720. package/src/__tests__/host-browser-e2e-self-hosted-capability.test.ts +0 -226
  721. package/src/__tests__/host-browser-ws-events-e2e.test.ts +0 -427
  722. package/src/__tests__/twilio-rest.test.ts +0 -34
  723. package/src/backup/__tests__/backup-key.test.ts +0 -152
  724. package/src/backup/__tests__/backup-worker.test.ts +0 -782
  725. package/src/backup/__tests__/offsite-writer.test.ts +0 -641
  726. package/src/backup/__tests__/stream-crypt.test.ts +0 -228
  727. package/src/backup/backup-key.ts +0 -137
  728. package/src/backup/backup-worker.ts +0 -472
  729. package/src/backup/offsite-writer.ts +0 -222
  730. package/src/backup/stream-crypt.ts +0 -263
  731. package/src/daemon/message-types/pairing.ts +0 -58
  732. package/src/memory/v2/__tests__/skill-qdrant.test.ts +0 -657
  733. package/src/memory/v2/skill-qdrant.ts +0 -395
  734. package/src/outbound-proxy/config.ts +0 -20
  735. package/src/outbound-proxy/health.ts +0 -18
  736. package/src/outbound-proxy/types.ts +0 -150
  737. package/src/runtime/capability-tokens.ts +0 -190
  738. package/src/signals/bash.ts +0 -198
  739. 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.3
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
@@ -2886,21 +2886,6 @@ paths:
2886
2886
  - assistantMetadata
2887
2887
  additionalProperties: false
2888
2888
  /v1/contacts/{id}:
2889
- delete:
2890
- operationId: contacts_by_id_delete
2891
- summary: Delete a contact
2892
- description: Delete a contact by ID.
2893
- tags:
2894
- - contacts
2895
- responses:
2896
- "204":
2897
- description: Successful response
2898
- parameters:
2899
- - name: id
2900
- in: path
2901
- required: true
2902
- schema:
2903
- type: string
2904
2889
  get:
2905
2890
  operationId: contacts_by_id_get
2906
2891
  summary: Get a contact
@@ -3206,6 +3191,68 @@ paths:
3206
3191
  - keepId
3207
3192
  - mergeId
3208
3193
  additionalProperties: false
3194
+ /v1/contacts/prompt:
3195
+ post:
3196
+ operationId: contacts_prompt_post
3197
+ summary: Prompt user to register a contact channel
3198
+ description:
3199
+ Broadcasts a contact_request to connected clients, waits for the user to submit an address via the gateway.
3200
+ The gateway owns the contact write and notifies the daemon via resolve_contact_prompt IPC.
3201
+ tags:
3202
+ - contacts
3203
+ responses:
3204
+ "200":
3205
+ description: Successful response
3206
+ content:
3207
+ application/json:
3208
+ schema:
3209
+ type: object
3210
+ properties:
3211
+ ok:
3212
+ type: boolean
3213
+ error:
3214
+ type: string
3215
+ contactId:
3216
+ type: string
3217
+ channelId:
3218
+ type: string
3219
+ channelType:
3220
+ type: string
3221
+ address:
3222
+ type: string
3223
+ required:
3224
+ - ok
3225
+ additionalProperties: false
3226
+ requestBody:
3227
+ required: true
3228
+ content:
3229
+ application/json:
3230
+ schema:
3231
+ type: object
3232
+ properties:
3233
+ channel:
3234
+ description: Suggested channel type hint (e.g. phone, email, telegram). Free text — not enforced.
3235
+ type: string
3236
+ placeholder:
3237
+ description: Placeholder text for the address input field.
3238
+ type: string
3239
+ label:
3240
+ description: Display label shown in the prompt UI.
3241
+ type: string
3242
+ description:
3243
+ description: Longer description for the prompt UI.
3244
+ type: string
3245
+ role:
3246
+ default: unknown
3247
+ description: Intended role of the contact being registered.
3248
+ type: string
3249
+ enum:
3250
+ - guardian
3251
+ - trusted-contact
3252
+ - unknown
3253
+ required:
3254
+ - role
3255
+ additionalProperties: false
3209
3256
  /v1/contacts/search:
3210
3257
  post:
3211
3258
  operationId: contacts_search_post
@@ -4182,6 +4229,55 @@ paths:
4182
4229
  - schedules
4183
4230
  - timestamp
4184
4231
  additionalProperties: false
4232
+ /v1/debug/bash:
4233
+ post:
4234
+ operationId: debug_bash_post
4235
+ summary: Execute a shell command in the assistant process
4236
+ description: Developer debugging tool. Requires the assistant to be running with VELLUM_DEBUG=1.
4237
+ tags:
4238
+ - debug
4239
+ responses:
4240
+ "200":
4241
+ description: Successful response
4242
+ content:
4243
+ application/json:
4244
+ schema:
4245
+ type: object
4246
+ properties:
4247
+ stdout:
4248
+ type: string
4249
+ stderr:
4250
+ type: string
4251
+ exitCode:
4252
+ anyOf:
4253
+ - type: number
4254
+ - type: "null"
4255
+ timedOut:
4256
+ type: boolean
4257
+ error:
4258
+ type: string
4259
+ required:
4260
+ - stdout
4261
+ - stderr
4262
+ - exitCode
4263
+ - timedOut
4264
+ additionalProperties: false
4265
+ requestBody:
4266
+ required: true
4267
+ content:
4268
+ application/json:
4269
+ schema:
4270
+ type: object
4271
+ properties:
4272
+ command:
4273
+ type: string
4274
+ description: Shell command to execute via bash -c
4275
+ timeoutMs:
4276
+ description: "Execution timeout in milliseconds (default: 30000)"
4277
+ type: number
4278
+ required:
4279
+ - command
4280
+ additionalProperties: false
4185
4281
  /v1/defer/cancel:
4186
4282
  post:
4187
4283
  operationId: defer_cancel_post
@@ -4392,6 +4488,275 @@ paths:
4392
4488
  - transcription
4393
4489
  - context
4394
4490
  additionalProperties: false
4491
+ /v1/disk-pressure/acknowledge:
4492
+ post:
4493
+ operationId: diskpressure_acknowledge_post
4494
+ summary: Acknowledge disk pressure
4495
+ description: Acknowledge the current disk pressure lock and enter cleanup mode without overriding assistant protections.
4496
+ tags:
4497
+ - disk-pressure
4498
+ responses:
4499
+ "200":
4500
+ description: Successful response
4501
+ content:
4502
+ application/json:
4503
+ schema:
4504
+ type: object
4505
+ properties:
4506
+ status:
4507
+ type: object
4508
+ properties:
4509
+ enabled:
4510
+ type: boolean
4511
+ state:
4512
+ type: string
4513
+ enum:
4514
+ - disabled
4515
+ - ok
4516
+ - critical
4517
+ - unknown
4518
+ locked:
4519
+ type: boolean
4520
+ acknowledged:
4521
+ type: boolean
4522
+ overrideActive:
4523
+ type: boolean
4524
+ effectivelyLocked:
4525
+ type: boolean
4526
+ lockId:
4527
+ anyOf:
4528
+ - type: string
4529
+ - type: "null"
4530
+ usagePercent:
4531
+ anyOf:
4532
+ - type: number
4533
+ - type: "null"
4534
+ thresholdPercent:
4535
+ type: number
4536
+ path:
4537
+ anyOf:
4538
+ - type: string
4539
+ - type: "null"
4540
+ lastCheckedAt:
4541
+ anyOf:
4542
+ - type: string
4543
+ - type: "null"
4544
+ blockedCapabilities:
4545
+ type: array
4546
+ items:
4547
+ type: string
4548
+ enum:
4549
+ - agent-turns
4550
+ - background-work
4551
+ - remote-ingress
4552
+ error:
4553
+ anyOf:
4554
+ - type: string
4555
+ - type: "null"
4556
+ required:
4557
+ - enabled
4558
+ - state
4559
+ - locked
4560
+ - acknowledged
4561
+ - overrideActive
4562
+ - effectivelyLocked
4563
+ - lockId
4564
+ - usagePercent
4565
+ - thresholdPercent
4566
+ - path
4567
+ - lastCheckedAt
4568
+ - blockedCapabilities
4569
+ - error
4570
+ additionalProperties: false
4571
+ required:
4572
+ - status
4573
+ additionalProperties: false
4574
+ "409":
4575
+ description: No active lock or lock already acknowledged.
4576
+ /v1/disk-pressure/override:
4577
+ post:
4578
+ operationId: diskpressure_override_post
4579
+ summary: Override disk pressure
4580
+ description: Override the current disk pressure lock only after confirming "I understand the risks".
4581
+ tags:
4582
+ - disk-pressure
4583
+ responses:
4584
+ "200":
4585
+ description: Successful response
4586
+ content:
4587
+ application/json:
4588
+ schema:
4589
+ type: object
4590
+ properties:
4591
+ status:
4592
+ type: object
4593
+ properties:
4594
+ enabled:
4595
+ type: boolean
4596
+ state:
4597
+ type: string
4598
+ enum:
4599
+ - disabled
4600
+ - ok
4601
+ - critical
4602
+ - unknown
4603
+ locked:
4604
+ type: boolean
4605
+ acknowledged:
4606
+ type: boolean
4607
+ overrideActive:
4608
+ type: boolean
4609
+ effectivelyLocked:
4610
+ type: boolean
4611
+ lockId:
4612
+ anyOf:
4613
+ - type: string
4614
+ - type: "null"
4615
+ usagePercent:
4616
+ anyOf:
4617
+ - type: number
4618
+ - type: "null"
4619
+ thresholdPercent:
4620
+ type: number
4621
+ path:
4622
+ anyOf:
4623
+ - type: string
4624
+ - type: "null"
4625
+ lastCheckedAt:
4626
+ anyOf:
4627
+ - type: string
4628
+ - type: "null"
4629
+ blockedCapabilities:
4630
+ type: array
4631
+ items:
4632
+ type: string
4633
+ enum:
4634
+ - agent-turns
4635
+ - background-work
4636
+ - remote-ingress
4637
+ error:
4638
+ anyOf:
4639
+ - type: string
4640
+ - type: "null"
4641
+ required:
4642
+ - enabled
4643
+ - state
4644
+ - locked
4645
+ - acknowledged
4646
+ - overrideActive
4647
+ - effectivelyLocked
4648
+ - lockId
4649
+ - usagePercent
4650
+ - thresholdPercent
4651
+ - path
4652
+ - lastCheckedAt
4653
+ - blockedCapabilities
4654
+ - error
4655
+ additionalProperties: false
4656
+ required:
4657
+ - status
4658
+ additionalProperties: false
4659
+ "400":
4660
+ description: Confirmation phrase is invalid.
4661
+ "409":
4662
+ description: No active lock or lock already overridden.
4663
+ requestBody:
4664
+ required: true
4665
+ content:
4666
+ application/json:
4667
+ schema:
4668
+ type: object
4669
+ properties:
4670
+ confirmation:
4671
+ type: string
4672
+ required:
4673
+ - confirmation
4674
+ additionalProperties: false
4675
+ /v1/disk-pressure/status:
4676
+ get:
4677
+ operationId: diskpressure_status_get
4678
+ summary: Get disk pressure status
4679
+ description:
4680
+ Return the current disk pressure status snapshot. When safe storage limits are disabled, returns a disabled
4681
+ status.
4682
+ tags:
4683
+ - disk-pressure
4684
+ responses:
4685
+ "200":
4686
+ description: Successful response
4687
+ content:
4688
+ application/json:
4689
+ schema:
4690
+ type: object
4691
+ properties:
4692
+ status:
4693
+ type: object
4694
+ properties:
4695
+ enabled:
4696
+ type: boolean
4697
+ state:
4698
+ type: string
4699
+ enum:
4700
+ - disabled
4701
+ - ok
4702
+ - critical
4703
+ - unknown
4704
+ locked:
4705
+ type: boolean
4706
+ acknowledged:
4707
+ type: boolean
4708
+ overrideActive:
4709
+ type: boolean
4710
+ effectivelyLocked:
4711
+ type: boolean
4712
+ lockId:
4713
+ anyOf:
4714
+ - type: string
4715
+ - type: "null"
4716
+ usagePercent:
4717
+ anyOf:
4718
+ - type: number
4719
+ - type: "null"
4720
+ thresholdPercent:
4721
+ type: number
4722
+ path:
4723
+ anyOf:
4724
+ - type: string
4725
+ - type: "null"
4726
+ lastCheckedAt:
4727
+ anyOf:
4728
+ - type: string
4729
+ - type: "null"
4730
+ blockedCapabilities:
4731
+ type: array
4732
+ items:
4733
+ type: string
4734
+ enum:
4735
+ - agent-turns
4736
+ - background-work
4737
+ - remote-ingress
4738
+ error:
4739
+ anyOf:
4740
+ - type: string
4741
+ - type: "null"
4742
+ required:
4743
+ - enabled
4744
+ - state
4745
+ - locked
4746
+ - acknowledged
4747
+ - overrideActive
4748
+ - effectivelyLocked
4749
+ - lockId
4750
+ - usagePercent
4751
+ - thresholdPercent
4752
+ - path
4753
+ - lastCheckedAt
4754
+ - blockedCapabilities
4755
+ - error
4756
+ additionalProperties: false
4757
+ required:
4758
+ - status
4759
+ additionalProperties: false
4395
4760
  /v1/documents:
4396
4761
  get:
4397
4762
  operationId: documents_get
@@ -4520,6 +4885,22 @@ paths:
4520
4885
  required: true
4521
4886
  schema:
4522
4887
  type: string
4888
+ /v1/documents/{id}/pdf:
4889
+ get:
4890
+ operationId: documents_by_id_pdf_get
4891
+ summary: Export a document as PDF
4892
+ description: Render a document to PDF and return the binary content.
4893
+ tags:
4894
+ - documents
4895
+ responses:
4896
+ "200":
4897
+ description: Successful response
4898
+ parameters:
4899
+ - name: id
4900
+ in: path
4901
+ required: true
4902
+ schema:
4903
+ type: string
4523
4904
  /v1/events:
4524
4905
  get:
4525
4906
  operationId: events_get
@@ -4537,6 +4918,32 @@ paths:
4537
4918
  schema:
4538
4919
  type: string
4539
4920
  description: Scope to a single conversation
4921
+ /v1/events/emit:
4922
+ post:
4923
+ operationId: events_emit_post
4924
+ summary: Emit an assistant event
4925
+ description:
4926
+ Trigger an in-process assistant event by kind. Used by the gateway after owning a write that the assistant
4927
+ runtime would normally emit.
4928
+ tags:
4929
+ - events
4930
+ responses:
4931
+ "204":
4932
+ description: Successful response
4933
+ requestBody:
4934
+ required: true
4935
+ content:
4936
+ application/json:
4937
+ schema:
4938
+ type: object
4939
+ properties:
4940
+ kind:
4941
+ type: string
4942
+ enum:
4943
+ - contacts_changed
4944
+ required:
4945
+ - kind
4946
+ additionalProperties: false
4540
4947
  /v1/export:
4541
4948
  post:
4542
4949
  operationId: export_post
@@ -4647,6 +5054,35 @@ paths:
4647
5054
  - success
4648
5055
  - ran
4649
5056
  additionalProperties: false
5057
+ /v1/gateway/logs/tail:
5058
+ get:
5059
+ operationId: gateway_logs_tail_get
5060
+ summary: Tail gateway log entries
5061
+ description: Return the last N structured log entries from the gateway log files.
5062
+ tags:
5063
+ - gateway-logs
5064
+ responses:
5065
+ "200":
5066
+ description: Successful response
5067
+ parameters:
5068
+ - name: n
5069
+ in: query
5070
+ required: false
5071
+ schema:
5072
+ type: string
5073
+ description: "Number of lines to return (1–1000, default: 10)"
5074
+ - name: level
5075
+ in: query
5076
+ required: false
5077
+ schema:
5078
+ type: string
5079
+ description: "Minimum pino level name (default: info)"
5080
+ - name: module
5081
+ in: query
5082
+ required: false
5083
+ schema:
5084
+ type: string
5085
+ description: Filter to exact pino module name
4650
5086
  /v1/groups:
4651
5087
  get:
4652
5088
  operationId: groups_get
@@ -5175,6 +5611,14 @@ paths:
5175
5611
  anyOf:
5176
5612
  - type: number
5177
5613
  - type: "null"
5614
+ cronExpression:
5615
+ anyOf:
5616
+ - type: string
5617
+ - type: "null"
5618
+ timezone:
5619
+ anyOf:
5620
+ - type: string
5621
+ - type: "null"
5178
5622
  nextRunAt:
5179
5623
  anyOf:
5180
5624
  - type: number
@@ -5190,6 +5634,8 @@ paths:
5190
5634
  - intervalMs
5191
5635
  - activeHoursStart
5192
5636
  - activeHoursEnd
5637
+ - cronExpression
5638
+ - timezone
5193
5639
  - nextRunAt
5194
5640
  - lastRunAt
5195
5641
  - success
@@ -5220,6 +5666,14 @@ paths:
5220
5666
  anyOf:
5221
5667
  - type: number
5222
5668
  - type: "null"
5669
+ cronExpression:
5670
+ anyOf:
5671
+ - type: string
5672
+ - type: "null"
5673
+ timezone:
5674
+ anyOf:
5675
+ - type: string
5676
+ - type: "null"
5223
5677
  nextRunAt:
5224
5678
  anyOf:
5225
5679
  - type: number
@@ -5235,6 +5689,8 @@ paths:
5235
5689
  - intervalMs
5236
5690
  - activeHoursStart
5237
5691
  - activeHoursEnd
5692
+ - cronExpression
5693
+ - timezone
5238
5694
  - nextRunAt
5239
5695
  - lastRunAt
5240
5696
  - success
@@ -5247,22 +5703,31 @@ paths:
5247
5703
  type: object
5248
5704
  properties:
5249
5705
  enabled:
5250
- type: boolean
5251
5706
  description: Enable or disable heartbeat
5707
+ type: boolean
5252
5708
  intervalMs:
5253
- type: number
5254
5709
  description: Heartbeat interval in ms
5255
- activeHoursStart:
5256
5710
  type: number
5711
+ activeHoursStart:
5257
5712
  description: Active hours start (0–23)
5713
+ anyOf:
5714
+ - type: number
5715
+ - type: "null"
5258
5716
  activeHoursEnd:
5259
- type: number
5260
5717
  description: Active hours end (0–23)
5261
- required:
5262
- - enabled
5263
- - intervalMs
5264
- - activeHoursStart
5265
- - activeHoursEnd
5718
+ anyOf:
5719
+ - type: number
5720
+ - type: "null"
5721
+ cronExpression:
5722
+ description: Cron expression for heartbeat timing, or null for fixed interval
5723
+ anyOf:
5724
+ - type: string
5725
+ - type: "null"
5726
+ timezone:
5727
+ description: Timezone for cron evaluation
5728
+ anyOf:
5729
+ - type: string
5730
+ - type: "null"
5266
5731
  additionalProperties: false
5267
5732
  /v1/heartbeat/run-now:
5268
5733
  post:
@@ -5305,7 +5770,53 @@ paths:
5305
5770
  properties:
5306
5771
  runs:
5307
5772
  type: array
5308
- items: {}
5773
+ items:
5774
+ type: object
5775
+ properties:
5776
+ id:
5777
+ type: string
5778
+ scheduledFor:
5779
+ type: number
5780
+ startedAt:
5781
+ anyOf:
5782
+ - type: number
5783
+ - type: "null"
5784
+ finishedAt:
5785
+ anyOf:
5786
+ - type: number
5787
+ - type: "null"
5788
+ durationMs:
5789
+ anyOf:
5790
+ - type: number
5791
+ - type: "null"
5792
+ status:
5793
+ type: string
5794
+ skipReason:
5795
+ anyOf:
5796
+ - type: string
5797
+ - type: "null"
5798
+ error:
5799
+ anyOf:
5800
+ - type: string
5801
+ - type: "null"
5802
+ conversationId:
5803
+ anyOf:
5804
+ - type: string
5805
+ - type: "null"
5806
+ createdAt:
5807
+ type: number
5808
+ required:
5809
+ - id
5810
+ - scheduledFor
5811
+ - startedAt
5812
+ - finishedAt
5813
+ - durationMs
5814
+ - status
5815
+ - skipReason
5816
+ - error
5817
+ - conversationId
5818
+ - createdAt
5819
+ additionalProperties: false
5309
5820
  description: Heartbeat run records
5310
5821
  required:
5311
5822
  - runs
@@ -5811,11 +6322,129 @@ paths:
5811
6322
  additionalProperties: false
5812
6323
  "500":
5813
6324
  description: Failed to compute relationship state
6325
+ /v1/host-app-control-result:
6326
+ post:
6327
+ operationId: hostappcontrolresult_post
6328
+ summary: Submit host app-control result
6329
+ description:
6330
+ Resolve a pending host app-control request by requestId. Returns 200 even when no pending interaction
6331
+ matches (late delivery is tolerated).
6332
+ tags:
6333
+ - host
6334
+ responses:
6335
+ "200":
6336
+ description: Successful response
6337
+ content:
6338
+ application/json:
6339
+ schema:
6340
+ type: object
6341
+ properties:
6342
+ accepted:
6343
+ type: boolean
6344
+ required:
6345
+ - accepted
6346
+ additionalProperties: false
6347
+ requestBody:
6348
+ required: true
6349
+ content:
6350
+ application/json:
6351
+ schema:
6352
+ type: object
6353
+ properties:
6354
+ requestId:
6355
+ type: string
6356
+ description: Pending app-control request ID
6357
+ state:
6358
+ type: string
6359
+ enum:
6360
+ - running
6361
+ - missing
6362
+ - minimized
6363
+ description: Lifecycle state of the targeted application
6364
+ pngBase64:
6365
+ type: string
6366
+ description: Base64 PNG screenshot of the targeted app window
6367
+ windowBounds:
6368
+ type: object
6369
+ properties:
6370
+ x:
6371
+ type: number
6372
+ y:
6373
+ type: number
6374
+ width:
6375
+ type: number
6376
+ height:
6377
+ type: number
6378
+ required:
6379
+ - x
6380
+ - y
6381
+ - width
6382
+ - height
6383
+ additionalProperties: false
6384
+ executionResult:
6385
+ type: string
6386
+ executionError:
6387
+ type: string
6388
+ required:
6389
+ - requestId
6390
+ - state
6391
+ additionalProperties: false
5814
6392
  /v1/host-bash-result:
5815
6393
  post:
5816
- operationId: hostbashresult_post
5817
- summary: Submit host bash result
5818
- description: Resolve a pending host bash request by requestId.
6394
+ operationId: hostbashresult_post
6395
+ summary: Submit host bash result
6396
+ description: Resolve a pending host bash request by requestId.
6397
+ tags:
6398
+ - host
6399
+ responses:
6400
+ "200":
6401
+ description: Successful response
6402
+ content:
6403
+ application/json:
6404
+ schema:
6405
+ type: object
6406
+ properties:
6407
+ accepted:
6408
+ type: boolean
6409
+ required:
6410
+ - accepted
6411
+ additionalProperties: false
6412
+ "400":
6413
+ description: x-vellum-client-id header is missing for a targeted host bash request.
6414
+ "403":
6415
+ description:
6416
+ Submitting client does not match the targeted client, or the submitting actor's principal does not match
6417
+ the target client's actor.
6418
+ "404":
6419
+ description: No pending interaction found for the given requestId.
6420
+ "409":
6421
+ description: Pending interaction exists but is of a different kind (e.g. host_file, host_cu).
6422
+ requestBody:
6423
+ required: true
6424
+ content:
6425
+ application/json:
6426
+ schema:
6427
+ type: object
6428
+ properties:
6429
+ requestId:
6430
+ type: string
6431
+ description: Pending bash request ID
6432
+ stdout:
6433
+ type: string
6434
+ stderr:
6435
+ type: string
6436
+ exitCode:
6437
+ type: number
6438
+ timedOut:
6439
+ type: boolean
6440
+ required:
6441
+ - requestId
6442
+ additionalProperties: false
6443
+ /v1/host-browser-event:
6444
+ post:
6445
+ operationId: hostbrowserevent_post
6446
+ summary: Forward a CDP event from the browser extension
6447
+ description: Publishes a chrome.debugger.onEvent firing into the runtime-side browser-session event bus.
5819
6448
  tags:
5820
6449
  - host
5821
6450
  responses:
@@ -5838,19 +6467,16 @@ paths:
5838
6467
  schema:
5839
6468
  type: object
5840
6469
  properties:
5841
- requestId:
5842
- type: string
5843
- description: Pending bash request ID
5844
- stdout:
6470
+ method:
5845
6471
  type: string
5846
- stderr:
6472
+ description: CDP event method name
6473
+ params:
6474
+ description: CDP event parameters
6475
+ cdpSessionId:
6476
+ description: CDP session ID (if target-scoped)
5847
6477
  type: string
5848
- exitCode:
5849
- type: number
5850
- timedOut:
5851
- type: boolean
5852
6478
  required:
5853
- - requestId
6479
+ - method
5854
6480
  additionalProperties: false
5855
6481
  /v1/host-browser-result:
5856
6482
  post:
@@ -5889,6 +6515,40 @@ paths:
5889
6515
  required:
5890
6516
  - requestId
5891
6517
  additionalProperties: false
6518
+ /v1/host-browser-session-invalidated:
6519
+ post:
6520
+ operationId: hostbrowsersessioninvalidated_post
6521
+ summary: Notify runtime that a CDP session was invalidated
6522
+ description: Marks the target as invalidated in the runtime-side browser session registry.
6523
+ tags:
6524
+ - host
6525
+ responses:
6526
+ "200":
6527
+ description: Successful response
6528
+ content:
6529
+ application/json:
6530
+ schema:
6531
+ type: object
6532
+ properties:
6533
+ accepted:
6534
+ type: boolean
6535
+ required:
6536
+ - accepted
6537
+ additionalProperties: false
6538
+ requestBody:
6539
+ required: true
6540
+ content:
6541
+ application/json:
6542
+ schema:
6543
+ type: object
6544
+ properties:
6545
+ targetId:
6546
+ description: CDP target that was detached
6547
+ type: string
6548
+ reason:
6549
+ description: Detach reason
6550
+ type: string
6551
+ additionalProperties: false
5892
6552
  /v1/host-cu-result:
5893
6553
  post:
5894
6554
  operationId: hostcuresult_post
@@ -5909,6 +6569,16 @@ paths:
5909
6569
  required:
5910
6570
  - accepted
5911
6571
  additionalProperties: false
6572
+ "400":
6573
+ description: x-vellum-client-id header is missing for a targeted host CU request.
6574
+ "403":
6575
+ description:
6576
+ Submitting client does not match the targeted client, or the submitting actor's principal does not match
6577
+ the target client's actor.
6578
+ "404":
6579
+ description: No pending interaction found for the given requestId, or the conversation/proxy no longer exists.
6580
+ "409":
6581
+ description: Pending interaction exists but is of a different kind (e.g. host_bash, host_file).
5912
6582
  requestBody:
5913
6583
  required: true
5914
6584
  content:
@@ -5967,6 +6637,16 @@ paths:
5967
6637
  required:
5968
6638
  - accepted
5969
6639
  additionalProperties: false
6640
+ "400":
6641
+ description: x-vellum-client-id header is missing for a targeted host file request.
6642
+ "403":
6643
+ description:
6644
+ Submitting client does not match the targeted client, or the submitting actor's principal does not match
6645
+ the target client's actor.
6646
+ "404":
6647
+ description: No pending interaction found for the given requestId.
6648
+ "409":
6649
+ description: Pending interaction exists but is of a different kind (e.g. host_bash, host_cu).
5970
6650
  requestBody:
5971
6651
  required: true
5972
6652
  content:
@@ -6009,6 +6689,12 @@ paths:
6009
6689
  required:
6010
6690
  - accepted
6011
6691
  additionalProperties: false
6692
+ "400":
6693
+ description: x-vellum-client-id header is missing for a targeted host transfer request.
6694
+ "403":
6695
+ description:
6696
+ Submitting client does not match the targeted client, or the submitting actor's principal does not match
6697
+ the target client's actor.
6012
6698
  requestBody:
6013
6699
  required: true
6014
6700
  content:
@@ -6070,7 +6756,9 @@ paths:
6070
6756
  get:
6071
6757
  operationId: identity_intro_get
6072
6758
  summary: Get identity intro text
6073
- description: Returns the cached identity intro string, preferring SOUL.md over LLM-generated cache.
6759
+ description:
6760
+ Returns a deterministic greeting derived from the assistant name in IDENTITY.md, falling back to
6761
+ LLM-generated cache.
6074
6762
  tags:
6075
6763
  - identity
6076
6764
  responses:
@@ -6355,6 +7043,56 @@ paths:
6355
7043
  required: true
6356
7044
  schema:
6357
7045
  type: string
7046
+ /v1/internal/mcp/auth/start:
7047
+ post:
7048
+ operationId: internal_mcp_auth_start_post
7049
+ summary: Start MCP OAuth flow
7050
+ description: Starts a daemon-owned MCP OAuth flow and returns the authorization URL for the CLI to open in the browser.
7051
+ tags:
7052
+ - internal
7053
+ responses:
7054
+ "200":
7055
+ description: Successful response
7056
+ requestBody:
7057
+ required: true
7058
+ content:
7059
+ application/json:
7060
+ schema:
7061
+ type: object
7062
+ properties:
7063
+ serverId:
7064
+ type: string
7065
+ required:
7066
+ - serverId
7067
+ additionalProperties: false
7068
+ /v1/internal/mcp/auth/status/{serverId}:
7069
+ get:
7070
+ operationId: internal_mcp_auth_status_by_serverId_get
7071
+ summary: Poll MCP OAuth flow status
7072
+ description: Returns the current status of an in-flight MCP OAuth flow (pending/complete/error).
7073
+ tags:
7074
+ - internal
7075
+ responses:
7076
+ "200":
7077
+ description: Successful response
7078
+ "404":
7079
+ description: No active OAuth flow for the given serverId
7080
+ parameters:
7081
+ - name: serverId
7082
+ in: path
7083
+ required: true
7084
+ schema:
7085
+ type: string
7086
+ /v1/internal/mcp/reload:
7087
+ post:
7088
+ operationId: internal_mcp_reload_post
7089
+ summary: Trigger MCP server reload
7090
+ description: Kicks off reloadMcpServers() async on the daemon. Returns immediately.
7091
+ tags:
7092
+ - internal
7093
+ responses:
7094
+ "200":
7095
+ description: Successful response
6358
7096
  /v1/internal/oauth/callback:
6359
7097
  post:
6360
7098
  operationId: internal_oauth_callback_post
@@ -6383,6 +7121,61 @@ paths:
6383
7121
  required:
6384
7122
  - state
6385
7123
  additionalProperties: false
7124
+ /v1/internal/oauth/connect/start:
7125
+ post:
7126
+ operationId: internal_oauth_connect_start_post
7127
+ summary: Start daemon-owned OAuth connect flow
7128
+ description: Starts an OAuth connect flow in the daemon and returns the authorization URL for the CLI to open in the browser.
7129
+ tags:
7130
+ - internal
7131
+ responses:
7132
+ "200":
7133
+ description: Successful response
7134
+ requestBody:
7135
+ required: true
7136
+ content:
7137
+ application/json:
7138
+ schema:
7139
+ type: object
7140
+ properties:
7141
+ service:
7142
+ type: string
7143
+ clientId:
7144
+ type: string
7145
+ clientSecret:
7146
+ type: string
7147
+ callbackTransport:
7148
+ type: string
7149
+ enum:
7150
+ - loopback
7151
+ - gateway
7152
+ requestedScopes:
7153
+ type: array
7154
+ items:
7155
+ type: string
7156
+ required:
7157
+ - service
7158
+ - clientId
7159
+ - callbackTransport
7160
+ additionalProperties: false
7161
+ /v1/internal/oauth/connect/status/{state}:
7162
+ get:
7163
+ operationId: internal_oauth_connect_status_by_state_get
7164
+ summary: Poll daemon OAuth connect flow status
7165
+ description: Returns the current status of an in-flight daemon-owned OAuth connect flow (pending/complete/error).
7166
+ tags:
7167
+ - internal
7168
+ responses:
7169
+ "200":
7170
+ description: Successful response
7171
+ "404":
7172
+ description: No active OAuth connect flow for the given state token
7173
+ parameters:
7174
+ - name: state
7175
+ in: path
7176
+ required: true
7177
+ schema:
7178
+ type: string
6386
7179
  /v1/internal/twilio/connect-action:
6387
7180
  post:
6388
7181
  operationId: internal_twilio_connectaction_post
@@ -6717,6 +7510,153 @@ paths:
6717
7510
  required:
6718
7511
  - op
6719
7512
  additionalProperties: false
7513
+ /v1/memory/v2/concept-frequency:
7514
+ post:
7515
+ operationId: memory_v2_conceptfrequency_post
7516
+ summary: Aggregate per-concept injection frequency from activation logs
7517
+ description:
7518
+ "Debug-only. Aggregates the existing memory_v2_activation_logs table by (slug, status) and cross-references
7519
+ on-disk concept pages so an operator can see which concepts get injected often, which get scored but rejected,
7520
+ and which on-disk pages never even surface as candidates. Optional filters: conversationId narrows to a single
7521
+ conversation; sinceMs restricts to logs created at-or-after the given epoch ms timestamp."
7522
+ tags:
7523
+ - memory
7524
+ responses:
7525
+ "200":
7526
+ description: Successful response
7527
+ requestBody:
7528
+ required: true
7529
+ content:
7530
+ application/json:
7531
+ schema:
7532
+ type: object
7533
+ properties:
7534
+ conversationId:
7535
+ type: string
7536
+ minLength: 1
7537
+ sinceMs:
7538
+ type: integer
7539
+ minimum: 0
7540
+ maximum: 9007199254740991
7541
+ additionalProperties: false
7542
+ /v1/memory/v2/concept-page:
7543
+ post:
7544
+ operationId: memory_v2_conceptpage_post
7545
+ summary: Read a single memory v2 concept page
7546
+ description:
7547
+ Returns the rendered (frontmatter + body) markdown for a slug. 404 when the slug has no on-disk page — the
7548
+ activation log inspector uses this to show what got injected.
7549
+ tags:
7550
+ - memory
7551
+ responses:
7552
+ "200":
7553
+ description: Successful response
7554
+ requestBody:
7555
+ required: true
7556
+ content:
7557
+ application/json:
7558
+ schema:
7559
+ type: object
7560
+ properties:
7561
+ slug:
7562
+ type: string
7563
+ minLength: 1
7564
+ required:
7565
+ - slug
7566
+ additionalProperties: false
7567
+ /v1/memory/v2/explain-similarity:
7568
+ post:
7569
+ operationId: memory_v2_explainsimilarity_post
7570
+ summary: Diagnose dense vs sparse similarity score distributions
7571
+ description:
7572
+ Read-only diagnostic. Embeds the supplied text(s), runs hybrid dense + sparse queries against the
7573
+ concept-page collection, and returns per-slug raw dense, raw sparse, normalized sparse, and fused scores plus
7574
+ per-channel summary stats. Used to investigate score-compression at the head of the activation distribution.
7575
+ tags:
7576
+ - memory
7577
+ responses:
7578
+ "200":
7579
+ description: Successful response
7580
+ requestBody:
7581
+ required: true
7582
+ content:
7583
+ application/json:
7584
+ schema:
7585
+ type: object
7586
+ properties:
7587
+ userText:
7588
+ type: string
7589
+ minLength: 1
7590
+ assistantText:
7591
+ type: string
7592
+ nowText:
7593
+ type: string
7594
+ top:
7595
+ default: 25
7596
+ type: integer
7597
+ minimum: 1
7598
+ maximum: 9007199254740991
7599
+ required:
7600
+ - userText
7601
+ - top
7602
+ additionalProperties: false
7603
+ /v1/memory/v2/fit-anisotropy:
7604
+ post:
7605
+ operationId: memory_v2_fitanisotropy_post
7606
+ summary: Fit the embedding anisotropy correction for memory v2
7607
+ description:
7608
+ Samples stored dense vectors from the concept-page Qdrant collection, fits a corpus mean + top-k principal
7609
+ components (Mu & Viswanath 'all-but-the-top'), and persists the calibration so subsequent embeds and queries
7610
+ apply the correction. Run `assistant memory v2 reembed` after fitting so stored vectors are written under the
7611
+ new calibration — until then, queries (corrected) and stored vectors (uncorrected) live in different spaces.
7612
+ tags:
7613
+ - memory
7614
+ responses:
7615
+ "200":
7616
+ description: Successful response
7617
+ requestBody:
7618
+ required: true
7619
+ content:
7620
+ application/json:
7621
+ schema:
7622
+ type: object
7623
+ properties:
7624
+ k:
7625
+ default: 1
7626
+ type: integer
7627
+ minimum: 1
7628
+ maximum: 16
7629
+ sample:
7630
+ default: 5000
7631
+ type: integer
7632
+ minimum: 1
7633
+ maximum: 100000
7634
+ required:
7635
+ - k
7636
+ - sample
7637
+ additionalProperties: false
7638
+ /v1/memory/v2/rebuild-corpus-stats:
7639
+ post:
7640
+ operationId: memory_v2_rebuildcorpusstats_post
7641
+ summary: Rebuild the BM25 corpus statistics for memory v2
7642
+ description:
7643
+ Walks every concept page on disk, recomputes the document-frequency table and average document length used
7644
+ by the BM25 sparse channel, and atomically swaps the in-memory stats. Run after bulk content imports or to
7645
+ recover from a rebuild that errored at startup. Does not reembed individual page sparse vectors — pair with
7646
+ `assistant memory v2 reembed` when document-side weights need refreshing.
7647
+ tags:
7648
+ - memory
7649
+ responses:
7650
+ "200":
7651
+ description: Successful response
7652
+ requestBody:
7653
+ required: true
7654
+ content:
7655
+ application/json:
7656
+ schema:
7657
+ type: object
7658
+ properties: {}
7659
+ additionalProperties: false
6720
7660
  /v1/memory/v2/reembed-skills:
6721
7661
  post:
6722
7662
  operationId: memory_v2_reembedskills_post
@@ -6821,6 +7761,8 @@ paths:
6821
7761
  type: string
6822
7762
  slashCommand:
6823
7763
  type: string
7764
+ clientTimezone:
7765
+ type: string
6824
7766
  inferenceProfile:
6825
7767
  anyOf:
6826
7768
  - type: string
@@ -6874,6 +7816,13 @@ paths:
6874
7816
  properties:
6875
7817
  messageId:
6876
7818
  type: string
7819
+ conversationKind:
7820
+ type: string
7821
+ enum:
7822
+ - user
7823
+ - background
7824
+ - background_memory_consolidation
7825
+ - scheduled
6877
7826
  logs:
6878
7827
  type: array
6879
7828
  items: {}
@@ -6891,6 +7840,7 @@ paths:
6891
7840
  - type: "null"
6892
7841
  required:
6893
7842
  - messageId
7843
+ - conversationKind
6894
7844
  - logs
6895
7845
  - memoryRecall
6896
7846
  - memoryV2Activation
@@ -8243,6 +9193,16 @@ paths:
8243
9193
  required:
8244
9194
  - conversationId
8245
9195
  additionalProperties: false
9196
+ /v1/resolve_contact_prompt:
9197
+ post:
9198
+ operationId: resolve_contact_prompt_post
9199
+ summary: "Gateway callback: resolve a pending contact prompt"
9200
+ description: Called by the gateway after it writes the contact and channel. Unblocks the waiting contacts/prompt IPC call.
9201
+ tags:
9202
+ - contacts
9203
+ responses:
9204
+ "200":
9205
+ description: Successful response
8246
9206
  /v1/schedules:
8247
9207
  get:
8248
9208
  operationId: schedules_get
@@ -8357,6 +9317,12 @@ paths:
8357
9317
  type: boolean
8358
9318
  reuseConversation:
8359
9319
  type: boolean
9320
+ maxRetries:
9321
+ type: number
9322
+ description: Maximum retry attempts
9323
+ retryBackoffMs:
9324
+ type: number
9325
+ description: Retry backoff in milliseconds
8360
9326
  required:
8361
9327
  - name
8362
9328
  - expression
@@ -8367,6 +9333,8 @@ paths:
8367
9333
  - routingIntent
8368
9334
  - quiet
8369
9335
  - reuseConversation
9336
+ - maxRetries
9337
+ - retryBackoffMs
8370
9338
  additionalProperties: false
8371
9339
  /v1/schedules/{id}/cancel:
8372
9340
  post:
@@ -10855,6 +11823,12 @@ paths:
10855
11823
  responses:
10856
11824
  "200":
10857
11825
  description: Successful response
11826
+ "400":
11827
+ description: x-vellum-client-id header is missing for a targeted transfer.
11828
+ "403":
11829
+ description:
11830
+ Submitting client does not match the targeted client, or the submitting actor's principal does not match
11831
+ the target client's actor.
10858
11832
  parameters:
10859
11833
  - name: transferId
10860
11834
  in: path
@@ -10870,6 +11844,12 @@ paths:
10870
11844
  responses:
10871
11845
  "200":
10872
11846
  description: Successful response
11847
+ "400":
11848
+ description: x-vellum-client-id header is missing for a targeted transfer.
11849
+ "403":
11850
+ description:
11851
+ Submitting client does not match the targeted client, or the submitting actor's principal does not match
11852
+ the target client's actor.
10873
11853
  parameters:
10874
11854
  - name: transferId
10875
11855
  in: path