@vellumai/assistant 0.6.3 → 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 (667) hide show
  1. package/ARCHITECTURE.md +273 -10
  2. package/Dockerfile +2 -3
  3. package/bun.lock +5 -13
  4. package/docs/backup-troubleshooting.md +52 -0
  5. package/docs/browser-use-architecture-phase2.md +174 -0
  6. package/docs/stt-provider-onboarding.md +120 -0
  7. package/knip.json +12 -2
  8. package/node_modules/@vellumai/ces-contracts/bun.lock +8 -6
  9. package/node_modules/@vellumai/ces-contracts/package.json +3 -3
  10. package/openapi.yaml +982 -72
  11. package/package.json +4 -6
  12. package/scripts/generate-openapi.ts +0 -1
  13. package/scripts/test.sh +73 -18
  14. package/src/__tests__/agent-image-optimize.test.ts +28 -0
  15. package/src/__tests__/agent-loop.test.ts +123 -0
  16. package/src/__tests__/anthropic-provider.test.ts +263 -10
  17. package/src/__tests__/auto-analysis-end-to-end.test.ts +550 -0
  18. package/src/__tests__/auto-analysis-prompt.test.ts +50 -0
  19. package/src/__tests__/browser-fill-credential.test.ts +11 -0
  20. package/src/__tests__/browser-skill-baseline-tool-payload.test.ts +2 -2
  21. package/src/__tests__/browser-skill-endstate.test.ts +31 -7
  22. package/src/__tests__/btw-routes.test.ts +7 -0
  23. package/src/__tests__/call-controller.test.ts +581 -20
  24. package/src/__tests__/catalog-files.test.ts +138 -0
  25. package/src/__tests__/channel-invite-transport.test.ts +2 -2
  26. package/src/__tests__/channel-readiness-routes.test.ts +16 -20
  27. package/src/__tests__/channel-readiness-service.test.ts +12 -7
  28. package/src/__tests__/checker.test.ts +157 -10
  29. package/src/__tests__/clawhub-files.test.ts +347 -0
  30. package/src/__tests__/commit-message-enrichment-service.test.ts +36 -19
  31. package/src/__tests__/config-analysis.test.ts +100 -0
  32. package/src/__tests__/config-schema.test.ts +1013 -66
  33. package/src/__tests__/config-watcher-cleanup-throttle.test.ts +339 -0
  34. package/src/__tests__/config-watcher.test.ts +43 -8
  35. package/src/__tests__/contact-store-user-file.test.ts +512 -0
  36. package/src/__tests__/contacts-write.test.ts +197 -0
  37. package/src/__tests__/context-window-manager.test.ts +88 -0
  38. package/src/__tests__/conversation-abort-tool-results.test.ts +2 -0
  39. package/src/__tests__/conversation-agent-loop-overflow.test.ts +1 -0
  40. package/src/__tests__/conversation-agent-loop.test.ts +98 -2
  41. package/src/__tests__/conversation-confirmation-signals.test.ts +135 -0
  42. package/src/__tests__/conversation-error.test.ts +70 -0
  43. package/src/__tests__/conversation-history-web-search.test.ts +11 -4
  44. package/src/__tests__/conversation-init.benchmark.test.ts +6 -1
  45. package/src/__tests__/conversation-launcher-skill-regression.test.ts +51 -0
  46. package/src/__tests__/conversation-list-source.test.ts +145 -0
  47. package/src/__tests__/conversation-pre-run-repair.test.ts +2 -0
  48. package/src/__tests__/conversation-provider-retry-repair.test.ts +2 -0
  49. package/src/__tests__/conversation-queue.test.ts +901 -60
  50. package/src/__tests__/conversation-routes-disk-view.test.ts +270 -0
  51. package/src/__tests__/conversation-runtime-assembly.test.ts +55 -0
  52. package/src/__tests__/conversation-skill-tools.test.ts +7 -4
  53. package/src/__tests__/conversation-slash-commands.test.ts +33 -0
  54. package/src/__tests__/conversation-slash-queue.test.ts +89 -18
  55. package/src/__tests__/conversation-slash-unknown.test.ts +2 -0
  56. package/src/__tests__/conversation-tool-setup-batch-authorized.test.ts +226 -0
  57. package/src/__tests__/conversation-workspace-injection.test.ts +2 -0
  58. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +2 -0
  59. package/src/__tests__/credential-health-service.test.ts +352 -0
  60. package/src/__tests__/credential-security-invariants.test.ts +5 -3
  61. package/src/__tests__/credential-vault-unit.test.ts +379 -3
  62. package/src/__tests__/credentials-cli.test.ts +40 -16
  63. package/src/__tests__/cross-provider-web-search.test.ts +146 -35
  64. package/src/__tests__/deterministic-verification-control-plane.test.ts +10 -1
  65. package/src/__tests__/device-id.test.ts +112 -0
  66. package/src/__tests__/docker-signing-key-bootstrap.test.ts +167 -4
  67. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +1 -3
  68. package/src/__tests__/email-html-renderer.test.ts +71 -0
  69. package/src/__tests__/email-invite-adapter.test.ts +36 -32
  70. package/src/__tests__/emit-event-signal.test.ts +71 -0
  71. package/src/__tests__/extension-id-sync-guard.test.ts +75 -8
  72. package/src/__tests__/fixtures/mock-chrome-extension.ts +11 -0
  73. package/src/__tests__/gateway-only-enforcement.test.ts +206 -1
  74. package/src/__tests__/gateway-only-guard.test.ts +0 -1
  75. package/src/__tests__/gemini-provider.test.ts +64 -0
  76. package/src/__tests__/get-skill-detail-audit.test.ts +325 -0
  77. package/src/__tests__/gmail-archive-fallback.test.ts +193 -0
  78. package/src/__tests__/gmail-archive-gate.test.ts +246 -0
  79. package/src/__tests__/gmail-preferences.test.ts +117 -0
  80. package/src/__tests__/headless-browser-interactions.test.ts +43 -0
  81. package/src/__tests__/headless-browser-mode.test.ts +614 -0
  82. package/src/__tests__/headless-browser-navigate.test.ts +142 -5
  83. package/src/__tests__/headless-browser-read-tools.test.ts +11 -0
  84. package/src/__tests__/headless-browser-snapshot.test.ts +10 -0
  85. package/src/__tests__/heartbeat-service.test.ts +70 -17
  86. package/src/__tests__/home-state-routes.test.ts +162 -0
  87. package/src/__tests__/host-bash-proxy.test.ts +0 -5
  88. package/src/__tests__/host-browser-e2e-cloud.test.ts +138 -4
  89. package/src/__tests__/host-browser-e2e-self-hosted.test.ts +4 -4
  90. package/src/__tests__/host-browser-ws-events-e2e.test.ts +103 -0
  91. package/src/__tests__/host-cu-proxy.test.ts +0 -5
  92. package/src/__tests__/identity-intro-cache.test.ts +40 -10
  93. package/src/__tests__/init-feature-flag-overrides.test.ts +38 -112
  94. package/src/__tests__/jobs-store-upsert-debounced.test.ts +141 -0
  95. package/src/__tests__/llm-context-normalization.test.ts +488 -0
  96. package/src/__tests__/llm-context-route-provider.test.ts +86 -5
  97. package/src/__tests__/llm-usage-store.test.ts +363 -0
  98. package/src/__tests__/media-stream-output.test.ts +555 -0
  99. package/src/__tests__/media-stream-parser.test.ts +374 -0
  100. package/src/__tests__/media-stream-server-integration.test.ts +1234 -0
  101. package/src/__tests__/media-stream-stt-session.test.ts +588 -0
  102. package/src/__tests__/media-turn-detector.test.ts +440 -0
  103. package/src/__tests__/message-queue.test.ts +125 -0
  104. package/src/__tests__/migration-export-http.test.ts +6 -6
  105. package/src/__tests__/migration-import-commit-http.test.ts +8 -6
  106. package/src/__tests__/migration-import-preflight-http.test.ts +6 -5
  107. package/src/__tests__/migration-validate-http.test.ts +3 -3
  108. package/src/__tests__/mock-gateway-ipc.ts +151 -0
  109. package/src/__tests__/model-intents.test.ts +2 -2
  110. package/src/__tests__/oauth-apps-routes.test.ts +1 -0
  111. package/src/__tests__/oauth-cli.test.ts +2 -0
  112. package/src/__tests__/oauth-connect-orchestrator.test.ts +2 -0
  113. package/src/__tests__/oauth-provider-serializer.test.ts +1 -0
  114. package/src/__tests__/oauth-providers-routes.test.ts +2 -0
  115. package/src/__tests__/oauth-store.test.ts +85 -0
  116. package/src/__tests__/oauth2-gateway-transport.test.ts +249 -6
  117. package/src/__tests__/onboarding-template-contract.test.ts +6 -13
  118. package/src/__tests__/openai-provider.test.ts +176 -0
  119. package/src/__tests__/openai-responses-cutover-guard.test.ts +184 -0
  120. package/src/__tests__/openai-responses-provider.test.ts +1105 -0
  121. package/src/__tests__/openrouter-token-estimation.test.ts +100 -0
  122. package/src/__tests__/outlook-unsubscribe.test.ts +31 -2
  123. package/src/__tests__/persona-resolver.test.ts +251 -0
  124. package/src/__tests__/platform-bash-auto-approve.test.ts +4 -0
  125. package/src/__tests__/platform.test.ts +92 -1
  126. package/src/__tests__/post-turn-tool-result-truncation.test.ts +47 -0
  127. package/src/__tests__/prechat-onboarding-contract.test.ts +267 -0
  128. package/src/__tests__/pricing.test.ts +174 -0
  129. package/src/__tests__/qdrant-manager.test.ts +29 -8
  130. package/src/__tests__/regenerate-fire-and-forget-trace.test.ts +194 -0
  131. package/src/__tests__/relationship-state-contract.test.ts +175 -0
  132. package/src/__tests__/relay-server.test.ts +423 -5
  133. package/src/__tests__/search-skills-unified.test.ts +118 -0
  134. package/src/__tests__/secret-scanner-executor.test.ts +4 -0
  135. package/src/__tests__/secure-keys.test.ts +107 -0
  136. package/src/__tests__/send-endpoint-busy.test.ts +5 -1
  137. package/src/__tests__/sequence-store.test.ts +1 -1
  138. package/src/__tests__/server-history-render.test.ts +49 -0
  139. package/src/__tests__/settings-routes.test.ts +201 -0
  140. package/src/__tests__/skill-load-feature-flag.test.ts +1 -0
  141. package/src/__tests__/skills-file-content-endpoint.test.ts +276 -145
  142. package/src/__tests__/skills-files-catalog-fallback.test.ts +381 -93
  143. package/src/__tests__/skills.test.ts +5 -2
  144. package/src/__tests__/skillssh-files.test.ts +446 -0
  145. package/src/__tests__/slack-block-formatting.test.ts +110 -0
  146. package/src/__tests__/slack-channel-config.test.ts +564 -1
  147. package/src/__tests__/stt-catalog-parity.test.ts +282 -0
  148. package/src/__tests__/stt-stream-session.test.ts +535 -0
  149. package/src/__tests__/system-prompt.test.ts +112 -26
  150. package/src/__tests__/telephony-stt-routing.test.ts +329 -0
  151. package/src/__tests__/terminal-tools.test.ts +18 -7
  152. package/src/__tests__/test-preload.ts +18 -0
  153. package/src/__tests__/test-support/browser-skill-harness.ts +4 -1
  154. package/src/__tests__/tool-executor-lifecycle-events.test.ts +9 -5
  155. package/src/__tests__/tool-executor-shell-integration.test.ts +4 -0
  156. package/src/__tests__/tool-executor.test.ts +33 -24
  157. package/src/__tests__/tool-result-truncation.test.ts +36 -0
  158. package/src/__tests__/trust-store.test.ts +7 -1
  159. package/src/__tests__/trusted-contact-approval-notifier.test.ts +1 -1
  160. package/src/__tests__/tts-catalog-parity.test.ts +345 -0
  161. package/src/__tests__/twilio-routes-twiml.test.ts +512 -114
  162. package/src/__tests__/twilio-routes.test.ts +376 -0
  163. package/src/__tests__/unicode.test.ts +293 -0
  164. package/src/__tests__/update-bulletin-format.test.ts +59 -0
  165. package/src/__tests__/update-bulletin.test.ts +206 -5
  166. package/src/__tests__/usage-routes.test.ts +25 -4
  167. package/src/__tests__/user-reference.test.ts +46 -61
  168. package/src/__tests__/verification-control-plane-policy.test.ts +4 -0
  169. package/src/__tests__/voice-config-update.test.ts +403 -0
  170. package/src/__tests__/voice-quality.test.ts +434 -19
  171. package/src/__tests__/workspace-heartbeat-service.test.ts +7 -0
  172. package/src/__tests__/workspace-migration-033-stt-service-explicit-config.test.ts +547 -0
  173. package/src/__tests__/workspace-migration-034-remove-calls-voice-transcription-provider.test.ts +596 -0
  174. package/src/__tests__/workspace-migration-drop-user-md.test.ts +368 -0
  175. package/src/__tests__/workspace-migration-meets.test.ts +244 -0
  176. package/src/__tests__/workspace-migration-seed-device-id.test.ts +14 -20
  177. package/src/__tests__/workspace-policy.test.ts +2 -0
  178. package/src/agent/image-optimize.ts +24 -12
  179. package/src/agent/loop.ts +43 -3
  180. package/src/backup/__tests__/backup-key.test.ts +152 -0
  181. package/src/backup/__tests__/backup-worker.test.ts +767 -0
  182. package/src/backup/__tests__/list-snapshots.test.ts +87 -0
  183. package/src/backup/__tests__/local-writer.test.ts +218 -0
  184. package/src/backup/__tests__/offsite-writer.test.ts +641 -0
  185. package/src/backup/__tests__/paths.test.ts +300 -0
  186. package/src/backup/__tests__/restore.test.ts +498 -0
  187. package/src/backup/__tests__/snapshot-lock.test.ts +352 -0
  188. package/src/backup/__tests__/stream-crypt.test.ts +228 -0
  189. package/src/backup/backup-key.ts +137 -0
  190. package/src/backup/backup-worker.ts +459 -0
  191. package/src/backup/list-snapshots.ts +147 -0
  192. package/src/backup/local-writer.ts +133 -0
  193. package/src/backup/offsite-writer.ts +222 -0
  194. package/src/backup/paths.ts +226 -0
  195. package/src/backup/restore.ts +322 -0
  196. package/src/backup/snapshot-lock.ts +431 -0
  197. package/src/backup/stream-crypt.ts +263 -0
  198. package/src/bundler/package-resolver.ts +4 -0
  199. package/src/calls/audio-store.ts +11 -5
  200. package/src/calls/call-controller.ts +226 -71
  201. package/src/calls/call-domain.ts +9 -0
  202. package/src/calls/call-speech-output.ts +190 -0
  203. package/src/calls/call-transport.ts +77 -0
  204. package/src/calls/media-stream-audio-transcode.ts +173 -0
  205. package/src/calls/media-stream-output.ts +660 -0
  206. package/src/calls/media-stream-parser.ts +300 -0
  207. package/src/calls/media-stream-protocol.ts +166 -0
  208. package/src/calls/media-stream-server.ts +592 -0
  209. package/src/calls/media-stream-stt-session.ts +460 -0
  210. package/src/calls/media-turn-detector.ts +230 -0
  211. package/src/calls/relay-server.ts +90 -75
  212. package/src/calls/resolve-call-tts-provider.ts +136 -0
  213. package/src/calls/telephony-stt-routing.ts +145 -0
  214. package/src/calls/tts-call-strategy.ts +161 -0
  215. package/src/calls/tts-text-sanitizer.ts +32 -16
  216. package/src/calls/twilio-routes.ts +281 -17
  217. package/src/calls/voice-quality.ts +78 -35
  218. package/src/calls/voice-session-bridge.ts +8 -1
  219. package/src/channels/types.ts +16 -0
  220. package/src/cli/__tests__/run-assistant-command.ts +11 -1
  221. package/src/cli/commands/__tests__/backup.test.ts +1165 -0
  222. package/src/cli/commands/__tests__/domain-register.test.ts +234 -0
  223. package/src/cli/commands/__tests__/domain-status.test.ts +132 -0
  224. package/src/cli/commands/__tests__/email-attachment.test.ts +422 -0
  225. package/src/cli/commands/__tests__/email-download.test.ts +16 -1
  226. package/src/cli/commands/__tests__/email-list.test.ts +22 -4
  227. package/src/cli/commands/__tests__/email-register.test.ts +4 -4
  228. package/src/cli/commands/__tests__/email-send.test.ts +37 -4
  229. package/src/cli/commands/__tests__/email-status.test.ts +5 -1
  230. package/src/cli/commands/__tests__/email-unregister.test.ts +34 -5
  231. package/src/cli/commands/backup.ts +993 -0
  232. package/src/cli/commands/conversations.ts +77 -0
  233. package/src/cli/commands/credentials.ts +0 -1
  234. package/src/cli/commands/domain.ts +210 -0
  235. package/src/cli/commands/email.ts +255 -3
  236. package/src/cli/commands/oauth/__tests__/connect.test.ts +12 -0
  237. package/src/cli/commands/oauth/__tests__/providers-delete.test.ts +1 -0
  238. package/src/cli/commands/oauth/__tests__/providers-register.test.ts +1 -0
  239. package/src/cli/commands/oauth/__tests__/providers-update.test.ts +1 -0
  240. package/src/cli/commands/oauth/mode.ts +12 -3
  241. package/src/cli/commands/oauth/providers.ts +15 -0
  242. package/src/cli/commands/oauth/shared.ts +2 -1
  243. package/src/cli/commands/platform/__tests__/callback-routes-list.test.ts +4 -9
  244. package/src/cli/commands/platform/__tests__/connect.test.ts +6 -0
  245. package/src/cli/commands/platform/__tests__/disconnect.test.ts +7 -1
  246. package/src/cli/commands/platform/__tests__/status.test.ts +6 -0
  247. package/src/cli/program.ts +30 -4
  248. package/src/config/__tests__/backup-schema.test.ts +134 -0
  249. package/src/config/assistant-feature-flags.ts +61 -62
  250. package/src/config/bundled-skills/app-builder/references/CUSTOM_ROUTES.md +37 -1
  251. package/src/config/bundled-skills/browser/SKILL.md +30 -5
  252. package/src/config/bundled-skills/browser/TOOLS.json +123 -0
  253. package/src/config/bundled-skills/browser/tools/browser-attach.ts +12 -0
  254. package/src/config/bundled-skills/browser/tools/browser-detach.ts +12 -0
  255. package/src/config/bundled-skills/browser/tools/browser-status.ts +12 -0
  256. package/src/config/bundled-skills/browser/tools/browser-wait-for-download.ts +17 -0
  257. package/src/config/bundled-skills/contacts/SKILL.md +2 -2
  258. package/src/config/bundled-skills/gmail/SKILL.md +53 -7
  259. package/src/config/bundled-skills/gmail/TOOLS.json +33 -3
  260. package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +116 -9
  261. package/src/config/bundled-skills/gmail/tools/gmail-outreach-scan.ts +138 -11
  262. package/src/config/bundled-skills/gmail/tools/gmail-preferences-tool.ts +59 -0
  263. package/src/config/bundled-skills/gmail/tools/gmail-preferences.ts +82 -0
  264. package/src/config/bundled-skills/gmail/tools/gmail-sender-digest.ts +113 -17
  265. package/src/config/bundled-skills/gmail/tools/gmail-unsubscribe.ts +2 -2
  266. package/src/config/bundled-skills/media-processing/SKILL.md +3 -9
  267. package/src/config/bundled-skills/media-processing/TOOLS.json +1 -6
  268. package/src/config/bundled-skills/media-processing/__tests__/audio-transcribe.test.ts +125 -0
  269. package/src/config/bundled-skills/media-processing/__tests__/extract-keyframes.test.ts +181 -0
  270. package/src/config/bundled-skills/media-processing/__tests__/preprocess-audio.test.ts +141 -0
  271. package/src/config/bundled-skills/media-processing/services/audio-transcribe.ts +32 -87
  272. package/src/config/bundled-skills/media-processing/services/preprocess.ts +8 -4
  273. package/src/config/bundled-skills/media-processing/tools/extract-keyframes.ts +0 -10
  274. package/src/config/bundled-skills/messaging/SKILL.md +3 -3
  275. package/src/config/bundled-skills/messaging/tools/messaging-archive-by-sender.ts +2 -2
  276. package/src/config/bundled-skills/outlook/SKILL.md +2 -2
  277. package/src/config/bundled-skills/outlook/tools/outlook-unsubscribe.ts +2 -2
  278. package/src/config/bundled-skills/phone-calls/SKILL.md +2 -2
  279. package/src/config/bundled-skills/phone-calls/references/CONFIG.md +27 -18
  280. package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +3 -3
  281. package/src/config/bundled-skills/settings/TOOLS.json +3 -3
  282. package/src/config/bundled-skills/settings/tools/voice-config-update.ts +26 -22
  283. package/src/config/bundled-skills/slack/SKILL.md +1 -0
  284. package/src/config/bundled-skills/transcribe/SKILL.md +9 -14
  285. package/src/config/bundled-skills/transcribe/TOOLS.json +2 -7
  286. package/src/config/bundled-skills/transcribe/tools/transcribe-media.test.ts +256 -0
  287. package/src/config/bundled-skills/transcribe/tools/transcribe-media.ts +38 -188
  288. package/src/config/bundled-tool-registry.ts +8 -0
  289. package/src/config/env-registry.ts +24 -0
  290. package/src/config/env.ts +34 -10
  291. package/src/config/feature-flag-registry.json +46 -14
  292. package/src/config/loader.ts +26 -12
  293. package/src/config/schema.ts +35 -10
  294. package/src/config/schemas/__tests__/stt.test.ts +43 -0
  295. package/src/config/schemas/analysis.ts +51 -0
  296. package/src/config/schemas/backup.ts +72 -0
  297. package/src/config/schemas/calls.ts +1 -26
  298. package/src/config/schemas/elevenlabs.ts +0 -59
  299. package/src/config/schemas/filing.ts +47 -7
  300. package/src/config/schemas/heartbeat.ts +27 -5
  301. package/src/config/schemas/host-browser.ts +47 -1
  302. package/src/config/schemas/inference.ts +1 -1
  303. package/src/config/schemas/memory-lifecycle.ts +14 -2
  304. package/src/config/schemas/services.ts +44 -0
  305. package/src/config/schemas/stt.ts +59 -0
  306. package/src/config/schemas/tts.ts +230 -0
  307. package/src/config/schemas/updates.ts +14 -0
  308. package/src/config/skills.ts +4 -0
  309. package/src/config/types.ts +4 -0
  310. package/src/contacts/contact-store.ts +56 -11
  311. package/src/contacts/contacts-write.ts +38 -1
  312. package/src/context/post-turn-tool-result-truncation.ts +3 -2
  313. package/src/context/tool-result-truncation.ts +2 -1
  314. package/src/context/window-manager.ts +45 -12
  315. package/src/credential-execution/executable-discovery.ts +12 -2
  316. package/src/credential-execution/process-manager.ts +33 -2
  317. package/src/credential-health/credential-health-service.ts +366 -0
  318. package/src/daemon/__tests__/conversation-lifecycle-auto-analyze.test.ts +324 -0
  319. package/src/daemon/__tests__/conversation-surfaces-launch.test.ts +497 -0
  320. package/src/daemon/__tests__/conversation-tool-setup.test.ts +17 -8
  321. package/src/daemon/__tests__/lifecycle-startup-ordering.test.ts +127 -0
  322. package/src/daemon/config-watcher.ts +99 -5
  323. package/src/daemon/conversation-agent-loop-handlers.ts +6 -0
  324. package/src/daemon/conversation-agent-loop.ts +101 -24
  325. package/src/daemon/conversation-error.ts +11 -0
  326. package/src/daemon/conversation-history.ts +40 -6
  327. package/src/daemon/conversation-launch.ts +220 -0
  328. package/src/daemon/conversation-lifecycle.ts +59 -9
  329. package/src/daemon/conversation-messaging.ts +37 -3
  330. package/src/daemon/conversation-notifiers.ts +5 -0
  331. package/src/daemon/conversation-process.ts +581 -19
  332. package/src/daemon/conversation-queue-manager.ts +24 -0
  333. package/src/daemon/conversation-runtime-assembly.ts +11 -1
  334. package/src/daemon/conversation-slash.ts +36 -0
  335. package/src/daemon/conversation-surfaces.ts +94 -4
  336. package/src/daemon/conversation-tool-setup.ts +25 -0
  337. package/src/daemon/conversation-usage.ts +7 -4
  338. package/src/daemon/conversation.ts +86 -28
  339. package/src/daemon/handlers/config-slack-channel.ts +269 -94
  340. package/src/daemon/handlers/conversations.ts +4 -1
  341. package/src/daemon/handlers/shared.ts +22 -0
  342. package/src/daemon/handlers/skills.ts +321 -77
  343. package/src/daemon/host-browser-proxy.ts +2 -1
  344. package/src/daemon/lifecycle.ts +122 -25
  345. package/src/daemon/message-protocol.ts +6 -0
  346. package/src/daemon/message-types/conversations.ts +34 -1
  347. package/src/daemon/message-types/home.ts +40 -0
  348. package/src/daemon/message-types/meet.ts +143 -0
  349. package/src/daemon/message-types/messages.ts +14 -0
  350. package/src/daemon/message-types/schedules.ts +34 -2
  351. package/src/daemon/message-types/skills.ts +16 -0
  352. package/src/daemon/message-types/surfaces.ts +2 -0
  353. package/src/daemon/server.ts +347 -2
  354. package/src/daemon/shutdown-handlers.ts +32 -4
  355. package/src/daemon/shutdown-registry.ts +40 -0
  356. package/src/daemon/tool-side-effects.ts +9 -0
  357. package/src/email/html-renderer.ts +76 -0
  358. package/src/heartbeat/heartbeat-service.ts +93 -7
  359. package/src/home/__tests__/assistant-feed-authoring.test.ts +156 -0
  360. package/src/home/__tests__/emit-feed-event.test.ts +169 -0
  361. package/src/home/__tests__/feed-scheduler.test.ts +194 -0
  362. package/src/home/__tests__/feed-types.test.ts +275 -0
  363. package/src/home/__tests__/feed-writer.test.ts +688 -0
  364. package/src/home/__tests__/phase5-exit-criteria.test.ts +212 -0
  365. package/src/home/__tests__/platform-gmail-digest.test.ts +222 -0
  366. package/src/home/__tests__/progress-formula.test.ts +213 -0
  367. package/src/home/__tests__/relationship-state-writer.test.ts +740 -0
  368. package/src/home/__tests__/rollup-producer.test.ts +398 -0
  369. package/src/home/assistant-feed-authoring.ts +124 -0
  370. package/src/home/emit-feed-event.ts +158 -0
  371. package/src/home/feed-scheduler.ts +247 -0
  372. package/src/home/feed-types.ts +181 -0
  373. package/src/home/feed-writer.ts +469 -0
  374. package/src/home/platform-gmail-digest.ts +163 -0
  375. package/src/home/progress-formula.ts +86 -0
  376. package/src/home/relationship-state-writer.ts +824 -0
  377. package/src/home/relationship-state.ts +143 -0
  378. package/src/home/rollup-producer.ts +384 -0
  379. package/src/hooks/runner.ts +7 -0
  380. package/src/inbound/platform-callback-registration.ts +12 -3
  381. package/src/inbound/public-ingress-urls.ts +12 -0
  382. package/src/instrument.ts +1 -1
  383. package/src/ipc/__tests__/cli-ipc.test.ts +200 -0
  384. package/src/ipc/cli-client.ts +151 -0
  385. package/src/ipc/cli-server.ts +234 -0
  386. package/src/ipc/gateway-client.ts +180 -0
  387. package/src/ipc/routes/index.ts +5 -0
  388. package/src/ipc/routes/wake-conversation.ts +19 -0
  389. package/src/memory/__tests__/auto-analysis-enqueue.test.ts +356 -0
  390. package/src/memory/__tests__/auto-analysis-guard.test.ts +57 -0
  391. package/src/memory/__tests__/conversation-analyze-job.test.ts +232 -0
  392. package/src/memory/__tests__/find-analysis-conversation.test.ts +196 -0
  393. package/src/memory/app-store.ts +1 -1
  394. package/src/memory/attachments-store.ts +70 -0
  395. package/src/memory/auto-analysis-enqueue.ts +127 -0
  396. package/src/memory/auto-analysis-guard.ts +27 -0
  397. package/src/memory/cleanup-schedule-state.ts +37 -0
  398. package/src/memory/conversation-analyze-job.ts +73 -0
  399. package/src/memory/conversation-crud.ts +99 -0
  400. package/src/memory/conversation-disk-view.ts +7 -0
  401. package/src/memory/conversation-group-migration.ts +34 -2
  402. package/src/memory/conversation-queries.ts +6 -5
  403. package/src/memory/db-init.ts +6 -0
  404. package/src/memory/db-maintenance.ts +108 -0
  405. package/src/memory/db.ts +1 -0
  406. package/src/memory/graph/conversation-graph-memory.ts +15 -0
  407. package/src/memory/graph/extraction.test.ts +23 -0
  408. package/src/memory/graph/extraction.ts +8 -0
  409. package/src/memory/graph/retriever.ts +27 -18
  410. package/src/memory/graph/scoring.test.ts +186 -0
  411. package/src/memory/graph/scoring.ts +31 -1
  412. package/src/memory/graph/tools.ts +1 -1
  413. package/src/memory/group-crud.ts +6 -1
  414. package/src/memory/indexer.ts +95 -16
  415. package/src/memory/job-handlers/cleanup.ts +11 -8
  416. package/src/memory/job-handlers/conversation-starters.ts +16 -10
  417. package/src/memory/jobs-store.ts +64 -4
  418. package/src/memory/jobs-worker.ts +22 -9
  419. package/src/memory/llm-usage-store.ts +92 -56
  420. package/src/memory/migrations/219-oauth-providers-token-exchange-body-format.ts +15 -0
  421. package/src/memory/migrations/220-normalize-user-file-by-principal.ts +190 -0
  422. package/src/memory/migrations/221-conversations-archived-at.ts +16 -0
  423. package/src/memory/migrations/index.ts +6 -0
  424. package/src/memory/migrations/registry.ts +8 -0
  425. package/src/memory/qdrant-manager.ts +43 -16
  426. package/src/memory/schema/conversations.ts +2 -0
  427. package/src/memory/schema/oauth.ts +3 -0
  428. package/src/memory/usage-buckets.ts +396 -0
  429. package/src/messaging/providers/gmail/client.ts +57 -6
  430. package/src/messaging/providers/slack/__tests__/adapter-token-routing.test.ts +282 -0
  431. package/src/messaging/providers/slack/adapter.ts +143 -38
  432. package/src/messaging/providers/slack/client.ts +16 -0
  433. package/src/messaging/providers/slack/types.ts +4 -0
  434. package/src/notifications/decision-engine.ts +3 -3
  435. package/src/notifications/signal.ts +5 -0
  436. package/src/oauth/__tests__/identity-verifier.test.ts +1 -0
  437. package/src/oauth/byo-connection.test.ts +18 -1
  438. package/src/oauth/byo-connection.ts +3 -1
  439. package/src/oauth/connect-orchestrator.ts +2 -0
  440. package/src/oauth/connection-resolver.ts +6 -2
  441. package/src/oauth/connection.ts +2 -0
  442. package/src/oauth/oauth-store.ts +9 -0
  443. package/src/oauth/platform-connection.test.ts +98 -0
  444. package/src/oauth/platform-connection.ts +52 -31
  445. package/src/oauth/seed-providers.ts +7 -0
  446. package/src/permissions/checker.ts +16 -6
  447. package/src/permissions/defaults.ts +49 -1
  448. package/src/permissions/trust-store.ts +3 -3
  449. package/src/permissions/workspace-policy.ts +3 -0
  450. package/src/platform/client.test.ts +10 -0
  451. package/src/platform/sync-identity.ts +129 -0
  452. package/src/prompts/persona-resolver.ts +126 -2
  453. package/src/prompts/system-prompt.ts +59 -18
  454. package/src/prompts/templates/BOOTSTRAP.md +5 -5
  455. package/src/prompts/templates/SOUL.md +3 -1
  456. package/src/prompts/templates/UPDATES.md +12 -0
  457. package/src/prompts/templates/channels/slack.md +20 -0
  458. package/src/prompts/update-bulletin-format.ts +26 -9
  459. package/src/prompts/update-bulletin.ts +34 -23
  460. package/src/prompts/user-reference.ts +20 -17
  461. package/src/providers/__tests__/provider-secret-catalog.test.ts +42 -0
  462. package/src/providers/anthropic/client.ts +157 -61
  463. package/src/providers/fireworks/client.ts +2 -2
  464. package/src/providers/gemini/client.ts +9 -1
  465. package/src/providers/model-catalog.ts +6 -0
  466. package/src/providers/model-intents.ts +4 -4
  467. package/src/providers/ollama/client.ts +2 -2
  468. package/src/providers/openai/chat-completions-provider.ts +474 -0
  469. package/src/providers/openai/client.ts +25 -440
  470. package/src/providers/openai/responses-provider.ts +502 -0
  471. package/src/providers/openrouter/client.ts +101 -4
  472. package/src/providers/provider-secret-catalog.ts +139 -0
  473. package/src/providers/registry.ts +2 -2
  474. package/src/providers/retry.ts +14 -3
  475. package/src/providers/speech-to-text/__tests__/provider-catalog.test.ts +251 -0
  476. package/src/providers/speech-to-text/__tests__/resolve.test.ts +828 -0
  477. package/src/providers/speech-to-text/deepgram-realtime.test.ts +980 -0
  478. package/src/providers/speech-to-text/deepgram-realtime.ts +767 -0
  479. package/src/providers/speech-to-text/deepgram.test.ts +332 -0
  480. package/src/providers/speech-to-text/deepgram.ts +115 -0
  481. package/src/providers/speech-to-text/google-gemini-live-stream.test.ts +743 -0
  482. package/src/providers/speech-to-text/google-gemini-live-stream.ts +625 -0
  483. package/src/providers/speech-to-text/google-gemini.test.ts +226 -0
  484. package/src/providers/speech-to-text/google-gemini.ts +101 -0
  485. package/src/providers/speech-to-text/openai-whisper-stream.test.ts +564 -0
  486. package/src/providers/speech-to-text/openai-whisper-stream.ts +381 -0
  487. package/src/providers/speech-to-text/openai-whisper.test.ts +1 -37
  488. package/src/providers/speech-to-text/openai-whisper.ts +63 -33
  489. package/src/providers/speech-to-text/provider-catalog.ts +306 -0
  490. package/src/providers/speech-to-text/resolve.ts +386 -6
  491. package/src/providers/types.ts +9 -0
  492. package/src/runtime/AGENTS.md +43 -1
  493. package/src/runtime/__tests__/agent-wake.test.ts +831 -0
  494. package/src/runtime/__tests__/runtime-mode.test.ts +62 -0
  495. package/src/runtime/__tests__/slack-block-formatting.test.ts +481 -0
  496. package/src/runtime/agent-wake.ts +512 -0
  497. package/src/runtime/auth/__tests__/route-policy.test.ts +40 -0
  498. package/src/runtime/auth/route-policy.ts +30 -5
  499. package/src/runtime/auth/token-service.ts +56 -1
  500. package/src/runtime/btw-sidechain.ts +2 -0
  501. package/src/runtime/capability-tokens.ts +10 -10
  502. package/src/runtime/channel-invite-transport.ts +1 -1
  503. package/src/runtime/channel-invite-transports/email.ts +14 -6
  504. package/src/runtime/channel-readiness-service.ts +12 -22
  505. package/src/runtime/chrome-extension-registry.ts +38 -2
  506. package/src/runtime/http-server.ts +395 -10
  507. package/src/runtime/http-types.ts +6 -2
  508. package/src/runtime/migrations/__tests__/vbundle-import-credentials.test.ts +36 -0
  509. package/src/runtime/migrations/__tests__/vbundle-legacy-user-md.test.ts +360 -0
  510. package/src/runtime/migrations/migration-transport.ts +1 -0
  511. package/src/runtime/migrations/migration-wizard.ts +1 -0
  512. package/src/runtime/migrations/vbundle-import-analyzer.ts +77 -1
  513. package/src/runtime/migrations/vbundle-importer.ts +34 -0
  514. package/src/runtime/pending-interactions.ts +0 -11
  515. package/src/runtime/routes/__tests__/backup-routes.test.ts +967 -0
  516. package/src/runtime/routes/__tests__/home-feed-routes.test.ts +507 -0
  517. package/src/runtime/routes/__tests__/migration-import-credential-filter.test.ts +208 -0
  518. package/src/runtime/routes/__tests__/stt-routes.test.ts +406 -0
  519. package/src/runtime/routes/__tests__/tts-routes.test.ts +474 -0
  520. package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +148 -17
  521. package/src/runtime/routes/app-management-routes.ts +12 -18
  522. package/src/runtime/routes/attachment-routes.test.ts +9 -3
  523. package/src/runtime/routes/attachment-routes.ts +216 -17
  524. package/src/runtime/routes/backup-routes.ts +519 -0
  525. package/src/runtime/routes/browser-extension-pair-routes.ts +82 -23
  526. package/src/runtime/routes/btw-routes.ts +8 -6
  527. package/src/runtime/routes/contact-routes.test.ts +298 -0
  528. package/src/runtime/routes/contact-routes.ts +132 -5
  529. package/src/runtime/routes/conversation-analysis-routes.ts +22 -142
  530. package/src/runtime/routes/conversation-management-routes.ts +115 -0
  531. package/src/runtime/routes/conversation-routes.ts +367 -146
  532. package/src/runtime/routes/filing-routes.ts +93 -0
  533. package/src/runtime/routes/home-feed-routes.ts +334 -0
  534. package/src/runtime/routes/home-state-routes.ts +138 -0
  535. package/src/runtime/routes/host-browser-routes.ts +3 -14
  536. package/src/runtime/routes/identity-intro-cache.ts +7 -3
  537. package/src/runtime/routes/identity-routes.ts +3 -17
  538. package/src/runtime/routes/inbound-stages/transcribe-audio.test.ts +46 -39
  539. package/src/runtime/routes/inbound-stages/transcribe-audio.ts +15 -15
  540. package/src/runtime/routes/integrations/slack/__tests__/channel.test.ts +137 -0
  541. package/src/runtime/routes/integrations/slack/__tests__/share.test.ts +179 -0
  542. package/src/runtime/routes/integrations/slack/channel.ts +11 -3
  543. package/src/runtime/routes/integrations/slack/share.ts +45 -7
  544. package/src/runtime/routes/llm-context-normalization.ts +303 -0
  545. package/src/runtime/routes/memory-item-routes.test.ts +3 -2
  546. package/src/runtime/routes/migration-routes.ts +40 -5
  547. package/src/runtime/routes/settings-routes.ts +22 -5
  548. package/src/runtime/routes/skills-routes.ts +76 -7
  549. package/src/runtime/routes/stt-routes.ts +233 -0
  550. package/src/runtime/routes/surface-action-routes.ts +41 -2
  551. package/src/runtime/routes/tts-routes.ts +108 -24
  552. package/src/runtime/routes/usage-routes.ts +30 -2
  553. package/src/runtime/routes/user-route-dispatcher.ts +50 -5
  554. package/src/runtime/routes/user-routes.ts +13 -1
  555. package/src/runtime/routes/work-items-routes.ts +8 -1
  556. package/src/runtime/runtime-mode.ts +33 -0
  557. package/src/runtime/services/__tests__/analyze-conversation.test.ts +444 -0
  558. package/src/runtime/services/__tests__/analyze-deps-singleton.test.ts +67 -0
  559. package/src/runtime/services/__tests__/auto-analysis-prompt.test.ts +53 -0
  560. package/src/runtime/services/__tests__/manual-analysis-prompt.test.ts +41 -0
  561. package/src/runtime/services/analyze-conversation.ts +344 -0
  562. package/src/runtime/services/analyze-deps-singleton.ts +32 -0
  563. package/src/runtime/services/auto-analysis-prompt.ts +55 -0
  564. package/src/runtime/skill-route-registry.ts +49 -0
  565. package/src/runtime/slack-block-formatting.ts +437 -10
  566. package/src/schedule/scheduler.ts +50 -0
  567. package/src/security/oauth2.ts +26 -4
  568. package/src/security/secure-keys.ts +25 -2
  569. package/src/security/token-manager.ts +8 -0
  570. package/src/sequence/engine.ts +23 -0
  571. package/src/sequence/types.ts +1 -1
  572. package/src/skills/catalog-files.ts +64 -2
  573. package/src/skills/category-inference.ts +122 -0
  574. package/src/skills/clawhub-files.ts +213 -0
  575. package/src/skills/clawhub.ts +84 -23
  576. package/src/skills/skill-file-provider.ts +40 -0
  577. package/src/skills/skillssh-files.ts +395 -0
  578. package/src/skills/skillssh-registry.ts +4 -4
  579. package/src/stt/__tests__/daemon-batch-transcriber.test.ts +392 -0
  580. package/src/stt/__tests__/types.test.ts +89 -0
  581. package/src/stt/daemon-batch-transcriber.ts +195 -0
  582. package/src/stt/stt-stream-session.ts +499 -0
  583. package/src/stt/types.ts +330 -0
  584. package/src/stt/wav-encoder.test.ts +373 -0
  585. package/src/stt/wav-encoder.ts +175 -0
  586. package/src/subagent/manager.ts +38 -14
  587. package/src/tools/browser/__tests__/browser-mode.test.ts +119 -0
  588. package/src/tools/browser/__tests__/browser-status.test.ts +123 -0
  589. package/src/tools/browser/browser-execution.ts +1163 -23
  590. package/src/tools/browser/browser-manager.ts +45 -0
  591. package/src/tools/browser/browser-mode-constants.ts +12 -0
  592. package/src/tools/browser/browser-mode.ts +92 -0
  593. package/src/tools/browser/browser-status-constants.ts +33 -0
  594. package/src/tools/browser/cdp-client/__tests__/cdp-inspect-client.test.ts +393 -0
  595. package/src/tools/browser/cdp-client/__tests__/extension-cdp-client.test.ts +29 -0
  596. package/src/tools/browser/cdp-client/__tests__/factory.test.ts +1648 -32
  597. package/src/tools/browser/cdp-client/cdp-inspect/__tests__/discovery.test.ts +264 -0
  598. package/src/tools/browser/cdp-client/cdp-inspect/discovery.ts +183 -17
  599. package/src/tools/browser/cdp-client/cdp-inspect-client.ts +254 -21
  600. package/src/tools/browser/cdp-client/errors.ts +15 -0
  601. package/src/tools/browser/cdp-client/extension-cdp-client.ts +39 -16
  602. package/src/tools/browser/cdp-client/factory.ts +797 -87
  603. package/src/tools/browser/cdp-client/index.ts +16 -2
  604. package/src/tools/browser/cdp-client/types.ts +68 -0
  605. package/src/tools/credentials/vault.ts +35 -6
  606. package/src/tools/network/web-fetch.ts +5 -2
  607. package/src/tools/network/web-search.ts +5 -2
  608. package/src/tools/shared/shell-output.ts +3 -1
  609. package/src/tools/side-effects.ts +2 -0
  610. package/src/tools/skills/sandbox-runner.ts +3 -2
  611. package/src/tools/terminal/safe-env.ts +10 -2
  612. package/src/tools/terminal/shell.ts +15 -4
  613. package/src/tools/tool-manifest.ts +21 -0
  614. package/src/tools/types.ts +17 -0
  615. package/src/tools/ui-surface/definitions.ts +6 -1
  616. package/src/tts/__tests__/provider-adapters.test.ts +834 -0
  617. package/src/tts/__tests__/provider-catalog-consistency.test.ts +196 -0
  618. package/src/tts/__tests__/provider-catalog.test.ts +183 -0
  619. package/src/tts/__tests__/provider-registry.test.ts +90 -0
  620. package/src/tts/provider-catalog.ts +201 -0
  621. package/src/tts/provider-registry.ts +73 -0
  622. package/src/tts/providers/deepgram-provider.ts +219 -0
  623. package/src/tts/providers/elevenlabs-provider.ts +211 -0
  624. package/src/tts/providers/fish-audio-provider.ts +183 -0
  625. package/src/tts/providers/index.ts +42 -0
  626. package/src/tts/providers/register-builtins.ts +130 -0
  627. package/src/tts/synthesize-text.ts +110 -0
  628. package/src/tts/tts-config-resolver.ts +78 -0
  629. package/src/tts/types.ts +153 -0
  630. package/src/types/onboarding-context.ts +7 -0
  631. package/src/util/abort-reasons.ts +58 -0
  632. package/src/util/device-id.ts +32 -16
  633. package/src/util/errors.ts +9 -1
  634. package/src/util/platform.ts +54 -10
  635. package/src/util/pricing.ts +66 -3
  636. package/src/util/spawn.ts +1 -1
  637. package/src/util/truncate.ts +4 -2
  638. package/src/util/unicode.ts +201 -0
  639. package/src/version.ts +19 -24
  640. package/src/watcher/engine.ts +23 -0
  641. package/src/watcher/watcher-store.ts +31 -0
  642. package/src/workspace/migrations/003-seed-device-id.ts +9 -3
  643. package/src/workspace/migrations/017-seed-persona-dirs.ts +68 -4
  644. package/src/workspace/migrations/029-seed-pkb.ts +1 -1
  645. package/src/workspace/migrations/031-drop-user-md.ts +317 -0
  646. package/src/workspace/migrations/031-llm-log-retention-zero-to-null.ts +73 -0
  647. package/src/workspace/migrations/032-tts-provider-unification.ts +227 -0
  648. package/src/workspace/migrations/033-stt-service-explicit-config.ts +122 -0
  649. package/src/workspace/migrations/034-remove-calls-voice-transcription-provider.ts +215 -0
  650. package/src/workspace/migrations/035-seed-slack-channel-persona.ts +50 -0
  651. package/src/workspace/migrations/036-update-pkb-index-bar.ts +37 -0
  652. package/src/workspace/migrations/037-create-meets-dir.ts +61 -0
  653. package/src/workspace/migrations/registry.ts +16 -0
  654. package/src/workspace/top-level-renderer.ts +13 -1
  655. package/src/workspace/turn-commit.ts +31 -0
  656. package/src/__tests__/email-cli.test.ts +0 -297
  657. package/src/__tests__/email-service-config-fallback.test.ts +0 -102
  658. package/src/cli/commands/browser-relay.ts +0 -466
  659. package/src/email/guardrails.ts +0 -221
  660. package/src/email/provider.ts +0 -117
  661. package/src/email/providers/agentmail.ts +0 -361
  662. package/src/email/providers/index.ts +0 -65
  663. package/src/email/service.ts +0 -384
  664. package/src/email/types.ts +0 -126
  665. package/src/prompts/templates/USER.md +0 -13
  666. package/src/providers/speech-to-text/types.ts +0 -17
  667. package/src/runtime/routes/browser-cdp-routes.ts +0 -229
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.3
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,12 +1338,6 @@ paths:
1169
1338
  responses:
1170
1339
  "200":
1171
1340
  description: Successful response
1172
- /v1/browser-cdp:
1173
- post:
1174
- operationId: browsercdp_post
1175
- responses:
1176
- "200":
1177
- description: Successful response
1178
1341
  /v1/btw:
1179
1342
  post:
1180
1343
  operationId: btw_post
@@ -2120,6 +2283,56 @@ paths:
2120
2283
  required: true
2121
2284
  schema:
2122
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
2123
2336
  /v1/contacts/invites:
2124
2337
  get:
2125
2338
  operationId: contacts_invites_get
@@ -2536,6 +2749,24 @@ paths:
2536
2749
  required: true
2537
2750
  schema:
2538
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
2539
2770
  /v1/conversations/{id}/cancel:
2540
2771
  post:
2541
2772
  operationId: conversations_by_id_cancel_post
@@ -2665,6 +2896,22 @@ paths:
2665
2896
  required: true
2666
2897
  schema:
2667
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
2668
2915
  /v1/conversations/{id}/undo:
2669
2916
  post:
2670
2917
  operationId: conversations_by_id_undo_post
@@ -3223,6 +3470,76 @@ paths:
3223
3470
  description: Upper bound epoch ms
3224
3471
  type: number
3225
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
3226
3543
  /v1/groups:
3227
3544
  get:
3228
3545
  operationId: groups_get
@@ -3764,7 +4081,249 @@ paths:
3764
4081
  summary: Update heartbeat config
3765
4082
  description: Update the heartbeat schedule configuration.
3766
4083
  tags:
3767
- - heartbeat
4084
+ - heartbeat
4085
+ responses:
4086
+ "200":
4087
+ description: Successful response
4088
+ content:
4089
+ application/json:
4090
+ schema:
4091
+ type: object
4092
+ properties:
4093
+ enabled:
4094
+ type: boolean
4095
+ intervalMs:
4096
+ type: number
4097
+ activeHoursStart:
4098
+ type: number
4099
+ activeHoursEnd:
4100
+ type: number
4101
+ nextRunAt:
4102
+ type: string
4103
+ success:
4104
+ type: boolean
4105
+ required:
4106
+ - enabled
4107
+ - intervalMs
4108
+ - activeHoursStart
4109
+ - activeHoursEnd
4110
+ - nextRunAt
4111
+ - success
4112
+ additionalProperties: false
4113
+ requestBody:
4114
+ required: true
4115
+ content:
4116
+ application/json:
4117
+ schema:
4118
+ type: object
4119
+ properties:
4120
+ enabled:
4121
+ type: boolean
4122
+ description: Enable or disable heartbeat
4123
+ intervalMs:
4124
+ type: number
4125
+ description: Heartbeat interval in ms
4126
+ activeHoursStart:
4127
+ type: number
4128
+ description: Active hours start (0–23)
4129
+ activeHoursEnd:
4130
+ type: number
4131
+ description: Active hours end (0–23)
4132
+ required:
4133
+ - enabled
4134
+ - intervalMs
4135
+ - activeHoursStart
4136
+ - activeHoursEnd
4137
+ additionalProperties: false
4138
+ /v1/heartbeat/run-now:
4139
+ post:
4140
+ operationId: heartbeat_runnow_post
4141
+ summary: Run heartbeat now
4142
+ description: Trigger an immediate heartbeat run.
4143
+ tags:
4144
+ - heartbeat
4145
+ responses:
4146
+ "200":
4147
+ description: Successful response
4148
+ content:
4149
+ application/json:
4150
+ schema:
4151
+ type: object
4152
+ properties:
4153
+ success:
4154
+ type: boolean
4155
+ ran:
4156
+ type: boolean
4157
+ description: Whether the heartbeat actually ran
4158
+ required:
4159
+ - success
4160
+ - ran
4161
+ additionalProperties: false
4162
+ /v1/heartbeat/runs:
4163
+ get:
4164
+ operationId: heartbeat_runs_get
4165
+ summary: List heartbeat runs
4166
+ description: Return recent heartbeat conversation runs.
4167
+ tags:
4168
+ - heartbeat
4169
+ responses:
4170
+ "200":
4171
+ description: Successful response
4172
+ content:
4173
+ application/json:
4174
+ schema:
4175
+ type: object
4176
+ properties:
4177
+ runs:
4178
+ type: array
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
3768
4327
  responses:
3769
4328
  "200":
3770
4329
  description: Successful response
@@ -3773,26 +4332,85 @@ paths:
3773
4332
  schema:
3774
4333
  type: object
3775
4334
  properties:
3776
- enabled:
3777
- type: boolean
3778
- intervalMs:
3779
- type: number
3780
- activeHoursStart:
3781
- type: number
3782
- activeHoursEnd:
3783
- type: number
3784
- nextRunAt:
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:
3785
4396
  type: string
3786
- success:
3787
- type: boolean
3788
4397
  required:
3789
- - enabled
3790
- - intervalMs
3791
- - activeHoursStart
3792
- - activeHoursEnd
3793
- - nextRunAt
3794
- - success
4398
+ - id
4399
+ - type
4400
+ - priority
4401
+ - title
4402
+ - summary
4403
+ - timestamp
4404
+ - status
4405
+ - author
4406
+ - createdAt
3795
4407
  additionalProperties: false
4408
+ parameters:
4409
+ - name: id
4410
+ in: path
4411
+ required: true
4412
+ schema:
4413
+ type: string
3796
4414
  requestBody:
3797
4415
  required: true
3798
4416
  content:
@@ -3800,31 +4418,24 @@ paths:
3800
4418
  schema:
3801
4419
  type: object
3802
4420
  properties:
3803
- enabled:
3804
- type: boolean
3805
- description: Enable or disable heartbeat
3806
- intervalMs:
3807
- type: number
3808
- description: Heartbeat interval in ms
3809
- activeHoursStart:
3810
- type: number
3811
- description: Active hours start (0–23)
3812
- activeHoursEnd:
3813
- type: number
3814
- description: Active hours end (0–23)
4421
+ status:
4422
+ type: string
4423
+ enum:
4424
+ - new
4425
+ - seen
4426
+ - acted_on
3815
4427
  required:
3816
- - enabled
3817
- - intervalMs
3818
- - activeHoursStart
3819
- - activeHoursEnd
4428
+ - status
3820
4429
  additionalProperties: false
3821
- /v1/heartbeat/run-now:
4430
+ /v1/home/feed/{id}/actions/{actionId}:
3822
4431
  post:
3823
- operationId: heartbeat_runnow_post
3824
- summary: Run heartbeat now
3825
- description: Trigger an immediate heartbeat run.
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`.
3826
4437
  tags:
3827
- - heartbeat
4438
+ - home
3828
4439
  responses:
3829
4440
  "200":
3830
4441
  description: Successful response
@@ -3833,22 +4444,31 @@ paths:
3833
4444
  schema:
3834
4445
  type: object
3835
4446
  properties:
3836
- success:
3837
- type: boolean
3838
- ran:
3839
- type: boolean
3840
- description: Whether the heartbeat actually ran
4447
+ conversationId:
4448
+ type: string
3841
4449
  required:
3842
- - success
3843
- - ran
4450
+ - conversationId
3844
4451
  additionalProperties: false
3845
- /v1/heartbeat/runs:
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:
3846
4464
  get:
3847
- operationId: heartbeat_runs_get
3848
- summary: List heartbeat runs
3849
- description: Return recent heartbeat conversation runs.
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.
3850
4470
  tags:
3851
- - heartbeat
4471
+ - home
3852
4472
  responses:
3853
4473
  "200":
3854
4474
  description: Successful response
@@ -3857,20 +4477,107 @@ paths:
3857
4477
  schema:
3858
4478
  type: object
3859
4479
  properties:
3860
- runs:
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:
3861
4498
  type: array
3862
- items: {}
3863
- description: Heartbeat run records
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
3864
4569
  required:
3865
- - runs
4570
+ - version
4571
+ - assistantId
4572
+ - tier
4573
+ - progressPercent
4574
+ - facts
4575
+ - capabilities
4576
+ - conversationCount
4577
+ - hatchedDate
4578
+ - assistantName
4579
+ - updatedAt
3866
4580
  additionalProperties: false
3867
- parameters:
3868
- - name: limit
3869
- in: query
3870
- required: false
3871
- schema:
3872
- type: integer
3873
- description: Max runs to return (default 20)
3874
4581
  /v1/host-bash-result:
3875
4582
  post:
3876
4583
  operationId: hostbashresult_post
@@ -4757,7 +5464,7 @@ paths:
4757
5464
  post:
4758
5465
  operationId: messages_by_id_tts_post
4759
5466
  summary: Synthesize message to speech
4760
- 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.
4761
5468
  tags:
4762
5469
  - messages
4763
5470
  responses:
@@ -6176,7 +6883,9 @@ paths:
6176
6883
  get:
6177
6884
  operationId: skills_get
6178
6885
  summary: List all skills
6179
- 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."
6180
6889
  tags:
6181
6890
  - skills
6182
6891
  responses:
@@ -6261,6 +6970,8 @@ paths:
6261
6970
  type: number
6262
6971
  publishedAt:
6263
6972
  type: string
6973
+ version:
6974
+ type: string
6264
6975
  required:
6265
6976
  - id
6266
6977
  - name
@@ -6273,6 +6984,7 @@ paths:
6273
6984
  - stars
6274
6985
  - installs
6275
6986
  - reports
6987
+ - version
6276
6988
  additionalProperties: false
6277
6989
  - type: object
6278
6990
  properties:
@@ -6305,6 +7017,32 @@ paths:
6305
7017
  type: string
6306
7018
  installs:
6307
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
6308
7046
  required:
6309
7047
  - id
6310
7048
  - name
@@ -6350,6 +7088,16 @@ paths:
6350
7088
  - origin
6351
7089
  additionalProperties: false
6352
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
6353
7101
  required:
6354
7102
  - skills
6355
7103
  additionalProperties: false
@@ -6362,6 +7110,30 @@ paths:
6362
7110
  enum:
6363
7111
  - catalog
6364
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').
6365
7137
  post:
6366
7138
  operationId: skills_post
6367
7139
  summary: Create skill
@@ -6504,6 +7276,8 @@ paths:
6504
7276
  type: number
6505
7277
  publishedAt:
6506
7278
  type: string
7279
+ version:
7280
+ type: string
6507
7281
  owner:
6508
7282
  anyOf:
6509
7283
  - type: object
@@ -6570,6 +7344,7 @@ paths:
6570
7344
  - stars
6571
7345
  - installs
6572
7346
  - reports
7347
+ - version
6573
7348
  additionalProperties: false
6574
7349
  - type: object
6575
7350
  properties:
@@ -6602,6 +7377,32 @@ paths:
6602
7377
  type: string
6603
7378
  installs:
6604
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
6605
7406
  required:
6606
7407
  - id
6607
7408
  - name
@@ -6930,6 +7731,8 @@ paths:
6930
7731
  properties:
6931
7732
  ok:
6932
7733
  type: boolean
7734
+ skillId:
7735
+ type: string
6933
7736
  required:
6934
7737
  - ok
6935
7738
  additionalProperties: false
@@ -7052,6 +7855,8 @@ paths:
7052
7855
  type: number
7053
7856
  publishedAt:
7054
7857
  type: string
7858
+ version:
7859
+ type: string
7055
7860
  required:
7056
7861
  - id
7057
7862
  - name
@@ -7064,6 +7869,7 @@ paths:
7064
7869
  - stars
7065
7870
  - installs
7066
7871
  - reports
7872
+ - version
7067
7873
  additionalProperties: false
7068
7874
  - type: object
7069
7875
  properties:
@@ -7096,6 +7902,32 @@ paths:
7096
7902
  type: string
7097
7903
  installs:
7098
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
7099
7931
  required:
7100
7932
  - id
7101
7933
  - name
@@ -7167,6 +7999,38 @@ paths:
7167
7999
  responses:
7168
8000
  "200":
7169
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
7170
8034
  /v1/subagents/{id}:
7171
8035
  get:
7172
8036
  operationId: subagents_by_id_get
@@ -7335,6 +8199,11 @@ paths:
7335
8199
  properties:
7336
8200
  ok:
7337
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.
7338
8207
  required:
7339
8208
  - ok
7340
8209
  additionalProperties: false
@@ -7783,6 +8652,39 @@ paths:
7783
8652
  - decision
7784
8653
  - priority
7785
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
7786
8688
  /v1/usage/breakdown:
7787
8689
  get:
7788
8690
  operationId: usage_breakdown_get
@@ -7868,6 +8770,14 @@ paths:
7868
8770
  - daily
7869
8771
  - hourly
7870
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.
7871
8781
  /v1/usage/totals:
7872
8782
  get:
7873
8783
  operationId: usage_totals_get