@vellumai/assistant 0.6.6 → 0.7.1

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 (1603) hide show
  1. package/AGENTS.md +20 -0
  2. package/ARCHITECTURE.md +46 -38
  3. package/Dockerfile +27 -6
  4. package/README.md +9 -11
  5. package/__tests__/permissions/gateway-threshold-reader.test.ts +83 -149
  6. package/bun.lock +309 -119
  7. package/docs/architecture/memory.md +1 -90
  8. package/docs/architecture/security.md +28 -41
  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 +9 -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 +887 -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 +86 -0
  47. package/node_modules/@vellumai/skill-host-contracts/src/client.ts +1342 -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 +325 -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/node_modules/@vellumai/slack-text/bun.lock +24 -0
  56. package/node_modules/@vellumai/slack-text/package.json +18 -0
  57. package/node_modules/@vellumai/slack-text/src/index.test.ts +153 -0
  58. package/node_modules/@vellumai/slack-text/src/index.ts +235 -0
  59. package/node_modules/@vellumai/slack-text/tsconfig.json +20 -0
  60. package/openapi.yaml +3136 -650
  61. package/package.json +15 -7
  62. package/scripts/check-circular-deps.ts +80 -0
  63. package/scripts/generate-openapi.ts +29 -107
  64. package/{src/memory/graph/inspect.ts → scripts/memory-inspect.ts} +27 -27
  65. package/src/__tests__/access-request-decision.test.ts +2 -11
  66. package/src/__tests__/acp-session.test.ts +4 -150
  67. package/src/__tests__/actor-token-service.test.ts +17 -678
  68. package/src/__tests__/agent-loop-callsite-precedence.test.ts +2 -6
  69. package/src/__tests__/agent-loop-override-profile.test.ts +404 -0
  70. package/src/__tests__/agent-loop-thinking.test.ts +4 -4
  71. package/src/__tests__/agent-wake-override-profile.test.ts +283 -0
  72. package/src/__tests__/always-loaded-tools-guard.test.ts +2 -1
  73. package/src/__tests__/anthropic-provider.test.ts +183 -28
  74. package/src/__tests__/app-conversation-ids-backfill.test.ts +278 -0
  75. package/src/__tests__/app-conversation-ids.test.ts +151 -0
  76. package/src/__tests__/app-routes-csp.test.ts +106 -55
  77. package/src/__tests__/approval-cascade.test.ts +3 -370
  78. package/src/__tests__/approval-conversation-turn.test.ts +3 -8
  79. package/src/__tests__/approval-hardcoded-copy-guard.test.ts +1 -1
  80. package/src/__tests__/approval-primitive.test.ts +2 -1
  81. package/src/__tests__/approval-routes-http.test.ts +36 -464
  82. package/src/__tests__/assistant-event-hub.test.ts +126 -77
  83. package/src/__tests__/assistant-event.test.ts +0 -5
  84. package/src/__tests__/assistant-events-sse-hardening.test.ts +107 -92
  85. package/src/__tests__/assistant-feature-flags-integration.test.ts +0 -29
  86. package/src/__tests__/assistant-id-boundary-guard.test.ts +0 -3
  87. package/src/__tests__/attachment-upload-trusted-source.test.ts +139 -0
  88. package/src/__tests__/attachments-store.test.ts +46 -1
  89. package/src/__tests__/audit-log-rotation.test.ts +2 -1
  90. package/src/__tests__/auto-analysis-end-to-end.test.ts +8 -20
  91. package/src/__tests__/background-shell-bash.test.ts +227 -0
  92. package/src/__tests__/background-shell-host-bash.test.ts +465 -0
  93. package/src/__tests__/background-tool-registry.test.ts +145 -0
  94. package/src/__tests__/background-tool-routes.test.ts +175 -0
  95. package/src/__tests__/btw-routes.test.ts +147 -183
  96. package/src/__tests__/call-controller.test.ts +15 -2
  97. package/src/__tests__/call-conversation-messages.test.ts +2 -1
  98. package/src/__tests__/call-domain.test.ts +2 -2
  99. package/src/__tests__/call-pointer-messages.test.ts +11 -13
  100. package/src/__tests__/call-recovery.test.ts +2 -1
  101. package/src/__tests__/call-routes-http.test.ts +3 -14
  102. package/src/__tests__/call-site-routing-provider.test.ts +193 -0
  103. package/src/__tests__/call-store.test.ts +2 -1
  104. package/src/__tests__/cancel-resolves-conversation-key.test.ts +31 -62
  105. package/src/__tests__/canonical-guardian-store.test.ts +2 -2
  106. package/src/__tests__/catalog-files.test.ts +0 -26
  107. package/src/__tests__/ces-rpc-credential-backend.test.ts +1 -1
  108. package/src/__tests__/channel-approval-routes.test.ts +88 -344
  109. package/src/__tests__/channel-approval.test.ts +9 -7
  110. package/src/__tests__/channel-approvals.test.ts +34 -197
  111. package/src/__tests__/channel-delivery-store.test.ts +11 -10
  112. package/src/__tests__/channel-guardian.test.ts +114 -171
  113. package/src/__tests__/channel-readiness-service.test.ts +8 -6
  114. package/src/__tests__/channel-reply-delivery.test.ts +3 -19
  115. package/src/__tests__/channel-retry-sweep.test.ts +2 -5
  116. package/src/__tests__/checker.test.ts +272 -3933
  117. package/src/__tests__/circuit-breaker-pipeline.test.ts +1 -1
  118. package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +208 -0
  119. package/src/__tests__/cli.test.ts +1 -38
  120. package/src/__tests__/compact-event-conversation-id-guard.test.ts +50 -0
  121. package/src/__tests__/compaction-events.test.ts +2 -1
  122. package/src/__tests__/compaction-pipeline.test.ts +1 -1
  123. package/src/__tests__/compaction-strip-metadata-clear.test.ts +2 -2
  124. package/src/__tests__/compaction-timeout-recovery.test.ts +1 -1
  125. package/src/__tests__/config-managed-gemini-defaults.test.ts +3 -7
  126. package/src/__tests__/config-model-image-provider.test.ts +0 -1
  127. package/src/__tests__/config-schema-cmd.test.ts +1 -1
  128. package/src/__tests__/config-schema.test.ts +36 -269
  129. package/src/__tests__/config-watcher.test.ts +12 -0
  130. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +4 -25
  131. package/src/__tests__/connection-policy.test.ts +1 -52
  132. package/src/__tests__/contact-store-user-file.test.ts +2 -1
  133. package/src/__tests__/contacts-tools.test.ts +56 -29
  134. package/src/__tests__/contacts-write.test.ts +8 -125
  135. package/src/__tests__/context-image-dimensions.test.ts +1 -1
  136. package/src/__tests__/context-search-agent-protocol.test.ts +230 -0
  137. package/src/__tests__/context-search-agent-runner.test.ts +998 -0
  138. package/src/__tests__/context-search-conversations-source.test.ts +320 -0
  139. package/src/__tests__/context-search-fanout.test.ts +380 -0
  140. package/src/__tests__/context-search-memory-source.test.ts +430 -0
  141. package/src/__tests__/context-search-memory-v2-source.test.ts +383 -0
  142. package/src/__tests__/context-search-pkb-source.test.ts +493 -0
  143. package/src/__tests__/context-search-types.test.ts +95 -0
  144. package/src/__tests__/context-search-workspace-source.test.ts +532 -0
  145. package/src/__tests__/context-window-manager.test.ts +71 -0
  146. package/src/__tests__/conversation-abort-tool-results.test.ts +10 -1
  147. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +633 -0
  148. package/src/__tests__/conversation-agent-loop-overflow.test.ts +117 -31
  149. package/src/__tests__/conversation-agent-loop.test.ts +1004 -15
  150. package/src/__tests__/conversation-analysis-routes.test.ts +68 -88
  151. package/src/__tests__/conversation-attachments.test.ts +9 -20
  152. package/src/__tests__/conversation-attention-store.test.ts +2 -1
  153. package/src/__tests__/conversation-attention-telegram.test.ts +15 -5
  154. package/src/__tests__/conversation-clear-safety.test.ts +53 -95
  155. package/src/__tests__/conversation-confirmation-signals.test.ts +1 -330
  156. package/src/__tests__/conversation-crud-inference-profile.test.ts +54 -0
  157. package/src/__tests__/conversation-delete-schedule-cleanup.test.ts +63 -157
  158. package/src/__tests__/conversation-disk-view-integration.test.ts +2 -2
  159. package/src/__tests__/conversation-disk-view.test.ts +5 -4
  160. package/src/__tests__/conversation-fork-crud.test.ts +26 -55
  161. package/src/__tests__/conversation-fork-route.test.ts +5 -74
  162. package/src/__tests__/conversation-history-web-search.test.ts +4 -3
  163. package/src/__tests__/conversation-inference-profile-list.test.ts +128 -0
  164. package/src/__tests__/conversation-inference-profile-route.test.ts +205 -0
  165. package/src/__tests__/conversation-init.benchmark.test.ts +4 -81
  166. package/src/__tests__/conversation-key-store-disk-view.test.ts +2 -1
  167. package/src/__tests__/conversation-lifecycle.test.ts +4 -5
  168. package/src/__tests__/conversation-list-source.test.ts +2 -2
  169. package/src/__tests__/conversation-load-history-repair.test.ts +0 -1
  170. package/src/__tests__/conversation-pairing.test.ts +0 -1
  171. package/src/__tests__/conversation-pre-run-repair.test.ts +137 -297
  172. package/src/__tests__/conversation-process-callsite.test.ts +79 -3
  173. package/src/__tests__/conversation-provider-retry-repair.test.ts +6 -1
  174. package/src/__tests__/conversation-queue.test.ts +4 -41
  175. package/src/__tests__/conversation-routes-disk-view.test.ts +55 -188
  176. package/src/__tests__/conversation-routes-guardian-reply.test.ts +64 -71
  177. package/src/__tests__/conversation-routes-slash-commands.test.ts +144 -64
  178. package/src/__tests__/conversation-runtime-assembly.test.ts +295 -84
  179. package/src/__tests__/conversation-slash-commands.test.ts +30 -47
  180. package/src/__tests__/conversation-slash-queue.test.ts +2 -1
  181. package/src/__tests__/conversation-slash-unknown.test.ts +0 -1
  182. package/src/__tests__/conversation-speed-override.test.ts +0 -4
  183. package/src/__tests__/conversation-starter-routes.test.ts +254 -55
  184. package/src/__tests__/conversation-starters-cadence.test.ts +2 -2
  185. package/src/__tests__/conversation-store.test.ts +2 -375
  186. package/src/__tests__/conversation-surfaces-standalone-payloads.test.ts +12 -5
  187. package/src/__tests__/conversation-surfaces-standalone.test.ts +18 -14
  188. package/src/__tests__/conversation-surfaces-state-update.test.ts +3 -2
  189. package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +9 -47
  190. package/src/__tests__/conversation-tool-setup-memory-scope.test.ts +6 -6
  191. package/src/__tests__/conversation-unread-route.test.ts +1 -1
  192. package/src/__tests__/conversation-usage.test.ts +255 -4
  193. package/src/__tests__/conversation-wipe.test.ts +2 -103
  194. package/src/__tests__/conversation-workspace-cache-state.test.ts +0 -1
  195. package/src/__tests__/conversation-workspace-injection.test.ts +0 -1
  196. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +0 -1
  197. package/src/__tests__/conversations-defer-cli.test.ts +150 -0
  198. package/src/__tests__/credential-execution-admin-cli.test.ts +1 -1
  199. package/src/__tests__/credential-execution-api-key-propagation.test.ts +2 -2
  200. package/src/__tests__/credential-execution-approval-bridge.test.ts +22 -289
  201. package/src/__tests__/credential-execution-client.test.ts +1 -1
  202. package/src/__tests__/credential-execution-managed-contract.test.ts +1 -1
  203. package/src/__tests__/credential-execution-shell-lockdown.test.ts +0 -39
  204. package/src/__tests__/credential-health-service.test.ts +68 -0
  205. package/src/__tests__/credential-security-e2e.test.ts +4 -3
  206. package/src/__tests__/credential-security-invariants.test.ts +15 -5
  207. package/src/__tests__/credential-token-resolver.test.ts +180 -0
  208. package/src/__tests__/credentials-cli.test.ts +45 -21
  209. package/src/__tests__/cu-unified-flow.test.ts +33 -16
  210. package/src/__tests__/daemon-assistant-events.test.ts +34 -21
  211. package/src/__tests__/daemon-credential-client.test.ts +26 -108
  212. package/src/__tests__/db-acp-history.test.ts +284 -0
  213. package/src/__tests__/db-activation-state.test.ts +240 -0
  214. package/src/__tests__/db-connection-isolation.test.ts +125 -0
  215. package/src/__tests__/db-conversation-fork-lineage-migration.test.ts +2 -1
  216. package/src/__tests__/db-conversation-inference-profile-migration.test.ts +248 -0
  217. package/src/__tests__/db-llm-request-log-provider-migration.test.ts +2 -1
  218. package/src/__tests__/db-memory-graph-event-date-repair.test.ts +116 -0
  219. package/src/__tests__/db-migration-rollback.test.ts +101 -0
  220. package/src/__tests__/db-rename-inference-profile-snake-case-migration.test.ts +132 -0
  221. package/src/__tests__/db-schedule-syntax-migration.test.ts +1 -0
  222. package/src/__tests__/db-slack-compaction-watermark-migration.test.ts +169 -0
  223. package/src/__tests__/delete-propagation.test.ts +3 -2
  224. package/src/__tests__/deterministic-verification-control-plane.test.ts +38 -104
  225. package/src/__tests__/dm-backfill.test.ts +3 -2
  226. package/src/__tests__/document-conversations.test.ts +332 -0
  227. package/src/__tests__/edit-propagation.test.ts +5 -7
  228. package/src/__tests__/embedding-managed-proxy-selection.test.ts +3 -3
  229. package/src/__tests__/emit-event-signal.test.ts +4 -6
  230. package/src/__tests__/empty-response-pipeline.test.ts +1 -1
  231. package/src/__tests__/events-client-registration.test.ts +441 -0
  232. package/src/__tests__/file-write-tool.test.ts +2 -4
  233. package/src/__tests__/filing-service.test.ts +197 -19
  234. package/src/__tests__/first-greeting.test.ts +156 -150
  235. package/src/__tests__/fixtures/mock-chrome-extension.ts +108 -66
  236. package/src/__tests__/followup-tools.test.ts +2 -1
  237. package/src/__tests__/gateway-client-managed-outbound.test.ts +8 -12
  238. package/src/__tests__/gateway-only-enforcement.test.ts +2 -6
  239. package/src/__tests__/gateway-only-guard.test.ts +4 -3
  240. package/src/__tests__/gemini-provider.test.ts +276 -10
  241. package/src/__tests__/get-skill-detail-audit.test.ts +3 -8
  242. package/src/__tests__/graph-extraction-event-date.test.ts +30 -0
  243. package/src/__tests__/guardian-action-conversation-turn.test.ts +2 -1
  244. package/src/__tests__/guardian-action-followup-executor.test.ts +2 -2
  245. package/src/__tests__/guardian-action-followup-store.test.ts +2 -1
  246. package/src/__tests__/guardian-action-grant-mint-consume.test.ts +9 -9
  247. package/src/__tests__/guardian-action-late-reply.test.ts +2 -1
  248. package/src/__tests__/guardian-action-store.test.ts +2 -1
  249. package/src/__tests__/guardian-action-sweep.test.ts +9 -8
  250. package/src/__tests__/guardian-binding-drift-heal.test.ts +3 -2
  251. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +21 -118
  252. package/src/__tests__/guardian-dispatch.test.ts +14 -11
  253. package/src/__tests__/guardian-grant-minting.test.ts +16 -17
  254. package/src/__tests__/guardian-outbound-http.test.ts +71 -106
  255. package/src/__tests__/guardian-principal-id-roundtrip.test.ts +2 -2
  256. package/src/__tests__/guardian-routing-invariants.test.ts +41 -92
  257. package/src/__tests__/guardian-routing-state.test.ts +15 -23
  258. package/src/__tests__/guardian-verification-voice-binding.test.ts +1 -2
  259. package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +274 -0
  260. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +10 -87
  261. package/src/__tests__/headless-browser-mode.test.ts +4 -9
  262. package/src/__tests__/headless-browser-navigate.test.ts +21 -20
  263. package/src/__tests__/heartbeat-service.test.ts +325 -25
  264. package/src/__tests__/helpers/call-route-handler.ts +72 -0
  265. package/src/__tests__/helpers/channel-test-adapter.ts +161 -0
  266. package/src/__tests__/helpers/create-guardian-binding.ts +91 -0
  267. package/src/__tests__/helpers/gateway-classify-mock.ts +67 -0
  268. package/src/__tests__/helpers/mock-logger.ts +36 -0
  269. package/src/__tests__/history-repair-pipeline.test.ts +1 -1
  270. package/src/__tests__/home-state-routes.test.ts +10 -31
  271. package/src/__tests__/host-bash-proxy.test.ts +46 -122
  272. package/src/__tests__/host-browser-e2e-cloud.test.ts +38 -498
  273. package/src/__tests__/host-browser-e2e-self-hosted-capability.test.ts +35 -95
  274. package/src/__tests__/host-browser-proxy.test.ts +111 -185
  275. package/src/__tests__/host-browser-routes.test.ts +68 -153
  276. package/src/__tests__/host-browser-ws-events-e2e.test.ts +35 -31
  277. package/src/__tests__/host-cu-proxy.test.ts +56 -111
  278. package/src/__tests__/host-file-proxy.test.ts +44 -98
  279. package/src/__tests__/host-file-read-tool.test.ts +42 -21
  280. package/src/__tests__/host-proxy-interface.test.ts +3 -3
  281. package/src/__tests__/host-shell-tool.test.ts +35 -72
  282. package/src/__tests__/host-transfer-pending-interactions.test.ts +144 -0
  283. package/src/__tests__/host-transfer-proxy.test.ts +723 -0
  284. package/src/__tests__/http-conversation-lineage.test.ts +3 -2
  285. package/src/__tests__/http-user-message-parity.test.ts +18 -15
  286. package/src/__tests__/inbound-invite-redemption.test.ts +3 -2
  287. package/src/__tests__/inbound-slack-persistence.test.ts +31 -0
  288. package/src/__tests__/injector-chain.test.ts +25 -21
  289. package/src/__tests__/injector-pkb-v2-silenced.test.ts +124 -0
  290. package/src/__tests__/inline-command-runner.test.ts +0 -66
  291. package/src/__tests__/inline-skill-load-permissions.test.ts +41 -208
  292. package/src/__tests__/install-skill-routing.test.ts +2 -14
  293. package/src/__tests__/invite-redemption-service.test.ts +2 -1
  294. package/src/__tests__/invite-routes-http.test.ts +80 -12
  295. package/src/__tests__/jobs-store-qdrant-breaker.test.ts +2 -1
  296. package/src/__tests__/jobs-store-upsert-debounced.test.ts +2 -1
  297. package/src/__tests__/lifecycle-memory-v2-seed.test.ts +157 -0
  298. package/src/__tests__/list-messages-attachments.test.ts +52 -55
  299. package/src/__tests__/list-messages-page-latest.test.ts +283 -0
  300. package/src/__tests__/list-messages-tool-merge.test.ts +16 -17
  301. package/src/__tests__/llm-call-pipeline.test.ts +7 -8
  302. package/src/__tests__/llm-callsite-catalog.test.ts +34 -0
  303. package/src/__tests__/llm-catalog-parity.test.ts +90 -0
  304. package/src/__tests__/llm-context-normalization.test.ts +69 -4
  305. package/src/__tests__/llm-context-resolution.test.ts +180 -0
  306. package/src/__tests__/llm-context-route-provider.test.ts +39 -113
  307. package/src/__tests__/llm-request-log-turn-query.test.ts +2 -1
  308. package/src/__tests__/llm-resolver.test.ts +279 -0
  309. package/src/__tests__/llm-schema.test.ts +57 -1
  310. package/src/__tests__/llm-usage-store.test.ts +271 -5
  311. package/src/__tests__/log-export-routes.test.ts +89 -0
  312. package/src/__tests__/log-export-workspace.test.ts +28 -17
  313. package/src/__tests__/managed-profile-guard.test.ts +225 -0
  314. package/src/__tests__/managed-skill-lifecycle.test.ts +0 -10
  315. package/src/__tests__/manual-token-reconciliation.test.ts +334 -0
  316. package/src/__tests__/mcp-abort-signal.test.ts +2 -3
  317. package/src/__tests__/mcp-client-auth.test.ts +2 -3
  318. package/src/__tests__/memory-admin-recall.test.ts +221 -0
  319. package/src/__tests__/memory-recall-log-store.test.ts +2 -1
  320. package/src/__tests__/memory-retrieval-pipeline.test.ts +6 -8
  321. package/src/__tests__/memory-upsert-concurrency.test.ts +2 -1
  322. package/src/__tests__/memory-v2-static-injector.test.ts +95 -0
  323. package/src/__tests__/migration-cross-version-compatibility.test.ts +209 -302
  324. package/src/__tests__/migration-export-http.test.ts +50 -43
  325. package/src/__tests__/migration-export-streaming.test.ts +18 -10
  326. package/src/__tests__/migration-export-to-gcs.test.ts +531 -0
  327. package/src/__tests__/migration-import-commit-http.test.ts +82 -37
  328. package/src/__tests__/migration-import-from-gcs.test.ts +574 -0
  329. package/src/__tests__/migration-import-from-url.test.ts +34 -27
  330. package/src/__tests__/migration-import-preflight-http.test.ts +108 -108
  331. package/src/__tests__/migration-jobs-status.test.ts +164 -0
  332. package/src/__tests__/migration-parity-persistence.test.ts +62 -25
  333. package/src/__tests__/migration-transport.test.ts +115 -23
  334. package/src/__tests__/migration-validate-http.test.ts +149 -159
  335. package/src/__tests__/migration-wizard.test.ts +133 -27
  336. package/src/__tests__/mock-gateway-ipc.ts +32 -62
  337. package/src/__tests__/model-intents.test.ts +15 -2
  338. package/src/__tests__/nl-approval-parser.test.ts +13 -17
  339. package/src/__tests__/non-member-access-request.test.ts +14 -6
  340. package/src/__tests__/notification-guardian-path.test.ts +15 -8
  341. package/src/__tests__/notification-schedule-notify-dedup.test.ts +2 -1
  342. package/src/__tests__/notification-telegram-adapter.test.ts +57 -55
  343. package/src/__tests__/oauth-apps-routes.test.ts +76 -122
  344. package/src/__tests__/oauth-cli.test.ts +14 -1
  345. package/src/__tests__/oauth-provider-profiles.test.ts +1 -1
  346. package/src/__tests__/oauth-provider-visibility.test.ts +3 -1
  347. package/src/__tests__/oauth-providers-routes.test.ts +78 -101
  348. package/src/__tests__/oauth-store.test.ts +22 -1
  349. package/src/__tests__/oauth2-gateway-transport.test.ts +6 -3
  350. package/src/__tests__/openai-provider.test.ts +105 -6
  351. package/src/__tests__/openai-responses-provider.test.ts +146 -4
  352. package/src/__tests__/openrouter-provider-only.test.ts +22 -4
  353. package/src/__tests__/overflow-reduce-pipeline.test.ts +4 -9
  354. package/src/__tests__/permission-types.test.ts +3 -18
  355. package/src/__tests__/persistence-pipeline.test.ts +3 -2
  356. package/src/__tests__/pipeline-runner.test.ts +1 -1
  357. package/src/__tests__/platform-bash-auto-approve.test.ts +44 -28
  358. package/src/__tests__/platform.test.ts +11 -63
  359. package/src/__tests__/playbook-execution.test.ts +2 -1
  360. package/src/__tests__/playbook-tools.test.ts +2 -1
  361. package/src/__tests__/plugin-bootstrap.test.ts +51 -5
  362. package/src/__tests__/plugin-registry.test.ts +30 -0
  363. package/src/__tests__/plugin-route-contribution.test.ts +17 -11
  364. package/src/__tests__/plugin-skill-contribution.test.ts +3 -3
  365. package/src/__tests__/plugin-tool-contribution.test.ts +10 -4
  366. package/src/__tests__/plugin-types.test.ts +1 -1
  367. package/src/__tests__/prechat-onboarding-contract.test.ts +31 -7
  368. package/src/__tests__/pricing.test.ts +218 -5
  369. package/src/__tests__/process-message-background-slack.test.ts +331 -0
  370. package/src/__tests__/profiler-routes.test.ts +112 -177
  371. package/src/__tests__/provider-managed-proxy-integration.test.ts +153 -17
  372. package/src/__tests__/provider-send-message-override-profile.test.ts +273 -0
  373. package/src/__tests__/provider-usage-tracking.test.ts +208 -0
  374. package/src/__tests__/proxy-approval-callback.test.ts +6 -554
  375. package/src/__tests__/qdrant-collection-migration.test.ts +7 -7
  376. package/src/__tests__/reaction-persistence.test.ts +12 -8
  377. package/src/__tests__/rebind-secrets-screen.test.ts +53 -16
  378. package/src/__tests__/rebuild-index-graph-nodes.test.ts +1 -1
  379. package/src/__tests__/recording-handler.test.ts +64 -83
  380. package/src/__tests__/regenerate-fire-and-forget-trace.test.ts +4 -3
  381. package/src/__tests__/registry.test.ts +1 -0
  382. package/src/__tests__/relay-server.test.ts +37 -17
  383. package/src/__tests__/require-fresh-approval.test.ts +24 -182
  384. package/src/__tests__/resolve-trust-class.test.ts +2 -1
  385. package/src/__tests__/retry-thinking-tool-choice.test.ts +19 -7
  386. package/src/__tests__/retry-verbosity-normalization.test.ts +139 -0
  387. package/src/__tests__/runtime-attachment-metadata.test.ts +26 -6
  388. package/src/__tests__/runtime-events-sse-parity.test.ts +15 -17
  389. package/src/__tests__/runtime-events-sse.test.ts +16 -33
  390. package/src/__tests__/schedule-routes.test.ts +226 -129
  391. package/src/__tests__/schedule-store.test.ts +119 -1
  392. package/src/__tests__/schedule-tools.test.ts +2 -1
  393. package/src/__tests__/scheduler-recurrence.test.ts +2 -1
  394. package/src/__tests__/scheduler-reuse-conversation.test.ts +2 -1
  395. package/src/__tests__/scheduler-wake.test.ts +356 -0
  396. package/src/__tests__/scoped-approval-grants.test.ts +2 -1
  397. package/src/__tests__/scoped-grant-security-matrix.test.ts +2 -1
  398. package/src/__tests__/search-skills-unified.test.ts +9 -15
  399. package/src/__tests__/secret-ingress-cli.test.ts +2 -5
  400. package/src/__tests__/secret-ingress-http.test.ts +36 -23
  401. package/src/__tests__/secret-onetime-send.test.ts +4 -2
  402. package/src/__tests__/secret-prompt-log-hygiene.test.ts +24 -7
  403. package/src/__tests__/secret-prompter-channel-fallback.test.ts +42 -47
  404. package/src/__tests__/secret-response-routing.test.ts +29 -15
  405. package/src/__tests__/secret-routes-managed-proxy.test.ts +51 -103
  406. package/src/__tests__/secret-scanner.test.ts +2 -545
  407. package/src/__tests__/send-endpoint-busy.test.ts +36 -38
  408. package/src/__tests__/sequence-store.test.ts +2 -1
  409. package/src/__tests__/server-history-render.test.ts +2 -2
  410. package/src/__tests__/service-contracts-import-guard.test.ts +185 -0
  411. package/src/__tests__/set-permission-mode.test.ts +0 -10
  412. package/src/__tests__/settings-routes.test.ts +36 -69
  413. package/src/__tests__/shell-credential-ref.test.ts +0 -8
  414. package/src/__tests__/shell-tool-proxy-mode.test.ts +0 -56
  415. package/src/__tests__/skill-boundary-guard.test.ts +105 -0
  416. package/src/__tests__/skill-load-inline-command.test.ts +2 -2
  417. package/src/__tests__/skill-load-inline-includes.test.ts +2 -2
  418. package/src/__tests__/skill-runtime-path.test.ts +64 -0
  419. package/src/__tests__/skill-script-runner-sandbox.test.ts +0 -11
  420. package/src/__tests__/skill-tool-factory.test.ts +97 -0
  421. package/src/__tests__/skills-file-content-endpoint.test.ts +9 -32
  422. package/src/__tests__/skills-files-catalog-fallback.test.ts +11 -17
  423. package/src/__tests__/slack-inbound-verification.test.ts +12 -64
  424. package/src/__tests__/slack-messaging-token-resolution.test.ts +1 -3
  425. package/src/__tests__/slack-reaction-approvals.test.ts +4 -4
  426. package/src/__tests__/slack-share-routes.test.ts +37 -72
  427. package/src/__tests__/subagent-call-site-routing.test.ts +79 -0
  428. package/src/__tests__/subagent-fork-notifications.test.ts +57 -47
  429. package/src/__tests__/subagent-fork-spawn.test.ts +20 -28
  430. package/src/__tests__/subagent-manager-notify.test.ts +70 -70
  431. package/src/__tests__/subagent-notify-parent.test.ts +83 -109
  432. package/src/__tests__/subagent-role-registry.test.ts +3 -3
  433. package/src/__tests__/subagent-spawn-tool-fork.test.ts +52 -104
  434. package/src/__tests__/subagent-tools.test.ts +0 -1
  435. package/src/__tests__/suggestion-routes.test.ts +55 -62
  436. package/src/__tests__/system-prompt.test.ts +115 -13
  437. package/src/__tests__/task-compiler.test.ts +2 -1
  438. package/src/__tests__/task-management-tools.test.ts +2 -1
  439. package/src/__tests__/task-memory-cleanup.test.ts +2 -1
  440. package/src/__tests__/task-scheduler.test.ts +2 -1
  441. package/src/__tests__/telegram-config.test.ts +0 -1
  442. package/src/__tests__/terminal-tools.test.ts +3 -401
  443. package/src/__tests__/test-preload.ts +0 -11
  444. package/src/__tests__/thread-backfill.test.ts +947 -32
  445. package/src/__tests__/token-estimate-pipeline.test.ts +68 -15
  446. package/src/__tests__/tool-approval-handler.test.ts +21 -63
  447. package/src/__tests__/tool-audit-listener.test.ts +3 -3
  448. package/src/__tests__/tool-domain-event-publisher.test.ts +3 -39
  449. package/src/__tests__/tool-error-pipeline.test.ts +6 -6
  450. package/src/__tests__/tool-execute-pipeline.test.ts +6 -14
  451. package/src/__tests__/tool-execution-abort-cleanup.test.ts +0 -16
  452. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +69 -16
  453. package/src/__tests__/tool-executor-lifecycle-events.test.ts +31 -62
  454. package/src/__tests__/tool-executor.test.ts +336 -1654
  455. package/src/__tests__/tool-grant-request-escalation.test.ts +90 -311
  456. package/src/__tests__/tool-metrics-listener.test.ts +0 -35
  457. package/src/__tests__/tool-result-truncate-pipeline.test.ts +1 -1
  458. package/src/__tests__/tool-side-effects-slack-dm.test.ts +1 -0
  459. package/src/__tests__/tool-trace-listener.test.ts +0 -17
  460. package/src/__tests__/transfer-progress-screen.test.ts +63 -26
  461. package/src/__tests__/trust-context-guards.test.ts +1 -1
  462. package/src/__tests__/trusted-contact-approval-notifier.test.ts +7 -15
  463. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +178 -354
  464. package/src/__tests__/trusted-contact-lifecycle-notifications.test.ts +5 -151
  465. package/src/__tests__/trusted-contact-multichannel.test.ts +5 -6
  466. package/src/__tests__/trusted-contact-verification.test.ts +3 -2
  467. package/src/__tests__/tts-catalog-parity.test.ts +16 -5
  468. package/src/__tests__/turn-boundary-resolution.test.ts +2 -1
  469. package/src/__tests__/twilio-routes.test.ts +25 -66
  470. package/src/__tests__/usage-attribution.test.ts +247 -0
  471. package/src/__tests__/usage-cache-backfill-migration.test.ts +3 -7
  472. package/src/__tests__/usage-cli.test.ts +143 -0
  473. package/src/__tests__/usage-grouped-buckets.test.ts +155 -0
  474. package/src/__tests__/usage-routes.test.ts +223 -90
  475. package/src/__tests__/user-plugin-loader.test.ts +54 -12
  476. package/src/__tests__/validation-results-screen.test.ts +39 -16
  477. package/src/__tests__/vbundle-pax-and-symlink.test.ts +12 -3
  478. package/src/__tests__/vellum-self-knowledge-inline-command.test.ts +51 -139
  479. package/src/__tests__/verification-control-plane-policy.test.ts +97 -19
  480. package/src/__tests__/voice-ingress-preflight.test.ts +5 -5
  481. package/src/__tests__/voice-invite-redemption.test.ts +2 -1
  482. package/src/__tests__/voice-scoped-grant-consumer.test.ts +3 -3
  483. package/src/__tests__/voice-session-bridge.test.ts +285 -106
  484. package/src/__tests__/volume-security-guard.test.ts +0 -2
  485. package/src/__tests__/workspace-migration-009-backfill-conversation-disk-view.test.ts +2 -1
  486. package/src/__tests__/workspace-migration-013-repair-conversation-disk-view.test.ts +3 -1
  487. package/src/__tests__/workspace-migration-028-recover-conversations-from-disk-view.test.ts +2 -1
  488. package/src/__tests__/workspace-migration-045-release-notes-meet-avatar.test.ts +1 -1
  489. package/src/__tests__/workspace-migration-052-seed-default-inference-profiles.test.ts +260 -0
  490. package/src/__tests__/workspace-migration-053-release-notes-acp-codex.test.ts +225 -0
  491. package/src/__tests__/workspace-migration-054-seed-recall-callsite.test.ts +235 -0
  492. package/src/__tests__/workspace-migration-055-release-notes-agentic-recall.test.ts +128 -0
  493. package/src/__tests__/workspace-migration-057-repair-stale-gemini-model-ids.test.ts +232 -0
  494. package/src/__tests__/workspace-migration-062-drop-memory-v2-edges-json.test.ts +103 -0
  495. package/src/__tests__/workspace-migration-063-release-notes-dynamic-model-context.test.ts +77 -0
  496. package/src/__tests__/workspace-migration-064-unwind-main-agent-opus-seed.test.ts +225 -0
  497. package/src/__tests__/workspace-migration-acp-sessions-ui.test.ts +144 -0
  498. package/src/__tests__/workspace-migration-drop-user-md.test.ts +1 -1
  499. package/src/__tests__/workspace-migration-memory-v2-init.test.ts +252 -0
  500. package/src/acp/__tests__/client-handler.test.ts +64 -0
  501. package/src/acp/__tests__/helpers/acp-config-stub.ts +62 -0
  502. package/src/acp/__tests__/helpers/which-stub.ts +45 -0
  503. package/src/acp/__tests__/session-manager-persistence.test.ts +366 -0
  504. package/src/acp/__tests__/session-manager-startup.test.ts +159 -0
  505. package/src/acp/__tests__/session-manager.test.ts +83 -0
  506. package/src/acp/client-handler.ts +23 -139
  507. package/src/acp/index.ts +0 -15
  508. package/src/acp/resolve-agent.test.ts +291 -0
  509. package/src/acp/resolve-agent.ts +176 -0
  510. package/src/acp/session-manager.ts +193 -31
  511. package/src/acp/types.ts +2 -50
  512. package/src/agent/loop.ts +53 -15
  513. package/src/agent/message-types.ts +0 -2
  514. package/src/approvals/AGENTS.md +5 -1
  515. package/src/approvals/__tests__/guardian-feed-event.test.ts +11 -12
  516. package/src/approvals/approval-primitive.ts +3 -20
  517. package/src/approvals/guardian-decision-primitive.ts +37 -68
  518. package/src/approvals/guardian-request-resolvers.ts +38 -104
  519. package/src/avatar/character-components.ts +6 -6
  520. package/src/{config/bundled-skills/settings/tools → avatar}/identity-avatar.ts +1 -1
  521. package/src/backup/__tests__/backup-worker.test.ts +36 -10
  522. package/src/backup/__tests__/paths.test.ts +5 -4
  523. package/src/backup/__tests__/restore.test.ts +45 -28
  524. package/src/backup/backup-worker.ts +37 -12
  525. package/src/backup/paths.ts +11 -24
  526. package/src/backup/restore.ts +7 -11
  527. package/src/browser/__tests__/operations.test.ts +0 -35
  528. package/src/browser/operations.ts +1 -47
  529. package/src/browser-session/events.ts +0 -9
  530. package/src/bundler/package-resolver.ts +2 -6
  531. package/src/calls/active-call-lease.ts +1 -1
  532. package/src/calls/call-constants.ts +1 -1
  533. package/src/calls/call-controller.ts +1 -5
  534. package/src/calls/call-domain.ts +14 -14
  535. package/src/calls/call-pointer-messages.ts +4 -9
  536. package/src/calls/call-store.ts +2 -34
  537. package/src/calls/guardian-action-sweep.ts +9 -25
  538. package/src/calls/guardian-dispatch.ts +1 -20
  539. package/src/calls/guardian-question-copy.ts +0 -108
  540. package/src/calls/media-stream-audio-transcode.ts +2 -41
  541. package/src/calls/media-stream-server.ts +2 -3
  542. package/src/calls/media-stream-stt-session.ts +1 -3
  543. package/src/calls/relay-access-wait.ts +5 -8
  544. package/src/calls/relay-server.ts +15 -42
  545. package/src/calls/relay-setup-router.ts +2 -2
  546. package/src/calls/relay-verification.ts +4 -4
  547. package/src/calls/twilio-rest.ts +1 -39
  548. package/src/calls/twilio-routes.ts +160 -78
  549. package/src/calls/voice-control-protocol.ts +10 -10
  550. package/src/calls/voice-ingress-preflight.ts +2 -2
  551. package/src/calls/voice-session-bridge.ts +141 -77
  552. package/src/channels/__tests__/types.test.ts +25 -3
  553. package/src/channels/permission-profiles.ts +2 -72
  554. package/src/channels/types.ts +25 -44
  555. package/src/cli/AGENTS.md +1 -0
  556. package/src/cli/__tests__/notifications.test.ts +12 -10
  557. package/src/cli/commands/__tests__/attachment.test.ts +14 -8
  558. package/src/cli/commands/__tests__/backup.test.ts +3 -14
  559. package/src/cli/commands/__tests__/browser.test.ts +36 -31
  560. package/src/cli/commands/__tests__/cache.test.ts +175 -23
  561. package/src/cli/commands/__tests__/memory-v2.test.ts +382 -0
  562. package/src/cli/commands/__tests__/task.test.ts +36 -35
  563. package/src/cli/commands/__tests__/trust.test.ts +236 -0
  564. package/src/cli/commands/__tests__/ui-confirm.test.ts +14 -14
  565. package/src/cli/commands/__tests__/ui.test.ts +17 -17
  566. package/src/cli/commands/__tests__/watchers.test.ts +29 -29
  567. package/src/cli/commands/__tests__/webhooks.test.ts +544 -0
  568. package/src/cli/commands/attachment.ts +12 -8
  569. package/src/cli/commands/auth.ts +1 -1
  570. package/src/cli/commands/avatar.ts +192 -9
  571. package/src/cli/commands/backup.ts +18 -48
  572. package/src/cli/commands/browser.ts +52 -4
  573. package/src/cli/commands/cache-fs.ts +8 -0
  574. package/src/cli/commands/cache.ts +157 -84
  575. package/src/cli/commands/channel-verification-sessions.ts +6 -6
  576. package/src/cli/commands/clients.ts +74 -17
  577. package/src/cli/commands/completions.ts +3 -3
  578. package/src/cli/commands/contacts.ts +241 -86
  579. package/src/cli/commands/conversations-defer.ts +364 -0
  580. package/src/cli/commands/conversations-import.ts +2 -3
  581. package/src/cli/commands/conversations.ts +63 -53
  582. package/src/cli/commands/credential-execution.ts +1 -1
  583. package/src/cli/commands/credentials.ts +139 -5
  584. package/src/cli/commands/default-action.ts +1 -1
  585. package/src/cli/commands/domain.ts +2 -2
  586. package/src/cli/commands/email.ts +7 -7
  587. package/src/cli/commands/image-generation.ts +1 -1
  588. package/src/cli/commands/keys.ts +5 -2
  589. package/src/cli/commands/mcp.ts +1 -1
  590. package/src/cli/commands/memory-v2.ts +315 -0
  591. package/src/cli/commands/memory.ts +8 -8
  592. package/src/cli/commands/notifications.ts +21 -20
  593. package/src/cli/commands/oauth/__tests__/connect.test.ts +23 -5
  594. package/src/cli/commands/oauth/__tests__/disconnect.test.ts +1 -1
  595. package/src/cli/commands/oauth/__tests__/mode.test.ts +1 -1
  596. package/src/cli/commands/oauth/__tests__/status.test.ts +1 -1
  597. package/src/cli/commands/oauth/__tests__/token.test.ts +1 -1
  598. package/src/cli/commands/oauth/connect.ts +2 -2
  599. package/src/cli/commands/pending.ts +102 -0
  600. package/src/cli/commands/platform/__tests__/callback-routes-list.test.ts +0 -6
  601. package/src/cli/commands/platform/__tests__/connect.test.ts +23 -11
  602. package/src/cli/commands/platform/__tests__/disconnect.test.ts +22 -10
  603. package/src/cli/commands/platform/__tests__/status.test.ts +22 -10
  604. package/src/cli/commands/platform/connect.ts +3 -3
  605. package/src/cli/commands/platform/disconnect.ts +4 -6
  606. package/src/cli/commands/platform/index.ts +12 -10
  607. package/src/cli/commands/routes.ts +7 -1
  608. package/src/cli/commands/sequence.ts +7 -7
  609. package/src/cli/commands/skills.ts +264 -116
  610. package/src/cli/commands/task.ts +12 -10
  611. package/src/cli/commands/trust.ts +105 -167
  612. package/src/cli/commands/ui.ts +3 -3
  613. package/src/cli/commands/usage.ts +29 -15
  614. package/src/cli/commands/watchers.ts +8 -8
  615. package/src/cli/commands/webhooks.ts +270 -0
  616. package/src/cli/lib/daemon-avatar-client.ts +37 -0
  617. package/src/cli/lib/daemon-credential-client.ts +41 -189
  618. package/src/cli/lib/ipc-params.ts +22 -0
  619. package/src/cli/program.ts +6 -0
  620. package/src/cli.ts +1 -82
  621. package/src/config/__tests__/feature-flag-registry-guard.test.ts +2 -2
  622. package/src/config/acp-defaults.test.ts +57 -0
  623. package/src/config/acp-defaults.ts +40 -0
  624. package/src/config/acp-schema.ts +1 -1
  625. package/src/config/assistant-feature-flags.ts +18 -142
  626. package/src/config/bundled-skills/acp/SKILL.md +44 -16
  627. package/src/config/bundled-skills/acp/TOOLS.json +45 -1
  628. package/src/config/bundled-skills/acp/tools/acp-list-agents.ts +12 -0
  629. package/src/config/bundled-skills/acp/tools/acp-steer.ts +12 -0
  630. package/src/config/bundled-skills/contacts/tools/contact-merge.ts +14 -14
  631. package/src/config/bundled-skills/contacts/tools/contact-search.ts +1 -4
  632. package/src/config/bundled-skills/contacts/tools/contact-upsert.ts +11 -6
  633. package/src/config/bundled-skills/media-processing/__tests__/cost-tracker.test.ts +6 -6
  634. package/src/config/bundled-skills/media-processing/services/reduce.ts +0 -13
  635. package/src/config/bundled-skills/messaging/TOOLS.json +14 -4
  636. package/src/config/bundled-skills/messaging/tools/gmail-mime-helpers.ts +1 -1
  637. package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +1 -1
  638. package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +1 -1
  639. package/src/config/bundled-skills/playbooks/tools/playbook-list.ts +1 -1
  640. package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +1 -1
  641. package/src/config/bundled-skills/settings/SKILL.md +2 -17
  642. package/src/config/bundled-skills/settings/TOOLS.json +0 -56
  643. package/src/config/bundled-skills/subagent/SKILL.md +2 -0
  644. package/src/config/bundled-tool-registry.ts +4 -6
  645. package/src/config/env-registry.ts +12 -2
  646. package/src/config/env.ts +10 -22
  647. package/src/config/feature-flag-registry.json +38 -46
  648. package/src/config/llm-callsite-catalog.ts +12 -0
  649. package/src/config/llm-context-resolution.ts +80 -0
  650. package/src/config/llm-resolver.ts +90 -36
  651. package/src/config/loader.ts +9 -12
  652. package/src/config/schema.ts +5 -228
  653. package/src/config/schemas/__tests__/filing.test.ts +58 -0
  654. package/src/config/schemas/__tests__/memory-v2.test.ts +187 -0
  655. package/src/config/schemas/call-site-catalog.ts +271 -0
  656. package/src/config/schemas/calls.ts +5 -5
  657. package/src/config/schemas/filing.ts +12 -0
  658. package/src/config/schemas/host-browser.ts +2 -2
  659. package/src/config/schemas/inference.ts +1 -3
  660. package/src/config/schemas/ingress.ts +2 -2
  661. package/src/config/schemas/llm.ts +82 -12
  662. package/src/config/schemas/memory-retrieval.ts +2 -2
  663. package/src/config/schemas/memory-storage.ts +1 -1
  664. package/src/config/schemas/memory-v2.ts +185 -0
  665. package/src/config/schemas/memory.ts +2 -0
  666. package/src/config/schemas/security.ts +1 -102
  667. package/src/config/schemas/services.ts +52 -13
  668. package/src/config/schemas/skills.ts +5 -5
  669. package/src/config/schemas/tts.ts +1 -1
  670. package/src/config/seed-inference-profiles.ts +117 -0
  671. package/src/config/skills.ts +1 -91
  672. package/src/config/types.ts +3 -47
  673. package/src/contacts/contact-store.ts +2 -19
  674. package/src/contacts/contacts-write.ts +1 -143
  675. package/src/contacts/types.ts +8 -10
  676. package/src/context/token-estimator.ts +1 -1
  677. package/src/context/tool-result-truncation.ts +1 -1
  678. package/src/context/window-manager.ts +45 -6
  679. package/src/credential-execution/approval-bridge.ts +7 -69
  680. package/src/credential-execution/client.ts +17 -422
  681. package/src/credential-execution/feature-gates.ts +1 -2
  682. package/src/credential-execution/managed-catalog.ts +1 -1
  683. package/src/credential-execution/process-manager.ts +34 -10
  684. package/src/credential-health/credential-health-service.ts +22 -17
  685. package/src/daemon/__tests__/conversation-feed-event.test.ts +0 -13
  686. package/src/daemon/__tests__/conversation-surfaces-launch.test.ts +76 -83
  687. package/src/daemon/__tests__/daemon-skill-host.test.ts +265 -0
  688. package/src/daemon/__tests__/meet-host-supervisor.test.ts +587 -0
  689. package/src/daemon/__tests__/meet-manifest-loader.test.ts +463 -0
  690. package/src/daemon/approval-generators.ts +2 -14
  691. package/src/daemon/classifier.ts +0 -106
  692. package/src/daemon/config-watcher.ts +14 -54
  693. package/src/daemon/connection-policy.ts +1 -40
  694. package/src/daemon/conversation-agent-loop-handlers.ts +89 -9
  695. package/src/daemon/conversation-agent-loop.ts +440 -88
  696. package/src/daemon/conversation-attachments.ts +5 -81
  697. package/src/daemon/conversation-error.ts +9 -5
  698. package/src/daemon/conversation-history.ts +9 -9
  699. package/src/daemon/conversation-launch.ts +21 -136
  700. package/src/daemon/conversation-lifecycle.ts +1 -1
  701. package/src/daemon/conversation-messaging.ts +2 -1
  702. package/src/daemon/conversation-notifiers.ts +1 -1
  703. package/src/daemon/conversation-process.ts +90 -174
  704. package/src/daemon/conversation-runtime-assembly.ts +245 -164
  705. package/src/daemon/conversation-slash.ts +50 -164
  706. package/src/daemon/conversation-store.ts +344 -0
  707. package/src/daemon/conversation-surfaces.ts +27 -32
  708. package/src/daemon/conversation-tool-setup.ts +23 -202
  709. package/src/daemon/conversation-usage.ts +36 -0
  710. package/src/daemon/conversation.ts +129 -381
  711. package/src/daemon/daemon-control.ts +4 -72
  712. package/src/daemon/daemon-skill-host.ts +259 -0
  713. package/src/daemon/dictation-profile-store.ts +2 -26
  714. package/src/daemon/external-plugins-bootstrap.ts +67 -13
  715. package/src/daemon/first-greeting.ts +44 -156
  716. package/src/daemon/handlers/config-channels.ts +14 -14
  717. package/src/daemon/handlers/config-embeddings.ts +1 -1
  718. package/src/daemon/handlers/config-ingress.ts +27 -166
  719. package/src/daemon/handlers/config-model.test.ts +17 -0
  720. package/src/daemon/handlers/config-model.ts +8 -53
  721. package/src/daemon/handlers/config-telegram.ts +6 -53
  722. package/src/daemon/handlers/config-voice.ts +0 -42
  723. package/src/daemon/handlers/conversations.ts +32 -345
  724. package/src/daemon/handlers/recording.ts +27 -159
  725. package/src/daemon/handlers/shared.ts +50 -99
  726. package/src/daemon/handlers/skills.ts +55 -114
  727. package/src/daemon/host-bash-proxy.ts +67 -45
  728. package/src/daemon/host-browser-proxy.ts +65 -27
  729. package/src/daemon/host-cu-proxy.ts +40 -39
  730. package/src/daemon/host-file-proxy.ts +58 -37
  731. package/src/daemon/host-transfer-proxy.ts +538 -0
  732. package/src/daemon/lifecycle.ts +71 -272
  733. package/src/daemon/meet-host-startup.ts +51 -0
  734. package/src/daemon/meet-host-supervisor.ts +781 -0
  735. package/src/daemon/meet-manifest-loader.ts +410 -0
  736. package/src/daemon/memory-v2-startup.ts +35 -0
  737. package/src/daemon/message-protocol.ts +4 -7
  738. package/src/daemon/message-types/acp.ts +1 -0
  739. package/src/daemon/message-types/conversations.ts +23 -2
  740. package/src/daemon/message-types/host-bash.ts +1 -0
  741. package/src/daemon/message-types/host-cu.ts +1 -0
  742. package/src/daemon/message-types/host-file.ts +1 -0
  743. package/src/daemon/message-types/host-transfer.ts +42 -0
  744. package/src/daemon/message-types/integrations.ts +6 -0
  745. package/src/daemon/message-types/messages.ts +24 -23
  746. package/src/daemon/message-types/schedules.ts +1 -0
  747. package/src/daemon/message-types/settings.ts +0 -6
  748. package/src/daemon/message-types/shared.ts +5 -2
  749. package/src/daemon/message-types/subagents.ts +2 -1
  750. package/src/daemon/message-types/workspace.ts +1 -3
  751. package/src/daemon/pkb-reminder-builder.test.ts +13 -12
  752. package/src/daemon/pkb-reminder-builder.ts +8 -16
  753. package/src/daemon/process-message.ts +479 -0
  754. package/src/daemon/providers-setup.ts +14 -6
  755. package/src/daemon/server.ts +58 -1702
  756. package/src/daemon/shutdown-handlers.ts +3 -3
  757. package/src/daemon/startup-error.ts +1 -1
  758. package/src/daemon/tool-side-effects.ts +125 -107
  759. package/src/daemon/trust-context.ts +45 -0
  760. package/src/daemon/wake-target-adapter.ts +218 -0
  761. package/src/email/feature-gate.ts +1 -1
  762. package/src/events/domain-events.ts +1 -16
  763. package/src/events/tool-audit-listener.ts +5 -9
  764. package/src/events/tool-domain-event-publisher.ts +0 -10
  765. package/src/events/tool-metrics-listener.ts +1 -21
  766. package/src/events/tool-trace-listener.ts +0 -14
  767. package/src/filing/filing-service.ts +207 -55
  768. package/src/followups/followup-store.ts +3 -71
  769. package/src/heartbeat/__tests__/heartbeat-feed-event.test.ts +93 -21
  770. package/src/heartbeat/heartbeat-service.ts +55 -16
  771. package/src/home/__tests__/feed-writer.test.ts +0 -4
  772. package/src/home/__tests__/phase5-exit-criteria.test.ts +18 -1
  773. package/src/home/__tests__/relationship-state-writer.test.ts +30 -0
  774. package/src/home/__tests__/rollup-producer.test.ts +67 -2
  775. package/src/home/assistant-feed-authoring.ts +8 -1
  776. package/src/home/feed-types.ts +1 -1
  777. package/src/home/feed-writer.ts +1 -2
  778. package/src/home/relationship-state-writer.ts +17 -4
  779. package/src/home/rewrite-feed-title.ts +58 -0
  780. package/src/home/rollup-producer.ts +16 -3
  781. package/src/inbound/platform-callback-registration.ts +1 -17
  782. package/src/ipc/__tests__/attachment-ipc.test.ts +128 -66
  783. package/src/ipc/__tests__/browser-ipc.test.ts +72 -58
  784. package/src/ipc/__tests__/cache-ipc.test.ts +52 -107
  785. package/src/ipc/__tests__/cli-ipc.test.ts +9 -6
  786. package/src/ipc/__tests__/skill-server-bidirectional.test.ts +253 -0
  787. package/src/ipc/__tests__/skill-server.test.ts +182 -0
  788. package/src/ipc/__tests__/socket-path.test.ts +69 -23
  789. package/src/ipc/__tests__/ui-request-route.test.ts +241 -216
  790. package/src/ipc/__tests__/watcher-ipc.test.ts +33 -33
  791. package/src/ipc/assistant-server.ts +443 -0
  792. package/src/ipc/cli-client.ts +3 -3
  793. package/src/ipc/gateway-client.test.ts +131 -0
  794. package/src/ipc/gateway-client.ts +98 -123
  795. package/src/ipc/ipc-framing.ts +281 -0
  796. package/src/ipc/routes/__tests__/memory-v2-backfill.test.ts +171 -0
  797. package/src/ipc/routes/db-proxy.ts +73 -0
  798. package/src/ipc/routes/route-adapter.ts +32 -0
  799. package/src/ipc/routes/trust-rules.test.ts +123 -0
  800. package/src/ipc/skill-ipc-types.ts +54 -0
  801. package/src/ipc/skill-routes/__tests__/config.test.ts +146 -0
  802. package/src/ipc/skill-routes/__tests__/events-ipc.test.ts +388 -0
  803. package/src/ipc/skill-routes/__tests__/identity.test.ts +62 -0
  804. package/src/ipc/skill-routes/__tests__/log.test.ts +133 -0
  805. package/src/ipc/skill-routes/__tests__/memory.test.ts +178 -0
  806. package/src/ipc/skill-routes/__tests__/platform.test.ts +111 -0
  807. package/src/ipc/skill-routes/__tests__/providers.test.ts +265 -0
  808. package/src/ipc/skill-routes/__tests__/registries.test.ts +361 -0
  809. package/src/ipc/skill-routes/config.ts +47 -0
  810. package/src/ipc/skill-routes/events.ts +120 -0
  811. package/src/ipc/skill-routes/identity.ts +21 -0
  812. package/src/ipc/skill-routes/index.ts +37 -0
  813. package/src/ipc/skill-routes/log.ts +40 -0
  814. package/src/ipc/skill-routes/memory.ts +76 -0
  815. package/src/ipc/skill-routes/platform.ts +39 -0
  816. package/src/ipc/skill-routes/providers.ts +163 -0
  817. package/src/ipc/skill-routes/registries.ts +393 -0
  818. package/src/ipc/skill-server.ts +738 -0
  819. package/src/ipc/skill-socket-path.ts +20 -0
  820. package/src/ipc/socket-cleanup.ts +92 -0
  821. package/src/ipc/socket-path.ts +63 -32
  822. package/src/live-voice/__tests__/live-voice-agent-turn.test.ts +374 -0
  823. package/src/live-voice/__tests__/live-voice-archive.test.ts +525 -0
  824. package/src/live-voice/__tests__/live-voice-events.test.ts +473 -0
  825. package/src/live-voice/__tests__/live-voice-integration.test.ts +359 -0
  826. package/src/live-voice/__tests__/live-voice-metrics.test.ts +179 -0
  827. package/src/live-voice/__tests__/live-voice-session-manager.test.ts +349 -0
  828. package/src/live-voice/__tests__/live-voice-stt.test.ts +244 -0
  829. package/src/live-voice/__tests__/live-voice-tts-session.test.ts +337 -0
  830. package/src/live-voice/__tests__/live-voice-tts.test.ts +337 -0
  831. package/src/live-voice/__tests__/protocol.test.ts +295 -0
  832. package/src/live-voice/__tests__/runtime-websocket-shell.test.ts +413 -0
  833. package/src/live-voice/live-voice-archive.ts +758 -0
  834. package/src/live-voice/live-voice-metrics.ts +472 -0
  835. package/src/live-voice/live-voice-session-manager.ts +222 -0
  836. package/src/live-voice/live-voice-session.ts +1144 -0
  837. package/src/live-voice/live-voice-tts.ts +260 -0
  838. package/src/live-voice/protocol.ts +515 -0
  839. package/src/mcp/client.ts +2 -2
  840. package/src/mcp/manager.ts +0 -5
  841. package/src/media/types.ts +4 -4
  842. package/src/memory/__tests__/auto-analysis-enqueue.test.ts +4 -28
  843. package/src/memory/__tests__/auto-analysis-guard.test.ts +2 -2
  844. package/src/memory/__tests__/conversation-analyze-job.test.ts +7 -62
  845. package/src/memory/__tests__/conversation-group-migration.test.ts +2 -2
  846. package/src/memory/__tests__/find-analysis-conversation.test.ts +2 -1
  847. package/src/memory/__tests__/fixtures/memory-v2-activation-fixtures.ts +55 -0
  848. package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +235 -0
  849. package/src/memory/__tests__/memory-v2-activation-log-store.test.ts +127 -0
  850. package/src/memory/admin.ts +65 -7
  851. package/src/memory/app-git-service.ts +0 -46
  852. package/src/memory/app-store.ts +154 -0
  853. package/src/memory/attachments-store.ts +20 -16
  854. package/src/memory/auto-analysis-enqueue.ts +2 -17
  855. package/src/memory/canonical-guardian-store.ts +2 -1
  856. package/src/memory/channel-verification-sessions.ts +1 -1
  857. package/src/memory/checkpoints.ts +1 -1
  858. package/src/memory/context-search/agent-protocol.ts +424 -0
  859. package/src/memory/context-search/agent-runner.ts +1295 -0
  860. package/src/memory/context-search/format.ts +160 -0
  861. package/src/memory/context-search/limits.ts +106 -0
  862. package/src/memory/context-search/search.ts +387 -0
  863. package/src/memory/context-search/sources/conversations.ts +278 -0
  864. package/src/memory/context-search/sources/memory-v2.ts +578 -0
  865. package/src/memory/context-search/sources/memory.ts +95 -0
  866. package/src/memory/context-search/sources/pkb.ts +477 -0
  867. package/src/memory/context-search/sources/workspace.ts +1256 -0
  868. package/src/memory/context-search/types.ts +49 -0
  869. package/src/memory/conversation-analyze-job.ts +3 -24
  870. package/src/memory/conversation-attention-store.ts +1 -1
  871. package/src/memory/conversation-bootstrap.ts +1 -1
  872. package/src/memory/conversation-crud.ts +86 -119
  873. package/src/memory/conversation-directories.ts +1 -11
  874. package/src/memory/conversation-disk-view.ts +1 -5
  875. package/src/memory/conversation-display-order-migration.ts +11 -2
  876. package/src/memory/conversation-group-migration.ts +20 -4
  877. package/src/memory/conversation-key-store.ts +3 -4
  878. package/src/memory/conversation-queries.ts +13 -26
  879. package/src/memory/conversation-starter-checkpoints.ts +63 -0
  880. package/src/memory/conversation-starter-validation.ts +88 -0
  881. package/src/memory/conversation-starters-cadence.ts +1 -1
  882. package/src/memory/conversation-title-service.ts +2 -1
  883. package/src/memory/db-connection.ts +62 -0
  884. package/src/memory/db-init.ts +28 -4
  885. package/src/memory/db-maintenance.ts +1 -1
  886. package/src/memory/delivery-channels.ts +1 -14
  887. package/src/memory/delivery-crud.ts +2 -32
  888. package/src/memory/delivery-status.ts +1 -1
  889. package/src/memory/embedding-backend.ts +3 -21
  890. package/src/memory/embedding-gemini.test.ts +4 -4
  891. package/src/memory/embedding-gemini.ts +0 -2
  892. package/src/memory/embedding-local.ts +6 -6
  893. package/src/memory/embedding-ollama.ts +6 -6
  894. package/src/memory/embedding-openai.ts +6 -6
  895. package/src/memory/embedding-types.ts +21 -0
  896. package/src/memory/external-conversation-store.ts +1 -1
  897. package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +408 -0
  898. package/src/memory/graph/__tests__/handle-remember-v2.test.ts +225 -0
  899. package/src/memory/graph/bootstrap.test.ts +2 -7
  900. package/src/memory/graph/bootstrap.ts +2 -1
  901. package/src/memory/graph/capability-seed.ts +3 -3
  902. package/src/memory/graph/compaction.ts +1 -1
  903. package/src/memory/graph/consolidation.ts +13 -10
  904. package/src/memory/graph/conversation-graph-memory.ts +184 -12
  905. package/src/memory/graph/decay.ts +1 -1
  906. package/src/memory/graph/extraction.ts +53 -21
  907. package/src/memory/graph/graph-memory-state-store.ts +1 -1
  908. package/src/memory/graph/graph-search.test.ts +94 -2
  909. package/src/memory/graph/graph-search.ts +22 -7
  910. package/src/memory/graph/image-ref-utils.ts +1 -1
  911. package/src/memory/graph/injection.test.ts +2 -2
  912. package/src/memory/graph/injection.ts +1 -1
  913. package/src/memory/graph/retriever.test.ts +158 -4
  914. package/src/memory/graph/retriever.ts +17 -5
  915. package/src/memory/graph/store.test.ts +2 -1
  916. package/src/memory/graph/store.ts +1 -1
  917. package/src/memory/graph/tool-handlers.ts +73 -247
  918. package/src/memory/graph/tools.ts +35 -53
  919. package/src/memory/group-crud.ts +1 -2
  920. package/src/memory/guardian-action-store.ts +2 -84
  921. package/src/memory/guardian-approvals.ts +1 -49
  922. package/src/memory/guardian-rate-limits.ts +1 -1
  923. package/src/memory/indexer.ts +44 -32
  924. package/src/memory/invite-store.ts +1 -1
  925. package/src/memory/job-handlers/backfill.ts +1 -1
  926. package/src/memory/job-handlers/cleanup.ts +2 -1
  927. package/src/memory/job-handlers/conversation-starters.ts +54 -63
  928. package/src/memory/job-handlers/embedding.test.ts +2 -1
  929. package/src/memory/job-handlers/embedding.ts +1 -1
  930. package/src/memory/job-handlers/index-maintenance.ts +1 -1
  931. package/src/memory/job-handlers/summarization.ts +3 -3
  932. package/src/memory/job-utils.ts +3 -9
  933. package/src/memory/jobs/__tests__/embed-concept-page.test.ts +362 -0
  934. package/src/memory/jobs/embed-concept-page.ts +210 -0
  935. package/src/memory/jobs/embed-pkb-file.test.ts +2 -1
  936. package/src/memory/jobs-store.ts +9 -2
  937. package/src/memory/jobs-worker.ts +56 -17
  938. package/src/memory/lifecycle-events-store.ts +1 -1
  939. package/src/memory/llm-request-log-store.ts +1 -42
  940. package/src/memory/llm-usage-store.ts +130 -44
  941. package/src/memory/media-store.ts +1 -1
  942. package/src/memory/memory-recall-log-store.ts +1 -1
  943. package/src/memory/memory-v2-activation-log-store.ts +115 -0
  944. package/src/memory/migrations/038-actor-token-records.ts +3 -0
  945. package/src/memory/migrations/039-actor-refresh-token-records.ts +3 -0
  946. package/src/memory/migrations/226-schedule-wake-conversation-id.ts +11 -0
  947. package/src/memory/migrations/227-add-conversation-inference-profile.ts +18 -0
  948. package/src/memory/migrations/228-rename-inference-profile-snake-case.ts +27 -0
  949. package/src/memory/migrations/229-delete-private-conversations.test.ts +1087 -0
  950. package/src/memory/migrations/229-delete-private-conversations.ts +210 -0
  951. package/src/memory/migrations/230-acp-session-history.ts +41 -0
  952. package/src/memory/migrations/231-repair-memory-graph-event-dates.ts +128 -0
  953. package/src/memory/migrations/232-activation-state.ts +38 -0
  954. package/src/memory/migrations/233-document-conversations.ts +54 -0
  955. package/src/memory/migrations/234-memory-v2-activation-logs.ts +55 -0
  956. package/src/memory/migrations/235-llm-usage-attribution.ts +31 -0
  957. package/src/memory/migrations/235-slack-compaction-watermark.ts +44 -0
  958. package/src/memory/migrations/236-tool-invocations-matched-rule-id.ts +26 -0
  959. package/src/memory/migrations/__tests__/234-memory-v2-activation-logs.test.ts +182 -0
  960. package/src/memory/migrations/index.ts +24 -0
  961. package/src/memory/migrations/registry.ts +31 -0
  962. package/src/memory/pkb/pkb-index.test.ts +4 -5
  963. package/src/memory/pkb/pkb-reconcile.test.ts +4 -5
  964. package/src/memory/pkb/pkb-search.test.ts +83 -3
  965. package/src/memory/pkb/pkb-search.ts +27 -14
  966. package/src/memory/published-pages-store.ts +1 -1
  967. package/src/memory/raw-query.ts +2 -68
  968. package/src/memory/schema/acp.ts +30 -0
  969. package/src/memory/schema/conversations.ts +8 -1
  970. package/src/memory/schema/index.ts +1 -0
  971. package/src/memory/schema/infrastructure.ts +26 -32
  972. package/src/memory/schema/memory-graph.ts +36 -14
  973. package/src/memory/scoped-approval-grants.ts +2 -1
  974. package/src/memory/search/semantic.ts +7 -18
  975. package/src/memory/shared-app-links-store.ts +2 -1
  976. package/src/memory/tool-usage-store.ts +3 -1
  977. package/src/memory/trace-event-store.ts +2 -1
  978. package/src/memory/turn-events-store.ts +1 -1
  979. package/src/memory/usage-buckets.ts +40 -1
  980. package/src/memory/usage-grouped-buckets.ts +127 -0
  981. package/src/memory/v2/__tests__/activation-store.test.ts +202 -0
  982. package/src/memory/v2/__tests__/activation.test.ts +1155 -0
  983. package/src/memory/v2/__tests__/backfill-jobs.test.ts +483 -0
  984. package/src/memory/v2/__tests__/consolidation-job.test.ts +412 -0
  985. package/src/memory/v2/__tests__/edge-index.test.ts +278 -0
  986. package/src/memory/v2/__tests__/injection.test.ts +1161 -0
  987. package/src/memory/v2/__tests__/migration.test.ts +840 -0
  988. package/src/memory/v2/__tests__/page-store.test.ts +517 -0
  989. package/src/memory/v2/__tests__/prompts-consolidation.test.ts +181 -0
  990. package/src/memory/v2/__tests__/qdrant.test.ts +438 -0
  991. package/src/memory/v2/__tests__/sim.test.ts +549 -0
  992. package/src/memory/v2/__tests__/skill-content.test.ts +85 -0
  993. package/src/memory/v2/__tests__/skill-qdrant.test.ts +657 -0
  994. package/src/memory/v2/__tests__/skill-store.test.ts +463 -0
  995. package/src/memory/v2/__tests__/static-context.test.ts +153 -0
  996. package/src/memory/v2/__tests__/sweep-job.test.ts +441 -0
  997. package/src/memory/v2/activation-store.ts +109 -0
  998. package/src/memory/v2/activation.ts +561 -0
  999. package/src/memory/v2/backfill-jobs.ts +357 -0
  1000. package/src/memory/v2/consolidation-job.ts +306 -0
  1001. package/src/memory/v2/edge-index.ts +191 -0
  1002. package/src/memory/v2/injection.ts +431 -0
  1003. package/src/memory/v2/migration.ts +647 -0
  1004. package/src/memory/v2/now-text.ts +37 -0
  1005. package/src/memory/v2/page-store.ts +382 -0
  1006. package/src/memory/v2/prompts/consolidation.ts +261 -0
  1007. package/src/memory/v2/prompts/sweep.ts +56 -0
  1008. package/src/memory/v2/qdrant.ts +342 -0
  1009. package/src/memory/v2/sim.ts +206 -0
  1010. package/src/memory/v2/skill-content.ts +42 -0
  1011. package/src/memory/v2/skill-qdrant.ts +395 -0
  1012. package/src/memory/v2/skill-store.ts +176 -0
  1013. package/src/memory/v2/static-context.ts +62 -0
  1014. package/src/memory/v2/sweep-job.ts +298 -0
  1015. package/src/memory/v2/types.ts +106 -0
  1016. package/src/memory/validation.ts +0 -11
  1017. package/src/messaging/draft-store.ts +0 -6
  1018. package/src/messaging/provider-types.ts +8 -0
  1019. package/src/messaging/provider.ts +7 -0
  1020. package/src/messaging/providers/gmail/client.ts +1 -121
  1021. package/src/messaging/providers/index.ts +262 -0
  1022. package/src/messaging/providers/outlook/client.ts +0 -73
  1023. package/src/messaging/providers/slack/__tests__/adapter-mention-rendering.test.ts +226 -0
  1024. package/src/messaging/providers/slack/adapter.ts +122 -21
  1025. package/src/messaging/providers/slack/api.ts +242 -0
  1026. package/src/messaging/providers/slack/backfill.test.ts +95 -6
  1027. package/src/messaging/providers/slack/backfill.ts +89 -11
  1028. package/src/messaging/providers/slack/client.ts +10 -124
  1029. package/src/messaging/providers/slack/message-metadata.ts +13 -3
  1030. package/src/messaging/providers/slack/render-transcript.test.ts +56 -0
  1031. package/src/messaging/providers/slack/render-transcript.ts +126 -25
  1032. package/src/messaging/providers/slack/send.ts +383 -0
  1033. package/src/messaging/providers/slack/types.ts +1 -0
  1034. package/src/messaging/providers/telegram-bot/adapter.ts +4 -42
  1035. package/src/messaging/providers/telegram-bot/api.ts +253 -0
  1036. package/src/messaging/providers/telegram-bot/client.ts +17 -58
  1037. package/src/messaging/providers/telegram-bot/send.ts +232 -0
  1038. package/src/messaging/providers/whatsapp/adapter.ts +4 -36
  1039. package/src/messaging/providers/whatsapp/api.ts +319 -0
  1040. package/src/messaging/providers/whatsapp/client.ts +4 -48
  1041. package/src/messaging/providers/whatsapp/send.ts +209 -0
  1042. package/src/notifications/adapters/slack.ts +5 -23
  1043. package/src/notifications/adapters/telegram.ts +8 -29
  1044. package/src/notifications/conversation-candidates.ts +1 -1
  1045. package/src/notifications/conversation-seed-composer.ts +12 -6
  1046. package/src/notifications/copy-composer.ts +1 -1
  1047. package/src/notifications/decision-engine.ts +1 -1
  1048. package/src/notifications/decisions-store.ts +1 -1
  1049. package/src/notifications/deliveries-store.ts +2 -1
  1050. package/src/notifications/deterministic-checks.ts +1 -1
  1051. package/src/notifications/events-store.ts +1 -13
  1052. package/src/notifications/preferences-store.ts +1 -1
  1053. package/src/notifications/signal.ts +0 -9
  1054. package/src/oauth/connection-resolver.test.ts +8 -0
  1055. package/src/oauth/connection-resolver.ts +6 -5
  1056. package/src/oauth/credential-token-resolver.ts +97 -0
  1057. package/src/oauth/manual-token-connection.ts +30 -34
  1058. package/src/oauth/oauth-store.ts +8 -5
  1059. package/src/outbound-proxy/certs.ts +0 -7
  1060. package/src/outbound-proxy/config.ts +0 -74
  1061. package/src/outbound-proxy/health.ts +0 -44
  1062. package/src/outbound-proxy/index.ts +0 -23
  1063. package/src/permissions/approval-policy.test.ts +149 -132
  1064. package/src/permissions/approval-policy.ts +65 -91
  1065. package/src/permissions/approval-provenance.test.ts +184 -0
  1066. package/src/permissions/approval-provenance.ts +70 -0
  1067. package/src/permissions/checker.test.ts +632 -0
  1068. package/src/permissions/checker.ts +270 -460
  1069. package/src/permissions/gateway-threshold-reader.ts +31 -47
  1070. package/src/permissions/ipc-risk-types.ts +95 -0
  1071. package/src/permissions/prompter.ts +13 -11
  1072. package/src/permissions/risk-types.ts +24 -210
  1073. package/src/permissions/secret-prompter.ts +21 -48
  1074. package/src/permissions/types.ts +49 -46
  1075. package/src/permissions/workspace-policy.ts +1 -8
  1076. package/src/platform/sync-identity.ts +0 -8
  1077. package/src/playbooks/playbook-compiler.ts +1 -1
  1078. package/src/plugins/defaults/index.ts +1 -1
  1079. package/src/plugins/defaults/injectors.ts +87 -23
  1080. package/src/plugins/defaults/llm-call.ts +6 -9
  1081. package/src/plugins/defaults/memory-retrieval.ts +1 -6
  1082. package/src/plugins/defaults/overflow-reduce.ts +12 -7
  1083. package/src/plugins/defaults/token-estimate.ts +2 -3
  1084. package/src/plugins/registry.ts +61 -1
  1085. package/src/plugins/types.ts +14 -7
  1086. package/src/plugins/user-loader.ts +36 -10
  1087. package/src/prompts/persona-resolver.ts +2 -4
  1088. package/src/prompts/system-prompt.ts +34 -31
  1089. package/src/prompts/templates/BOOTSTRAP.md +52 -6
  1090. package/src/prompts/templates/SOUL.md +3 -1
  1091. package/src/prompts/update-bulletin-job.ts +2 -0
  1092. package/src/providers/__tests__/provider-env-vars.test.ts +0 -21
  1093. package/src/providers/__tests__/retry-callsite.test.ts +141 -7
  1094. package/src/providers/anthropic/client.ts +143 -52
  1095. package/src/providers/call-site-routing.ts +49 -6
  1096. package/src/providers/fireworks/client.ts +3 -0
  1097. package/src/providers/gemini/client.ts +113 -23
  1098. package/src/providers/managed-proxy/context.ts +0 -17
  1099. package/src/providers/model-catalog.ts +188 -27
  1100. package/src/providers/model-intents.ts +7 -8
  1101. package/src/providers/openai/chat-completions-provider.ts +43 -7
  1102. package/src/providers/openai/responses-provider.ts +46 -5
  1103. package/src/providers/openrouter/client.ts +4 -5
  1104. package/src/providers/provider-env-vars.ts +4 -12
  1105. package/src/providers/provider-send-message.ts +61 -13
  1106. package/src/providers/ratelimit.ts +7 -2
  1107. package/src/providers/registry.ts +15 -10
  1108. package/src/providers/retry.ts +148 -31
  1109. package/src/providers/speech-to-text/openai-whisper-stream.ts +1 -1
  1110. package/src/providers/speech-to-text/openai-whisper.ts +3 -6
  1111. package/src/providers/speech-to-text/provider-catalog.ts +75 -0
  1112. package/src/providers/speech-to-text/xai.ts +5 -5
  1113. package/src/providers/thinking-config.ts +34 -0
  1114. package/src/providers/types.ts +35 -10
  1115. package/src/providers/usage-tracking.ts +96 -0
  1116. package/src/runtime/AGENTS.md +16 -11
  1117. package/src/runtime/__tests__/agent-wake.test.ts +122 -9
  1118. package/src/runtime/__tests__/interactive-ui.test.ts +157 -246
  1119. package/src/runtime/access-request-helper.ts +9 -20
  1120. package/src/runtime/actor-trust-resolver.ts +2 -2
  1121. package/src/runtime/agent-wake.ts +211 -68
  1122. package/src/runtime/approval-conversation-turn.ts +2 -15
  1123. package/src/runtime/approval-message-composer.ts +11 -60
  1124. package/src/runtime/assistant-event-hub.ts +541 -45
  1125. package/src/runtime/assistant-event.ts +16 -69
  1126. package/src/runtime/auth/__tests__/guard-tests.test.ts +6 -30
  1127. package/src/runtime/auth/__tests__/middleware.test.ts +10 -10
  1128. package/src/runtime/auth/__tests__/route-policy.test.ts +0 -8
  1129. package/src/runtime/auth/middleware.ts +5 -5
  1130. package/src/runtime/auth/route-policy.ts +205 -12
  1131. package/src/runtime/auth/token-service.ts +1 -111
  1132. package/src/runtime/capability-tokens.ts +89 -313
  1133. package/src/runtime/channel-approval-types.ts +1 -6
  1134. package/src/runtime/channel-approvals.ts +13 -81
  1135. package/src/runtime/channel-readiness-service.ts +2 -2
  1136. package/src/runtime/channel-reply-delivery.ts +2 -8
  1137. package/src/runtime/channel-retry-sweep.ts +20 -17
  1138. package/src/runtime/channel-verification-service.ts +3 -5
  1139. package/src/runtime/confirmation-request-guardian-bridge.ts +2 -7
  1140. package/src/runtime/gateway-client.ts +37 -378
  1141. package/src/runtime/guardian-action-grant-minter.ts +2 -3
  1142. package/src/runtime/guardian-action-message-composer.ts +11 -52
  1143. package/src/runtime/guardian-action-service.ts +19 -7
  1144. package/src/runtime/guardian-decision-types.ts +4 -65
  1145. package/src/runtime/guardian-reply-router.ts +10 -19
  1146. package/src/runtime/guardian-vellum-migration.ts +5 -64
  1147. package/src/runtime/http-errors.ts +1 -32
  1148. package/src/runtime/http-router.ts +54 -8
  1149. package/src/runtime/http-server.ts +362 -1187
  1150. package/src/runtime/http-types.ts +20 -98
  1151. package/src/runtime/interactive-ui-types.ts +145 -0
  1152. package/src/runtime/interactive-ui.ts +37 -196
  1153. package/src/runtime/invite-redemption-service.ts +1 -1
  1154. package/src/runtime/invite-redemption-templates.ts +1 -1
  1155. package/src/runtime/local-actor-identity.ts +13 -43
  1156. package/src/runtime/message-composer-types.ts +134 -0
  1157. package/src/runtime/middleware/auth.ts +0 -20
  1158. package/src/runtime/middleware/rate-limiter.ts +1 -1
  1159. package/src/runtime/middleware/request-logger.ts +5 -2
  1160. package/src/runtime/migrations/__tests__/job-registry.test.ts +346 -0
  1161. package/src/runtime/migrations/__tests__/v1-test-helpers.ts +112 -0
  1162. package/src/runtime/migrations/__tests__/vbundle-builder-credentials.test.ts +11 -4
  1163. package/src/runtime/migrations/__tests__/vbundle-builder-v1-shape.test.ts +253 -0
  1164. package/src/runtime/migrations/__tests__/vbundle-import-credentials.test.ts +19 -6
  1165. package/src/runtime/migrations/__tests__/vbundle-legacy-user-md.test.ts +71 -27
  1166. package/src/runtime/migrations/__tests__/vbundle-metadata-merge-integration.test.ts +41 -2
  1167. package/src/runtime/migrations/__tests__/vbundle-streaming-importer.test.ts +143 -79
  1168. package/src/runtime/migrations/__tests__/vbundle-streaming-validator.test.ts +143 -23
  1169. package/src/runtime/migrations/__tests__/vbundle-tar-stream.test.ts +18 -2
  1170. package/src/runtime/migrations/__tests__/vbundle-validator-v1-schema.test.ts +371 -0
  1171. package/src/runtime/migrations/job-registry.ts +281 -0
  1172. package/src/runtime/migrations/migration-transport.ts +46 -13
  1173. package/src/runtime/migrations/migration-wizard.ts +2 -2
  1174. package/src/runtime/migrations/origin-mode.ts +40 -0
  1175. package/src/runtime/migrations/vbundle-builder.ts +133 -80
  1176. package/src/runtime/migrations/vbundle-import-analyzer.ts +9 -7
  1177. package/src/runtime/migrations/vbundle-importer.ts +8 -8
  1178. package/src/runtime/migrations/vbundle-metadata-merge.ts +1 -1
  1179. package/src/runtime/migrations/vbundle-streaming-importer.ts +3 -16
  1180. package/src/runtime/migrations/vbundle-streaming-validator.ts +48 -26
  1181. package/src/runtime/migrations/vbundle-tar-stream.ts +11 -3
  1182. package/src/runtime/migrations/vbundle-validator.ts +214 -41
  1183. package/src/runtime/nl-approval-parser.ts +16 -21
  1184. package/src/runtime/pending-interactions.ts +42 -16
  1185. package/src/runtime/routes/__tests__/acp-routes.test.ts +394 -0
  1186. package/src/runtime/routes/__tests__/backup-routes.test.ts +232 -339
  1187. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +235 -0
  1188. package/src/runtime/routes/__tests__/home-feed-routes.test.ts +72 -4
  1189. package/src/runtime/routes/__tests__/llm-call-sites-routes.test.ts +58 -0
  1190. package/src/runtime/routes/__tests__/migration-export-secrets-redacted.test.ts +54 -0
  1191. package/src/runtime/routes/__tests__/migration-import-credential-filter.test.ts +19 -6
  1192. package/src/runtime/routes/__tests__/stt-routes.test.ts +182 -223
  1193. package/src/runtime/routes/__tests__/suggest-trust-rule-routes.test.ts +230 -0
  1194. package/src/{ipc/__tests__/task-ipc.test.ts → runtime/routes/__tests__/task-routes.test.ts} +116 -96
  1195. package/src/runtime/routes/__tests__/tts-routes.test.ts +185 -289
  1196. package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +7 -7
  1197. package/src/runtime/routes/access-request-decision.ts +25 -50
  1198. package/src/runtime/routes/acp-routes.test.ts +368 -0
  1199. package/src/runtime/routes/acp-routes.ts +392 -170
  1200. package/src/runtime/routes/app-management-routes.ts +475 -662
  1201. package/src/runtime/routes/app-routes.ts +192 -177
  1202. package/src/runtime/routes/approval-routes.ts +163 -440
  1203. package/src/runtime/routes/approval-strategies/guardian-callback-strategy.ts +24 -84
  1204. package/src/runtime/routes/approval-strategies/guardian-text-engine-strategy.ts +3 -10
  1205. package/src/runtime/routes/attachment-routes.ts +409 -253
  1206. package/src/runtime/routes/audio-routes.ts +51 -18
  1207. package/src/runtime/routes/avatar-routes.ts +81 -76
  1208. package/src/runtime/routes/background-tool-routes.ts +94 -0
  1209. package/src/runtime/routes/backup-routes.ts +154 -336
  1210. package/src/runtime/routes/brain-graph-routes.ts +83 -110
  1211. package/src/runtime/routes/browser-routes.ts +127 -0
  1212. package/src/runtime/routes/btw-routes.ts +62 -106
  1213. package/src/runtime/routes/cache-routes.ts +96 -0
  1214. package/src/runtime/routes/call-routes.ts +208 -247
  1215. package/src/runtime/routes/canonical-guardian-expiry-sweep.ts +1 -1
  1216. package/src/runtime/routes/channel-delivery-routes.ts +25 -27
  1217. package/src/runtime/routes/channel-guardian-routes.ts +1 -5
  1218. package/src/runtime/routes/channel-readiness-routes.ts +79 -120
  1219. package/src/runtime/routes/channel-route-definitions.ts +62 -0
  1220. package/src/runtime/routes/channel-route-shared.ts +15 -45
  1221. package/src/runtime/routes/channel-verification-routes.ts +207 -187
  1222. package/src/runtime/routes/client-routes.ts +81 -0
  1223. package/src/runtime/routes/consolidation-routes.ts +115 -0
  1224. package/src/runtime/routes/contact-routes.ts +533 -407
  1225. package/src/runtime/routes/conversation-analysis-routes.ts +48 -49
  1226. package/src/runtime/routes/conversation-attention-routes.ts +55 -67
  1227. package/src/runtime/routes/conversation-list-routes.ts +248 -0
  1228. package/src/runtime/routes/conversation-management-routes.ts +591 -717
  1229. package/src/runtime/routes/conversation-query-routes.ts +621 -459
  1230. package/src/runtime/routes/conversation-routes.ts +396 -792
  1231. package/src/runtime/routes/conversation-starter-routes.ts +137 -108
  1232. package/src/runtime/routes/credential-prompt-routes.ts +124 -0
  1233. package/src/runtime/routes/debug-routes.ts +34 -39
  1234. package/src/runtime/routes/defer-routes.ts +230 -0
  1235. package/src/runtime/routes/diagnostics-routes.ts +79 -70
  1236. package/src/runtime/routes/documents-routes.ts +163 -117
  1237. package/src/runtime/routes/errors.ts +132 -0
  1238. package/src/runtime/routes/events-routes.ts +126 -119
  1239. package/src/runtime/routes/filing-routes.ts +80 -76
  1240. package/src/runtime/routes/global-search-routes.ts +51 -57
  1241. package/src/runtime/routes/group-routes.ts +199 -181
  1242. package/src/runtime/routes/guardian-action-routes.ts +100 -171
  1243. package/src/runtime/routes/guardian-approval-interception.ts +27 -58
  1244. package/src/runtime/routes/guardian-approval-prompt.ts +10 -21
  1245. package/src/runtime/routes/guardian-approval-reply-helpers.ts +2 -6
  1246. package/src/runtime/routes/guardian-expiry-sweep.ts +19 -36
  1247. package/src/runtime/routes/heartbeat-routes.ts +194 -209
  1248. package/src/runtime/routes/home-feed-routes.ts +85 -187
  1249. package/src/runtime/routes/home-state-routes.ts +27 -24
  1250. package/src/runtime/routes/host-bash-routes.ts +45 -54
  1251. package/src/runtime/routes/host-browser-routes.ts +44 -99
  1252. package/src/runtime/routes/host-cu-routes.ts +80 -71
  1253. package/src/runtime/routes/host-file-routes.ts +53 -62
  1254. package/src/runtime/routes/host-transfer-routes.ts +216 -0
  1255. package/src/runtime/routes/http-adapter.ts +172 -0
  1256. package/src/runtime/routes/identity-routes.ts +161 -85
  1257. package/src/runtime/routes/inbound-conversation.ts +11 -18
  1258. package/src/runtime/routes/inbound-message-handler.ts +639 -232
  1259. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +81 -226
  1260. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +2 -3
  1261. package/src/runtime/routes/inbound-stages/background-dispatch.ts +57 -90
  1262. package/src/runtime/routes/inbound-stages/bootstrap-intercept.ts +25 -50
  1263. package/src/runtime/routes/inbound-stages/edit-intercept.ts +7 -7
  1264. package/src/runtime/routes/inbound-stages/escalation-intercept.ts +5 -5
  1265. package/src/runtime/routes/inbound-stages/guardian-activation-intercept.test.ts +5 -6
  1266. package/src/runtime/routes/inbound-stages/guardian-activation-intercept.ts +14 -24
  1267. package/src/runtime/routes/inbound-stages/guardian-reply-intercept.ts +3 -10
  1268. package/src/runtime/routes/inbound-stages/secret-ingress-check.ts +4 -4
  1269. package/src/runtime/routes/inbound-stages/transcribe-audio.ts +3 -3
  1270. package/src/runtime/routes/index.ts +201 -0
  1271. package/src/runtime/routes/integrations/slack/__tests__/channel.test.ts +25 -32
  1272. package/src/runtime/routes/integrations/slack/__tests__/share.test.ts +22 -31
  1273. package/src/runtime/routes/integrations/slack/channel.ts +50 -71
  1274. package/src/runtime/routes/integrations/slack/share.ts +49 -58
  1275. package/src/runtime/routes/integrations/telegram.ts +91 -74
  1276. package/src/runtime/routes/integrations/twilio.ts +163 -240
  1277. package/src/runtime/routes/integrations/vercel.ts +57 -54
  1278. package/src/runtime/routes/interface-routes.ts +43 -0
  1279. package/src/runtime/routes/internal-oauth-routes.ts +56 -0
  1280. package/src/runtime/routes/internal-twilio-routes.ts +46 -0
  1281. package/src/runtime/routes/llm-call-sites-routes.ts +22 -0
  1282. package/src/runtime/routes/llm-context-normalization.ts +4 -2
  1283. package/src/runtime/routes/log-export/workspace-allowlist.ts +1 -1
  1284. package/src/runtime/routes/log-export-routes.ts +90 -100
  1285. package/src/runtime/routes/memory-item-routes.test.ts +152 -175
  1286. package/src/runtime/routes/memory-item-routes.ts +243 -323
  1287. package/src/runtime/routes/memory-v2-routes.ts +188 -0
  1288. package/src/runtime/routes/migration-rollback-routes.ts +167 -212
  1289. package/src/runtime/routes/migration-routes.ts +1037 -377
  1290. package/src/runtime/routes/notification-routes.ts +199 -70
  1291. package/src/runtime/routes/oauth-apps.ts +254 -251
  1292. package/src/runtime/routes/oauth-providers.ts +66 -57
  1293. package/src/runtime/routes/playground/__tests__/force-compact.test.ts +60 -120
  1294. package/src/runtime/routes/playground/__tests__/guard.test.ts +34 -54
  1295. package/src/runtime/routes/playground/__tests__/inject-failures.test.ts +107 -151
  1296. package/src/runtime/routes/playground/__tests__/reset-circuit.test.ts +41 -117
  1297. package/src/runtime/routes/playground/__tests__/seed-conversation.test.ts +95 -138
  1298. package/src/runtime/routes/playground/__tests__/seeded-conversations.test.ts +115 -217
  1299. package/src/runtime/routes/playground/__tests__/state.test.ts +41 -90
  1300. package/src/runtime/routes/playground/conversation-not-found.ts +9 -11
  1301. package/src/runtime/routes/playground/force-compact.ts +41 -54
  1302. package/src/runtime/routes/playground/guard.ts +18 -19
  1303. package/src/runtime/routes/playground/helpers.ts +103 -0
  1304. package/src/runtime/routes/playground/index.ts +15 -27
  1305. package/src/runtime/routes/playground/inject-failures.ts +48 -64
  1306. package/src/runtime/routes/playground/reset-circuit.ts +31 -57
  1307. package/src/runtime/routes/playground/seed-conversation.ts +66 -92
  1308. package/src/runtime/routes/playground/seeded-conversations.ts +60 -64
  1309. package/src/runtime/routes/playground/state.ts +23 -24
  1310. package/src/runtime/routes/profiler-routes.ts +132 -167
  1311. package/src/runtime/routes/ps-routes.ts +120 -0
  1312. package/src/runtime/routes/recording-routes.ts +189 -270
  1313. package/src/runtime/routes/rename-conversation-routes.ts +85 -0
  1314. package/src/runtime/routes/schedule-routes.ts +239 -246
  1315. package/src/runtime/routes/secret-routes.ts +305 -282
  1316. package/src/runtime/routes/secrets-deps.ts +24 -0
  1317. package/src/runtime/routes/settings-routes.ts +370 -449
  1318. package/src/runtime/routes/skills-routes.ts +417 -471
  1319. package/src/runtime/routes/stt-routes.ts +196 -206
  1320. package/src/runtime/routes/subagents-routes.ts +125 -141
  1321. package/src/runtime/routes/suggest-trust-rule-routes.ts +275 -0
  1322. package/src/runtime/routes/surface-action-routes.ts +135 -190
  1323. package/src/runtime/routes/surface-content-routes.ts +84 -118
  1324. package/src/runtime/routes/task-routes.ts +354 -0
  1325. package/src/runtime/routes/telemetry-routes.ts +33 -49
  1326. package/src/runtime/routes/trace-event-routes.ts +55 -74
  1327. package/src/runtime/routes/trust-rules-routes.ts +61 -244
  1328. package/src/runtime/routes/tts-routes.ts +187 -169
  1329. package/src/runtime/routes/types.ts +139 -0
  1330. package/src/{ipc/routes/ui-request.ts → runtime/routes/ui-request-routes.ts} +23 -17
  1331. package/src/runtime/routes/upgrade-broadcast-routes.ts +150 -198
  1332. package/src/runtime/routes/usage-routes.ts +222 -171
  1333. package/src/runtime/routes/user-routes.ts +88 -18
  1334. package/src/runtime/routes/wake-conversation-routes.ts +49 -0
  1335. package/src/{ipc/routes/watcher.ts → runtime/routes/watcher-routes.ts} +84 -39
  1336. package/src/runtime/routes/wipe-conversation-routes.ts +89 -0
  1337. package/src/runtime/routes/work-items-routes.test.ts +10 -20
  1338. package/src/runtime/routes/work-items-routes.ts +419 -437
  1339. package/src/runtime/routes/workspace-commit-routes.ts +30 -61
  1340. package/src/runtime/routes/workspace-routes.test.ts +254 -381
  1341. package/src/runtime/routes/workspace-routes.ts +238 -246
  1342. package/src/runtime/runtime-mode.ts +8 -1
  1343. package/src/runtime/services/__tests__/analyze-conversation.test.ts +82 -120
  1344. package/src/runtime/services/analyze-conversation.ts +18 -55
  1345. package/src/runtime/services/conversation-serializer.ts +179 -0
  1346. package/src/runtime/trust-context-resolver.ts +3 -2
  1347. package/src/runtime/verification-outbound-actions.ts +14 -50
  1348. package/src/runtime/verification-rate-limiter.ts +1 -1
  1349. package/src/schedule/schedule-store.ts +64 -18
  1350. package/src/schedule/scheduler.ts +101 -0
  1351. package/src/security/ces-credential-client.ts +32 -169
  1352. package/src/security/ces-rpc-credential-backend.ts +1 -1
  1353. package/src/security/credential-backend.ts +6 -6
  1354. package/src/security/oauth-completion-page.ts +1 -1
  1355. package/src/security/oauth2.ts +3 -6
  1356. package/src/security/secret-scanner.ts +14 -547
  1357. package/src/security/secure-keys.ts +31 -11
  1358. package/src/security/token-manager.ts +7 -3
  1359. package/src/sequence/analytics.ts +1 -1
  1360. package/src/sequence/guardrails.ts +3 -3
  1361. package/src/sequence/store.ts +2 -1
  1362. package/src/signals/bash.ts +1 -1
  1363. package/src/signals/cancel.ts +16 -25
  1364. package/src/signals/conversation-undo.ts +2 -27
  1365. package/src/signals/emit-event.ts +1 -2
  1366. package/src/signals/event-stream.ts +1 -1
  1367. package/src/signals/user-message.ts +108 -22
  1368. package/src/skills/catalog-cache.ts +7 -0
  1369. package/src/skills/catalog-files.ts +0 -5
  1370. package/src/skills/catalog-install.ts +29 -18
  1371. package/src/skills/category-inference.ts +0 -11
  1372. package/src/skills/clawhub.ts +4 -4
  1373. package/src/skills/inline-command-runner.ts +1 -7
  1374. package/src/skills/managed-store.ts +2 -2
  1375. package/src/skills/remote-skill-policy.ts +6 -7
  1376. package/src/subagent/index.ts +2 -6
  1377. package/src/subagent/manager.ts +94 -107
  1378. package/src/subagent/types.ts +9 -0
  1379. package/src/tasks/SPEC.md +2 -2
  1380. package/src/tasks/task-compiler.ts +1 -1
  1381. package/src/tasks/task-runner.ts +2 -22
  1382. package/src/tasks/task-store.ts +2 -29
  1383. package/src/telemetry/types.ts +6 -0
  1384. package/src/telemetry/usage-telemetry-reporter.test.ts +38 -15
  1385. package/src/telemetry/usage-telemetry-reporter.ts +3 -5
  1386. package/src/tools/acp/list-agents.test.ts +115 -0
  1387. package/src/tools/acp/list-agents.ts +31 -0
  1388. package/src/tools/acp/spawn.test.ts +378 -0
  1389. package/src/tools/acp/spawn.ts +142 -62
  1390. package/src/tools/acp/steer.test.ts +100 -0
  1391. package/src/tools/acp/steer.ts +38 -0
  1392. package/src/tools/background-tool-registry.ts +98 -0
  1393. package/src/tools/browser/__tests__/browser-status.test.ts +44 -127
  1394. package/src/tools/browser/browser-execution.ts +38 -127
  1395. package/src/tools/browser/browser-manager.ts +1 -8
  1396. package/src/tools/browser/cdp-client/__tests__/factory.test.ts +92 -68
  1397. package/src/tools/browser/cdp-client/accessibility-snapshot.ts +1 -1
  1398. package/src/tools/browser/cdp-client/cdp-inspect/discovery.ts +3 -1
  1399. package/src/tools/browser/cdp-client/factory.ts +48 -76
  1400. package/src/tools/browser/cdp-client/index.ts +1 -14
  1401. package/src/tools/browser/cdp-client/types.ts +4 -1
  1402. package/src/tools/computer-use/definitions.ts +1 -1
  1403. package/src/tools/credential-execution/make-authenticated-request.ts +2 -2
  1404. package/src/tools/credential-execution/manage-secure-command-tool.ts +1 -1
  1405. package/src/tools/credential-execution/run-authenticated-command.ts +2 -2
  1406. package/src/tools/credentials/broker-types.ts +2 -1
  1407. package/src/tools/document/editor-template.ts +1 -1
  1408. package/src/tools/execution-timeout.ts +1 -1
  1409. package/src/tools/executor.ts +53 -45
  1410. package/src/tools/host-filesystem/edit.ts +3 -2
  1411. package/src/tools/host-filesystem/read.ts +3 -2
  1412. package/src/tools/host-filesystem/transfer.test.ts +271 -0
  1413. package/src/tools/host-filesystem/transfer.ts +235 -0
  1414. package/src/tools/host-filesystem/write.ts +3 -2
  1415. package/src/tools/host-terminal/host-shell.ts +192 -13
  1416. package/src/tools/mcp/mcp-tool-factory.ts +1 -1
  1417. package/src/tools/memory/register.test.ts +161 -1
  1418. package/src/tools/memory/register.ts +19 -34
  1419. package/src/tools/network/script-proxy/index.ts +1 -10
  1420. package/src/tools/permission-checker.ts +84 -220
  1421. package/src/tools/policy-context.ts +1 -8
  1422. package/src/tools/registry.ts +16 -1
  1423. package/src/tools/shared/shell-output.ts +4 -1
  1424. package/src/tools/side-effects.ts +2 -2
  1425. package/src/tools/skills/execute.ts +1 -1
  1426. package/src/tools/skills/sandbox-runner.ts +1 -6
  1427. package/src/tools/skills/skill-tool-factory.ts +32 -0
  1428. package/src/tools/subagent/spawn.ts +35 -11
  1429. package/src/tools/terminal/safe-env.ts +10 -1
  1430. package/src/tools/terminal/shell.ts +142 -88
  1431. package/src/tools/tool-approval-handler.ts +4 -70
  1432. package/src/tools/tool-input-summary.ts +10 -0
  1433. package/src/tools/types.ts +136 -183
  1434. package/src/tools/ui-surface/definitions.ts +2 -2
  1435. package/src/tts/__tests__/provider-catalog.test.ts +2 -2
  1436. package/src/tts/provider-catalog.ts +1 -1
  1437. package/src/usage/actors.ts +2 -1
  1438. package/src/usage/attribution.ts +185 -0
  1439. package/src/usage/pricing.ts +166 -0
  1440. package/src/usage/types.ts +14 -0
  1441. package/src/util/debounce.ts +0 -21
  1442. package/src/util/errors.ts +0 -8
  1443. package/src/util/json.ts +13 -0
  1444. package/src/util/log-redact.ts +0 -1
  1445. package/src/util/logger.ts +3 -3
  1446. package/src/util/platform.ts +85 -124
  1447. package/src/util/pricing.ts +158 -8
  1448. package/src/watcher/engine.ts +42 -20
  1449. package/src/watcher/watcher-store.ts +2 -1
  1450. package/src/work-items/work-item-runner.ts +15 -42
  1451. package/src/work-items/work-item-store.ts +1 -1
  1452. package/src/workspace/git-service.ts +1 -6
  1453. package/src/workspace/migrations/006-services-config.ts +10 -1
  1454. package/src/workspace/migrations/017-seed-persona-dirs.ts +1 -1
  1455. package/src/workspace/migrations/019-scope-journal-to-guardian.ts +1 -1
  1456. package/src/workspace/migrations/028-recover-conversations-from-disk-view.ts +1 -1
  1457. package/src/workspace/migrations/031-drop-user-md.ts +1 -1
  1458. package/src/workspace/migrations/045-release-notes-meet-avatar.ts +3 -4
  1459. package/src/workspace/migrations/050-seed-main-agent-opus-callsite.ts +4 -3
  1460. package/src/workspace/migrations/052-seed-default-inference-profiles.ts +150 -0
  1461. package/src/workspace/migrations/053-release-notes-acp-codex.ts +107 -0
  1462. package/src/workspace/migrations/054-seed-recall-callsite.ts +102 -0
  1463. package/src/workspace/migrations/055-release-notes-agentic-recall.ts +63 -0
  1464. package/src/workspace/migrations/056-release-notes-inference-profile-reordering.ts +65 -0
  1465. package/src/workspace/migrations/057-repair-stale-gemini-model-ids.ts +98 -0
  1466. package/src/workspace/migrations/058-release-notes-acp-sessions-ui.ts +71 -0
  1467. package/src/workspace/migrations/059-move-pid-to-workspace.ts +53 -0
  1468. package/src/workspace/migrations/060-memory-v2-init.ts +37 -0
  1469. package/src/workspace/migrations/061-move-backup-key-to-workspace.ts +59 -0
  1470. package/src/workspace/migrations/062-drop-memory-v2-edges-json.ts +27 -0
  1471. package/src/workspace/migrations/063-release-notes-dynamic-model-context.ts +70 -0
  1472. package/src/workspace/migrations/064-unwind-main-agent-opus-seed.ts +64 -0
  1473. package/src/workspace/migrations/rebuild-conversation-disk-view.ts +1 -1
  1474. package/src/workspace/migrations/registry.ts +26 -0
  1475. package/src/workspace/migrations/runner.ts +2 -2
  1476. package/src/workspace/provider-commit-message-generator.ts +4 -4
  1477. package/node_modules/@vellumai/ces-contracts/src/__tests__/trust-rules.test.ts +0 -471
  1478. package/node_modules/@vellumai/ces-contracts/src/trust-rules.ts +0 -436
  1479. package/src/__tests__/cli-command-risk-guard.test.ts +0 -368
  1480. package/src/__tests__/config-watcher-feature-flags.test.ts +0 -211
  1481. package/src/__tests__/conversation-approval-overrides.test.ts +0 -207
  1482. package/src/__tests__/conversation-host-access-routes.test.ts +0 -229
  1483. package/src/__tests__/conversation-tool-setup-batch-authorized.test.ts +0 -226
  1484. package/src/__tests__/conversation-tool-setup-side-effect-flag.test.ts +0 -167
  1485. package/src/__tests__/ephemeral-permissions.test.ts +0 -474
  1486. package/src/__tests__/extension-id-sync-guard.test.ts +0 -241
  1487. package/src/__tests__/host-browser-e2e-self-hosted.test.ts +0 -374
  1488. package/src/__tests__/native-host-marker-sync-guard.test.ts +0 -157
  1489. package/src/__tests__/pairing-concurrent.test.ts +0 -84
  1490. package/src/__tests__/pairing-routes.test.ts +0 -181
  1491. package/src/__tests__/parser.test.ts +0 -595
  1492. package/src/__tests__/permission-checker-host-gate.test.ts +0 -488
  1493. package/src/__tests__/permission-controls-v2-flag.test.ts +0 -55
  1494. package/src/__tests__/permission-mode.test.ts +0 -89
  1495. package/src/__tests__/provider-env-vars-scope.test.ts +0 -52
  1496. package/src/__tests__/risk-classifier-parity.test.ts +0 -230
  1497. package/src/__tests__/sandbox-diagnostics.test.ts +0 -138
  1498. package/src/__tests__/sandbox-host-parity.test.ts +0 -1024
  1499. package/src/__tests__/secret-detection-handler.test.ts +0 -74
  1500. package/src/__tests__/secret-scanner-executor.test.ts +0 -451
  1501. package/src/__tests__/shell-identity.test.ts +0 -236
  1502. package/src/__tests__/shell-parser-fuzz.test.ts +0 -629
  1503. package/src/__tests__/shell-parser-property.test.ts +0 -936
  1504. package/src/__tests__/starter-bundle.test.ts +0 -173
  1505. package/src/__tests__/stt-catalog-parity.test.ts +0 -282
  1506. package/src/__tests__/task-runner.test.ts +0 -224
  1507. package/src/__tests__/tcc-sandbox-deny.test.ts +0 -198
  1508. package/src/__tests__/terminal-sandbox.test.ts +0 -374
  1509. package/src/__tests__/tool-executor-shell-integration.test.ts +0 -354
  1510. package/src/__tests__/tool-notification-listener.test.ts +0 -65
  1511. package/src/__tests__/trust-store-pattern-matches.test.ts +0 -29
  1512. package/src/__tests__/trust-store.test.ts +0 -2013
  1513. package/src/__tests__/v2-consent-policy.test.ts +0 -103
  1514. package/src/browser/identifiers.ts +0 -51
  1515. package/src/cli/db.ts +0 -1
  1516. package/src/config/bundled-skills/settings/tools/avatar-get.ts +0 -40
  1517. package/src/config/bundled-skills/settings/tools/avatar-remove.ts +0 -64
  1518. package/src/config/bundled-skills/settings/tools/avatar-update.ts +0 -88
  1519. package/src/context/__tests__/microcompact.test.ts +0 -805
  1520. package/src/context/microcompact.ts +0 -443
  1521. package/src/daemon/__tests__/lifecycle-startup-ordering.test.ts +0 -127
  1522. package/src/daemon/approved-devices-store.ts +0 -110
  1523. package/src/daemon/external-skills-bootstrap.ts +0 -41
  1524. package/src/daemon/handlers/slack-channel-oauth-install.ts +0 -197
  1525. package/src/daemon/message-types/trust.ts +0 -71
  1526. package/src/daemon/pairing-store.ts +0 -229
  1527. package/src/events/tool-notification-listener.ts +0 -17
  1528. package/src/ipc/cli-server.ts +0 -252
  1529. package/src/ipc/routes/attachment.ts +0 -114
  1530. package/src/ipc/routes/browser-context.ts +0 -63
  1531. package/src/ipc/routes/browser.ts +0 -97
  1532. package/src/ipc/routes/cache.ts +0 -96
  1533. package/src/ipc/routes/get-contact.ts +0 -16
  1534. package/src/ipc/routes/index.ts +0 -35
  1535. package/src/ipc/routes/list-clients.ts +0 -31
  1536. package/src/ipc/routes/merge-contacts.ts +0 -17
  1537. package/src/ipc/routes/notification.ts +0 -133
  1538. package/src/ipc/routes/rename-conversation.ts +0 -59
  1539. package/src/ipc/routes/search-contacts.ts +0 -19
  1540. package/src/ipc/routes/task-queue.ts +0 -226
  1541. package/src/ipc/routes/task.ts +0 -173
  1542. package/src/ipc/routes/upsert-contact.ts +0 -25
  1543. package/src/ipc/routes/wake-conversation.ts +0 -19
  1544. package/src/memory/db.ts +0 -23
  1545. package/src/permissions/arg-parser.test.ts +0 -161
  1546. package/src/permissions/arg-parser.ts +0 -141
  1547. package/src/permissions/bash-risk-classifier.test.ts +0 -1620
  1548. package/src/permissions/bash-risk-classifier.ts +0 -950
  1549. package/src/permissions/command-registry.test.ts +0 -774
  1550. package/src/permissions/command-registry.ts +0 -1005
  1551. package/src/permissions/defaults.ts +0 -314
  1552. package/src/permissions/file-risk-classifier.test.ts +0 -535
  1553. package/src/permissions/file-risk-classifier.ts +0 -274
  1554. package/src/permissions/permission-mode.ts +0 -24
  1555. package/src/permissions/schedule-risk-classifier.test.ts +0 -129
  1556. package/src/permissions/schedule-risk-classifier.ts +0 -85
  1557. package/src/permissions/shell-identity.ts +0 -297
  1558. package/src/permissions/skill-risk-classifier.test.ts +0 -311
  1559. package/src/permissions/skill-risk-classifier.ts +0 -214
  1560. package/src/permissions/trust-client.ts +0 -359
  1561. package/src/permissions/trust-store-interface.ts +0 -100
  1562. package/src/permissions/trust-store.ts +0 -1330
  1563. package/src/permissions/v2-consent-policy.ts +0 -87
  1564. package/src/permissions/web-risk-classifier.test.ts +0 -170
  1565. package/src/permissions/web-risk-classifier.ts +0 -89
  1566. package/src/runtime/__tests__/browser-extension-pair-routes.test.ts +0 -715
  1567. package/src/runtime/__tests__/capability-tokens.test.ts +0 -258
  1568. package/src/runtime/__tests__/chrome-extension-registry.test.ts +0 -518
  1569. package/src/runtime/__tests__/client-registry.test.ts +0 -293
  1570. package/src/runtime/actor-refresh-token-store.ts +0 -156
  1571. package/src/runtime/actor-token-store.ts +0 -207
  1572. package/src/runtime/auth/__tests__/credential-service.test.ts +0 -264
  1573. package/src/runtime/auth/credential-service.ts +0 -352
  1574. package/src/runtime/chrome-extension-registry.ts +0 -368
  1575. package/src/runtime/client-registry.ts +0 -261
  1576. package/src/runtime/conversation-approval-overrides.ts +0 -86
  1577. package/src/runtime/routes/browser-extension-pair-routes.ts +0 -575
  1578. package/src/runtime/routes/channel-routes.ts +0 -112
  1579. package/src/runtime/routes/contact-routes.test.ts +0 -298
  1580. package/src/runtime/routes/guardian-bootstrap-routes.ts +0 -175
  1581. package/src/runtime/routes/guardian-refresh-routes.ts +0 -79
  1582. package/src/runtime/routes/inbound-stages/verification-intercept.ts +0 -336
  1583. package/src/runtime/routes/invite-routes.ts +0 -280
  1584. package/src/runtime/routes/pairing-routes.ts +0 -431
  1585. package/src/runtime/routes/playground/deps.ts +0 -56
  1586. package/src/runtime/services/__tests__/analyze-deps-singleton.test.ts +0 -67
  1587. package/src/runtime/services/analyze-deps-singleton.ts +0 -32
  1588. package/src/tasks/ephemeral-permissions.ts +0 -55
  1589. package/src/tools/secret-detection-handler.ts +0 -359
  1590. package/src/tools/terminal/backends/native.ts +0 -327
  1591. package/src/tools/terminal/backends/types.ts +0 -37
  1592. package/src/tools/terminal/parser.ts +0 -623
  1593. package/src/tools/terminal/sandbox-diagnostics.ts +0 -87
  1594. package/src/tools/terminal/sandbox.ts +0 -40
  1595. package/src/types/qrcode.d.ts +0 -13
  1596. package/src/util/network-info.ts +0 -55
  1597. /package/node_modules/@vellumai/{ces-contracts → ces-client}/tsconfig.json +0 -0
  1598. /package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/__tests__/grants.test.ts +0 -0
  1599. /package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/error.ts +0 -0
  1600. /package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/grants.ts +0 -0
  1601. /package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/handles.ts +0 -0
  1602. /package/node_modules/@vellumai/{ces-contracts → service-contracts}/src/rendering.ts +0 -0
  1603. /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.1
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
@@ -358,6 +465,13 @@ paths:
358
465
  required:
359
466
  - apps
360
467
  additionalProperties: false
468
+ parameters:
469
+ - name: conversationId
470
+ in: query
471
+ required: false
472
+ schema:
473
+ type: string
474
+ description: Filter apps by conversation ID
361
475
  /v1/apps/{appId}/dist/{filename}:
362
476
  get:
363
477
  operationId: apps_by_appId_dist_by_filename_get
@@ -432,6 +546,11 @@ paths:
432
546
  required: true
433
547
  schema:
434
548
  type: string
549
+ - name: method
550
+ in: query
551
+ required: false
552
+ schema:
553
+ type: string
435
554
  post:
436
555
  operationId: apps_by_id_data_post
437
556
  summary: Mutate app data
@@ -500,6 +619,16 @@ paths:
500
619
  required: true
501
620
  schema:
502
621
  type: string
622
+ - name: fromCommit
623
+ in: query
624
+ required: true
625
+ schema:
626
+ type: string
627
+ - name: toCommit
628
+ in: query
629
+ required: false
630
+ schema:
631
+ type: string
503
632
  /v1/apps/{id}/history:
504
633
  get:
505
634
  operationId: apps_by_id_history_get
@@ -530,6 +659,11 @@ paths:
530
659
  required: true
531
660
  schema:
532
661
  type: string
662
+ - name: limit
663
+ in: query
664
+ required: false
665
+ schema:
666
+ type: number
533
667
  /v1/apps/{id}/open:
534
668
  post:
535
669
  operationId: apps_by_id_open_post
@@ -905,7 +1039,6 @@ paths:
905
1039
  description: Canonical JSON payload to sign
906
1040
  signature:
907
1041
  type: string
908
- description: Ed25519 signature (optional, completes signing)
909
1042
  keyId:
910
1043
  type: string
911
1044
  publicKey:
@@ -931,7 +1064,7 @@ paths:
931
1064
  tags:
932
1065
  - attachments
933
1066
  responses:
934
- "200":
1067
+ "204":
935
1068
  description: Successful response
936
1069
  requestBody:
937
1070
  required: true
@@ -996,6 +1129,11 @@ paths:
996
1129
  filePath:
997
1130
  type: string
998
1131
  description: On-disk file path (file-backed upload)
1132
+ trustedSource:
1133
+ type: boolean
1134
+ description:
1135
+ Set by the gateway when the file came from a guardian-bound channel actor. Honored only when the request is
1136
+ authenticated as a gateway service token; ignored otherwise.
999
1137
  required:
1000
1138
  - filename
1001
1139
  - mimeType
@@ -1026,8 +1164,10 @@ paths:
1026
1164
  kind:
1027
1165
  type: string
1028
1166
  data:
1029
- type: string
1030
- description: Base64-encoded content
1167
+ anyOf:
1168
+ - type: string
1169
+ description: Base64-encoded content
1170
+ - type: "null"
1031
1171
  fileBacked:
1032
1172
  type: boolean
1033
1173
  required:
@@ -1037,7 +1177,6 @@ paths:
1037
1177
  - sizeBytes
1038
1178
  - kind
1039
1179
  - data
1040
- - fileBacked
1041
1180
  additionalProperties: false
1042
1181
  parameters:
1043
1182
  - name: id
@@ -1055,20 +1194,125 @@ paths:
1055
1194
  responses:
1056
1195
  "200":
1057
1196
  description: Successful response
1197
+ "416":
1198
+ description: Range Not Satisfiable
1058
1199
  parameters:
1059
1200
  - name: id
1060
1201
  in: path
1061
1202
  required: true
1062
1203
  schema:
1063
1204
  type: string
1064
- /v1/audio/{id}:
1205
+ /v1/attachments/lookup:
1206
+ post:
1207
+ operationId: attachments_lookup_post
1208
+ summary: Look up attachment by source path
1209
+ description: Search for a previously registered attachment by its original source path, scoped to a conversation.
1210
+ tags:
1211
+ - attachments
1212
+ responses:
1213
+ "200":
1214
+ description: Successful response
1215
+ content:
1216
+ application/json:
1217
+ schema:
1218
+ type: object
1219
+ properties:
1220
+ filePath:
1221
+ type: string
1222
+ required:
1223
+ - filePath
1224
+ additionalProperties: false
1225
+ requestBody:
1226
+ required: true
1227
+ content:
1228
+ application/json:
1229
+ schema:
1230
+ type: object
1231
+ properties:
1232
+ sourcePath:
1233
+ type: string
1234
+ description: Original source path of the file
1235
+ conversationId:
1236
+ type: string
1237
+ description: Conversation ID to search within
1238
+ required:
1239
+ - sourcePath
1240
+ - conversationId
1241
+ additionalProperties: false
1242
+ /v1/attachments/register:
1243
+ post:
1244
+ operationId: attachments_register_post
1245
+ summary: Register a file-backed attachment
1246
+ description:
1247
+ Register an on-disk file as a file-backed attachment. The file must be within the workspace directory and
1248
+ must remain on disk for the lifetime of the attachment.
1249
+ tags:
1250
+ - attachments
1251
+ responses:
1252
+ "200":
1253
+ description: Successful response
1254
+ content:
1255
+ application/json:
1256
+ schema:
1257
+ type: object
1258
+ properties:
1259
+ id:
1260
+ type: string
1261
+ originalFilename:
1262
+ type: string
1263
+ mimeType:
1264
+ type: string
1265
+ sizeBytes:
1266
+ type: number
1267
+ kind:
1268
+ type: string
1269
+ filePath:
1270
+ type: string
1271
+ createdAt:
1272
+ type: number
1273
+ required:
1274
+ - id
1275
+ - originalFilename
1276
+ - mimeType
1277
+ - sizeBytes
1278
+ - kind
1279
+ - filePath
1280
+ - createdAt
1281
+ additionalProperties: false
1282
+ requestBody:
1283
+ required: true
1284
+ content:
1285
+ application/json:
1286
+ schema:
1287
+ type: object
1288
+ properties:
1289
+ path:
1290
+ type: string
1291
+ description: Absolute path to the file
1292
+ mimeType:
1293
+ type: string
1294
+ description: MIME type of the file
1295
+ filename:
1296
+ type: string
1297
+ description: Display filename (defaults to basename of path)
1298
+ required:
1299
+ - path
1300
+ - mimeType
1301
+ additionalProperties: false
1302
+ /v1/audio/{audioId}:
1065
1303
  get:
1066
- operationId: audio_by_id_get
1304
+ operationId: audio_by_audioId_get
1305
+ summary: Get audio segment
1306
+ description:
1307
+ Retrieve a previously stored audio segment by ID. Unauthenticated — the audioId is an unguessable UUID
1308
+ capability token.
1309
+ tags:
1310
+ - audio
1067
1311
  responses:
1068
1312
  "200":
1069
1313
  description: Successful response
1070
1314
  parameters:
1071
- - name: id
1315
+ - name: audioId
1072
1316
  in: path
1073
1317
  required: true
1074
1318
  schema:
@@ -1083,6 +1327,26 @@ paths:
1083
1327
  responses:
1084
1328
  "200":
1085
1329
  description: Successful response
1330
+ /v1/avatar/notify-updated:
1331
+ post:
1332
+ operationId: avatar_notifyupdated_post
1333
+ summary: Notify avatar updated
1334
+ description: Publish an avatar_updated SSE event to connected clients.
1335
+ tags:
1336
+ - avatar
1337
+ responses:
1338
+ "200":
1339
+ description: Successful response
1340
+ content:
1341
+ application/json:
1342
+ schema:
1343
+ type: object
1344
+ properties:
1345
+ ok:
1346
+ type: boolean
1347
+ required:
1348
+ - ok
1349
+ additionalProperties: false
1086
1350
  /v1/avatar/render-from-traits:
1087
1351
  post:
1088
1352
  operationId: avatar_renderfromtraits_post
@@ -1121,17 +1385,13 @@ paths:
1121
1385
  - eyeStyle
1122
1386
  - color
1123
1387
  additionalProperties: false
1124
- /v1/backups:
1388
+ /v1/background-tools:
1125
1389
  get:
1126
- operationId: backups_get
1127
- summary: List backup snapshots
1128
- description:
1129
- Lists local and offsite backup snapshots. Each offsite destination includes a `reachable` flag reflecting
1130
- whether the backing volume is currently available. When `backup.offsite.enabled` is false the `offsite` array is
1131
- empty and `offsiteEnabled` is false — clients should gate offsite UI on `offsiteEnabled` rather than
1132
- `offsite.length`.
1390
+ operationId: backgroundtools_get
1391
+ summary: List active background tools
1392
+ description: List all active background tool executions, optionally filtered by conversationId.
1133
1393
  tags:
1134
- - backups
1394
+ - background-tools
1135
1395
  responses:
1136
1396
  "200":
1137
1397
  description: Successful response
@@ -1140,45 +1400,128 @@ paths:
1140
1400
  schema:
1141
1401
  type: object
1142
1402
  properties:
1143
- local:
1144
- type: array
1145
- items: {}
1146
- offsite:
1403
+ tools:
1147
1404
  type: array
1148
1405
  items:
1149
1406
  type: object
1150
1407
  properties:
1151
- destination:
1152
- type: object
1153
- properties: {}
1154
- additionalProperties: {}
1155
- snapshots:
1156
- type: array
1157
- items: {}
1158
- reachable:
1159
- type: boolean
1408
+ id:
1409
+ type: string
1410
+ toolName:
1411
+ type: string
1412
+ conversationId:
1413
+ type: string
1414
+ command:
1415
+ type: string
1416
+ startedAt:
1417
+ type: number
1160
1418
  required:
1161
- - destination
1162
- - snapshots
1163
- - reachable
1419
+ - id
1420
+ - toolName
1421
+ - conversationId
1422
+ - command
1423
+ - startedAt
1164
1424
  additionalProperties: false
1165
- offsiteEnabled:
1166
- type: boolean
1167
- nextRunAt:
1168
- anyOf:
1169
- - type: string
1170
- - type: "null"
1171
1425
  required:
1172
- - local
1173
- - offsite
1174
- - offsiteEnabled
1175
- - nextRunAt
1426
+ - tools
1176
1427
  additionalProperties: false
1177
- /v1/backups/create:
1428
+ parameters:
1429
+ - name: conversationId
1430
+ in: query
1431
+ required: false
1432
+ schema:
1433
+ type: string
1434
+ description: Filter by conversation ID
1435
+ /v1/background-tools/cancel:
1178
1436
  post:
1179
- operationId: backups_create_post
1180
- summary: Create a backup snapshot immediately
1181
- description:
1437
+ operationId: backgroundtools_cancel_post
1438
+ summary: Cancel a background tool
1439
+ description: Cancel an active background tool execution by ID.
1440
+ tags:
1441
+ - background-tools
1442
+ responses:
1443
+ "200":
1444
+ description: Successful response
1445
+ content:
1446
+ application/json:
1447
+ schema:
1448
+ type: object
1449
+ properties:
1450
+ cancelled:
1451
+ type: boolean
1452
+ required:
1453
+ - cancelled
1454
+ additionalProperties: false
1455
+ requestBody:
1456
+ required: true
1457
+ content:
1458
+ application/json:
1459
+ schema:
1460
+ type: object
1461
+ properties:
1462
+ id:
1463
+ type: string
1464
+ required:
1465
+ - id
1466
+ additionalProperties: false
1467
+ /v1/backups:
1468
+ get:
1469
+ operationId: backups_get
1470
+ summary: List backup snapshots
1471
+ description:
1472
+ Lists local and offsite backup snapshots. Each offsite destination includes a `reachable` flag reflecting
1473
+ whether the backing volume is currently available. When `backup.offsite.enabled` is false the `offsite` array is
1474
+ empty and `offsiteEnabled` is false — clients should gate offsite UI on `offsiteEnabled` rather than
1475
+ `offsite.length`.
1476
+ tags:
1477
+ - backups
1478
+ responses:
1479
+ "200":
1480
+ description: Successful response
1481
+ content:
1482
+ application/json:
1483
+ schema:
1484
+ type: object
1485
+ properties:
1486
+ local:
1487
+ type: array
1488
+ items: {}
1489
+ offsite:
1490
+ type: array
1491
+ items:
1492
+ type: object
1493
+ properties:
1494
+ destination:
1495
+ type: object
1496
+ properties: {}
1497
+ additionalProperties: {}
1498
+ snapshots:
1499
+ type: array
1500
+ items: {}
1501
+ reachable:
1502
+ type: boolean
1503
+ required:
1504
+ - destination
1505
+ - snapshots
1506
+ - reachable
1507
+ additionalProperties: false
1508
+ offsiteEnabled:
1509
+ type: boolean
1510
+ nextRunAt:
1511
+ anyOf:
1512
+ - type: string
1513
+ - type: "null"
1514
+ required:
1515
+ - local
1516
+ - offsite
1517
+ - offsiteEnabled
1518
+ - nextRunAt
1519
+ additionalProperties: false
1520
+ /v1/backups/create:
1521
+ post:
1522
+ operationId: backups_create_post
1523
+ summary: Create a backup snapshot immediately
1524
+ description:
1182
1525
  Trigger a manual snapshot. Bypasses the enabled and interval gates, but honors the in-progress mutex — a
1183
1526
  concurrent caller receives 409.
1184
1527
  tags:
@@ -1332,12 +1675,93 @@ paths:
1332
1675
  get:
1333
1676
  operationId: braingraphui_get
1334
1677
  summary: Serve brain graph UI
1335
- description: Return the brain-graph HTML visualization page with an embedded auth token.
1678
+ description: Return the brain-graph HTML visualization page. The gateway injects an auth token before serving.
1336
1679
  tags:
1337
1680
  - brain-graph
1338
1681
  responses:
1339
1682
  "200":
1340
1683
  description: Successful response
1684
+ /v1/browser/execute:
1685
+ post:
1686
+ operationId: browser_execute_post
1687
+ summary: Execute a browser operation
1688
+ description: Invoke a browser operation (navigate, click, type, screenshot, etc.) via the headless browser subsystem.
1689
+ tags:
1690
+ - browser
1691
+ responses:
1692
+ "200":
1693
+ description: Successful response
1694
+ content:
1695
+ application/json:
1696
+ schema:
1697
+ type: object
1698
+ properties:
1699
+ content:
1700
+ type: string
1701
+ isError:
1702
+ type: boolean
1703
+ screenshots:
1704
+ type: array
1705
+ items:
1706
+ type: object
1707
+ properties:
1708
+ mediaType:
1709
+ type: string
1710
+ data:
1711
+ type: string
1712
+ required:
1713
+ - mediaType
1714
+ - data
1715
+ additionalProperties: false
1716
+ required:
1717
+ - content
1718
+ - isError
1719
+ additionalProperties: false
1720
+ requestBody:
1721
+ required: true
1722
+ content:
1723
+ application/json:
1724
+ schema:
1725
+ type: object
1726
+ properties:
1727
+ operation:
1728
+ type: string
1729
+ enum:
1730
+ - navigate
1731
+ - snapshot
1732
+ - screenshot
1733
+ - close
1734
+ - attach
1735
+ - detach
1736
+ - click
1737
+ - type
1738
+ - press_key
1739
+ - scroll
1740
+ - select_option
1741
+ - hover
1742
+ - wait_for
1743
+ - extract
1744
+ - wait_for_download
1745
+ - fill_credential
1746
+ - status
1747
+ input:
1748
+ default: {}
1749
+ type: object
1750
+ propertyNames:
1751
+ type: string
1752
+ additionalProperties: {}
1753
+ sessionId:
1754
+ default: default
1755
+ type: string
1756
+ minLength: 1
1757
+ conversationId:
1758
+ type: string
1759
+ minLength: 1
1760
+ required:
1761
+ - operation
1762
+ - input
1763
+ - sessionId
1764
+ additionalProperties: false
1341
1765
  /v1/btw:
1342
1766
  post:
1343
1767
  operationId: btw_post
@@ -1367,9 +1791,114 @@ paths:
1367
1791
  - conversationKey
1368
1792
  - content
1369
1793
  additionalProperties: false
1370
- /v1/calls/{id}:
1794
+ /v1/cache/delete:
1795
+ post:
1796
+ operationId: cache_delete_post
1797
+ summary: Delete a cache entry
1798
+ description: Remove a cached value by key.
1799
+ tags:
1800
+ - cache
1801
+ responses:
1802
+ "200":
1803
+ description: Successful response
1804
+ content:
1805
+ application/json:
1806
+ schema:
1807
+ type: object
1808
+ properties:
1809
+ deleted:
1810
+ type: boolean
1811
+ required:
1812
+ - deleted
1813
+ additionalProperties: false
1814
+ requestBody:
1815
+ required: true
1816
+ content:
1817
+ application/json:
1818
+ schema:
1819
+ type: object
1820
+ properties:
1821
+ key:
1822
+ type: string
1823
+ minLength: 1
1824
+ required:
1825
+ - key
1826
+ additionalProperties: false
1827
+ /v1/cache/get:
1828
+ post:
1829
+ operationId: cache_get_post
1830
+ summary: Get a cache entry
1831
+ description: Retrieve a cached value by key. Returns null if not found.
1832
+ tags:
1833
+ - cache
1834
+ responses:
1835
+ "200":
1836
+ description: Successful response
1837
+ content:
1838
+ application/json:
1839
+ schema:
1840
+ anyOf:
1841
+ - type: object
1842
+ properties:
1843
+ data: {}
1844
+ required:
1845
+ - data
1846
+ additionalProperties: false
1847
+ - type: "null"
1848
+ requestBody:
1849
+ required: true
1850
+ content:
1851
+ application/json:
1852
+ schema:
1853
+ type: object
1854
+ properties:
1855
+ key:
1856
+ type: string
1857
+ minLength: 1
1858
+ required:
1859
+ - key
1860
+ additionalProperties: false
1861
+ /v1/cache/set:
1862
+ post:
1863
+ operationId: cache_set_post
1864
+ summary: Set a cache entry
1865
+ description: Store a value in the daemon's in-memory cache, optionally with a TTL.
1866
+ tags:
1867
+ - cache
1868
+ responses:
1869
+ "200":
1870
+ description: Successful response
1871
+ content:
1872
+ application/json:
1873
+ schema:
1874
+ type: object
1875
+ properties:
1876
+ key:
1877
+ type: string
1878
+ required:
1879
+ - key
1880
+ additionalProperties: false
1881
+ requestBody:
1882
+ required: true
1883
+ content:
1884
+ application/json:
1885
+ schema:
1886
+ type: object
1887
+ properties:
1888
+ data: {}
1889
+ key:
1890
+ type: string
1891
+ minLength: 1
1892
+ ttl_ms:
1893
+ type: integer
1894
+ exclusiveMinimum: 0
1895
+ maximum: 9007199254740991
1896
+ required:
1897
+ - data
1898
+ additionalProperties: false
1899
+ /v1/calls/{callSessionId}:
1371
1900
  get:
1372
- operationId: calls_by_id_get
1901
+ operationId: calls_by_callSessionId_get
1373
1902
  summary: Get call status
1374
1903
  description: Return the current status and details of a call session.
1375
1904
  tags:
@@ -1399,15 +1928,23 @@ paths:
1399
1928
  task:
1400
1929
  type: string
1401
1930
  startedAt:
1402
- type: string
1931
+ anyOf:
1932
+ - type: string
1933
+ - type: "null"
1403
1934
  endedAt:
1404
- type: string
1935
+ anyOf:
1936
+ - type: string
1937
+ - type: "null"
1405
1938
  lastError:
1406
- type: string
1939
+ anyOf:
1940
+ - type: string
1941
+ - type: "null"
1407
1942
  pendingQuestion:
1408
- type: object
1409
- properties: {}
1410
- additionalProperties: {}
1943
+ anyOf:
1944
+ - type: object
1945
+ properties: {}
1946
+ additionalProperties: {}
1947
+ - type: "null"
1411
1948
  createdAt:
1412
1949
  type: string
1413
1950
  updatedAt:
@@ -1429,14 +1966,14 @@ paths:
1429
1966
  - updatedAt
1430
1967
  additionalProperties: false
1431
1968
  parameters:
1432
- - name: id
1969
+ - name: callSessionId
1433
1970
  in: path
1434
1971
  required: true
1435
1972
  schema:
1436
1973
  type: string
1437
- /v1/calls/{id}/answer:
1974
+ /v1/calls/{callSessionId}/answer:
1438
1975
  post:
1439
- operationId: calls_by_id_answer_post
1976
+ operationId: calls_by_callSessionId_answer_post
1440
1977
  summary: Answer a pending call question
1441
1978
  description: Provide an answer to a pending question during an active call.
1442
1979
  tags:
@@ -1458,7 +1995,7 @@ paths:
1458
1995
  - questionId
1459
1996
  additionalProperties: false
1460
1997
  parameters:
1461
- - name: id
1998
+ - name: callSessionId
1462
1999
  in: path
1463
2000
  required: true
1464
2001
  schema:
@@ -1478,11 +2015,10 @@ paths:
1478
2015
  description: ID of the pending question
1479
2016
  required:
1480
2017
  - answer
1481
- - pendingQuestionId
1482
2018
  additionalProperties: false
1483
- /v1/calls/{id}/cancel:
2019
+ /v1/calls/{callSessionId}/cancel:
1484
2020
  post:
1485
- operationId: calls_by_id_cancel_post
2021
+ operationId: calls_by_callSessionId_cancel_post
1486
2022
  summary: Cancel a call
1487
2023
  description: Cancel an active or pending call.
1488
2024
  tags:
@@ -1504,7 +2040,7 @@ paths:
1504
2040
  - status
1505
2041
  additionalProperties: false
1506
2042
  parameters:
1507
- - name: id
2043
+ - name: callSessionId
1508
2044
  in: path
1509
2045
  required: true
1510
2046
  schema:
@@ -1519,12 +2055,10 @@ paths:
1519
2055
  reason:
1520
2056
  type: string
1521
2057
  description: Cancellation reason
1522
- required:
1523
- - reason
1524
2058
  additionalProperties: false
1525
- /v1/calls/{id}/instruction:
2059
+ /v1/calls/{callSessionId}/instruction:
1526
2060
  post:
1527
- operationId: calls_by_id_instruction_post
2061
+ operationId: calls_by_callSessionId_instruction_post
1528
2062
  summary: Relay instruction to active call
1529
2063
  description: Send a real-time instruction to an active call.
1530
2064
  tags:
@@ -1543,7 +2077,7 @@ paths:
1543
2077
  - ok
1544
2078
  additionalProperties: false
1545
2079
  parameters:
1546
- - name: id
2080
+ - name: callSessionId
1547
2081
  in: path
1548
2082
  required: true
1549
2083
  schema:
@@ -1569,7 +2103,7 @@ paths:
1569
2103
  tags:
1570
2104
  - calls
1571
2105
  responses:
1572
- "200":
2106
+ "201":
1573
2107
  description: Successful response
1574
2108
  content:
1575
2109
  application/json:
@@ -1634,19 +2168,6 @@ paths:
1634
2168
  responses:
1635
2169
  "200":
1636
2170
  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
2171
  requestBody:
1651
2172
  required: true
1652
2173
  content:
@@ -1792,7 +2313,7 @@ paths:
1792
2313
  tags:
1793
2314
  - channels
1794
2315
  responses:
1795
- "200":
2316
+ "204":
1796
2317
  description: Successful response
1797
2318
  /v1/channels/inbound:
1798
2319
  post:
@@ -1894,22 +2415,87 @@ paths:
1894
2415
  responses:
1895
2416
  "200":
1896
2417
  description: Successful response
1897
- /v1/config:
2418
+ /v1/clients:
1898
2419
  get:
1899
- operationId: config_get
1900
- summary: Get full config
1901
- description: Return the raw settings.json configuration object.
1902
- tags:
1903
- - config
1904
- responses:
1905
- "200":
1906
- description: Successful response
1907
- patch:
1908
- operationId: config_patch
1909
- summary: Patch config
1910
- description: Deep-merge a partial JSON object into the settings.json configuration.
2420
+ operationId: clients_get
2421
+ summary: List connected clients
2422
+ description: Return all connected clients, optionally filtered by capability.
1911
2423
  tags:
1912
- - config
2424
+ - clients
2425
+ responses:
2426
+ "200":
2427
+ description: Successful response
2428
+ content:
2429
+ application/json:
2430
+ schema:
2431
+ type: object
2432
+ properties:
2433
+ clients:
2434
+ type: array
2435
+ items:
2436
+ type: object
2437
+ properties: {}
2438
+ additionalProperties: {}
2439
+ required:
2440
+ - clients
2441
+ additionalProperties: false
2442
+ parameters:
2443
+ - name: capability
2444
+ in: query
2445
+ required: false
2446
+ schema:
2447
+ type: string
2448
+ description: Filter clients by a specific capability.
2449
+ /v1/clients/disconnect:
2450
+ post:
2451
+ operationId: clients_disconnect_post
2452
+ summary: Force-disconnect a client
2453
+ description: Dispose all hub subscribers for the given clientId, forcibly closing their SSE streams.
2454
+ tags:
2455
+ - clients
2456
+ responses:
2457
+ "200":
2458
+ description: Successful response
2459
+ content:
2460
+ application/json:
2461
+ schema:
2462
+ type: object
2463
+ properties:
2464
+ disconnected:
2465
+ type: number
2466
+ description: Number of disposed subscribers.
2467
+ required:
2468
+ - disconnected
2469
+ additionalProperties: false
2470
+ requestBody:
2471
+ required: true
2472
+ content:
2473
+ application/json:
2474
+ schema:
2475
+ type: object
2476
+ properties:
2477
+ clientId:
2478
+ type: string
2479
+ description: The client UUID to disconnect.
2480
+ required:
2481
+ - clientId
2482
+ additionalProperties: false
2483
+ /v1/config:
2484
+ get:
2485
+ operationId: config_get
2486
+ summary: Get full config
2487
+ description: Return the raw settings.json configuration object.
2488
+ tags:
2489
+ - config
2490
+ responses:
2491
+ "200":
2492
+ description: Successful response
2493
+ patch:
2494
+ operationId: config_patch
2495
+ summary: Patch config
2496
+ description: Deep-merge a partial JSON object into the settings.json configuration.
2497
+ tags:
2498
+ - config
1913
2499
  responses:
1914
2500
  "200":
1915
2501
  description: Successful response
@@ -1946,6 +2532,34 @@ paths:
1946
2532
  required:
1947
2533
  - provider
1948
2534
  additionalProperties: false
2535
+ /v1/config/llm/call-sites:
2536
+ get:
2537
+ operationId: config_llm_callsites_get
2538
+ summary: List LLM call sites
2539
+ description:
2540
+ Returns the full catalog of LLM call sites with display names, descriptions, and domain groupings. Used by
2541
+ clients to render the per-call-site override settings UI.
2542
+ tags:
2543
+ - config
2544
+ responses:
2545
+ "200":
2546
+ description: Successful response
2547
+ /v1/config/llm/profiles/{name}:
2548
+ put:
2549
+ operationId: config_llm_profiles_by_name_put
2550
+ summary: Replace an inference profile
2551
+ description: Replace the settings-UI-managed leaves of a single llm.profiles entry while preserving non-UI leaves.
2552
+ tags:
2553
+ - config
2554
+ responses:
2555
+ "200":
2556
+ description: Successful response
2557
+ parameters:
2558
+ - name: name
2559
+ in: path
2560
+ required: true
2561
+ schema:
2562
+ type: string
1949
2563
  /v1/config/platform:
1950
2564
  get:
1951
2565
  operationId: config_platform_get
@@ -2022,7 +2636,7 @@ paths:
2022
2636
  description: Pending interaction request ID
2023
2637
  decision:
2024
2638
  type: string
2025
- description: "One of: allow, allow_10m, allow_conversation, deny, always_allow, always_deny"
2639
+ description: "One of: allow, deny"
2026
2640
  selectedPattern:
2027
2641
  type: string
2028
2642
  description: Allowlist pattern for persistent decisions
@@ -2033,6 +2647,76 @@ paths:
2033
2647
  - requestId
2034
2648
  - decision
2035
2649
  additionalProperties: false
2650
+ /v1/consolidation/config:
2651
+ get:
2652
+ operationId: consolidation_config_get
2653
+ summary: Get consolidation config
2654
+ description: Return the current memory v2 consolidation schedule configuration.
2655
+ tags:
2656
+ - consolidation
2657
+ responses:
2658
+ "200":
2659
+ description: Successful response
2660
+ content:
2661
+ application/json:
2662
+ schema:
2663
+ type: object
2664
+ properties:
2665
+ available:
2666
+ type: boolean
2667
+ enabled:
2668
+ type: boolean
2669
+ intervalMs:
2670
+ type: number
2671
+ nextRunAt:
2672
+ anyOf:
2673
+ - type: number
2674
+ - type: "null"
2675
+ lastRunAt:
2676
+ anyOf:
2677
+ - type: number
2678
+ - type: "null"
2679
+ success:
2680
+ type: boolean
2681
+ required:
2682
+ - available
2683
+ - enabled
2684
+ - intervalMs
2685
+ - nextRunAt
2686
+ - lastRunAt
2687
+ - success
2688
+ additionalProperties: false
2689
+ /v1/consolidation/run-now:
2690
+ post:
2691
+ operationId: consolidation_runnow_post
2692
+ summary: Run consolidation now
2693
+ description:
2694
+ Enqueue an immediate memory v2 consolidation job. Returns once the job is queued; the job itself runs
2695
+ through the memory jobs worker.
2696
+ tags:
2697
+ - consolidation
2698
+ responses:
2699
+ "200":
2700
+ description: Successful response
2701
+ content:
2702
+ application/json:
2703
+ schema:
2704
+ type: object
2705
+ properties:
2706
+ success:
2707
+ type: boolean
2708
+ ran:
2709
+ type: boolean
2710
+ description: Whether a job was enqueued
2711
+ jobId:
2712
+ anyOf:
2713
+ - type: string
2714
+ - type: "null"
2715
+ required:
2716
+ - success
2717
+ - ran
2718
+ - jobId
2719
+ additionalProperties: false
2036
2720
  /v1/contact-channels/{contactChannelId}:
2037
2721
  patch:
2038
2722
  operationId: contactchannels_by_contactChannelId_patch
@@ -2111,6 +2795,43 @@ paths:
2111
2795
  - ok
2112
2796
  - contacts
2113
2797
  additionalProperties: false
2798
+ parameters:
2799
+ - name: limit
2800
+ in: query
2801
+ required: false
2802
+ schema:
2803
+ type: integer
2804
+ description: Max contacts to return (default 50)
2805
+ - name: role
2806
+ in: query
2807
+ required: false
2808
+ schema:
2809
+ type: string
2810
+ description: Filter by role (e.g. guardian)
2811
+ - name: contactType
2812
+ in: query
2813
+ required: false
2814
+ schema:
2815
+ type: string
2816
+ description: Filter by contact type (human or assistant)
2817
+ - name: query
2818
+ in: query
2819
+ required: false
2820
+ schema:
2821
+ type: string
2822
+ description: Full-text search query
2823
+ - name: channelAddress
2824
+ in: query
2825
+ required: false
2826
+ schema:
2827
+ type: string
2828
+ description: Filter by channel address
2829
+ - name: channelType
2830
+ in: query
2831
+ required: false
2832
+ schema:
2833
+ type: string
2834
+ description: Filter by channel type
2114
2835
  post:
2115
2836
  operationId: contacts_post
2116
2837
  summary: Create or update a contact
@@ -2172,7 +2893,7 @@ paths:
2172
2893
  tags:
2173
2894
  - contacts
2174
2895
  responses:
2175
- "200":
2896
+ "204":
2176
2897
  description: Successful response
2177
2898
  parameters:
2178
2899
  - name: id
@@ -2217,56 +2938,6 @@ paths:
2217
2938
  required: true
2218
2939
  schema:
2219
2940
  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.
2225
- tags:
2226
- - contacts
2227
- responses:
2228
- "200":
2229
- description: Successful response
2230
- content:
2231
- application/json:
2232
- schema:
2233
- type: object
2234
- properties:
2235
- ok:
2236
- type: boolean
2237
- contact:
2238
- type: object
2239
- properties: {}
2240
- additionalProperties: {}
2241
- description: Updated guardian contact
2242
- required:
2243
- - 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
2941
  /v1/contacts/invites:
2271
2942
  get:
2272
2943
  operationId: contacts_invites_get
@@ -2312,7 +2983,7 @@ paths:
2312
2983
  tags:
2313
2984
  - contacts
2314
2985
  responses:
2315
- "200":
2986
+ "201":
2316
2987
  description: Successful response
2317
2988
  content:
2318
2989
  application/json:
@@ -2330,6 +3001,8 @@ paths:
2330
3001
  - ok
2331
3002
  - invite
2332
3003
  additionalProperties: false
3004
+ "400":
3005
+ description: Invalid invite parameters
2333
3006
  requestBody:
2334
3007
  required: true
2335
3008
  content:
@@ -2377,6 +3050,8 @@ paths:
2377
3050
  responses:
2378
3051
  "200":
2379
3052
  description: Successful response
3053
+ "404":
3054
+ description: Invite not found
2380
3055
  parameters:
2381
3056
  - name: id
2382
3057
  in: path
@@ -2407,6 +3082,8 @@ paths:
2407
3082
  - ok
2408
3083
  - callSid
2409
3084
  additionalProperties: false
3085
+ "400":
3086
+ description: Invite not eligible for outbound call
2410
3087
  parameters:
2411
3088
  - name: id
2412
3089
  in: path
@@ -2447,6 +3124,8 @@ paths:
2447
3124
  - type
2448
3125
  - memberId
2449
3126
  additionalProperties: false
3127
+ "400":
3128
+ description: Invalid redemption parameters or failed redemption
2450
3129
  requestBody:
2451
3130
  required: true
2452
3131
  content:
@@ -2527,6 +3206,40 @@ paths:
2527
3206
  - keepId
2528
3207
  - mergeId
2529
3208
  additionalProperties: false
3209
+ /v1/contacts/search:
3210
+ post:
3211
+ operationId: contacts_search_post
3212
+ summary: Search contacts
3213
+ description: Search contacts by query, channel address, or channel type.
3214
+ tags:
3215
+ - contacts
3216
+ responses:
3217
+ "200":
3218
+ description: Successful response
3219
+ content:
3220
+ application/json:
3221
+ schema:
3222
+ type: array
3223
+ items:
3224
+ type: object
3225
+ properties: {}
3226
+ additionalProperties: {}
3227
+ requestBody:
3228
+ required: true
3229
+ content:
3230
+ application/json:
3231
+ schema:
3232
+ type: object
3233
+ properties:
3234
+ query:
3235
+ type: string
3236
+ channelAddress:
3237
+ type: string
3238
+ channelType:
3239
+ type: string
3240
+ limit:
3241
+ type: number
3242
+ additionalProperties: false
2530
3243
  /v1/conversation-starters:
2531
3244
  get:
2532
3245
  operationId: conversationstarters_get
@@ -2583,18 +3296,53 @@ paths:
2583
3296
  schema:
2584
3297
  type: string
2585
3298
  description: Scope ID (default "default")
3299
+ /v1/conversation-starters/{id}:
3300
+ delete:
3301
+ operationId: conversationstarters_by_id_delete
3302
+ summary: Delete conversation starter
3303
+ description: Remove a generated conversation starter chip from the current starter set.
3304
+ tags:
3305
+ - conversation-starters
3306
+ responses:
3307
+ "200":
3308
+ description: Successful response
3309
+ content:
3310
+ application/json:
3311
+ schema:
3312
+ type: object
3313
+ properties:
3314
+ deleted:
3315
+ type: boolean
3316
+ id:
3317
+ type: string
3318
+ required:
3319
+ - deleted
3320
+ - id
3321
+ additionalProperties: false
3322
+ "404":
3323
+ description: Conversation starter not found
3324
+ parameters:
3325
+ - name: id
3326
+ in: path
3327
+ required: true
3328
+ schema:
3329
+ type: string
2586
3330
  /v1/conversations:
2587
3331
  delete:
2588
3332
  operationId: conversations_delete
2589
3333
  summary: Clear all conversations
2590
- description: Permanently delete ALL conversations, messages, and memory. Requires X-Confirm-Destructive header.
3334
+ description: Permanently delete ALL conversations, messages, and memory.
2591
3335
  tags:
2592
3336
  - conversations
2593
3337
  responses:
2594
- "200":
3338
+ "204":
2595
3339
  description: Successful response
2596
3340
  get:
2597
3341
  operationId: conversations_get
3342
+ summary: List conversations
3343
+ description: Paginated list of conversations with attention state and display metadata.
3344
+ tags:
3345
+ - conversations
2598
3346
  responses:
2599
3347
  "200":
2600
3348
  description: Successful response
@@ -2618,10 +3366,13 @@ paths:
2618
3366
  type: string
2619
3367
  conversationType:
2620
3368
  type: string
3369
+ created:
3370
+ type: boolean
2621
3371
  required:
2622
3372
  - id
2623
3373
  - conversationKey
2624
3374
  - conversationType
3375
+ - created
2625
3376
  additionalProperties: false
2626
3377
  requestBody:
2627
3378
  required: true
@@ -2634,11 +3385,11 @@ paths:
2634
3385
  type: string
2635
3386
  description: Idempotency key for the conversation
2636
3387
  conversationType:
3388
+ description: Only standard conversations are created by this endpoint
2637
3389
  type: string
2638
- description: "'standard' (default) or 'private'"
3390
+ const: standard
2639
3391
  required:
2640
3392
  - conversationKey
2641
- - conversationType
2642
3393
  additionalProperties: false
2643
3394
  /v1/conversations/{id}:
2644
3395
  delete:
@@ -2648,7 +3399,7 @@ paths:
2648
3399
  tags:
2649
3400
  - conversations
2650
3401
  responses:
2651
- "200":
3402
+ "204":
2652
3403
  description: Successful response
2653
3404
  parameters:
2654
3405
  - name: id
@@ -2658,6 +3409,10 @@ paths:
2658
3409
  type: string
2659
3410
  get:
2660
3411
  operationId: conversations_by_id_get
3412
+ summary: Get conversation detail
3413
+ description: Retrieve a single conversation with full metadata.
3414
+ tags:
3415
+ - conversations
2661
3416
  responses:
2662
3417
  "200":
2663
3418
  description: Successful response
@@ -2687,9 +3442,7 @@ paths:
2687
3442
  post:
2688
3443
  operationId: conversations_by_id_archive_post
2689
3444
  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.
3445
+ description: Move a conversation to the archived state.
2693
3446
  tags:
2694
3447
  - conversations
2695
3448
  responses:
@@ -2709,7 +3462,7 @@ paths:
2709
3462
  tags:
2710
3463
  - conversations
2711
3464
  responses:
2712
- "200":
3465
+ "202":
2713
3466
  description: Successful response
2714
3467
  parameters:
2715
3468
  - name: id
@@ -2717,39 +3470,11 @@ paths:
2717
3470
  required: true
2718
3471
  schema:
2719
3472
  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":
2729
- 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
- parameters:
2744
- - name: id
2745
- in: path
2746
- required: true
2747
- schema:
2748
- 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.
3473
+ /v1/conversations/{id}/inference-profile:
3474
+ put:
3475
+ operationId: conversations_by_id_inferenceprofile_put
3476
+ summary: Set conversation inference profile
3477
+ description: Override the LLM inference profile for a single conversation.
2753
3478
  tags:
2754
3479
  - conversations
2755
3480
  responses:
@@ -2762,11 +3487,13 @@ paths:
2762
3487
  properties:
2763
3488
  conversationId:
2764
3489
  type: string
2765
- hostAccess:
2766
- type: boolean
3490
+ profile:
3491
+ anyOf:
3492
+ - type: string
3493
+ - type: "null"
2767
3494
  required:
2768
3495
  - conversationId
2769
- - hostAccess
3496
+ - profile
2770
3497
  additionalProperties: false
2771
3498
  parameters:
2772
3499
  - name: id
@@ -2781,10 +3508,12 @@ paths:
2781
3508
  schema:
2782
3509
  type: object
2783
3510
  properties:
2784
- hostAccess:
2785
- type: boolean
3511
+ profile:
3512
+ anyOf:
3513
+ - type: string
3514
+ - type: "null"
2786
3515
  required:
2787
- - hostAccess
3516
+ - profile
2788
3517
  additionalProperties: false
2789
3518
  /v1/conversations/{id}/name:
2790
3519
  patch:
@@ -2898,7 +3627,7 @@ paths:
2898
3627
  tags:
2899
3628
  - conversations
2900
3629
  responses:
2901
- "200":
3630
+ "202":
2902
3631
  description: Successful response
2903
3632
  parameters:
2904
3633
  - name: id
@@ -3075,6 +3804,33 @@ paths:
3075
3804
  required:
3076
3805
  - conversationId
3077
3806
  additionalProperties: false
3807
+ /v1/conversations/rename:
3808
+ post:
3809
+ operationId: conversations_rename_post
3810
+ summary: Rename a conversation
3811
+ description: Update the display title of a conversation.
3812
+ tags:
3813
+ - conversations
3814
+ responses:
3815
+ "200":
3816
+ description: Successful response
3817
+ requestBody:
3818
+ required: true
3819
+ content:
3820
+ application/json:
3821
+ schema:
3822
+ type: object
3823
+ properties:
3824
+ conversationId:
3825
+ type: string
3826
+ minLength: 1
3827
+ title:
3828
+ type: string
3829
+ minLength: 1
3830
+ required:
3831
+ - conversationId
3832
+ - title
3833
+ additionalProperties: false
3078
3834
  /v1/conversations/reorder:
3079
3835
  post:
3080
3836
  operationId: conversations_reorder_post
@@ -3123,9 +3879,32 @@ paths:
3123
3879
  - query
3124
3880
  - results
3125
3881
  additionalProperties: false
3882
+ parameters:
3883
+ - name: q
3884
+ in: query
3885
+ required: true
3886
+ schema:
3887
+ type: string
3888
+ description: Search query
3889
+ - name: limit
3890
+ in: query
3891
+ required: false
3892
+ schema:
3893
+ type: integer
3894
+ description: Max results
3895
+ - name: maxMessagesPerConversation
3896
+ in: query
3897
+ required: false
3898
+ schema:
3899
+ type: integer
3900
+ description: Max messages per conversation
3126
3901
  /v1/conversations/seen:
3127
3902
  post:
3128
3903
  operationId: conversations_seen_post
3904
+ summary: Record a seen signal
3905
+ description: Mark a conversation as seen, advancing the attention cursor.
3906
+ tags:
3907
+ - conversations
3129
3908
  responses:
3130
3909
  "200":
3131
3910
  description: Successful response
@@ -3150,13 +3929,12 @@ paths:
3150
3929
  type: string
3151
3930
  conversationType:
3152
3931
  type: string
3153
- hostAccess:
3154
- type: boolean
3932
+ inferenceProfile:
3933
+ type: string
3155
3934
  required:
3156
3935
  - conversationId
3157
3936
  - title
3158
3937
  - conversationType
3159
- - hostAccess
3160
3938
  additionalProperties: false
3161
3939
  requestBody:
3162
3940
  required: true
@@ -3176,9 +3954,183 @@ paths:
3176
3954
  /v1/conversations/unread:
3177
3955
  post:
3178
3956
  operationId: conversations_unread_post
3957
+ summary: Mark conversation unread
3958
+ description: Reset the seen cursor so the conversation appears unread.
3959
+ tags:
3960
+ - conversations
3961
+ responses:
3962
+ "200":
3963
+ description: Successful response
3964
+ /v1/conversations/wake:
3965
+ post:
3966
+ operationId: conversations_wake_post
3967
+ summary: Wake a conversation
3968
+ description: Invoke the agent loop for a conversation with an opportunity hint.
3969
+ tags:
3970
+ - conversations
3971
+ responses:
3972
+ "200":
3973
+ description: Successful response
3974
+ content:
3975
+ application/json:
3976
+ schema:
3977
+ type: object
3978
+ properties:
3979
+ invoked:
3980
+ type: boolean
3981
+ producedToolCalls:
3982
+ type: boolean
3983
+ reason:
3984
+ type: string
3985
+ required:
3986
+ - invoked
3987
+ - producedToolCalls
3988
+ additionalProperties: false
3989
+ requestBody:
3990
+ required: true
3991
+ content:
3992
+ application/json:
3993
+ schema:
3994
+ type: object
3995
+ properties:
3996
+ conversationId:
3997
+ type: string
3998
+ minLength: 1
3999
+ hint:
4000
+ type: string
4001
+ minLength: 1
4002
+ source:
4003
+ default: cli
4004
+ type: string
4005
+ required:
4006
+ - conversationId
4007
+ - hint
4008
+ - source
4009
+ additionalProperties: false
4010
+ /v1/conversations/wipe:
4011
+ post:
4012
+ operationId: conversations_wipe_post
4013
+ summary: Wipe a conversation
4014
+ description: Permanently delete a conversation and its associated data including memory vectors.
4015
+ tags:
4016
+ - conversations
4017
+ responses:
4018
+ "200":
4019
+ description: Successful response
4020
+ content:
4021
+ application/json:
4022
+ schema:
4023
+ type: object
4024
+ properties:
4025
+ wiped:
4026
+ type: boolean
4027
+ unsupersededItems:
4028
+ type: number
4029
+ deletedSummaries:
4030
+ type: number
4031
+ cancelledJobs:
4032
+ type: number
4033
+ required:
4034
+ - wiped
4035
+ - unsupersededItems
4036
+ - deletedSummaries
4037
+ - cancelledJobs
4038
+ additionalProperties: false
4039
+ requestBody:
4040
+ required: true
4041
+ content:
4042
+ application/json:
4043
+ schema:
4044
+ type: object
4045
+ properties:
4046
+ conversationId:
4047
+ type: string
4048
+ minLength: 1
4049
+ required:
4050
+ - conversationId
4051
+ additionalProperties: false
4052
+ /v1/credentials/prompt:
4053
+ post:
4054
+ operationId: credentials_prompt_post
4055
+ summary: Prompt user for a credential
4056
+ description: Trigger a secure input prompt in the user's app to collect a credential value.
4057
+ tags:
4058
+ - credentials
3179
4059
  responses:
3180
4060
  "200":
3181
4061
  description: Successful response
4062
+ content:
4063
+ application/json:
4064
+ schema:
4065
+ type: object
4066
+ properties:
4067
+ ok:
4068
+ type: boolean
4069
+ error:
4070
+ type: string
4071
+ service:
4072
+ type: string
4073
+ field:
4074
+ type: string
4075
+ required:
4076
+ - ok
4077
+ additionalProperties: false
4078
+ requestBody:
4079
+ required: true
4080
+ content:
4081
+ application/json:
4082
+ schema:
4083
+ type: object
4084
+ properties:
4085
+ service:
4086
+ type: string
4087
+ minLength: 1
4088
+ field:
4089
+ type: string
4090
+ minLength: 1
4091
+ label:
4092
+ type: string
4093
+ minLength: 1
4094
+ description:
4095
+ type: string
4096
+ placeholder:
4097
+ type: string
4098
+ allowedDomains:
4099
+ type: array
4100
+ items:
4101
+ type: string
4102
+ allowedTools:
4103
+ type: array
4104
+ items:
4105
+ type: string
4106
+ injectionTemplates:
4107
+ type: array
4108
+ items:
4109
+ type: object
4110
+ properties:
4111
+ hostPattern:
4112
+ type: string
4113
+ minLength: 1
4114
+ injectionType:
4115
+ type: string
4116
+ enum:
4117
+ - header
4118
+ - query
4119
+ headerName:
4120
+ type: string
4121
+ valuePrefix:
4122
+ type: string
4123
+ queryParamName:
4124
+ type: string
4125
+ required:
4126
+ - hostPattern
4127
+ - injectionType
4128
+ additionalProperties: false
4129
+ required:
4130
+ - service
4131
+ - field
4132
+ - label
4133
+ additionalProperties: false
3182
4134
  /v1/debug:
3183
4135
  get:
3184
4136
  operationId: debug_get
@@ -3230,23 +4182,13 @@ paths:
3230
4182
  - schedules
3231
4183
  - timestamp
3232
4184
  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).
3238
- tags:
3239
- - diagnostics
3240
- responses:
3241
- "200":
3242
- description: Successful response
3243
- /v1/dictation:
4185
+ /v1/defer/cancel:
3244
4186
  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.
4187
+ operationId: defer_cancel_post
4188
+ summary: Cancel deferred wakes
4189
+ description: Cancel a specific deferred wake by ID, or all defers for a conversation.
3248
4190
  tags:
3249
- - diagnostics
4191
+ - defer
3250
4192
  responses:
3251
4193
  "200":
3252
4194
  description: Successful response
@@ -3255,27 +4197,12 @@ paths:
3255
4197
  schema:
3256
4198
  type: object
3257
4199
  properties:
3258
- text:
3259
- type: string
3260
- description: Processed text output
3261
- mode:
3262
- type: string
3263
- description: "Detected mode: dictation, command, or action"
3264
- actionPlan:
3265
- type: string
3266
- description: Action plan (only when mode is action)
3267
- resolvedProfileId:
3268
- type: string
3269
- description: Resolved dictation profile ID
3270
- profileSource:
4200
+ cancelled:
4201
+ type: number
4202
+ error:
3271
4203
  type: string
3272
- description: How the profile was resolved
3273
4204
  required:
3274
- - text
3275
- - mode
3276
- - actionPlan
3277
- - resolvedProfileId
3278
- - profileSource
4205
+ - cancelled
3279
4206
  additionalProperties: false
3280
4207
  requestBody:
3281
4208
  required: true
@@ -3284,25 +4211,191 @@ paths:
3284
4211
  schema:
3285
4212
  type: object
3286
4213
  properties:
3287
- transcription:
4214
+ id:
3288
4215
  type: string
3289
- description: Raw speech transcription
3290
- context:
3291
- type: object
3292
- properties: {}
3293
- additionalProperties: {}
3294
- description: Dictation context (app name, window title, bundle ID, cursor state, selected text)
3295
- profileId:
4216
+ all:
4217
+ type: boolean
4218
+ conversationId:
3296
4219
  type: string
3297
- description: Optional dictation profile ID
3298
- required:
3299
- - transcription
3300
- - context
3301
4220
  additionalProperties: false
3302
- /v1/documents:
3303
- get:
3304
- operationId: documents_get
3305
- summary: List documents
4221
+ /v1/defer/create:
4222
+ post:
4223
+ operationId: defer_create_post
4224
+ summary: Create a deferred wake
4225
+ description: Schedule a future wake-up on a conversation, optionally with a delay or absolute timestamp.
4226
+ tags:
4227
+ - defer
4228
+ responses:
4229
+ "200":
4230
+ description: Successful response
4231
+ content:
4232
+ application/json:
4233
+ schema:
4234
+ type: object
4235
+ properties:
4236
+ id:
4237
+ type: string
4238
+ name:
4239
+ type: string
4240
+ fireAt:
4241
+ type: number
4242
+ conversationId:
4243
+ type: string
4244
+ required:
4245
+ - id
4246
+ - name
4247
+ - fireAt
4248
+ - conversationId
4249
+ additionalProperties: false
4250
+ requestBody:
4251
+ required: true
4252
+ content:
4253
+ application/json:
4254
+ schema:
4255
+ type: object
4256
+ properties:
4257
+ conversationId:
4258
+ type: string
4259
+ minLength: 1
4260
+ hint:
4261
+ type: string
4262
+ minLength: 1
4263
+ delaySeconds:
4264
+ type: number
4265
+ fireAt:
4266
+ type: number
4267
+ name:
4268
+ type: string
4269
+ required:
4270
+ - conversationId
4271
+ - hint
4272
+ additionalProperties: false
4273
+ /v1/defer/list:
4274
+ post:
4275
+ operationId: defer_list_post
4276
+ summary: List active deferred wakes
4277
+ description: List all active deferred wakes, optionally filtered by conversation.
4278
+ tags:
4279
+ - defer
4280
+ responses:
4281
+ "200":
4282
+ description: Successful response
4283
+ content:
4284
+ application/json:
4285
+ schema:
4286
+ type: object
4287
+ properties:
4288
+ defers:
4289
+ type: array
4290
+ items:
4291
+ type: object
4292
+ properties:
4293
+ id:
4294
+ type: string
4295
+ name:
4296
+ type: string
4297
+ hint:
4298
+ type: string
4299
+ conversationId:
4300
+ type: string
4301
+ fireAt:
4302
+ type: number
4303
+ status:
4304
+ type: string
4305
+ required:
4306
+ - id
4307
+ - name
4308
+ - hint
4309
+ - conversationId
4310
+ - fireAt
4311
+ - status
4312
+ additionalProperties: false
4313
+ required:
4314
+ - defers
4315
+ additionalProperties: false
4316
+ requestBody:
4317
+ required: true
4318
+ content:
4319
+ application/json:
4320
+ schema:
4321
+ type: object
4322
+ properties:
4323
+ conversationId:
4324
+ type: string
4325
+ additionalProperties: false
4326
+ /v1/diagnostics/env-vars:
4327
+ get:
4328
+ operationId: diagnostics_envvars_get
4329
+ summary: List safe environment variables
4330
+ description: Return environment variable names and values that are safe to expose (no secrets).
4331
+ tags:
4332
+ - diagnostics
4333
+ responses:
4334
+ "200":
4335
+ description: Successful response
4336
+ /v1/dictation:
4337
+ post:
4338
+ operationId: dictation_post
4339
+ summary: Process dictation
4340
+ description: Classify voice input as dictation or action, clean up text, and apply user style preferences.
4341
+ tags:
4342
+ - diagnostics
4343
+ responses:
4344
+ "200":
4345
+ description: Successful response
4346
+ content:
4347
+ application/json:
4348
+ schema:
4349
+ type: object
4350
+ properties:
4351
+ text:
4352
+ type: string
4353
+ description: Processed text output
4354
+ mode:
4355
+ type: string
4356
+ description: "Detected mode: dictation, command, or action"
4357
+ actionPlan:
4358
+ type: string
4359
+ description: Action plan (only when mode is action)
4360
+ resolvedProfileId:
4361
+ type: string
4362
+ description: Resolved dictation profile ID
4363
+ profileSource:
4364
+ type: string
4365
+ description: How the profile was resolved
4366
+ required:
4367
+ - text
4368
+ - mode
4369
+ - actionPlan
4370
+ - resolvedProfileId
4371
+ - profileSource
4372
+ additionalProperties: false
4373
+ requestBody:
4374
+ required: true
4375
+ content:
4376
+ application/json:
4377
+ schema:
4378
+ type: object
4379
+ properties:
4380
+ transcription:
4381
+ type: string
4382
+ description: Raw speech transcription
4383
+ context:
4384
+ type: object
4385
+ properties: {}
4386
+ additionalProperties: {}
4387
+ description: Dictation context (app name, window title, bundle ID, cursor state, selected text)
4388
+ profileId:
4389
+ type: string
4390
+ description: Optional dictation profile ID
4391
+ required:
4392
+ - transcription
4393
+ - context
4394
+ additionalProperties: false
4395
+ /v1/documents:
4396
+ get:
4397
+ operationId: documents_get
4398
+ summary: List documents
3306
4399
  description: Return all documents, optionally filtered by conversation.
3307
4400
  tags:
3308
4401
  - documents
@@ -3344,6 +4437,7 @@ paths:
3344
4437
  properties:
3345
4438
  success:
3346
4439
  type: boolean
4440
+ const: true
3347
4441
  surfaceId:
3348
4442
  type: string
3349
4443
  required:
@@ -3453,6 +4547,8 @@ paths:
3453
4547
  responses:
3454
4548
  "200":
3455
4549
  description: Successful response
4550
+ "500":
4551
+ description: Failed to create archive
3456
4552
  requestBody:
3457
4553
  required: true
3458
4554
  content:
@@ -3469,9 +4565,7 @@ paths:
3469
4565
  description: Scope to a single conversation
3470
4566
  type: string
3471
4567
  full:
3472
- description:
3473
- Full export — include messages, LLM request logs, and usage events for all conversations. Use for test data
3474
- debugging.
4568
+ description: Full export — include messages, LLM request logs, and usage events for all conversations.
3475
4569
  type: boolean
3476
4570
  startTime:
3477
4571
  description: Lower bound epoch ms
@@ -3495,6 +4589,8 @@ paths:
3495
4589
  schema:
3496
4590
  type: object
3497
4591
  properties:
4592
+ available:
4593
+ type: boolean
3498
4594
  enabled:
3499
4595
  type: boolean
3500
4596
  intervalMs:
@@ -3518,6 +4614,7 @@ paths:
3518
4614
  success:
3519
4615
  type: boolean
3520
4616
  required:
4617
+ - available
3521
4618
  - enabled
3522
4619
  - intervalMs
3523
4620
  - activeHoursStart
@@ -3567,8 +4664,10 @@ paths:
3567
4664
  tags:
3568
4665
  - groups
3569
4666
  responses:
3570
- "200":
4667
+ "201":
3571
4668
  description: Successful response
4669
+ "400":
4670
+ description: Missing or invalid name, or sort_position ceiling reached
3572
4671
  requestBody:
3573
4672
  required: true
3574
4673
  content:
@@ -3590,8 +4689,12 @@ paths:
3590
4689
  tags:
3591
4690
  - groups
3592
4691
  responses:
3593
- "200":
4692
+ "204":
3594
4693
  description: Successful response
4694
+ "403":
4695
+ description: System groups cannot be deleted
4696
+ "404":
4697
+ description: Group not found
3595
4698
  parameters:
3596
4699
  - name: groupId
3597
4700
  in: path
@@ -3607,6 +4710,10 @@ paths:
3607
4710
  responses:
3608
4711
  "200":
3609
4712
  description: Successful response
4713
+ "403":
4714
+ description: System group sort position cannot be changed
4715
+ "404":
4716
+ description: Group not found
3610
4717
  parameters:
3611
4718
  - name: groupId
3612
4719
  in: path
@@ -3635,6 +4742,8 @@ paths:
3635
4742
  responses:
3636
4743
  "200":
3637
4744
  description: Successful response
4745
+ "403":
4746
+ description: Cannot reorder system groups
3638
4747
  requestBody:
3639
4748
  required: true
3640
4749
  content:
@@ -3740,18 +4849,6 @@ paths:
3740
4849
  schema:
3741
4850
  type: string
3742
4851
  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
4852
  /v1/health:
3756
4853
  get:
3757
4854
  operationId: health_get
@@ -4071,11 +5168,21 @@ paths:
4071
5168
  intervalMs:
4072
5169
  type: number
4073
5170
  activeHoursStart:
4074
- type: number
5171
+ anyOf:
5172
+ - type: number
5173
+ - type: "null"
4075
5174
  activeHoursEnd:
4076
- type: number
5175
+ anyOf:
5176
+ - type: number
5177
+ - type: "null"
4077
5178
  nextRunAt:
4078
- type: string
5179
+ anyOf:
5180
+ - type: number
5181
+ - type: "null"
5182
+ lastRunAt:
5183
+ anyOf:
5184
+ - type: number
5185
+ - type: "null"
4079
5186
  success:
4080
5187
  type: boolean
4081
5188
  required:
@@ -4084,6 +5191,7 @@ paths:
4084
5191
  - activeHoursStart
4085
5192
  - activeHoursEnd
4086
5193
  - nextRunAt
5194
+ - lastRunAt
4087
5195
  - success
4088
5196
  additionalProperties: false
4089
5197
  put:
@@ -4105,11 +5213,21 @@ paths:
4105
5213
  intervalMs:
4106
5214
  type: number
4107
5215
  activeHoursStart:
4108
- type: number
5216
+ anyOf:
5217
+ - type: number
5218
+ - type: "null"
4109
5219
  activeHoursEnd:
4110
- type: number
5220
+ anyOf:
5221
+ - type: number
5222
+ - type: "null"
4111
5223
  nextRunAt:
4112
- type: string
5224
+ anyOf:
5225
+ - type: number
5226
+ - type: "null"
5227
+ lastRunAt:
5228
+ anyOf:
5229
+ - type: number
5230
+ - type: "null"
4113
5231
  success:
4114
5232
  type: boolean
4115
5233
  required:
@@ -4118,6 +5236,7 @@ paths:
4118
5236
  - activeHoursStart
4119
5237
  - activeHoursEnd
4120
5238
  - nextRunAt
5239
+ - lastRunAt
4121
5240
  - success
4122
5241
  additionalProperties: false
4123
5242
  requestBody:
@@ -4197,7 +5316,7 @@ paths:
4197
5316
  required: false
4198
5317
  schema:
4199
5318
  type: integer
4200
- description: Max runs to return (default 20)
5319
+ description: Max runs to return (default 20, max 100)
4201
5320
  /v1/home/feed:
4202
5321
  get:
4203
5322
  operationId: home_feed_get
@@ -4508,6 +5627,10 @@ paths:
4508
5627
  - author
4509
5628
  - createdAt
4510
5629
  additionalProperties: false
5630
+ "404":
5631
+ description: Feed item not found
5632
+ "500":
5633
+ description: Failed to persist feed item status
4511
5634
  parameters:
4512
5635
  - name: id
4513
5636
  in: path
@@ -4553,6 +5676,10 @@ paths:
4553
5676
  required:
4554
5677
  - conversationId
4555
5678
  additionalProperties: false
5679
+ "404":
5680
+ description: Feed item or action not found
5681
+ "500":
5682
+ description: Failed to create conversation
4556
5683
  parameters:
4557
5684
  - name: id
4558
5685
  in: path
@@ -4682,6 +5809,8 @@ paths:
4682
5809
  - assistantName
4683
5810
  - updatedAt
4684
5811
  additionalProperties: false
5812
+ "500":
5813
+ description: Failed to compute relationship state
4685
5814
  /v1/host-bash-result:
4686
5815
  post:
4687
5816
  operationId: hostbashresult_post
@@ -4860,6 +5989,45 @@ paths:
4860
5989
  required:
4861
5990
  - requestId
4862
5991
  additionalProperties: false
5992
+ /v1/host-transfer-result:
5993
+ post:
5994
+ operationId: hosttransferresult_post
5995
+ summary: Submit host transfer result
5996
+ description: Resolve a pending to_host transfer after the client has downloaded and written the file.
5997
+ tags:
5998
+ - host-transfer
5999
+ responses:
6000
+ "200":
6001
+ description: Successful response
6002
+ content:
6003
+ application/json:
6004
+ schema:
6005
+ type: object
6006
+ properties:
6007
+ accepted:
6008
+ type: boolean
6009
+ required:
6010
+ - accepted
6011
+ additionalProperties: false
6012
+ requestBody:
6013
+ required: true
6014
+ content:
6015
+ application/json:
6016
+ schema:
6017
+ type: object
6018
+ properties:
6019
+ requestId:
6020
+ type: string
6021
+ description: Pending transfer request ID
6022
+ isError:
6023
+ type: boolean
6024
+ bytesWritten:
6025
+ type: number
6026
+ errorMessage:
6027
+ type: string
6028
+ required:
6029
+ - requestId
6030
+ additionalProperties: false
4863
6031
  /v1/identity:
4864
6032
  get:
4865
6033
  operationId: identity_get
@@ -4948,6 +6116,8 @@ paths:
4948
6116
  type: string
4949
6117
  localGatewayTarget:
4950
6118
  type: string
6119
+ managedCallbacks:
6120
+ type: boolean
4951
6121
  success:
4952
6122
  type: boolean
4953
6123
  required:
@@ -5000,151 +6170,182 @@ paths:
5000
6170
  /v1/integrations/slack/channel/config:
5001
6171
  delete:
5002
6172
  operationId: integrations_slack_channel_config_delete
6173
+ summary: Clear Slack channel config
6174
+ description: Clear stored Slack channel credentials.
5003
6175
  tags:
5004
- - channel
6176
+ - integrations
5005
6177
  responses:
5006
6178
  "200":
5007
6179
  description: Successful response
5008
6180
  get:
5009
6181
  operationId: integrations_slack_channel_config_get
6182
+ summary: Get Slack channel config
6183
+ description: Check current Slack channel configuration status.
5010
6184
  tags:
5011
- - channel
6185
+ - integrations
5012
6186
  responses:
5013
6187
  "200":
5014
6188
  description: Successful response
5015
6189
  post:
5016
6190
  operationId: integrations_slack_channel_config_post
6191
+ summary: Set Slack channel config
6192
+ description: Validate and store Slack channel credentials.
5017
6193
  tags:
5018
- - channel
5019
- responses:
5020
- "200":
5021
- description: Successful response
5022
- /v1/integrations/slack/channel/oauth-install:
5023
- post:
5024
- operationId: integrations_slack_channel_oauthinstall_post
5025
- tags:
5026
- - channel
6194
+ - integrations
5027
6195
  responses:
5028
6196
  "200":
5029
6197
  description: Successful response
5030
6198
  /v1/integrations/telegram/commands:
5031
6199
  post:
5032
6200
  operationId: integrations_telegram_commands_post
6201
+ summary: Register Telegram commands
6202
+ description: Register bot commands with the Telegram API.
5033
6203
  tags:
5034
- - telegram
6204
+ - integrations
5035
6205
  responses:
5036
6206
  "200":
5037
6207
  description: Successful response
5038
6208
  /v1/integrations/telegram/config:
5039
6209
  delete:
5040
6210
  operationId: integrations_telegram_config_delete
6211
+ summary: Clear Telegram config
6212
+ description: Clear credentials and deregister webhook.
5041
6213
  tags:
5042
- - telegram
6214
+ - integrations
5043
6215
  responses:
5044
6216
  "200":
5045
6217
  description: Successful response
5046
6218
  get:
5047
6219
  operationId: integrations_telegram_config_get
6220
+ summary: Get Telegram config
6221
+ description: Check current Telegram bot configuration status.
5048
6222
  tags:
5049
- - telegram
6223
+ - integrations
5050
6224
  responses:
5051
6225
  "200":
5052
6226
  description: Successful response
5053
6227
  post:
5054
6228
  operationId: integrations_telegram_config_post
6229
+ summary: Set Telegram config
6230
+ description: Set bot token and configure webhook.
5055
6231
  tags:
5056
- - telegram
6232
+ - integrations
5057
6233
  responses:
5058
6234
  "200":
5059
6235
  description: Successful response
5060
6236
  /v1/integrations/telegram/setup:
5061
6237
  post:
5062
6238
  operationId: integrations_telegram_setup_post
6239
+ summary: Setup Telegram
6240
+ description: "Composite: set config + register commands."
5063
6241
  tags:
5064
- - telegram
6242
+ - integrations
5065
6243
  responses:
5066
6244
  "200":
5067
6245
  description: Successful response
5068
6246
  /v1/integrations/twilio/config:
5069
6247
  get:
5070
6248
  operationId: integrations_twilio_config_get
6249
+ summary: Get Twilio config
6250
+ description: Return current Twilio configuration status.
5071
6251
  tags:
5072
- - twilio
6252
+ - integrations
5073
6253
  responses:
5074
6254
  "200":
5075
6255
  description: Successful response
5076
6256
  /v1/integrations/twilio/credentials:
5077
6257
  delete:
5078
6258
  operationId: integrations_twilio_credentials_delete
6259
+ summary: Clear Twilio credentials
6260
+ description: Remove stored Twilio credentials.
5079
6261
  tags:
5080
- - twilio
6262
+ - integrations
5081
6263
  responses:
5082
6264
  "200":
5083
6265
  description: Successful response
5084
6266
  post:
5085
6267
  operationId: integrations_twilio_credentials_post
6268
+ summary: Set Twilio credentials
6269
+ description: Validate and store Twilio account SID and auth token.
5086
6270
  tags:
5087
- - twilio
6271
+ - integrations
5088
6272
  responses:
5089
6273
  "200":
5090
6274
  description: Successful response
5091
6275
  /v1/integrations/twilio/numbers:
5092
6276
  get:
5093
6277
  operationId: integrations_twilio_numbers_get
6278
+ summary: List Twilio numbers
6279
+ description: List phone numbers on the Twilio account.
5094
6280
  tags:
5095
- - twilio
6281
+ - integrations
5096
6282
  responses:
5097
6283
  "200":
5098
6284
  description: Successful response
5099
6285
  /v1/integrations/twilio/numbers/assign:
5100
6286
  post:
5101
6287
  operationId: integrations_twilio_numbers_assign_post
6288
+ summary: Assign Twilio number
6289
+ description: Assign an existing phone number to this assistant.
5102
6290
  tags:
5103
- - twilio
6291
+ - integrations
5104
6292
  responses:
5105
6293
  "200":
5106
6294
  description: Successful response
5107
6295
  /v1/integrations/twilio/numbers/provision:
5108
6296
  post:
5109
6297
  operationId: integrations_twilio_numbers_provision_post
6298
+ summary: Provision Twilio number
6299
+ description: Search for and provision a new phone number.
5110
6300
  tags:
5111
- - twilio
6301
+ - integrations
5112
6302
  responses:
5113
6303
  "200":
5114
6304
  description: Successful response
5115
6305
  /v1/integrations/twilio/numbers/release:
5116
6306
  post:
5117
6307
  operationId: integrations_twilio_numbers_release_post
6308
+ summary: Release Twilio number
6309
+ description: Release a phone number back to Twilio.
5118
6310
  tags:
5119
- - twilio
6311
+ - integrations
5120
6312
  responses:
5121
6313
  "200":
5122
6314
  description: Successful response
5123
6315
  /v1/integrations/vercel/config:
5124
6316
  delete:
5125
6317
  operationId: integrations_vercel_config_delete
6318
+ summary: Delete Vercel config
6319
+ description: Delete the stored Vercel API token.
5126
6320
  tags:
5127
- - vercel
6321
+ - integrations
5128
6322
  responses:
5129
6323
  "200":
5130
6324
  description: Successful response
5131
6325
  get:
5132
6326
  operationId: integrations_vercel_config_get
6327
+ summary: Get Vercel config
6328
+ description: Check if a Vercel API token is stored.
5133
6329
  tags:
5134
- - vercel
6330
+ - integrations
5135
6331
  responses:
5136
6332
  "200":
5137
6333
  description: Successful response
5138
6334
  post:
5139
6335
  operationId: integrations_vercel_config_post
6336
+ summary: Set or delete Vercel config
6337
+ description: Set or delete the Vercel API token. Action is determined by the body action field.
5140
6338
  tags:
5141
- - vercel
6339
+ - integrations
5142
6340
  responses:
5143
6341
  "200":
5144
6342
  description: Successful response
5145
6343
  /v1/interfaces/{path}:
5146
6344
  get:
5147
6345
  operationId: interfaces_by_path_get
6346
+ summary: Serve an interface definition file
6347
+ tags:
6348
+ - interfaces
5148
6349
  responses:
5149
6350
  "200":
5150
6351
  description: Successful response
@@ -5157,24 +6358,58 @@ paths:
5157
6358
  /v1/internal/oauth/callback:
5158
6359
  post:
5159
6360
  operationId: internal_oauth_callback_post
6361
+ summary: Internal OAuth callback
6362
+ description:
6363
+ Receives forwarded OAuth callback results (code or error) from the gateway and resolves the pending
6364
+ callback in the runtime.
6365
+ tags:
6366
+ - internal
5160
6367
  responses:
5161
6368
  "200":
5162
6369
  description: Successful response
6370
+ requestBody:
6371
+ required: true
6372
+ content:
6373
+ application/json:
6374
+ schema:
6375
+ type: object
6376
+ properties:
6377
+ state:
6378
+ type: string
6379
+ code:
6380
+ type: string
6381
+ error:
6382
+ type: string
6383
+ required:
6384
+ - state
6385
+ additionalProperties: false
5163
6386
  /v1/internal/twilio/connect-action:
5164
6387
  post:
5165
6388
  operationId: internal_twilio_connectaction_post
6389
+ summary: Internal Twilio connect-action
6390
+ description: Gateway-to-runtime forwarding for ConversationRelay connect-action callback.
6391
+ tags:
6392
+ - internal
5166
6393
  responses:
5167
6394
  "200":
5168
6395
  description: Successful response
5169
6396
  /v1/internal/twilio/status:
5170
6397
  post:
5171
6398
  operationId: internal_twilio_status_post
6399
+ summary: Internal Twilio status callback
6400
+ description: Gateway-to-runtime forwarding for Twilio call status updates. Accepts pre-parsed form params as JSON.
6401
+ tags:
6402
+ - internal
5172
6403
  responses:
5173
6404
  "200":
5174
6405
  description: Successful response
5175
6406
  /v1/internal/twilio/voice-webhook:
5176
6407
  post:
5177
6408
  operationId: internal_twilio_voicewebhook_post
6409
+ summary: Internal Twilio voice webhook
6410
+ description: Gateway-to-runtime forwarding for Twilio voice webhook. Accepts pre-parsed form params as JSON.
6411
+ tags:
6412
+ - internal
5178
6413
  responses:
5179
6414
  "200":
5180
6415
  description: Successful response
@@ -5218,6 +6453,8 @@ paths:
5218
6453
  responses:
5219
6454
  "200":
5220
6455
  description: Successful response
6456
+ "500":
6457
+ description: Failed to create archive
5221
6458
  requestBody:
5222
6459
  required: true
5223
6460
  content:
@@ -5234,9 +6471,7 @@ paths:
5234
6471
  description: Scope to a single conversation
5235
6472
  type: string
5236
6473
  full:
5237
- description:
5238
- Full export — include messages, LLM request logs, and usage events for all conversations. Use for test data
5239
- debugging.
6474
+ description: Full export — include messages, LLM request logs, and usage events for all conversations.
5240
6475
  type: boolean
5241
6476
  startTime:
5242
6477
  description: Lower bound epoch ms
@@ -5320,7 +6555,7 @@ paths:
5320
6555
  tags:
5321
6556
  - memory
5322
6557
  responses:
5323
- "200":
6558
+ "201":
5324
6559
  description: Successful response
5325
6560
  content:
5326
6561
  application/json:
@@ -5335,6 +6570,8 @@ paths:
5335
6570
  required:
5336
6571
  - item
5337
6572
  additionalProperties: false
6573
+ "409":
6574
+ description: A memory with this content already exists
5338
6575
  requestBody:
5339
6576
  required: true
5340
6577
  content:
@@ -5366,18 +6603,8 @@ paths:
5366
6603
  tags:
5367
6604
  - memory
5368
6605
  responses:
5369
- "200":
6606
+ "204":
5370
6607
  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
6608
  parameters:
5382
6609
  - name: id
5383
6610
  in: path
@@ -5434,6 +6661,8 @@ paths:
5434
6661
  required:
5435
6662
  - item
5436
6663
  additionalProperties: false
6664
+ "409":
6665
+ description: Another memory item with this content already exists
5437
6666
  parameters:
5438
6667
  - name: id
5439
6668
  in: path
@@ -5458,6 +6687,74 @@ paths:
5458
6687
  importance:
5459
6688
  type: number
5460
6689
  additionalProperties: false
6690
+ /v1/memory/v2/backfill:
6691
+ post:
6692
+ operationId: memory_v2_backfill_post
6693
+ summary: Enqueue a memory v2 backfill job
6694
+ description:
6695
+ Enqueues one of four operator-triggered backfill jobs (migrate, rebuild-edges, reembed,
6696
+ activation-recompute) against the memory jobs queue.
6697
+ tags:
6698
+ - memory
6699
+ responses:
6700
+ "200":
6701
+ description: Successful response
6702
+ requestBody:
6703
+ required: true
6704
+ content:
6705
+ application/json:
6706
+ schema:
6707
+ type: object
6708
+ properties:
6709
+ op:
6710
+ type: string
6711
+ enum:
6712
+ - migrate
6713
+ - reembed
6714
+ - activation-recompute
6715
+ force:
6716
+ type: boolean
6717
+ required:
6718
+ - op
6719
+ additionalProperties: false
6720
+ /v1/memory/v2/reembed-skills:
6721
+ post:
6722
+ operationId: memory_v2_reembedskills_post
6723
+ summary: Re-seed v2 skill entries from the current skill catalog
6724
+ description:
6725
+ Synchronously re-runs seedV2SkillEntries against the current skill catalog. Gated on memory-v2-enabled flag
6726
+ and config.memory.v2.enabled.
6727
+ tags:
6728
+ - memory
6729
+ responses:
6730
+ "200":
6731
+ description: Successful response
6732
+ requestBody:
6733
+ required: true
6734
+ content:
6735
+ application/json:
6736
+ schema:
6737
+ type: object
6738
+ properties: {}
6739
+ additionalProperties: false
6740
+ /v1/memory/v2/validate:
6741
+ post:
6742
+ operationId: memory_v2_validate_post
6743
+ summary: Validate memory v2 workspace state
6744
+ description: Read-only structural validation of the v2 workspace — reports orphan edges, oversized pages, and parse failures.
6745
+ tags:
6746
+ - memory
6747
+ responses:
6748
+ "200":
6749
+ description: Successful response
6750
+ requestBody:
6751
+ required: true
6752
+ content:
6753
+ application/json:
6754
+ schema:
6755
+ type: object
6756
+ properties: {}
6757
+ additionalProperties: false
5461
6758
  /v1/messages:
5462
6759
  get:
5463
6760
  operationId: messages_get
@@ -5481,11 +6778,17 @@ paths:
5481
6778
  description: Whether older messages exist beyond this page
5482
6779
  type: boolean
5483
6780
  oldestTimestamp:
5484
- description: Timestamp of the oldest message in this page (ms since epoch)
5485
- type: number
6781
+ description:
6782
+ Timestamp of the oldest message in this page (ms since epoch). Null when page=latest is used on an empty
6783
+ conversation.
6784
+ anyOf:
6785
+ - type: number
6786
+ - type: "null"
5486
6787
  oldestMessageId:
5487
6788
  description: ID of the oldest message in this page
5488
- type: string
6789
+ anyOf:
6790
+ - type: string
6791
+ - type: "null"
5489
6792
  required:
5490
6793
  - messages
5491
6794
  additionalProperties: false
@@ -5496,7 +6799,7 @@ paths:
5496
6799
  tags:
5497
6800
  - messages
5498
6801
  responses:
5499
- "200":
6802
+ "202":
5500
6803
  description: Successful response
5501
6804
  requestBody:
5502
6805
  required: true
@@ -5518,6 +6821,17 @@ paths:
5518
6821
  type: string
5519
6822
  slashCommand:
5520
6823
  type: string
6824
+ inferenceProfile:
6825
+ anyOf:
6826
+ - type: string
6827
+ - type: "null"
6828
+ riskThreshold:
6829
+ type: string
6830
+ enum:
6831
+ - none
6832
+ - low
6833
+ - medium
6834
+ - high
5521
6835
  required:
5522
6836
  - content
5523
6837
  additionalProperties: false
@@ -5537,6 +6851,12 @@ paths:
5537
6851
  required: true
5538
6852
  schema:
5539
6853
  type: string
6854
+ - name: conversationId
6855
+ in: query
6856
+ required: false
6857
+ schema:
6858
+ type: string
6859
+ description: Optional conversation ID filter
5540
6860
  /v1/messages/{id}/llm-context:
5541
6861
  get:
5542
6862
  operationId: messages_by_id_llmcontext_get
@@ -5558,13 +6878,22 @@ paths:
5558
6878
  type: array
5559
6879
  items: {}
5560
6880
  memoryRecall:
5561
- type: object
5562
- properties: {}
5563
- additionalProperties: {}
6881
+ anyOf:
6882
+ - type: object
6883
+ properties: {}
6884
+ additionalProperties: {}
6885
+ - type: "null"
6886
+ memoryV2Activation:
6887
+ anyOf:
6888
+ - type: object
6889
+ properties: {}
6890
+ additionalProperties: {}
6891
+ - type: "null"
5564
6892
  required:
5565
6893
  - messageId
5566
6894
  - logs
5567
6895
  - memoryRecall
6896
+ - memoryV2Activation
5568
6897
  additionalProperties: false
5569
6898
  parameters:
5570
6899
  - name: id
@@ -5572,9 +6901,9 @@ paths:
5572
6901
  required: true
5573
6902
  schema:
5574
6903
  type: string
5575
- /v1/messages/{id}/tts:
6904
+ /v1/messages/{messageId}/tts:
5576
6905
  post:
5577
- operationId: messages_by_id_tts_post
6906
+ operationId: messages_by_messageId_tts_post
5578
6907
  summary: Synthesize message to speech
5579
6908
  description: Synthesize a message's text content to audio using the configured TTS provider.
5580
6909
  tags:
@@ -5583,7 +6912,7 @@ paths:
5583
6912
  "200":
5584
6913
  description: Successful response
5585
6914
  parameters:
5586
- - name: id
6915
+ - name: messageId
5587
6916
  in: path
5588
6917
  required: true
5589
6918
  schema:
@@ -5610,6 +6939,12 @@ paths:
5610
6939
  required: true
5611
6940
  schema:
5612
6941
  type: string
6942
+ - name: conversationId
6943
+ in: query
6944
+ required: true
6945
+ schema:
6946
+ type: string
6947
+ description: Conversation ID (required)
5613
6948
  /v1/migrations/export:
5614
6949
  post:
5615
6950
  operationId: migrations_export_post
@@ -5633,14 +6968,62 @@ paths:
5633
6968
  required:
5634
6969
  - description
5635
6970
  additionalProperties: false
6971
+ /v1/migrations/export-to-gcs:
6972
+ post:
6973
+ operationId: migrations_exporttogcs_post
6974
+ summary: Start an async export streamed to a GCS signed URL
6975
+ description:
6976
+ Kick off a background export job that PUTs a freshly-built .vbundle archive to the supplied GCS signed URL.
6977
+ Returns 202 with a job_id the caller can poll via the job-status endpoint. Fails fast with 409 if another export
6978
+ job is already pending or running.
6979
+ tags:
6980
+ - migrations
6981
+ responses:
6982
+ "202":
6983
+ description: Successful response
6984
+ content:
6985
+ application/json:
6986
+ schema:
6987
+ type: object
6988
+ properties:
6989
+ job_id:
6990
+ type: string
6991
+ status:
6992
+ type: string
6993
+ const: pending
6994
+ type:
6995
+ type: string
6996
+ const: export
6997
+ required:
6998
+ - job_id
6999
+ - status
7000
+ - type
7001
+ additionalProperties: false
7002
+ requestBody:
7003
+ required: true
7004
+ content:
7005
+ application/json:
7006
+ schema:
7007
+ type: object
7008
+ properties:
7009
+ upload_url:
7010
+ type: string
7011
+ format: uri
7012
+ description: Signed GCS PUT URL that receives the exported bundle.
7013
+ description:
7014
+ description: Human-readable export description.
7015
+ type: string
7016
+ required:
7017
+ - upload_url
7018
+ additionalProperties: false
5636
7019
  /v1/migrations/import:
5637
7020
  post:
5638
7021
  operationId: migrations_import_post
5639
7022
  summary: Import a .vbundle archive
5640
7023
  description:
5641
7024
  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.
7025
+ (application/octet-stream), multipart/form-data, or a JSON body with `{ url }` carrying a signed URL the daemon
7026
+ fetches.
5644
7027
  tags:
5645
7028
  - migrations
5646
7029
  responses:
@@ -5675,55 +7058,67 @@ paths:
5675
7058
  - warnings
5676
7059
  additionalProperties: false
5677
7060
  "502":
5678
- description:
5679
- "Upstream fetch failed (URL body only). Body shape: { success: false, reason: 'fetch_failed',
5680
- upstream_status?: number }."
7061
+ description: Upstream fetch failed (URL body only).
7062
+ requestBody:
7063
+ required: true
7064
+ content:
7065
+ application/json:
7066
+ schema:
7067
+ type: object
7068
+ properties:
7069
+ url:
7070
+ type: string
7071
+ format: uri
7072
+ description: A signed GCS URL pointing to the .vbundle archive (JSON body path only).
7073
+ required:
7074
+ - url
7075
+ additionalProperties: false
7076
+ /v1/migrations/import-from-gcs:
7077
+ post:
7078
+ operationId: migrations_importfromgcs_post
7079
+ summary: Start an async .vbundle import from a signed GCS URL
7080
+ description:
7081
+ Schedule a background import job that fetches the bundle at `bundle_url` and streams it through the
7082
+ importer. Returns 202 with a `job_id`; poll `GET /v1/migrations/jobs/{job_id}` for status. 409 if another import
7083
+ is already in flight.
7084
+ tags:
7085
+ - migrations
7086
+ responses:
7087
+ "202":
7088
+ description: Successful response
5681
7089
  content:
5682
7090
  application/json:
5683
7091
  schema:
5684
7092
  type: object
5685
7093
  properties:
5686
- success:
5687
- type: boolean
5688
- reason:
7094
+ job_id:
5689
7095
  type: string
5690
- enum:
5691
- - fetch_failed
5692
- upstream_status:
5693
- type: integer
7096
+ status:
7097
+ type: string
7098
+ const: pending
7099
+ type:
7100
+ type: string
7101
+ const: import
5694
7102
  required:
5695
- - success
5696
- - reason
7103
+ - job_id
7104
+ - status
7105
+ - type
7106
+ additionalProperties: false
7107
+ "409":
7108
+ description: Another import job is already pending or running.
5697
7109
  requestBody:
5698
7110
  required: true
5699
7111
  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
7112
  application/json:
5716
7113
  schema:
5717
7114
  type: object
5718
7115
  properties:
5719
- url:
7116
+ bundle_url:
5720
7117
  type: string
5721
7118
  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
7119
  required:
5726
- - url
7120
+ - bundle_url
7121
+ additionalProperties: false
5727
7122
  /v1/migrations/import-preflight:
5728
7123
  post:
5729
7124
  operationId: migrations_importpreflight_post
@@ -5762,6 +7157,94 @@ paths:
5762
7157
  - conflicts
5763
7158
  - manifest
5764
7159
  additionalProperties: false
7160
+ /v1/migrations/jobs/{job_id}:
7161
+ get:
7162
+ operationId: migrations_jobs_by_job_id_get
7163
+ summary: Get migration job status
7164
+ description:
7165
+ "Return the current status of an async migration job (export or import). The response discriminates on
7166
+ `status`: `processing` (pending or running), `complete` (with `result`), or `failed` (with `error`,
7167
+ `error_code`, optional `upstream_status`)."
7168
+ tags:
7169
+ - migrations
7170
+ responses:
7171
+ "200":
7172
+ description: Successful response
7173
+ content:
7174
+ application/json:
7175
+ schema:
7176
+ oneOf:
7177
+ - type: object
7178
+ properties:
7179
+ job_id:
7180
+ type: string
7181
+ type:
7182
+ type: string
7183
+ enum:
7184
+ - export
7185
+ - import
7186
+ status:
7187
+ type: string
7188
+ const: processing
7189
+ required:
7190
+ - job_id
7191
+ - type
7192
+ - status
7193
+ additionalProperties: false
7194
+ - type: object
7195
+ properties:
7196
+ job_id:
7197
+ type: string
7198
+ type:
7199
+ type: string
7200
+ enum:
7201
+ - export
7202
+ - import
7203
+ status:
7204
+ type: string
7205
+ const: complete
7206
+ result: {}
7207
+ required:
7208
+ - job_id
7209
+ - type
7210
+ - status
7211
+ - result
7212
+ additionalProperties: false
7213
+ - type: object
7214
+ properties:
7215
+ job_id:
7216
+ type: string
7217
+ type:
7218
+ type: string
7219
+ enum:
7220
+ - export
7221
+ - import
7222
+ status:
7223
+ type: string
7224
+ const: failed
7225
+ error:
7226
+ type: string
7227
+ error_code:
7228
+ type: string
7229
+ upstream_status:
7230
+ type: integer
7231
+ minimum: -9007199254740991
7232
+ maximum: 9007199254740991
7233
+ required:
7234
+ - job_id
7235
+ - type
7236
+ - status
7237
+ - error
7238
+ - error_code
7239
+ additionalProperties: false
7240
+ "404":
7241
+ description: No job matches the given id.
7242
+ parameters:
7243
+ - name: job_id
7244
+ in: path
7245
+ required: true
7246
+ schema:
7247
+ type: string
5765
7248
  /v1/migrations/validate:
5766
7249
  post:
5767
7250
  operationId: migrations_validate_post
@@ -5889,55 +7372,224 @@ paths:
5889
7372
  required:
5890
7373
  - deliveryId
5891
7374
  additionalProperties: false
5892
- /v1/oauth/apps:
5893
- get:
5894
- operationId: oauth_apps_get
5895
- tags:
5896
- - oauth-apps
5897
- responses:
5898
- "200":
5899
- description: Successful response
5900
- post:
5901
- operationId: oauth_apps_post
5902
- tags:
5903
- - oauth-apps
5904
- responses:
5905
- "200":
5906
- description: Successful response
5907
- /v1/oauth/apps/{appId}/connect:
7375
+ /v1/notifications/emit:
5908
7376
  post:
5909
- operationId: oauth_apps_by_appId_connect_post
5910
- tags:
5911
- - oauth-apps
5912
- responses:
5913
- "200":
5914
- description: Successful response
5915
- parameters:
5916
- - name: appId
5917
- in: path
5918
- required: true
5919
- schema:
5920
- type: string
5921
- /v1/oauth/apps/{appId}/connections:
5922
- get:
5923
- operationId: oauth_apps_by_appId_connections_get
7377
+ operationId: notifications_emit_post
7378
+ summary: Emit a notification signal
7379
+ description: Emit a notification signal into the pipeline for routing and delivery.
5924
7380
  tags:
5925
- - oauth-apps
7381
+ - notifications
5926
7382
  responses:
5927
7383
  "200":
5928
7384
  description: Successful response
5929
- parameters:
5930
- - name: appId
5931
- in: path
5932
- required: true
5933
- schema:
5934
- type: string
5935
- /v1/oauth/apps/{id}:
5936
- delete:
5937
- operationId: oauth_apps_by_id_delete
5938
- tags:
5939
- - oauth-apps
5940
- responses:
7385
+ content:
7386
+ application/json:
7387
+ schema:
7388
+ type: object
7389
+ properties:
7390
+ signalId:
7391
+ type: string
7392
+ dispatched:
7393
+ type: boolean
7394
+ deduplicated:
7395
+ type: boolean
7396
+ reason:
7397
+ type: string
7398
+ required:
7399
+ - signalId
7400
+ - dispatched
7401
+ - deduplicated
7402
+ - reason
7403
+ additionalProperties: false
7404
+ requestBody:
7405
+ required: true
7406
+ content:
7407
+ application/json:
7408
+ schema:
7409
+ type: object
7410
+ properties:
7411
+ sourceEventName:
7412
+ type: string
7413
+ minLength: 1
7414
+ sourceChannel:
7415
+ type: string
7416
+ enum:
7417
+ - assistant_tool
7418
+ - vellum
7419
+ - phone
7420
+ - telegram
7421
+ - slack
7422
+ - scheduler
7423
+ - watcher
7424
+ sourceContextId:
7425
+ type: string
7426
+ minLength: 1
7427
+ attentionHints:
7428
+ type: object
7429
+ properties:
7430
+ requiresAction:
7431
+ type: boolean
7432
+ urgency:
7433
+ type: string
7434
+ enum:
7435
+ - low
7436
+ - medium
7437
+ - high
7438
+ deadlineAt:
7439
+ type: number
7440
+ isAsyncBackground:
7441
+ type: boolean
7442
+ visibleInSourceNow:
7443
+ type: boolean
7444
+ required:
7445
+ - requiresAction
7446
+ - urgency
7447
+ - isAsyncBackground
7448
+ - visibleInSourceNow
7449
+ additionalProperties: false
7450
+ contextPayload:
7451
+ type: object
7452
+ propertyNames:
7453
+ type: string
7454
+ additionalProperties: {}
7455
+ routingIntent:
7456
+ type: string
7457
+ enum:
7458
+ - single_channel
7459
+ - multi_channel
7460
+ - all_channels
7461
+ dedupeKey:
7462
+ type: string
7463
+ throwOnError:
7464
+ type: boolean
7465
+ required:
7466
+ - sourceEventName
7467
+ - sourceChannel
7468
+ - sourceContextId
7469
+ - attentionHints
7470
+ additionalProperties: false
7471
+ /v1/notifications/events:
7472
+ post:
7473
+ operationId: notifications_events_post
7474
+ summary: List notification events
7475
+ description: List recent notification events, optionally filtered by source event name.
7476
+ tags:
7477
+ - notifications
7478
+ responses:
7479
+ "200":
7480
+ description: Successful response
7481
+ content:
7482
+ application/json:
7483
+ schema:
7484
+ type: array
7485
+ items:
7486
+ type: object
7487
+ properties:
7488
+ id:
7489
+ type: string
7490
+ sourceEventName:
7491
+ type: string
7492
+ sourceChannel:
7493
+ type: string
7494
+ sourceContextId:
7495
+ type: string
7496
+ urgency:
7497
+ type: string
7498
+ dedupeKey:
7499
+ anyOf:
7500
+ - type: string
7501
+ - type: "null"
7502
+ createdAt:
7503
+ type: string
7504
+ required:
7505
+ - id
7506
+ - sourceEventName
7507
+ - sourceChannel
7508
+ - sourceContextId
7509
+ - urgency
7510
+ - dedupeKey
7511
+ - createdAt
7512
+ additionalProperties: false
7513
+ requestBody:
7514
+ required: true
7515
+ content:
7516
+ application/json:
7517
+ schema:
7518
+ type: object
7519
+ properties:
7520
+ limit:
7521
+ type: integer
7522
+ exclusiveMinimum: 0
7523
+ maximum: 9007199254740991
7524
+ sourceEventName:
7525
+ type: string
7526
+ additionalProperties: false
7527
+ /v1/oauth/apps:
7528
+ get:
7529
+ operationId: oauth_apps_get
7530
+ summary: List OAuth apps
7531
+ description: List OAuth apps filtered by provider_key.
7532
+ tags:
7533
+ - oauth
7534
+ responses:
7535
+ "200":
7536
+ description: Successful response
7537
+ parameters:
7538
+ - name: provider_key
7539
+ in: query
7540
+ required: true
7541
+ schema:
7542
+ type: string
7543
+ description: OAuth provider key to filter by
7544
+ post:
7545
+ operationId: oauth_apps_post
7546
+ summary: Create OAuth app
7547
+ description: Register a new OAuth app with client credentials.
7548
+ tags:
7549
+ - oauth
7550
+ responses:
7551
+ "201":
7552
+ description: Successful response
7553
+ /v1/oauth/apps/{appId}/connect:
7554
+ post:
7555
+ operationId: oauth_apps_by_appId_connect_post
7556
+ summary: Start OAuth connect
7557
+ description: Start an OAuth connect flow for an app.
7558
+ tags:
7559
+ - oauth
7560
+ responses:
7561
+ "200":
7562
+ description: Successful response
7563
+ parameters:
7564
+ - name: appId
7565
+ in: path
7566
+ required: true
7567
+ schema:
7568
+ type: string
7569
+ /v1/oauth/apps/{appId}/connections:
7570
+ get:
7571
+ operationId: oauth_apps_by_appId_connections_get
7572
+ summary: List OAuth connections
7573
+ description: List connections for an OAuth app.
7574
+ tags:
7575
+ - oauth
7576
+ responses:
7577
+ "200":
7578
+ description: Successful response
7579
+ parameters:
7580
+ - name: appId
7581
+ in: path
7582
+ required: true
7583
+ schema:
7584
+ type: string
7585
+ /v1/oauth/apps/{id}:
7586
+ delete:
7587
+ operationId: oauth_apps_by_id_delete
7588
+ summary: Delete OAuth app
7589
+ description: Delete an OAuth app and disconnect all its connections.
7590
+ tags:
7591
+ - oauth
7592
+ responses:
5941
7593
  "200":
5942
7594
  description: Successful response
5943
7595
  parameters:
@@ -5949,8 +7601,10 @@ paths:
5949
7601
  /v1/oauth/connections/{id}:
5950
7602
  delete:
5951
7603
  operationId: oauth_connections_by_id_delete
7604
+ summary: Disconnect OAuth connection
7605
+ description: Disconnect a single OAuth connection.
5952
7606
  tags:
5953
- - oauth-apps
7607
+ - oauth
5954
7608
  responses:
5955
7609
  "200":
5956
7610
  description: Successful response
@@ -5963,16 +7617,27 @@ paths:
5963
7617
  /v1/oauth/providers:
5964
7618
  get:
5965
7619
  operationId: oauth_providers_get
7620
+ summary: List OAuth providers
7621
+ description: List all registered OAuth providers with optional filtering.
5966
7622
  tags:
5967
- - oauth-providers
7623
+ - oauth
5968
7624
  responses:
5969
7625
  "200":
5970
7626
  description: Successful response
7627
+ parameters:
7628
+ - name: supports_managed_mode
7629
+ in: query
7630
+ required: false
7631
+ schema:
7632
+ type: string
7633
+ description: Filter by managed mode support (true/false)
5971
7634
  /v1/oauth/providers/{providerKey}:
5972
7635
  get:
5973
7636
  operationId: oauth_providers_by_providerKey_get
7637
+ summary: Get OAuth provider
7638
+ description: Get a single OAuth provider by key.
5974
7639
  tags:
5975
- - oauth-providers
7640
+ - oauth
5976
7641
  responses:
5977
7642
  "200":
5978
7643
  description: Successful response
@@ -6008,63 +7673,29 @@ paths:
6008
7673
  - service
6009
7674
  - requestedScopes
6010
7675
  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.
6016
- tags:
6017
- - pairing
6018
- responses:
6019
- "200":
6020
- 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
6051
- /v1/pairing/request:
6052
- post:
6053
- operationId: pairing_request_post
6054
- responses:
6055
- "200":
6056
- description: Successful response
6057
- /v1/pairing/status:
7676
+ /v1/pages/{appId}:
6058
7677
  get:
6059
- operationId: pairing_status_get
7678
+ operationId: pages_by_appId_get
7679
+ summary: Serve app page
7680
+ description: Render and serve a shareable app page as HTML.
7681
+ tags:
7682
+ - apps
6060
7683
  responses:
6061
7684
  "200":
6062
7685
  description: Successful response
7686
+ parameters:
7687
+ - name: appId
7688
+ in: path
7689
+ required: true
7690
+ schema:
7691
+ type: string
6063
7692
  /v1/pending-interactions:
6064
7693
  get:
6065
7694
  operationId: pendinginteractions_get
6066
7695
  summary: List pending interactions
6067
- description: Return pending confirmations and secrets for a conversation.
7696
+ description:
7697
+ Return pending interactions. When conversationKey or conversationId is provided, returns details for that
7698
+ conversation. When neither is provided, returns all pending interactions.
6068
7699
  tags:
6069
7700
  - approvals
6070
7701
  responses:
@@ -6085,9 +7716,27 @@ paths:
6085
7716
  properties: {}
6086
7717
  additionalProperties: {}
6087
7718
  description: Pending secret request or null
6088
- required:
6089
- - pendingConfirmation
6090
- - pendingSecret
7719
+ interactions:
7720
+ type: array
7721
+ items:
7722
+ type: object
7723
+ properties:
7724
+ requestId:
7725
+ type: string
7726
+ conversationId:
7727
+ type: string
7728
+ kind:
7729
+ type: string
7730
+ toolName:
7731
+ type: string
7732
+ riskLevel:
7733
+ type: string
7734
+ required:
7735
+ - requestId
7736
+ - conversationId
7737
+ - kind
7738
+ additionalProperties: false
7739
+ description: All pending interactions (returned when no filters given)
6091
7740
  additionalProperties: false
6092
7741
  parameters:
6093
7742
  - name: conversationKey
@@ -6095,13 +7744,13 @@ paths:
6095
7744
  required: false
6096
7745
  schema:
6097
7746
  type: string
6098
- description: Conversation key
7747
+ description: Conversation key (optional)
6099
7748
  - name: conversationId
6100
7749
  in: query
6101
7750
  required: false
6102
7751
  schema:
6103
7752
  type: string
6104
- description: Conversation ID
7753
+ description: Conversation ID (optional)
6105
7754
  /v1/playground/seed-conversation:
6106
7755
  post:
6107
7756
  operationId: playground_seedconversation_post
@@ -6340,6 +7989,50 @@ paths:
6340
7989
  required: true
6341
7990
  schema:
6342
7991
  type: string
7992
+ /v1/ps:
7993
+ get:
7994
+ operationId: ps_get
7995
+ summary: Process status
7996
+ description: Returns a JSON summary of the assistant's process tree including qdrant and embed-worker status.
7997
+ tags:
7998
+ - system
7999
+ responses:
8000
+ "200":
8001
+ description: Successful response
8002
+ content:
8003
+ application/json:
8004
+ schema:
8005
+ type: object
8006
+ properties:
8007
+ processes:
8008
+ type: array
8009
+ items:
8010
+ $ref: "#/$defs/__schema0"
8011
+ required:
8012
+ - processes
8013
+ additionalProperties: false
8014
+ $defs:
8015
+ __schema0:
8016
+ type: object
8017
+ properties:
8018
+ name:
8019
+ type: string
8020
+ status:
8021
+ type: string
8022
+ enum:
8023
+ - running
8024
+ - not_running
8025
+ - unreachable
8026
+ children:
8027
+ type: array
8028
+ items:
8029
+ $ref: "#/$defs/__schema0"
8030
+ info:
8031
+ type: string
8032
+ required:
8033
+ - name
8034
+ - status
8035
+ additionalProperties: false
6343
8036
  /v1/recordings/pause:
6344
8037
  post:
6345
8038
  operationId: recordings_pause_post
@@ -6418,7 +8111,7 @@ paths:
6418
8111
  tags:
6419
8112
  - recordings
6420
8113
  responses:
6421
- "200":
8114
+ "201":
6422
8115
  description: Successful response
6423
8116
  content:
6424
8117
  application/json:
@@ -6572,6 +8265,13 @@ paths:
6572
8265
  required:
6573
8266
  - schedules
6574
8267
  additionalProperties: false
8268
+ parameters:
8269
+ - name: include_all
8270
+ in: query
8271
+ required: false
8272
+ schema:
8273
+ type: string
8274
+ description: When 'true', include deferred schedules that are normally hidden.
6575
8275
  /v1/schedules/{id}:
6576
8276
  delete:
6577
8277
  operationId: schedules_by_id_delete
@@ -6752,6 +8452,12 @@ paths:
6752
8452
  required: true
6753
8453
  schema:
6754
8454
  type: string
8455
+ - name: limit
8456
+ in: query
8457
+ required: false
8458
+ schema:
8459
+ type: integer
8460
+ description: Max runs to return (default 10, max 100)
6755
8461
  /v1/schedules/{id}/toggle:
6756
8462
  post:
6757
8463
  operationId: schedules_by_id_toggle_post
@@ -6846,7 +8552,7 @@ paths:
6846
8552
  parameters:
6847
8553
  - name: q
6848
8554
  in: query
6849
- required: false
8555
+ required: true
6850
8556
  schema:
6851
8557
  type: string
6852
8558
  description: Search query (required)
@@ -7404,7 +9110,7 @@ paths:
7404
9110
  tags:
7405
9111
  - skills
7406
9112
  responses:
7407
- "200":
9113
+ "201":
7408
9114
  description: Successful response
7409
9115
  content:
7410
9116
  application/json:
@@ -7445,7 +9151,7 @@ paths:
7445
9151
  tags:
7446
9152
  - skills
7447
9153
  responses:
7448
- "200":
9154
+ "204":
7449
9155
  description: Successful response
7450
9156
  parameters:
7451
9157
  - name: id
@@ -8249,36 +9955,96 @@ paths:
8249
9955
  /v1/slack/channels:
8250
9956
  get:
8251
9957
  operationId: slack_channels_get
9958
+ summary: List Slack channels
9959
+ description: List Slack channels, groups, and DMs for the channel picker.
8252
9960
  tags:
8253
- - share
9961
+ - integrations
8254
9962
  responses:
8255
9963
  "200":
8256
9964
  description: Successful response
8257
9965
  /v1/slack/share:
8258
9966
  post:
8259
9967
  operationId: slack_share_post
9968
+ summary: Share to Slack channel
9969
+ description: Post an app link directly to a Slack channel.
9970
+ tags:
9971
+ - integrations
9972
+ responses:
9973
+ "200":
9974
+ description: Successful response
9975
+ /v1/stt/providers:
9976
+ get:
9977
+ operationId: stt_providers_get
9978
+ summary: List STT providers
9979
+ description: Return the catalog of available STT providers with client-facing metadata.
8260
9980
  tags:
8261
- - share
9981
+ - stt
8262
9982
  responses:
8263
9983
  "200":
8264
9984
  description: Successful response
9985
+ content:
9986
+ application/json:
9987
+ schema:
9988
+ type: object
9989
+ properties:
9990
+ providers:
9991
+ type: array
9992
+ items:
9993
+ type: object
9994
+ properties:
9995
+ id:
9996
+ type: string
9997
+ displayName:
9998
+ type: string
9999
+ subtitle:
10000
+ type: string
10001
+ setupMode:
10002
+ type: string
10003
+ setupHint:
10004
+ type: string
10005
+ apiKeyProviderName:
10006
+ type: string
10007
+ conversationStreamingMode:
10008
+ type: string
10009
+ credentialsGuide:
10010
+ type: string
10011
+ required:
10012
+ - id
10013
+ - displayName
10014
+ additionalProperties: false
10015
+ required:
10016
+ - providers
10017
+ additionalProperties: false
8265
10018
  /v1/stt/transcribe:
8266
10019
  post:
8267
10020
  operationId: stt_transcribe_post
8268
10021
  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.
10022
+ description: Transcribe base64-encoded audio to text using the configured STT provider.
8272
10023
  tags:
8273
10024
  - stt
8274
10025
  responses:
8275
10026
  "200":
8276
10027
  description: Successful response
8277
- requestBody:
8278
- required: true
8279
- content:
8280
- application/json:
8281
- schema:
10028
+ content:
10029
+ application/json:
10030
+ schema:
10031
+ type: object
10032
+ properties:
10033
+ text:
10034
+ type: string
10035
+ providerId:
10036
+ type: string
10037
+ boundaryId:
10038
+ type: string
10039
+ required:
10040
+ - text
10041
+ - providerId
10042
+ additionalProperties: false
10043
+ requestBody:
10044
+ required: true
10045
+ content:
10046
+ application/json:
10047
+ schema:
8282
10048
  type: object
8283
10049
  properties:
8284
10050
  audioBase64:
@@ -8464,9 +10230,7 @@ paths:
8464
10230
  type: boolean
8465
10231
  conversationId:
8466
10232
  type: string
8467
- description:
8468
- Id of a newly launched conversation when the action dispatched one (e.g. launch_conversation). Omitted
8469
- otherwise.
10233
+ description: Id of a newly launched conversation when the action dispatched one. Omitted otherwise.
8470
10234
  required:
8471
10235
  - ok
8472
10236
  additionalProperties: false
@@ -8578,6 +10342,378 @@ paths:
8578
10342
  schema:
8579
10343
  type: string
8580
10344
  description: Conversation that owns the surface
10345
+ /v1/tasks/delete:
10346
+ post:
10347
+ operationId: tasks_delete_post
10348
+ summary: Delete task templates
10349
+ description: Delete one or more task templates by ID.
10350
+ tags:
10351
+ - tasks
10352
+ responses:
10353
+ "200":
10354
+ description: Successful response
10355
+ content:
10356
+ application/json:
10357
+ schema:
10358
+ type: object
10359
+ properties:
10360
+ ok:
10361
+ type: boolean
10362
+ content:
10363
+ type: string
10364
+ required:
10365
+ - ok
10366
+ - content
10367
+ additionalProperties: false
10368
+ requestBody:
10369
+ required: true
10370
+ content:
10371
+ application/json:
10372
+ schema:
10373
+ type: object
10374
+ properties:
10375
+ task_ids:
10376
+ minItems: 1
10377
+ type: array
10378
+ items:
10379
+ type: string
10380
+ minLength: 1
10381
+ required:
10382
+ - task_ids
10383
+ additionalProperties: false
10384
+ /v1/tasks/list:
10385
+ post:
10386
+ operationId: tasks_list_post
10387
+ summary: List task templates
10388
+ description: List all saved task templates.
10389
+ tags:
10390
+ - tasks
10391
+ responses:
10392
+ "200":
10393
+ description: Successful response
10394
+ content:
10395
+ application/json:
10396
+ schema:
10397
+ type: object
10398
+ properties:
10399
+ ok:
10400
+ type: boolean
10401
+ content:
10402
+ type: string
10403
+ required:
10404
+ - ok
10405
+ - content
10406
+ additionalProperties: false
10407
+ /v1/tasks/queue/add:
10408
+ post:
10409
+ operationId: tasks_queue_add_post
10410
+ summary: Add to task queue
10411
+ description: Add a new work item to the task queue.
10412
+ tags:
10413
+ - tasks
10414
+ responses:
10415
+ "200":
10416
+ description: Successful response
10417
+ content:
10418
+ application/json:
10419
+ schema:
10420
+ type: object
10421
+ properties:
10422
+ content:
10423
+ type: string
10424
+ isError:
10425
+ type: boolean
10426
+ required:
10427
+ - content
10428
+ additionalProperties: false
10429
+ requestBody:
10430
+ required: true
10431
+ content:
10432
+ application/json:
10433
+ schema:
10434
+ type: object
10435
+ properties:
10436
+ task_id:
10437
+ type: string
10438
+ task_name:
10439
+ type: string
10440
+ title:
10441
+ type: string
10442
+ execution_prompt:
10443
+ type: string
10444
+ notes:
10445
+ type: string
10446
+ priority_tier:
10447
+ type: number
10448
+ sort_index:
10449
+ type: number
10450
+ if_exists:
10451
+ type: string
10452
+ enum:
10453
+ - create_duplicate
10454
+ - reuse_existing
10455
+ - update_existing
10456
+ required_tools:
10457
+ type: array
10458
+ items:
10459
+ type: string
10460
+ additionalProperties: false
10461
+ /v1/tasks/queue/remove:
10462
+ post:
10463
+ operationId: tasks_queue_remove_post
10464
+ summary: Remove from task queue
10465
+ description: Remove a work item from the task queue.
10466
+ tags:
10467
+ - tasks
10468
+ responses:
10469
+ "200":
10470
+ description: Successful response
10471
+ content:
10472
+ application/json:
10473
+ schema:
10474
+ type: object
10475
+ properties:
10476
+ content:
10477
+ type: string
10478
+ isError:
10479
+ type: boolean
10480
+ required:
10481
+ - content
10482
+ additionalProperties: false
10483
+ requestBody:
10484
+ required: true
10485
+ content:
10486
+ application/json:
10487
+ schema:
10488
+ type: object
10489
+ properties:
10490
+ work_item_id:
10491
+ type: string
10492
+ task_id:
10493
+ type: string
10494
+ task_name:
10495
+ type: string
10496
+ title:
10497
+ type: string
10498
+ priority_tier:
10499
+ type: number
10500
+ status:
10501
+ type: string
10502
+ created_order:
10503
+ type: number
10504
+ additionalProperties: false
10505
+ /v1/tasks/queue/run:
10506
+ post:
10507
+ operationId: tasks_queue_run_post
10508
+ summary: Run next task queue item
10509
+ description: Pick up and execute the next work item from the queue.
10510
+ tags:
10511
+ - tasks
10512
+ responses:
10513
+ "200":
10514
+ description: Successful response
10515
+ content:
10516
+ application/json:
10517
+ schema:
10518
+ type: object
10519
+ properties:
10520
+ content:
10521
+ type: string
10522
+ isError:
10523
+ type: boolean
10524
+ required:
10525
+ - content
10526
+ additionalProperties: false
10527
+ requestBody:
10528
+ required: true
10529
+ content:
10530
+ application/json:
10531
+ schema:
10532
+ type: object
10533
+ properties:
10534
+ work_item_id:
10535
+ type: string
10536
+ task_name:
10537
+ type: string
10538
+ title:
10539
+ type: string
10540
+ additionalProperties: false
10541
+ /v1/tasks/queue/show:
10542
+ post:
10543
+ operationId: tasks_queue_show_post
10544
+ summary: Show task queue
10545
+ description: List work items in the task queue, optionally filtered by status.
10546
+ tags:
10547
+ - tasks
10548
+ responses:
10549
+ "200":
10550
+ description: Successful response
10551
+ content:
10552
+ application/json:
10553
+ schema:
10554
+ type: object
10555
+ properties:
10556
+ content:
10557
+ type: string
10558
+ isError:
10559
+ type: boolean
10560
+ required:
10561
+ - content
10562
+ additionalProperties: false
10563
+ requestBody:
10564
+ required: true
10565
+ content:
10566
+ application/json:
10567
+ schema:
10568
+ type: object
10569
+ properties:
10570
+ status:
10571
+ anyOf:
10572
+ - type: string
10573
+ - type: array
10574
+ items:
10575
+ type: string
10576
+ additionalProperties: false
10577
+ /v1/tasks/queue/update:
10578
+ post:
10579
+ operationId: tasks_queue_update_post
10580
+ summary: Update a task queue item
10581
+ description: Update an existing work item in the task queue.
10582
+ tags:
10583
+ - tasks
10584
+ responses:
10585
+ "200":
10586
+ description: Successful response
10587
+ content:
10588
+ application/json:
10589
+ schema:
10590
+ type: object
10591
+ properties:
10592
+ content:
10593
+ type: string
10594
+ isError:
10595
+ type: boolean
10596
+ required:
10597
+ - content
10598
+ additionalProperties: false
10599
+ requestBody:
10600
+ required: true
10601
+ content:
10602
+ application/json:
10603
+ schema:
10604
+ type: object
10605
+ properties:
10606
+ work_item_id:
10607
+ type: string
10608
+ task_id:
10609
+ type: string
10610
+ task_name:
10611
+ type: string
10612
+ title:
10613
+ type: string
10614
+ priority_tier:
10615
+ type: number
10616
+ notes:
10617
+ type: string
10618
+ status:
10619
+ type: string
10620
+ enum:
10621
+ - queued
10622
+ - running
10623
+ - awaiting_review
10624
+ - done
10625
+ - failed
10626
+ - cancelled
10627
+ - archived
10628
+ sort_index:
10629
+ type: number
10630
+ filter_priority_tier:
10631
+ type: number
10632
+ filter_status:
10633
+ type: string
10634
+ created_order:
10635
+ type: number
10636
+ additionalProperties: false
10637
+ /v1/tasks/run:
10638
+ post:
10639
+ operationId: tasks_run_post
10640
+ summary: Run a task template
10641
+ description: Execute a saved task template by name or ID.
10642
+ tags:
10643
+ - tasks
10644
+ responses:
10645
+ "200":
10646
+ description: Successful response
10647
+ content:
10648
+ application/json:
10649
+ schema:
10650
+ type: object
10651
+ properties:
10652
+ ok:
10653
+ type: boolean
10654
+ content:
10655
+ type: string
10656
+ required:
10657
+ - ok
10658
+ - content
10659
+ additionalProperties: false
10660
+ requestBody:
10661
+ required: true
10662
+ content:
10663
+ application/json:
10664
+ schema:
10665
+ type: object
10666
+ properties:
10667
+ task_name:
10668
+ type: string
10669
+ minLength: 1
10670
+ task_id:
10671
+ type: string
10672
+ minLength: 1
10673
+ inputs:
10674
+ type: object
10675
+ propertyNames:
10676
+ type: string
10677
+ additionalProperties:
10678
+ type: string
10679
+ additionalProperties: false
10680
+ /v1/tasks/save:
10681
+ post:
10682
+ operationId: tasks_save_post
10683
+ summary: Save a task template
10684
+ description: Save the current conversation as a reusable task template.
10685
+ tags:
10686
+ - tasks
10687
+ responses:
10688
+ "200":
10689
+ description: Successful response
10690
+ content:
10691
+ application/json:
10692
+ schema:
10693
+ type: object
10694
+ properties:
10695
+ ok:
10696
+ type: boolean
10697
+ content:
10698
+ type: string
10699
+ required:
10700
+ - ok
10701
+ - content
10702
+ additionalProperties: false
10703
+ requestBody:
10704
+ required: true
10705
+ content:
10706
+ application/json:
10707
+ schema:
10708
+ type: object
10709
+ properties:
10710
+ conversation_id:
10711
+ type: string
10712
+ minLength: 1
10713
+ title:
10714
+ type: string
10715
+ minLength: 1
10716
+ additionalProperties: false
8581
10717
  /v1/telemetry/lifecycle:
8582
10718
  post:
8583
10719
  operationId: telemetry_lifecycle_post
@@ -8660,15 +10796,12 @@ paths:
8660
10796
  additionalProperties: {}
8661
10797
  workingDir:
8662
10798
  type: string
8663
- forcePromptSideEffects:
8664
- type: boolean
8665
10799
  isInteractive:
8666
10800
  type: boolean
8667
10801
  required:
8668
10802
  - toolName
8669
10803
  - input
8670
10804
  - workingDir
8671
- - forcePromptSideEffects
8672
10805
  - isInteractive
8673
10806
  additionalProperties: false
8674
10807
  /v1/trace-events:
@@ -8712,154 +10845,73 @@ paths:
8712
10845
  schema:
8713
10846
  type: integer
8714
10847
  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.
8720
- tags:
8721
- - approvals
8722
- responses:
8723
- "200":
8724
- 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:
10848
+ /v1/transfers/{transferId}/content:
8761
10849
  get:
8762
- operationId: trustrules_manage_get
8763
- summary: List all trust rules
8764
- description: Return all persistent trust rules.
10850
+ operationId: transfers_by_transferId_content_get
10851
+ summary: Get transfer content
10852
+ description: "Serve raw file bytes for a to_host transfer. Single-use: returns 404 after first consumption."
8765
10853
  tags:
8766
- - trust-rules
10854
+ - host-transfer
8767
10855
  responses:
8768
10856
  "200":
8769
10857
  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
8785
- post:
8786
- operationId: trustrules_manage_post
8787
- summary: Add a trust rule
8788
- description: Create a new persistent trust rule (standalone, not approval-flow).
10858
+ parameters:
10859
+ - name: transferId
10860
+ in: path
10861
+ required: true
10862
+ schema:
10863
+ type: string
10864
+ put:
10865
+ operationId: transfers_by_transferId_content_put
10866
+ summary: Put transfer content
10867
+ description: Receive raw file bytes for a to_sandbox transfer. Verifies SHA-256 integrity via the X-Transfer-SHA256 header.
8789
10868
  tags:
8790
- - trust-rules
10869
+ - host-transfer
8791
10870
  responses:
8792
10871
  "200":
8793
10872
  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
- requestBody:
8805
- required: true
8806
- content:
8807
- application/json:
8808
- schema:
8809
- type: object
8810
- properties:
8811
- toolName:
8812
- type: string
8813
- description: Tool name
8814
- pattern:
8815
- type: string
8816
- description: Allowlist pattern
8817
- scope:
8818
- 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:
8824
- type: string
8825
- description: Execution target
8826
- required:
8827
- - toolName
8828
- - pattern
8829
- - decision
8830
- additionalProperties: false
8831
- /v1/trust-rules/manage/{id}:
8832
- delete:
8833
- operationId: trustrules_manage_by_id_delete
8834
- summary: Remove a trust rule
8835
- description: Delete a trust rule by ID.
10873
+ parameters:
10874
+ - name: transferId
10875
+ in: path
10876
+ required: true
10877
+ schema:
10878
+ type: string
10879
+ /v1/trust-rules:
10880
+ get:
10881
+ operationId: trustrules_get
10882
+ summary: List trust rules
10883
+ description: List trust rules, optionally filtered by tool, origin, or include_all.
8836
10884
  tags:
8837
10885
  - trust-rules
8838
10886
  responses:
8839
10887
  "200":
8840
10888
  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
10889
  parameters:
8852
- - name: id
8853
- in: path
8854
- required: true
10890
+ - name: tool
10891
+ in: query
10892
+ required: false
8855
10893
  schema:
8856
10894
  type: string
8857
- patch:
8858
- operationId: trustrules_manage_by_id_patch
8859
- summary: Update a trust rule
8860
- description: Partially update fields on an existing trust rule.
10895
+ description: Filter by tool name
10896
+ - name: origin
10897
+ in: query
10898
+ required: false
10899
+ schema:
10900
+ type: string
10901
+ description: Filter by origin
10902
+ - name: include_all
10903
+ in: query
10904
+ required: false
10905
+ schema:
10906
+ type: string
10907
+ description: Include unmodified defaults
10908
+ /v1/trust-rules/suggest:
10909
+ post:
10910
+ operationId: trustrules_suggest_post
10911
+ summary: Suggest a trust rule
10912
+ description: Use an LLM to suggest a trust rule pattern, risk level, and scope for a given action.
8861
10913
  tags:
8862
- - trust-rules
10914
+ - trust
8863
10915
  responses:
8864
10916
  "200":
8865
10917
  description: Successful response
@@ -8868,17 +10920,46 @@ paths:
8868
10920
  schema:
8869
10921
  type: object
8870
10922
  properties:
8871
- ok:
8872
- type: boolean
10923
+ pattern:
10924
+ type: string
10925
+ risk:
10926
+ type: string
10927
+ scope:
10928
+ type: string
10929
+ description:
10930
+ type: string
10931
+ scopeOptions:
10932
+ type: array
10933
+ items:
10934
+ type: object
10935
+ properties:
10936
+ pattern:
10937
+ type: string
10938
+ label:
10939
+ type: string
10940
+ required:
10941
+ - pattern
10942
+ - label
10943
+ additionalProperties: false
10944
+ directoryScopeOptions:
10945
+ type: array
10946
+ items:
10947
+ type: object
10948
+ properties:
10949
+ scope:
10950
+ type: string
10951
+ label:
10952
+ type: string
10953
+ required:
10954
+ - scope
10955
+ - label
10956
+ additionalProperties: false
8873
10957
  required:
8874
- - ok
10958
+ - pattern
10959
+ - risk
10960
+ - description
10961
+ - scopeOptions
8875
10962
  additionalProperties: false
8876
- parameters:
8877
- - name: id
8878
- in: path
8879
- required: true
8880
- schema:
8881
- type: string
8882
10963
  requestBody:
8883
10964
  required: true
8884
10965
  content:
@@ -8888,33 +10969,84 @@ paths:
8888
10969
  properties:
8889
10970
  tool:
8890
10971
  type: string
8891
- description: Tool name
8892
- pattern:
10972
+ minLength: 1
10973
+ command:
8893
10974
  type: string
8894
- description: Allowlist pattern
8895
- scope:
10975
+ minLength: 1
10976
+ riskAssessment:
10977
+ type: object
10978
+ properties:
10979
+ risk:
10980
+ type: string
10981
+ reasoning:
10982
+ type: string
10983
+ reasonDescription:
10984
+ type: string
10985
+ required:
10986
+ - risk
10987
+ - reasoning
10988
+ - reasonDescription
10989
+ additionalProperties: false
10990
+ scopeOptions:
10991
+ type: array
10992
+ items:
10993
+ type: object
10994
+ properties:
10995
+ pattern:
10996
+ type: string
10997
+ label:
10998
+ type: string
10999
+ required:
11000
+ - pattern
11001
+ - label
11002
+ additionalProperties: false
11003
+ directoryScopeOptions:
11004
+ type: array
11005
+ items:
11006
+ type: object
11007
+ properties:
11008
+ scope:
11009
+ type: string
11010
+ label:
11011
+ type: string
11012
+ required:
11013
+ - scope
11014
+ - label
11015
+ additionalProperties: false
11016
+ currentThreshold:
8896
11017
  type: string
8897
- description: Scope
8898
- decision:
11018
+ intent:
8899
11019
  type: string
8900
- description: allow, deny, or ask
8901
- priority:
8902
- type: number
8903
- description: Rule priority
11020
+ enum:
11021
+ - auto_approve
11022
+ - escalate
11023
+ existingRule:
11024
+ type: object
11025
+ properties:
11026
+ id:
11027
+ type: string
11028
+ pattern:
11029
+ type: string
11030
+ risk:
11031
+ type: string
11032
+ required:
11033
+ - id
11034
+ - pattern
11035
+ - risk
11036
+ additionalProperties: false
8904
11037
  required:
8905
11038
  - tool
8906
- - pattern
8907
- - scope
8908
- - decision
8909
- - priority
11039
+ - command
11040
+ - riskAssessment
11041
+ - scopeOptions
11042
+ - currentThreshold
11043
+ - intent
8910
11044
  additionalProperties: false
8911
11045
  /v1/tts/synthesize:
8912
11046
  post:
8913
11047
  operationId: tts_synthesize_post
8914
11048
  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.
11049
+ description: Synthesize arbitrary text to audio using the configured TTS provider.
8918
11050
  tags:
8919
11051
  - tts
8920
11052
  responses:
@@ -8931,9 +11063,7 @@ paths:
8931
11063
  type: string
8932
11064
  description: Text to synthesize into speech
8933
11065
  context:
8934
- description:
8935
- Optional context hint for output policy or capability selection (e.g. voice-mode). Does not affect provider
8936
- selection.
11066
+ description: Optional context hint for output policy or capability selection.
8937
11067
  type: string
8938
11068
  conversationId:
8939
11069
  description: Optional conversation ID for scoping or analytics.
@@ -8941,11 +11071,75 @@ paths:
8941
11071
  required:
8942
11072
  - text
8943
11073
  additionalProperties: false
11074
+ /v1/ui/request:
11075
+ post:
11076
+ operationId: ui_request_post
11077
+ summary: Present an interactive UI surface
11078
+ description: Present an interactive UI surface to the user and await their response.
11079
+ tags:
11080
+ - ui
11081
+ responses:
11082
+ "200":
11083
+ description: Successful response
11084
+ requestBody:
11085
+ required: true
11086
+ content:
11087
+ application/json:
11088
+ schema:
11089
+ type: object
11090
+ properties:
11091
+ conversationId:
11092
+ type: string
11093
+ minLength: 1
11094
+ surfaceType:
11095
+ type: string
11096
+ enum:
11097
+ - confirmation
11098
+ - form
11099
+ title:
11100
+ type: string
11101
+ data:
11102
+ type: object
11103
+ propertyNames:
11104
+ type: string
11105
+ additionalProperties: {}
11106
+ actions:
11107
+ type: array
11108
+ items:
11109
+ type: object
11110
+ properties:
11111
+ id:
11112
+ type: string
11113
+ minLength: 1
11114
+ label:
11115
+ type: string
11116
+ minLength: 1
11117
+ variant:
11118
+ type: string
11119
+ enum:
11120
+ - primary
11121
+ - danger
11122
+ - secondary
11123
+ required:
11124
+ - id
11125
+ - label
11126
+ additionalProperties: false
11127
+ timeoutMs:
11128
+ type: integer
11129
+ exclusiveMinimum: 0
11130
+ maximum: 9007199254740991
11131
+ required:
11132
+ - conversationId
11133
+ - surfaceType
11134
+ - data
11135
+ additionalProperties: false
8944
11136
  /v1/usage/breakdown:
8945
11137
  get:
8946
11138
  operationId: usage_breakdown_get
8947
11139
  summary: Get usage breakdown
8948
- description: Return grouped usage breakdown (by actor, provider, model, or conversation).
11140
+ description:
11141
+ Return grouped usage breakdown. Prefer call_site for user-facing task breakdowns; actor is a
11142
+ legacy/internal dimension.
8949
11143
  tags:
8950
11144
  - usage
8951
11145
  responses:
@@ -8981,7 +11175,7 @@ paths:
8981
11175
  required: false
8982
11176
  schema:
8983
11177
  type: string
8984
- description: "Group by: actor, provider, model, or conversation (required)"
11178
+ description: "Group by: actor, provider, model, conversation, call_site, inference_profile (required)"
8985
11179
  /v1/usage/daily:
8986
11180
  get:
8987
11181
  operationId: usage_daily_get
@@ -9034,6 +11228,64 @@ paths:
9034
11228
  description:
9035
11229
  IANA timezone identifier (e.g. "America/Los_Angeles"). Bucket boundaries and display labels are computed in
9036
11230
  this timezone. Defaults to "UTC" for backwards compatibility.
11231
+ /v1/usage/series:
11232
+ get:
11233
+ operationId: usage_series_get
11234
+ summary: Get grouped usage series
11235
+ description: Return usage buckets with per-group values for stacked charts. Prefer call_site for user-facing task stacks.
11236
+ tags:
11237
+ - usage
11238
+ responses:
11239
+ "200":
11240
+ description: Successful response
11241
+ content:
11242
+ application/json:
11243
+ schema:
11244
+ type: object
11245
+ properties:
11246
+ buckets:
11247
+ type: array
11248
+ items: {}
11249
+ description: Grouped usage bucket objects
11250
+ required:
11251
+ - buckets
11252
+ additionalProperties: false
11253
+ parameters:
11254
+ - name: from
11255
+ in: query
11256
+ required: false
11257
+ schema:
11258
+ type: integer
11259
+ description: Start epoch millis (required)
11260
+ - name: to
11261
+ in: query
11262
+ required: false
11263
+ schema:
11264
+ type: integer
11265
+ description: End epoch millis (required)
11266
+ - name: granularity
11267
+ in: query
11268
+ required: false
11269
+ schema:
11270
+ type: string
11271
+ enum:
11272
+ - daily
11273
+ - hourly
11274
+ description: 'Bucket granularity: "daily" (default) or "hourly"'
11275
+ - name: groupBy
11276
+ in: query
11277
+ required: false
11278
+ schema:
11279
+ type: string
11280
+ description: "Group by: actor, provider, model, call_site, inference_profile (required)"
11281
+ - name: tz
11282
+ in: query
11283
+ required: false
11284
+ schema:
11285
+ type: string
11286
+ description:
11287
+ IANA timezone identifier (e.g. "America/Los_Angeles"). Bucket boundaries and display labels are computed in
11288
+ this timezone. Defaults to "UTC".
9037
11289
  /v1/usage/totals:
9038
11290
  get:
9039
11291
  operationId: usage_totals_get
@@ -9057,6 +11309,196 @@ paths:
9057
11309
  schema:
9058
11310
  type: integer
9059
11311
  description: End epoch millis (required)
11312
+ /v1/watchers/create:
11313
+ post:
11314
+ operationId: watchers_create_post
11315
+ summary: Create a watcher
11316
+ description: Create a new watcher with a provider and action prompt.
11317
+ tags:
11318
+ - watchers
11319
+ responses:
11320
+ "200":
11321
+ description: Successful response
11322
+ content:
11323
+ application/json:
11324
+ schema:
11325
+ type: object
11326
+ properties: {}
11327
+ additionalProperties: {}
11328
+ requestBody:
11329
+ required: true
11330
+ content:
11331
+ application/json:
11332
+ schema:
11333
+ type: object
11334
+ properties:
11335
+ name:
11336
+ type: string
11337
+ minLength: 1
11338
+ provider:
11339
+ type: string
11340
+ minLength: 1
11341
+ action_prompt:
11342
+ type: string
11343
+ minLength: 1
11344
+ poll_interval_ms:
11345
+ type: integer
11346
+ minimum: 15000
11347
+ maximum: 9007199254740991
11348
+ config:
11349
+ type: object
11350
+ propertyNames:
11351
+ type: string
11352
+ additionalProperties: {}
11353
+ credential_service:
11354
+ type: string
11355
+ required:
11356
+ - name
11357
+ - provider
11358
+ - action_prompt
11359
+ additionalProperties: false
11360
+ /v1/watchers/delete:
11361
+ post:
11362
+ operationId: watchers_delete_post
11363
+ summary: Delete a watcher
11364
+ description: Delete a watcher by ID.
11365
+ tags:
11366
+ - watchers
11367
+ responses:
11368
+ "200":
11369
+ description: Successful response
11370
+ content:
11371
+ application/json:
11372
+ schema:
11373
+ type: object
11374
+ properties: {}
11375
+ additionalProperties: {}
11376
+ requestBody:
11377
+ required: true
11378
+ content:
11379
+ application/json:
11380
+ schema:
11381
+ type: object
11382
+ properties:
11383
+ watcher_id:
11384
+ type: string
11385
+ minLength: 1
11386
+ required:
11387
+ - watcher_id
11388
+ additionalProperties: false
11389
+ /v1/watchers/digest:
11390
+ post:
11391
+ operationId: watchers_digest_post
11392
+ summary: Get watcher event digest
11393
+ description: Get recent watcher events, optionally filtered by watcher ID.
11394
+ tags:
11395
+ - watchers
11396
+ responses:
11397
+ "200":
11398
+ description: Successful response
11399
+ content:
11400
+ application/json:
11401
+ schema:
11402
+ type: object
11403
+ properties: {}
11404
+ additionalProperties: {}
11405
+ requestBody:
11406
+ required: true
11407
+ content:
11408
+ application/json:
11409
+ schema:
11410
+ type: object
11411
+ properties:
11412
+ watcher_id:
11413
+ type: string
11414
+ hours:
11415
+ default: 24
11416
+ type: number
11417
+ exclusiveMinimum: 0
11418
+ limit:
11419
+ default: 50
11420
+ type: integer
11421
+ exclusiveMinimum: 0
11422
+ maximum: 9007199254740991
11423
+ required:
11424
+ - hours
11425
+ - limit
11426
+ additionalProperties: false
11427
+ /v1/watchers/list:
11428
+ post:
11429
+ operationId: watchers_list_post
11430
+ summary: List watchers
11431
+ description: List all watchers, or get details for a specific watcher by ID.
11432
+ tags:
11433
+ - watchers
11434
+ responses:
11435
+ "200":
11436
+ description: Successful response
11437
+ content:
11438
+ application/json:
11439
+ schema:
11440
+ type: object
11441
+ properties: {}
11442
+ additionalProperties: {}
11443
+ requestBody:
11444
+ required: true
11445
+ content:
11446
+ application/json:
11447
+ schema:
11448
+ type: object
11449
+ properties:
11450
+ watcher_id:
11451
+ type: string
11452
+ enabled_only:
11453
+ default: false
11454
+ type: boolean
11455
+ required:
11456
+ - enabled_only
11457
+ additionalProperties: false
11458
+ /v1/watchers/update:
11459
+ post:
11460
+ operationId: watchers_update_post
11461
+ summary: Update a watcher
11462
+ description: Update an existing watcher's configuration.
11463
+ tags:
11464
+ - watchers
11465
+ responses:
11466
+ "200":
11467
+ description: Successful response
11468
+ content:
11469
+ application/json:
11470
+ schema:
11471
+ type: object
11472
+ properties: {}
11473
+ additionalProperties: {}
11474
+ requestBody:
11475
+ required: true
11476
+ content:
11477
+ application/json:
11478
+ schema:
11479
+ type: object
11480
+ properties:
11481
+ watcher_id:
11482
+ type: string
11483
+ minLength: 1
11484
+ name:
11485
+ type: string
11486
+ action_prompt:
11487
+ type: string
11488
+ poll_interval_ms:
11489
+ type: integer
11490
+ minimum: 15000
11491
+ maximum: 9007199254740991
11492
+ enabled:
11493
+ type: boolean
11494
+ config:
11495
+ type: object
11496
+ propertyNames:
11497
+ type: string
11498
+ additionalProperties: {}
11499
+ required:
11500
+ - watcher_id
11501
+ additionalProperties: false
9060
11502
  /v1/work-items:
9061
11503
  get:
9062
11504
  operationId: workitems_get
@@ -9078,6 +11520,21 @@ paths:
9078
11520
  required:
9079
11521
  - items
9080
11522
  additionalProperties: false
11523
+ parameters:
11524
+ - name: status
11525
+ in: query
11526
+ required: false
11527
+ schema:
11528
+ type: string
11529
+ enum:
11530
+ - pending
11531
+ - running
11532
+ - awaiting_review
11533
+ - done
11534
+ - failed
11535
+ - cancelled
11536
+ - archived
11537
+ description: Filter by work item status
9081
11538
  /v1/work-items/{id}:
9082
11539
  delete:
9083
11540
  operationId: workitems_by_id_delete
@@ -9192,6 +11649,10 @@ paths:
9192
11649
  responses:
9193
11650
  "200":
9194
11651
  description: Successful response
11652
+ "404":
11653
+ description: Work item not found
11654
+ "409":
11655
+ description: Work item is not running
9195
11656
  parameters:
9196
11657
  - name: id
9197
11658
  in: path
@@ -9292,6 +11753,12 @@ paths:
9292
11753
  responses:
9293
11754
  "200":
9294
11755
  description: Successful response
11756
+ "403":
11757
+ description: Required tool permissions not approved
11758
+ "404":
11759
+ description: Work item or associated task not found
11760
+ "409":
11761
+ description: Work item is already running or not runnable
9295
11762
  parameters:
9296
11763
  - name: id
9297
11764
  in: path
@@ -9318,6 +11785,13 @@ paths:
9318
11785
  responses:
9319
11786
  "200":
9320
11787
  description: Successful response
11788
+ parameters:
11789
+ - name: path
11790
+ in: query
11791
+ required: true
11792
+ schema:
11793
+ type: string
11794
+ description: File path to read
9321
11795
  /v1/workspace/delete:
9322
11796
  post:
9323
11797
  operationId: workspace_delete_post
@@ -9328,6 +11802,16 @@ paths:
9328
11802
  responses:
9329
11803
  "200":
9330
11804
  description: Successful response
11805
+ content:
11806
+ application/json:
11807
+ schema:
11808
+ type: object
11809
+ properties:
11810
+ success:
11811
+ type: boolean
11812
+ required:
11813
+ - success
11814
+ additionalProperties: false
9331
11815
  requestBody:
9332
11816
  required: true
9333
11817
  content:
@@ -9403,13 +11887,15 @@ paths:
9403
11887
  responses:
9404
11888
  "200":
9405
11889
  description: Successful response
11890
+ "416":
11891
+ description: Range Not Satisfiable
9406
11892
  parameters:
9407
11893
  - name: path
9408
11894
  in: query
9409
- required: false
11895
+ required: true
9410
11896
  schema:
9411
11897
  type: string
9412
- description: Relative file path (required)
11898
+ description: Relative file path
9413
11899
  - name: showHidden
9414
11900
  in: query
9415
11901
  required: false