@vellumai/assistant 0.6.6 → 0.7.0

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 (1346) hide show
  1. package/AGENTS.md +20 -0
  2. package/ARCHITECTURE.md +45 -36
  3. package/Dockerfile +26 -6
  4. package/README.md +8 -10
  5. package/__tests__/permissions/gateway-threshold-reader.test.ts +14 -20
  6. package/bun.lock +306 -119
  7. package/docs/architecture/memory.md +1 -90
  8. package/docs/architecture/security.md +15 -30
  9. package/docs/credential-execution-service.md +7 -5
  10. package/docs/skills.md +10 -10
  11. package/docs/stt-provider-onboarding.md +17 -45
  12. package/examples/plugins/echo/bun.lock +25 -0
  13. package/knip.json +8 -22
  14. package/node_modules/@vellumai/ces-client/bun.lock +33 -0
  15. package/node_modules/@vellumai/ces-client/package.json +25 -0
  16. package/node_modules/@vellumai/ces-client/src/__tests__/ces-client.test.ts +631 -0
  17. package/node_modules/@vellumai/ces-client/src/__tests__/package-boundary.test.ts +138 -0
  18. package/node_modules/@vellumai/ces-client/src/credential-rpc.ts +13 -0
  19. package/node_modules/@vellumai/ces-client/src/http-credentials.ts +296 -0
  20. package/node_modules/@vellumai/ces-client/src/http-log-export.ts +111 -0
  21. package/node_modules/@vellumai/ces-client/src/index.ts +43 -0
  22. package/node_modules/@vellumai/ces-client/src/rpc-client.ts +445 -0
  23. package/node_modules/@vellumai/credential-storage/src/__tests__/package-boundary.test.ts +32 -6
  24. package/node_modules/@vellumai/egress-proxy/src/__tests__/package-boundary.test.ts +32 -1
  25. package/node_modules/@vellumai/gateway-client/bun.lock +39 -0
  26. package/node_modules/@vellumai/gateway-client/package.json +23 -0
  27. package/node_modules/@vellumai/gateway-client/src/__tests__/gateway-client.test.ts +343 -0
  28. package/node_modules/@vellumai/gateway-client/src/__tests__/package-boundary.test.ts +140 -0
  29. package/node_modules/@vellumai/gateway-client/src/http-delivery.ts +422 -0
  30. package/node_modules/@vellumai/gateway-client/src/index.ts +35 -0
  31. package/node_modules/@vellumai/gateway-client/src/ipc-client.ts +331 -0
  32. package/node_modules/@vellumai/gateway-client/src/types.ts +131 -0
  33. package/node_modules/@vellumai/gateway-client/tsconfig.json +20 -0
  34. package/node_modules/@vellumai/{ces-contracts → service-contracts}/bun.lock +1 -1
  35. package/node_modules/@vellumai/{ces-contracts → service-contracts}/package.json +4 -2
  36. package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/__tests__/contracts.test.ts +5 -1
  37. package/node_modules/@vellumai/service-contracts/src/__tests__/package-boundary.test.ts +155 -0
  38. package/node_modules/@vellumai/service-contracts/src/credential-rpc.ts +23 -0
  39. package/node_modules/@vellumai/service-contracts/src/index.ts +25 -0
  40. package/node_modules/@vellumai/{ces-contracts/src/index.ts → service-contracts/src/transport.ts} +6 -28
  41. package/node_modules/@vellumai/service-contracts/src/trust-rules.ts +116 -0
  42. package/node_modules/@vellumai/service-contracts/tsconfig.json +20 -0
  43. package/node_modules/@vellumai/skill-host-contracts/__tests__/client.test.ts +891 -0
  44. package/node_modules/@vellumai/skill-host-contracts/bun.lock +24 -0
  45. package/node_modules/@vellumai/skill-host-contracts/package.json +18 -0
  46. package/node_modules/@vellumai/skill-host-contracts/src/assistant-event.ts +91 -0
  47. package/node_modules/@vellumai/skill-host-contracts/src/client.ts +1348 -0
  48. package/node_modules/@vellumai/skill-host-contracts/src/index.ts +6 -0
  49. package/node_modules/@vellumai/skill-host-contracts/src/runtime-mode.ts +11 -0
  50. package/node_modules/@vellumai/skill-host-contracts/src/server-message.ts +32 -0
  51. package/node_modules/@vellumai/skill-host-contracts/src/skill-host.ts +333 -0
  52. package/node_modules/@vellumai/skill-host-contracts/src/tool-types.ts +444 -0
  53. package/node_modules/@vellumai/skill-host-contracts/tsconfig.json +20 -0
  54. package/node_modules/@vellumai/skill-host-contracts/tsconfig.test.json +12 -0
  55. package/openapi.yaml +2855 -556
  56. package/package.json +13 -7
  57. package/scripts/check-circular-deps.ts +80 -0
  58. package/scripts/generate-openapi.ts +24 -7
  59. package/{src/memory/graph/inspect.ts → scripts/memory-inspect.ts} +27 -27
  60. package/src/__tests__/access-request-decision.test.ts +2 -11
  61. package/src/__tests__/acp-session.test.ts +4 -150
  62. package/src/__tests__/actor-token-service.test.ts +17 -678
  63. package/src/__tests__/agent-loop-callsite-precedence.test.ts +2 -6
  64. package/src/__tests__/agent-loop-override-profile.test.ts +404 -0
  65. package/src/__tests__/agent-loop-thinking.test.ts +4 -4
  66. package/src/__tests__/agent-wake-override-profile.test.ts +261 -0
  67. package/src/__tests__/always-loaded-tools-guard.test.ts +2 -1
  68. package/src/__tests__/anthropic-provider.test.ts +127 -15
  69. package/src/__tests__/app-routes-csp.test.ts +106 -55
  70. package/src/__tests__/approval-cascade.test.ts +3 -355
  71. package/src/__tests__/approval-conversation-turn.test.ts +3 -8
  72. package/src/__tests__/approval-hardcoded-copy-guard.test.ts +1 -1
  73. package/src/__tests__/approval-primitive.test.ts +2 -1
  74. package/src/__tests__/approval-routes-http.test.ts +34 -451
  75. package/src/__tests__/assistant-events-sse-hardening.test.ts +73 -80
  76. package/src/__tests__/assistant-id-boundary-guard.test.ts +0 -3
  77. package/src/__tests__/attachment-upload-trusted-source.test.ts +139 -0
  78. package/src/__tests__/attachments-store.test.ts +46 -1
  79. package/src/__tests__/audit-log-rotation.test.ts +2 -1
  80. package/src/__tests__/auto-analysis-end-to-end.test.ts +8 -20
  81. package/src/__tests__/background-shell-bash.test.ts +227 -0
  82. package/src/__tests__/background-shell-host-bash.test.ts +474 -0
  83. package/src/__tests__/background-tool-registry.test.ts +145 -0
  84. package/src/__tests__/background-tool-routes.test.ts +175 -0
  85. package/src/__tests__/btw-routes.test.ts +147 -183
  86. package/src/__tests__/call-controller.test.ts +15 -2
  87. package/src/__tests__/call-conversation-messages.test.ts +2 -1
  88. package/src/__tests__/call-domain.test.ts +2 -2
  89. package/src/__tests__/call-pointer-messages.test.ts +11 -13
  90. package/src/__tests__/call-recovery.test.ts +2 -1
  91. package/src/__tests__/call-routes-http.test.ts +3 -14
  92. package/src/__tests__/call-store.test.ts +2 -1
  93. package/src/__tests__/cancel-resolves-conversation-key.test.ts +31 -62
  94. package/src/__tests__/canonical-guardian-store.test.ts +2 -2
  95. package/src/__tests__/catalog-files.test.ts +0 -26
  96. package/src/__tests__/ces-rpc-credential-backend.test.ts +1 -1
  97. package/src/__tests__/channel-approval-routes.test.ts +79 -49
  98. package/src/__tests__/channel-approval.test.ts +9 -7
  99. package/src/__tests__/channel-approvals.test.ts +9 -180
  100. package/src/__tests__/channel-delivery-store.test.ts +11 -10
  101. package/src/__tests__/channel-guardian.test.ts +14 -25
  102. package/src/__tests__/channel-readiness-service.test.ts +8 -6
  103. package/src/__tests__/channel-reply-delivery.test.ts +3 -19
  104. package/src/__tests__/channel-retry-sweep.test.ts +2 -5
  105. package/src/__tests__/checker.test.ts +274 -3921
  106. package/src/__tests__/circuit-breaker-pipeline.test.ts +1 -1
  107. package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +208 -0
  108. package/src/__tests__/cli.test.ts +1 -38
  109. package/src/__tests__/compaction-events.test.ts +0 -1
  110. package/src/__tests__/compaction-pipeline.test.ts +1 -1
  111. package/src/__tests__/compaction-strip-metadata-clear.test.ts +2 -2
  112. package/src/__tests__/compaction-timeout-recovery.test.ts +1 -1
  113. package/src/__tests__/config-managed-gemini-defaults.test.ts +3 -7
  114. package/src/__tests__/config-model-image-provider.test.ts +0 -1
  115. package/src/__tests__/config-schema-cmd.test.ts +1 -1
  116. package/src/__tests__/config-schema.test.ts +30 -221
  117. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +4 -25
  118. package/src/__tests__/contact-store-user-file.test.ts +2 -1
  119. package/src/__tests__/contacts-tools.test.ts +56 -29
  120. package/src/__tests__/contacts-write.test.ts +6 -61
  121. package/src/__tests__/context-search-agent-protocol.test.ts +230 -0
  122. package/src/__tests__/context-search-agent-runner.test.ts +998 -0
  123. package/src/__tests__/context-search-conversations-source.test.ts +320 -0
  124. package/src/__tests__/context-search-fanout.test.ts +380 -0
  125. package/src/__tests__/context-search-memory-source.test.ts +311 -0
  126. package/src/__tests__/context-search-pkb-source.test.ts +444 -0
  127. package/src/__tests__/context-search-types.test.ts +95 -0
  128. package/src/__tests__/context-search-workspace-source.test.ts +545 -0
  129. package/src/__tests__/context-window-manager.test.ts +25 -0
  130. package/src/__tests__/conversation-abort-tool-results.test.ts +10 -1
  131. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +631 -0
  132. package/src/__tests__/conversation-agent-loop-overflow.test.ts +15 -2
  133. package/src/__tests__/conversation-agent-loop.test.ts +24 -2
  134. package/src/__tests__/conversation-analysis-routes.test.ts +60 -82
  135. package/src/__tests__/conversation-attachments.test.ts +9 -20
  136. package/src/__tests__/conversation-attention-store.test.ts +2 -1
  137. package/src/__tests__/conversation-attention-telegram.test.ts +4 -2
  138. package/src/__tests__/conversation-clear-safety.test.ts +53 -95
  139. package/src/__tests__/conversation-confirmation-signals.test.ts +1 -39
  140. package/src/__tests__/conversation-crud-inference-profile.test.ts +54 -0
  141. package/src/__tests__/conversation-delete-schedule-cleanup.test.ts +63 -157
  142. package/src/__tests__/conversation-disk-view-integration.test.ts +2 -2
  143. package/src/__tests__/conversation-disk-view.test.ts +5 -4
  144. package/src/__tests__/conversation-fork-crud.test.ts +26 -55
  145. package/src/__tests__/conversation-fork-route.test.ts +5 -74
  146. package/src/__tests__/conversation-inference-profile-list.test.ts +128 -0
  147. package/src/__tests__/conversation-inference-profile-route.test.ts +216 -0
  148. package/src/__tests__/conversation-init.benchmark.test.ts +4 -81
  149. package/src/__tests__/conversation-key-store-disk-view.test.ts +2 -1
  150. package/src/__tests__/conversation-lifecycle.test.ts +0 -1
  151. package/src/__tests__/conversation-list-source.test.ts +2 -2
  152. package/src/__tests__/conversation-load-history-repair.test.ts +0 -1
  153. package/src/__tests__/conversation-pairing.test.ts +0 -1
  154. package/src/__tests__/conversation-pre-run-repair.test.ts +137 -297
  155. package/src/__tests__/conversation-process-callsite.test.ts +0 -1
  156. package/src/__tests__/conversation-provider-retry-repair.test.ts +6 -1
  157. package/src/__tests__/conversation-queue.test.ts +1 -33
  158. package/src/__tests__/conversation-routes-disk-view.test.ts +124 -97
  159. package/src/__tests__/conversation-routes-guardian-reply.test.ts +80 -55
  160. package/src/__tests__/conversation-routes-slash-commands.test.ts +83 -12
  161. package/src/__tests__/conversation-runtime-assembly.test.ts +41 -84
  162. package/src/__tests__/conversation-slash-commands.test.ts +6 -43
  163. package/src/__tests__/conversation-slash-queue.test.ts +0 -1
  164. package/src/__tests__/conversation-slash-unknown.test.ts +0 -1
  165. package/src/__tests__/conversation-speed-override.test.ts +0 -1
  166. package/src/__tests__/conversation-starter-routes.test.ts +177 -55
  167. package/src/__tests__/conversation-starters-cadence.test.ts +2 -2
  168. package/src/__tests__/conversation-store.test.ts +2 -375
  169. package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +1 -1
  170. package/src/__tests__/conversation-tool-setup-memory-scope.test.ts +6 -6
  171. package/src/__tests__/conversation-unread-route.test.ts +1 -1
  172. package/src/__tests__/conversation-usage.test.ts +2 -1
  173. package/src/__tests__/conversation-wipe.test.ts +2 -103
  174. package/src/__tests__/conversation-workspace-cache-state.test.ts +0 -1
  175. package/src/__tests__/conversation-workspace-injection.test.ts +0 -1
  176. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +0 -1
  177. package/src/__tests__/conversations-defer-cli.test.ts +150 -0
  178. package/src/__tests__/credential-execution-admin-cli.test.ts +1 -1
  179. package/src/__tests__/credential-execution-api-key-propagation.test.ts +2 -2
  180. package/src/__tests__/credential-execution-approval-bridge.test.ts +22 -289
  181. package/src/__tests__/credential-execution-client.test.ts +1 -1
  182. package/src/__tests__/credential-execution-managed-contract.test.ts +1 -1
  183. package/src/__tests__/credential-security-invariants.test.ts +14 -0
  184. package/src/__tests__/credentials-cli.test.ts +45 -21
  185. package/src/__tests__/daemon-credential-client.test.ts +23 -108
  186. package/src/__tests__/db-acp-history.test.ts +284 -0
  187. package/src/__tests__/db-activation-state.test.ts +240 -0
  188. package/src/__tests__/db-conversation-fork-lineage-migration.test.ts +2 -1
  189. package/src/__tests__/db-conversation-inference-profile-migration.test.ts +248 -0
  190. package/src/__tests__/db-llm-request-log-provider-migration.test.ts +2 -1
  191. package/src/__tests__/db-memory-graph-event-date-repair.test.ts +116 -0
  192. package/src/__tests__/db-rename-inference-profile-snake-case-migration.test.ts +132 -0
  193. package/src/__tests__/db-schedule-syntax-migration.test.ts +1 -0
  194. package/src/__tests__/delete-propagation.test.ts +3 -2
  195. package/src/__tests__/deterministic-verification-control-plane.test.ts +39 -32
  196. package/src/__tests__/dm-backfill.test.ts +3 -2
  197. package/src/__tests__/edit-propagation.test.ts +5 -7
  198. package/src/__tests__/embedding-managed-proxy-selection.test.ts +1 -1
  199. package/src/__tests__/empty-response-pipeline.test.ts +1 -1
  200. package/src/__tests__/events-client-registration.test.ts +297 -0
  201. package/src/__tests__/file-write-tool.test.ts +2 -4
  202. package/src/__tests__/filing-service.test.ts +144 -17
  203. package/src/__tests__/followup-tools.test.ts +2 -1
  204. package/src/__tests__/gateway-client-managed-outbound.test.ts +8 -12
  205. package/src/__tests__/gateway-only-enforcement.test.ts +2 -6
  206. package/src/__tests__/gateway-only-guard.test.ts +4 -3
  207. package/src/__tests__/gemini-provider.test.ts +276 -10
  208. package/src/__tests__/graph-extraction-event-date.test.ts +30 -0
  209. package/src/__tests__/guardian-action-conversation-turn.test.ts +2 -1
  210. package/src/__tests__/guardian-action-followup-executor.test.ts +2 -2
  211. package/src/__tests__/guardian-action-followup-store.test.ts +2 -1
  212. package/src/__tests__/guardian-action-grant-mint-consume.test.ts +9 -9
  213. package/src/__tests__/guardian-action-late-reply.test.ts +2 -1
  214. package/src/__tests__/guardian-action-store.test.ts +2 -1
  215. package/src/__tests__/guardian-action-sweep.test.ts +9 -8
  216. package/src/__tests__/guardian-binding-drift-heal.test.ts +2 -1
  217. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +21 -118
  218. package/src/__tests__/guardian-dispatch.test.ts +14 -11
  219. package/src/__tests__/guardian-grant-minting.test.ts +9 -15
  220. package/src/__tests__/guardian-outbound-http.test.ts +71 -106
  221. package/src/__tests__/guardian-principal-id-roundtrip.test.ts +2 -2
  222. package/src/__tests__/guardian-routing-invariants.test.ts +34 -90
  223. package/src/__tests__/guardian-routing-state.test.ts +14 -22
  224. package/src/__tests__/guardian-verification-voice-binding.test.ts +1 -2
  225. package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +253 -0
  226. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +8 -4
  227. package/src/__tests__/heartbeat-service.test.ts +39 -21
  228. package/src/__tests__/helpers/call-route-handler.ts +72 -0
  229. package/src/__tests__/helpers/channel-test-adapter.ts +161 -0
  230. package/src/__tests__/helpers/gateway-classify-mock.ts +67 -0
  231. package/src/__tests__/helpers/mock-logger.ts +36 -0
  232. package/src/__tests__/history-repair-pipeline.test.ts +1 -1
  233. package/src/__tests__/home-state-routes.test.ts +10 -31
  234. package/src/__tests__/host-browser-e2e-cloud.test.ts +2 -1
  235. package/src/__tests__/host-browser-e2e-self-hosted-capability.test.ts +12 -2
  236. package/src/__tests__/host-browser-routes.test.ts +36 -91
  237. package/src/__tests__/host-browser-ws-events-e2e.test.ts +10 -2
  238. package/src/__tests__/host-proxy-interface.test.ts +3 -3
  239. package/src/__tests__/host-shell-tool.test.ts +2 -4
  240. package/src/__tests__/host-transfer-pending-interactions.test.ts +160 -0
  241. package/src/__tests__/host-transfer-proxy.test.ts +733 -0
  242. package/src/__tests__/http-conversation-lineage.test.ts +3 -2
  243. package/src/__tests__/http-user-message-parity.test.ts +20 -11
  244. package/src/__tests__/inbound-invite-redemption.test.ts +3 -2
  245. package/src/__tests__/injector-chain.test.ts +16 -17
  246. package/src/__tests__/inline-skill-load-permissions.test.ts +41 -206
  247. package/src/__tests__/install-skill-routing.test.ts +1 -1
  248. package/src/__tests__/invite-redemption-service.test.ts +2 -1
  249. package/src/__tests__/invite-routes-http.test.ts +80 -12
  250. package/src/__tests__/jobs-store-qdrant-breaker.test.ts +2 -1
  251. package/src/__tests__/jobs-store-upsert-debounced.test.ts +2 -1
  252. package/src/__tests__/lifecycle-memory-v2-seed.test.ts +157 -0
  253. package/src/__tests__/list-messages-attachments.test.ts +52 -55
  254. package/src/__tests__/list-messages-page-latest.test.ts +283 -0
  255. package/src/__tests__/list-messages-tool-merge.test.ts +16 -17
  256. package/src/__tests__/llm-call-pipeline.test.ts +7 -8
  257. package/src/__tests__/llm-context-normalization.test.ts +69 -4
  258. package/src/__tests__/llm-context-route-provider.test.ts +39 -113
  259. package/src/__tests__/llm-request-log-turn-query.test.ts +2 -1
  260. package/src/__tests__/llm-resolver.test.ts +211 -0
  261. package/src/__tests__/llm-schema.test.ts +57 -1
  262. package/src/__tests__/llm-usage-store.test.ts +2 -1
  263. package/src/__tests__/log-export-workspace.test.ts +28 -17
  264. package/src/__tests__/mcp-abort-signal.test.ts +2 -3
  265. package/src/__tests__/mcp-client-auth.test.ts +2 -3
  266. package/src/__tests__/memory-admin-recall.test.ts +221 -0
  267. package/src/__tests__/memory-recall-log-store.test.ts +2 -1
  268. package/src/__tests__/memory-retrieval-pipeline.test.ts +6 -8
  269. package/src/__tests__/memory-upsert-concurrency.test.ts +2 -1
  270. package/src/__tests__/migration-cross-version-compatibility.test.ts +14 -13
  271. package/src/__tests__/migration-export-http.test.ts +17 -17
  272. package/src/__tests__/migration-export-to-gcs.test.ts +491 -0
  273. package/src/__tests__/migration-import-commit-http.test.ts +16 -16
  274. package/src/__tests__/migration-import-from-gcs.test.ts +533 -0
  275. package/src/__tests__/migration-import-from-url.test.ts +16 -23
  276. package/src/__tests__/migration-import-preflight-http.test.ts +13 -13
  277. package/src/__tests__/migration-jobs-status.test.ts +164 -0
  278. package/src/__tests__/migration-validate-http.test.ts +48 -83
  279. package/src/__tests__/mock-gateway-ipc.ts +32 -62
  280. package/src/__tests__/model-intents.test.ts +15 -2
  281. package/src/__tests__/nl-approval-parser.test.ts +13 -17
  282. package/src/__tests__/non-member-access-request.test.ts +13 -5
  283. package/src/__tests__/notification-guardian-path.test.ts +15 -8
  284. package/src/__tests__/notification-schedule-notify-dedup.test.ts +2 -1
  285. package/src/__tests__/notification-telegram-adapter.test.ts +57 -55
  286. package/src/__tests__/oauth-apps-routes.test.ts +76 -122
  287. package/src/__tests__/oauth-cli.test.ts +14 -1
  288. package/src/__tests__/oauth-provider-profiles.test.ts +1 -1
  289. package/src/__tests__/oauth-provider-visibility.test.ts +3 -1
  290. package/src/__tests__/oauth-providers-routes.test.ts +78 -101
  291. package/src/__tests__/oauth-store.test.ts +3 -1
  292. package/src/__tests__/oauth2-gateway-transport.test.ts +6 -3
  293. package/src/__tests__/openai-provider.test.ts +105 -6
  294. package/src/__tests__/openai-responses-provider.test.ts +146 -4
  295. package/src/__tests__/openrouter-provider-only.test.ts +22 -4
  296. package/src/__tests__/overflow-reduce-pipeline.test.ts +4 -9
  297. package/src/__tests__/permission-types.test.ts +3 -18
  298. package/src/__tests__/persistence-pipeline.test.ts +3 -2
  299. package/src/__tests__/pipeline-runner.test.ts +1 -1
  300. package/src/__tests__/platform-bash-auto-approve.test.ts +27 -20
  301. package/src/__tests__/platform.test.ts +11 -63
  302. package/src/__tests__/playbook-execution.test.ts +2 -1
  303. package/src/__tests__/playbook-tools.test.ts +2 -1
  304. package/src/__tests__/plugin-bootstrap.test.ts +51 -5
  305. package/src/__tests__/plugin-registry.test.ts +30 -0
  306. package/src/__tests__/plugin-route-contribution.test.ts +17 -11
  307. package/src/__tests__/plugin-skill-contribution.test.ts +3 -3
  308. package/src/__tests__/plugin-tool-contribution.test.ts +10 -4
  309. package/src/__tests__/plugin-types.test.ts +1 -1
  310. package/src/__tests__/pricing.test.ts +151 -2
  311. package/src/__tests__/profiler-routes.test.ts +112 -177
  312. package/src/__tests__/provider-send-message-override-profile.test.ts +223 -0
  313. package/src/__tests__/proxy-approval-callback.test.ts +6 -554
  314. package/src/__tests__/qdrant-collection-migration.test.ts +7 -7
  315. package/src/__tests__/reaction-persistence.test.ts +3 -2
  316. package/src/__tests__/rebuild-index-graph-nodes.test.ts +1 -1
  317. package/src/__tests__/recording-handler.test.ts +0 -2
  318. package/src/__tests__/registry.test.ts +1 -0
  319. package/src/__tests__/relay-server.test.ts +19 -4
  320. package/src/__tests__/require-fresh-approval.test.ts +19 -168
  321. package/src/__tests__/resolve-trust-class.test.ts +2 -1
  322. package/src/__tests__/retry-thinking-tool-choice.test.ts +19 -7
  323. package/src/__tests__/retry-verbosity-normalization.test.ts +139 -0
  324. package/src/__tests__/runtime-attachment-metadata.test.ts +26 -6
  325. package/src/__tests__/runtime-events-sse-parity.test.ts +12 -13
  326. package/src/__tests__/runtime-events-sse.test.ts +13 -21
  327. package/src/__tests__/schedule-routes.test.ts +226 -129
  328. package/src/__tests__/schedule-store.test.ts +119 -1
  329. package/src/__tests__/schedule-tools.test.ts +2 -1
  330. package/src/__tests__/scheduler-recurrence.test.ts +2 -1
  331. package/src/__tests__/scheduler-reuse-conversation.test.ts +2 -1
  332. package/src/__tests__/scheduler-wake.test.ts +356 -0
  333. package/src/__tests__/scoped-approval-grants.test.ts +2 -1
  334. package/src/__tests__/scoped-grant-security-matrix.test.ts +2 -1
  335. package/src/__tests__/secret-detection-handler.test.ts +2 -9
  336. package/src/__tests__/secret-ingress-http.test.ts +38 -21
  337. package/src/__tests__/secret-routes-managed-proxy.test.ts +46 -102
  338. package/src/__tests__/secret-scanner-executor.test.ts +1 -2
  339. package/src/__tests__/send-endpoint-busy.test.ts +38 -25
  340. package/src/__tests__/sequence-store.test.ts +2 -1
  341. package/src/__tests__/server-history-render.test.ts +2 -2
  342. package/src/__tests__/service-contracts-import-guard.test.ts +185 -0
  343. package/src/__tests__/set-permission-mode.test.ts +0 -10
  344. package/src/__tests__/settings-routes.test.ts +35 -68
  345. package/src/__tests__/skill-boundary-guard.test.ts +105 -0
  346. package/src/__tests__/skill-load-inline-command.test.ts +2 -2
  347. package/src/__tests__/skill-load-inline-includes.test.ts +2 -2
  348. package/src/__tests__/skill-runtime-path.test.ts +64 -0
  349. package/src/__tests__/skills-file-content-endpoint.test.ts +0 -2
  350. package/src/__tests__/slack-inbound-verification.test.ts +11 -2
  351. package/src/__tests__/slack-messaging-token-resolution.test.ts +1 -3
  352. package/src/__tests__/slack-reaction-approvals.test.ts +4 -4
  353. package/src/__tests__/slack-share-routes.test.ts +37 -72
  354. package/src/__tests__/subagent-call-site-routing.test.ts +79 -0
  355. package/src/__tests__/subagent-fork-spawn.test.ts +20 -28
  356. package/src/__tests__/subagent-notify-parent.test.ts +6 -29
  357. package/src/__tests__/subagent-role-registry.test.ts +3 -3
  358. package/src/__tests__/subagent-spawn-tool-fork.test.ts +52 -104
  359. package/src/__tests__/subagent-tools.test.ts +0 -1
  360. package/src/__tests__/suggestion-routes.test.ts +55 -62
  361. package/src/__tests__/task-compiler.test.ts +2 -1
  362. package/src/__tests__/task-management-tools.test.ts +2 -1
  363. package/src/__tests__/task-memory-cleanup.test.ts +2 -1
  364. package/src/__tests__/task-scheduler.test.ts +2 -1
  365. package/src/__tests__/telegram-config.test.ts +0 -1
  366. package/src/__tests__/terminal-tools.test.ts +5 -314
  367. package/src/__tests__/test-preload.ts +0 -11
  368. package/src/__tests__/thread-backfill.test.ts +3 -2
  369. package/src/__tests__/token-estimate-pipeline.test.ts +68 -15
  370. package/src/__tests__/tool-approval-handler.test.ts +21 -63
  371. package/src/__tests__/tool-audit-listener.test.ts +3 -3
  372. package/src/__tests__/tool-domain-event-publisher.test.ts +3 -3
  373. package/src/__tests__/tool-error-pipeline.test.ts +6 -6
  374. package/src/__tests__/tool-execute-pipeline.test.ts +6 -8
  375. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +64 -1
  376. package/src/__tests__/tool-executor-lifecycle-events.test.ts +28 -56
  377. package/src/__tests__/tool-executor.test.ts +322 -1633
  378. package/src/__tests__/tool-grant-request-escalation.test.ts +90 -311
  379. package/src/__tests__/tool-result-truncate-pipeline.test.ts +1 -1
  380. package/src/__tests__/trust-context-guards.test.ts +1 -1
  381. package/src/__tests__/trusted-contact-approval-notifier.test.ts +7 -15
  382. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +178 -354
  383. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +3 -2
  384. package/src/__tests__/trusted-contact-multichannel.test.ts +3 -2
  385. package/src/__tests__/trusted-contact-verification.test.ts +2 -1
  386. package/src/__tests__/turn-boundary-resolution.test.ts +2 -1
  387. package/src/__tests__/twilio-routes.test.ts +25 -66
  388. package/src/__tests__/usage-cache-backfill-migration.test.ts +3 -7
  389. package/src/__tests__/usage-routes.test.ts +73 -90
  390. package/src/__tests__/user-plugin-loader.test.ts +54 -12
  391. package/src/__tests__/vellum-self-knowledge-inline-command.test.ts +2 -2
  392. package/src/__tests__/verification-control-plane-policy.test.ts +95 -14
  393. package/src/__tests__/voice-ingress-preflight.test.ts +5 -5
  394. package/src/__tests__/voice-invite-redemption.test.ts +2 -1
  395. package/src/__tests__/voice-scoped-grant-consumer.test.ts +3 -3
  396. package/src/__tests__/voice-session-bridge.test.ts +285 -106
  397. package/src/__tests__/volume-security-guard.test.ts +0 -2
  398. package/src/__tests__/workspace-migration-009-backfill-conversation-disk-view.test.ts +2 -1
  399. package/src/__tests__/workspace-migration-013-repair-conversation-disk-view.test.ts +3 -1
  400. package/src/__tests__/workspace-migration-028-recover-conversations-from-disk-view.test.ts +2 -1
  401. package/src/__tests__/workspace-migration-045-release-notes-meet-avatar.test.ts +1 -1
  402. package/src/__tests__/workspace-migration-052-seed-default-inference-profiles.test.ts +260 -0
  403. package/src/__tests__/workspace-migration-053-release-notes-acp-codex.test.ts +225 -0
  404. package/src/__tests__/workspace-migration-054-seed-recall-callsite.test.ts +235 -0
  405. package/src/__tests__/workspace-migration-055-release-notes-agentic-recall.test.ts +128 -0
  406. package/src/__tests__/workspace-migration-057-repair-stale-gemini-model-ids.test.ts +232 -0
  407. package/src/__tests__/workspace-migration-acp-sessions-ui.test.ts +144 -0
  408. package/src/__tests__/workspace-migration-drop-user-md.test.ts +1 -1
  409. package/src/__tests__/workspace-migration-memory-v2-init.test.ts +274 -0
  410. package/src/acp/__tests__/client-handler.test.ts +64 -0
  411. package/src/acp/__tests__/helpers/acp-config-stub.ts +62 -0
  412. package/src/acp/__tests__/helpers/which-stub.ts +45 -0
  413. package/src/acp/__tests__/session-manager-persistence.test.ts +366 -0
  414. package/src/acp/__tests__/session-manager-startup.test.ts +159 -0
  415. package/src/acp/__tests__/session-manager.test.ts +83 -0
  416. package/src/acp/client-handler.ts +23 -139
  417. package/src/acp/resolve-agent.test.ts +291 -0
  418. package/src/acp/resolve-agent.ts +176 -0
  419. package/src/acp/session-manager.ts +166 -7
  420. package/src/acp/types.ts +2 -50
  421. package/src/agent/loop.ts +37 -14
  422. package/src/agent/message-types.ts +0 -2
  423. package/src/approvals/AGENTS.md +1 -1
  424. package/src/approvals/__tests__/guardian-feed-event.test.ts +1 -9
  425. package/src/approvals/approval-primitive.ts +3 -20
  426. package/src/approvals/guardian-decision-primitive.ts +37 -68
  427. package/src/approvals/guardian-request-resolvers.ts +29 -103
  428. package/src/avatar/character-components.ts +6 -6
  429. package/src/{config/bundled-skills/settings/tools → avatar}/identity-avatar.ts +1 -1
  430. package/src/backup/__tests__/backup-worker.test.ts +0 -2
  431. package/src/backup/__tests__/paths.test.ts +3 -2
  432. package/src/backup/backup-worker.ts +1 -10
  433. package/src/backup/paths.ts +2 -18
  434. package/src/backup/restore.ts +7 -11
  435. package/src/browser/__tests__/operations.test.ts +0 -35
  436. package/src/browser/operations.ts +1 -47
  437. package/src/bundler/package-resolver.ts +2 -6
  438. package/src/calls/active-call-lease.ts +1 -1
  439. package/src/calls/call-constants.ts +1 -1
  440. package/src/calls/call-controller.ts +1 -5
  441. package/src/calls/call-domain.ts +14 -14
  442. package/src/calls/call-pointer-messages.ts +4 -9
  443. package/src/calls/call-store.ts +2 -1
  444. package/src/calls/guardian-action-sweep.ts +9 -25
  445. package/src/calls/guardian-dispatch.ts +1 -20
  446. package/src/calls/media-stream-audio-transcode.ts +2 -41
  447. package/src/calls/media-stream-server.ts +2 -3
  448. package/src/calls/media-stream-stt-session.ts +1 -3
  449. package/src/calls/relay-access-wait.ts +5 -8
  450. package/src/calls/relay-server.ts +15 -18
  451. package/src/calls/relay-setup-router.ts +2 -2
  452. package/src/calls/relay-verification.ts +4 -4
  453. package/src/calls/twilio-rest.ts +1 -1
  454. package/src/calls/twilio-routes.ts +160 -78
  455. package/src/calls/voice-control-protocol.ts +10 -10
  456. package/src/calls/voice-ingress-preflight.ts +2 -2
  457. package/src/calls/voice-session-bridge.ts +137 -42
  458. package/src/channels/__tests__/types.test.ts +25 -3
  459. package/src/channels/permission-profiles.ts +2 -72
  460. package/src/channels/types.ts +42 -26
  461. package/src/cli/AGENTS.md +1 -0
  462. package/src/cli/__tests__/notifications.test.ts +12 -10
  463. package/src/cli/commands/__tests__/attachment.test.ts +14 -8
  464. package/src/cli/commands/__tests__/backup.test.ts +3 -14
  465. package/src/cli/commands/__tests__/browser.test.ts +36 -31
  466. package/src/cli/commands/__tests__/cache.test.ts +23 -18
  467. package/src/cli/commands/__tests__/memory-v2.test.ts +396 -0
  468. package/src/cli/commands/__tests__/task.test.ts +36 -35
  469. package/src/cli/commands/__tests__/trust.test.ts +602 -0
  470. package/src/cli/commands/__tests__/ui-confirm.test.ts +14 -14
  471. package/src/cli/commands/__tests__/ui.test.ts +17 -17
  472. package/src/cli/commands/__tests__/watchers.test.ts +29 -29
  473. package/src/cli/commands/__tests__/webhooks.test.ts +544 -0
  474. package/src/cli/commands/attachment.ts +12 -8
  475. package/src/cli/commands/auth.ts +1 -1
  476. package/src/cli/commands/avatar.ts +192 -9
  477. package/src/cli/commands/backup.ts +14 -44
  478. package/src/cli/commands/browser.ts +52 -4
  479. package/src/cli/commands/cache.ts +7 -5
  480. package/src/cli/commands/channel-verification-sessions.ts +6 -6
  481. package/src/cli/commands/clients.ts +11 -12
  482. package/src/cli/commands/completions.ts +1 -1
  483. package/src/cli/commands/contacts.ts +10 -10
  484. package/src/cli/commands/conversations-defer.ts +364 -0
  485. package/src/cli/commands/conversations-import.ts +2 -3
  486. package/src/cli/commands/conversations.ts +63 -53
  487. package/src/cli/commands/credential-execution.ts +1 -1
  488. package/src/cli/commands/credentials.ts +139 -5
  489. package/src/cli/commands/default-action.ts +1 -1
  490. package/src/cli/commands/domain.ts +2 -2
  491. package/src/cli/commands/email.ts +7 -7
  492. package/src/cli/commands/image-generation.ts +1 -1
  493. package/src/cli/commands/keys.ts +2 -2
  494. package/src/cli/commands/mcp.ts +1 -1
  495. package/src/cli/commands/memory-v2.ts +343 -0
  496. package/src/cli/commands/memory.ts +8 -8
  497. package/src/cli/commands/notifications.ts +21 -20
  498. package/src/cli/commands/oauth/__tests__/connect.test.ts +23 -5
  499. package/src/cli/commands/oauth/__tests__/disconnect.test.ts +1 -1
  500. package/src/cli/commands/oauth/__tests__/mode.test.ts +1 -1
  501. package/src/cli/commands/oauth/__tests__/status.test.ts +1 -1
  502. package/src/cli/commands/oauth/__tests__/token.test.ts +1 -1
  503. package/src/cli/commands/oauth/connect.ts +2 -2
  504. package/src/cli/commands/oauth/shared.ts +29 -2
  505. package/src/cli/commands/platform/__tests__/callback-routes-list.test.ts +0 -6
  506. package/src/cli/commands/platform/__tests__/connect.test.ts +23 -11
  507. package/src/cli/commands/platform/__tests__/disconnect.test.ts +22 -10
  508. package/src/cli/commands/platform/__tests__/status.test.ts +22 -10
  509. package/src/cli/commands/platform/connect.ts +3 -3
  510. package/src/cli/commands/platform/disconnect.ts +4 -6
  511. package/src/cli/commands/platform/index.ts +12 -10
  512. package/src/cli/commands/routes.ts +7 -1
  513. package/src/cli/commands/sequence.ts +7 -7
  514. package/src/cli/commands/skills.ts +188 -82
  515. package/src/cli/commands/task.ts +12 -10
  516. package/src/cli/commands/trust.ts +460 -162
  517. package/src/cli/commands/ui.ts +3 -3
  518. package/src/cli/commands/usage.ts +10 -5
  519. package/src/cli/commands/watchers.ts +8 -8
  520. package/src/cli/commands/webhooks.ts +270 -0
  521. package/src/cli/lib/daemon-avatar-client.ts +37 -0
  522. package/src/cli/lib/daemon-credential-client.ts +27 -189
  523. package/src/cli/lib/ipc-params.ts +22 -0
  524. package/src/cli/program.ts +4 -0
  525. package/src/cli.ts +1 -61
  526. package/src/config/acp-defaults.test.ts +57 -0
  527. package/src/config/acp-defaults.ts +40 -0
  528. package/src/config/acp-schema.ts +1 -1
  529. package/src/config/assistant-feature-flags.ts +18 -142
  530. package/src/config/bundled-skills/acp/SKILL.md +44 -16
  531. package/src/config/bundled-skills/acp/TOOLS.json +45 -1
  532. package/src/config/bundled-skills/acp/tools/acp-list-agents.ts +12 -0
  533. package/src/config/bundled-skills/acp/tools/acp-steer.ts +12 -0
  534. package/src/config/bundled-skills/contacts/tools/contact-merge.ts +14 -14
  535. package/src/config/bundled-skills/contacts/tools/contact-search.ts +1 -4
  536. package/src/config/bundled-skills/contacts/tools/contact-upsert.ts +11 -6
  537. package/src/config/bundled-skills/media-processing/__tests__/cost-tracker.test.ts +6 -6
  538. package/src/config/bundled-skills/media-processing/services/reduce.ts +0 -13
  539. package/src/config/bundled-skills/messaging/tools/gmail-mime-helpers.ts +1 -1
  540. package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +1 -1
  541. package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +1 -1
  542. package/src/config/bundled-skills/playbooks/tools/playbook-list.ts +1 -1
  543. package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +1 -1
  544. package/src/config/bundled-skills/settings/SKILL.md +2 -17
  545. package/src/config/bundled-skills/settings/TOOLS.json +0 -56
  546. package/src/config/bundled-skills/subagent/SKILL.md +2 -0
  547. package/src/config/bundled-tool-registry.ts +4 -6
  548. package/src/config/env.ts +7 -8
  549. package/src/config/feature-flag-registry.json +16 -24
  550. package/src/config/llm-resolver.ts +51 -33
  551. package/src/config/loader.ts +12 -15
  552. package/src/config/schema.ts +5 -72
  553. package/src/config/schemas/__tests__/filing.test.ts +58 -0
  554. package/src/config/schemas/__tests__/memory-v2.test.ts +186 -0
  555. package/src/config/schemas/filing.ts +12 -0
  556. package/src/config/schemas/host-browser.ts +2 -2
  557. package/src/config/schemas/inference.ts +0 -2
  558. package/src/config/schemas/ingress.ts +1 -1
  559. package/src/config/schemas/llm.ts +51 -9
  560. package/src/config/schemas/memory-storage.ts +1 -1
  561. package/src/config/schemas/memory-v2.ts +176 -0
  562. package/src/config/schemas/memory.ts +2 -0
  563. package/src/config/schemas/security.ts +0 -60
  564. package/src/config/schemas/services.ts +46 -7
  565. package/src/config/skills.ts +1 -1
  566. package/src/config/types.ts +0 -41
  567. package/src/contacts/contact-store.ts +2 -2
  568. package/src/contacts/contacts-write.ts +0 -38
  569. package/src/contacts/types.ts +8 -10
  570. package/src/context/token-estimator.ts +1 -1
  571. package/src/context/tool-result-truncation.ts +1 -1
  572. package/src/context/window-manager.ts +1 -1
  573. package/src/credential-execution/approval-bridge.ts +7 -69
  574. package/src/credential-execution/client.ts +17 -422
  575. package/src/credential-execution/feature-gates.ts +1 -2
  576. package/src/credential-execution/managed-catalog.ts +1 -1
  577. package/src/credential-health/credential-health-service.ts +1 -1
  578. package/src/daemon/__tests__/conversation-feed-event.test.ts +0 -13
  579. package/src/daemon/__tests__/conversation-surfaces-launch.test.ts +1 -1
  580. package/src/daemon/__tests__/daemon-skill-host.test.ts +272 -0
  581. package/src/daemon/__tests__/meet-host-supervisor.test.ts +587 -0
  582. package/src/daemon/__tests__/meet-manifest-loader.test.ts +463 -0
  583. package/src/daemon/approval-generators.ts +2 -14
  584. package/src/daemon/classifier.ts +0 -106
  585. package/src/daemon/config-watcher.ts +14 -54
  586. package/src/daemon/connection-policy.ts +0 -14
  587. package/src/daemon/conversation-agent-loop-handlers.ts +37 -6
  588. package/src/daemon/conversation-agent-loop.ts +164 -53
  589. package/src/daemon/conversation-attachments.ts +5 -81
  590. package/src/daemon/conversation-error.ts +9 -5
  591. package/src/daemon/conversation-history.ts +1 -1
  592. package/src/daemon/conversation-launch.ts +1 -1
  593. package/src/daemon/conversation-messaging.ts +1 -1
  594. package/src/daemon/conversation-notifiers.ts +1 -1
  595. package/src/daemon/conversation-process.ts +9 -13
  596. package/src/daemon/conversation-runtime-assembly.ts +26 -88
  597. package/src/daemon/conversation-slash.ts +4 -160
  598. package/src/daemon/conversation-store.ts +368 -0
  599. package/src/daemon/conversation-surfaces.ts +5 -4
  600. package/src/daemon/conversation-tool-setup.ts +23 -172
  601. package/src/daemon/conversation.ts +46 -182
  602. package/src/daemon/daemon-control.ts +3 -3
  603. package/src/daemon/daemon-skill-host.ts +262 -0
  604. package/src/daemon/external-plugins-bootstrap.ts +67 -13
  605. package/src/daemon/handlers/config-channels.ts +2 -2
  606. package/src/daemon/handlers/config-embeddings.ts +1 -1
  607. package/src/daemon/handlers/config-ingress.ts +24 -2
  608. package/src/daemon/handlers/config-model.test.ts +17 -0
  609. package/src/daemon/handlers/config-model.ts +7 -52
  610. package/src/daemon/handlers/config-telegram.ts +6 -53
  611. package/src/daemon/handlers/config-voice.ts +1 -1
  612. package/src/daemon/handlers/conversations.ts +22 -156
  613. package/src/daemon/handlers/recording.ts +1 -1
  614. package/src/daemon/handlers/shared.ts +34 -35
  615. package/src/daemon/handlers/skills.ts +15 -23
  616. package/src/daemon/host-transfer-proxy.ts +500 -0
  617. package/src/daemon/lifecycle.ts +23 -258
  618. package/src/daemon/meet-host-startup.ts +51 -0
  619. package/src/daemon/meet-host-supervisor.ts +781 -0
  620. package/src/daemon/meet-manifest-loader.ts +410 -0
  621. package/src/daemon/memory-v2-startup.ts +35 -0
  622. package/src/daemon/message-protocol.ts +4 -7
  623. package/src/daemon/message-types/acp.ts +1 -0
  624. package/src/daemon/message-types/conversations.ts +16 -2
  625. package/src/daemon/message-types/host-transfer.ts +41 -0
  626. package/src/daemon/message-types/integrations.ts +6 -0
  627. package/src/daemon/message-types/messages.ts +14 -14
  628. package/src/daemon/message-types/schedules.ts +1 -0
  629. package/src/daemon/message-types/settings.ts +0 -6
  630. package/src/daemon/message-types/shared.ts +5 -2
  631. package/src/daemon/message-types/subagents.ts +2 -1
  632. package/src/daemon/message-types/workspace.ts +0 -2
  633. package/src/daemon/pkb-reminder-builder.test.ts +13 -12
  634. package/src/daemon/pkb-reminder-builder.ts +8 -16
  635. package/src/daemon/process-message.ts +616 -0
  636. package/src/daemon/providers-setup.ts +14 -6
  637. package/src/daemon/server.ts +79 -1274
  638. package/src/daemon/shutdown-handlers.ts +1 -1
  639. package/src/daemon/startup-error.ts +1 -1
  640. package/src/daemon/trust-context.ts +32 -0
  641. package/src/daemon/wake-target-adapter.ts +223 -0
  642. package/src/email/feature-gate.ts +1 -1
  643. package/src/events/domain-events.ts +1 -8
  644. package/src/events/tool-audit-listener.ts +2 -8
  645. package/src/events/tool-metrics-listener.ts +1 -4
  646. package/src/filing/filing-service.ts +194 -54
  647. package/src/followups/followup-store.ts +3 -71
  648. package/src/heartbeat/__tests__/heartbeat-feed-event.test.ts +89 -21
  649. package/src/heartbeat/heartbeat-service.ts +32 -11
  650. package/src/home/__tests__/phase5-exit-criteria.test.ts +18 -1
  651. package/src/home/__tests__/rollup-producer.test.ts +67 -2
  652. package/src/home/assistant-feed-authoring.ts +8 -1
  653. package/src/home/feed-types.ts +1 -1
  654. package/src/home/relationship-state-writer.ts +1 -1
  655. package/src/home/rewrite-feed-title.ts +58 -0
  656. package/src/home/rollup-producer.ts +16 -3
  657. package/src/inbound/platform-callback-registration.ts +1 -17
  658. package/src/ipc/__tests__/attachment-ipc.test.ts +128 -66
  659. package/src/ipc/__tests__/browser-ipc.test.ts +75 -51
  660. package/src/ipc/__tests__/cache-ipc.test.ts +52 -107
  661. package/src/ipc/__tests__/cli-ipc.test.ts +9 -6
  662. package/src/ipc/__tests__/skill-server-bidirectional.test.ts +254 -0
  663. package/src/ipc/__tests__/skill-server.test.ts +182 -0
  664. package/src/ipc/__tests__/socket-path.test.ts +69 -23
  665. package/src/ipc/__tests__/ui-request-route.test.ts +241 -216
  666. package/src/ipc/__tests__/watcher-ipc.test.ts +33 -33
  667. package/src/ipc/assistant-server.ts +450 -0
  668. package/src/ipc/cli-client.ts +3 -3
  669. package/src/ipc/gateway-client.test.ts +131 -0
  670. package/src/ipc/gateway-client.ts +98 -123
  671. package/src/ipc/ipc-framing.ts +281 -0
  672. package/src/ipc/routes/__tests__/memory-v2-backfill.test.ts +152 -0
  673. package/src/ipc/routes/__tests__/memory-v2-validate.test.ts +219 -0
  674. package/src/ipc/routes/db-proxy.ts +73 -0
  675. package/src/ipc/routes/route-adapter.ts +32 -0
  676. package/src/ipc/routes/trust-rules.test.ts +218 -0
  677. package/src/ipc/skill-ipc-types.ts +13 -0
  678. package/src/ipc/skill-routes/__tests__/config.test.ts +146 -0
  679. package/src/ipc/skill-routes/__tests__/events-ipc.test.ts +402 -0
  680. package/src/ipc/skill-routes/__tests__/identity.test.ts +81 -0
  681. package/src/ipc/skill-routes/__tests__/log.test.ts +133 -0
  682. package/src/ipc/skill-routes/__tests__/memory.test.ts +178 -0
  683. package/src/ipc/skill-routes/__tests__/platform.test.ts +111 -0
  684. package/src/ipc/skill-routes/__tests__/providers.test.ts +265 -0
  685. package/src/ipc/skill-routes/__tests__/registries.test.ts +361 -0
  686. package/src/ipc/skill-routes/config.ts +47 -0
  687. package/src/ipc/skill-routes/events.ts +131 -0
  688. package/src/ipc/skill-routes/identity.ts +34 -0
  689. package/src/ipc/skill-routes/index.ts +37 -0
  690. package/src/ipc/skill-routes/log.ts +40 -0
  691. package/src/ipc/skill-routes/memory.ts +76 -0
  692. package/src/ipc/skill-routes/platform.ts +39 -0
  693. package/src/ipc/skill-routes/providers.ts +163 -0
  694. package/src/ipc/skill-routes/registries.ts +393 -0
  695. package/src/ipc/skill-server.ts +771 -0
  696. package/src/ipc/skill-socket-path.ts +20 -0
  697. package/src/ipc/socket-cleanup.ts +92 -0
  698. package/src/ipc/socket-path.ts +63 -32
  699. package/src/live-voice/__tests__/live-voice-agent-turn.test.ts +374 -0
  700. package/src/live-voice/__tests__/live-voice-archive.test.ts +525 -0
  701. package/src/live-voice/__tests__/live-voice-events.test.ts +473 -0
  702. package/src/live-voice/__tests__/live-voice-integration.test.ts +359 -0
  703. package/src/live-voice/__tests__/live-voice-metrics.test.ts +179 -0
  704. package/src/live-voice/__tests__/live-voice-session-manager.test.ts +349 -0
  705. package/src/live-voice/__tests__/live-voice-stt.test.ts +244 -0
  706. package/src/live-voice/__tests__/live-voice-tts-session.test.ts +337 -0
  707. package/src/live-voice/__tests__/live-voice-tts.test.ts +337 -0
  708. package/src/live-voice/__tests__/protocol.test.ts +295 -0
  709. package/src/live-voice/__tests__/runtime-websocket-shell.test.ts +421 -0
  710. package/src/live-voice/live-voice-archive.ts +758 -0
  711. package/src/live-voice/live-voice-metrics.ts +472 -0
  712. package/src/live-voice/live-voice-session-manager.ts +222 -0
  713. package/src/live-voice/live-voice-session.ts +1144 -0
  714. package/src/live-voice/live-voice-tts.ts +260 -0
  715. package/src/live-voice/protocol.ts +524 -0
  716. package/src/mcp/client.ts +2 -2
  717. package/src/media/types.ts +4 -4
  718. package/src/memory/__tests__/auto-analysis-enqueue.test.ts +4 -28
  719. package/src/memory/__tests__/auto-analysis-guard.test.ts +2 -2
  720. package/src/memory/__tests__/conversation-analyze-job.test.ts +7 -62
  721. package/src/memory/__tests__/conversation-group-migration.test.ts +2 -2
  722. package/src/memory/__tests__/find-analysis-conversation.test.ts +2 -1
  723. package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +235 -0
  724. package/src/memory/admin.ts +65 -7
  725. package/src/memory/app-git-service.ts +0 -14
  726. package/src/memory/attachments-store.ts +14 -16
  727. package/src/memory/auto-analysis-enqueue.ts +2 -17
  728. package/src/memory/canonical-guardian-store.ts +2 -1
  729. package/src/memory/channel-verification-sessions.ts +1 -1
  730. package/src/memory/checkpoints.ts +1 -1
  731. package/src/memory/context-search/agent-protocol.ts +424 -0
  732. package/src/memory/context-search/agent-runner.ts +1295 -0
  733. package/src/memory/context-search/format.ts +160 -0
  734. package/src/memory/context-search/limits.ts +106 -0
  735. package/src/memory/context-search/search.ts +387 -0
  736. package/src/memory/context-search/sources/conversations.ts +278 -0
  737. package/src/memory/context-search/sources/memory.ts +90 -0
  738. package/src/memory/context-search/sources/pkb.ts +468 -0
  739. package/src/memory/context-search/sources/workspace.ts +1255 -0
  740. package/src/memory/context-search/types.ts +49 -0
  741. package/src/memory/conversation-analyze-job.ts +3 -24
  742. package/src/memory/conversation-attention-store.ts +1 -1
  743. package/src/memory/conversation-bootstrap.ts +1 -1
  744. package/src/memory/conversation-crud.ts +69 -127
  745. package/src/memory/conversation-directories.ts +1 -11
  746. package/src/memory/conversation-display-order-migration.ts +11 -2
  747. package/src/memory/conversation-group-migration.ts +20 -4
  748. package/src/memory/conversation-key-store.ts +3 -4
  749. package/src/memory/conversation-queries.ts +13 -26
  750. package/src/memory/conversation-starter-validation.ts +88 -0
  751. package/src/memory/conversation-starters-cadence.ts +1 -1
  752. package/src/memory/conversation-title-service.ts +2 -1
  753. package/src/memory/db-init.ts +14 -4
  754. package/src/memory/db-maintenance.ts +1 -1
  755. package/src/memory/delivery-channels.ts +1 -14
  756. package/src/memory/delivery-crud.ts +2 -32
  757. package/src/memory/delivery-status.ts +1 -1
  758. package/src/memory/embedding-gemini.test.ts +4 -4
  759. package/src/memory/external-conversation-store.ts +1 -1
  760. package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +412 -0
  761. package/src/memory/graph/__tests__/handle-remember-v2.test.ts +225 -0
  762. package/src/memory/graph/bootstrap.test.ts +2 -7
  763. package/src/memory/graph/bootstrap.ts +2 -1
  764. package/src/memory/graph/capability-seed.ts +3 -3
  765. package/src/memory/graph/compaction.ts +1 -1
  766. package/src/memory/graph/consolidation.ts +13 -10
  767. package/src/memory/graph/conversation-graph-memory.ts +151 -1
  768. package/src/memory/graph/decay.ts +1 -1
  769. package/src/memory/graph/extraction.ts +53 -21
  770. package/src/memory/graph/graph-memory-state-store.ts +1 -1
  771. package/src/memory/graph/graph-search.test.ts +94 -2
  772. package/src/memory/graph/graph-search.ts +22 -7
  773. package/src/memory/graph/image-ref-utils.ts +1 -1
  774. package/src/memory/graph/retriever.test.ts +158 -4
  775. package/src/memory/graph/retriever.ts +17 -5
  776. package/src/memory/graph/store.test.ts +2 -1
  777. package/src/memory/graph/store.ts +1 -1
  778. package/src/memory/graph/tool-handlers.ts +73 -247
  779. package/src/memory/graph/tools.ts +35 -53
  780. package/src/memory/group-crud.ts +1 -2
  781. package/src/memory/guardian-action-store.ts +2 -1
  782. package/src/memory/guardian-approvals.ts +1 -1
  783. package/src/memory/guardian-rate-limits.ts +1 -1
  784. package/src/memory/indexer.ts +43 -17
  785. package/src/memory/invite-store.ts +1 -1
  786. package/src/memory/job-handlers/backfill.ts +1 -1
  787. package/src/memory/job-handlers/cleanup.ts +2 -1
  788. package/src/memory/job-handlers/conversation-starters.ts +18 -10
  789. package/src/memory/job-handlers/embedding.test.ts +2 -1
  790. package/src/memory/job-handlers/embedding.ts +1 -1
  791. package/src/memory/job-handlers/index-maintenance.ts +1 -1
  792. package/src/memory/job-handlers/summarization.ts +3 -3
  793. package/src/memory/job-utils.ts +3 -3
  794. package/src/memory/jobs/__tests__/embed-concept-page.test.ts +362 -0
  795. package/src/memory/jobs/embed-concept-page.ts +210 -0
  796. package/src/memory/jobs/embed-pkb-file.test.ts +2 -1
  797. package/src/memory/jobs-store.ts +10 -2
  798. package/src/memory/jobs-worker.ts +58 -5
  799. package/src/memory/lifecycle-events-store.ts +1 -1
  800. package/src/memory/llm-request-log-store.ts +1 -1
  801. package/src/memory/llm-usage-store.ts +1 -1
  802. package/src/memory/media-store.ts +1 -1
  803. package/src/memory/memory-recall-log-store.ts +1 -1
  804. package/src/memory/migrations/038-actor-token-records.ts +3 -0
  805. package/src/memory/migrations/039-actor-refresh-token-records.ts +3 -0
  806. package/src/memory/migrations/226-schedule-wake-conversation-id.ts +11 -0
  807. package/src/memory/migrations/227-add-conversation-inference-profile.ts +18 -0
  808. package/src/memory/migrations/228-rename-inference-profile-snake-case.ts +27 -0
  809. package/src/memory/migrations/229-delete-private-conversations.test.ts +1087 -0
  810. package/src/memory/migrations/229-delete-private-conversations.ts +210 -0
  811. package/src/memory/migrations/230-acp-session-history.ts +41 -0
  812. package/src/memory/migrations/231-repair-memory-graph-event-dates.ts +128 -0
  813. package/src/memory/migrations/232-activation-state.ts +38 -0
  814. package/src/memory/migrations/index.ts +10 -0
  815. package/src/memory/migrations/registry.ts +7 -0
  816. package/src/memory/pkb/pkb-index.test.ts +4 -5
  817. package/src/memory/pkb/pkb-reconcile.test.ts +4 -5
  818. package/src/memory/pkb/pkb-search.test.ts +83 -3
  819. package/src/memory/pkb/pkb-search.ts +27 -14
  820. package/src/memory/published-pages-store.ts +1 -1
  821. package/src/memory/schema/acp.ts +30 -0
  822. package/src/memory/schema/conversations.ts +1 -1
  823. package/src/memory/schema/index.ts +1 -0
  824. package/src/memory/schema/infrastructure.ts +1 -32
  825. package/src/memory/schema/memory-graph.ts +36 -14
  826. package/src/memory/scoped-approval-grants.ts +2 -1
  827. package/src/memory/search/semantic.ts +2 -2
  828. package/src/memory/shared-app-links-store.ts +2 -1
  829. package/src/memory/tool-usage-store.ts +1 -1
  830. package/src/memory/trace-event-store.ts +2 -1
  831. package/src/memory/turn-events-store.ts +1 -1
  832. package/src/memory/v2/__tests__/activation-store.test.ts +202 -0
  833. package/src/memory/v2/__tests__/activation.test.ts +956 -0
  834. package/src/memory/v2/__tests__/backfill-jobs.test.ts +610 -0
  835. package/src/memory/v2/__tests__/consolidation-job.test.ts +395 -0
  836. package/src/memory/v2/__tests__/edges.test.ts +435 -0
  837. package/src/memory/v2/__tests__/injection.test.ts +792 -0
  838. package/src/memory/v2/__tests__/migration.test.ts +812 -0
  839. package/src/memory/v2/__tests__/page-store.test.ts +334 -0
  840. package/src/memory/v2/__tests__/qdrant.test.ts +438 -0
  841. package/src/memory/v2/__tests__/sim.test.ts +549 -0
  842. package/src/memory/v2/__tests__/skill-content.test.ts +85 -0
  843. package/src/memory/v2/__tests__/skill-qdrant.test.ts +657 -0
  844. package/src/memory/v2/__tests__/skill-store.test.ts +351 -0
  845. package/src/memory/v2/__tests__/sweep-job.test.ts +441 -0
  846. package/src/memory/v2/activation-store.ts +109 -0
  847. package/src/memory/v2/activation.ts +490 -0
  848. package/src/memory/v2/backfill-jobs.ts +442 -0
  849. package/src/memory/v2/consolidation-job.ts +304 -0
  850. package/src/memory/v2/edges.ts +217 -0
  851. package/src/memory/v2/injection.ts +307 -0
  852. package/src/memory/v2/migration.ts +654 -0
  853. package/src/memory/v2/now-text.ts +38 -0
  854. package/src/memory/v2/page-store.ts +245 -0
  855. package/src/memory/v2/prompts/consolidation.ts +185 -0
  856. package/src/memory/v2/prompts/sweep.ts +56 -0
  857. package/src/memory/v2/qdrant.ts +342 -0
  858. package/src/memory/v2/sim.ts +206 -0
  859. package/src/memory/v2/skill-content.ts +42 -0
  860. package/src/memory/v2/skill-qdrant.ts +395 -0
  861. package/src/memory/v2/skill-store.ts +128 -0
  862. package/src/memory/v2/sweep-job.ts +298 -0
  863. package/src/memory/v2/types.ts +116 -0
  864. package/src/memory/validation.ts +1 -1
  865. package/src/messaging/providers/index.ts +262 -0
  866. package/src/messaging/providers/slack/api.ts +242 -0
  867. package/src/messaging/providers/slack/message-metadata.ts +1 -1
  868. package/src/messaging/providers/slack/send.ts +383 -0
  869. package/src/messaging/providers/telegram-bot/adapter.ts +4 -42
  870. package/src/messaging/providers/telegram-bot/api.ts +253 -0
  871. package/src/messaging/providers/telegram-bot/client.ts +17 -58
  872. package/src/messaging/providers/telegram-bot/send.ts +232 -0
  873. package/src/messaging/providers/whatsapp/adapter.ts +4 -36
  874. package/src/messaging/providers/whatsapp/api.ts +319 -0
  875. package/src/messaging/providers/whatsapp/client.ts +4 -48
  876. package/src/messaging/providers/whatsapp/send.ts +209 -0
  877. package/src/notifications/adapters/slack.ts +5 -23
  878. package/src/notifications/adapters/telegram.ts +8 -29
  879. package/src/notifications/conversation-candidates.ts +1 -1
  880. package/src/notifications/conversation-seed-composer.ts +12 -6
  881. package/src/notifications/copy-composer.ts +1 -1
  882. package/src/notifications/decision-engine.ts +1 -1
  883. package/src/notifications/decisions-store.ts +1 -1
  884. package/src/notifications/deliveries-store.ts +2 -1
  885. package/src/notifications/deterministic-checks.ts +1 -1
  886. package/src/notifications/events-store.ts +1 -13
  887. package/src/notifications/preferences-store.ts +1 -1
  888. package/src/notifications/signal.ts +0 -9
  889. package/src/oauth/connection-resolver.ts +11 -2
  890. package/src/oauth/oauth-store.ts +2 -1
  891. package/src/outbound-proxy/index.ts +0 -1
  892. package/src/permissions/approval-policy.test.ts +149 -132
  893. package/src/permissions/approval-policy.ts +65 -91
  894. package/src/permissions/checker.test.ts +632 -0
  895. package/src/permissions/checker.ts +266 -459
  896. package/src/permissions/gateway-threshold-reader.ts +28 -47
  897. package/src/permissions/ipc-risk-types.ts +95 -0
  898. package/src/permissions/prompter.ts +4 -9
  899. package/src/permissions/risk-types.ts +24 -210
  900. package/src/permissions/types.ts +17 -47
  901. package/src/permissions/workspace-policy.ts +2 -4
  902. package/src/playbooks/playbook-compiler.ts +1 -1
  903. package/src/plugins/defaults/index.ts +1 -1
  904. package/src/plugins/defaults/injectors.ts +18 -21
  905. package/src/plugins/defaults/llm-call.ts +6 -9
  906. package/src/plugins/defaults/memory-retrieval.ts +1 -6
  907. package/src/plugins/defaults/overflow-reduce.ts +9 -5
  908. package/src/plugins/defaults/token-estimate.ts +2 -3
  909. package/src/plugins/registry.ts +61 -1
  910. package/src/plugins/types.ts +6 -7
  911. package/src/plugins/user-loader.ts +36 -10
  912. package/src/prompts/__tests__/system-prompt-memory-v2.test.ts +197 -0
  913. package/src/prompts/persona-resolver.ts +2 -4
  914. package/src/prompts/system-prompt.ts +39 -0
  915. package/src/prompts/templates/SOUL.md +3 -1
  916. package/src/providers/__tests__/provider-env-vars.test.ts +0 -21
  917. package/src/providers/__tests__/retry-callsite.test.ts +3 -6
  918. package/src/providers/anthropic/client.ts +71 -19
  919. package/src/providers/call-site-routing.ts +7 -3
  920. package/src/providers/fireworks/client.ts +3 -0
  921. package/src/providers/gemini/client.ts +96 -22
  922. package/src/providers/managed-proxy/context.ts +0 -12
  923. package/src/providers/model-catalog.ts +83 -8
  924. package/src/providers/model-intents.ts +7 -8
  925. package/src/providers/openai/chat-completions-provider.ts +37 -7
  926. package/src/providers/openai/responses-provider.ts +39 -4
  927. package/src/providers/openrouter/client.ts +4 -5
  928. package/src/providers/provider-env-vars.ts +4 -12
  929. package/src/providers/provider-send-message.ts +16 -11
  930. package/src/providers/registry.ts +1 -1
  931. package/src/providers/retry.ts +52 -23
  932. package/src/providers/speech-to-text/openai-whisper-stream.ts +1 -1
  933. package/src/providers/speech-to-text/openai-whisper.ts +3 -6
  934. package/src/providers/speech-to-text/provider-catalog.ts +75 -0
  935. package/src/providers/speech-to-text/xai.ts +5 -5
  936. package/src/providers/thinking-config.ts +34 -0
  937. package/src/providers/types.ts +22 -10
  938. package/src/runtime/AGENTS.md +10 -9
  939. package/src/runtime/__tests__/agent-wake.test.ts +33 -9
  940. package/src/runtime/__tests__/client-registry.test.ts +5 -27
  941. package/src/runtime/__tests__/interactive-ui.test.ts +157 -246
  942. package/src/runtime/access-request-helper.ts +9 -20
  943. package/src/runtime/actor-trust-resolver.ts +2 -2
  944. package/src/runtime/agent-wake.ts +174 -68
  945. package/src/runtime/approval-conversation-turn.ts +2 -15
  946. package/src/runtime/approval-message-composer.ts +11 -60
  947. package/src/runtime/assistant-event.ts +18 -66
  948. package/src/runtime/auth/__tests__/guard-tests.test.ts +6 -30
  949. package/src/runtime/auth/__tests__/middleware.test.ts +10 -10
  950. package/src/runtime/auth/__tests__/route-policy.test.ts +0 -8
  951. package/src/runtime/auth/context.ts +9 -0
  952. package/src/runtime/auth/middleware.ts +4 -4
  953. package/src/runtime/auth/route-policy.ts +195 -4
  954. package/src/runtime/auth/token-service.ts +1 -100
  955. package/src/runtime/capability-tokens.ts +89 -313
  956. package/src/runtime/channel-approval-types.ts +1 -6
  957. package/src/runtime/channel-approvals.ts +7 -79
  958. package/src/runtime/channel-readiness-service.ts +2 -2
  959. package/src/runtime/channel-reply-delivery.ts +2 -8
  960. package/src/runtime/channel-retry-sweep.ts +20 -17
  961. package/src/runtime/client-registry.ts +21 -28
  962. package/src/runtime/confirmation-request-guardian-bridge.ts +2 -7
  963. package/src/runtime/gateway-client.ts +37 -378
  964. package/src/runtime/guardian-action-grant-minter.ts +2 -3
  965. package/src/runtime/guardian-action-message-composer.ts +11 -52
  966. package/src/runtime/guardian-action-service.ts +19 -7
  967. package/src/runtime/guardian-decision-types.ts +4 -65
  968. package/src/runtime/guardian-reply-router.ts +10 -19
  969. package/src/runtime/guardian-vellum-migration.ts +5 -64
  970. package/src/runtime/http-errors.ts +3 -0
  971. package/src/runtime/http-router.ts +50 -7
  972. package/src/runtime/http-server.ts +345 -1110
  973. package/src/runtime/http-types.ts +15 -98
  974. package/src/runtime/interactive-ui-types.ts +145 -0
  975. package/src/runtime/interactive-ui.ts +38 -196
  976. package/src/runtime/invite-redemption-service.ts +1 -1
  977. package/src/runtime/invite-redemption-templates.ts +1 -1
  978. package/src/runtime/local-actor-identity.ts +13 -43
  979. package/src/runtime/message-composer-types.ts +134 -0
  980. package/src/runtime/middleware/rate-limiter.ts +1 -1
  981. package/src/runtime/middleware/request-logger.ts +5 -2
  982. package/src/runtime/migrations/__tests__/job-registry.test.ts +346 -0
  983. package/src/runtime/migrations/__tests__/vbundle-tar-stream.test.ts +16 -0
  984. package/src/runtime/migrations/job-registry.ts +281 -0
  985. package/src/runtime/migrations/vbundle-builder.ts +3 -4
  986. package/src/runtime/migrations/vbundle-importer.ts +1 -1
  987. package/src/runtime/migrations/vbundle-streaming-importer.ts +0 -13
  988. package/src/runtime/migrations/vbundle-tar-stream.ts +11 -3
  989. package/src/runtime/nl-approval-parser.ts +16 -21
  990. package/src/runtime/pending-interactions.ts +29 -12
  991. package/src/runtime/routes/__tests__/acp-routes.test.ts +395 -0
  992. package/src/runtime/routes/__tests__/backup-routes.test.ts +204 -320
  993. package/src/runtime/routes/__tests__/home-feed-routes.test.ts +72 -4
  994. package/src/runtime/routes/__tests__/stt-routes.test.ts +182 -223
  995. package/src/runtime/routes/__tests__/suggest-trust-rule-routes.test.ts +230 -0
  996. package/src/{ipc/__tests__/task-ipc.test.ts → runtime/routes/__tests__/task-routes.test.ts} +116 -96
  997. package/src/runtime/routes/__tests__/tts-routes.test.ts +185 -289
  998. package/src/runtime/routes/access-request-decision.ts +25 -50
  999. package/src/runtime/routes/acp-routes.test.ts +371 -0
  1000. package/src/runtime/routes/acp-routes.ts +392 -166
  1001. package/src/runtime/routes/app-management-routes.ts +464 -660
  1002. package/src/runtime/routes/app-routes.ts +192 -177
  1003. package/src/runtime/routes/approval-routes.ts +116 -434
  1004. package/src/runtime/routes/approval-strategies/guardian-callback-strategy.ts +24 -84
  1005. package/src/runtime/routes/approval-strategies/guardian-text-engine-strategy.ts +3 -10
  1006. package/src/runtime/routes/attachment-routes.ts +409 -253
  1007. package/src/runtime/routes/audio-routes.ts +51 -18
  1008. package/src/runtime/routes/avatar-routes.ts +82 -75
  1009. package/src/runtime/routes/background-tool-routes.ts +94 -0
  1010. package/src/runtime/routes/backup-routes.ts +154 -336
  1011. package/src/runtime/routes/brain-graph-routes.ts +83 -110
  1012. package/src/runtime/routes/browser-routes.ts +141 -0
  1013. package/src/runtime/routes/btw-routes.ts +62 -106
  1014. package/src/runtime/routes/cache-routes.ts +96 -0
  1015. package/src/runtime/routes/call-routes.ts +208 -247
  1016. package/src/runtime/routes/canonical-guardian-expiry-sweep.ts +1 -1
  1017. package/src/runtime/routes/channel-delivery-routes.ts +25 -27
  1018. package/src/runtime/routes/channel-readiness-routes.ts +83 -120
  1019. package/src/runtime/routes/channel-route-definitions.ts +62 -0
  1020. package/src/runtime/routes/channel-route-shared.ts +14 -18
  1021. package/src/runtime/routes/channel-verification-routes.ts +207 -187
  1022. package/src/runtime/routes/client-routes.ts +48 -0
  1023. package/src/runtime/routes/contact-routes.ts +533 -407
  1024. package/src/runtime/routes/conversation-analysis-routes.ts +48 -49
  1025. package/src/runtime/routes/conversation-attention-routes.ts +55 -67
  1026. package/src/runtime/routes/conversation-list-routes.ts +265 -0
  1027. package/src/runtime/routes/conversation-management-routes.ts +626 -715
  1028. package/src/runtime/routes/conversation-query-routes.ts +510 -460
  1029. package/src/runtime/routes/conversation-routes.ts +456 -368
  1030. package/src/runtime/routes/conversation-starter-routes.ts +121 -71
  1031. package/src/runtime/routes/credential-prompt-routes.ts +124 -0
  1032. package/src/runtime/routes/debug-routes.ts +34 -39
  1033. package/src/runtime/routes/defer-routes.ts +230 -0
  1034. package/src/runtime/routes/diagnostics-routes.ts +79 -70
  1035. package/src/runtime/routes/documents-routes.ts +117 -106
  1036. package/src/runtime/routes/errors.ts +132 -0
  1037. package/src/runtime/routes/events-routes.ts +97 -58
  1038. package/src/runtime/routes/filing-routes.ts +65 -78
  1039. package/src/runtime/routes/global-search-routes.ts +51 -57
  1040. package/src/runtime/routes/group-routes.ts +199 -181
  1041. package/src/runtime/routes/guardian-action-routes.ts +103 -169
  1042. package/src/runtime/routes/guardian-approval-interception.ts +27 -58
  1043. package/src/runtime/routes/guardian-approval-prompt.ts +10 -21
  1044. package/src/runtime/routes/guardian-approval-reply-helpers.ts +2 -6
  1045. package/src/runtime/routes/guardian-expiry-sweep.ts +19 -36
  1046. package/src/runtime/routes/heartbeat-routes.ts +194 -209
  1047. package/src/runtime/routes/home-feed-routes.ts +85 -187
  1048. package/src/runtime/routes/home-state-routes.ts +27 -24
  1049. package/src/runtime/routes/host-bash-routes.ts +42 -52
  1050. package/src/runtime/routes/host-browser-routes.ts +38 -69
  1051. package/src/runtime/routes/host-cu-routes.ts +74 -70
  1052. package/src/runtime/routes/host-file-routes.ts +50 -60
  1053. package/src/runtime/routes/host-transfer-routes.ts +220 -0
  1054. package/src/runtime/routes/http-adapter.ts +172 -0
  1055. package/src/runtime/routes/identity-routes.ts +83 -79
  1056. package/src/runtime/routes/inbound-conversation.ts +11 -18
  1057. package/src/runtime/routes/inbound-message-handler.ts +74 -110
  1058. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +79 -138
  1059. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +2 -3
  1060. package/src/runtime/routes/inbound-stages/background-dispatch.ts +54 -90
  1061. package/src/runtime/routes/inbound-stages/bootstrap-intercept.ts +25 -50
  1062. package/src/runtime/routes/inbound-stages/edit-intercept.ts +7 -7
  1063. package/src/runtime/routes/inbound-stages/escalation-intercept.ts +5 -5
  1064. package/src/runtime/routes/inbound-stages/guardian-activation-intercept.test.ts +5 -6
  1065. package/src/runtime/routes/inbound-stages/guardian-activation-intercept.ts +14 -24
  1066. package/src/runtime/routes/inbound-stages/guardian-reply-intercept.ts +3 -10
  1067. package/src/runtime/routes/inbound-stages/secret-ingress-check.ts +4 -4
  1068. package/src/runtime/routes/inbound-stages/transcribe-audio.ts +3 -3
  1069. package/src/runtime/routes/inbound-stages/verification-intercept.ts +19 -26
  1070. package/src/runtime/routes/index.ts +197 -0
  1071. package/src/runtime/routes/integrations/slack/__tests__/channel.test.ts +25 -32
  1072. package/src/runtime/routes/integrations/slack/__tests__/share.test.ts +22 -31
  1073. package/src/runtime/routes/integrations/slack/channel.ts +69 -66
  1074. package/src/runtime/routes/integrations/slack/share.ts +49 -58
  1075. package/src/runtime/routes/integrations/telegram.ts +91 -74
  1076. package/src/runtime/routes/integrations/twilio.ts +163 -240
  1077. package/src/runtime/routes/integrations/vercel.ts +57 -54
  1078. package/src/runtime/routes/interface-routes.ts +43 -0
  1079. package/src/runtime/routes/internal-oauth-routes.ts +56 -0
  1080. package/src/runtime/routes/internal-twilio-routes.ts +46 -0
  1081. package/src/runtime/routes/llm-context-normalization.ts +4 -2
  1082. package/src/runtime/routes/log-export/workspace-allowlist.ts +1 -1
  1083. package/src/runtime/routes/log-export-routes.ts +90 -100
  1084. package/src/runtime/routes/memory-item-routes.test.ts +152 -175
  1085. package/src/runtime/routes/memory-item-routes.ts +243 -323
  1086. package/src/runtime/routes/memory-v2-routes.ts +193 -0
  1087. package/src/runtime/routes/migration-rollback-routes.ts +167 -212
  1088. package/src/runtime/routes/migration-routes.ts +877 -374
  1089. package/src/runtime/routes/notification-routes.ts +199 -70
  1090. package/src/runtime/routes/oauth-apps.ts +254 -251
  1091. package/src/runtime/routes/oauth-providers.ts +66 -57
  1092. package/src/runtime/routes/playground/__tests__/force-compact.test.ts +60 -120
  1093. package/src/runtime/routes/playground/__tests__/guard.test.ts +34 -54
  1094. package/src/runtime/routes/playground/__tests__/inject-failures.test.ts +107 -151
  1095. package/src/runtime/routes/playground/__tests__/reset-circuit.test.ts +41 -117
  1096. package/src/runtime/routes/playground/__tests__/seed-conversation.test.ts +95 -138
  1097. package/src/runtime/routes/playground/__tests__/seeded-conversations.test.ts +115 -217
  1098. package/src/runtime/routes/playground/__tests__/state.test.ts +41 -90
  1099. package/src/runtime/routes/playground/conversation-not-found.ts +9 -11
  1100. package/src/runtime/routes/playground/force-compact.ts +41 -54
  1101. package/src/runtime/routes/playground/guard.ts +18 -19
  1102. package/src/runtime/routes/playground/helpers.ts +103 -0
  1103. package/src/runtime/routes/playground/index.ts +15 -25
  1104. package/src/runtime/routes/playground/inject-failures.ts +48 -64
  1105. package/src/runtime/routes/playground/reset-circuit.ts +31 -57
  1106. package/src/runtime/routes/playground/seed-conversation.ts +66 -92
  1107. package/src/runtime/routes/playground/seeded-conversations.ts +60 -64
  1108. package/src/runtime/routes/playground/state.ts +23 -24
  1109. package/src/runtime/routes/profiler-routes.ts +132 -167
  1110. package/src/runtime/routes/ps-routes.ts +120 -0
  1111. package/src/runtime/routes/recording-routes.ts +197 -258
  1112. package/src/runtime/routes/rename-conversation-routes.ts +89 -0
  1113. package/src/runtime/routes/schedule-routes.ts +238 -242
  1114. package/src/runtime/routes/secret-routes.ts +219 -265
  1115. package/src/runtime/routes/secrets-deps.ts +24 -0
  1116. package/src/runtime/routes/settings-routes.ts +361 -441
  1117. package/src/runtime/routes/skills-routes.ts +434 -469
  1118. package/src/runtime/routes/stt-routes.ts +196 -206
  1119. package/src/runtime/routes/subagents-routes.ts +125 -141
  1120. package/src/runtime/routes/suggest-trust-rule-routes.ts +244 -0
  1121. package/src/runtime/routes/surface-action-routes.ts +135 -190
  1122. package/src/runtime/routes/surface-content-routes.ts +84 -118
  1123. package/src/runtime/routes/task-routes.ts +354 -0
  1124. package/src/runtime/routes/telemetry-routes.ts +33 -49
  1125. package/src/runtime/routes/trace-event-routes.ts +55 -74
  1126. package/src/runtime/routes/trust-rules-routes.ts +147 -239
  1127. package/src/runtime/routes/tts-routes.ts +187 -169
  1128. package/src/runtime/routes/types.ts +139 -0
  1129. package/src/{ipc/routes/ui-request.ts → runtime/routes/ui-request-routes.ts} +23 -17
  1130. package/src/runtime/routes/upgrade-broadcast-routes.ts +156 -197
  1131. package/src/runtime/routes/usage-routes.ts +143 -169
  1132. package/src/runtime/routes/user-routes.ts +102 -18
  1133. package/src/runtime/routes/wake-conversation-routes.ts +49 -0
  1134. package/src/{ipc/routes/watcher.ts → runtime/routes/watcher-routes.ts} +84 -39
  1135. package/src/runtime/routes/wipe-conversation-routes.ts +89 -0
  1136. package/src/runtime/routes/work-items-routes.test.ts +10 -20
  1137. package/src/runtime/routes/work-items-routes.ts +418 -433
  1138. package/src/runtime/routes/workspace-commit-routes.ts +30 -61
  1139. package/src/runtime/routes/workspace-routes.test.ts +254 -381
  1140. package/src/runtime/routes/workspace-routes.ts +238 -246
  1141. package/src/runtime/runtime-mode.ts +8 -1
  1142. package/src/runtime/services/__tests__/analyze-conversation.test.ts +80 -118
  1143. package/src/runtime/services/analyze-conversation.ts +14 -41
  1144. package/src/runtime/services/conversation-serializer.ts +181 -0
  1145. package/src/runtime/trust-context-resolver.ts +3 -2
  1146. package/src/runtime/verification-outbound-actions.ts +13 -49
  1147. package/src/schedule/schedule-store.ts +64 -2
  1148. package/src/schedule/scheduler.ts +101 -0
  1149. package/src/security/ces-credential-client.ts +32 -169
  1150. package/src/security/ces-rpc-credential-backend.ts +1 -1
  1151. package/src/security/credential-backend.ts +6 -6
  1152. package/src/security/oauth-completion-page.ts +1 -1
  1153. package/src/security/oauth2.ts +3 -6
  1154. package/src/sequence/analytics.ts +1 -1
  1155. package/src/sequence/guardrails.ts +3 -3
  1156. package/src/sequence/store.ts +2 -1
  1157. package/src/signals/bash.ts +1 -1
  1158. package/src/signals/event-stream.ts +1 -1
  1159. package/src/skills/catalog-cache.ts +7 -0
  1160. package/src/skills/catalog-files.ts +0 -5
  1161. package/src/skills/catalog-install.ts +28 -18
  1162. package/src/skills/category-inference.ts +0 -11
  1163. package/src/skills/clawhub.ts +2 -2
  1164. package/src/skills/managed-store.ts +2 -2
  1165. package/src/skills/remote-skill-policy.ts +6 -7
  1166. package/src/subagent/index.ts +2 -6
  1167. package/src/subagent/manager.ts +27 -23
  1168. package/src/subagent/types.ts +9 -0
  1169. package/src/tasks/SPEC.md +2 -2
  1170. package/src/tasks/task-compiler.ts +1 -1
  1171. package/src/tasks/task-runner.ts +2 -22
  1172. package/src/tasks/task-store.ts +1 -1
  1173. package/src/tools/acp/list-agents.test.ts +115 -0
  1174. package/src/tools/acp/list-agents.ts +31 -0
  1175. package/src/tools/acp/spawn.test.ts +379 -0
  1176. package/src/tools/acp/spawn.ts +142 -62
  1177. package/src/tools/acp/steer.test.ts +101 -0
  1178. package/src/tools/acp/steer.ts +38 -0
  1179. package/src/tools/background-tool-registry.ts +98 -0
  1180. package/src/tools/browser/browser-execution.ts +34 -7
  1181. package/src/tools/browser/browser-manager.ts +1 -8
  1182. package/src/tools/browser/cdp-client/accessibility-snapshot.ts +1 -1
  1183. package/src/tools/browser/cdp-client/cdp-inspect/discovery.ts +3 -1
  1184. package/src/tools/browser/cdp-client/types.ts +4 -1
  1185. package/src/tools/computer-use/definitions.ts +1 -1
  1186. package/src/tools/credential-execution/make-authenticated-request.ts +2 -2
  1187. package/src/tools/credential-execution/manage-secure-command-tool.ts +1 -1
  1188. package/src/tools/credential-execution/run-authenticated-command.ts +2 -2
  1189. package/src/tools/credentials/broker-types.ts +2 -1
  1190. package/src/tools/document/editor-template.ts +1 -1
  1191. package/src/tools/execution-timeout.ts +1 -1
  1192. package/src/tools/executor.ts +10 -15
  1193. package/src/tools/host-filesystem/transfer.test.ts +268 -0
  1194. package/src/tools/host-filesystem/transfer.ts +234 -0
  1195. package/src/tools/host-terminal/host-shell.ts +189 -11
  1196. package/src/tools/mcp/mcp-tool-factory.ts +1 -1
  1197. package/src/tools/memory/register.test.ts +161 -1
  1198. package/src/tools/memory/register.ts +19 -34
  1199. package/src/tools/permission-checker.ts +18 -219
  1200. package/src/tools/policy-context.ts +1 -8
  1201. package/src/tools/registry.ts +16 -1
  1202. package/src/tools/secret-detection-handler.ts +13 -103
  1203. package/src/tools/shared/shell-output.ts +4 -1
  1204. package/src/tools/side-effects.ts +2 -2
  1205. package/src/tools/skills/execute.ts +1 -1
  1206. package/src/tools/subagent/spawn.ts +35 -11
  1207. package/src/tools/terminal/safe-env.ts +9 -1
  1208. package/src/tools/terminal/shell.ts +161 -31
  1209. package/src/tools/tool-approval-handler.ts +4 -70
  1210. package/src/tools/tool-input-summary.ts +10 -0
  1211. package/src/tools/types.ts +143 -163
  1212. package/src/tools/ui-surface/definitions.ts +2 -2
  1213. package/src/util/debounce.ts +0 -21
  1214. package/src/util/errors.ts +0 -8
  1215. package/src/util/log-redact.ts +0 -1
  1216. package/src/util/platform.ts +85 -124
  1217. package/src/util/pricing.ts +109 -6
  1218. package/src/watcher/engine.ts +42 -20
  1219. package/src/watcher/watcher-store.ts +2 -1
  1220. package/src/work-items/work-item-store.ts +1 -1
  1221. package/src/workspace/git-service.ts +1 -6
  1222. package/src/workspace/migrations/006-services-config.ts +10 -1
  1223. package/src/workspace/migrations/017-seed-persona-dirs.ts +1 -1
  1224. package/src/workspace/migrations/019-scope-journal-to-guardian.ts +1 -1
  1225. package/src/workspace/migrations/028-recover-conversations-from-disk-view.ts +1 -1
  1226. package/src/workspace/migrations/031-drop-user-md.ts +1 -1
  1227. package/src/workspace/migrations/045-release-notes-meet-avatar.ts +3 -4
  1228. package/src/workspace/migrations/052-seed-default-inference-profiles.ts +150 -0
  1229. package/src/workspace/migrations/053-release-notes-acp-codex.ts +107 -0
  1230. package/src/workspace/migrations/054-seed-recall-callsite.ts +102 -0
  1231. package/src/workspace/migrations/055-release-notes-agentic-recall.ts +63 -0
  1232. package/src/workspace/migrations/056-release-notes-inference-profile-reordering.ts +65 -0
  1233. package/src/workspace/migrations/057-repair-stale-gemini-model-ids.ts +98 -0
  1234. package/src/workspace/migrations/058-release-notes-acp-sessions-ui.ts +71 -0
  1235. package/src/workspace/migrations/059-move-pid-to-workspace.ts +53 -0
  1236. package/src/workspace/migrations/060-memory-v2-init.ts +53 -0
  1237. package/src/workspace/migrations/rebuild-conversation-disk-view.ts +1 -1
  1238. package/src/workspace/migrations/registry.ts +18 -0
  1239. package/src/workspace/migrations/runner.ts +2 -2
  1240. package/src/workspace/provider-commit-message-generator.ts +1 -1
  1241. package/node_modules/@vellumai/ces-contracts/src/__tests__/trust-rules.test.ts +0 -471
  1242. package/node_modules/@vellumai/ces-contracts/src/trust-rules.ts +0 -436
  1243. package/src/__tests__/cli-command-risk-guard.test.ts +0 -368
  1244. package/src/__tests__/config-watcher-feature-flags.test.ts +0 -211
  1245. package/src/__tests__/conversation-approval-overrides.test.ts +0 -207
  1246. package/src/__tests__/conversation-host-access-routes.test.ts +0 -229
  1247. package/src/__tests__/conversation-tool-setup-batch-authorized.test.ts +0 -226
  1248. package/src/__tests__/conversation-tool-setup-side-effect-flag.test.ts +0 -167
  1249. package/src/__tests__/ephemeral-permissions.test.ts +0 -474
  1250. package/src/__tests__/extension-id-sync-guard.test.ts +0 -241
  1251. package/src/__tests__/host-browser-e2e-self-hosted.test.ts +0 -374
  1252. package/src/__tests__/native-host-marker-sync-guard.test.ts +0 -157
  1253. package/src/__tests__/pairing-concurrent.test.ts +0 -84
  1254. package/src/__tests__/pairing-routes.test.ts +0 -181
  1255. package/src/__tests__/parser.test.ts +0 -595
  1256. package/src/__tests__/permission-checker-host-gate.test.ts +0 -488
  1257. package/src/__tests__/permission-controls-v2-flag.test.ts +0 -55
  1258. package/src/__tests__/permission-mode.test.ts +0 -89
  1259. package/src/__tests__/provider-env-vars-scope.test.ts +0 -52
  1260. package/src/__tests__/risk-classifier-parity.test.ts +0 -230
  1261. package/src/__tests__/shell-identity.test.ts +0 -236
  1262. package/src/__tests__/shell-parser-fuzz.test.ts +0 -629
  1263. package/src/__tests__/shell-parser-property.test.ts +0 -936
  1264. package/src/__tests__/starter-bundle.test.ts +0 -173
  1265. package/src/__tests__/stt-catalog-parity.test.ts +0 -282
  1266. package/src/__tests__/task-runner.test.ts +0 -224
  1267. package/src/__tests__/tool-executor-shell-integration.test.ts +0 -354
  1268. package/src/__tests__/trust-store-pattern-matches.test.ts +0 -29
  1269. package/src/__tests__/trust-store.test.ts +0 -2013
  1270. package/src/__tests__/v2-consent-policy.test.ts +0 -103
  1271. package/src/browser/identifiers.ts +0 -51
  1272. package/src/cli/db.ts +0 -1
  1273. package/src/config/bundled-skills/settings/tools/avatar-get.ts +0 -40
  1274. package/src/config/bundled-skills/settings/tools/avatar-remove.ts +0 -64
  1275. package/src/config/bundled-skills/settings/tools/avatar-update.ts +0 -88
  1276. package/src/daemon/__tests__/lifecycle-startup-ordering.test.ts +0 -127
  1277. package/src/daemon/approved-devices-store.ts +0 -110
  1278. package/src/daemon/external-skills-bootstrap.ts +0 -41
  1279. package/src/daemon/message-types/trust.ts +0 -71
  1280. package/src/daemon/pairing-store.ts +0 -229
  1281. package/src/ipc/cli-server.ts +0 -252
  1282. package/src/ipc/routes/attachment.ts +0 -114
  1283. package/src/ipc/routes/browser-context.ts +0 -63
  1284. package/src/ipc/routes/browser.ts +0 -97
  1285. package/src/ipc/routes/cache.ts +0 -96
  1286. package/src/ipc/routes/get-contact.ts +0 -16
  1287. package/src/ipc/routes/index.ts +0 -35
  1288. package/src/ipc/routes/list-clients.ts +0 -31
  1289. package/src/ipc/routes/merge-contacts.ts +0 -17
  1290. package/src/ipc/routes/notification.ts +0 -133
  1291. package/src/ipc/routes/rename-conversation.ts +0 -59
  1292. package/src/ipc/routes/search-contacts.ts +0 -19
  1293. package/src/ipc/routes/task-queue.ts +0 -226
  1294. package/src/ipc/routes/task.ts +0 -173
  1295. package/src/ipc/routes/upsert-contact.ts +0 -25
  1296. package/src/ipc/routes/wake-conversation.ts +0 -19
  1297. package/src/memory/db.ts +0 -23
  1298. package/src/permissions/arg-parser.test.ts +0 -161
  1299. package/src/permissions/arg-parser.ts +0 -141
  1300. package/src/permissions/bash-risk-classifier.test.ts +0 -1620
  1301. package/src/permissions/bash-risk-classifier.ts +0 -950
  1302. package/src/permissions/command-registry.test.ts +0 -774
  1303. package/src/permissions/command-registry.ts +0 -1005
  1304. package/src/permissions/defaults.ts +0 -314
  1305. package/src/permissions/file-risk-classifier.test.ts +0 -535
  1306. package/src/permissions/file-risk-classifier.ts +0 -274
  1307. package/src/permissions/permission-mode.ts +0 -24
  1308. package/src/permissions/schedule-risk-classifier.test.ts +0 -129
  1309. package/src/permissions/schedule-risk-classifier.ts +0 -85
  1310. package/src/permissions/shell-identity.ts +0 -297
  1311. package/src/permissions/skill-risk-classifier.test.ts +0 -311
  1312. package/src/permissions/skill-risk-classifier.ts +0 -214
  1313. package/src/permissions/trust-client.ts +0 -359
  1314. package/src/permissions/trust-store-interface.ts +0 -100
  1315. package/src/permissions/trust-store.ts +0 -1330
  1316. package/src/permissions/v2-consent-policy.ts +0 -87
  1317. package/src/permissions/web-risk-classifier.test.ts +0 -170
  1318. package/src/permissions/web-risk-classifier.ts +0 -89
  1319. package/src/runtime/__tests__/browser-extension-pair-routes.test.ts +0 -715
  1320. package/src/runtime/__tests__/capability-tokens.test.ts +0 -258
  1321. package/src/runtime/actor-refresh-token-store.ts +0 -156
  1322. package/src/runtime/actor-token-store.ts +0 -207
  1323. package/src/runtime/auth/__tests__/credential-service.test.ts +0 -264
  1324. package/src/runtime/auth/credential-service.ts +0 -352
  1325. package/src/runtime/conversation-approval-overrides.ts +0 -86
  1326. package/src/runtime/routes/browser-extension-pair-routes.ts +0 -575
  1327. package/src/runtime/routes/channel-routes.ts +0 -112
  1328. package/src/runtime/routes/contact-routes.test.ts +0 -298
  1329. package/src/runtime/routes/guardian-bootstrap-routes.ts +0 -175
  1330. package/src/runtime/routes/guardian-refresh-routes.ts +0 -79
  1331. package/src/runtime/routes/invite-routes.ts +0 -280
  1332. package/src/runtime/routes/pairing-routes.ts +0 -431
  1333. package/src/runtime/routes/playground/deps.ts +0 -56
  1334. package/src/runtime/services/__tests__/analyze-deps-singleton.test.ts +0 -67
  1335. package/src/runtime/services/analyze-deps-singleton.ts +0 -32
  1336. package/src/tasks/ephemeral-permissions.ts +0 -55
  1337. package/src/tools/terminal/parser.ts +0 -623
  1338. package/src/types/qrcode.d.ts +0 -13
  1339. package/src/util/network-info.ts +0 -55
  1340. /package/node_modules/@vellumai/{ces-contracts → ces-client}/tsconfig.json +0 -0
  1341. /package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/__tests__/grants.test.ts +0 -0
  1342. /package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/error.ts +0 -0
  1343. /package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/grants.ts +0 -0
  1344. /package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/handles.ts +0 -0
  1345. /package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/rendering.ts +0 -0
  1346. /package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/rpc.ts +0 -0
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.6.6
6
+ version: 0.7.0
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
@@ -133,10 +133,40 @@ paths:
133
133
  - instruction
134
134
  additionalProperties: false
135
135
  /v1/acp/sessions:
136
+ delete:
137
+ operationId: acp_sessions_delete
138
+ summary: Bulk-clear terminal ACP sessions
139
+ description: Remove every terminal-state row (completed/failed/cancelled) from the persisted acp_session_history table.
140
+ tags:
141
+ - acp
142
+ responses:
143
+ "200":
144
+ description: Successful response
145
+ content:
146
+ application/json:
147
+ schema:
148
+ type: object
149
+ properties:
150
+ deleted:
151
+ type: integer
152
+ minimum: -9007199254740991
153
+ maximum: 9007199254740991
154
+ required:
155
+ - deleted
156
+ additionalProperties: false
157
+ parameters:
158
+ - name: status
159
+ in: query
160
+ required: true
161
+ schema:
162
+ type: string
163
+ description: Must be 'completed'. Shorthand for all terminal statuses (completed/failed/cancelled).
136
164
  get:
137
165
  operationId: acp_sessions_get
138
166
  summary: List ACP sessions
139
- description: Return all active ACP sessions.
167
+ description:
168
+ Return the merged set of in-memory and persisted ACP sessions, newest first. In-memory sessions take
169
+ precedence on id collision.
140
170
  tags:
141
171
  - acp
142
172
  responses:
@@ -149,11 +179,88 @@ paths:
149
179
  properties:
150
180
  sessions:
151
181
  type: array
152
- items: {}
153
- description: ACP session status objects
182
+ items:
183
+ type: object
184
+ properties:
185
+ id:
186
+ type: string
187
+ agentId:
188
+ type: string
189
+ acpSessionId:
190
+ type: string
191
+ parentConversationId:
192
+ type: string
193
+ status:
194
+ type: string
195
+ startedAt:
196
+ type: number
197
+ completedAt:
198
+ anyOf:
199
+ - type: number
200
+ - type: "null"
201
+ error:
202
+ anyOf:
203
+ - type: string
204
+ - type: "null"
205
+ stopReason:
206
+ anyOf:
207
+ - type: string
208
+ - type: "null"
209
+ eventLog:
210
+ type: array
211
+ items: {}
212
+ required:
213
+ - id
214
+ - agentId
215
+ - acpSessionId
216
+ - status
217
+ - startedAt
218
+ additionalProperties: false
219
+ description: Merged in-memory and persisted ACP sessions.
154
220
  required:
155
221
  - sessions
156
222
  additionalProperties: false
223
+ parameters:
224
+ - name: limit
225
+ in: query
226
+ required: false
227
+ schema:
228
+ type: integer
229
+ description: Maximum number of sessions to return (default 50, max 500).
230
+ - name: conversationId
231
+ in: query
232
+ required: false
233
+ schema:
234
+ type: string
235
+ description: Filter to sessions whose parentConversationId matches this value.
236
+ /v1/acp/sessions/{id}:
237
+ delete:
238
+ operationId: acp_sessions_by_id_delete
239
+ summary: Delete ACP session from history
240
+ description:
241
+ Remove a persisted ACP session row. Rejects with 409 when the session is still active in memory; idempotent
242
+ for unknown ids.
243
+ tags:
244
+ - acp
245
+ responses:
246
+ "200":
247
+ description: Successful response
248
+ content:
249
+ application/json:
250
+ schema:
251
+ type: object
252
+ properties:
253
+ deleted:
254
+ type: boolean
255
+ required:
256
+ - deleted
257
+ additionalProperties: false
258
+ parameters:
259
+ - name: id
260
+ in: path
261
+ required: true
262
+ schema:
263
+ type: string
157
264
  /v1/acp/spawn:
158
265
  post:
159
266
  operationId: acp_spawn_post
@@ -432,6 +539,11 @@ paths:
432
539
  required: true
433
540
  schema:
434
541
  type: string
542
+ - name: method
543
+ in: query
544
+ required: false
545
+ schema:
546
+ type: string
435
547
  post:
436
548
  operationId: apps_by_id_data_post
437
549
  summary: Mutate app data
@@ -500,6 +612,16 @@ paths:
500
612
  required: true
501
613
  schema:
502
614
  type: string
615
+ - name: fromCommit
616
+ in: query
617
+ required: true
618
+ schema:
619
+ type: string
620
+ - name: toCommit
621
+ in: query
622
+ required: false
623
+ schema:
624
+ type: string
503
625
  /v1/apps/{id}/history:
504
626
  get:
505
627
  operationId: apps_by_id_history_get
@@ -530,6 +652,11 @@ paths:
530
652
  required: true
531
653
  schema:
532
654
  type: string
655
+ - name: limit
656
+ in: query
657
+ required: false
658
+ schema:
659
+ type: number
533
660
  /v1/apps/{id}/open:
534
661
  post:
535
662
  operationId: apps_by_id_open_post
@@ -905,7 +1032,6 @@ paths:
905
1032
  description: Canonical JSON payload to sign
906
1033
  signature:
907
1034
  type: string
908
- description: Ed25519 signature (optional, completes signing)
909
1035
  keyId:
910
1036
  type: string
911
1037
  publicKey:
@@ -931,7 +1057,7 @@ paths:
931
1057
  tags:
932
1058
  - attachments
933
1059
  responses:
934
- "200":
1060
+ "204":
935
1061
  description: Successful response
936
1062
  requestBody:
937
1063
  required: true
@@ -996,6 +1122,11 @@ paths:
996
1122
  filePath:
997
1123
  type: string
998
1124
  description: On-disk file path (file-backed upload)
1125
+ trustedSource:
1126
+ type: boolean
1127
+ description:
1128
+ Set by the gateway when the file came from a guardian-bound channel actor. Honored only when the request is
1129
+ authenticated as a gateway service token; ignored otherwise.
999
1130
  required:
1000
1131
  - filename
1001
1132
  - mimeType
@@ -1026,8 +1157,10 @@ paths:
1026
1157
  kind:
1027
1158
  type: string
1028
1159
  data:
1029
- type: string
1030
- description: Base64-encoded content
1160
+ anyOf:
1161
+ - type: string
1162
+ description: Base64-encoded content
1163
+ - type: "null"
1031
1164
  fileBacked:
1032
1165
  type: boolean
1033
1166
  required:
@@ -1037,7 +1170,6 @@ paths:
1037
1170
  - sizeBytes
1038
1171
  - kind
1039
1172
  - data
1040
- - fileBacked
1041
1173
  additionalProperties: false
1042
1174
  parameters:
1043
1175
  - name: id
@@ -1055,20 +1187,125 @@ paths:
1055
1187
  responses:
1056
1188
  "200":
1057
1189
  description: Successful response
1190
+ "416":
1191
+ description: Range Not Satisfiable
1058
1192
  parameters:
1059
1193
  - name: id
1060
1194
  in: path
1061
1195
  required: true
1062
1196
  schema:
1063
1197
  type: string
1064
- /v1/audio/{id}:
1198
+ /v1/attachments/lookup:
1199
+ post:
1200
+ operationId: attachments_lookup_post
1201
+ summary: Look up attachment by source path
1202
+ description: Search for a previously registered attachment by its original source path, scoped to a conversation.
1203
+ tags:
1204
+ - attachments
1205
+ responses:
1206
+ "200":
1207
+ description: Successful response
1208
+ content:
1209
+ application/json:
1210
+ schema:
1211
+ type: object
1212
+ properties:
1213
+ filePath:
1214
+ type: string
1215
+ required:
1216
+ - filePath
1217
+ additionalProperties: false
1218
+ requestBody:
1219
+ required: true
1220
+ content:
1221
+ application/json:
1222
+ schema:
1223
+ type: object
1224
+ properties:
1225
+ sourcePath:
1226
+ type: string
1227
+ description: Original source path of the file
1228
+ conversationId:
1229
+ type: string
1230
+ description: Conversation ID to search within
1231
+ required:
1232
+ - sourcePath
1233
+ - conversationId
1234
+ additionalProperties: false
1235
+ /v1/attachments/register:
1236
+ post:
1237
+ operationId: attachments_register_post
1238
+ summary: Register a file-backed attachment
1239
+ description:
1240
+ Register an on-disk file as a file-backed attachment. The file must be within the workspace directory and
1241
+ must remain on disk for the lifetime of the attachment.
1242
+ tags:
1243
+ - attachments
1244
+ responses:
1245
+ "200":
1246
+ description: Successful response
1247
+ content:
1248
+ application/json:
1249
+ schema:
1250
+ type: object
1251
+ properties:
1252
+ id:
1253
+ type: string
1254
+ originalFilename:
1255
+ type: string
1256
+ mimeType:
1257
+ type: string
1258
+ sizeBytes:
1259
+ type: number
1260
+ kind:
1261
+ type: string
1262
+ filePath:
1263
+ type: string
1264
+ createdAt:
1265
+ type: number
1266
+ required:
1267
+ - id
1268
+ - originalFilename
1269
+ - mimeType
1270
+ - sizeBytes
1271
+ - kind
1272
+ - filePath
1273
+ - createdAt
1274
+ additionalProperties: false
1275
+ requestBody:
1276
+ required: true
1277
+ content:
1278
+ application/json:
1279
+ schema:
1280
+ type: object
1281
+ properties:
1282
+ path:
1283
+ type: string
1284
+ description: Absolute path to the file
1285
+ mimeType:
1286
+ type: string
1287
+ description: MIME type of the file
1288
+ filename:
1289
+ type: string
1290
+ description: Display filename (defaults to basename of path)
1291
+ required:
1292
+ - path
1293
+ - mimeType
1294
+ additionalProperties: false
1295
+ /v1/audio/{audioId}:
1065
1296
  get:
1066
- operationId: audio_by_id_get
1297
+ operationId: audio_by_audioId_get
1298
+ summary: Get audio segment
1299
+ description:
1300
+ Retrieve a previously stored audio segment by ID. Unauthenticated — the audioId is an unguessable UUID
1301
+ capability token.
1302
+ tags:
1303
+ - audio
1067
1304
  responses:
1068
1305
  "200":
1069
1306
  description: Successful response
1070
1307
  parameters:
1071
- - name: id
1308
+ - name: audioId
1072
1309
  in: path
1073
1310
  required: true
1074
1311
  schema:
@@ -1083,6 +1320,26 @@ paths:
1083
1320
  responses:
1084
1321
  "200":
1085
1322
  description: Successful response
1323
+ /v1/avatar/notify-updated:
1324
+ post:
1325
+ operationId: avatar_notifyupdated_post
1326
+ summary: Notify avatar updated
1327
+ description: Publish an avatar_updated SSE event to connected clients.
1328
+ tags:
1329
+ - avatar
1330
+ responses:
1331
+ "200":
1332
+ description: Successful response
1333
+ content:
1334
+ application/json:
1335
+ schema:
1336
+ type: object
1337
+ properties:
1338
+ ok:
1339
+ type: boolean
1340
+ required:
1341
+ - ok
1342
+ additionalProperties: false
1086
1343
  /v1/avatar/render-from-traits:
1087
1344
  post:
1088
1345
  operationId: avatar_renderfromtraits_post
@@ -1121,6 +1378,85 @@ paths:
1121
1378
  - eyeStyle
1122
1379
  - color
1123
1380
  additionalProperties: false
1381
+ /v1/background-tools:
1382
+ get:
1383
+ operationId: backgroundtools_get
1384
+ summary: List active background tools
1385
+ description: List all active background tool executions, optionally filtered by conversationId.
1386
+ tags:
1387
+ - background-tools
1388
+ responses:
1389
+ "200":
1390
+ description: Successful response
1391
+ content:
1392
+ application/json:
1393
+ schema:
1394
+ type: object
1395
+ properties:
1396
+ tools:
1397
+ type: array
1398
+ items:
1399
+ type: object
1400
+ properties:
1401
+ id:
1402
+ type: string
1403
+ toolName:
1404
+ type: string
1405
+ conversationId:
1406
+ type: string
1407
+ command:
1408
+ type: string
1409
+ startedAt:
1410
+ type: number
1411
+ required:
1412
+ - id
1413
+ - toolName
1414
+ - conversationId
1415
+ - command
1416
+ - startedAt
1417
+ additionalProperties: false
1418
+ required:
1419
+ - tools
1420
+ additionalProperties: false
1421
+ parameters:
1422
+ - name: conversationId
1423
+ in: query
1424
+ required: false
1425
+ schema:
1426
+ type: string
1427
+ description: Filter by conversation ID
1428
+ /v1/background-tools/cancel:
1429
+ post:
1430
+ operationId: backgroundtools_cancel_post
1431
+ summary: Cancel a background tool
1432
+ description: Cancel an active background tool execution by ID.
1433
+ tags:
1434
+ - background-tools
1435
+ responses:
1436
+ "200":
1437
+ description: Successful response
1438
+ content:
1439
+ application/json:
1440
+ schema:
1441
+ type: object
1442
+ properties:
1443
+ cancelled:
1444
+ type: boolean
1445
+ required:
1446
+ - cancelled
1447
+ additionalProperties: false
1448
+ requestBody:
1449
+ required: true
1450
+ content:
1451
+ application/json:
1452
+ schema:
1453
+ type: object
1454
+ properties:
1455
+ id:
1456
+ type: string
1457
+ required:
1458
+ - id
1459
+ additionalProperties: false
1124
1460
  /v1/backups:
1125
1461
  get:
1126
1462
  operationId: backups_get
@@ -1332,15 +1668,96 @@ paths:
1332
1668
  get:
1333
1669
  operationId: braingraphui_get
1334
1670
  summary: Serve brain graph UI
1335
- description: Return the brain-graph HTML visualization page with an embedded auth token.
1671
+ description: Return the brain-graph HTML visualization page. The gateway injects an auth token before serving.
1336
1672
  tags:
1337
1673
  - brain-graph
1338
1674
  responses:
1339
1675
  "200":
1340
1676
  description: Successful response
1341
- /v1/btw:
1677
+ /v1/browser/execute:
1342
1678
  post:
1343
- operationId: btw_post
1679
+ operationId: browser_execute_post
1680
+ summary: Execute a browser operation
1681
+ description: Invoke a browser operation (navigate, click, type, screenshot, etc.) via the headless browser subsystem.
1682
+ tags:
1683
+ - browser
1684
+ responses:
1685
+ "200":
1686
+ description: Successful response
1687
+ content:
1688
+ application/json:
1689
+ schema:
1690
+ type: object
1691
+ properties:
1692
+ content:
1693
+ type: string
1694
+ isError:
1695
+ type: boolean
1696
+ screenshots:
1697
+ type: array
1698
+ items:
1699
+ type: object
1700
+ properties:
1701
+ mediaType:
1702
+ type: string
1703
+ data:
1704
+ type: string
1705
+ required:
1706
+ - mediaType
1707
+ - data
1708
+ additionalProperties: false
1709
+ required:
1710
+ - content
1711
+ - isError
1712
+ additionalProperties: false
1713
+ requestBody:
1714
+ required: true
1715
+ content:
1716
+ application/json:
1717
+ schema:
1718
+ type: object
1719
+ properties:
1720
+ operation:
1721
+ type: string
1722
+ enum:
1723
+ - navigate
1724
+ - snapshot
1725
+ - screenshot
1726
+ - close
1727
+ - attach
1728
+ - detach
1729
+ - click
1730
+ - type
1731
+ - press_key
1732
+ - scroll
1733
+ - select_option
1734
+ - hover
1735
+ - wait_for
1736
+ - extract
1737
+ - wait_for_download
1738
+ - fill_credential
1739
+ - status
1740
+ input:
1741
+ default: {}
1742
+ type: object
1743
+ propertyNames:
1744
+ type: string
1745
+ additionalProperties: {}
1746
+ sessionId:
1747
+ default: default
1748
+ type: string
1749
+ minLength: 1
1750
+ conversationId:
1751
+ type: string
1752
+ minLength: 1
1753
+ required:
1754
+ - operation
1755
+ - input
1756
+ - sessionId
1757
+ additionalProperties: false
1758
+ /v1/btw:
1759
+ post:
1760
+ operationId: btw_post
1344
1761
  summary: Run ephemeral LLM side-chain
1345
1762
  description:
1346
1763
  Stream an ephemeral LLM call reusing the conversation's provider and message history. Response is SSE
@@ -1367,9 +1784,114 @@ paths:
1367
1784
  - conversationKey
1368
1785
  - content
1369
1786
  additionalProperties: false
1370
- /v1/calls/{id}:
1787
+ /v1/cache/delete:
1788
+ post:
1789
+ operationId: cache_delete_post
1790
+ summary: Delete a cache entry
1791
+ description: Remove a cached value by key.
1792
+ tags:
1793
+ - cache
1794
+ responses:
1795
+ "200":
1796
+ description: Successful response
1797
+ content:
1798
+ application/json:
1799
+ schema:
1800
+ type: object
1801
+ properties:
1802
+ deleted:
1803
+ type: boolean
1804
+ required:
1805
+ - deleted
1806
+ additionalProperties: false
1807
+ requestBody:
1808
+ required: true
1809
+ content:
1810
+ application/json:
1811
+ schema:
1812
+ type: object
1813
+ properties:
1814
+ key:
1815
+ type: string
1816
+ minLength: 1
1817
+ required:
1818
+ - key
1819
+ additionalProperties: false
1820
+ /v1/cache/get:
1821
+ post:
1822
+ operationId: cache_get_post
1823
+ summary: Get a cache entry
1824
+ description: Retrieve a cached value by key. Returns null if not found.
1825
+ tags:
1826
+ - cache
1827
+ responses:
1828
+ "200":
1829
+ description: Successful response
1830
+ content:
1831
+ application/json:
1832
+ schema:
1833
+ anyOf:
1834
+ - type: object
1835
+ properties:
1836
+ data: {}
1837
+ required:
1838
+ - data
1839
+ additionalProperties: false
1840
+ - type: "null"
1841
+ requestBody:
1842
+ required: true
1843
+ content:
1844
+ application/json:
1845
+ schema:
1846
+ type: object
1847
+ properties:
1848
+ key:
1849
+ type: string
1850
+ minLength: 1
1851
+ required:
1852
+ - key
1853
+ additionalProperties: false
1854
+ /v1/cache/set:
1855
+ post:
1856
+ operationId: cache_set_post
1857
+ summary: Set a cache entry
1858
+ description: Store a value in the daemon's in-memory cache, optionally with a TTL.
1859
+ tags:
1860
+ - cache
1861
+ responses:
1862
+ "200":
1863
+ description: Successful response
1864
+ content:
1865
+ application/json:
1866
+ schema:
1867
+ type: object
1868
+ properties:
1869
+ key:
1870
+ type: string
1871
+ required:
1872
+ - key
1873
+ additionalProperties: false
1874
+ requestBody:
1875
+ required: true
1876
+ content:
1877
+ application/json:
1878
+ schema:
1879
+ type: object
1880
+ properties:
1881
+ data: {}
1882
+ key:
1883
+ type: string
1884
+ minLength: 1
1885
+ ttl_ms:
1886
+ type: integer
1887
+ exclusiveMinimum: 0
1888
+ maximum: 9007199254740991
1889
+ required:
1890
+ - data
1891
+ additionalProperties: false
1892
+ /v1/calls/{callSessionId}:
1371
1893
  get:
1372
- operationId: calls_by_id_get
1894
+ operationId: calls_by_callSessionId_get
1373
1895
  summary: Get call status
1374
1896
  description: Return the current status and details of a call session.
1375
1897
  tags:
@@ -1399,15 +1921,23 @@ paths:
1399
1921
  task:
1400
1922
  type: string
1401
1923
  startedAt:
1402
- type: string
1924
+ anyOf:
1925
+ - type: string
1926
+ - type: "null"
1403
1927
  endedAt:
1404
- type: string
1928
+ anyOf:
1929
+ - type: string
1930
+ - type: "null"
1405
1931
  lastError:
1406
- type: string
1932
+ anyOf:
1933
+ - type: string
1934
+ - type: "null"
1407
1935
  pendingQuestion:
1408
- type: object
1409
- properties: {}
1410
- additionalProperties: {}
1936
+ anyOf:
1937
+ - type: object
1938
+ properties: {}
1939
+ additionalProperties: {}
1940
+ - type: "null"
1411
1941
  createdAt:
1412
1942
  type: string
1413
1943
  updatedAt:
@@ -1429,14 +1959,14 @@ paths:
1429
1959
  - updatedAt
1430
1960
  additionalProperties: false
1431
1961
  parameters:
1432
- - name: id
1962
+ - name: callSessionId
1433
1963
  in: path
1434
1964
  required: true
1435
1965
  schema:
1436
1966
  type: string
1437
- /v1/calls/{id}/answer:
1967
+ /v1/calls/{callSessionId}/answer:
1438
1968
  post:
1439
- operationId: calls_by_id_answer_post
1969
+ operationId: calls_by_callSessionId_answer_post
1440
1970
  summary: Answer a pending call question
1441
1971
  description: Provide an answer to a pending question during an active call.
1442
1972
  tags:
@@ -1458,7 +1988,7 @@ paths:
1458
1988
  - questionId
1459
1989
  additionalProperties: false
1460
1990
  parameters:
1461
- - name: id
1991
+ - name: callSessionId
1462
1992
  in: path
1463
1993
  required: true
1464
1994
  schema:
@@ -1478,11 +2008,10 @@ paths:
1478
2008
  description: ID of the pending question
1479
2009
  required:
1480
2010
  - answer
1481
- - pendingQuestionId
1482
2011
  additionalProperties: false
1483
- /v1/calls/{id}/cancel:
2012
+ /v1/calls/{callSessionId}/cancel:
1484
2013
  post:
1485
- operationId: calls_by_id_cancel_post
2014
+ operationId: calls_by_callSessionId_cancel_post
1486
2015
  summary: Cancel a call
1487
2016
  description: Cancel an active or pending call.
1488
2017
  tags:
@@ -1504,7 +2033,7 @@ paths:
1504
2033
  - status
1505
2034
  additionalProperties: false
1506
2035
  parameters:
1507
- - name: id
2036
+ - name: callSessionId
1508
2037
  in: path
1509
2038
  required: true
1510
2039
  schema:
@@ -1519,12 +2048,10 @@ paths:
1519
2048
  reason:
1520
2049
  type: string
1521
2050
  description: Cancellation reason
1522
- required:
1523
- - reason
1524
2051
  additionalProperties: false
1525
- /v1/calls/{id}/instruction:
2052
+ /v1/calls/{callSessionId}/instruction:
1526
2053
  post:
1527
- operationId: calls_by_id_instruction_post
2054
+ operationId: calls_by_callSessionId_instruction_post
1528
2055
  summary: Relay instruction to active call
1529
2056
  description: Send a real-time instruction to an active call.
1530
2057
  tags:
@@ -1543,7 +2070,7 @@ paths:
1543
2070
  - ok
1544
2071
  additionalProperties: false
1545
2072
  parameters:
1546
- - name: id
2073
+ - name: callSessionId
1547
2074
  in: path
1548
2075
  required: true
1549
2076
  schema:
@@ -1569,7 +2096,7 @@ paths:
1569
2096
  tags:
1570
2097
  - calls
1571
2098
  responses:
1572
- "200":
2099
+ "201":
1573
2100
  description: Successful response
1574
2101
  content:
1575
2102
  application/json:
@@ -1634,19 +2161,6 @@ paths:
1634
2161
  responses:
1635
2162
  "200":
1636
2163
  description: Successful response
1637
- content:
1638
- application/json:
1639
- schema:
1640
- type: object
1641
- properties:
1642
- success:
1643
- type: boolean
1644
- channel:
1645
- type: string
1646
- required:
1647
- - success
1648
- - channel
1649
- additionalProperties: false
1650
2164
  requestBody:
1651
2165
  required: true
1652
2166
  content:
@@ -1792,7 +2306,7 @@ paths:
1792
2306
  tags:
1793
2307
  - channels
1794
2308
  responses:
1795
- "200":
2309
+ "204":
1796
2310
  description: Successful response
1797
2311
  /v1/channels/inbound:
1798
2312
  post:
@@ -1894,6 +2408,37 @@ paths:
1894
2408
  responses:
1895
2409
  "200":
1896
2410
  description: Successful response
2411
+ /v1/clients:
2412
+ get:
2413
+ operationId: clients_get
2414
+ summary: List connected clients
2415
+ description: Return all connected clients, optionally filtered by capability.
2416
+ tags:
2417
+ - clients
2418
+ responses:
2419
+ "200":
2420
+ description: Successful response
2421
+ content:
2422
+ application/json:
2423
+ schema:
2424
+ type: object
2425
+ properties:
2426
+ clients:
2427
+ type: array
2428
+ items:
2429
+ type: object
2430
+ properties: {}
2431
+ additionalProperties: {}
2432
+ required:
2433
+ - clients
2434
+ additionalProperties: false
2435
+ parameters:
2436
+ - name: capability
2437
+ in: query
2438
+ required: false
2439
+ schema:
2440
+ type: string
2441
+ description: Filter clients by a specific capability.
1897
2442
  /v1/config:
1898
2443
  get:
1899
2444
  operationId: config_get
@@ -1946,6 +2491,22 @@ paths:
1946
2491
  required:
1947
2492
  - provider
1948
2493
  additionalProperties: false
2494
+ /v1/config/llm/profiles/{name}:
2495
+ put:
2496
+ operationId: config_llm_profiles_by_name_put
2497
+ summary: Replace an inference profile
2498
+ description: Replace the settings-UI-managed leaves of a single llm.profiles entry while preserving non-UI leaves.
2499
+ tags:
2500
+ - config
2501
+ responses:
2502
+ "200":
2503
+ description: Successful response
2504
+ parameters:
2505
+ - name: name
2506
+ in: path
2507
+ required: true
2508
+ schema:
2509
+ type: string
1949
2510
  /v1/config/platform:
1950
2511
  get:
1951
2512
  operationId: config_platform_get
@@ -2022,7 +2583,7 @@ paths:
2022
2583
  description: Pending interaction request ID
2023
2584
  decision:
2024
2585
  type: string
2025
- description: "One of: allow, allow_10m, allow_conversation, deny, always_allow, always_deny"
2586
+ description: "One of: allow, deny"
2026
2587
  selectedPattern:
2027
2588
  type: string
2028
2589
  description: Allowlist pattern for persistent decisions
@@ -2111,6 +2672,43 @@ paths:
2111
2672
  - ok
2112
2673
  - contacts
2113
2674
  additionalProperties: false
2675
+ parameters:
2676
+ - name: limit
2677
+ in: query
2678
+ required: false
2679
+ schema:
2680
+ type: integer
2681
+ description: Max contacts to return (default 50)
2682
+ - name: role
2683
+ in: query
2684
+ required: false
2685
+ schema:
2686
+ type: string
2687
+ description: Filter by role (e.g. guardian)
2688
+ - name: contactType
2689
+ in: query
2690
+ required: false
2691
+ schema:
2692
+ type: string
2693
+ description: Filter by contact type (human or assistant)
2694
+ - name: query
2695
+ in: query
2696
+ required: false
2697
+ schema:
2698
+ type: string
2699
+ description: Full-text search query
2700
+ - name: channelAddress
2701
+ in: query
2702
+ required: false
2703
+ schema:
2704
+ type: string
2705
+ description: Filter by channel address
2706
+ - name: channelType
2707
+ in: query
2708
+ required: false
2709
+ schema:
2710
+ type: string
2711
+ description: Filter by channel type
2114
2712
  post:
2115
2713
  operationId: contacts_post
2116
2714
  summary: Create or update a contact
@@ -2172,7 +2770,7 @@ paths:
2172
2770
  tags:
2173
2771
  - contacts
2174
2772
  responses:
2175
- "200":
2773
+ "204":
2176
2774
  description: Successful response
2177
2775
  parameters:
2178
2776
  - name: id
@@ -2217,11 +2815,11 @@ paths:
2217
2815
  required: true
2218
2816
  schema:
2219
2817
  type: string
2220
- /v1/contacts/guardian/channel:
2221
- post:
2222
- operationId: contacts_guardian_channel_post
2223
- summary: Add a channel to the guardian contact
2224
- description: Used by the guardian to auto-verify their own channel.
2818
+ /v1/contacts/invites:
2819
+ get:
2820
+ operationId: contacts_invites_get
2821
+ summary: List invites
2822
+ description: Return all invites, optionally filtered by sourceChannel or status.
2225
2823
  tags:
2226
2824
  - contacts
2227
2825
  responses:
@@ -2234,63 +2832,13 @@ paths:
2234
2832
  properties:
2235
2833
  ok:
2236
2834
  type: boolean
2237
- contact:
2238
- type: object
2239
- properties: {}
2240
- additionalProperties: {}
2241
- description: Updated guardian contact
2835
+ invites:
2836
+ type: array
2837
+ items: {}
2838
+ description: Invite objects
2242
2839
  required:
2243
2840
  - ok
2244
- - contact
2245
- additionalProperties: false
2246
- requestBody:
2247
- required: true
2248
- content:
2249
- application/json:
2250
- schema:
2251
- type: object
2252
- properties:
2253
- type:
2254
- type: string
2255
- description: Channel type, e.g. 'email'
2256
- address:
2257
- type: string
2258
- description: Channel address, e.g. 'user@example.com'
2259
- externalUserId:
2260
- type: string
2261
- description: External user ID for trust resolution
2262
- status:
2263
- description: "Channel status (default: active)"
2264
- type: string
2265
- required:
2266
- - type
2267
- - address
2268
- - externalUserId
2269
- additionalProperties: false
2270
- /v1/contacts/invites:
2271
- get:
2272
- operationId: contacts_invites_get
2273
- summary: List invites
2274
- description: Return all invites, optionally filtered by sourceChannel or status.
2275
- tags:
2276
- - contacts
2277
- responses:
2278
- "200":
2279
- description: Successful response
2280
- content:
2281
- application/json:
2282
- schema:
2283
- type: object
2284
- properties:
2285
- ok:
2286
- type: boolean
2287
- invites:
2288
- type: array
2289
- items: {}
2290
- description: Invite objects
2291
- required:
2292
- - ok
2293
- - invites
2841
+ - invites
2294
2842
  additionalProperties: false
2295
2843
  parameters:
2296
2844
  - name: sourceChannel
@@ -2312,7 +2860,7 @@ paths:
2312
2860
  tags:
2313
2861
  - contacts
2314
2862
  responses:
2315
- "200":
2863
+ "201":
2316
2864
  description: Successful response
2317
2865
  content:
2318
2866
  application/json:
@@ -2330,6 +2878,8 @@ paths:
2330
2878
  - ok
2331
2879
  - invite
2332
2880
  additionalProperties: false
2881
+ "400":
2882
+ description: Invalid invite parameters
2333
2883
  requestBody:
2334
2884
  required: true
2335
2885
  content:
@@ -2377,6 +2927,8 @@ paths:
2377
2927
  responses:
2378
2928
  "200":
2379
2929
  description: Successful response
2930
+ "404":
2931
+ description: Invite not found
2380
2932
  parameters:
2381
2933
  - name: id
2382
2934
  in: path
@@ -2407,6 +2959,8 @@ paths:
2407
2959
  - ok
2408
2960
  - callSid
2409
2961
  additionalProperties: false
2962
+ "400":
2963
+ description: Invite not eligible for outbound call
2410
2964
  parameters:
2411
2965
  - name: id
2412
2966
  in: path
@@ -2447,6 +3001,8 @@ paths:
2447
3001
  - type
2448
3002
  - memberId
2449
3003
  additionalProperties: false
3004
+ "400":
3005
+ description: Invalid redemption parameters or failed redemption
2450
3006
  requestBody:
2451
3007
  required: true
2452
3008
  content:
@@ -2527,6 +3083,40 @@ paths:
2527
3083
  - keepId
2528
3084
  - mergeId
2529
3085
  additionalProperties: false
3086
+ /v1/contacts/search:
3087
+ post:
3088
+ operationId: contacts_search_post
3089
+ summary: Search contacts
3090
+ description: Search contacts by query, channel address, or channel type.
3091
+ tags:
3092
+ - contacts
3093
+ responses:
3094
+ "200":
3095
+ description: Successful response
3096
+ content:
3097
+ application/json:
3098
+ schema:
3099
+ type: array
3100
+ items:
3101
+ type: object
3102
+ properties: {}
3103
+ additionalProperties: {}
3104
+ requestBody:
3105
+ required: true
3106
+ content:
3107
+ application/json:
3108
+ schema:
3109
+ type: object
3110
+ properties:
3111
+ query:
3112
+ type: string
3113
+ channelAddress:
3114
+ type: string
3115
+ channelType:
3116
+ type: string
3117
+ limit:
3118
+ type: number
3119
+ additionalProperties: false
2530
3120
  /v1/conversation-starters:
2531
3121
  get:
2532
3122
  operationId: conversationstarters_get
@@ -2583,15 +3173,46 @@ paths:
2583
3173
  schema:
2584
3174
  type: string
2585
3175
  description: Scope ID (default "default")
3176
+ /v1/conversation-starters/{id}:
3177
+ delete:
3178
+ operationId: conversationstarters_by_id_delete
3179
+ summary: Delete conversation starter
3180
+ description: Remove a generated conversation starter chip from the current starter set.
3181
+ tags:
3182
+ - conversation-starters
3183
+ responses:
3184
+ "200":
3185
+ description: Successful response
3186
+ content:
3187
+ application/json:
3188
+ schema:
3189
+ type: object
3190
+ properties:
3191
+ deleted:
3192
+ type: boolean
3193
+ id:
3194
+ type: string
3195
+ required:
3196
+ - deleted
3197
+ - id
3198
+ additionalProperties: false
3199
+ "404":
3200
+ description: Conversation starter not found
3201
+ parameters:
3202
+ - name: id
3203
+ in: path
3204
+ required: true
3205
+ schema:
3206
+ type: string
2586
3207
  /v1/conversations:
2587
3208
  delete:
2588
3209
  operationId: conversations_delete
2589
3210
  summary: Clear all conversations
2590
- description: Permanently delete ALL conversations, messages, and memory. Requires X-Confirm-Destructive header.
3211
+ description: Permanently delete ALL conversations, messages, and memory.
2591
3212
  tags:
2592
3213
  - conversations
2593
3214
  responses:
2594
- "200":
3215
+ "204":
2595
3216
  description: Successful response
2596
3217
  get:
2597
3218
  operationId: conversations_get
@@ -2618,10 +3239,13 @@ paths:
2618
3239
  type: string
2619
3240
  conversationType:
2620
3241
  type: string
3242
+ created:
3243
+ type: boolean
2621
3244
  required:
2622
3245
  - id
2623
3246
  - conversationKey
2624
3247
  - conversationType
3248
+ - created
2625
3249
  additionalProperties: false
2626
3250
  requestBody:
2627
3251
  required: true
@@ -2634,11 +3258,11 @@ paths:
2634
3258
  type: string
2635
3259
  description: Idempotency key for the conversation
2636
3260
  conversationType:
3261
+ description: Only standard conversations are created by this endpoint
2637
3262
  type: string
2638
- description: "'standard' (default) or 'private'"
3263
+ const: standard
2639
3264
  required:
2640
3265
  - conversationKey
2641
- - conversationType
2642
3266
  additionalProperties: false
2643
3267
  /v1/conversations/{id}:
2644
3268
  delete:
@@ -2648,7 +3272,7 @@ paths:
2648
3272
  tags:
2649
3273
  - conversations
2650
3274
  responses:
2651
- "200":
3275
+ "204":
2652
3276
  description: Successful response
2653
3277
  parameters:
2654
3278
  - name: id
@@ -2687,9 +3311,7 @@ paths:
2687
3311
  post:
2688
3312
  operationId: conversations_by_id_archive_post
2689
3313
  summary: Archive a conversation
2690
- description:
2691
- Move a conversation to the archived state. Archived conversations are hidden from the default sidebar but
2692
- preserved for search and recall.
3314
+ description: Move a conversation to the archived state.
2693
3315
  tags:
2694
3316
  - conversations
2695
3317
  responses:
@@ -2709,47 +3331,19 @@ paths:
2709
3331
  tags:
2710
3332
  - conversations
2711
3333
  responses:
2712
- "200":
2713
- description: Successful response
2714
- parameters:
2715
- - name: id
2716
- in: path
2717
- required: true
2718
- schema:
2719
- type: string
2720
- /v1/conversations/{id}/host-access:
2721
- get:
2722
- operationId: conversations_by_id_hostaccess_get
2723
- summary: Get conversation host access
2724
- description: Return whether the conversation can use host tools.
2725
- tags:
2726
- - conversations
2727
- responses:
2728
- "200":
3334
+ "202":
2729
3335
  description: Successful response
2730
- content:
2731
- application/json:
2732
- schema:
2733
- type: object
2734
- properties:
2735
- conversationId:
2736
- type: string
2737
- hostAccess:
2738
- type: boolean
2739
- required:
2740
- - conversationId
2741
- - hostAccess
2742
- additionalProperties: false
2743
3336
  parameters:
2744
3337
  - name: id
2745
3338
  in: path
2746
3339
  required: true
2747
3340
  schema:
2748
3341
  type: string
2749
- patch:
2750
- operationId: conversations_by_id_hostaccess_patch
2751
- summary: Update conversation host access
2752
- description: Enable or disable host access for a conversation.
3342
+ /v1/conversations/{id}/inference-profile:
3343
+ put:
3344
+ operationId: conversations_by_id_inferenceprofile_put
3345
+ summary: Set conversation inference profile
3346
+ description: Override the LLM inference profile for a single conversation.
2753
3347
  tags:
2754
3348
  - conversations
2755
3349
  responses:
@@ -2762,11 +3356,13 @@ paths:
2762
3356
  properties:
2763
3357
  conversationId:
2764
3358
  type: string
2765
- hostAccess:
2766
- type: boolean
3359
+ profile:
3360
+ anyOf:
3361
+ - type: string
3362
+ - type: "null"
2767
3363
  required:
2768
3364
  - conversationId
2769
- - hostAccess
3365
+ - profile
2770
3366
  additionalProperties: false
2771
3367
  parameters:
2772
3368
  - name: id
@@ -2781,10 +3377,12 @@ paths:
2781
3377
  schema:
2782
3378
  type: object
2783
3379
  properties:
2784
- hostAccess:
2785
- type: boolean
3380
+ profile:
3381
+ anyOf:
3382
+ - type: string
3383
+ - type: "null"
2786
3384
  required:
2787
- - hostAccess
3385
+ - profile
2788
3386
  additionalProperties: false
2789
3387
  /v1/conversations/{id}/name:
2790
3388
  patch:
@@ -2898,7 +3496,7 @@ paths:
2898
3496
  tags:
2899
3497
  - conversations
2900
3498
  responses:
2901
- "200":
3499
+ "202":
2902
3500
  description: Successful response
2903
3501
  parameters:
2904
3502
  - name: id
@@ -3075,6 +3673,33 @@ paths:
3075
3673
  required:
3076
3674
  - conversationId
3077
3675
  additionalProperties: false
3676
+ /v1/conversations/rename:
3677
+ post:
3678
+ operationId: conversations_rename_post
3679
+ summary: Rename a conversation
3680
+ description: Update the display title of a conversation.
3681
+ tags:
3682
+ - conversations
3683
+ responses:
3684
+ "200":
3685
+ description: Successful response
3686
+ requestBody:
3687
+ required: true
3688
+ content:
3689
+ application/json:
3690
+ schema:
3691
+ type: object
3692
+ properties:
3693
+ conversationId:
3694
+ type: string
3695
+ minLength: 1
3696
+ title:
3697
+ type: string
3698
+ minLength: 1
3699
+ required:
3700
+ - conversationId
3701
+ - title
3702
+ additionalProperties: false
3078
3703
  /v1/conversations/reorder:
3079
3704
  post:
3080
3705
  operationId: conversations_reorder_post
@@ -3123,6 +3748,25 @@ paths:
3123
3748
  - query
3124
3749
  - results
3125
3750
  additionalProperties: false
3751
+ parameters:
3752
+ - name: q
3753
+ in: query
3754
+ required: true
3755
+ schema:
3756
+ type: string
3757
+ description: Search query
3758
+ - name: limit
3759
+ in: query
3760
+ required: false
3761
+ schema:
3762
+ type: integer
3763
+ description: Max results
3764
+ - name: maxMessagesPerConversation
3765
+ in: query
3766
+ required: false
3767
+ schema:
3768
+ type: integer
3769
+ description: Max messages per conversation
3126
3770
  /v1/conversations/seen:
3127
3771
  post:
3128
3772
  operationId: conversations_seen_post
@@ -3150,13 +3794,12 @@ paths:
3150
3794
  type: string
3151
3795
  conversationType:
3152
3796
  type: string
3153
- hostAccess:
3154
- type: boolean
3797
+ inferenceProfile:
3798
+ type: string
3155
3799
  required:
3156
3800
  - conversationId
3157
3801
  - title
3158
3802
  - conversationType
3159
- - hostAccess
3160
3803
  additionalProperties: false
3161
3804
  requestBody:
3162
3805
  required: true
@@ -3179,13 +3822,13 @@ paths:
3179
3822
  responses:
3180
3823
  "200":
3181
3824
  description: Successful response
3182
- /v1/debug:
3183
- get:
3184
- operationId: debug_get
3185
- summary: Debug introspection
3186
- description: "Return runtime diagnostics: uptime, provider info, memory stats, job counts, and schedule counts."
3825
+ /v1/conversations/wake:
3826
+ post:
3827
+ operationId: conversations_wake_post
3828
+ summary: Wake a conversation
3829
+ description: Invoke the agent loop for a conversation with an opportunity hint.
3187
3830
  tags:
3188
- - debug
3831
+ - conversations
3189
3832
  responses:
3190
3833
  "200":
3191
3834
  description: Successful response
@@ -3194,59 +3837,370 @@ paths:
3194
3837
  schema:
3195
3838
  type: object
3196
3839
  properties:
3197
- session:
3198
- type: object
3199
- properties: {}
3200
- additionalProperties: {}
3201
- description: Uptime and start time
3202
- provider:
3203
- type: object
3204
- properties: {}
3205
- additionalProperties: {}
3206
- description: Inference provider configuration
3207
- memory:
3208
- type: object
3209
- properties: {}
3210
- additionalProperties: {}
3211
- description: Conversation and memory item counts
3212
- jobs:
3213
- type: object
3214
- properties: {}
3215
- additionalProperties: {}
3216
- description: Background job counts
3217
- schedules:
3218
- type: object
3219
- properties: {}
3220
- additionalProperties: {}
3221
- description: Schedule counts (total, enabled)
3222
- timestamp:
3840
+ invoked:
3841
+ type: boolean
3842
+ producedToolCalls:
3843
+ type: boolean
3844
+ reason:
3223
3845
  type: string
3224
- description: Current server timestamp (ISO 8601)
3225
3846
  required:
3226
- - session
3227
- - provider
3228
- - memory
3229
- - jobs
3230
- - schedules
3231
- - timestamp
3847
+ - invoked
3848
+ - producedToolCalls
3232
3849
  additionalProperties: false
3233
- /v1/diagnostics/env-vars:
3234
- get:
3235
- operationId: diagnostics_envvars_get
3236
- summary: List safe environment variables
3237
- description: Return environment variable names and values that are safe to expose (no secrets).
3850
+ requestBody:
3851
+ required: true
3852
+ content:
3853
+ application/json:
3854
+ schema:
3855
+ type: object
3856
+ properties:
3857
+ conversationId:
3858
+ type: string
3859
+ minLength: 1
3860
+ hint:
3861
+ type: string
3862
+ minLength: 1
3863
+ source:
3864
+ default: cli
3865
+ type: string
3866
+ required:
3867
+ - conversationId
3868
+ - hint
3869
+ - source
3870
+ additionalProperties: false
3871
+ /v1/conversations/wipe:
3872
+ post:
3873
+ operationId: conversations_wipe_post
3874
+ summary: Wipe a conversation
3875
+ description: Permanently delete a conversation and its associated data including memory vectors.
3238
3876
  tags:
3239
- - diagnostics
3877
+ - conversations
3240
3878
  responses:
3241
3879
  "200":
3242
3880
  description: Successful response
3243
- /v1/dictation:
3881
+ content:
3882
+ application/json:
3883
+ schema:
3884
+ type: object
3885
+ properties:
3886
+ wiped:
3887
+ type: boolean
3888
+ unsupersededItems:
3889
+ type: number
3890
+ deletedSummaries:
3891
+ type: number
3892
+ cancelledJobs:
3893
+ type: number
3894
+ required:
3895
+ - wiped
3896
+ - unsupersededItems
3897
+ - deletedSummaries
3898
+ - cancelledJobs
3899
+ additionalProperties: false
3900
+ requestBody:
3901
+ required: true
3902
+ content:
3903
+ application/json:
3904
+ schema:
3905
+ type: object
3906
+ properties:
3907
+ conversationId:
3908
+ type: string
3909
+ minLength: 1
3910
+ required:
3911
+ - conversationId
3912
+ additionalProperties: false
3913
+ /v1/credentials/prompt:
3244
3914
  post:
3245
- operationId: dictation_post
3246
- summary: Process dictation
3247
- description: Classify voice input as dictation or action, clean up text, and apply user style preferences.
3915
+ operationId: credentials_prompt_post
3916
+ summary: Prompt user for a credential
3917
+ description: Trigger a secure input prompt in the user's app to collect a credential value.
3248
3918
  tags:
3249
- - diagnostics
3919
+ - credentials
3920
+ responses:
3921
+ "200":
3922
+ description: Successful response
3923
+ content:
3924
+ application/json:
3925
+ schema:
3926
+ type: object
3927
+ properties:
3928
+ ok:
3929
+ type: boolean
3930
+ error:
3931
+ type: string
3932
+ service:
3933
+ type: string
3934
+ field:
3935
+ type: string
3936
+ required:
3937
+ - ok
3938
+ additionalProperties: false
3939
+ requestBody:
3940
+ required: true
3941
+ content:
3942
+ application/json:
3943
+ schema:
3944
+ type: object
3945
+ properties:
3946
+ service:
3947
+ type: string
3948
+ minLength: 1
3949
+ field:
3950
+ type: string
3951
+ minLength: 1
3952
+ label:
3953
+ type: string
3954
+ minLength: 1
3955
+ description:
3956
+ type: string
3957
+ placeholder:
3958
+ type: string
3959
+ allowedDomains:
3960
+ type: array
3961
+ items:
3962
+ type: string
3963
+ allowedTools:
3964
+ type: array
3965
+ items:
3966
+ type: string
3967
+ injectionTemplates:
3968
+ type: array
3969
+ items:
3970
+ type: object
3971
+ properties:
3972
+ hostPattern:
3973
+ type: string
3974
+ minLength: 1
3975
+ injectionType:
3976
+ type: string
3977
+ enum:
3978
+ - header
3979
+ - query
3980
+ headerName:
3981
+ type: string
3982
+ valuePrefix:
3983
+ type: string
3984
+ queryParamName:
3985
+ type: string
3986
+ required:
3987
+ - hostPattern
3988
+ - injectionType
3989
+ additionalProperties: false
3990
+ required:
3991
+ - service
3992
+ - field
3993
+ - label
3994
+ additionalProperties: false
3995
+ /v1/debug:
3996
+ get:
3997
+ operationId: debug_get
3998
+ summary: Debug introspection
3999
+ description: "Return runtime diagnostics: uptime, provider info, memory stats, job counts, and schedule counts."
4000
+ tags:
4001
+ - debug
4002
+ responses:
4003
+ "200":
4004
+ description: Successful response
4005
+ content:
4006
+ application/json:
4007
+ schema:
4008
+ type: object
4009
+ properties:
4010
+ session:
4011
+ type: object
4012
+ properties: {}
4013
+ additionalProperties: {}
4014
+ description: Uptime and start time
4015
+ provider:
4016
+ type: object
4017
+ properties: {}
4018
+ additionalProperties: {}
4019
+ description: Inference provider configuration
4020
+ memory:
4021
+ type: object
4022
+ properties: {}
4023
+ additionalProperties: {}
4024
+ description: Conversation and memory item counts
4025
+ jobs:
4026
+ type: object
4027
+ properties: {}
4028
+ additionalProperties: {}
4029
+ description: Background job counts
4030
+ schedules:
4031
+ type: object
4032
+ properties: {}
4033
+ additionalProperties: {}
4034
+ description: Schedule counts (total, enabled)
4035
+ timestamp:
4036
+ type: string
4037
+ description: Current server timestamp (ISO 8601)
4038
+ required:
4039
+ - session
4040
+ - provider
4041
+ - memory
4042
+ - jobs
4043
+ - schedules
4044
+ - timestamp
4045
+ additionalProperties: false
4046
+ /v1/defer/cancel:
4047
+ post:
4048
+ operationId: defer_cancel_post
4049
+ summary: Cancel deferred wakes
4050
+ description: Cancel a specific deferred wake by ID, or all defers for a conversation.
4051
+ tags:
4052
+ - defer
4053
+ responses:
4054
+ "200":
4055
+ description: Successful response
4056
+ content:
4057
+ application/json:
4058
+ schema:
4059
+ type: object
4060
+ properties:
4061
+ cancelled:
4062
+ type: number
4063
+ error:
4064
+ type: string
4065
+ required:
4066
+ - cancelled
4067
+ additionalProperties: false
4068
+ requestBody:
4069
+ required: true
4070
+ content:
4071
+ application/json:
4072
+ schema:
4073
+ type: object
4074
+ properties:
4075
+ id:
4076
+ type: string
4077
+ all:
4078
+ type: boolean
4079
+ conversationId:
4080
+ type: string
4081
+ additionalProperties: false
4082
+ /v1/defer/create:
4083
+ post:
4084
+ operationId: defer_create_post
4085
+ summary: Create a deferred wake
4086
+ description: Schedule a future wake-up on a conversation, optionally with a delay or absolute timestamp.
4087
+ tags:
4088
+ - defer
4089
+ responses:
4090
+ "200":
4091
+ description: Successful response
4092
+ content:
4093
+ application/json:
4094
+ schema:
4095
+ type: object
4096
+ properties:
4097
+ id:
4098
+ type: string
4099
+ name:
4100
+ type: string
4101
+ fireAt:
4102
+ type: number
4103
+ conversationId:
4104
+ type: string
4105
+ required:
4106
+ - id
4107
+ - name
4108
+ - fireAt
4109
+ - conversationId
4110
+ additionalProperties: false
4111
+ requestBody:
4112
+ required: true
4113
+ content:
4114
+ application/json:
4115
+ schema:
4116
+ type: object
4117
+ properties:
4118
+ conversationId:
4119
+ type: string
4120
+ minLength: 1
4121
+ hint:
4122
+ type: string
4123
+ minLength: 1
4124
+ delaySeconds:
4125
+ type: number
4126
+ fireAt:
4127
+ type: number
4128
+ name:
4129
+ type: string
4130
+ required:
4131
+ - conversationId
4132
+ - hint
4133
+ additionalProperties: false
4134
+ /v1/defer/list:
4135
+ post:
4136
+ operationId: defer_list_post
4137
+ summary: List active deferred wakes
4138
+ description: List all active deferred wakes, optionally filtered by conversation.
4139
+ tags:
4140
+ - defer
4141
+ responses:
4142
+ "200":
4143
+ description: Successful response
4144
+ content:
4145
+ application/json:
4146
+ schema:
4147
+ type: object
4148
+ properties:
4149
+ defers:
4150
+ type: array
4151
+ items:
4152
+ type: object
4153
+ properties:
4154
+ id:
4155
+ type: string
4156
+ name:
4157
+ type: string
4158
+ hint:
4159
+ type: string
4160
+ conversationId:
4161
+ type: string
4162
+ fireAt:
4163
+ type: number
4164
+ status:
4165
+ type: string
4166
+ required:
4167
+ - id
4168
+ - name
4169
+ - hint
4170
+ - conversationId
4171
+ - fireAt
4172
+ - status
4173
+ additionalProperties: false
4174
+ required:
4175
+ - defers
4176
+ additionalProperties: false
4177
+ requestBody:
4178
+ required: true
4179
+ content:
4180
+ application/json:
4181
+ schema:
4182
+ type: object
4183
+ properties:
4184
+ conversationId:
4185
+ type: string
4186
+ additionalProperties: false
4187
+ /v1/diagnostics/env-vars:
4188
+ get:
4189
+ operationId: diagnostics_envvars_get
4190
+ summary: List safe environment variables
4191
+ description: Return environment variable names and values that are safe to expose (no secrets).
4192
+ tags:
4193
+ - diagnostics
4194
+ responses:
4195
+ "200":
4196
+ description: Successful response
4197
+ /v1/dictation:
4198
+ post:
4199
+ operationId: dictation_post
4200
+ summary: Process dictation
4201
+ description: Classify voice input as dictation or action, clean up text, and apply user style preferences.
4202
+ tags:
4203
+ - diagnostics
3250
4204
  responses:
3251
4205
  "200":
3252
4206
  description: Successful response
@@ -3344,6 +4298,7 @@ paths:
3344
4298
  properties:
3345
4299
  success:
3346
4300
  type: boolean
4301
+ const: true
3347
4302
  surfaceId:
3348
4303
  type: string
3349
4304
  required:
@@ -3453,6 +4408,8 @@ paths:
3453
4408
  responses:
3454
4409
  "200":
3455
4410
  description: Successful response
4411
+ "500":
4412
+ description: Failed to create archive
3456
4413
  requestBody:
3457
4414
  required: true
3458
4415
  content:
@@ -3469,9 +4426,7 @@ paths:
3469
4426
  description: Scope to a single conversation
3470
4427
  type: string
3471
4428
  full:
3472
- description:
3473
- Full export — include messages, LLM request logs, and usage events for all conversations. Use for test data
3474
- debugging.
4429
+ description: Full export — include messages, LLM request logs, and usage events for all conversations.
3475
4430
  type: boolean
3476
4431
  startTime:
3477
4432
  description: Lower bound epoch ms
@@ -3567,8 +4522,10 @@ paths:
3567
4522
  tags:
3568
4523
  - groups
3569
4524
  responses:
3570
- "200":
4525
+ "201":
3571
4526
  description: Successful response
4527
+ "400":
4528
+ description: Missing or invalid name, or sort_position ceiling reached
3572
4529
  requestBody:
3573
4530
  required: true
3574
4531
  content:
@@ -3590,8 +4547,12 @@ paths:
3590
4547
  tags:
3591
4548
  - groups
3592
4549
  responses:
3593
- "200":
4550
+ "204":
3594
4551
  description: Successful response
4552
+ "403":
4553
+ description: System groups cannot be deleted
4554
+ "404":
4555
+ description: Group not found
3595
4556
  parameters:
3596
4557
  - name: groupId
3597
4558
  in: path
@@ -3607,6 +4568,10 @@ paths:
3607
4568
  responses:
3608
4569
  "200":
3609
4570
  description: Successful response
4571
+ "403":
4572
+ description: System group sort position cannot be changed
4573
+ "404":
4574
+ description: Group not found
3610
4575
  parameters:
3611
4576
  - name: groupId
3612
4577
  in: path
@@ -3635,6 +4600,8 @@ paths:
3635
4600
  responses:
3636
4601
  "200":
3637
4602
  description: Successful response
4603
+ "403":
4604
+ description: Cannot reorder system groups
3638
4605
  requestBody:
3639
4606
  required: true
3640
4607
  content:
@@ -3740,18 +4707,6 @@ paths:
3740
4707
  schema:
3741
4708
  type: string
3742
4709
  description: Conversation ID (required)
3743
- /v1/guardian/init:
3744
- post:
3745
- operationId: guardian_init_post
3746
- responses:
3747
- "200":
3748
- description: Successful response
3749
- /v1/guardian/refresh:
3750
- post:
3751
- operationId: guardian_refresh_post
3752
- responses:
3753
- "200":
3754
- description: Successful response
3755
4710
  /v1/health:
3756
4711
  get:
3757
4712
  operationId: health_get
@@ -4071,11 +5026,21 @@ paths:
4071
5026
  intervalMs:
4072
5027
  type: number
4073
5028
  activeHoursStart:
4074
- type: number
5029
+ anyOf:
5030
+ - type: number
5031
+ - type: "null"
4075
5032
  activeHoursEnd:
4076
- type: number
5033
+ anyOf:
5034
+ - type: number
5035
+ - type: "null"
4077
5036
  nextRunAt:
4078
- type: string
5037
+ anyOf:
5038
+ - type: number
5039
+ - type: "null"
5040
+ lastRunAt:
5041
+ anyOf:
5042
+ - type: number
5043
+ - type: "null"
4079
5044
  success:
4080
5045
  type: boolean
4081
5046
  required:
@@ -4084,6 +5049,7 @@ paths:
4084
5049
  - activeHoursStart
4085
5050
  - activeHoursEnd
4086
5051
  - nextRunAt
5052
+ - lastRunAt
4087
5053
  - success
4088
5054
  additionalProperties: false
4089
5055
  put:
@@ -4105,11 +5071,21 @@ paths:
4105
5071
  intervalMs:
4106
5072
  type: number
4107
5073
  activeHoursStart:
4108
- type: number
5074
+ anyOf:
5075
+ - type: number
5076
+ - type: "null"
4109
5077
  activeHoursEnd:
4110
- type: number
5078
+ anyOf:
5079
+ - type: number
5080
+ - type: "null"
4111
5081
  nextRunAt:
4112
- type: string
5082
+ anyOf:
5083
+ - type: number
5084
+ - type: "null"
5085
+ lastRunAt:
5086
+ anyOf:
5087
+ - type: number
5088
+ - type: "null"
4113
5089
  success:
4114
5090
  type: boolean
4115
5091
  required:
@@ -4118,6 +5094,7 @@ paths:
4118
5094
  - activeHoursStart
4119
5095
  - activeHoursEnd
4120
5096
  - nextRunAt
5097
+ - lastRunAt
4121
5098
  - success
4122
5099
  additionalProperties: false
4123
5100
  requestBody:
@@ -4197,7 +5174,7 @@ paths:
4197
5174
  required: false
4198
5175
  schema:
4199
5176
  type: integer
4200
- description: Max runs to return (default 20)
5177
+ description: Max runs to return (default 20, max 100)
4201
5178
  /v1/home/feed:
4202
5179
  get:
4203
5180
  operationId: home_feed_get
@@ -4508,6 +5485,10 @@ paths:
4508
5485
  - author
4509
5486
  - createdAt
4510
5487
  additionalProperties: false
5488
+ "404":
5489
+ description: Feed item not found
5490
+ "500":
5491
+ description: Failed to persist feed item status
4511
5492
  parameters:
4512
5493
  - name: id
4513
5494
  in: path
@@ -4553,6 +5534,10 @@ paths:
4553
5534
  required:
4554
5535
  - conversationId
4555
5536
  additionalProperties: false
5537
+ "404":
5538
+ description: Feed item or action not found
5539
+ "500":
5540
+ description: Failed to create conversation
4556
5541
  parameters:
4557
5542
  - name: id
4558
5543
  in: path
@@ -4682,6 +5667,8 @@ paths:
4682
5667
  - assistantName
4683
5668
  - updatedAt
4684
5669
  additionalProperties: false
5670
+ "500":
5671
+ description: Failed to compute relationship state
4685
5672
  /v1/host-bash-result:
4686
5673
  post:
4687
5674
  operationId: hostbashresult_post
@@ -4860,6 +5847,45 @@ paths:
4860
5847
  required:
4861
5848
  - requestId
4862
5849
  additionalProperties: false
5850
+ /v1/host-transfer-result:
5851
+ post:
5852
+ operationId: hosttransferresult_post
5853
+ summary: Submit host transfer result
5854
+ description: Resolve a pending to_host transfer after the client has downloaded and written the file.
5855
+ tags:
5856
+ - host-transfer
5857
+ responses:
5858
+ "200":
5859
+ description: Successful response
5860
+ content:
5861
+ application/json:
5862
+ schema:
5863
+ type: object
5864
+ properties:
5865
+ accepted:
5866
+ type: boolean
5867
+ required:
5868
+ - accepted
5869
+ additionalProperties: false
5870
+ requestBody:
5871
+ required: true
5872
+ content:
5873
+ application/json:
5874
+ schema:
5875
+ type: object
5876
+ properties:
5877
+ requestId:
5878
+ type: string
5879
+ description: Pending transfer request ID
5880
+ isError:
5881
+ type: boolean
5882
+ bytesWritten:
5883
+ type: number
5884
+ errorMessage:
5885
+ type: string
5886
+ required:
5887
+ - requestId
5888
+ additionalProperties: false
4863
5889
  /v1/identity:
4864
5890
  get:
4865
5891
  operationId: identity_get
@@ -4948,6 +5974,8 @@ paths:
4948
5974
  type: string
4949
5975
  localGatewayTarget:
4950
5976
  type: string
5977
+ managedCallbacks:
5978
+ type: boolean
4951
5979
  success:
4952
5980
  type: boolean
4953
5981
  required:
@@ -5000,145 +6028,183 @@ paths:
5000
6028
  /v1/integrations/slack/channel/config:
5001
6029
  delete:
5002
6030
  operationId: integrations_slack_channel_config_delete
6031
+ summary: Clear Slack channel config
6032
+ description: Clear stored Slack channel credentials.
5003
6033
  tags:
5004
- - channel
6034
+ - integrations
5005
6035
  responses:
5006
6036
  "200":
5007
6037
  description: Successful response
5008
6038
  get:
5009
6039
  operationId: integrations_slack_channel_config_get
6040
+ summary: Get Slack channel config
6041
+ description: Check current Slack channel configuration status.
5010
6042
  tags:
5011
- - channel
6043
+ - integrations
5012
6044
  responses:
5013
6045
  "200":
5014
6046
  description: Successful response
5015
6047
  post:
5016
6048
  operationId: integrations_slack_channel_config_post
6049
+ summary: Set Slack channel config
6050
+ description: Validate and store Slack channel credentials.
5017
6051
  tags:
5018
- - channel
6052
+ - integrations
5019
6053
  responses:
5020
6054
  "200":
5021
6055
  description: Successful response
5022
6056
  /v1/integrations/slack/channel/oauth-install:
5023
6057
  post:
5024
6058
  operationId: integrations_slack_channel_oauthinstall_post
6059
+ summary: Run Slack OAuth install
6060
+ description: Run an OAuth2 loopback flow to install the Slack app and capture bot + user tokens.
5025
6061
  tags:
5026
- - channel
6062
+ - integrations
5027
6063
  responses:
5028
6064
  "200":
5029
6065
  description: Successful response
5030
6066
  /v1/integrations/telegram/commands:
5031
6067
  post:
5032
6068
  operationId: integrations_telegram_commands_post
6069
+ summary: Register Telegram commands
6070
+ description: Register bot commands with the Telegram API.
5033
6071
  tags:
5034
- - telegram
6072
+ - integrations
5035
6073
  responses:
5036
6074
  "200":
5037
6075
  description: Successful response
5038
6076
  /v1/integrations/telegram/config:
5039
6077
  delete:
5040
6078
  operationId: integrations_telegram_config_delete
6079
+ summary: Clear Telegram config
6080
+ description: Clear credentials and deregister webhook.
5041
6081
  tags:
5042
- - telegram
6082
+ - integrations
5043
6083
  responses:
5044
6084
  "200":
5045
6085
  description: Successful response
5046
6086
  get:
5047
6087
  operationId: integrations_telegram_config_get
6088
+ summary: Get Telegram config
6089
+ description: Check current Telegram bot configuration status.
5048
6090
  tags:
5049
- - telegram
6091
+ - integrations
5050
6092
  responses:
5051
6093
  "200":
5052
6094
  description: Successful response
5053
6095
  post:
5054
6096
  operationId: integrations_telegram_config_post
6097
+ summary: Set Telegram config
6098
+ description: Set bot token and configure webhook.
5055
6099
  tags:
5056
- - telegram
6100
+ - integrations
5057
6101
  responses:
5058
6102
  "200":
5059
6103
  description: Successful response
5060
6104
  /v1/integrations/telegram/setup:
5061
6105
  post:
5062
6106
  operationId: integrations_telegram_setup_post
6107
+ summary: Setup Telegram
6108
+ description: "Composite: set config + register commands."
5063
6109
  tags:
5064
- - telegram
6110
+ - integrations
5065
6111
  responses:
5066
6112
  "200":
5067
6113
  description: Successful response
5068
6114
  /v1/integrations/twilio/config:
5069
6115
  get:
5070
6116
  operationId: integrations_twilio_config_get
6117
+ summary: Get Twilio config
6118
+ description: Return current Twilio configuration status.
5071
6119
  tags:
5072
- - twilio
6120
+ - integrations
5073
6121
  responses:
5074
6122
  "200":
5075
6123
  description: Successful response
5076
6124
  /v1/integrations/twilio/credentials:
5077
6125
  delete:
5078
6126
  operationId: integrations_twilio_credentials_delete
6127
+ summary: Clear Twilio credentials
6128
+ description: Remove stored Twilio credentials.
5079
6129
  tags:
5080
- - twilio
6130
+ - integrations
5081
6131
  responses:
5082
6132
  "200":
5083
6133
  description: Successful response
5084
6134
  post:
5085
6135
  operationId: integrations_twilio_credentials_post
6136
+ summary: Set Twilio credentials
6137
+ description: Validate and store Twilio account SID and auth token.
5086
6138
  tags:
5087
- - twilio
6139
+ - integrations
5088
6140
  responses:
5089
6141
  "200":
5090
6142
  description: Successful response
5091
6143
  /v1/integrations/twilio/numbers:
5092
6144
  get:
5093
6145
  operationId: integrations_twilio_numbers_get
6146
+ summary: List Twilio numbers
6147
+ description: List phone numbers on the Twilio account.
5094
6148
  tags:
5095
- - twilio
6149
+ - integrations
5096
6150
  responses:
5097
6151
  "200":
5098
6152
  description: Successful response
5099
6153
  /v1/integrations/twilio/numbers/assign:
5100
6154
  post:
5101
6155
  operationId: integrations_twilio_numbers_assign_post
6156
+ summary: Assign Twilio number
6157
+ description: Assign an existing phone number to this assistant.
5102
6158
  tags:
5103
- - twilio
6159
+ - integrations
5104
6160
  responses:
5105
6161
  "200":
5106
6162
  description: Successful response
5107
6163
  /v1/integrations/twilio/numbers/provision:
5108
6164
  post:
5109
6165
  operationId: integrations_twilio_numbers_provision_post
6166
+ summary: Provision Twilio number
6167
+ description: Search for and provision a new phone number.
5110
6168
  tags:
5111
- - twilio
6169
+ - integrations
5112
6170
  responses:
5113
6171
  "200":
5114
6172
  description: Successful response
5115
6173
  /v1/integrations/twilio/numbers/release:
5116
6174
  post:
5117
6175
  operationId: integrations_twilio_numbers_release_post
6176
+ summary: Release Twilio number
6177
+ description: Release a phone number back to Twilio.
5118
6178
  tags:
5119
- - twilio
6179
+ - integrations
5120
6180
  responses:
5121
6181
  "200":
5122
6182
  description: Successful response
5123
6183
  /v1/integrations/vercel/config:
5124
6184
  delete:
5125
6185
  operationId: integrations_vercel_config_delete
6186
+ summary: Delete Vercel config
6187
+ description: Delete the stored Vercel API token.
5126
6188
  tags:
5127
- - vercel
6189
+ - integrations
5128
6190
  responses:
5129
6191
  "200":
5130
6192
  description: Successful response
5131
6193
  get:
5132
6194
  operationId: integrations_vercel_config_get
6195
+ summary: Get Vercel config
6196
+ description: Check if a Vercel API token is stored.
5133
6197
  tags:
5134
- - vercel
6198
+ - integrations
5135
6199
  responses:
5136
6200
  "200":
5137
6201
  description: Successful response
5138
6202
  post:
5139
6203
  operationId: integrations_vercel_config_post
6204
+ summary: Set or delete Vercel config
6205
+ description: Set or delete the Vercel API token. Action is determined by the body action field.
5140
6206
  tags:
5141
- - vercel
6207
+ - integrations
5142
6208
  responses:
5143
6209
  "200":
5144
6210
  description: Successful response
@@ -5218,6 +6284,8 @@ paths:
5218
6284
  responses:
5219
6285
  "200":
5220
6286
  description: Successful response
6287
+ "500":
6288
+ description: Failed to create archive
5221
6289
  requestBody:
5222
6290
  required: true
5223
6291
  content:
@@ -5234,9 +6302,7 @@ paths:
5234
6302
  description: Scope to a single conversation
5235
6303
  type: string
5236
6304
  full:
5237
- description:
5238
- Full export — include messages, LLM request logs, and usage events for all conversations. Use for test data
5239
- debugging.
6305
+ description: Full export — include messages, LLM request logs, and usage events for all conversations.
5240
6306
  type: boolean
5241
6307
  startTime:
5242
6308
  description: Lower bound epoch ms
@@ -5320,7 +6386,7 @@ paths:
5320
6386
  tags:
5321
6387
  - memory
5322
6388
  responses:
5323
- "200":
6389
+ "201":
5324
6390
  description: Successful response
5325
6391
  content:
5326
6392
  application/json:
@@ -5335,6 +6401,8 @@ paths:
5335
6401
  required:
5336
6402
  - item
5337
6403
  additionalProperties: false
6404
+ "409":
6405
+ description: A memory with this content already exists
5338
6406
  requestBody:
5339
6407
  required: true
5340
6408
  content:
@@ -5366,18 +6434,8 @@ paths:
5366
6434
  tags:
5367
6435
  - memory
5368
6436
  responses:
5369
- "200":
6437
+ "204":
5370
6438
  description: Successful response
5371
- content:
5372
- application/json:
5373
- schema:
5374
- type: object
5375
- properties:
5376
- ok:
5377
- type: boolean
5378
- required:
5379
- - ok
5380
- additionalProperties: false
5381
6439
  parameters:
5382
6440
  - name: id
5383
6441
  in: path
@@ -5434,6 +6492,8 @@ paths:
5434
6492
  required:
5435
6493
  - item
5436
6494
  additionalProperties: false
6495
+ "409":
6496
+ description: Another memory item with this content already exists
5437
6497
  parameters:
5438
6498
  - name: id
5439
6499
  in: path
@@ -5458,6 +6518,75 @@ paths:
5458
6518
  importance:
5459
6519
  type: number
5460
6520
  additionalProperties: false
6521
+ /v1/memory/v2/backfill:
6522
+ post:
6523
+ operationId: memory_v2_backfill_post
6524
+ summary: Enqueue a memory v2 backfill job
6525
+ description:
6526
+ Enqueues one of four operator-triggered backfill jobs (migrate, rebuild-edges, reembed,
6527
+ activation-recompute) against the memory jobs queue.
6528
+ tags:
6529
+ - memory
6530
+ responses:
6531
+ "200":
6532
+ description: Successful response
6533
+ requestBody:
6534
+ required: true
6535
+ content:
6536
+ application/json:
6537
+ schema:
6538
+ type: object
6539
+ properties:
6540
+ op:
6541
+ type: string
6542
+ enum:
6543
+ - migrate
6544
+ - rebuild-edges
6545
+ - reembed
6546
+ - activation-recompute
6547
+ force:
6548
+ type: boolean
6549
+ required:
6550
+ - op
6551
+ additionalProperties: false
6552
+ /v1/memory/v2/reembed-skills:
6553
+ post:
6554
+ operationId: memory_v2_reembedskills_post
6555
+ summary: Re-seed v2 skill entries from the current skill catalog
6556
+ description:
6557
+ Synchronously re-runs seedV2SkillEntries against the current skill catalog. Gated on memory-v2-enabled flag
6558
+ and config.memory.v2.enabled.
6559
+ tags:
6560
+ - memory
6561
+ responses:
6562
+ "200":
6563
+ description: Successful response
6564
+ requestBody:
6565
+ required: true
6566
+ content:
6567
+ application/json:
6568
+ schema:
6569
+ type: object
6570
+ properties: {}
6571
+ additionalProperties: false
6572
+ /v1/memory/v2/validate:
6573
+ post:
6574
+ operationId: memory_v2_validate_post
6575
+ summary: Validate memory v2 workspace state
6576
+ description: Read-only structural validation of the v2 workspace — reports orphan edges, oversized pages, and parse failures.
6577
+ tags:
6578
+ - memory
6579
+ responses:
6580
+ "200":
6581
+ description: Successful response
6582
+ requestBody:
6583
+ required: true
6584
+ content:
6585
+ application/json:
6586
+ schema:
6587
+ type: object
6588
+ properties: {}
6589
+ additionalProperties: false
5461
6590
  /v1/messages:
5462
6591
  get:
5463
6592
  operationId: messages_get
@@ -5481,11 +6610,17 @@ paths:
5481
6610
  description: Whether older messages exist beyond this page
5482
6611
  type: boolean
5483
6612
  oldestTimestamp:
5484
- description: Timestamp of the oldest message in this page (ms since epoch)
5485
- type: number
6613
+ description:
6614
+ Timestamp of the oldest message in this page (ms since epoch). Null when page=latest is used on an empty
6615
+ conversation.
6616
+ anyOf:
6617
+ - type: number
6618
+ - type: "null"
5486
6619
  oldestMessageId:
5487
6620
  description: ID of the oldest message in this page
5488
- type: string
6621
+ anyOf:
6622
+ - type: string
6623
+ - type: "null"
5489
6624
  required:
5490
6625
  - messages
5491
6626
  additionalProperties: false
@@ -5496,7 +6631,7 @@ paths:
5496
6631
  tags:
5497
6632
  - messages
5498
6633
  responses:
5499
- "200":
6634
+ "202":
5500
6635
  description: Successful response
5501
6636
  requestBody:
5502
6637
  required: true
@@ -5518,6 +6653,17 @@ paths:
5518
6653
  type: string
5519
6654
  slashCommand:
5520
6655
  type: string
6656
+ inferenceProfile:
6657
+ anyOf:
6658
+ - type: string
6659
+ - type: "null"
6660
+ riskThreshold:
6661
+ type: string
6662
+ enum:
6663
+ - none
6664
+ - low
6665
+ - medium
6666
+ - high
5521
6667
  required:
5522
6668
  - content
5523
6669
  additionalProperties: false
@@ -5537,6 +6683,12 @@ paths:
5537
6683
  required: true
5538
6684
  schema:
5539
6685
  type: string
6686
+ - name: conversationId
6687
+ in: query
6688
+ required: false
6689
+ schema:
6690
+ type: string
6691
+ description: Optional conversation ID filter
5540
6692
  /v1/messages/{id}/llm-context:
5541
6693
  get:
5542
6694
  operationId: messages_by_id_llmcontext_get
@@ -5572,9 +6724,9 @@ paths:
5572
6724
  required: true
5573
6725
  schema:
5574
6726
  type: string
5575
- /v1/messages/{id}/tts:
6727
+ /v1/messages/{messageId}/tts:
5576
6728
  post:
5577
- operationId: messages_by_id_tts_post
6729
+ operationId: messages_by_messageId_tts_post
5578
6730
  summary: Synthesize message to speech
5579
6731
  description: Synthesize a message's text content to audio using the configured TTS provider.
5580
6732
  tags:
@@ -5583,7 +6735,7 @@ paths:
5583
6735
  "200":
5584
6736
  description: Successful response
5585
6737
  parameters:
5586
- - name: id
6738
+ - name: messageId
5587
6739
  in: path
5588
6740
  required: true
5589
6741
  schema:
@@ -5610,6 +6762,12 @@ paths:
5610
6762
  required: true
5611
6763
  schema:
5612
6764
  type: string
6765
+ - name: conversationId
6766
+ in: query
6767
+ required: true
6768
+ schema:
6769
+ type: string
6770
+ description: Conversation ID (required)
5613
6771
  /v1/migrations/export:
5614
6772
  post:
5615
6773
  operationId: migrations_export_post
@@ -5633,14 +6791,62 @@ paths:
5633
6791
  required:
5634
6792
  - description
5635
6793
  additionalProperties: false
6794
+ /v1/migrations/export-to-gcs:
6795
+ post:
6796
+ operationId: migrations_exporttogcs_post
6797
+ summary: Start an async export streamed to a GCS signed URL
6798
+ description:
6799
+ Kick off a background export job that PUTs a freshly-built .vbundle archive to the supplied GCS signed URL.
6800
+ Returns 202 with a job_id the caller can poll via the job-status endpoint. Fails fast with 409 if another export
6801
+ job is already pending or running.
6802
+ tags:
6803
+ - migrations
6804
+ responses:
6805
+ "202":
6806
+ description: Successful response
6807
+ content:
6808
+ application/json:
6809
+ schema:
6810
+ type: object
6811
+ properties:
6812
+ job_id:
6813
+ type: string
6814
+ status:
6815
+ type: string
6816
+ const: pending
6817
+ type:
6818
+ type: string
6819
+ const: export
6820
+ required:
6821
+ - job_id
6822
+ - status
6823
+ - type
6824
+ additionalProperties: false
6825
+ requestBody:
6826
+ required: true
6827
+ content:
6828
+ application/json:
6829
+ schema:
6830
+ type: object
6831
+ properties:
6832
+ upload_url:
6833
+ type: string
6834
+ format: uri
6835
+ description: Signed GCS PUT URL that receives the exported bundle.
6836
+ description:
6837
+ description: Human-readable export description.
6838
+ type: string
6839
+ required:
6840
+ - upload_url
6841
+ additionalProperties: false
5636
6842
  /v1/migrations/import:
5637
6843
  post:
5638
6844
  operationId: migrations_import_post
5639
6845
  summary: Import a .vbundle archive
5640
6846
  description:
5641
6847
  Commit a .vbundle archive import to disk — destructive. Accepts the bundle as raw bytes
5642
- (application/octet-stream), multipart/form-data, or a JSON body carrying a signed URL the daemon fetches and
5643
- streams through the importer.
6848
+ (application/octet-stream), multipart/form-data, or a JSON body with `{ url }` carrying a signed URL the daemon
6849
+ fetches.
5644
6850
  tags:
5645
6851
  - migrations
5646
6852
  responses:
@@ -5675,55 +6881,67 @@ paths:
5675
6881
  - warnings
5676
6882
  additionalProperties: false
5677
6883
  "502":
5678
- description:
5679
- "Upstream fetch failed (URL body only). Body shape: { success: false, reason: 'fetch_failed',
5680
- upstream_status?: number }."
6884
+ description: Upstream fetch failed (URL body only).
6885
+ requestBody:
6886
+ required: true
6887
+ content:
6888
+ application/json:
6889
+ schema:
6890
+ type: object
6891
+ properties:
6892
+ url:
6893
+ type: string
6894
+ format: uri
6895
+ description: A signed GCS URL pointing to the .vbundle archive (JSON body path only).
6896
+ required:
6897
+ - url
6898
+ additionalProperties: false
6899
+ /v1/migrations/import-from-gcs:
6900
+ post:
6901
+ operationId: migrations_importfromgcs_post
6902
+ summary: Start an async .vbundle import from a signed GCS URL
6903
+ description:
6904
+ Schedule a background import job that fetches the bundle at `bundle_url` and streams it through the
6905
+ importer. Returns 202 with a `job_id`; poll `GET /v1/migrations/jobs/{job_id}` for status. 409 if another import
6906
+ is already in flight.
6907
+ tags:
6908
+ - migrations
6909
+ responses:
6910
+ "202":
6911
+ description: Successful response
5681
6912
  content:
5682
6913
  application/json:
5683
6914
  schema:
5684
6915
  type: object
5685
6916
  properties:
5686
- success:
5687
- type: boolean
5688
- reason:
6917
+ job_id:
5689
6918
  type: string
5690
- enum:
5691
- - fetch_failed
5692
- upstream_status:
5693
- type: integer
6919
+ status:
6920
+ type: string
6921
+ const: pending
6922
+ type:
6923
+ type: string
6924
+ const: import
5694
6925
  required:
5695
- - success
5696
- - reason
6926
+ - job_id
6927
+ - status
6928
+ - type
6929
+ additionalProperties: false
6930
+ "409":
6931
+ description: Another import job is already pending or running.
5697
6932
  requestBody:
5698
6933
  required: true
5699
6934
  content:
5700
- application/octet-stream:
5701
- schema:
5702
- type: string
5703
- format: binary
5704
- description: Raw .vbundle archive bytes.
5705
- multipart/form-data:
5706
- schema:
5707
- type: object
5708
- properties:
5709
- file:
5710
- type: string
5711
- format: binary
5712
- description: The .vbundle archive uploaded as a file field.
5713
- required:
5714
- - file
5715
6935
  application/json:
5716
6936
  schema:
5717
6937
  type: object
5718
6938
  properties:
5719
- url:
6939
+ bundle_url:
5720
6940
  type: string
5721
6941
  format: uri
5722
- description:
5723
- A signed GCS URL pointing to the .vbundle archive. The daemon fetches the URL and streams the body through
5724
- the importer.
5725
6942
  required:
5726
- - url
6943
+ - bundle_url
6944
+ additionalProperties: false
5727
6945
  /v1/migrations/import-preflight:
5728
6946
  post:
5729
6947
  operationId: migrations_importpreflight_post
@@ -5762,11 +6980,14 @@ paths:
5762
6980
  - conflicts
5763
6981
  - manifest
5764
6982
  additionalProperties: false
5765
- /v1/migrations/validate:
5766
- post:
5767
- operationId: migrations_validate_post
5768
- summary: Validate a .vbundle archive
5769
- description: Upload a .vbundle archive for validation. Accepts raw binary or multipart form data.
6983
+ /v1/migrations/jobs/{job_id}:
6984
+ get:
6985
+ operationId: migrations_jobs_by_job_id_get
6986
+ summary: Get migration job status
6987
+ description:
6988
+ "Return the current status of an async migration job (export or import). The response discriminates on
6989
+ `status`: `processing` (pending or running), `complete` (with `result`), or `failed` (with `error`,
6990
+ `error_code`, optional `upstream_status`)."
5770
6991
  tags:
5771
6992
  - migrations
5772
6993
  responses:
@@ -5775,41 +6996,126 @@ paths:
5775
6996
  content:
5776
6997
  application/json:
5777
6998
  schema:
5778
- type: object
5779
- properties:
5780
- is_valid:
5781
- type: boolean
5782
- errors:
5783
- type: array
5784
- items: {}
5785
- manifest:
5786
- type: object
5787
- properties: {}
5788
- additionalProperties: {}
5789
- required:
5790
- - is_valid
5791
- - errors
5792
- - manifest
5793
- additionalProperties: false
5794
- /v1/model:
5795
- get:
5796
- operationId: model_get
5797
- summary: Get current model config
5798
- description: Return the active LLM model ID, provider, and available models.
5799
- tags:
5800
- - config
5801
- responses:
5802
- "200":
5803
- description: Successful response
5804
- put:
5805
- operationId: model_put
5806
- summary: Set LLM model
5807
- description: Change the active LLM model and optionally its provider.
5808
- tags:
5809
- - config
5810
- responses:
5811
- "200":
5812
- description: Successful response
6999
+ oneOf:
7000
+ - type: object
7001
+ properties:
7002
+ job_id:
7003
+ type: string
7004
+ type:
7005
+ type: string
7006
+ enum:
7007
+ - export
7008
+ - import
7009
+ status:
7010
+ type: string
7011
+ const: processing
7012
+ required:
7013
+ - job_id
7014
+ - type
7015
+ - status
7016
+ additionalProperties: false
7017
+ - type: object
7018
+ properties:
7019
+ job_id:
7020
+ type: string
7021
+ type:
7022
+ type: string
7023
+ enum:
7024
+ - export
7025
+ - import
7026
+ status:
7027
+ type: string
7028
+ const: complete
7029
+ result: {}
7030
+ required:
7031
+ - job_id
7032
+ - type
7033
+ - status
7034
+ - result
7035
+ additionalProperties: false
7036
+ - type: object
7037
+ properties:
7038
+ job_id:
7039
+ type: string
7040
+ type:
7041
+ type: string
7042
+ enum:
7043
+ - export
7044
+ - import
7045
+ status:
7046
+ type: string
7047
+ const: failed
7048
+ error:
7049
+ type: string
7050
+ error_code:
7051
+ type: string
7052
+ upstream_status:
7053
+ type: integer
7054
+ minimum: -9007199254740991
7055
+ maximum: 9007199254740991
7056
+ required:
7057
+ - job_id
7058
+ - type
7059
+ - status
7060
+ - error
7061
+ - error_code
7062
+ additionalProperties: false
7063
+ "404":
7064
+ description: No job matches the given id.
7065
+ parameters:
7066
+ - name: job_id
7067
+ in: path
7068
+ required: true
7069
+ schema:
7070
+ type: string
7071
+ /v1/migrations/validate:
7072
+ post:
7073
+ operationId: migrations_validate_post
7074
+ summary: Validate a .vbundle archive
7075
+ description: Upload a .vbundle archive for validation. Accepts raw binary or multipart form data.
7076
+ tags:
7077
+ - migrations
7078
+ responses:
7079
+ "200":
7080
+ description: Successful response
7081
+ content:
7082
+ application/json:
7083
+ schema:
7084
+ type: object
7085
+ properties:
7086
+ is_valid:
7087
+ type: boolean
7088
+ errors:
7089
+ type: array
7090
+ items: {}
7091
+ manifest:
7092
+ type: object
7093
+ properties: {}
7094
+ additionalProperties: {}
7095
+ required:
7096
+ - is_valid
7097
+ - errors
7098
+ - manifest
7099
+ additionalProperties: false
7100
+ /v1/model:
7101
+ get:
7102
+ operationId: model_get
7103
+ summary: Get current model config
7104
+ description: Return the active LLM model ID, provider, and available models.
7105
+ tags:
7106
+ - config
7107
+ responses:
7108
+ "200":
7109
+ description: Successful response
7110
+ put:
7111
+ operationId: model_put
7112
+ summary: Set LLM model
7113
+ description: Change the active LLM model and optionally its provider.
7114
+ tags:
7115
+ - config
7116
+ responses:
7117
+ "200":
7118
+ description: Successful response
5813
7119
  requestBody:
5814
7120
  required: true
5815
7121
  content:
@@ -5889,26 +7195,191 @@ paths:
5889
7195
  required:
5890
7196
  - deliveryId
5891
7197
  additionalProperties: false
7198
+ /v1/notifications/emit:
7199
+ post:
7200
+ operationId: notifications_emit_post
7201
+ summary: Emit a notification signal
7202
+ description: Emit a notification signal into the pipeline for routing and delivery.
7203
+ tags:
7204
+ - notifications
7205
+ responses:
7206
+ "200":
7207
+ description: Successful response
7208
+ content:
7209
+ application/json:
7210
+ schema:
7211
+ type: object
7212
+ properties:
7213
+ signalId:
7214
+ type: string
7215
+ dispatched:
7216
+ type: boolean
7217
+ deduplicated:
7218
+ type: boolean
7219
+ reason:
7220
+ type: string
7221
+ required:
7222
+ - signalId
7223
+ - dispatched
7224
+ - deduplicated
7225
+ - reason
7226
+ additionalProperties: false
7227
+ requestBody:
7228
+ required: true
7229
+ content:
7230
+ application/json:
7231
+ schema:
7232
+ type: object
7233
+ properties:
7234
+ sourceEventName:
7235
+ type: string
7236
+ minLength: 1
7237
+ sourceChannel:
7238
+ type: string
7239
+ enum:
7240
+ - assistant_tool
7241
+ - vellum
7242
+ - phone
7243
+ - telegram
7244
+ - slack
7245
+ - scheduler
7246
+ - watcher
7247
+ sourceContextId:
7248
+ type: string
7249
+ minLength: 1
7250
+ attentionHints:
7251
+ type: object
7252
+ properties:
7253
+ requiresAction:
7254
+ type: boolean
7255
+ urgency:
7256
+ type: string
7257
+ enum:
7258
+ - low
7259
+ - medium
7260
+ - high
7261
+ deadlineAt:
7262
+ type: number
7263
+ isAsyncBackground:
7264
+ type: boolean
7265
+ visibleInSourceNow:
7266
+ type: boolean
7267
+ required:
7268
+ - requiresAction
7269
+ - urgency
7270
+ - isAsyncBackground
7271
+ - visibleInSourceNow
7272
+ additionalProperties: false
7273
+ contextPayload:
7274
+ type: object
7275
+ propertyNames:
7276
+ type: string
7277
+ additionalProperties: {}
7278
+ routingIntent:
7279
+ type: string
7280
+ enum:
7281
+ - single_channel
7282
+ - multi_channel
7283
+ - all_channels
7284
+ dedupeKey:
7285
+ type: string
7286
+ throwOnError:
7287
+ type: boolean
7288
+ required:
7289
+ - sourceEventName
7290
+ - sourceChannel
7291
+ - sourceContextId
7292
+ - attentionHints
7293
+ additionalProperties: false
7294
+ /v1/notifications/events:
7295
+ post:
7296
+ operationId: notifications_events_post
7297
+ summary: List notification events
7298
+ description: List recent notification events, optionally filtered by source event name.
7299
+ tags:
7300
+ - notifications
7301
+ responses:
7302
+ "200":
7303
+ description: Successful response
7304
+ content:
7305
+ application/json:
7306
+ schema:
7307
+ type: array
7308
+ items:
7309
+ type: object
7310
+ properties:
7311
+ id:
7312
+ type: string
7313
+ sourceEventName:
7314
+ type: string
7315
+ sourceChannel:
7316
+ type: string
7317
+ sourceContextId:
7318
+ type: string
7319
+ urgency:
7320
+ type: string
7321
+ dedupeKey:
7322
+ anyOf:
7323
+ - type: string
7324
+ - type: "null"
7325
+ createdAt:
7326
+ type: string
7327
+ required:
7328
+ - id
7329
+ - sourceEventName
7330
+ - sourceChannel
7331
+ - sourceContextId
7332
+ - urgency
7333
+ - dedupeKey
7334
+ - createdAt
7335
+ additionalProperties: false
7336
+ requestBody:
7337
+ required: true
7338
+ content:
7339
+ application/json:
7340
+ schema:
7341
+ type: object
7342
+ properties:
7343
+ limit:
7344
+ type: integer
7345
+ exclusiveMinimum: 0
7346
+ maximum: 9007199254740991
7347
+ sourceEventName:
7348
+ type: string
7349
+ additionalProperties: false
5892
7350
  /v1/oauth/apps:
5893
7351
  get:
5894
7352
  operationId: oauth_apps_get
7353
+ summary: List OAuth apps
7354
+ description: List OAuth apps filtered by provider_key.
5895
7355
  tags:
5896
- - oauth-apps
7356
+ - oauth
5897
7357
  responses:
5898
7358
  "200":
5899
7359
  description: Successful response
7360
+ parameters:
7361
+ - name: provider_key
7362
+ in: query
7363
+ required: true
7364
+ schema:
7365
+ type: string
7366
+ description: OAuth provider key to filter by
5900
7367
  post:
5901
7368
  operationId: oauth_apps_post
7369
+ summary: Create OAuth app
7370
+ description: Register a new OAuth app with client credentials.
5902
7371
  tags:
5903
- - oauth-apps
7372
+ - oauth
5904
7373
  responses:
5905
- "200":
7374
+ "201":
5906
7375
  description: Successful response
5907
7376
  /v1/oauth/apps/{appId}/connect:
5908
7377
  post:
5909
7378
  operationId: oauth_apps_by_appId_connect_post
7379
+ summary: Start OAuth connect
7380
+ description: Start an OAuth connect flow for an app.
5910
7381
  tags:
5911
- - oauth-apps
7382
+ - oauth
5912
7383
  responses:
5913
7384
  "200":
5914
7385
  description: Successful response
@@ -5921,8 +7392,10 @@ paths:
5921
7392
  /v1/oauth/apps/{appId}/connections:
5922
7393
  get:
5923
7394
  operationId: oauth_apps_by_appId_connections_get
7395
+ summary: List OAuth connections
7396
+ description: List connections for an OAuth app.
5924
7397
  tags:
5925
- - oauth-apps
7398
+ - oauth
5926
7399
  responses:
5927
7400
  "200":
5928
7401
  description: Successful response
@@ -5935,8 +7408,10 @@ paths:
5935
7408
  /v1/oauth/apps/{id}:
5936
7409
  delete:
5937
7410
  operationId: oauth_apps_by_id_delete
7411
+ summary: Delete OAuth app
7412
+ description: Delete an OAuth app and disconnect all its connections.
5938
7413
  tags:
5939
- - oauth-apps
7414
+ - oauth
5940
7415
  responses:
5941
7416
  "200":
5942
7417
  description: Successful response
@@ -5949,8 +7424,10 @@ paths:
5949
7424
  /v1/oauth/connections/{id}:
5950
7425
  delete:
5951
7426
  operationId: oauth_connections_by_id_delete
7427
+ summary: Disconnect OAuth connection
7428
+ description: Disconnect a single OAuth connection.
5952
7429
  tags:
5953
- - oauth-apps
7430
+ - oauth
5954
7431
  responses:
5955
7432
  "200":
5956
7433
  description: Successful response
@@ -5963,16 +7440,27 @@ paths:
5963
7440
  /v1/oauth/providers:
5964
7441
  get:
5965
7442
  operationId: oauth_providers_get
7443
+ summary: List OAuth providers
7444
+ description: List all registered OAuth providers with optional filtering.
5966
7445
  tags:
5967
- - oauth-providers
7446
+ - oauth
5968
7447
  responses:
5969
7448
  "200":
5970
7449
  description: Successful response
7450
+ parameters:
7451
+ - name: supports_managed_mode
7452
+ in: query
7453
+ required: false
7454
+ schema:
7455
+ type: string
7456
+ description: Filter by managed mode support (true/false)
5971
7457
  /v1/oauth/providers/{providerKey}:
5972
7458
  get:
5973
7459
  operationId: oauth_providers_by_providerKey_get
7460
+ summary: Get OAuth provider
7461
+ description: Get a single OAuth provider by key.
5974
7462
  tags:
5975
- - oauth-providers
7463
+ - oauth
5976
7464
  responses:
5977
7465
  "200":
5978
7466
  description: Successful response
@@ -6008,46 +7496,22 @@ paths:
6008
7496
  - service
6009
7497
  - requestedScopes
6010
7498
  additionalProperties: false
6011
- /v1/pairing/register:
6012
- post:
6013
- operationId: pairing_register_post
6014
- summary: Register pairing request
6015
- description: Pre-register a pairing request when the QR code is displayed.
7499
+ /v1/pages/{appId}:
7500
+ get:
7501
+ operationId: pages_by_appId_get
7502
+ summary: Serve app page
7503
+ description: Render and serve a shareable app page as HTML.
6016
7504
  tags:
6017
- - pairing
7505
+ - apps
6018
7506
  responses:
6019
7507
  "200":
6020
7508
  description: Successful response
6021
- content:
6022
- application/json:
6023
- schema:
6024
- type: object
6025
- properties:
6026
- ok:
6027
- type: boolean
6028
- required:
6029
- - ok
6030
- additionalProperties: false
6031
- requestBody:
6032
- required: true
6033
- content:
6034
- application/json:
6035
- schema:
6036
- type: object
6037
- properties:
6038
- pairingRequestId:
6039
- type: string
6040
- pairingSecret:
6041
- type: string
6042
- gatewayUrl:
6043
- type: string
6044
- localLanUrl:
6045
- type: string
6046
- required:
6047
- - pairingRequestId
6048
- - pairingSecret
6049
- - gatewayUrl
6050
- additionalProperties: false
7509
+ parameters:
7510
+ - name: appId
7511
+ in: path
7512
+ required: true
7513
+ schema:
7514
+ type: string
6051
7515
  /v1/pairing/request:
6052
7516
  post:
6053
7517
  operationId: pairing_request_post
@@ -6340,6 +7804,50 @@ paths:
6340
7804
  required: true
6341
7805
  schema:
6342
7806
  type: string
7807
+ /v1/ps:
7808
+ get:
7809
+ operationId: ps_get
7810
+ summary: Process status
7811
+ description: Returns a JSON summary of the assistant's process tree including qdrant and embed-worker status.
7812
+ tags:
7813
+ - system
7814
+ responses:
7815
+ "200":
7816
+ description: Successful response
7817
+ content:
7818
+ application/json:
7819
+ schema:
7820
+ type: object
7821
+ properties:
7822
+ processes:
7823
+ type: array
7824
+ items:
7825
+ $ref: "#/$defs/__schema0"
7826
+ required:
7827
+ - processes
7828
+ additionalProperties: false
7829
+ $defs:
7830
+ __schema0:
7831
+ type: object
7832
+ properties:
7833
+ name:
7834
+ type: string
7835
+ status:
7836
+ type: string
7837
+ enum:
7838
+ - running
7839
+ - not_running
7840
+ - unreachable
7841
+ children:
7842
+ type: array
7843
+ items:
7844
+ $ref: "#/$defs/__schema0"
7845
+ info:
7846
+ type: string
7847
+ required:
7848
+ - name
7849
+ - status
7850
+ additionalProperties: false
6343
7851
  /v1/recordings/pause:
6344
7852
  post:
6345
7853
  operationId: recordings_pause_post
@@ -6418,7 +7926,7 @@ paths:
6418
7926
  tags:
6419
7927
  - recordings
6420
7928
  responses:
6421
- "200":
7929
+ "201":
6422
7930
  description: Successful response
6423
7931
  content:
6424
7932
  application/json:
@@ -6572,6 +8080,13 @@ paths:
6572
8080
  required:
6573
8081
  - schedules
6574
8082
  additionalProperties: false
8083
+ parameters:
8084
+ - name: include_all
8085
+ in: query
8086
+ required: false
8087
+ schema:
8088
+ type: string
8089
+ description: When 'true', include deferred schedules that are normally hidden.
6575
8090
  /v1/schedules/{id}:
6576
8091
  delete:
6577
8092
  operationId: schedules_by_id_delete
@@ -6752,6 +8267,12 @@ paths:
6752
8267
  required: true
6753
8268
  schema:
6754
8269
  type: string
8270
+ - name: limit
8271
+ in: query
8272
+ required: false
8273
+ schema:
8274
+ type: integer
8275
+ description: Max runs to return (default 10, max 100)
6755
8276
  /v1/schedules/{id}/toggle:
6756
8277
  post:
6757
8278
  operationId: schedules_by_id_toggle_post
@@ -6846,7 +8367,7 @@ paths:
6846
8367
  parameters:
6847
8368
  - name: q
6848
8369
  in: query
6849
- required: false
8370
+ required: true
6850
8371
  schema:
6851
8372
  type: string
6852
8373
  description: Search query (required)
@@ -7404,7 +8925,7 @@ paths:
7404
8925
  tags:
7405
8926
  - skills
7406
8927
  responses:
7407
- "200":
8928
+ "201":
7408
8929
  description: Successful response
7409
8930
  content:
7410
8931
  application/json:
@@ -7445,7 +8966,7 @@ paths:
7445
8966
  tags:
7446
8967
  - skills
7447
8968
  responses:
7448
- "200":
8969
+ "204":
7449
8970
  description: Successful response
7450
8971
  parameters:
7451
8972
  - name: id
@@ -8249,37 +9770,97 @@ paths:
8249
9770
  /v1/slack/channels:
8250
9771
  get:
8251
9772
  operationId: slack_channels_get
9773
+ summary: List Slack channels
9774
+ description: List Slack channels, groups, and DMs for the channel picker.
8252
9775
  tags:
8253
- - share
9776
+ - integrations
8254
9777
  responses:
8255
9778
  "200":
8256
9779
  description: Successful response
8257
9780
  /v1/slack/share:
8258
9781
  post:
8259
9782
  operationId: slack_share_post
9783
+ summary: Share to Slack channel
9784
+ description: Post an app link directly to a Slack channel.
8260
9785
  tags:
8261
- - share
9786
+ - integrations
8262
9787
  responses:
8263
9788
  "200":
8264
9789
  description: Successful response
8265
- /v1/stt/transcribe:
8266
- post:
8267
- operationId: stt_transcribe_post
8268
- summary: Transcribe audio to text
8269
- description:
8270
- Transcribe base64-encoded audio to text using the configured STT provider. Provider selection is resolved
8271
- globally via config.
9790
+ /v1/stt/providers:
9791
+ get:
9792
+ operationId: stt_providers_get
9793
+ summary: List STT providers
9794
+ description: Return the catalog of available STT providers with client-facing metadata.
8272
9795
  tags:
8273
9796
  - stt
8274
9797
  responses:
8275
9798
  "200":
8276
9799
  description: Successful response
8277
- requestBody:
8278
- required: true
8279
- content:
8280
- application/json:
8281
- schema:
8282
- type: object
9800
+ content:
9801
+ application/json:
9802
+ schema:
9803
+ type: object
9804
+ properties:
9805
+ providers:
9806
+ type: array
9807
+ items:
9808
+ type: object
9809
+ properties:
9810
+ id:
9811
+ type: string
9812
+ displayName:
9813
+ type: string
9814
+ subtitle:
9815
+ type: string
9816
+ setupMode:
9817
+ type: string
9818
+ setupHint:
9819
+ type: string
9820
+ apiKeyProviderName:
9821
+ type: string
9822
+ conversationStreamingMode:
9823
+ type: string
9824
+ credentialsGuide:
9825
+ type: string
9826
+ required:
9827
+ - id
9828
+ - displayName
9829
+ additionalProperties: false
9830
+ required:
9831
+ - providers
9832
+ additionalProperties: false
9833
+ /v1/stt/transcribe:
9834
+ post:
9835
+ operationId: stt_transcribe_post
9836
+ summary: Transcribe audio to text
9837
+ description: Transcribe base64-encoded audio to text using the configured STT provider.
9838
+ tags:
9839
+ - stt
9840
+ responses:
9841
+ "200":
9842
+ description: Successful response
9843
+ content:
9844
+ application/json:
9845
+ schema:
9846
+ type: object
9847
+ properties:
9848
+ text:
9849
+ type: string
9850
+ providerId:
9851
+ type: string
9852
+ boundaryId:
9853
+ type: string
9854
+ required:
9855
+ - text
9856
+ - providerId
9857
+ additionalProperties: false
9858
+ requestBody:
9859
+ required: true
9860
+ content:
9861
+ application/json:
9862
+ schema:
9863
+ type: object
8283
9864
  properties:
8284
9865
  audioBase64:
8285
9866
  type: string
@@ -8464,9 +10045,7 @@ paths:
8464
10045
  type: boolean
8465
10046
  conversationId:
8466
10047
  type: string
8467
- description:
8468
- Id of a newly launched conversation when the action dispatched one (e.g. launch_conversation). Omitted
8469
- otherwise.
10048
+ description: Id of a newly launched conversation when the action dispatched one. Omitted otherwise.
8470
10049
  required:
8471
10050
  - ok
8472
10051
  additionalProperties: false
@@ -8578,6 +10157,378 @@ paths:
8578
10157
  schema:
8579
10158
  type: string
8580
10159
  description: Conversation that owns the surface
10160
+ /v1/tasks/delete:
10161
+ post:
10162
+ operationId: tasks_delete_post
10163
+ summary: Delete task templates
10164
+ description: Delete one or more task templates by ID.
10165
+ tags:
10166
+ - tasks
10167
+ responses:
10168
+ "200":
10169
+ description: Successful response
10170
+ content:
10171
+ application/json:
10172
+ schema:
10173
+ type: object
10174
+ properties:
10175
+ ok:
10176
+ type: boolean
10177
+ content:
10178
+ type: string
10179
+ required:
10180
+ - ok
10181
+ - content
10182
+ additionalProperties: false
10183
+ requestBody:
10184
+ required: true
10185
+ content:
10186
+ application/json:
10187
+ schema:
10188
+ type: object
10189
+ properties:
10190
+ task_ids:
10191
+ minItems: 1
10192
+ type: array
10193
+ items:
10194
+ type: string
10195
+ minLength: 1
10196
+ required:
10197
+ - task_ids
10198
+ additionalProperties: false
10199
+ /v1/tasks/list:
10200
+ post:
10201
+ operationId: tasks_list_post
10202
+ summary: List task templates
10203
+ description: List all saved task templates.
10204
+ tags:
10205
+ - tasks
10206
+ responses:
10207
+ "200":
10208
+ description: Successful response
10209
+ content:
10210
+ application/json:
10211
+ schema:
10212
+ type: object
10213
+ properties:
10214
+ ok:
10215
+ type: boolean
10216
+ content:
10217
+ type: string
10218
+ required:
10219
+ - ok
10220
+ - content
10221
+ additionalProperties: false
10222
+ /v1/tasks/queue/add:
10223
+ post:
10224
+ operationId: tasks_queue_add_post
10225
+ summary: Add to task queue
10226
+ description: Add a new work item to the task queue.
10227
+ tags:
10228
+ - tasks
10229
+ responses:
10230
+ "200":
10231
+ description: Successful response
10232
+ content:
10233
+ application/json:
10234
+ schema:
10235
+ type: object
10236
+ properties:
10237
+ content:
10238
+ type: string
10239
+ isError:
10240
+ type: boolean
10241
+ required:
10242
+ - content
10243
+ additionalProperties: false
10244
+ requestBody:
10245
+ required: true
10246
+ content:
10247
+ application/json:
10248
+ schema:
10249
+ type: object
10250
+ properties:
10251
+ task_id:
10252
+ type: string
10253
+ task_name:
10254
+ type: string
10255
+ title:
10256
+ type: string
10257
+ execution_prompt:
10258
+ type: string
10259
+ notes:
10260
+ type: string
10261
+ priority_tier:
10262
+ type: number
10263
+ sort_index:
10264
+ type: number
10265
+ if_exists:
10266
+ type: string
10267
+ enum:
10268
+ - create_duplicate
10269
+ - reuse_existing
10270
+ - update_existing
10271
+ required_tools:
10272
+ type: array
10273
+ items:
10274
+ type: string
10275
+ additionalProperties: false
10276
+ /v1/tasks/queue/remove:
10277
+ post:
10278
+ operationId: tasks_queue_remove_post
10279
+ summary: Remove from task queue
10280
+ description: Remove a work item from the task queue.
10281
+ tags:
10282
+ - tasks
10283
+ responses:
10284
+ "200":
10285
+ description: Successful response
10286
+ content:
10287
+ application/json:
10288
+ schema:
10289
+ type: object
10290
+ properties:
10291
+ content:
10292
+ type: string
10293
+ isError:
10294
+ type: boolean
10295
+ required:
10296
+ - content
10297
+ additionalProperties: false
10298
+ requestBody:
10299
+ required: true
10300
+ content:
10301
+ application/json:
10302
+ schema:
10303
+ type: object
10304
+ properties:
10305
+ work_item_id:
10306
+ type: string
10307
+ task_id:
10308
+ type: string
10309
+ task_name:
10310
+ type: string
10311
+ title:
10312
+ type: string
10313
+ priority_tier:
10314
+ type: number
10315
+ status:
10316
+ type: string
10317
+ created_order:
10318
+ type: number
10319
+ additionalProperties: false
10320
+ /v1/tasks/queue/run:
10321
+ post:
10322
+ operationId: tasks_queue_run_post
10323
+ summary: Run next task queue item
10324
+ description: Pick up and execute the next work item from the queue.
10325
+ tags:
10326
+ - tasks
10327
+ responses:
10328
+ "200":
10329
+ description: Successful response
10330
+ content:
10331
+ application/json:
10332
+ schema:
10333
+ type: object
10334
+ properties:
10335
+ content:
10336
+ type: string
10337
+ isError:
10338
+ type: boolean
10339
+ required:
10340
+ - content
10341
+ additionalProperties: false
10342
+ requestBody:
10343
+ required: true
10344
+ content:
10345
+ application/json:
10346
+ schema:
10347
+ type: object
10348
+ properties:
10349
+ work_item_id:
10350
+ type: string
10351
+ task_name:
10352
+ type: string
10353
+ title:
10354
+ type: string
10355
+ additionalProperties: false
10356
+ /v1/tasks/queue/show:
10357
+ post:
10358
+ operationId: tasks_queue_show_post
10359
+ summary: Show task queue
10360
+ description: List work items in the task queue, optionally filtered by status.
10361
+ tags:
10362
+ - tasks
10363
+ responses:
10364
+ "200":
10365
+ description: Successful response
10366
+ content:
10367
+ application/json:
10368
+ schema:
10369
+ type: object
10370
+ properties:
10371
+ content:
10372
+ type: string
10373
+ isError:
10374
+ type: boolean
10375
+ required:
10376
+ - content
10377
+ additionalProperties: false
10378
+ requestBody:
10379
+ required: true
10380
+ content:
10381
+ application/json:
10382
+ schema:
10383
+ type: object
10384
+ properties:
10385
+ status:
10386
+ anyOf:
10387
+ - type: string
10388
+ - type: array
10389
+ items:
10390
+ type: string
10391
+ additionalProperties: false
10392
+ /v1/tasks/queue/update:
10393
+ post:
10394
+ operationId: tasks_queue_update_post
10395
+ summary: Update a task queue item
10396
+ description: Update an existing work item in the task queue.
10397
+ tags:
10398
+ - tasks
10399
+ responses:
10400
+ "200":
10401
+ description: Successful response
10402
+ content:
10403
+ application/json:
10404
+ schema:
10405
+ type: object
10406
+ properties:
10407
+ content:
10408
+ type: string
10409
+ isError:
10410
+ type: boolean
10411
+ required:
10412
+ - content
10413
+ additionalProperties: false
10414
+ requestBody:
10415
+ required: true
10416
+ content:
10417
+ application/json:
10418
+ schema:
10419
+ type: object
10420
+ properties:
10421
+ work_item_id:
10422
+ type: string
10423
+ task_id:
10424
+ type: string
10425
+ task_name:
10426
+ type: string
10427
+ title:
10428
+ type: string
10429
+ priority_tier:
10430
+ type: number
10431
+ notes:
10432
+ type: string
10433
+ status:
10434
+ type: string
10435
+ enum:
10436
+ - queued
10437
+ - running
10438
+ - awaiting_review
10439
+ - done
10440
+ - failed
10441
+ - cancelled
10442
+ - archived
10443
+ sort_index:
10444
+ type: number
10445
+ filter_priority_tier:
10446
+ type: number
10447
+ filter_status:
10448
+ type: string
10449
+ created_order:
10450
+ type: number
10451
+ additionalProperties: false
10452
+ /v1/tasks/run:
10453
+ post:
10454
+ operationId: tasks_run_post
10455
+ summary: Run a task template
10456
+ description: Execute a saved task template by name or ID.
10457
+ tags:
10458
+ - tasks
10459
+ responses:
10460
+ "200":
10461
+ description: Successful response
10462
+ content:
10463
+ application/json:
10464
+ schema:
10465
+ type: object
10466
+ properties:
10467
+ ok:
10468
+ type: boolean
10469
+ content:
10470
+ type: string
10471
+ required:
10472
+ - ok
10473
+ - content
10474
+ additionalProperties: false
10475
+ requestBody:
10476
+ required: true
10477
+ content:
10478
+ application/json:
10479
+ schema:
10480
+ type: object
10481
+ properties:
10482
+ task_name:
10483
+ type: string
10484
+ minLength: 1
10485
+ task_id:
10486
+ type: string
10487
+ minLength: 1
10488
+ inputs:
10489
+ type: object
10490
+ propertyNames:
10491
+ type: string
10492
+ additionalProperties:
10493
+ type: string
10494
+ additionalProperties: false
10495
+ /v1/tasks/save:
10496
+ post:
10497
+ operationId: tasks_save_post
10498
+ summary: Save a task template
10499
+ description: Save the current conversation as a reusable task template.
10500
+ tags:
10501
+ - tasks
10502
+ responses:
10503
+ "200":
10504
+ description: Successful response
10505
+ content:
10506
+ application/json:
10507
+ schema:
10508
+ type: object
10509
+ properties:
10510
+ ok:
10511
+ type: boolean
10512
+ content:
10513
+ type: string
10514
+ required:
10515
+ - ok
10516
+ - content
10517
+ additionalProperties: false
10518
+ requestBody:
10519
+ required: true
10520
+ content:
10521
+ application/json:
10522
+ schema:
10523
+ type: object
10524
+ properties:
10525
+ conversation_id:
10526
+ type: string
10527
+ minLength: 1
10528
+ title:
10529
+ type: string
10530
+ minLength: 1
10531
+ additionalProperties: false
8581
10532
  /v1/telemetry/lifecycle:
8582
10533
  post:
8583
10534
  operationId: telemetry_lifecycle_post
@@ -8660,15 +10611,12 @@ paths:
8660
10611
  additionalProperties: {}
8661
10612
  workingDir:
8662
10613
  type: string
8663
- forcePromptSideEffects:
8664
- type: boolean
8665
10614
  isInteractive:
8666
10615
  type: boolean
8667
10616
  required:
8668
10617
  - toolName
8669
10618
  - input
8670
10619
  - workingDir
8671
- - forcePromptSideEffects
8672
10620
  - isInteractive
8673
10621
  additionalProperties: false
8674
10622
  /v1/trace-events:
@@ -8712,95 +10660,75 @@ paths:
8712
10660
  schema:
8713
10661
  type: integer
8714
10662
  description: Return events after this sequence number
8715
- /v1/trust-rules:
8716
- post:
8717
- operationId: trustrules_post
8718
- summary: Add a trust rule for a pending confirmation
8719
- description: Add a trust rule bound to a pending confirmation without resolving it.
10663
+ /v1/transfers/{transferId}/content:
10664
+ get:
10665
+ operationId: transfers_by_transferId_content_get
10666
+ summary: Get transfer content
10667
+ description: "Serve raw file bytes for a to_host transfer. Single-use: returns 404 after first consumption."
8720
10668
  tags:
8721
- - approvals
10669
+ - host-transfer
8722
10670
  responses:
8723
10671
  "200":
8724
10672
  description: Successful response
8725
- content:
8726
- application/json:
8727
- schema:
8728
- type: object
8729
- properties:
8730
- accepted:
8731
- type: boolean
8732
- required:
8733
- - accepted
8734
- additionalProperties: false
8735
- requestBody:
8736
- required: true
8737
- content:
8738
- application/json:
8739
- schema:
8740
- type: object
8741
- properties:
8742
- requestId:
8743
- type: string
8744
- description: Pending confirmation request ID
8745
- pattern:
8746
- type: string
8747
- description: Allowlist pattern
8748
- scope:
8749
- type: string
8750
- description: Scope for the rule
8751
- decision:
8752
- type: string
8753
- description: allow or deny
8754
- required:
8755
- - requestId
8756
- - pattern
8757
- - scope
8758
- - decision
8759
- additionalProperties: false
8760
- /v1/trust-rules/manage:
10673
+ parameters:
10674
+ - name: transferId
10675
+ in: path
10676
+ required: true
10677
+ schema:
10678
+ type: string
10679
+ put:
10680
+ operationId: transfers_by_transferId_content_put
10681
+ summary: Put transfer content
10682
+ description: Receive raw file bytes for a to_sandbox transfer. Verifies SHA-256 integrity via the X-Transfer-SHA256 header.
10683
+ tags:
10684
+ - host-transfer
10685
+ responses:
10686
+ "200":
10687
+ description: Successful response
10688
+ parameters:
10689
+ - name: transferId
10690
+ in: path
10691
+ required: true
10692
+ schema:
10693
+ type: string
10694
+ /v1/trust-rules:
8761
10695
  get:
8762
- operationId: trustrules_manage_get
8763
- summary: List all trust rules
8764
- description: Return all persistent trust rules.
10696
+ operationId: trustrules_get
10697
+ summary: List trust rules
10698
+ description: List trust rules, optionally filtered by tool, origin, or include_all.
8765
10699
  tags:
8766
10700
  - trust-rules
8767
10701
  responses:
8768
10702
  "200":
8769
10703
  description: Successful response
8770
- content:
8771
- application/json:
8772
- schema:
8773
- type: object
8774
- properties:
8775
- type:
8776
- type: string
8777
- rules:
8778
- type: array
8779
- items: {}
8780
- description: Trust rule objects
8781
- required:
8782
- - type
8783
- - rules
8784
- additionalProperties: false
10704
+ parameters:
10705
+ - name: tool
10706
+ in: query
10707
+ required: false
10708
+ schema:
10709
+ type: string
10710
+ description: Filter by tool name
10711
+ - name: origin
10712
+ in: query
10713
+ required: false
10714
+ schema:
10715
+ type: string
10716
+ description: Filter by origin
10717
+ - name: include_all
10718
+ in: query
10719
+ required: false
10720
+ schema:
10721
+ type: string
10722
+ description: Include unmodified defaults
8785
10723
  post:
8786
- operationId: trustrules_manage_post
8787
- summary: Add a trust rule
8788
- description: Create a new persistent trust rule (standalone, not approval-flow).
10724
+ operationId: trustrules_post
10725
+ summary: Create a trust rule
10726
+ description: Create a new trust rule with tool, pattern, risk level, and optional description.
8789
10727
  tags:
8790
10728
  - trust-rules
8791
10729
  responses:
8792
10730
  "200":
8793
10731
  description: Successful response
8794
- content:
8795
- application/json:
8796
- schema:
8797
- type: object
8798
- properties:
8799
- ok:
8800
- type: boolean
8801
- required:
8802
- - ok
8803
- additionalProperties: false
8804
10732
  requestBody:
8805
10733
  required: true
8806
10734
  content:
@@ -8808,29 +10736,22 @@ paths:
8808
10736
  schema:
8809
10737
  type: object
8810
10738
  properties:
8811
- toolName:
10739
+ tool:
8812
10740
  type: string
8813
- description: Tool name
8814
10741
  pattern:
8815
10742
  type: string
8816
- description: Allowlist pattern
8817
- scope:
10743
+ risk:
8818
10744
  type: string
8819
- description: Scope (required for scoped tools, ignored for others)
8820
- decision:
8821
- type: string
8822
- description: allow, deny, or ask
8823
- executionTarget:
10745
+ description:
8824
10746
  type: string
8825
- description: Execution target
8826
10747
  required:
8827
- - toolName
10748
+ - tool
8828
10749
  - pattern
8829
- - decision
10750
+ - risk
8830
10751
  additionalProperties: false
8831
- /v1/trust-rules/manage/{id}:
10752
+ /v1/trust-rules/{id}:
8832
10753
  delete:
8833
- operationId: trustrules_manage_by_id_delete
10754
+ operationId: trustrules_by_id_delete
8834
10755
  summary: Remove a trust rule
8835
10756
  description: Delete a trust rule by ID.
8836
10757
  tags:
@@ -8838,16 +10759,6 @@ paths:
8838
10759
  responses:
8839
10760
  "200":
8840
10761
  description: Successful response
8841
- content:
8842
- application/json:
8843
- schema:
8844
- type: object
8845
- properties:
8846
- ok:
8847
- type: boolean
8848
- required:
8849
- - ok
8850
- additionalProperties: false
8851
10762
  parameters:
8852
10763
  - name: id
8853
10764
  in: path
@@ -8855,11 +10766,39 @@ paths:
8855
10766
  schema:
8856
10767
  type: string
8857
10768
  patch:
8858
- operationId: trustrules_manage_by_id_patch
10769
+ operationId: trustrules_by_id_patch
8859
10770
  summary: Update a trust rule
8860
- description: Partially update fields on an existing trust rule.
10771
+ description: Update the risk level or description of an existing trust rule.
10772
+ tags:
10773
+ - trust-rules
10774
+ responses:
10775
+ "200":
10776
+ description: Successful response
10777
+ parameters:
10778
+ - name: id
10779
+ in: path
10780
+ required: true
10781
+ schema:
10782
+ type: string
10783
+ requestBody:
10784
+ required: true
10785
+ content:
10786
+ application/json:
10787
+ schema:
10788
+ type: object
10789
+ properties:
10790
+ risk:
10791
+ type: string
10792
+ description:
10793
+ type: string
10794
+ additionalProperties: false
10795
+ /v1/trust-rules/suggest:
10796
+ post:
10797
+ operationId: trustrules_suggest_post
10798
+ summary: Suggest a trust rule
10799
+ description: Use an LLM to suggest a trust rule pattern, risk level, and scope for a given action.
8861
10800
  tags:
8862
- - trust-rules
10801
+ - trust
8863
10802
  responses:
8864
10803
  "200":
8865
10804
  description: Successful response
@@ -8868,17 +10807,46 @@ paths:
8868
10807
  schema:
8869
10808
  type: object
8870
10809
  properties:
8871
- ok:
8872
- type: boolean
10810
+ pattern:
10811
+ type: string
10812
+ risk:
10813
+ type: string
10814
+ scope:
10815
+ type: string
10816
+ description:
10817
+ type: string
10818
+ scopeOptions:
10819
+ type: array
10820
+ items:
10821
+ type: object
10822
+ properties:
10823
+ pattern:
10824
+ type: string
10825
+ label:
10826
+ type: string
10827
+ required:
10828
+ - pattern
10829
+ - label
10830
+ additionalProperties: false
10831
+ directoryScopeOptions:
10832
+ type: array
10833
+ items:
10834
+ type: object
10835
+ properties:
10836
+ scope:
10837
+ type: string
10838
+ label:
10839
+ type: string
10840
+ required:
10841
+ - scope
10842
+ - label
10843
+ additionalProperties: false
8873
10844
  required:
8874
- - ok
10845
+ - pattern
10846
+ - risk
10847
+ - description
10848
+ - scopeOptions
8875
10849
  additionalProperties: false
8876
- parameters:
8877
- - name: id
8878
- in: path
8879
- required: true
8880
- schema:
8881
- type: string
8882
10850
  requestBody:
8883
10851
  required: true
8884
10852
  content:
@@ -8888,33 +10856,70 @@ paths:
8888
10856
  properties:
8889
10857
  tool:
8890
10858
  type: string
8891
- description: Tool name
8892
- pattern:
10859
+ minLength: 1
10860
+ command:
8893
10861
  type: string
8894
- description: Allowlist pattern
8895
- scope:
10862
+ minLength: 1
10863
+ riskAssessment:
10864
+ type: object
10865
+ properties:
10866
+ risk:
10867
+ type: string
10868
+ reasoning:
10869
+ type: string
10870
+ reasonDescription:
10871
+ type: string
10872
+ required:
10873
+ - risk
10874
+ - reasoning
10875
+ - reasonDescription
10876
+ additionalProperties: false
10877
+ scopeOptions:
10878
+ type: array
10879
+ items:
10880
+ type: object
10881
+ properties:
10882
+ pattern:
10883
+ type: string
10884
+ label:
10885
+ type: string
10886
+ required:
10887
+ - pattern
10888
+ - label
10889
+ additionalProperties: false
10890
+ directoryScopeOptions:
10891
+ type: array
10892
+ items:
10893
+ type: object
10894
+ properties:
10895
+ scope:
10896
+ type: string
10897
+ label:
10898
+ type: string
10899
+ required:
10900
+ - scope
10901
+ - label
10902
+ additionalProperties: false
10903
+ currentThreshold:
8896
10904
  type: string
8897
- description: Scope
8898
- decision:
10905
+ intent:
8899
10906
  type: string
8900
- description: allow, deny, or ask
8901
- priority:
8902
- type: number
8903
- description: Rule priority
10907
+ enum:
10908
+ - auto_approve
10909
+ - escalate
8904
10910
  required:
8905
10911
  - tool
8906
- - pattern
8907
- - scope
8908
- - decision
8909
- - priority
10912
+ - command
10913
+ - riskAssessment
10914
+ - scopeOptions
10915
+ - currentThreshold
10916
+ - intent
8910
10917
  additionalProperties: false
8911
10918
  /v1/tts/synthesize:
8912
10919
  post:
8913
10920
  operationId: tts_synthesize_post
8914
10921
  summary: Synthesize text to speech
8915
- description:
8916
- Synthesize arbitrary text to audio using the configured TTS provider. Provider selection is resolved
8917
- globally via config — callers do not specify a provider.
10922
+ description: Synthesize arbitrary text to audio using the configured TTS provider.
8918
10923
  tags:
8919
10924
  - tts
8920
10925
  responses:
@@ -8931,9 +10936,7 @@ paths:
8931
10936
  type: string
8932
10937
  description: Text to synthesize into speech
8933
10938
  context:
8934
- description:
8935
- Optional context hint for output policy or capability selection (e.g. voice-mode). Does not affect provider
8936
- selection.
10939
+ description: Optional context hint for output policy or capability selection.
8937
10940
  type: string
8938
10941
  conversationId:
8939
10942
  description: Optional conversation ID for scoping or analytics.
@@ -8941,6 +10944,68 @@ paths:
8941
10944
  required:
8942
10945
  - text
8943
10946
  additionalProperties: false
10947
+ /v1/ui/request:
10948
+ post:
10949
+ operationId: ui_request_post
10950
+ summary: Present an interactive UI surface
10951
+ description: Present an interactive UI surface to the user and await their response.
10952
+ tags:
10953
+ - ui
10954
+ responses:
10955
+ "200":
10956
+ description: Successful response
10957
+ requestBody:
10958
+ required: true
10959
+ content:
10960
+ application/json:
10961
+ schema:
10962
+ type: object
10963
+ properties:
10964
+ conversationId:
10965
+ type: string
10966
+ minLength: 1
10967
+ surfaceType:
10968
+ type: string
10969
+ enum:
10970
+ - confirmation
10971
+ - form
10972
+ title:
10973
+ type: string
10974
+ data:
10975
+ type: object
10976
+ propertyNames:
10977
+ type: string
10978
+ additionalProperties: {}
10979
+ actions:
10980
+ type: array
10981
+ items:
10982
+ type: object
10983
+ properties:
10984
+ id:
10985
+ type: string
10986
+ minLength: 1
10987
+ label:
10988
+ type: string
10989
+ minLength: 1
10990
+ variant:
10991
+ type: string
10992
+ enum:
10993
+ - primary
10994
+ - danger
10995
+ - secondary
10996
+ required:
10997
+ - id
10998
+ - label
10999
+ additionalProperties: false
11000
+ timeoutMs:
11001
+ type: integer
11002
+ exclusiveMinimum: 0
11003
+ maximum: 9007199254740991
11004
+ required:
11005
+ - conversationId
11006
+ - surfaceType
11007
+ - data
11008
+ additionalProperties: false
8944
11009
  /v1/usage/breakdown:
8945
11010
  get:
8946
11011
  operationId: usage_breakdown_get
@@ -9057,6 +11122,196 @@ paths:
9057
11122
  schema:
9058
11123
  type: integer
9059
11124
  description: End epoch millis (required)
11125
+ /v1/watchers/create:
11126
+ post:
11127
+ operationId: watchers_create_post
11128
+ summary: Create a watcher
11129
+ description: Create a new watcher with a provider and action prompt.
11130
+ tags:
11131
+ - watchers
11132
+ responses:
11133
+ "200":
11134
+ description: Successful response
11135
+ content:
11136
+ application/json:
11137
+ schema:
11138
+ type: object
11139
+ properties: {}
11140
+ additionalProperties: {}
11141
+ requestBody:
11142
+ required: true
11143
+ content:
11144
+ application/json:
11145
+ schema:
11146
+ type: object
11147
+ properties:
11148
+ name:
11149
+ type: string
11150
+ minLength: 1
11151
+ provider:
11152
+ type: string
11153
+ minLength: 1
11154
+ action_prompt:
11155
+ type: string
11156
+ minLength: 1
11157
+ poll_interval_ms:
11158
+ type: integer
11159
+ minimum: 15000
11160
+ maximum: 9007199254740991
11161
+ config:
11162
+ type: object
11163
+ propertyNames:
11164
+ type: string
11165
+ additionalProperties: {}
11166
+ credential_service:
11167
+ type: string
11168
+ required:
11169
+ - name
11170
+ - provider
11171
+ - action_prompt
11172
+ additionalProperties: false
11173
+ /v1/watchers/delete:
11174
+ post:
11175
+ operationId: watchers_delete_post
11176
+ summary: Delete a watcher
11177
+ description: Delete a watcher by ID.
11178
+ tags:
11179
+ - watchers
11180
+ responses:
11181
+ "200":
11182
+ description: Successful response
11183
+ content:
11184
+ application/json:
11185
+ schema:
11186
+ type: object
11187
+ properties: {}
11188
+ additionalProperties: {}
11189
+ requestBody:
11190
+ required: true
11191
+ content:
11192
+ application/json:
11193
+ schema:
11194
+ type: object
11195
+ properties:
11196
+ watcher_id:
11197
+ type: string
11198
+ minLength: 1
11199
+ required:
11200
+ - watcher_id
11201
+ additionalProperties: false
11202
+ /v1/watchers/digest:
11203
+ post:
11204
+ operationId: watchers_digest_post
11205
+ summary: Get watcher event digest
11206
+ description: Get recent watcher events, optionally filtered by watcher ID.
11207
+ tags:
11208
+ - watchers
11209
+ responses:
11210
+ "200":
11211
+ description: Successful response
11212
+ content:
11213
+ application/json:
11214
+ schema:
11215
+ type: object
11216
+ properties: {}
11217
+ additionalProperties: {}
11218
+ requestBody:
11219
+ required: true
11220
+ content:
11221
+ application/json:
11222
+ schema:
11223
+ type: object
11224
+ properties:
11225
+ watcher_id:
11226
+ type: string
11227
+ hours:
11228
+ default: 24
11229
+ type: number
11230
+ exclusiveMinimum: 0
11231
+ limit:
11232
+ default: 50
11233
+ type: integer
11234
+ exclusiveMinimum: 0
11235
+ maximum: 9007199254740991
11236
+ required:
11237
+ - hours
11238
+ - limit
11239
+ additionalProperties: false
11240
+ /v1/watchers/list:
11241
+ post:
11242
+ operationId: watchers_list_post
11243
+ summary: List watchers
11244
+ description: List all watchers, or get details for a specific watcher by ID.
11245
+ tags:
11246
+ - watchers
11247
+ responses:
11248
+ "200":
11249
+ description: Successful response
11250
+ content:
11251
+ application/json:
11252
+ schema:
11253
+ type: object
11254
+ properties: {}
11255
+ additionalProperties: {}
11256
+ requestBody:
11257
+ required: true
11258
+ content:
11259
+ application/json:
11260
+ schema:
11261
+ type: object
11262
+ properties:
11263
+ watcher_id:
11264
+ type: string
11265
+ enabled_only:
11266
+ default: false
11267
+ type: boolean
11268
+ required:
11269
+ - enabled_only
11270
+ additionalProperties: false
11271
+ /v1/watchers/update:
11272
+ post:
11273
+ operationId: watchers_update_post
11274
+ summary: Update a watcher
11275
+ description: Update an existing watcher's configuration.
11276
+ tags:
11277
+ - watchers
11278
+ responses:
11279
+ "200":
11280
+ description: Successful response
11281
+ content:
11282
+ application/json:
11283
+ schema:
11284
+ type: object
11285
+ properties: {}
11286
+ additionalProperties: {}
11287
+ requestBody:
11288
+ required: true
11289
+ content:
11290
+ application/json:
11291
+ schema:
11292
+ type: object
11293
+ properties:
11294
+ watcher_id:
11295
+ type: string
11296
+ minLength: 1
11297
+ name:
11298
+ type: string
11299
+ action_prompt:
11300
+ type: string
11301
+ poll_interval_ms:
11302
+ type: integer
11303
+ minimum: 15000
11304
+ maximum: 9007199254740991
11305
+ enabled:
11306
+ type: boolean
11307
+ config:
11308
+ type: object
11309
+ propertyNames:
11310
+ type: string
11311
+ additionalProperties: {}
11312
+ required:
11313
+ - watcher_id
11314
+ additionalProperties: false
9060
11315
  /v1/work-items:
9061
11316
  get:
9062
11317
  operationId: workitems_get
@@ -9078,6 +11333,21 @@ paths:
9078
11333
  required:
9079
11334
  - items
9080
11335
  additionalProperties: false
11336
+ parameters:
11337
+ - name: status
11338
+ in: query
11339
+ required: false
11340
+ schema:
11341
+ type: string
11342
+ enum:
11343
+ - pending
11344
+ - running
11345
+ - awaiting_review
11346
+ - done
11347
+ - failed
11348
+ - cancelled
11349
+ - archived
11350
+ description: Filter by work item status
9081
11351
  /v1/work-items/{id}:
9082
11352
  delete:
9083
11353
  operationId: workitems_by_id_delete
@@ -9192,6 +11462,10 @@ paths:
9192
11462
  responses:
9193
11463
  "200":
9194
11464
  description: Successful response
11465
+ "404":
11466
+ description: Work item not found
11467
+ "409":
11468
+ description: Work item is not running
9195
11469
  parameters:
9196
11470
  - name: id
9197
11471
  in: path
@@ -9292,6 +11566,12 @@ paths:
9292
11566
  responses:
9293
11567
  "200":
9294
11568
  description: Successful response
11569
+ "403":
11570
+ description: Required tool permissions not approved
11571
+ "404":
11572
+ description: Work item or associated task not found
11573
+ "409":
11574
+ description: Work item is already running or not runnable
9295
11575
  parameters:
9296
11576
  - name: id
9297
11577
  in: path
@@ -9318,6 +11598,13 @@ paths:
9318
11598
  responses:
9319
11599
  "200":
9320
11600
  description: Successful response
11601
+ parameters:
11602
+ - name: path
11603
+ in: query
11604
+ required: true
11605
+ schema:
11606
+ type: string
11607
+ description: File path to read
9321
11608
  /v1/workspace/delete:
9322
11609
  post:
9323
11610
  operationId: workspace_delete_post
@@ -9328,6 +11615,16 @@ paths:
9328
11615
  responses:
9329
11616
  "200":
9330
11617
  description: Successful response
11618
+ content:
11619
+ application/json:
11620
+ schema:
11621
+ type: object
11622
+ properties:
11623
+ success:
11624
+ type: boolean
11625
+ required:
11626
+ - success
11627
+ additionalProperties: false
9331
11628
  requestBody:
9332
11629
  required: true
9333
11630
  content:
@@ -9403,13 +11700,15 @@ paths:
9403
11700
  responses:
9404
11701
  "200":
9405
11702
  description: Successful response
11703
+ "416":
11704
+ description: Range Not Satisfiable
9406
11705
  parameters:
9407
11706
  - name: path
9408
11707
  in: query
9409
- required: false
11708
+ required: true
9410
11709
  schema:
9411
11710
  type: string
9412
- description: Relative file path (required)
11711
+ description: Relative file path
9413
11712
  - name: showHidden
9414
11713
  in: query
9415
11714
  required: false