@vellumai/assistant 0.6.2 → 0.6.4

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 (895) hide show
  1. package/ARCHITECTURE.md +273 -10
  2. package/Dockerfile +2 -3
  3. package/bun.lock +41 -49
  4. package/bunfig.toml +3 -0
  5. package/docs/architecture/memory.md +1 -1
  6. package/docs/backup-troubleshooting.md +52 -0
  7. package/docs/browser-use-architecture-phase2.md +174 -0
  8. package/docs/stt-provider-onboarding.md +120 -0
  9. package/knip.json +12 -2
  10. package/node_modules/@vellumai/ces-contracts/bun.lock +8 -6
  11. package/node_modules/@vellumai/ces-contracts/package.json +3 -3
  12. package/node_modules/@vellumai/ces-contracts/src/rpc.ts +42 -0
  13. package/openapi.yaml +1111 -86
  14. package/package.json +40 -42
  15. package/scripts/generate-openapi.ts +0 -2
  16. package/scripts/test.sh +73 -18
  17. package/src/__tests__/acp-session.test.ts +43 -0
  18. package/src/__tests__/agent-image-optimize.test.ts +28 -0
  19. package/src/__tests__/agent-loop.test.ts +123 -0
  20. package/src/__tests__/anthropic-provider.test.ts +263 -10
  21. package/src/__tests__/app-builder-tool-scripts.test.ts +1 -0
  22. package/src/__tests__/app-executors.test.ts +1 -0
  23. package/src/__tests__/app-source-watcher.test.ts +37 -11
  24. package/src/__tests__/approval-routes-http.test.ts +178 -1
  25. package/src/__tests__/auto-analysis-end-to-end.test.ts +550 -0
  26. package/src/__tests__/auto-analysis-prompt.test.ts +50 -0
  27. package/src/__tests__/browser-fill-credential.test.ts +240 -94
  28. package/src/__tests__/browser-manager.test.ts +40 -27
  29. package/src/__tests__/browser-skill-baseline-tool-payload.test.ts +2 -2
  30. package/src/__tests__/browser-skill-endstate.test.ts +31 -7
  31. package/src/__tests__/btw-routes.test.ts +7 -0
  32. package/src/__tests__/call-controller.test.ts +581 -20
  33. package/src/__tests__/catalog-files.test.ts +1000 -0
  34. package/src/__tests__/channel-approvals.test.ts +53 -0
  35. package/src/__tests__/channel-invite-transport.test.ts +2 -2
  36. package/src/__tests__/channel-readiness-routes.test.ts +16 -20
  37. package/src/__tests__/channel-readiness-service.test.ts +12 -7
  38. package/src/__tests__/checker.test.ts +157 -10
  39. package/src/__tests__/clawhub-files.test.ts +347 -0
  40. package/src/__tests__/commit-message-enrichment-service.test.ts +36 -19
  41. package/src/__tests__/config-analysis.test.ts +100 -0
  42. package/src/__tests__/config-managed-gemini-defaults.test.ts +326 -0
  43. package/src/__tests__/config-schema-cmd.test.ts +2 -2
  44. package/src/__tests__/config-schema.test.ts +1248 -224
  45. package/src/__tests__/config-watcher-cleanup-throttle.test.ts +339 -0
  46. package/src/__tests__/config-watcher.test.ts +43 -8
  47. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +23 -0
  48. package/src/__tests__/contact-store-user-file.test.ts +512 -0
  49. package/src/__tests__/contacts-write.test.ts +197 -0
  50. package/src/__tests__/context-overflow-approval.test.ts +16 -1
  51. package/src/__tests__/context-window-manager.test.ts +88 -0
  52. package/src/__tests__/conversation-abort-tool-results.test.ts +2 -0
  53. package/src/__tests__/conversation-agent-loop-overflow.test.ts +2 -1
  54. package/src/__tests__/conversation-agent-loop.test.ts +99 -3
  55. package/src/__tests__/conversation-analysis-routes.test.ts +2 -2
  56. package/src/__tests__/conversation-attachments.test.ts +80 -4
  57. package/src/__tests__/conversation-confirmation-signals.test.ts +290 -0
  58. package/src/__tests__/conversation-error.test.ts +70 -0
  59. package/src/__tests__/conversation-fork-crud.test.ts +17 -0
  60. package/src/__tests__/conversation-history-web-search.test.ts +12 -4
  61. package/src/__tests__/conversation-host-access-routes.test.ts +229 -0
  62. package/src/__tests__/conversation-init.benchmark.test.ts +6 -1
  63. package/src/__tests__/conversation-inject-context.test.ts +103 -0
  64. package/src/__tests__/conversation-launcher-skill-regression.test.ts +51 -0
  65. package/src/__tests__/conversation-list-source.test.ts +145 -0
  66. package/src/__tests__/conversation-pre-run-repair.test.ts +2 -0
  67. package/src/__tests__/conversation-provider-retry-repair.test.ts +2 -0
  68. package/src/__tests__/conversation-queue.test.ts +946 -62
  69. package/src/__tests__/conversation-routes-disk-view.test.ts +275 -0
  70. package/src/__tests__/conversation-routes-guardian-reply.test.ts +16 -0
  71. package/src/__tests__/conversation-routes-slash-commands.test.ts +1 -0
  72. package/src/__tests__/conversation-runtime-assembly.test.ts +324 -46
  73. package/src/__tests__/conversation-skill-tools.test.ts +7 -4
  74. package/src/__tests__/conversation-slash-commands.test.ts +33 -0
  75. package/src/__tests__/conversation-slash-queue.test.ts +89 -18
  76. package/src/__tests__/conversation-slash-unknown.test.ts +2 -0
  77. package/src/__tests__/conversation-starter-routes.test.ts +126 -0
  78. package/src/__tests__/conversation-starters-cadence.test.ts +161 -0
  79. package/src/__tests__/conversation-store.test.ts +195 -0
  80. package/src/__tests__/conversation-tool-setup-batch-authorized.test.ts +226 -0
  81. package/src/__tests__/conversation-workspace-cache-state.test.ts +193 -0
  82. package/src/__tests__/conversation-workspace-injection.test.ts +2 -0
  83. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +2 -0
  84. package/src/__tests__/credential-execution-approval-bridge.test.ts +32 -1
  85. package/src/__tests__/credential-health-service.test.ts +352 -0
  86. package/src/__tests__/credential-security-invariants.test.ts +6 -3
  87. package/src/__tests__/credential-vault-unit.test.ts +383 -7
  88. package/src/__tests__/credential-vault.test.ts +152 -13
  89. package/src/__tests__/credentials-cli.test.ts +42 -18
  90. package/src/__tests__/cross-provider-web-search.test.ts +146 -35
  91. package/src/__tests__/date-context.test.ts +4 -4
  92. package/src/__tests__/deterministic-verification-control-plane.test.ts +10 -1
  93. package/src/__tests__/device-id.test.ts +112 -0
  94. package/src/__tests__/docker-signing-key-bootstrap.test.ts +167 -4
  95. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +1 -3
  96. package/src/__tests__/email-html-renderer.test.ts +71 -0
  97. package/src/__tests__/email-invite-adapter.test.ts +36 -32
  98. package/src/__tests__/embedding-managed-proxy-selection.test.ts +256 -0
  99. package/src/__tests__/emit-event-signal.test.ts +71 -0
  100. package/src/__tests__/extension-id-sync-guard.test.ts +222 -0
  101. package/src/__tests__/fixtures/mock-chrome-extension.ts +386 -0
  102. package/src/__tests__/gateway-only-enforcement.test.ts +206 -1
  103. package/src/__tests__/gateway-only-guard.test.ts +2 -0
  104. package/src/__tests__/gemini-provider.test.ts +66 -2
  105. package/src/__tests__/get-skill-detail-audit.test.ts +325 -0
  106. package/src/__tests__/gmail-archive-fallback.test.ts +193 -0
  107. package/src/__tests__/gmail-archive-gate.test.ts +246 -0
  108. package/src/__tests__/gmail-preferences.test.ts +117 -0
  109. package/src/__tests__/guardian-routing-invariants.test.ts +70 -2
  110. package/src/__tests__/headless-browser-interactions.test.ts +738 -359
  111. package/src/__tests__/headless-browser-mode.test.ts +614 -0
  112. package/src/__tests__/headless-browser-navigate.test.ts +528 -49
  113. package/src/__tests__/headless-browser-read-tools.test.ts +274 -100
  114. package/src/__tests__/headless-browser-snapshot.test.ts +250 -77
  115. package/src/__tests__/heartbeat-service.test.ts +70 -17
  116. package/src/__tests__/home-state-routes.test.ts +162 -0
  117. package/src/__tests__/host-bash-proxy.test.ts +145 -1
  118. package/src/__tests__/host-browser-e2e-cloud.test.ts +596 -0
  119. package/src/__tests__/host-browser-e2e-self-hosted-capability.test.ts +286 -0
  120. package/src/__tests__/host-browser-e2e-self-hosted.test.ts +374 -0
  121. package/src/__tests__/host-browser-event-routes.test.ts +350 -0
  122. package/src/__tests__/host-browser-proxy.test.ts +444 -0
  123. package/src/__tests__/host-browser-routes.test.ts +198 -0
  124. package/src/__tests__/host-browser-ws-events-e2e.test.ts +423 -0
  125. package/src/__tests__/host-cu-proxy.test.ts +166 -1
  126. package/src/__tests__/host-file-proxy.test.ts +185 -1
  127. package/src/__tests__/host-file-read-tool.test.ts +52 -0
  128. package/src/__tests__/host-proxy-interface.test.ts +165 -0
  129. package/src/__tests__/host-shell-tool.test.ts +1 -11
  130. package/src/__tests__/http-user-message-parity.test.ts +1 -0
  131. package/src/__tests__/identity-intro-cache.test.ts +40 -10
  132. package/src/__tests__/init-feature-flag-overrides.test.ts +38 -112
  133. package/src/__tests__/integration-status.test.ts +6 -7
  134. package/src/__tests__/jobs-store-upsert-debounced.test.ts +141 -0
  135. package/src/__tests__/list-messages-tool-merge.test.ts +37 -12
  136. package/src/__tests__/llm-context-normalization.test.ts +488 -0
  137. package/src/__tests__/llm-context-route-provider.test.ts +86 -5
  138. package/src/__tests__/llm-usage-store.test.ts +363 -0
  139. package/src/__tests__/mcp-client-auth.test.ts +40 -4
  140. package/src/__tests__/mcp-health-check.test.ts +10 -3
  141. package/src/__tests__/media-stream-output.test.ts +555 -0
  142. package/src/__tests__/media-stream-parser.test.ts +374 -0
  143. package/src/__tests__/media-stream-server-integration.test.ts +1234 -0
  144. package/src/__tests__/media-stream-stt-session.test.ts +588 -0
  145. package/src/__tests__/media-turn-detector.test.ts +440 -0
  146. package/src/__tests__/message-queue.test.ts +125 -0
  147. package/src/__tests__/migration-cross-version-compatibility.test.ts +3 -1
  148. package/src/__tests__/migration-export-http.test.ts +67 -8
  149. package/src/__tests__/migration-export-streaming.test.ts +66 -0
  150. package/src/__tests__/migration-import-commit-http.test.ts +109 -7
  151. package/src/__tests__/migration-import-preflight-http.test.ts +6 -5
  152. package/src/__tests__/migration-validate-http.test.ts +3 -3
  153. package/src/__tests__/mock-gateway-ipc.ts +151 -0
  154. package/src/__tests__/model-intents.test.ts +2 -2
  155. package/src/__tests__/native-host-marker-sync-guard.test.ts +157 -0
  156. package/src/__tests__/oauth-apps-routes.test.ts +18 -12
  157. package/src/__tests__/oauth-cli.test.ts +709 -60
  158. package/src/__tests__/oauth-connect-orchestrator.test.ts +118 -24
  159. package/src/__tests__/oauth-provider-seed-logos.test.ts +23 -0
  160. package/src/__tests__/oauth-provider-serializer.test.ts +147 -10
  161. package/src/__tests__/oauth-provider-visibility.test.ts +19 -21
  162. package/src/__tests__/oauth-providers-routes.test.ts +52 -14
  163. package/src/__tests__/oauth-store.test.ts +1465 -176
  164. package/src/__tests__/oauth2-gateway-transport.test.ts +460 -26
  165. package/src/__tests__/onboarding-template-contract.test.ts +81 -70
  166. package/src/__tests__/openai-provider.test.ts +178 -2
  167. package/src/__tests__/openai-responses-cutover-guard.test.ts +184 -0
  168. package/src/__tests__/openai-responses-provider.test.ts +1105 -0
  169. package/src/__tests__/openrouter-token-estimation.test.ts +100 -0
  170. package/src/__tests__/outlook-categories.test.ts +1 -1
  171. package/src/__tests__/outlook-client-automation.test.ts +1 -1
  172. package/src/__tests__/outlook-compose-tools.test.ts +1 -1
  173. package/src/__tests__/outlook-email-watcher.test.ts +1 -1
  174. package/src/__tests__/outlook-follow-up.test.ts +1 -1
  175. package/src/__tests__/outlook-messaging-provider.test.ts +2 -2
  176. package/src/__tests__/outlook-trash.test.ts +1 -1
  177. package/src/__tests__/outlook-unsubscribe.test.ts +32 -3
  178. package/src/__tests__/permission-checker-host-gate.test.ts +74 -14
  179. package/src/__tests__/permission-mode.test.ts +28 -56
  180. package/src/__tests__/persona-resolver.test.ts +251 -0
  181. package/src/__tests__/platform-bash-auto-approve.test.ts +4 -0
  182. package/src/__tests__/platform-callback-registration.test.ts +19 -0
  183. package/src/__tests__/platform.test.ts +92 -1
  184. package/src/__tests__/post-turn-tool-result-truncation.test.ts +343 -0
  185. package/src/__tests__/prechat-onboarding-contract.test.ts +267 -0
  186. package/src/__tests__/pricing.test.ts +174 -0
  187. package/src/__tests__/proxy-approval-callback.test.ts +18 -0
  188. package/src/__tests__/qdrant-manager.test.ts +29 -8
  189. package/src/__tests__/regenerate-fire-and-forget-trace.test.ts +194 -0
  190. package/src/__tests__/relationship-state-contract.test.ts +175 -0
  191. package/src/__tests__/relay-server.test.ts +423 -5
  192. package/src/__tests__/require-fresh-approval.test.ts +40 -1
  193. package/src/__tests__/sanitize-config-for-transfer.test.ts +132 -0
  194. package/src/__tests__/schedule-routes.test.ts +162 -0
  195. package/src/__tests__/search-skills-unified.test.ts +118 -0
  196. package/src/__tests__/secret-detection-handler.test.ts +84 -0
  197. package/src/__tests__/secret-ingress-http.test.ts +1 -0
  198. package/src/__tests__/secret-scanner-executor.test.ts +4 -0
  199. package/src/__tests__/secure-keys.test.ts +107 -0
  200. package/src/__tests__/send-endpoint-busy.test.ts +8 -1
  201. package/src/__tests__/sequence-store.test.ts +1 -1
  202. package/src/__tests__/server-history-render.test.ts +49 -0
  203. package/src/__tests__/set-permission-mode.test.ts +13 -250
  204. package/src/__tests__/settings-routes.test.ts +201 -0
  205. package/src/__tests__/skill-load-feature-flag.test.ts +1 -0
  206. package/src/__tests__/skills-file-content-endpoint.test.ts +801 -0
  207. package/src/__tests__/skills-files-catalog-fallback.test.ts +738 -0
  208. package/src/__tests__/skills.test.ts +5 -2
  209. package/src/__tests__/skillssh-files.test.ts +446 -0
  210. package/src/__tests__/slack-block-formatting.test.ts +110 -0
  211. package/src/__tests__/slack-channel-config.test.ts +576 -16
  212. package/src/__tests__/stt-catalog-parity.test.ts +282 -0
  213. package/src/__tests__/stt-stream-session.test.ts +535 -0
  214. package/src/__tests__/subagent-detail.test.ts +44 -2
  215. package/src/__tests__/subagent-disposal.test.ts +1 -0
  216. package/src/__tests__/subagent-fork-notifications.test.ts +291 -0
  217. package/src/__tests__/subagent-fork-spawn.test.ts +384 -0
  218. package/src/__tests__/subagent-manager-notify.test.ts +1 -0
  219. package/src/__tests__/subagent-notify-parent.test.ts +1 -0
  220. package/src/__tests__/subagent-spawn-tool-fork.test.ts +411 -0
  221. package/src/__tests__/subagent-tools.test.ts +1 -0
  222. package/src/__tests__/subagent-types.test.ts +1 -0
  223. package/src/__tests__/system-prompt-ask-mode.test.ts +27 -71
  224. package/src/__tests__/system-prompt.test.ts +184 -27
  225. package/src/__tests__/task-scheduler.test.ts +32 -6
  226. package/src/__tests__/telegram-config.test.ts +10 -13
  227. package/src/__tests__/telephony-stt-routing.test.ts +329 -0
  228. package/src/__tests__/terminal-tools.test.ts +25 -5
  229. package/src/__tests__/test-preload.ts +18 -0
  230. package/src/__tests__/test-support/browser-skill-harness.ts +4 -1
  231. package/src/__tests__/tool-approval-handler.test.ts +73 -0
  232. package/src/__tests__/tool-executor-lifecycle-events.test.ts +9 -5
  233. package/src/__tests__/tool-executor-shell-integration.test.ts +4 -0
  234. package/src/__tests__/tool-executor.test.ts +33 -24
  235. package/src/__tests__/tool-result-truncation.test.ts +36 -0
  236. package/src/__tests__/tool-side-effects-slack-dm.test.ts +22 -0
  237. package/src/__tests__/top-level-renderer.test.ts +73 -1
  238. package/src/__tests__/transport-hints-queue.test.ts +14 -29
  239. package/src/__tests__/trust-store.test.ts +7 -1
  240. package/src/__tests__/trusted-contact-approval-notifier.test.ts +1 -1
  241. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +109 -0
  242. package/src/__tests__/tts-catalog-parity.test.ts +345 -0
  243. package/src/__tests__/twilio-routes-twiml.test.ts +512 -114
  244. package/src/__tests__/twilio-routes.test.ts +376 -0
  245. package/src/__tests__/unicode.test.ts +293 -0
  246. package/src/__tests__/update-bulletin-format.test.ts +59 -0
  247. package/src/__tests__/update-bulletin.test.ts +206 -5
  248. package/src/__tests__/usage-routes.test.ts +25 -4
  249. package/src/__tests__/user-reference.test.ts +46 -61
  250. package/src/__tests__/v2-consent-policy.test.ts +103 -0
  251. package/src/__tests__/verification-control-plane-policy.test.ts +4 -0
  252. package/src/__tests__/voice-config-update.test.ts +403 -0
  253. package/src/__tests__/voice-quality.test.ts +434 -19
  254. package/src/__tests__/workspace-heartbeat-service.test.ts +7 -0
  255. package/src/__tests__/workspace-migration-033-stt-service-explicit-config.test.ts +547 -0
  256. package/src/__tests__/workspace-migration-034-remove-calls-voice-transcription-provider.test.ts +596 -0
  257. package/src/__tests__/workspace-migration-drop-user-md.test.ts +368 -0
  258. package/src/__tests__/workspace-migration-meets.test.ts +244 -0
  259. package/src/__tests__/workspace-migration-seed-device-id.test.ts +14 -20
  260. package/src/__tests__/workspace-policy.test.ts +2 -0
  261. package/src/acp/client-handler.ts +30 -4
  262. package/src/agent/image-optimize.ts +24 -12
  263. package/src/agent/loop.ts +55 -9
  264. package/src/approvals/guardian-request-resolvers.ts +21 -15
  265. package/src/backup/__tests__/backup-key.test.ts +152 -0
  266. package/src/backup/__tests__/backup-worker.test.ts +767 -0
  267. package/src/backup/__tests__/list-snapshots.test.ts +87 -0
  268. package/src/backup/__tests__/local-writer.test.ts +218 -0
  269. package/src/backup/__tests__/offsite-writer.test.ts +641 -0
  270. package/src/backup/__tests__/paths.test.ts +300 -0
  271. package/src/backup/__tests__/restore.test.ts +498 -0
  272. package/src/backup/__tests__/snapshot-lock.test.ts +352 -0
  273. package/src/backup/__tests__/stream-crypt.test.ts +228 -0
  274. package/src/backup/backup-key.ts +137 -0
  275. package/src/backup/backup-worker.ts +459 -0
  276. package/src/backup/list-snapshots.ts +147 -0
  277. package/src/backup/local-writer.ts +133 -0
  278. package/src/backup/offsite-writer.ts +222 -0
  279. package/src/backup/paths.ts +226 -0
  280. package/src/backup/restore.ts +322 -0
  281. package/src/backup/snapshot-lock.ts +431 -0
  282. package/src/backup/stream-crypt.ts +263 -0
  283. package/src/browser-session/__tests__/manager.test.ts +297 -0
  284. package/src/browser-session/backends/cdp-inspect.ts +30 -0
  285. package/src/browser-session/backends/extension.ts +26 -0
  286. package/src/browser-session/backends/local.ts +24 -0
  287. package/src/browser-session/events.ts +164 -0
  288. package/src/browser-session/index.ts +27 -0
  289. package/src/browser-session/manager.ts +159 -0
  290. package/src/browser-session/types.ts +28 -0
  291. package/src/bundler/package-resolver.ts +4 -0
  292. package/src/calls/audio-store.ts +11 -5
  293. package/src/calls/call-controller.ts +226 -71
  294. package/src/calls/call-domain.ts +9 -0
  295. package/src/calls/call-speech-output.ts +190 -0
  296. package/src/calls/call-transport.ts +77 -0
  297. package/src/calls/media-stream-audio-transcode.ts +173 -0
  298. package/src/calls/media-stream-output.ts +660 -0
  299. package/src/calls/media-stream-parser.ts +300 -0
  300. package/src/calls/media-stream-protocol.ts +166 -0
  301. package/src/calls/media-stream-server.ts +592 -0
  302. package/src/calls/media-stream-stt-session.ts +460 -0
  303. package/src/calls/media-turn-detector.ts +230 -0
  304. package/src/calls/relay-server.ts +90 -75
  305. package/src/calls/resolve-call-tts-provider.ts +136 -0
  306. package/src/calls/telephony-stt-routing.ts +145 -0
  307. package/src/calls/tts-call-strategy.ts +161 -0
  308. package/src/calls/tts-text-sanitizer.ts +32 -16
  309. package/src/calls/twilio-routes.ts +281 -17
  310. package/src/calls/voice-quality.ts +78 -35
  311. package/src/calls/voice-session-bridge.ts +8 -1
  312. package/src/channels/__tests__/types.test.ts +134 -0
  313. package/src/channels/types.ts +69 -3
  314. package/src/cli/__tests__/run-assistant-command.ts +11 -1
  315. package/src/cli/commands/__tests__/backup.test.ts +1165 -0
  316. package/src/cli/commands/__tests__/domain-register.test.ts +234 -0
  317. package/src/cli/commands/__tests__/domain-status.test.ts +132 -0
  318. package/src/cli/commands/__tests__/email-attachment.test.ts +422 -0
  319. package/src/cli/commands/__tests__/email-download.test.ts +16 -1
  320. package/src/cli/commands/__tests__/email-list.test.ts +22 -4
  321. package/src/cli/commands/__tests__/email-register.test.ts +4 -4
  322. package/src/cli/commands/__tests__/email-send.test.ts +37 -4
  323. package/src/cli/commands/__tests__/email-status.test.ts +5 -1
  324. package/src/cli/commands/__tests__/email-unregister.test.ts +34 -5
  325. package/src/cli/commands/backup.ts +993 -0
  326. package/src/cli/commands/conversations.ts +77 -0
  327. package/src/cli/commands/credentials.ts +3 -4
  328. package/src/cli/commands/domain.ts +210 -0
  329. package/src/cli/commands/email.ts +273 -16
  330. package/src/cli/commands/mcp.ts +16 -4
  331. package/src/cli/commands/oauth/__tests__/connect.test.ts +56 -44
  332. package/src/cli/commands/oauth/__tests__/disconnect.test.ts +21 -21
  333. package/src/cli/commands/oauth/__tests__/mode.test.ts +17 -17
  334. package/src/cli/commands/oauth/__tests__/ping.test.ts +16 -16
  335. package/src/cli/commands/oauth/__tests__/providers-delete.test.ts +32 -33
  336. package/src/cli/commands/oauth/__tests__/providers-register.test.ts +330 -0
  337. package/src/cli/commands/oauth/__tests__/providers-update.test.ts +117 -12
  338. package/src/cli/commands/oauth/__tests__/status.test.ts +10 -10
  339. package/src/cli/commands/oauth/__tests__/token.test.ts +7 -7
  340. package/src/cli/commands/oauth/apps.ts +7 -4
  341. package/src/cli/commands/oauth/connect.ts +6 -3
  342. package/src/cli/commands/oauth/disconnect.ts +1 -1
  343. package/src/cli/commands/oauth/mode.ts +12 -3
  344. package/src/cli/commands/oauth/providers.ts +215 -36
  345. package/src/cli/commands/oauth/shared.ts +7 -6
  346. package/src/cli/commands/platform/__tests__/callback-routes-list.test.ts +254 -0
  347. package/src/cli/commands/platform/__tests__/connect.test.ts +6 -0
  348. package/src/cli/commands/platform/__tests__/disconnect.test.ts +7 -1
  349. package/src/cli/commands/platform/__tests__/status.test.ts +6 -0
  350. package/src/cli/commands/platform/index.ts +107 -10
  351. package/src/cli/commands/usage.ts +10 -9
  352. package/src/cli/lib/daemon-credential-client.ts +4 -0
  353. package/src/cli/program.ts +30 -4
  354. package/src/config/__tests__/backup-schema.test.ts +134 -0
  355. package/src/config/assistant-feature-flags.ts +61 -62
  356. package/src/config/bundled-skills/app-builder/SKILL.md +26 -249
  357. package/src/config/bundled-skills/app-builder/references/CUSTOM_ROUTES.md +141 -0
  358. package/src/config/bundled-skills/app-builder/references/INTERACTION_HOOKS.md +56 -0
  359. package/src/config/bundled-skills/app-builder/references/WIDGETS.md +125 -0
  360. package/src/config/bundled-skills/browser/SKILL.md +30 -5
  361. package/src/config/bundled-skills/browser/TOOLS.json +123 -0
  362. package/src/config/bundled-skills/browser/tools/browser-attach.ts +12 -0
  363. package/src/config/bundled-skills/browser/tools/browser-detach.ts +12 -0
  364. package/src/config/bundled-skills/browser/tools/browser-status.ts +12 -0
  365. package/src/config/bundled-skills/browser/tools/browser-wait-for-download.ts +17 -0
  366. package/src/config/bundled-skills/contacts/SKILL.md +5 -2
  367. package/src/config/bundled-skills/document/SKILL.md +4 -0
  368. package/src/config/bundled-skills/gmail/SKILL.md +54 -8
  369. package/src/config/bundled-skills/gmail/TOOLS.json +33 -3
  370. package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +116 -9
  371. package/src/config/bundled-skills/gmail/tools/gmail-outreach-scan.ts +138 -11
  372. package/src/config/bundled-skills/gmail/tools/gmail-preferences-tool.ts +59 -0
  373. package/src/config/bundled-skills/gmail/tools/gmail-preferences.ts +82 -0
  374. package/src/config/bundled-skills/gmail/tools/gmail-sender-digest.ts +113 -17
  375. package/src/config/bundled-skills/gmail/tools/gmail-unsubscribe.ts +2 -2
  376. package/src/config/bundled-skills/media-processing/SKILL.md +3 -9
  377. package/src/config/bundled-skills/media-processing/TOOLS.json +1 -6
  378. package/src/config/bundled-skills/media-processing/__tests__/audio-transcribe.test.ts +125 -0
  379. package/src/config/bundled-skills/media-processing/__tests__/extract-keyframes.test.ts +181 -0
  380. package/src/config/bundled-skills/media-processing/__tests__/preprocess-audio.test.ts +141 -0
  381. package/src/config/bundled-skills/media-processing/services/audio-transcribe.ts +32 -87
  382. package/src/config/bundled-skills/media-processing/services/preprocess.ts +8 -4
  383. package/src/config/bundled-skills/media-processing/tools/extract-keyframes.ts +0 -10
  384. package/src/config/bundled-skills/messaging/SKILL.md +3 -3
  385. package/src/config/bundled-skills/messaging/tools/messaging-archive-by-sender.ts +2 -2
  386. package/src/config/bundled-skills/outlook/SKILL.md +9 -2
  387. package/src/config/bundled-skills/outlook/tools/outlook-unsubscribe.ts +2 -2
  388. package/src/config/bundled-skills/phone-calls/SKILL.md +2 -2
  389. package/src/config/bundled-skills/phone-calls/references/CONFIG.md +27 -18
  390. package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +3 -3
  391. package/src/config/bundled-skills/settings/TOOLS.json +3 -3
  392. package/src/config/bundled-skills/settings/tools/voice-config-update.ts +26 -22
  393. package/src/config/bundled-skills/slack/SKILL.md +1 -0
  394. package/src/config/bundled-skills/subagent/SKILL.md +21 -0
  395. package/src/config/bundled-skills/subagent/TOOLS.json +8 -4
  396. package/src/config/bundled-skills/tasks/SKILL.md +5 -0
  397. package/src/config/bundled-skills/transcribe/SKILL.md +9 -14
  398. package/src/config/bundled-skills/transcribe/TOOLS.json +2 -7
  399. package/src/config/bundled-skills/transcribe/tools/transcribe-media.test.ts +256 -0
  400. package/src/config/bundled-skills/transcribe/tools/transcribe-media.ts +38 -188
  401. package/src/config/bundled-tool-registry.ts +8 -0
  402. package/src/config/env-registry.ts +38 -0
  403. package/src/config/env.ts +49 -4
  404. package/src/config/feature-flag-registry.json +85 -14
  405. package/src/config/loader.ts +82 -13
  406. package/src/config/sanitize-for-transfer.ts +47 -0
  407. package/src/config/schema.ts +81 -15
  408. package/src/config/schemas/__tests__/stt.test.ts +43 -0
  409. package/src/config/schemas/analysis.ts +51 -0
  410. package/src/config/schemas/backup.ts +72 -0
  411. package/src/config/schemas/calls.ts +1 -26
  412. package/src/config/schemas/elevenlabs.ts +0 -59
  413. package/src/config/schemas/filing.ts +47 -7
  414. package/src/config/schemas/heartbeat.ts +27 -5
  415. package/src/config/schemas/host-browser.ts +112 -0
  416. package/src/config/schemas/inference.ts +1 -1
  417. package/src/config/schemas/memory-lifecycle.ts +14 -2
  418. package/src/config/schemas/memory-retrieval.ts +103 -0
  419. package/src/config/schemas/security.ts +0 -6
  420. package/src/config/schemas/services.ts +52 -0
  421. package/src/config/schemas/stt.ts +59 -0
  422. package/src/config/schemas/tts.ts +230 -0
  423. package/src/config/schemas/updates.ts +14 -0
  424. package/src/config/skills.ts +4 -0
  425. package/src/config/types.ts +4 -1
  426. package/src/contacts/contact-store.ts +56 -11
  427. package/src/contacts/contacts-write.ts +38 -1
  428. package/src/context/post-turn-tool-result-truncation.ts +177 -0
  429. package/src/context/tool-result-truncation.ts +2 -1
  430. package/src/context/window-manager.ts +61 -10
  431. package/src/credential-execution/approval-bridge.ts +49 -15
  432. package/src/credential-execution/executable-discovery.ts +12 -2
  433. package/src/credential-execution/process-manager.ts +33 -2
  434. package/src/credential-health/credential-health-service.ts +366 -0
  435. package/src/daemon/__tests__/conversation-lifecycle-auto-analyze.test.ts +324 -0
  436. package/src/daemon/__tests__/conversation-surfaces-launch.test.ts +497 -0
  437. package/src/daemon/__tests__/conversation-tool-setup.test.ts +195 -0
  438. package/src/daemon/__tests__/lifecycle-startup-ordering.test.ts +127 -0
  439. package/src/daemon/app-source-watcher.ts +35 -0
  440. package/src/daemon/config-watcher.ts +99 -5
  441. package/src/daemon/context-overflow-approval.ts +5 -0
  442. package/src/daemon/conversation-agent-loop-handlers.ts +23 -2
  443. package/src/daemon/conversation-agent-loop.ts +153 -42
  444. package/src/daemon/conversation-attachments.ts +40 -0
  445. package/src/daemon/conversation-error.ts +11 -0
  446. package/src/daemon/conversation-history.ts +40 -6
  447. package/src/daemon/conversation-launch.ts +220 -0
  448. package/src/daemon/conversation-lifecycle.ts +59 -9
  449. package/src/daemon/conversation-messaging.ts +37 -3
  450. package/src/daemon/conversation-notifiers.ts +5 -0
  451. package/src/daemon/conversation-process.ts +622 -13
  452. package/src/daemon/conversation-queue-manager.ts +24 -0
  453. package/src/daemon/conversation-runtime-assembly.ts +128 -36
  454. package/src/daemon/conversation-slash.ts +36 -0
  455. package/src/daemon/conversation-surfaces.ts +131 -40
  456. package/src/daemon/conversation-tool-setup.ts +99 -8
  457. package/src/daemon/conversation-usage.ts +7 -4
  458. package/src/daemon/conversation-workspace.ts +12 -0
  459. package/src/daemon/conversation.ts +292 -16
  460. package/src/daemon/date-context.ts +10 -10
  461. package/src/daemon/first-greeting.ts +3 -2
  462. package/src/daemon/handlers/config-slack-channel.ts +269 -94
  463. package/src/daemon/handlers/conversations.ts +13 -141
  464. package/src/daemon/handlers/shared.ts +80 -0
  465. package/src/daemon/handlers/skills.ts +483 -44
  466. package/src/daemon/host-bash-proxy.ts +48 -13
  467. package/src/daemon/host-browser-proxy.ts +192 -0
  468. package/src/daemon/host-cu-proxy.ts +36 -11
  469. package/src/daemon/host-file-proxy.ts +57 -9
  470. package/src/daemon/lifecycle.ts +179 -28
  471. package/src/daemon/message-protocol.ts +13 -0
  472. package/src/daemon/message-types/conversations.ts +89 -14
  473. package/src/daemon/message-types/home.ts +40 -0
  474. package/src/daemon/message-types/host-browser.ts +100 -0
  475. package/src/daemon/message-types/meet.ts +143 -0
  476. package/src/daemon/message-types/messages.ts +19 -5
  477. package/src/daemon/message-types/schedules.ts +34 -2
  478. package/src/daemon/message-types/skills.ts +26 -0
  479. package/src/daemon/message-types/subagents.ts +2 -0
  480. package/src/daemon/message-types/surfaces.ts +2 -0
  481. package/src/daemon/server.ts +439 -14
  482. package/src/daemon/shutdown-handlers.ts +32 -4
  483. package/src/daemon/shutdown-registry.ts +40 -0
  484. package/src/daemon/tool-side-effects.ts +15 -0
  485. package/src/daemon/transport-hints.ts +5 -24
  486. package/src/email/html-renderer.ts +76 -0
  487. package/src/heartbeat/heartbeat-service.ts +93 -7
  488. package/src/home/__tests__/assistant-feed-authoring.test.ts +156 -0
  489. package/src/home/__tests__/emit-feed-event.test.ts +169 -0
  490. package/src/home/__tests__/feed-scheduler.test.ts +194 -0
  491. package/src/home/__tests__/feed-types.test.ts +275 -0
  492. package/src/home/__tests__/feed-writer.test.ts +688 -0
  493. package/src/home/__tests__/phase5-exit-criteria.test.ts +212 -0
  494. package/src/home/__tests__/platform-gmail-digest.test.ts +222 -0
  495. package/src/home/__tests__/progress-formula.test.ts +213 -0
  496. package/src/home/__tests__/relationship-state-writer.test.ts +740 -0
  497. package/src/home/__tests__/rollup-producer.test.ts +398 -0
  498. package/src/home/assistant-feed-authoring.ts +124 -0
  499. package/src/home/emit-feed-event.ts +158 -0
  500. package/src/home/feed-scheduler.ts +247 -0
  501. package/src/home/feed-types.ts +181 -0
  502. package/src/home/feed-writer.ts +469 -0
  503. package/src/home/platform-gmail-digest.ts +163 -0
  504. package/src/home/progress-formula.ts +86 -0
  505. package/src/home/relationship-state-writer.ts +824 -0
  506. package/src/home/relationship-state.ts +143 -0
  507. package/src/home/rollup-producer.ts +384 -0
  508. package/src/hooks/runner.ts +7 -0
  509. package/src/inbound/platform-callback-registration.ts +30 -20
  510. package/src/inbound/public-ingress-urls.ts +12 -0
  511. package/src/instrument.ts +1 -1
  512. package/src/ipc/__tests__/cli-ipc.test.ts +200 -0
  513. package/src/ipc/cli-client.ts +151 -0
  514. package/src/ipc/cli-server.ts +234 -0
  515. package/src/ipc/gateway-client.ts +180 -0
  516. package/src/ipc/routes/index.ts +5 -0
  517. package/src/ipc/routes/wake-conversation.ts +19 -0
  518. package/src/mcp/client.ts +59 -24
  519. package/src/memory/__tests__/auto-analysis-enqueue.test.ts +356 -0
  520. package/src/memory/__tests__/auto-analysis-guard.test.ts +57 -0
  521. package/src/memory/__tests__/conversation-analyze-job.test.ts +232 -0
  522. package/src/memory/__tests__/find-analysis-conversation.test.ts +196 -0
  523. package/src/memory/app-store.ts +31 -1
  524. package/src/memory/attachments-store.ts +70 -0
  525. package/src/memory/auto-analysis-enqueue.ts +127 -0
  526. package/src/memory/auto-analysis-guard.ts +27 -0
  527. package/src/memory/cleanup-schedule-state.ts +37 -0
  528. package/src/memory/conversation-analyze-job.ts +73 -0
  529. package/src/memory/conversation-crud.ts +122 -0
  530. package/src/memory/conversation-disk-view.ts +7 -0
  531. package/src/memory/conversation-group-migration.ts +34 -2
  532. package/src/memory/conversation-queries.ts +6 -5
  533. package/src/memory/conversation-starters-cadence.ts +76 -0
  534. package/src/memory/conversation-title-service.ts +5 -2
  535. package/src/memory/db-init.ts +18 -0
  536. package/src/memory/db-maintenance.ts +108 -0
  537. package/src/memory/db.ts +1 -0
  538. package/src/memory/embedding-backend.test.ts +75 -0
  539. package/src/memory/embedding-backend.ts +131 -5
  540. package/src/memory/embedding-gemini.test.ts +54 -0
  541. package/src/memory/embedding-gemini.ts +20 -9
  542. package/src/memory/embedding-local.ts +176 -17
  543. package/src/memory/graph/consolidation.ts +10 -23
  544. package/src/memory/graph/conversation-graph-memory.ts +15 -0
  545. package/src/memory/graph/extraction-job.ts +15 -0
  546. package/src/memory/graph/extraction.test.ts +23 -0
  547. package/src/memory/graph/extraction.ts +8 -0
  548. package/src/memory/graph/retriever.ts +67 -40
  549. package/src/memory/graph/scoring.test.ts +186 -0
  550. package/src/memory/graph/scoring.ts +31 -1
  551. package/src/memory/graph/store.test.ts +7 -3
  552. package/src/memory/graph/store.ts +47 -12
  553. package/src/memory/graph/tools.ts +1 -1
  554. package/src/memory/group-crud.ts +6 -1
  555. package/src/memory/indexer.ts +95 -16
  556. package/src/memory/job-handlers/cleanup.ts +11 -8
  557. package/src/memory/job-handlers/conversation-starters.ts +16 -10
  558. package/src/memory/jobs-store.ts +64 -4
  559. package/src/memory/jobs-worker.ts +22 -9
  560. package/src/memory/llm-usage-store.ts +137 -60
  561. package/src/memory/migrations/213-oauth-providers-scope-separator.ts +13 -0
  562. package/src/memory/migrations/214-oauth-providers-refresh-url.ts +11 -0
  563. package/src/memory/migrations/215-oauth-providers-revoke.ts +14 -0
  564. package/src/memory/migrations/216-oauth-providers-token-auth-method.ts +30 -0
  565. package/src/memory/migrations/217-conversation-host-access.ts +40 -0
  566. package/src/memory/migrations/218-oauth-providers-logo-url.ts +11 -0
  567. package/src/memory/migrations/219-oauth-providers-token-exchange-body-format.ts +15 -0
  568. package/src/memory/migrations/220-normalize-user-file-by-principal.ts +190 -0
  569. package/src/memory/migrations/221-conversations-archived-at.ts +16 -0
  570. package/src/memory/migrations/index.ts +12 -0
  571. package/src/memory/migrations/registry.ts +16 -0
  572. package/src/memory/qdrant-manager.ts +43 -16
  573. package/src/memory/schema/conversations.ts +3 -0
  574. package/src/memory/schema/oauth.ts +21 -13
  575. package/src/memory/usage-buckets.ts +396 -0
  576. package/src/messaging/providers/gmail/client.ts +57 -6
  577. package/src/messaging/providers/slack/__tests__/adapter-token-routing.test.ts +282 -0
  578. package/src/messaging/providers/slack/adapter.ts +143 -38
  579. package/src/messaging/providers/slack/client.ts +16 -0
  580. package/src/messaging/providers/slack/types.ts +4 -0
  581. package/src/notifications/decision-engine.ts +3 -3
  582. package/src/notifications/signal.ts +5 -0
  583. package/src/oauth/AGENTS.md +76 -0
  584. package/src/oauth/__tests__/identity-verifier.test.ts +25 -19
  585. package/src/oauth/__tests__/seed-providers-managed.test.ts +32 -0
  586. package/src/oauth/byo-connection.test.ts +26 -9
  587. package/src/oauth/byo-connection.ts +10 -8
  588. package/src/oauth/connect-orchestrator.ts +25 -21
  589. package/src/oauth/connect-types.ts +3 -3
  590. package/src/oauth/connection-resolver.test.ts +17 -4
  591. package/src/oauth/connection-resolver.ts +22 -18
  592. package/src/oauth/connection.ts +3 -1
  593. package/src/oauth/manual-token-connection.ts +13 -13
  594. package/src/oauth/oauth-store.ts +223 -100
  595. package/src/oauth/platform-connection.test.ts +101 -3
  596. package/src/oauth/platform-connection.ts +56 -35
  597. package/src/oauth/provider-serializer.ts +31 -5
  598. package/src/oauth/revoke.ts +76 -0
  599. package/src/oauth/seed-providers.ts +133 -87
  600. package/src/oauth/token-persistence.ts +1 -1
  601. package/src/permissions/checker.ts +16 -6
  602. package/src/permissions/defaults.ts +49 -1
  603. package/src/permissions/permission-mode.ts +4 -11
  604. package/src/permissions/prompter.ts +13 -1
  605. package/src/permissions/trust-store.ts +3 -3
  606. package/src/permissions/v2-consent-policy.ts +87 -0
  607. package/src/permissions/workspace-policy.ts +3 -0
  608. package/src/platform/client.test.ts +10 -0
  609. package/src/platform/sync-identity.ts +129 -0
  610. package/src/prompts/persona-resolver.ts +126 -2
  611. package/src/prompts/system-prompt.ts +76 -38
  612. package/src/prompts/templates/BOOTSTRAP-REFERENCE.md +3 -65
  613. package/src/prompts/templates/BOOTSTRAP.md +59 -105
  614. package/src/prompts/templates/SOUL.md +3 -1
  615. package/src/prompts/templates/UPDATES.md +12 -0
  616. package/src/prompts/templates/channels/slack.md +20 -0
  617. package/src/prompts/update-bulletin-format.ts +26 -9
  618. package/src/prompts/update-bulletin.ts +34 -23
  619. package/src/prompts/user-reference.ts +20 -17
  620. package/src/providers/__tests__/provider-secret-catalog.test.ts +42 -0
  621. package/src/providers/anthropic/client.ts +157 -60
  622. package/src/providers/fireworks/client.ts +2 -2
  623. package/src/providers/gemini/client.ts +9 -1
  624. package/src/providers/model-catalog.ts +6 -0
  625. package/src/providers/model-intents.ts +4 -4
  626. package/src/providers/ollama/client.ts +2 -2
  627. package/src/providers/openai/chat-completions-provider.ts +474 -0
  628. package/src/providers/openai/client.ts +25 -440
  629. package/src/providers/openai/responses-provider.ts +502 -0
  630. package/src/providers/openrouter/client.ts +101 -4
  631. package/src/providers/provider-secret-catalog.ts +139 -0
  632. package/src/providers/registry.ts +2 -2
  633. package/src/providers/retry.ts +14 -3
  634. package/src/providers/speech-to-text/__tests__/provider-catalog.test.ts +251 -0
  635. package/src/providers/speech-to-text/__tests__/resolve.test.ts +828 -0
  636. package/src/providers/speech-to-text/deepgram-realtime.test.ts +980 -0
  637. package/src/providers/speech-to-text/deepgram-realtime.ts +767 -0
  638. package/src/providers/speech-to-text/deepgram.test.ts +332 -0
  639. package/src/providers/speech-to-text/deepgram.ts +115 -0
  640. package/src/providers/speech-to-text/google-gemini-live-stream.test.ts +743 -0
  641. package/src/providers/speech-to-text/google-gemini-live-stream.ts +625 -0
  642. package/src/providers/speech-to-text/google-gemini.test.ts +226 -0
  643. package/src/providers/speech-to-text/google-gemini.ts +101 -0
  644. package/src/providers/speech-to-text/openai-whisper-stream.test.ts +564 -0
  645. package/src/providers/speech-to-text/openai-whisper-stream.ts +381 -0
  646. package/src/providers/speech-to-text/openai-whisper.test.ts +1 -37
  647. package/src/providers/speech-to-text/openai-whisper.ts +63 -33
  648. package/src/providers/speech-to-text/provider-catalog.ts +306 -0
  649. package/src/providers/speech-to-text/resolve.ts +386 -6
  650. package/src/providers/types.ts +10 -1
  651. package/src/runtime/AGENTS.md +65 -0
  652. package/src/runtime/__tests__/agent-wake.test.ts +831 -0
  653. package/src/runtime/__tests__/browser-extension-pair-routes.test.ts +715 -0
  654. package/src/runtime/__tests__/capability-tokens.test.ts +258 -0
  655. package/src/runtime/__tests__/chrome-extension-registry.test.ts +518 -0
  656. package/src/runtime/__tests__/runtime-mode.test.ts +62 -0
  657. package/src/runtime/__tests__/slack-block-formatting.test.ts +481 -0
  658. package/src/runtime/agent-wake.ts +512 -0
  659. package/src/runtime/assistant-event-hub.ts +2 -2
  660. package/src/runtime/auth/__tests__/guard-tests.test.ts +1 -0
  661. package/src/runtime/auth/__tests__/middleware.test.ts +116 -1
  662. package/src/runtime/auth/__tests__/route-policy.test.ts +48 -0
  663. package/src/runtime/auth/middleware.ts +98 -0
  664. package/src/runtime/auth/route-policy.ts +33 -9
  665. package/src/runtime/auth/token-service.ts +56 -1
  666. package/src/runtime/btw-sidechain.ts +2 -0
  667. package/src/runtime/capability-tokens.ts +414 -0
  668. package/src/runtime/channel-approvals.ts +18 -5
  669. package/src/runtime/channel-invite-transport.ts +1 -1
  670. package/src/runtime/channel-invite-transports/email.ts +14 -6
  671. package/src/runtime/channel-readiness-service.ts +12 -22
  672. package/src/runtime/chrome-extension-registry.ts +368 -0
  673. package/src/runtime/confirmation-request-guardian-bridge.ts +6 -0
  674. package/src/runtime/guardian-decision-types.ts +7 -0
  675. package/src/runtime/http-server.ts +815 -75
  676. package/src/runtime/http-types.ts +6 -2
  677. package/src/runtime/migrations/__tests__/rebind-secrets-credentials.test.ts +172 -0
  678. package/src/runtime/migrations/__tests__/vbundle-builder-credentials.test.ts +276 -0
  679. package/src/runtime/migrations/__tests__/vbundle-import-credentials.test.ts +198 -0
  680. package/src/runtime/migrations/__tests__/vbundle-legacy-user-md.test.ts +360 -0
  681. package/src/runtime/migrations/migration-transport.ts +7 -0
  682. package/src/runtime/migrations/migration-wizard.ts +23 -2
  683. package/src/runtime/migrations/rebind-secrets-screen.ts +76 -15
  684. package/src/runtime/migrations/vbundle-builder.ts +145 -38
  685. package/src/runtime/migrations/vbundle-import-analyzer.ts +96 -1
  686. package/src/runtime/migrations/vbundle-importer.ts +89 -5
  687. package/src/runtime/pending-interactions.ts +18 -13
  688. package/src/runtime/routes/__tests__/backup-routes.test.ts +967 -0
  689. package/src/runtime/routes/__tests__/home-feed-routes.test.ts +507 -0
  690. package/src/runtime/routes/__tests__/migration-import-credential-filter.test.ts +208 -0
  691. package/src/runtime/routes/__tests__/stt-routes.test.ts +406 -0
  692. package/src/runtime/routes/__tests__/tts-routes.test.ts +474 -0
  693. package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +148 -17
  694. package/src/runtime/routes/app-management-routes.ts +12 -18
  695. package/src/runtime/routes/approval-routes.ts +90 -16
  696. package/src/runtime/routes/attachment-routes.test.ts +9 -3
  697. package/src/runtime/routes/attachment-routes.ts +216 -17
  698. package/src/runtime/routes/backup-routes.ts +519 -0
  699. package/src/runtime/routes/browser-extension-pair-routes.ts +556 -0
  700. package/src/runtime/routes/btw-routes.ts +8 -6
  701. package/src/runtime/routes/contact-routes.test.ts +298 -0
  702. package/src/runtime/routes/contact-routes.ts +132 -5
  703. package/src/runtime/routes/conversation-analysis-routes.ts +22 -141
  704. package/src/runtime/routes/conversation-management-routes.ts +223 -0
  705. package/src/runtime/routes/conversation-routes.ts +598 -103
  706. package/src/runtime/routes/conversation-starter-routes.ts +78 -16
  707. package/src/runtime/routes/filing-routes.ts +93 -0
  708. package/src/runtime/routes/guardian-action-routes.ts +24 -13
  709. package/src/runtime/routes/home-feed-routes.ts +334 -0
  710. package/src/runtime/routes/home-state-routes.ts +138 -0
  711. package/src/runtime/routes/host-browser-routes.ts +268 -0
  712. package/src/runtime/routes/host-file-routes.ts +9 -1
  713. package/src/runtime/routes/identity-intro-cache.ts +7 -3
  714. package/src/runtime/routes/identity-routes.ts +262 -33
  715. package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +46 -39
  716. package/src/runtime/routes/inbound-stages/transcribe-audio.ts +15 -15
  717. package/src/runtime/routes/integrations/slack/__tests__/channel.test.ts +137 -0
  718. package/src/runtime/routes/integrations/slack/__tests__/share.test.ts +179 -0
  719. package/src/runtime/routes/integrations/slack/channel.ts +11 -3
  720. package/src/runtime/routes/integrations/slack/share.ts +45 -7
  721. package/src/runtime/routes/llm-context-normalization.ts +303 -0
  722. package/src/runtime/routes/log-export-routes.ts +42 -22
  723. package/src/runtime/routes/memory-item-routes.test.ts +3 -2
  724. package/src/runtime/routes/memory-item-routes.ts +1 -7
  725. package/src/runtime/routes/migration-routes.ts +122 -2
  726. package/src/runtime/routes/oauth-apps.ts +15 -17
  727. package/src/runtime/routes/oauth-providers.ts +4 -0
  728. package/src/runtime/routes/schedule-routes.ts +24 -11
  729. package/src/runtime/routes/settings-routes.ts +31 -102
  730. package/src/runtime/routes/skills-routes.ts +128 -9
  731. package/src/runtime/routes/stt-routes.ts +233 -0
  732. package/src/runtime/routes/subagents-routes.ts +14 -10
  733. package/src/runtime/routes/surface-action-routes.ts +41 -2
  734. package/src/runtime/routes/tts-routes.ts +108 -24
  735. package/src/runtime/routes/usage-routes.ts +38 -9
  736. package/src/runtime/routes/user-route-dispatcher.ts +50 -5
  737. package/src/runtime/routes/user-routes.ts +13 -1
  738. package/src/runtime/routes/work-items-routes.ts +8 -1
  739. package/src/runtime/routes/workspace-routes.test.ts +22 -0
  740. package/src/runtime/routes/workspace-routes.ts +8 -1
  741. package/src/runtime/routes/workspace-utils.ts +2 -0
  742. package/src/runtime/runtime-mode.ts +33 -0
  743. package/src/runtime/services/__tests__/analyze-conversation.test.ts +444 -0
  744. package/src/runtime/services/__tests__/analyze-deps-singleton.test.ts +67 -0
  745. package/src/runtime/services/__tests__/auto-analysis-prompt.test.ts +53 -0
  746. package/src/runtime/services/__tests__/manual-analysis-prompt.test.ts +41 -0
  747. package/src/runtime/services/analyze-conversation.ts +344 -0
  748. package/src/runtime/services/analyze-deps-singleton.ts +32 -0
  749. package/src/runtime/services/auto-analysis-prompt.ts +55 -0
  750. package/src/runtime/skill-route-registry.ts +49 -0
  751. package/src/runtime/slack-block-formatting.ts +437 -10
  752. package/src/schedule/scheduler.ts +57 -5
  753. package/src/security/ces-credential-client.ts +20 -0
  754. package/src/security/ces-rpc-credential-backend.ts +17 -0
  755. package/src/security/credential-backend.ts +5 -0
  756. package/src/security/oauth2.ts +68 -29
  757. package/src/security/secure-keys.ts +143 -27
  758. package/src/security/token-manager.ts +31 -10
  759. package/src/sequence/engine.ts +23 -0
  760. package/src/sequence/types.ts +1 -1
  761. package/src/skills/catalog-files.ts +554 -0
  762. package/src/skills/category-inference.ts +122 -0
  763. package/src/skills/clawhub-files.ts +213 -0
  764. package/src/skills/clawhub.ts +84 -23
  765. package/src/skills/skill-file-provider.ts +40 -0
  766. package/src/skills/skillssh-files.ts +395 -0
  767. package/src/skills/skillssh-registry.ts +4 -4
  768. package/src/stt/__tests__/daemon-batch-transcriber.test.ts +392 -0
  769. package/src/stt/__tests__/types.test.ts +89 -0
  770. package/src/stt/daemon-batch-transcriber.ts +195 -0
  771. package/src/stt/stt-stream-session.ts +499 -0
  772. package/src/stt/types.ts +330 -0
  773. package/src/stt/wav-encoder.test.ts +373 -0
  774. package/src/stt/wav-encoder.ts +175 -0
  775. package/src/subagent/manager.ts +169 -40
  776. package/src/subagent/types.ts +19 -0
  777. package/src/tools/apps/executors.ts +11 -2
  778. package/src/tools/browser/__tests__/auth-detector.test.ts +202 -108
  779. package/src/tools/browser/__tests__/browser-mode.test.ts +119 -0
  780. package/src/tools/browser/__tests__/browser-status.test.ts +123 -0
  781. package/src/tools/browser/auth-detector.ts +43 -12
  782. package/src/tools/browser/browser-execution.ts +1787 -342
  783. package/src/tools/browser/browser-manager.ts +81 -12
  784. package/src/tools/browser/browser-mode-constants.ts +12 -0
  785. package/src/tools/browser/browser-mode.ts +92 -0
  786. package/src/tools/browser/browser-status-constants.ts +33 -0
  787. package/src/tools/browser/cdp-client/__tests__/accessibility-snapshot.test.ts +318 -0
  788. package/src/tools/browser/cdp-client/__tests__/cdp-dom-helpers.test.ts +1175 -0
  789. package/src/tools/browser/cdp-client/__tests__/cdp-inspect-client.test.ts +1263 -0
  790. package/src/tools/browser/cdp-client/__tests__/extension-cdp-client.test.ts +359 -0
  791. package/src/tools/browser/cdp-client/__tests__/factory.test.ts +1993 -0
  792. package/src/tools/browser/cdp-client/__tests__/fixtures/ax-tree-nested-frames.json +64 -0
  793. package/src/tools/browser/cdp-client/__tests__/fixtures/ax-tree-simple.json +69 -0
  794. package/src/tools/browser/cdp-client/__tests__/local-cdp-client.test.ts +310 -0
  795. package/src/tools/browser/cdp-client/__tests__/types.test.ts +96 -0
  796. package/src/tools/browser/cdp-client/accessibility-snapshot.ts +387 -0
  797. package/src/tools/browser/cdp-client/cdp-dom-helpers.ts +695 -0
  798. package/src/tools/browser/cdp-client/cdp-inspect/__tests__/discovery.test.ts +1007 -0
  799. package/src/tools/browser/cdp-client/cdp-inspect/__tests__/ws-transport.test.ts +580 -0
  800. package/src/tools/browser/cdp-client/cdp-inspect/discovery.ts +744 -0
  801. package/src/tools/browser/cdp-client/cdp-inspect/ws-transport.ts +579 -0
  802. package/src/tools/browser/cdp-client/cdp-inspect-client.ts +868 -0
  803. package/src/tools/browser/cdp-client/errors.ts +49 -0
  804. package/src/tools/browser/cdp-client/extension-cdp-client.ts +148 -0
  805. package/src/tools/browser/cdp-client/factory.ts +914 -0
  806. package/src/tools/browser/cdp-client/index.ts +28 -0
  807. package/src/tools/browser/cdp-client/local-cdp-client.ts +187 -0
  808. package/src/tools/browser/cdp-client/types.ts +120 -0
  809. package/src/tools/credentials/vault.ts +35 -6
  810. package/src/tools/filesystem/edit.ts +1 -1
  811. package/src/tools/filesystem/list.ts +1 -1
  812. package/src/tools/filesystem/read.ts +1 -1
  813. package/src/tools/filesystem/write.ts +2 -1
  814. package/src/tools/host-filesystem/edit.ts +1 -1
  815. package/src/tools/host-filesystem/read.ts +12 -15
  816. package/src/tools/host-filesystem/write.ts +1 -1
  817. package/src/tools/host-terminal/host-shell.ts +21 -16
  818. package/src/tools/network/web-fetch.ts +5 -2
  819. package/src/tools/network/web-search.ts +5 -2
  820. package/src/tools/permission-checker.ts +77 -82
  821. package/src/tools/registry.ts +0 -2
  822. package/src/tools/secret-detection-handler.ts +34 -0
  823. package/src/tools/shared/filesystem/image-read.ts +61 -40
  824. package/src/tools/shared/shell-output.ts +3 -1
  825. package/src/tools/side-effects.ts +2 -0
  826. package/src/tools/skills/sandbox-runner.ts +3 -2
  827. package/src/tools/subagent/spawn.ts +47 -3
  828. package/src/tools/subagent/status.ts +2 -0
  829. package/src/tools/system/register.ts +2 -16
  830. package/src/tools/terminal/safe-env.ts +15 -0
  831. package/src/tools/terminal/shell.ts +36 -20
  832. package/src/tools/tool-approval-handler.ts +48 -2
  833. package/src/tools/tool-manifest.ts +21 -0
  834. package/src/tools/types.ts +19 -0
  835. package/src/tools/ui-surface/definitions.ts +6 -1
  836. package/src/tts/__tests__/provider-adapters.test.ts +834 -0
  837. package/src/tts/__tests__/provider-catalog-consistency.test.ts +196 -0
  838. package/src/tts/__tests__/provider-catalog.test.ts +183 -0
  839. package/src/tts/__tests__/provider-registry.test.ts +90 -0
  840. package/src/tts/provider-catalog.ts +201 -0
  841. package/src/tts/provider-registry.ts +73 -0
  842. package/src/tts/providers/deepgram-provider.ts +219 -0
  843. package/src/tts/providers/elevenlabs-provider.ts +211 -0
  844. package/src/tts/providers/fish-audio-provider.ts +183 -0
  845. package/src/tts/providers/index.ts +42 -0
  846. package/src/tts/providers/register-builtins.ts +130 -0
  847. package/src/tts/synthesize-text.ts +110 -0
  848. package/src/tts/tts-config-resolver.ts +78 -0
  849. package/src/tts/types.ts +153 -0
  850. package/src/types/onboarding-context.ts +7 -0
  851. package/src/util/abort-reasons.ts +58 -0
  852. package/src/util/device-id.ts +32 -16
  853. package/src/util/errors.ts +9 -1
  854. package/src/util/platform.ts +63 -24
  855. package/src/util/pricing.ts +66 -3
  856. package/src/util/spawn.ts +1 -1
  857. package/src/util/truncate.ts +4 -2
  858. package/src/util/unicode.ts +201 -0
  859. package/src/version.ts +19 -24
  860. package/src/watcher/engine.ts +23 -0
  861. package/src/watcher/watcher-store.ts +31 -0
  862. package/src/workspace/migrations/003-seed-device-id.ts +9 -3
  863. package/src/workspace/migrations/017-seed-persona-dirs.ts +68 -4
  864. package/src/workspace/migrations/029-seed-pkb.ts +1 -1
  865. package/src/workspace/migrations/031-drop-user-md.ts +317 -0
  866. package/src/workspace/migrations/031-llm-log-retention-zero-to-null.ts +73 -0
  867. package/src/workspace/migrations/032-tts-provider-unification.ts +227 -0
  868. package/src/workspace/migrations/033-stt-service-explicit-config.ts +122 -0
  869. package/src/workspace/migrations/034-remove-calls-voice-transcription-provider.ts +215 -0
  870. package/src/workspace/migrations/035-seed-slack-channel-persona.ts +50 -0
  871. package/src/workspace/migrations/036-update-pkb-index-bar.ts +37 -0
  872. package/src/workspace/migrations/037-create-meets-dir.ts +61 -0
  873. package/src/workspace/migrations/registry.ts +16 -0
  874. package/src/workspace/top-level-renderer.ts +31 -1
  875. package/src/workspace/turn-commit.ts +31 -0
  876. package/src/__tests__/chrome-cdp.test.ts +0 -419
  877. package/src/__tests__/email-cli.test.ts +0 -297
  878. package/src/__tests__/email-service-config-fallback.test.ts +0 -102
  879. package/src/__tests__/permission-mode-sse.test.ts +0 -418
  880. package/src/__tests__/permission-mode-store.test.ts +0 -277
  881. package/src/browser-extension-relay/protocol.ts +0 -63
  882. package/src/browser-extension-relay/server.ts +0 -203
  883. package/src/cli/commands/browser-relay.ts +0 -536
  884. package/src/config/schemas/sandbox.ts +0 -14
  885. package/src/email/guardrails.ts +0 -221
  886. package/src/email/provider.ts +0 -117
  887. package/src/email/providers/agentmail.ts +0 -361
  888. package/src/email/providers/index.ts +0 -65
  889. package/src/email/service.ts +0 -384
  890. package/src/email/types.ts +0 -126
  891. package/src/permissions/permission-mode-store.ts +0 -180
  892. package/src/prompts/templates/USER.md +0 -13
  893. package/src/providers/speech-to-text/types.ts +0 -17
  894. package/src/tools/browser/chrome-cdp.ts +0 -239
  895. package/src/tools/system/set-permission-mode.ts +0 -103
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.1
6
+ version: 0.6.4
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
@@ -948,7 +948,10 @@ paths:
948
948
  post:
949
949
  operationId: attachments_post
950
950
  summary: Upload attachment
951
- description: Upload an attachment as base64 data or file path reference.
951
+ description:
952
+ Upload an attachment. Supports application/json (base64 data or file path reference), multipart/form-data
953
+ (file + filename + mimeType fields), and application/octet-stream (raw bytes with filename and mimeType query
954
+ params).
952
955
  tags:
953
956
  - attachments
954
957
  responses:
@@ -1118,6 +1121,172 @@ paths:
1118
1121
  - eyeStyle
1119
1122
  - color
1120
1123
  additionalProperties: false
1124
+ /v1/backups:
1125
+ 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`.
1133
+ tags:
1134
+ - backups
1135
+ responses:
1136
+ "200":
1137
+ description: Successful response
1138
+ content:
1139
+ application/json:
1140
+ schema:
1141
+ type: object
1142
+ properties:
1143
+ local:
1144
+ type: array
1145
+ items: {}
1146
+ offsite:
1147
+ type: array
1148
+ items:
1149
+ type: object
1150
+ properties:
1151
+ destination:
1152
+ type: object
1153
+ properties: {}
1154
+ additionalProperties: {}
1155
+ snapshots:
1156
+ type: array
1157
+ items: {}
1158
+ reachable:
1159
+ type: boolean
1160
+ required:
1161
+ - destination
1162
+ - snapshots
1163
+ - reachable
1164
+ additionalProperties: false
1165
+ offsiteEnabled:
1166
+ type: boolean
1167
+ nextRunAt:
1168
+ anyOf:
1169
+ - type: string
1170
+ - type: "null"
1171
+ required:
1172
+ - local
1173
+ - offsite
1174
+ - offsiteEnabled
1175
+ - nextRunAt
1176
+ additionalProperties: false
1177
+ /v1/backups/create:
1178
+ post:
1179
+ operationId: backups_create_post
1180
+ summary: Create a backup snapshot immediately
1181
+ description:
1182
+ Trigger a manual snapshot. Bypasses the enabled and interval gates, but honors the in-progress mutex — a
1183
+ concurrent caller receives 409.
1184
+ tags:
1185
+ - backups
1186
+ responses:
1187
+ "200":
1188
+ description: Successful response
1189
+ content:
1190
+ application/json:
1191
+ schema:
1192
+ type: object
1193
+ properties:
1194
+ local:
1195
+ type: object
1196
+ properties: {}
1197
+ additionalProperties: {}
1198
+ offsite:
1199
+ type: array
1200
+ items: {}
1201
+ durationMs:
1202
+ type: number
1203
+ required:
1204
+ - local
1205
+ - offsite
1206
+ - durationMs
1207
+ additionalProperties: false
1208
+ /v1/backups/restore:
1209
+ post:
1210
+ operationId: backups_restore_post
1211
+ summary: Restore from a backup snapshot
1212
+ description:
1213
+ "Restores a snapshot into the workspace. Destructive: the underlying commit flow backs up existing files
1214
+ before overwriting. The daemon closes the live SQLite handle before writing and invalidates its config/trust
1215
+ caches afterwards. Credentials are NOT included — users re-authenticate integrations after a restore."
1216
+ tags:
1217
+ - backups
1218
+ responses:
1219
+ "200":
1220
+ description: Successful response
1221
+ content:
1222
+ application/json:
1223
+ schema:
1224
+ type: object
1225
+ properties:
1226
+ manifest:
1227
+ type: object
1228
+ properties: {}
1229
+ additionalProperties: {}
1230
+ restoredFiles:
1231
+ type: number
1232
+ required:
1233
+ - manifest
1234
+ - restoredFiles
1235
+ additionalProperties: false
1236
+ requestBody:
1237
+ required: true
1238
+ content:
1239
+ application/json:
1240
+ schema:
1241
+ type: object
1242
+ properties:
1243
+ path:
1244
+ type: string
1245
+ description: Absolute path to the snapshot file to restore
1246
+ required:
1247
+ - path
1248
+ additionalProperties: false
1249
+ /v1/backups/verify:
1250
+ post:
1251
+ operationId: backups_verify_post
1252
+ summary: Verify a backup snapshot
1253
+ description:
1254
+ Validates a snapshot without restoring. Decrypts encrypted bundles to a temp file, runs the vbundle
1255
+ validator, and returns a pass/fail status.
1256
+ tags:
1257
+ - backups
1258
+ responses:
1259
+ "200":
1260
+ description: Successful response
1261
+ content:
1262
+ application/json:
1263
+ schema:
1264
+ type: object
1265
+ properties:
1266
+ valid:
1267
+ type: boolean
1268
+ manifest:
1269
+ type: object
1270
+ properties: {}
1271
+ additionalProperties: {}
1272
+ error:
1273
+ type: string
1274
+ required:
1275
+ - valid
1276
+ additionalProperties: false
1277
+ requestBody:
1278
+ required: true
1279
+ content:
1280
+ application/json:
1281
+ schema:
1282
+ type: object
1283
+ properties:
1284
+ path:
1285
+ type: string
1286
+ description: Absolute path to the snapshot file to verify
1287
+ required:
1288
+ - path
1289
+ additionalProperties: false
1121
1290
  /v1/brain-graph:
1122
1291
  get:
1123
1292
  operationId: braingraph_get
@@ -1169,18 +1338,6 @@ paths:
1169
1338
  responses:
1170
1339
  "200":
1171
1340
  description: Successful response
1172
- /v1/browser-relay/command:
1173
- post:
1174
- operationId: browserrelay_command_post
1175
- responses:
1176
- "200":
1177
- description: Successful response
1178
- /v1/browser-relay/status:
1179
- get:
1180
- operationId: browserrelay_status_get
1181
- responses:
1182
- "200":
1183
- description: Successful response
1184
1341
  /v1/btw:
1185
1342
  post:
1186
1343
  operationId: btw_post
@@ -2126,6 +2283,56 @@ paths:
2126
2283
  required: true
2127
2284
  schema:
2128
2285
  type: string
2286
+ /v1/contacts/guardian/channel:
2287
+ post:
2288
+ operationId: contacts_guardian_channel_post
2289
+ summary: Add a channel to the guardian contact
2290
+ description: Used by the guardian to auto-verify their own channel.
2291
+ tags:
2292
+ - contacts
2293
+ responses:
2294
+ "200":
2295
+ description: Successful response
2296
+ content:
2297
+ application/json:
2298
+ schema:
2299
+ type: object
2300
+ properties:
2301
+ ok:
2302
+ type: boolean
2303
+ contact:
2304
+ type: object
2305
+ properties: {}
2306
+ additionalProperties: {}
2307
+ description: Updated guardian contact
2308
+ required:
2309
+ - ok
2310
+ - contact
2311
+ additionalProperties: false
2312
+ requestBody:
2313
+ required: true
2314
+ content:
2315
+ application/json:
2316
+ schema:
2317
+ type: object
2318
+ properties:
2319
+ type:
2320
+ type: string
2321
+ description: Channel type, e.g. 'email'
2322
+ address:
2323
+ type: string
2324
+ description: Channel address, e.g. 'user@example.com'
2325
+ externalUserId:
2326
+ type: string
2327
+ description: External user ID for trust resolution
2328
+ status:
2329
+ description: "Channel status (default: active)"
2330
+ type: string
2331
+ required:
2332
+ - type
2333
+ - address
2334
+ - externalUserId
2335
+ additionalProperties: false
2129
2336
  /v1/contacts/invites:
2130
2337
  get:
2131
2338
  operationId: contacts_invites_get
@@ -2412,7 +2619,12 @@ paths:
2412
2619
  description: Total number of available starters
2413
2620
  status:
2414
2621
  type: string
2415
- description: "One of: ready, empty, generating"
2622
+ enum:
2623
+ - ready
2624
+ - refreshing
2625
+ - empty
2626
+ - generating
2627
+ description: "One of: ready, refreshing, empty, generating"
2416
2628
  required:
2417
2629
  - starters
2418
2630
  - total
@@ -2537,6 +2749,24 @@ paths:
2537
2749
  required: true
2538
2750
  schema:
2539
2751
  type: string
2752
+ /v1/conversations/{id}/archive:
2753
+ post:
2754
+ operationId: conversations_by_id_archive_post
2755
+ summary: Archive a conversation
2756
+ description:
2757
+ Move a conversation to the archived state. Archived conversations are hidden from the default sidebar but
2758
+ preserved for search and recall.
2759
+ tags:
2760
+ - conversations
2761
+ responses:
2762
+ "200":
2763
+ description: Successful response
2764
+ parameters:
2765
+ - name: id
2766
+ in: path
2767
+ required: true
2768
+ schema:
2769
+ type: string
2540
2770
  /v1/conversations/{id}/cancel:
2541
2771
  post:
2542
2772
  operationId: conversations_by_id_cancel_post
@@ -2553,6 +2783,75 @@ paths:
2553
2783
  required: true
2554
2784
  schema:
2555
2785
  type: string
2786
+ /v1/conversations/{id}/host-access:
2787
+ get:
2788
+ operationId: conversations_by_id_hostaccess_get
2789
+ summary: Get conversation host access
2790
+ description: Return whether the conversation can use host tools.
2791
+ tags:
2792
+ - conversations
2793
+ responses:
2794
+ "200":
2795
+ description: Successful response
2796
+ content:
2797
+ application/json:
2798
+ schema:
2799
+ type: object
2800
+ properties:
2801
+ conversationId:
2802
+ type: string
2803
+ hostAccess:
2804
+ type: boolean
2805
+ required:
2806
+ - conversationId
2807
+ - hostAccess
2808
+ additionalProperties: false
2809
+ parameters:
2810
+ - name: id
2811
+ in: path
2812
+ required: true
2813
+ schema:
2814
+ type: string
2815
+ patch:
2816
+ operationId: conversations_by_id_hostaccess_patch
2817
+ summary: Update conversation host access
2818
+ description: Enable or disable host access for a conversation.
2819
+ tags:
2820
+ - conversations
2821
+ responses:
2822
+ "200":
2823
+ description: Successful response
2824
+ content:
2825
+ application/json:
2826
+ schema:
2827
+ type: object
2828
+ properties:
2829
+ conversationId:
2830
+ type: string
2831
+ hostAccess:
2832
+ type: boolean
2833
+ required:
2834
+ - conversationId
2835
+ - hostAccess
2836
+ additionalProperties: false
2837
+ parameters:
2838
+ - name: id
2839
+ in: path
2840
+ required: true
2841
+ schema:
2842
+ type: string
2843
+ requestBody:
2844
+ required: true
2845
+ content:
2846
+ application/json:
2847
+ schema:
2848
+ type: object
2849
+ properties:
2850
+ hostAccess:
2851
+ type: boolean
2852
+ required:
2853
+ - hostAccess
2854
+ additionalProperties: false
2556
2855
  /v1/conversations/{id}/name:
2557
2856
  patch:
2558
2857
  operationId: conversations_by_id_name_patch
@@ -2597,6 +2896,22 @@ paths:
2597
2896
  required: true
2598
2897
  schema:
2599
2898
  type: string
2899
+ /v1/conversations/{id}/unarchive:
2900
+ post:
2901
+ operationId: conversations_by_id_unarchive_post
2902
+ summary: Unarchive a conversation
2903
+ description: Restore an archived conversation back to the default sidebar.
2904
+ tags:
2905
+ - conversations
2906
+ responses:
2907
+ "200":
2908
+ description: Successful response
2909
+ parameters:
2910
+ - name: id
2911
+ in: path
2912
+ required: true
2913
+ schema:
2914
+ type: string
2600
2915
  /v1/conversations/{id}/undo:
2601
2916
  post:
2602
2917
  operationId: conversations_by_id_undo_post
@@ -2825,10 +3140,13 @@ paths:
2825
3140
  type: string
2826
3141
  conversationType:
2827
3142
  type: string
3143
+ hostAccess:
3144
+ type: boolean
2828
3145
  required:
2829
3146
  - conversationId
2830
3147
  - title
2831
3148
  - conversationType
3149
+ - hostAccess
2832
3150
  additionalProperties: false
2833
3151
  requestBody:
2834
3152
  required: true
@@ -3140,6 +3458,11 @@ paths:
3140
3458
  conversationId:
3141
3459
  description: Scope to a single conversation
3142
3460
  type: string
3461
+ full:
3462
+ description:
3463
+ Full export — include messages, LLM request logs, and usage events for all conversations. Use for test data
3464
+ debugging.
3465
+ type: boolean
3143
3466
  startTime:
3144
3467
  description: Lower bound epoch ms
3145
3468
  type: number
@@ -3147,6 +3470,76 @@ paths:
3147
3470
  description: Upper bound epoch ms
3148
3471
  type: number
3149
3472
  additionalProperties: false
3473
+ /v1/filing/config:
3474
+ get:
3475
+ operationId: filing_config_get
3476
+ summary: Get filing config
3477
+ description: Return the current filing schedule configuration.
3478
+ tags:
3479
+ - filing
3480
+ responses:
3481
+ "200":
3482
+ description: Successful response
3483
+ content:
3484
+ application/json:
3485
+ schema:
3486
+ type: object
3487
+ properties:
3488
+ enabled:
3489
+ type: boolean
3490
+ intervalMs:
3491
+ type: number
3492
+ activeHoursStart:
3493
+ anyOf:
3494
+ - type: number
3495
+ - type: "null"
3496
+ activeHoursEnd:
3497
+ anyOf:
3498
+ - type: number
3499
+ - type: "null"
3500
+ nextRunAt:
3501
+ anyOf:
3502
+ - type: number
3503
+ - type: "null"
3504
+ lastRunAt:
3505
+ anyOf:
3506
+ - type: number
3507
+ - type: "null"
3508
+ success:
3509
+ type: boolean
3510
+ required:
3511
+ - enabled
3512
+ - intervalMs
3513
+ - activeHoursStart
3514
+ - activeHoursEnd
3515
+ - nextRunAt
3516
+ - lastRunAt
3517
+ - success
3518
+ additionalProperties: false
3519
+ /v1/filing/run-now:
3520
+ post:
3521
+ operationId: filing_runnow_post
3522
+ summary: Run filing now
3523
+ description: Trigger an immediate filing run.
3524
+ tags:
3525
+ - filing
3526
+ responses:
3527
+ "200":
3528
+ description: Successful response
3529
+ content:
3530
+ application/json:
3531
+ schema:
3532
+ type: object
3533
+ properties:
3534
+ success:
3535
+ type: boolean
3536
+ ran:
3537
+ type: boolean
3538
+ description: Whether the filing actually ran
3539
+ required:
3540
+ - success
3541
+ - ran
3542
+ additionalProperties: false
3150
3543
  /v1/groups:
3151
3544
  get:
3152
3545
  operationId: groups_get
@@ -3783,18 +4176,408 @@ paths:
3783
4176
  properties:
3784
4177
  runs:
3785
4178
  type: array
3786
- items: {}
3787
- description: Heartbeat run records
4179
+ items: {}
4180
+ description: Heartbeat run records
4181
+ required:
4182
+ - runs
4183
+ additionalProperties: false
4184
+ parameters:
4185
+ - name: limit
4186
+ in: query
4187
+ required: false
4188
+ schema:
4189
+ type: integer
4190
+ description: Max runs to return (default 20)
4191
+ /v1/home/feed:
4192
+ get:
4193
+ operationId: home_feed_get
4194
+ summary: Get home activity feed
4195
+ description:
4196
+ Return the current Home activity feed with TTL + time-away filtering applied. Also returns a context banner
4197
+ (greeting, relative time-away label, new-item count).
4198
+ tags:
4199
+ - home
4200
+ responses:
4201
+ "200":
4202
+ description: Successful response
4203
+ content:
4204
+ application/json:
4205
+ schema:
4206
+ type: object
4207
+ properties:
4208
+ items:
4209
+ type: array
4210
+ items:
4211
+ type: object
4212
+ properties:
4213
+ id:
4214
+ type: string
4215
+ type:
4216
+ type: string
4217
+ enum:
4218
+ - nudge
4219
+ - digest
4220
+ - action
4221
+ - thread
4222
+ priority:
4223
+ type: integer
4224
+ minimum: 0
4225
+ maximum: 100
4226
+ title:
4227
+ type: string
4228
+ summary:
4229
+ type: string
4230
+ source:
4231
+ type: string
4232
+ enum:
4233
+ - gmail
4234
+ - slack
4235
+ - calendar
4236
+ - assistant
4237
+ timestamp:
4238
+ type: string
4239
+ status:
4240
+ default: new
4241
+ type: string
4242
+ enum:
4243
+ - new
4244
+ - seen
4245
+ - acted_on
4246
+ expiresAt:
4247
+ type: string
4248
+ minTimeAway:
4249
+ type: integer
4250
+ minimum: 0
4251
+ maximum: 9007199254740991
4252
+ actions:
4253
+ type: array
4254
+ items:
4255
+ type: object
4256
+ properties:
4257
+ id:
4258
+ type: string
4259
+ label:
4260
+ type: string
4261
+ prompt:
4262
+ type: string
4263
+ required:
4264
+ - id
4265
+ - label
4266
+ - prompt
4267
+ additionalProperties: false
4268
+ author:
4269
+ type: string
4270
+ enum:
4271
+ - assistant
4272
+ - platform
4273
+ createdAt:
4274
+ type: string
4275
+ required:
4276
+ - id
4277
+ - type
4278
+ - priority
4279
+ - title
4280
+ - summary
4281
+ - timestamp
4282
+ - status
4283
+ - author
4284
+ - createdAt
4285
+ additionalProperties: false
4286
+ updatedAt:
4287
+ type: string
4288
+ contextBanner:
4289
+ type: object
4290
+ properties:
4291
+ greeting:
4292
+ type: string
4293
+ timeAwayLabel:
4294
+ type: string
4295
+ newCount:
4296
+ type: integer
4297
+ minimum: 0
4298
+ maximum: 9007199254740991
4299
+ required:
4300
+ - greeting
4301
+ - timeAwayLabel
4302
+ - newCount
4303
+ additionalProperties: false
4304
+ required:
4305
+ - items
4306
+ - updatedAt
4307
+ - contextBanner
4308
+ additionalProperties: false
4309
+ parameters:
4310
+ - name: timeAwaySeconds
4311
+ in: query
4312
+ required: true
4313
+ schema:
4314
+ type: integer
4315
+ description:
4316
+ Seconds since the user was last active in the client. Used to filter items with a `minTimeAway` gate and to
4317
+ compute the context-banner relative-time label.
4318
+ /v1/home/feed/{id}:
4319
+ patch:
4320
+ operationId: home_feed_by_id_patch
4321
+ summary: Patch home feed item status
4322
+ description:
4323
+ Update the `status` field of a single feed item (e.g. mark it seen or acted_on). Returns the updated item
4324
+ on success, 404 if the item does not exist, 500 if the underlying write fails.
4325
+ tags:
4326
+ - home
4327
+ responses:
4328
+ "200":
4329
+ description: Successful response
4330
+ content:
4331
+ application/json:
4332
+ schema:
4333
+ type: object
4334
+ properties:
4335
+ id:
4336
+ type: string
4337
+ type:
4338
+ type: string
4339
+ enum:
4340
+ - nudge
4341
+ - digest
4342
+ - action
4343
+ - thread
4344
+ priority:
4345
+ type: integer
4346
+ minimum: 0
4347
+ maximum: 100
4348
+ title:
4349
+ type: string
4350
+ summary:
4351
+ type: string
4352
+ source:
4353
+ type: string
4354
+ enum:
4355
+ - gmail
4356
+ - slack
4357
+ - calendar
4358
+ - assistant
4359
+ timestamp:
4360
+ type: string
4361
+ status:
4362
+ default: new
4363
+ type: string
4364
+ enum:
4365
+ - new
4366
+ - seen
4367
+ - acted_on
4368
+ expiresAt:
4369
+ type: string
4370
+ minTimeAway:
4371
+ type: integer
4372
+ minimum: 0
4373
+ maximum: 9007199254740991
4374
+ actions:
4375
+ type: array
4376
+ items:
4377
+ type: object
4378
+ properties:
4379
+ id:
4380
+ type: string
4381
+ label:
4382
+ type: string
4383
+ prompt:
4384
+ type: string
4385
+ required:
4386
+ - id
4387
+ - label
4388
+ - prompt
4389
+ additionalProperties: false
4390
+ author:
4391
+ type: string
4392
+ enum:
4393
+ - assistant
4394
+ - platform
4395
+ createdAt:
4396
+ type: string
4397
+ required:
4398
+ - id
4399
+ - type
4400
+ - priority
4401
+ - title
4402
+ - summary
4403
+ - timestamp
4404
+ - status
4405
+ - author
4406
+ - createdAt
4407
+ additionalProperties: false
4408
+ parameters:
4409
+ - name: id
4410
+ in: path
4411
+ required: true
4412
+ schema:
4413
+ type: string
4414
+ requestBody:
4415
+ required: true
4416
+ content:
4417
+ application/json:
4418
+ schema:
4419
+ type: object
4420
+ properties:
4421
+ status:
4422
+ type: string
4423
+ enum:
4424
+ - new
4425
+ - seen
4426
+ - acted_on
4427
+ required:
4428
+ - status
4429
+ additionalProperties: false
4430
+ /v1/home/feed/{id}/actions/{actionId}:
4431
+ post:
4432
+ operationId: home_feed_by_id_actions_by_actionId_post
4433
+ summary: Trigger home feed action
4434
+ description:
4435
+ Create a new conversation pre-seeded with the action's prompt as the first user message. Returns the new
4436
+ `conversationId`.
4437
+ tags:
4438
+ - home
4439
+ responses:
4440
+ "200":
4441
+ description: Successful response
4442
+ content:
4443
+ application/json:
4444
+ schema:
4445
+ type: object
4446
+ properties:
4447
+ conversationId:
4448
+ type: string
4449
+ required:
4450
+ - conversationId
4451
+ additionalProperties: false
4452
+ parameters:
4453
+ - name: id
4454
+ in: path
4455
+ required: true
4456
+ schema:
4457
+ type: string
4458
+ - name: actionId
4459
+ in: path
4460
+ required: true
4461
+ schema:
4462
+ type: string
4463
+ /v1/home/state:
4464
+ get:
4465
+ operationId: home_state_get
4466
+ summary: Get relationship state
4467
+ description:
4468
+ Return the current `RelationshipState` snapshot. Reads the persisted `relationship-state.json` when
4469
+ present; falls back to an on-demand compute so fresh installs never see a 404.
4470
+ tags:
4471
+ - home
4472
+ responses:
4473
+ "200":
4474
+ description: Successful response
4475
+ content:
4476
+ application/json:
4477
+ schema:
4478
+ type: object
4479
+ properties:
4480
+ version:
4481
+ type: number
4482
+ const: 1
4483
+ assistantId:
4484
+ type: string
4485
+ tier:
4486
+ anyOf:
4487
+ - type: number
4488
+ const: 1
4489
+ - type: number
4490
+ const: 2
4491
+ - type: number
4492
+ const: 3
4493
+ - type: number
4494
+ const: 4
4495
+ progressPercent:
4496
+ type: number
4497
+ facts:
4498
+ type: array
4499
+ items:
4500
+ type: object
4501
+ properties:
4502
+ id:
4503
+ type: string
4504
+ category:
4505
+ type: string
4506
+ enum:
4507
+ - voice
4508
+ - world
4509
+ - priorities
4510
+ text:
4511
+ type: string
4512
+ confidence:
4513
+ type: string
4514
+ enum:
4515
+ - strong
4516
+ - uncertain
4517
+ source:
4518
+ type: string
4519
+ enum:
4520
+ - onboarding
4521
+ - inferred
4522
+ required:
4523
+ - id
4524
+ - category
4525
+ - text
4526
+ - confidence
4527
+ - source
4528
+ additionalProperties: false
4529
+ capabilities:
4530
+ type: array
4531
+ items:
4532
+ type: object
4533
+ properties:
4534
+ id:
4535
+ type: string
4536
+ name:
4537
+ type: string
4538
+ description:
4539
+ type: string
4540
+ tier:
4541
+ type: string
4542
+ enum:
4543
+ - unlocked
4544
+ - next-up
4545
+ - earned
4546
+ gate:
4547
+ type: string
4548
+ unlockHint:
4549
+ type: string
4550
+ ctaLabel:
4551
+ type: string
4552
+ required:
4553
+ - id
4554
+ - name
4555
+ - description
4556
+ - tier
4557
+ - gate
4558
+ additionalProperties: false
4559
+ conversationCount:
4560
+ type: number
4561
+ hatchedDate:
4562
+ type: string
4563
+ assistantName:
4564
+ type: string
4565
+ userName:
4566
+ type: string
4567
+ updatedAt:
4568
+ type: string
3788
4569
  required:
3789
- - runs
4570
+ - version
4571
+ - assistantId
4572
+ - tier
4573
+ - progressPercent
4574
+ - facts
4575
+ - capabilities
4576
+ - conversationCount
4577
+ - hatchedDate
4578
+ - assistantName
4579
+ - updatedAt
3790
4580
  additionalProperties: false
3791
- parameters:
3792
- - name: limit
3793
- in: query
3794
- required: false
3795
- schema:
3796
- type: integer
3797
- description: Max runs to return (default 20)
3798
4581
  /v1/host-bash-result:
3799
4582
  post:
3800
4583
  operationId: hostbashresult_post
@@ -3836,6 +4619,43 @@ paths:
3836
4619
  required:
3837
4620
  - requestId
3838
4621
  additionalProperties: false
4622
+ /v1/host-browser-result:
4623
+ post:
4624
+ operationId: hostbrowserresult_post
4625
+ summary: Submit host browser result
4626
+ description: Resolve a pending host browser request by requestId.
4627
+ tags:
4628
+ - host
4629
+ responses:
4630
+ "200":
4631
+ description: Successful response
4632
+ content:
4633
+ application/json:
4634
+ schema:
4635
+ type: object
4636
+ properties:
4637
+ accepted:
4638
+ type: boolean
4639
+ required:
4640
+ - accepted
4641
+ additionalProperties: false
4642
+ requestBody:
4643
+ required: true
4644
+ content:
4645
+ application/json:
4646
+ schema:
4647
+ type: object
4648
+ properties:
4649
+ requestId:
4650
+ type: string
4651
+ description: Pending browser request ID
4652
+ content:
4653
+ type: string
4654
+ isError:
4655
+ type: boolean
4656
+ required:
4657
+ - requestId
4658
+ additionalProperties: false
3839
4659
  /v1/host-cu-result:
3840
4660
  post:
3841
4661
  operationId: hostcuresult_post
@@ -3930,6 +4750,9 @@ paths:
3930
4750
  isError:
3931
4751
  type: boolean
3932
4752
  description: Whether the result is an error
4753
+ imageData:
4754
+ type: string
4755
+ description: Optional base64-encoded image bytes for successful image reads
3933
4756
  required:
3934
4757
  - requestId
3935
4758
  additionalProperties: false
@@ -4298,6 +5121,11 @@ paths:
4298
5121
  conversationId:
4299
5122
  description: Scope to a single conversation
4300
5123
  type: string
5124
+ full:
5125
+ description:
5126
+ Full export — include messages, LLM request logs, and usage events for all conversations. Use for test data
5127
+ debugging.
5128
+ type: boolean
4301
5129
  startTime:
4302
5130
  description: Lower bound epoch ms
4303
5131
  type: number
@@ -4636,7 +5464,7 @@ paths:
4636
5464
  post:
4637
5465
  operationId: messages_by_id_tts_post
4638
5466
  summary: Synthesize message to speech
4639
- description: Synthesize a message's text content to audio using Fish Audio TTS.
5467
+ description: Synthesize a message's text content to audio using the configured TTS provider.
4640
5468
  tags:
4641
5469
  - messages
4642
5470
  responses:
@@ -5109,63 +5937,6 @@ paths:
5109
5937
  schema:
5110
5938
  type: string
5111
5939
  description: Conversation ID
5112
- /v1/permission-mode:
5113
- get:
5114
- operationId: permissionmode_get
5115
- summary: Get permission mode
5116
- description: Return the current two-axis permission mode (askBeforeActing, hostAccess).
5117
- tags:
5118
- - settings
5119
- responses:
5120
- "200":
5121
- description: Successful response
5122
- content:
5123
- application/json:
5124
- schema:
5125
- type: object
5126
- properties:
5127
- askBeforeActing:
5128
- type: boolean
5129
- hostAccess:
5130
- type: boolean
5131
- required:
5132
- - askBeforeActing
5133
- - hostAccess
5134
- additionalProperties: false
5135
- put:
5136
- operationId: permissionmode_put
5137
- summary: Update permission mode
5138
- description: Update the two-axis permission mode. Requires the permission-controls-v2 feature flag.
5139
- tags:
5140
- - settings
5141
- responses:
5142
- "200":
5143
- description: Successful response
5144
- content:
5145
- application/json:
5146
- schema:
5147
- type: object
5148
- properties:
5149
- askBeforeActing:
5150
- type: boolean
5151
- hostAccess:
5152
- type: boolean
5153
- required:
5154
- - askBeforeActing
5155
- - hostAccess
5156
- additionalProperties: false
5157
- requestBody:
5158
- required: true
5159
- content:
5160
- application/json:
5161
- schema:
5162
- type: object
5163
- properties:
5164
- askBeforeActing:
5165
- type: boolean
5166
- hostAccess:
5167
- type: boolean
5168
- additionalProperties: false
5169
5940
  /v1/profiler/runs:
5170
5941
  get:
5171
5942
  operationId: profiler_runs_get
@@ -6112,7 +6883,9 @@ paths:
6112
6883
  get:
6113
6884
  operationId: skills_get
6114
6885
  summary: List all skills
6115
- description: Return all installed skills. Pass ?include=catalog to also include available catalog skills.
6886
+ description:
6887
+ "Return all installed skills. Pass ?include=catalog to also include available catalog skills. Supports
6888
+ optional filter params: origin, kind, q, category."
6116
6889
  tags:
6117
6890
  - skills
6118
6891
  responses:
@@ -6197,6 +6970,8 @@ paths:
6197
6970
  type: number
6198
6971
  publishedAt:
6199
6972
  type: string
6973
+ version:
6974
+ type: string
6200
6975
  required:
6201
6976
  - id
6202
6977
  - name
@@ -6209,6 +6984,7 @@ paths:
6209
6984
  - stars
6210
6985
  - installs
6211
6986
  - reports
6987
+ - version
6212
6988
  additionalProperties: false
6213
6989
  - type: object
6214
6990
  properties:
@@ -6241,6 +7017,32 @@ paths:
6241
7017
  type: string
6242
7018
  installs:
6243
7019
  type: number
7020
+ audit:
7021
+ type: object
7022
+ propertyNames:
7023
+ type: string
7024
+ additionalProperties:
7025
+ type: object
7026
+ properties:
7027
+ risk:
7028
+ type: string
7029
+ enum:
7030
+ - safe
7031
+ - low
7032
+ - medium
7033
+ - high
7034
+ - critical
7035
+ - unknown
7036
+ alerts:
7037
+ type: number
7038
+ score:
7039
+ type: number
7040
+ analyzedAt:
7041
+ type: string
7042
+ required:
7043
+ - risk
7044
+ - analyzedAt
7045
+ additionalProperties: false
6244
7046
  required:
6245
7047
  - id
6246
7048
  - name
@@ -6286,6 +7088,16 @@ paths:
6286
7088
  - origin
6287
7089
  additionalProperties: false
6288
7090
  description: Skill objects
7091
+ categoryCounts:
7092
+ description: Count of skills per category (before category filter is applied)
7093
+ type: object
7094
+ propertyNames:
7095
+ type: string
7096
+ additionalProperties:
7097
+ type: number
7098
+ totalCount:
7099
+ description: Total number of skills matching non-category filters
7100
+ type: number
6289
7101
  required:
6290
7102
  - skills
6291
7103
  additionalProperties: false
@@ -6298,6 +7110,30 @@ paths:
6298
7110
  enum:
6299
7111
  - catalog
6300
7112
  description: Optional inclusion flag. Use 'catalog' to merge available Vellum catalog skills into the response.
7113
+ - name: origin
7114
+ in: query
7115
+ required: false
7116
+ schema:
7117
+ type: string
7118
+ description: Filter by skill origin (e.g. 'vellum', 'clawhub', 'skillssh', 'custom').
7119
+ - name: kind
7120
+ in: query
7121
+ required: false
7122
+ schema:
7123
+ type: string
7124
+ description: "Filter by kind: 'installed' (includes bundled), 'available', or pass through as skill.kind."
7125
+ - name: q
7126
+ in: query
7127
+ required: false
7128
+ schema:
7129
+ type: string
7130
+ description: Text search across skill name, description, id, and origin label.
7131
+ - name: category
7132
+ in: query
7133
+ required: false
7134
+ schema:
7135
+ type: string
7136
+ description: Filter by inferred category (e.g. 'communication', 'productivity').
6301
7137
  post:
6302
7138
  operationId: skills_post
6303
7139
  summary: Create skill
@@ -6440,6 +7276,8 @@ paths:
6440
7276
  type: number
6441
7277
  publishedAt:
6442
7278
  type: string
7279
+ version:
7280
+ type: string
6443
7281
  owner:
6444
7282
  anyOf:
6445
7283
  - type: object
@@ -6506,6 +7344,7 @@ paths:
6506
7344
  - stars
6507
7345
  - installs
6508
7346
  - reports
7347
+ - version
6509
7348
  additionalProperties: false
6510
7349
  - type: object
6511
7350
  properties:
@@ -6538,6 +7377,32 @@ paths:
6538
7377
  type: string
6539
7378
  installs:
6540
7379
  type: number
7380
+ audit:
7381
+ type: object
7382
+ propertyNames:
7383
+ type: string
7384
+ additionalProperties:
7385
+ type: object
7386
+ properties:
7387
+ risk:
7388
+ type: string
7389
+ enum:
7390
+ - safe
7391
+ - low
7392
+ - medium
7393
+ - high
7394
+ - critical
7395
+ - unknown
7396
+ alerts:
7397
+ type: number
7398
+ score:
7399
+ type: number
7400
+ analyzedAt:
7401
+ type: string
7402
+ required:
7403
+ - risk
7404
+ - analyzedAt
7405
+ additionalProperties: false
6541
7406
  required:
6542
7407
  - id
6543
7408
  - name
@@ -6710,6 +7575,57 @@ paths:
6710
7575
  required: true
6711
7576
  schema:
6712
7577
  type: string
7578
+ /v1/skills/{id}/files/content:
7579
+ get:
7580
+ operationId: skills_by_id_files_content_get
7581
+ summary: Get skill file content
7582
+ description: Return the content of a single file belonging to an installed or catalog skill.
7583
+ tags:
7584
+ - skills
7585
+ responses:
7586
+ "200":
7587
+ description: Successful response
7588
+ content:
7589
+ application/json:
7590
+ schema:
7591
+ type: object
7592
+ properties:
7593
+ path:
7594
+ type: string
7595
+ name:
7596
+ type: string
7597
+ size:
7598
+ type: integer
7599
+ minimum: -9007199254740991
7600
+ maximum: 9007199254740991
7601
+ mimeType:
7602
+ type: string
7603
+ isBinary:
7604
+ type: boolean
7605
+ content:
7606
+ anyOf:
7607
+ - type: string
7608
+ - type: "null"
7609
+ required:
7610
+ - path
7611
+ - name
7612
+ - size
7613
+ - mimeType
7614
+ - isBinary
7615
+ - content
7616
+ additionalProperties: false
7617
+ parameters:
7618
+ - name: id
7619
+ in: path
7620
+ required: true
7621
+ schema:
7622
+ type: string
7623
+ - name: path
7624
+ in: query
7625
+ required: true
7626
+ schema:
7627
+ type: string
7628
+ description: Relative path of the file within the skill directory
6713
7629
  /v1/skills/{id}/inspect:
6714
7630
  get:
6715
7631
  operationId: skills_by_id_inspect_get
@@ -6815,6 +7731,8 @@ paths:
6815
7731
  properties:
6816
7732
  ok:
6817
7733
  type: boolean
7734
+ skillId:
7735
+ type: string
6818
7736
  required:
6819
7737
  - ok
6820
7738
  additionalProperties: false
@@ -6937,6 +7855,8 @@ paths:
6937
7855
  type: number
6938
7856
  publishedAt:
6939
7857
  type: string
7858
+ version:
7859
+ type: string
6940
7860
  required:
6941
7861
  - id
6942
7862
  - name
@@ -6949,6 +7869,7 @@ paths:
6949
7869
  - stars
6950
7870
  - installs
6951
7871
  - reports
7872
+ - version
6952
7873
  additionalProperties: false
6953
7874
  - type: object
6954
7875
  properties:
@@ -6981,6 +7902,32 @@ paths:
6981
7902
  type: string
6982
7903
  installs:
6983
7904
  type: number
7905
+ audit:
7906
+ type: object
7907
+ propertyNames:
7908
+ type: string
7909
+ additionalProperties:
7910
+ type: object
7911
+ properties:
7912
+ risk:
7913
+ type: string
7914
+ enum:
7915
+ - safe
7916
+ - low
7917
+ - medium
7918
+ - high
7919
+ - critical
7920
+ - unknown
7921
+ alerts:
7922
+ type: number
7923
+ score:
7924
+ type: number
7925
+ analyzedAt:
7926
+ type: string
7927
+ required:
7928
+ - risk
7929
+ - analyzedAt
7930
+ additionalProperties: false
6984
7931
  required:
6985
7932
  - id
6986
7933
  - name
@@ -7052,6 +7999,38 @@ paths:
7052
7999
  responses:
7053
8000
  "200":
7054
8001
  description: Successful response
8002
+ /v1/stt/transcribe:
8003
+ post:
8004
+ operationId: stt_transcribe_post
8005
+ summary: Transcribe audio to text
8006
+ description:
8007
+ Transcribe base64-encoded audio to text using the configured STT provider. Provider selection is resolved
8008
+ globally via config.
8009
+ tags:
8010
+ - stt
8011
+ responses:
8012
+ "200":
8013
+ description: Successful response
8014
+ requestBody:
8015
+ required: true
8016
+ content:
8017
+ application/json:
8018
+ schema:
8019
+ type: object
8020
+ properties:
8021
+ audioBase64:
8022
+ type: string
8023
+ description: Base64-encoded audio data to transcribe
8024
+ mimeType:
8025
+ type: string
8026
+ description: MIME type of the audio data (must start with "audio/", e.g. "audio/wav", "audio/ogg")
8027
+ source:
8028
+ description: Optional source identifier for analytics (e.g. 'dictation', 'voice-mode')
8029
+ type: string
8030
+ required:
8031
+ - audioBase64
8032
+ - mimeType
8033
+ additionalProperties: false
7055
8034
  /v1/subagents/{id}:
7056
8035
  get:
7057
8036
  operationId: subagents_by_id_get
@@ -7220,6 +8199,11 @@ paths:
7220
8199
  properties:
7221
8200
  ok:
7222
8201
  type: boolean
8202
+ conversationId:
8203
+ type: string
8204
+ description:
8205
+ Id of a newly launched conversation when the action dispatched one (e.g. launch_conversation). Omitted
8206
+ otherwise.
7223
8207
  required:
7224
8208
  - ok
7225
8209
  additionalProperties: false
@@ -7668,11 +8652,44 @@ paths:
7668
8652
  - decision
7669
8653
  - priority
7670
8654
  additionalProperties: false
8655
+ /v1/tts/synthesize:
8656
+ post:
8657
+ operationId: tts_synthesize_post
8658
+ summary: Synthesize text to speech
8659
+ description:
8660
+ Synthesize arbitrary text to audio using the configured TTS provider. Provider selection is resolved
8661
+ globally via config — callers do not specify a provider.
8662
+ tags:
8663
+ - tts
8664
+ responses:
8665
+ "200":
8666
+ description: Successful response
8667
+ requestBody:
8668
+ required: true
8669
+ content:
8670
+ application/json:
8671
+ schema:
8672
+ type: object
8673
+ properties:
8674
+ text:
8675
+ type: string
8676
+ description: Text to synthesize into speech
8677
+ context:
8678
+ description:
8679
+ Optional context hint for output policy or capability selection (e.g. voice-mode). Does not affect provider
8680
+ selection.
8681
+ type: string
8682
+ conversationId:
8683
+ description: Optional conversation ID for scoping or analytics.
8684
+ type: string
8685
+ required:
8686
+ - text
8687
+ additionalProperties: false
7671
8688
  /v1/usage/breakdown:
7672
8689
  get:
7673
8690
  operationId: usage_breakdown_get
7674
8691
  summary: Get usage breakdown
7675
- description: Return grouped usage breakdown (by actor, provider, or model).
8692
+ description: Return grouped usage breakdown (by actor, provider, model, or conversation).
7676
8693
  tags:
7677
8694
  - usage
7678
8695
  responses:
@@ -7708,7 +8725,7 @@ paths:
7708
8725
  required: false
7709
8726
  schema:
7710
8727
  type: string
7711
- description: "Group by: actor, provider, or model (required)"
8728
+ description: "Group by: actor, provider, model, or conversation (required)"
7712
8729
  /v1/usage/daily:
7713
8730
  get:
7714
8731
  operationId: usage_daily_get
@@ -7753,6 +8770,14 @@ paths:
7753
8770
  - daily
7754
8771
  - hourly
7755
8772
  description: 'Bucket granularity: "daily" (default) or "hourly"'
8773
+ - name: tz
8774
+ in: query
8775
+ required: false
8776
+ schema:
8777
+ type: string
8778
+ description:
8779
+ IANA timezone identifier (e.g. "America/Los_Angeles"). Bucket boundaries and display labels are computed in
8780
+ this timezone. Defaults to "UTC" for backwards compatibility.
7756
8781
  /v1/usage/totals:
7757
8782
  get:
7758
8783
  operationId: usage_totals_get