@vellumai/assistant 0.8.3 → 0.8.5

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 (665) hide show
  1. package/ARCHITECTURE.md +2 -2
  2. package/docker-entrypoint.sh +0 -1
  3. package/docs/browser-use-architecture-phase2.md +1 -1
  4. package/knip.json +2 -1
  5. package/node_modules/@vellumai/gateway-client/src/types.ts +2 -0
  6. package/openapi.yaml +1492 -100
  7. package/package.json +1 -1
  8. package/src/__tests__/agent-loop-exit-reason.test.ts +4 -5
  9. package/src/__tests__/agent-loop-override-profile.test.ts +1 -1
  10. package/src/__tests__/agent-loop.test.ts +88 -3
  11. package/src/__tests__/anthropic-provider.test.ts +302 -33
  12. package/src/__tests__/approval-cascade.test.ts +1 -1
  13. package/src/__tests__/assistant-event-hub-self-exclusion.test.ts +293 -0
  14. package/src/__tests__/assistant-feature-flags-integration.test.ts +3 -3
  15. package/src/__tests__/audit-log-rotation.test.ts +70 -16
  16. package/src/__tests__/background-workers-disk-pressure.test.ts +4 -3
  17. package/src/__tests__/btw-routes.test.ts +2 -3
  18. package/src/__tests__/call-controller.test.ts +0 -1
  19. package/src/__tests__/cancel-resolves-conversation-key.test.ts +1 -1
  20. package/src/__tests__/channel-delivery-store.test.ts +193 -0
  21. package/src/__tests__/channel-guardian.test.ts +3 -3
  22. package/src/__tests__/channel-reply-delivery.test.ts +284 -5
  23. package/src/__tests__/channel-retry-sweep.test.ts +274 -1
  24. package/src/__tests__/checker.test.ts +6 -15
  25. package/src/__tests__/compaction-events.test.ts +2 -1
  26. package/src/__tests__/compactor-call-site-logging.test.ts +214 -0
  27. package/src/__tests__/compactor-preserved-tail-count.test.ts +110 -0
  28. package/src/__tests__/computer-use-skill-manifest-regression.test.ts +5 -11
  29. package/src/__tests__/computer-use-tools.test.ts +2 -4
  30. package/src/__tests__/config-watcher.test.ts +1 -1
  31. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +0 -1
  32. package/src/__tests__/context-token-estimator.test.ts +91 -1
  33. package/src/__tests__/conversation-abort-tool-results.test.ts +1 -1
  34. package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +1 -1
  35. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +55 -4
  36. package/src/__tests__/conversation-agent-loop-overflow.test.ts +228 -8
  37. package/src/__tests__/conversation-agent-loop.test.ts +188 -129
  38. package/src/__tests__/conversation-app-control-instantiation.test.ts +2 -5
  39. package/src/__tests__/conversation-app-control-lifecycle.test.ts +1 -1
  40. package/src/__tests__/conversation-clean-command.test.ts +137 -0
  41. package/src/__tests__/conversation-clear-safety.test.ts +25 -25
  42. package/src/__tests__/conversation-confirmation-signals.test.ts +1 -1
  43. package/src/__tests__/conversation-delete-schedule-cleanup.test.ts +1 -1
  44. package/src/__tests__/conversation-disk-view-integration.test.ts +2 -2
  45. package/src/__tests__/conversation-error.test.ts +31 -0
  46. package/src/__tests__/conversation-fork-crud.test.ts +324 -0
  47. package/src/__tests__/conversation-lifecycle.test.ts +53 -12
  48. package/src/__tests__/conversation-load-history-repair.test.ts +1 -1
  49. package/src/__tests__/conversation-load-history-stripped.test.ts +279 -0
  50. package/src/__tests__/conversation-pairing.test.ts +2 -2
  51. package/src/__tests__/conversation-process-callsite.test.ts +1 -1
  52. package/src/__tests__/conversation-provider-retry-repair.test.ts +2 -1
  53. package/src/__tests__/conversation-queue.test.ts +1 -1
  54. package/src/__tests__/conversation-routes-disk-view.test.ts +109 -0
  55. package/src/__tests__/conversation-routes-slash-commands.test.ts +35 -0
  56. package/src/__tests__/conversation-runtime-assembly.test.ts +264 -81
  57. package/src/__tests__/conversation-seed-composer.test.ts +66 -4
  58. package/src/__tests__/conversation-skill-tools.test.ts +2 -5
  59. package/src/__tests__/conversation-slash-commands.test.ts +36 -8
  60. package/src/__tests__/conversation-slash-queue.test.ts +1 -1
  61. package/src/__tests__/conversation-slash-unknown.test.ts +1 -1
  62. package/src/__tests__/conversation-speed-override.test.ts +1 -1
  63. package/src/__tests__/conversation-store.test.ts +1 -1
  64. package/src/__tests__/conversation-surfaces-task-progress.test.ts +220 -0
  65. package/src/__tests__/conversation-sync-tags.test.ts +99 -32
  66. package/src/__tests__/conversation-workspace-cache-state.test.ts +2 -1
  67. package/src/__tests__/conversation-workspace-injection.test.ts +5 -1
  68. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +5 -1
  69. package/src/__tests__/credential-execution-feature-gates.test.ts +9 -7
  70. package/src/__tests__/credential-execution-tools.test.ts +6 -6
  71. package/src/__tests__/credential-security-invariants.test.ts +7 -0
  72. package/src/__tests__/credential-vault-unit.test.ts +2 -2
  73. package/src/__tests__/cu-unified-flow.test.ts +10 -1
  74. package/src/__tests__/dm-backfill.test.ts +64 -0
  75. package/src/__tests__/dm-persistence.test.ts +33 -0
  76. package/src/__tests__/document-find-replace.test.ts +501 -0
  77. package/src/__tests__/dynamic-page-surface.test.ts +2 -2
  78. package/src/__tests__/email-html-renderer.test.ts +12 -0
  79. package/src/__tests__/first-greeting.test.ts +23 -2
  80. package/src/__tests__/gateway-flag-listener.test.ts +237 -0
  81. package/src/__tests__/gemini-provider.test.ts +78 -0
  82. package/src/__tests__/guardian-dispatch.test.ts +0 -1
  83. package/src/__tests__/guardian-outbound-http.test.ts +7 -5
  84. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +1 -1
  85. package/src/__tests__/headless-browser-navigate.test.ts +172 -0
  86. package/src/__tests__/heartbeat-disk-pressure.test.ts +4 -0
  87. package/src/__tests__/heartbeat-service.test.ts +4 -0
  88. package/src/__tests__/host-bash-proxy.test.ts +6 -0
  89. package/src/__tests__/host-browser-proxy.test.ts +10 -0
  90. package/src/__tests__/host-cu-proxy.test.ts +8 -1
  91. package/src/__tests__/host-file-proxy.test.ts +8 -1
  92. package/src/__tests__/host-shell-tool.test.ts +1 -1
  93. package/src/__tests__/host-transfer-proxy.test.ts +8 -1
  94. package/src/__tests__/identity-routes.test.ts +57 -0
  95. package/src/__tests__/inbound-slack-persistence.test.ts +3 -0
  96. package/src/__tests__/init-feature-flag-overrides.test.ts +5 -6
  97. package/src/__tests__/injector-chain.test.ts +2 -0
  98. package/src/__tests__/injector-document-comments.test.ts +378 -0
  99. package/src/__tests__/injector-pkb-v2-silenced.test.ts +4 -25
  100. package/src/__tests__/list-messages-attachments.test.ts +21 -17
  101. package/src/__tests__/list-messages-hidden-metadata.test.ts +217 -0
  102. package/src/__tests__/list-messages-page-latest.test.ts +130 -14
  103. package/src/__tests__/list-messages-tool-merge.test.ts +77 -17
  104. package/src/__tests__/llm-context-normalization.test.ts +0 -2
  105. package/src/__tests__/llm-request-log-call-site.test.ts +136 -0
  106. package/src/__tests__/llm-request-log-source-clickhouse.test.ts +26 -0
  107. package/src/__tests__/llm-resolver.test.ts +161 -9
  108. package/src/__tests__/llm-usage-store.test.ts +66 -0
  109. package/src/__tests__/log-export-routes.test.ts +99 -2
  110. package/src/__tests__/logger.test.ts +89 -0
  111. package/src/__tests__/mcp-abort-signal.test.ts +2 -2
  112. package/src/__tests__/media-generate-image.test.ts +31 -0
  113. package/src/__tests__/memory-v2-static-injector.test.ts +7 -7
  114. package/src/__tests__/message-queue-steer.test.ts +114 -0
  115. package/src/__tests__/model-intents.test.ts +2 -4
  116. package/src/__tests__/notification-guardian-path.test.ts +0 -1
  117. package/src/__tests__/onboarding-template-contract.test.ts +1 -1
  118. package/src/__tests__/openai-provider.test.ts +151 -0
  119. package/src/__tests__/openai-responses-provider.test.ts +118 -16
  120. package/src/__tests__/outbound-slack-persistence.test.ts +187 -20
  121. package/src/__tests__/pending-interactions-resolved-event.test.ts +189 -0
  122. package/src/__tests__/platform-bash-auto-approve.test.ts +2 -2
  123. package/src/__tests__/platform.test.ts +2 -5
  124. package/src/__tests__/plugin-api-tool-definition.test.ts +92 -0
  125. package/src/__tests__/plugin-bootstrap.test.ts +2 -2
  126. package/src/__tests__/plugin-source-watcher.test.ts +302 -0
  127. package/src/__tests__/plugin-tool-contribution.test.ts +13 -6
  128. package/src/__tests__/plugin-types.test.ts +3 -2
  129. package/src/__tests__/prechat-onboarding-contract.test.ts +131 -98
  130. package/src/__tests__/pricing.test.ts +12 -0
  131. package/src/__tests__/process-message-background-slack.test.ts +1 -51
  132. package/src/__tests__/process-message-display-content.test.ts +21 -16
  133. package/src/__tests__/prune-jobs-changes-parser.test.ts +61 -0
  134. package/src/__tests__/registry.test.ts +2 -8
  135. package/src/__tests__/require-fresh-approval.test.ts +2 -2
  136. package/src/__tests__/runtime-events-sse-bilingual.test.ts +154 -0
  137. package/src/__tests__/server-history-render.test.ts +83 -4
  138. package/src/__tests__/shell-tool-proxy-mode.test.ts +1 -1
  139. package/src/__tests__/skill-feature-flags.test.ts +2 -2
  140. package/src/__tests__/skill-projection-feature-flag.test.ts +4 -7
  141. package/src/__tests__/skill-projection.benchmark.test.ts +2 -6
  142. package/src/__tests__/skill-tool-factory.test.ts +1 -1
  143. package/src/__tests__/steer-tool-repair.test.ts +249 -0
  144. package/src/__tests__/subagent-notify-parent.test.ts +1 -1
  145. package/src/__tests__/suggestion-routes.test.ts +1 -0
  146. package/src/__tests__/sync-message-contract.test.ts +59 -0
  147. package/src/__tests__/system-prompt.test.ts +161 -124
  148. package/src/__tests__/terminal-tools.test.ts +12 -2
  149. package/src/__tests__/thinking-block-replay.test.ts +113 -0
  150. package/src/__tests__/thread-backfill.test.ts +370 -22
  151. package/src/__tests__/tool-approval-handler.test.ts +1 -5
  152. package/src/__tests__/tool-execute-pipeline.test.ts +2 -2
  153. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +2 -5
  154. package/src/__tests__/tool-executor-lifecycle-events.test.ts +15 -5
  155. package/src/__tests__/tool-executor.test.ts +89 -53
  156. package/src/__tests__/tool-grant-request-escalation.test.ts +1 -6
  157. package/src/__tests__/tool-result-metadata-plumbing.test.ts +167 -0
  158. package/src/__tests__/trusted-contact-approval-notifier.test.ts +0 -1
  159. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +1 -6
  160. package/src/__tests__/trusted-contact-multichannel.test.ts +0 -1
  161. package/src/__tests__/twilio-routes.test.ts +1 -1
  162. package/src/__tests__/ui-file-upload-surface.test.ts +2 -2
  163. package/src/__tests__/usage-routes.test.ts +3 -0
  164. package/src/__tests__/verification-control-plane-policy.test.ts +2 -2
  165. package/src/__tests__/web-fetch.test.ts +2 -2
  166. package/src/__tests__/workspace-git-service.test.ts +94 -10
  167. package/src/__tests__/workspace-migration-088-deprecate-background-conversation-override.test.ts +158 -0
  168. package/src/__tests__/workspace-migration-089-move-memory-tree-out-of-v3.test.ts +86 -0
  169. package/src/acp/__tests__/prepare-agent-env.test.ts +146 -0
  170. package/src/acp/prepare-agent-env.ts +78 -0
  171. package/src/acp/session-manager.ts +1 -1
  172. package/src/agent/attachments.ts +1 -0
  173. package/src/agent/loop.ts +65 -20
  174. package/src/api/README.md +5 -0
  175. package/src/api/index.ts +4 -0
  176. package/src/api/package.json +10 -0
  177. package/src/background-wake/background-wake-routes.test.ts +233 -0
  178. package/src/background-wake/next-wake.test.ts +289 -0
  179. package/src/background-wake/next-wake.ts +172 -0
  180. package/src/background-wake/runtime-registry.ts +24 -0
  181. package/src/browser/operations.ts +15 -0
  182. package/src/cli/commands/__tests__/browser.test.ts +23 -5
  183. package/src/cli/commands/__tests__/conversations-slack.test.ts +572 -0
  184. package/src/cli/commands/__tests__/domain-register.test.ts +110 -0
  185. package/src/cli/commands/__tests__/domain-status.test.ts +33 -33
  186. package/src/cli/commands/__tests__/inference-send.test.ts +108 -5
  187. package/src/cli/commands/__tests__/memory-v2-compare-render.test.ts +98 -0
  188. package/src/cli/commands/__tests__/memory-v2.test.ts +10 -12
  189. package/src/cli/commands/__tests__/memory-v3-render.test.ts +340 -0
  190. package/src/cli/commands/browser.ts +247 -0
  191. package/src/cli/commands/conversations.ts +128 -1
  192. package/src/cli/commands/domain.ts +91 -41
  193. package/src/cli/commands/inference-providers.ts +147 -1
  194. package/src/cli/commands/inference.ts +93 -40
  195. package/src/cli/commands/memory-v2-compare-render.ts +115 -0
  196. package/src/cli/commands/memory-v2.ts +483 -0
  197. package/src/cli/commands/memory-v3-render.ts +344 -0
  198. package/src/cli/commands/memory-v3.ts +316 -0
  199. package/src/cli/commands/notifications.ts +24 -2
  200. package/src/cli/program.ts +2 -0
  201. package/src/cli/utils/conversation-id.ts +17 -5
  202. package/src/config/assistant-feature-flags.ts +21 -9
  203. package/src/config/bundled-skills/app-builder/SKILL.md +2 -2
  204. package/src/config/bundled-skills/document-editor/SKILL.md +124 -0
  205. package/src/config/bundled-skills/document-editor/TOOLS.json +258 -0
  206. package/src/config/bundled-skills/document-editor/tools/comment-list.ts +12 -0
  207. package/src/config/bundled-skills/document-editor/tools/comment-reply.ts +12 -0
  208. package/src/config/bundled-skills/document-editor/tools/comment-resolve.ts +12 -0
  209. package/src/config/bundled-skills/document-editor/tools/document-find.ts +12 -0
  210. package/src/config/bundled-skills/document-editor/tools/document-open.ts +12 -0
  211. package/src/config/bundled-skills/document-editor/tools/document-replace-text.ts +12 -0
  212. package/src/config/bundled-skills/image-studio/SKILL.md +4 -0
  213. package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +2 -2
  214. package/src/config/bundled-skills/media-processing/SKILL.md +8 -0
  215. package/src/config/bundled-skills/media-processing/tools/ingest-media.ts +13 -8
  216. package/src/config/bundled-skills/messaging/tools/messaging-analyze-style.ts +10 -3
  217. package/src/config/bundled-skills/phone-calls/references/TRANSCRIPTS.md +16 -14
  218. package/src/config/bundled-skills/playbooks/tools/playbook-create.ts +7 -2
  219. package/src/config/bundled-skills/playbooks/tools/playbook-update.ts +7 -2
  220. package/src/config/bundled-skills/schedule/SKILL.md +8 -0
  221. package/src/config/bundled-tool-registry.ts +24 -12
  222. package/src/config/call-site-defaults.ts +20 -0
  223. package/src/config/feature-flag-registry.json +115 -3
  224. package/src/config/llm-resolver.ts +16 -2
  225. package/src/config/schemas/__tests__/memory-v2.test.ts +217 -1
  226. package/src/config/schemas/call-site-catalog.ts +35 -0
  227. package/src/config/schemas/llm.ts +14 -0
  228. package/src/config/schemas/memory-v2.ts +294 -1
  229. package/src/config/schemas/memory.ts +2 -1
  230. package/src/context/compactor.ts +60 -1
  231. package/src/context/token-estimator.ts +47 -4
  232. package/src/context/window-manager.ts +25 -0
  233. package/src/conversations/__tests__/message-consolidation.test.ts +350 -0
  234. package/src/conversations/message-consolidation.ts +404 -0
  235. package/src/credential-health/credential-health-service.ts +34 -19
  236. package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +1 -1
  237. package/src/daemon/__tests__/conversation-tool-setup.test.ts +66 -6
  238. package/src/daemon/__tests__/meet-manifest-loader.test.ts +1 -1
  239. package/src/daemon/__tests__/native-web-search-metadata.test.ts +357 -0
  240. package/src/daemon/__tests__/web-search-status-text.test.ts +287 -0
  241. package/src/daemon/conversation-agent-loop-handlers.ts +155 -36
  242. package/src/daemon/conversation-agent-loop.ts +307 -88
  243. package/src/daemon/conversation-error.ts +31 -1
  244. package/src/daemon/conversation-lifecycle.ts +149 -118
  245. package/src/daemon/conversation-messaging.ts +3 -0
  246. package/src/daemon/conversation-process.ts +273 -0
  247. package/src/daemon/conversation-queue-manager.ts +14 -0
  248. package/src/daemon/conversation-runtime-assembly.ts +145 -84
  249. package/src/daemon/conversation-slash.ts +37 -5
  250. package/src/daemon/conversation-surfaces.ts +45 -2
  251. package/src/daemon/conversation-tool-setup.ts +70 -3
  252. package/src/daemon/conversation-usage.ts +2 -0
  253. package/src/daemon/conversation.ts +54 -32
  254. package/src/daemon/disk-pressure-guard.ts +14 -2
  255. package/src/daemon/first-greeting.ts +10 -0
  256. package/src/daemon/handlers/__tests__/config-a2a-accept.test.ts +498 -0
  257. package/src/daemon/handlers/config-a2a.ts +160 -0
  258. package/src/daemon/handlers/config-model.test.ts +2 -0
  259. package/src/daemon/handlers/conversations.ts +90 -3
  260. package/src/daemon/handlers/shared.ts +92 -29
  261. package/src/daemon/host-bash-proxy.ts +1 -1
  262. package/src/daemon/host-browser-proxy.ts +5 -5
  263. package/src/daemon/host-cu-proxy.ts +5 -5
  264. package/src/daemon/host-file-proxy.ts +5 -5
  265. package/src/daemon/host-proxy-base.ts +4 -4
  266. package/src/daemon/host-transfer-proxy.ts +11 -11
  267. package/src/daemon/lifecycle.ts +40 -23
  268. package/src/daemon/meet-manifest-loader.ts +1 -7
  269. package/src/daemon/message-protocol.ts +4 -0
  270. package/src/daemon/message-types/conversations.ts +14 -9
  271. package/src/daemon/message-types/document-comments.ts +50 -0
  272. package/src/daemon/message-types/home.ts +1 -13
  273. package/src/daemon/message-types/messages.ts +66 -7
  274. package/src/daemon/message-types/surfaces.ts +3 -1
  275. package/src/daemon/message-types/sync.ts +14 -0
  276. package/src/daemon/message-types/web-activity.ts +57 -0
  277. package/src/daemon/plugin-source-watcher.ts +135 -3
  278. package/src/daemon/process-message.ts +69 -12
  279. package/src/daemon/shutdown-handlers.ts +24 -5
  280. package/src/daemon/switch-inference-profile-tool.ts +52 -0
  281. package/src/daemon/tool-setup-types.ts +13 -0
  282. package/src/daemon/trust-context.ts +6 -0
  283. package/src/documents/document-comments-store.test.ts +338 -0
  284. package/src/documents/document-comments-store.ts +237 -0
  285. package/src/documents/document-store.ts +202 -0
  286. package/src/events/relationship-state-updated.ts +25 -0
  287. package/src/heartbeat/__tests__/heartbeat-service.test.ts +1 -2
  288. package/src/heartbeat/heartbeat-service.ts +1 -0
  289. package/src/home/__tests__/suggested-prompts.test.ts +33 -2
  290. package/src/home/feed-types.ts +6 -1
  291. package/src/home/home-content-refresh.ts +52 -0
  292. package/src/home/home-greeting-cache.ts +69 -0
  293. package/src/home/home-greeting.ts +85 -0
  294. package/src/home/suggested-prompts.ts +168 -9
  295. package/src/ipc/gateway-flag-listener.ts +123 -0
  296. package/src/ipc/skill-routes/registries.ts +8 -12
  297. package/src/memory/__tests__/db-async-query.test.ts +165 -0
  298. package/src/memory/__tests__/db-maintenance.test.ts +115 -0
  299. package/src/memory/__tests__/jobs-store-enqueue-gate.test.ts +241 -0
  300. package/src/memory/__tests__/jobs-store-job-classes.test.ts +28 -1
  301. package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +135 -2
  302. package/src/memory/__tests__/memory-retrospective-job.test.ts +327 -6
  303. package/src/memory/auto-analysis-enqueue.ts +5 -1
  304. package/src/memory/conversation-crud.ts +191 -100
  305. package/src/memory/conversation-starters-cadence.ts +3 -1
  306. package/src/memory/conversation-title-service.ts +19 -3
  307. package/src/memory/db-async-query.ts +214 -0
  308. package/src/memory/db-init.ts +26 -0
  309. package/src/memory/db-maintenance.ts +30 -21
  310. package/src/memory/delivery-crud.ts +41 -0
  311. package/src/memory/delivery-status.ts +141 -15
  312. package/src/memory/external-conversation-store.ts +32 -1
  313. package/src/memory/graph/bootstrap.ts +8 -1
  314. package/src/memory/graph/capability-seed.ts +7 -3
  315. package/src/memory/graph/conversation-graph-memory.ts +100 -17
  316. package/src/memory/graph/extraction.ts +1 -5
  317. package/src/memory/graph/graph-search.ts +7 -1
  318. package/src/memory/indexer.ts +28 -18
  319. package/src/memory/job-handlers/cleanup.ts +76 -18
  320. package/src/memory/job-handlers/conversation-starters.ts +1 -4
  321. package/src/memory/jobs/embed-pkb-file.ts +6 -1
  322. package/src/memory/jobs-store.ts +14 -0
  323. package/src/memory/jobs-worker.ts +68 -15
  324. package/src/memory/llm-request-log-source-clickhouse.ts +42 -2
  325. package/src/memory/llm-request-log-source-local.ts +7 -0
  326. package/src/memory/llm-request-log-source.ts +9 -2
  327. package/src/memory/llm-request-log-store.ts +43 -1
  328. package/src/memory/llm-usage-store.ts +24 -0
  329. package/src/memory/memory-retrospective-constants.ts +28 -0
  330. package/src/memory/memory-retrospective-enqueue.ts +11 -3
  331. package/src/memory/memory-retrospective-job.ts +413 -18
  332. package/src/memory/memory-retrospective-startup-cleanup.ts +3 -3
  333. package/src/memory/memory-v2-activation-log-store.ts +41 -14
  334. package/src/memory/migrations/100-core-tables.ts +1 -0
  335. package/src/memory/migrations/109-external-conversation-bindings.ts +1 -0
  336. package/src/memory/migrations/253-conversation-last-notified-profile.ts +15 -0
  337. package/src/memory/migrations/253-document-comments.ts +47 -0
  338. package/src/memory/migrations/254-external-conversation-binding-chat-name.ts +43 -0
  339. package/src/memory/migrations/255-channel-inbound-delivery-attempts.ts +24 -0
  340. package/src/memory/migrations/256-memory-v2-injection-events.ts +113 -0
  341. package/src/memory/migrations/257-strip-base-url-non-openai-compatible.ts +22 -0
  342. package/src/memory/migrations/258-onboarding-events-prior-assistants.ts +13 -0
  343. package/src/memory/migrations/259-conversation-cleaned-at.ts +33 -0
  344. package/src/memory/migrations/260-rename-cleaned-at.ts +44 -0
  345. package/src/memory/migrations/261-llm-usage-add-raw-usage.ts +36 -0
  346. package/src/memory/migrations/262-memory-v3-coactivation.ts +57 -0
  347. package/src/memory/migrations/263-memory-v3-auto-edges.ts +50 -0
  348. package/src/memory/migrations/264-llm-request-log-call-site.ts +29 -0
  349. package/src/memory/migrations/index.ts +34 -0
  350. package/src/memory/migrations/registry.ts +58 -0
  351. package/src/memory/onboarding-events-store.ts +7 -0
  352. package/src/memory/schema/calls.ts +1 -0
  353. package/src/memory/schema/conversations.ts +3 -0
  354. package/src/memory/schema/infrastructure.ts +22 -0
  355. package/src/memory/tool-usage-store.ts +36 -8
  356. package/src/memory/v2/__tests__/consolidation-job.test.ts +1 -0
  357. package/src/memory/v2/__tests__/harness-compare.test.ts +186 -0
  358. package/src/memory/v2/__tests__/harness-metrics.test.ts +74 -0
  359. package/src/memory/v2/__tests__/harness-oracle.test.ts +257 -0
  360. package/src/memory/v2/__tests__/harness-replay-input.test.ts +225 -0
  361. package/src/memory/v2/__tests__/harness-runner.test.ts +109 -0
  362. package/src/memory/v2/__tests__/injection-events.test.ts +318 -0
  363. package/src/memory/v2/__tests__/injection.test.ts +158 -112
  364. package/src/memory/v2/__tests__/page-index.test.ts +365 -1
  365. package/src/memory/v2/__tests__/qdrant.test.ts +36 -0
  366. package/src/memory/v2/__tests__/router.test.ts +660 -4
  367. package/src/memory/v2/consolidation-job.ts +14 -0
  368. package/src/memory/v2/harness/compare.ts +57 -0
  369. package/src/memory/v2/harness/metrics.ts +124 -0
  370. package/src/memory/v2/harness/oracle.ts +145 -0
  371. package/src/memory/v2/harness/replay-input.ts +224 -0
  372. package/src/memory/v2/harness/retriever.ts +74 -0
  373. package/src/memory/v2/harness/router-retriever.ts +43 -0
  374. package/src/memory/v2/harness/runner.ts +106 -0
  375. package/src/memory/v2/harness/trace.ts +58 -0
  376. package/src/memory/v2/injection-events.ts +101 -0
  377. package/src/memory/v2/injection.ts +42 -25
  378. package/src/memory/v2/page-index.ts +209 -7
  379. package/src/memory/v2/page-store.ts +18 -0
  380. package/src/memory/v2/prompts/router.ts +26 -1
  381. package/src/memory/v2/qdrant.ts +14 -2
  382. package/src/memory/v2/router.ts +369 -62
  383. package/src/memory/v3/__tests__/coactivation-store.test.ts +422 -0
  384. package/src/memory/v3/__tests__/consolidation-job.test.ts +468 -0
  385. package/src/memory/v3/__tests__/edge-learning-job.test.ts +324 -0
  386. package/src/memory/v3/__tests__/edges.test.ts +563 -0
  387. package/src/memory/v3/__tests__/filter.test.ts +512 -0
  388. package/src/memory/v3/__tests__/gate.test.ts +574 -0
  389. package/src/memory/v3/__tests__/index-composition.test.ts +233 -0
  390. package/src/memory/v3/__tests__/loop.test.ts +530 -0
  391. package/src/memory/v3/__tests__/retriever.test.ts +226 -0
  392. package/src/memory/v3/__tests__/scouts.test.ts +440 -0
  393. package/src/memory/v3/__tests__/shadow-middleware.test.ts +312 -0
  394. package/src/memory/v3/__tests__/system-prompts.test.ts +154 -0
  395. package/src/memory/v3/__tests__/traversal.test.ts +469 -0
  396. package/src/memory/v3/__tests__/tree-index.test.ts +280 -0
  397. package/src/memory/v3/__tests__/tree-store.test.ts +529 -0
  398. package/src/memory/v3/__tests__/tree-walk.test.ts +707 -0
  399. package/src/memory/v3/__tests__/validate.test.ts +245 -0
  400. package/src/memory/v3/auto-edges.ts +223 -0
  401. package/src/memory/v3/coactivation-store.ts +124 -0
  402. package/src/memory/v3/consolidation-job.ts +323 -0
  403. package/src/memory/v3/edge-learning-job.ts +160 -0
  404. package/src/memory/v3/edges.ts +249 -0
  405. package/src/memory/v3/filter.ts +281 -0
  406. package/src/memory/v3/gate.ts +334 -0
  407. package/src/memory/v3/index-composition.ts +113 -0
  408. package/src/memory/v3/llm-capture.ts +46 -0
  409. package/src/memory/v3/loop.ts +382 -0
  410. package/src/memory/v3/maintenance.ts +144 -0
  411. package/src/memory/v3/prompt-context.ts +33 -0
  412. package/src/memory/v3/prompts/consolidation.ts +458 -0
  413. package/src/memory/v3/prompts/system-prompts.ts +196 -0
  414. package/src/memory/v3/retriever.ts +33 -0
  415. package/src/memory/v3/scouts.ts +420 -0
  416. package/src/memory/v3/shadow-middleware.ts +305 -0
  417. package/src/memory/v3/traversal.ts +206 -0
  418. package/src/memory/v3/tree-index.ts +237 -0
  419. package/src/memory/v3/tree-store.ts +394 -0
  420. package/src/memory/v3/tree-walk.ts +351 -0
  421. package/src/memory/v3/types.ts +65 -0
  422. package/src/memory/v3/validate.ts +300 -0
  423. package/src/messaging/providers/index.ts +7 -1
  424. package/src/messaging/providers/slack/__tests__/adapter-mention-rendering.test.ts +329 -3
  425. package/src/messaging/providers/slack/__tests__/adapter-token-routing.test.ts +34 -1
  426. package/src/messaging/providers/slack/adapter.ts +178 -25
  427. package/src/messaging/providers/slack/api.test.ts +54 -0
  428. package/src/messaging/providers/slack/api.ts +119 -3
  429. package/src/messaging/providers/slack/client.ts +12 -0
  430. package/src/messaging/providers/slack/deep-link.ts +20 -1
  431. package/src/messaging/providers/slack/message-metadata.test.ts +48 -0
  432. package/src/messaging/providers/slack/message-metadata.ts +156 -0
  433. package/src/messaging/providers/slack/render-transcript.test.ts +107 -75
  434. package/src/messaging/providers/slack/render-transcript.ts +176 -49
  435. package/src/messaging/providers/slack/send.test.ts +77 -0
  436. package/src/messaging/providers/slack/send.ts +8 -2
  437. package/src/messaging/providers/slack/types.ts +14 -0
  438. package/src/notifications/__tests__/emit-signal-home-feed.test.ts +4 -1
  439. package/src/notifications/__tests__/home-feed-side-effect.test.ts +116 -54
  440. package/src/notifications/adapters/macos.ts +18 -1
  441. package/src/notifications/adapters/platform.ts +1 -1
  442. package/src/notifications/conversation-seed-composer.ts +14 -2
  443. package/src/notifications/decision-engine.ts +1 -4
  444. package/src/notifications/deferred-emit.ts +135 -0
  445. package/src/notifications/emit-signal.ts +38 -50
  446. package/src/notifications/home-feed-side-effect.ts +60 -30
  447. package/src/oauth/connect-orchestrator.ts +3 -0
  448. package/src/oauth/credential-token-resolver.ts +2 -0
  449. package/src/oauth/manual-token-connection.ts +19 -0
  450. package/src/oauth/oauth-store.ts +12 -0
  451. package/src/oauth/seed-providers.ts +22 -0
  452. package/src/permissions/prompter.ts +8 -5
  453. package/src/permissions/question-prompter.ts +5 -2
  454. package/src/permissions/secret-prompter.ts +6 -3
  455. package/src/plugin-api/index.ts +4 -0
  456. package/src/plugin-api/types.ts +7 -33
  457. package/src/plugins/defaults/index.ts +6 -0
  458. package/src/plugins/defaults/injectors.ts +100 -20
  459. package/src/plugins/external-plugin-loader.ts +5 -68
  460. package/src/plugins/types.ts +11 -16
  461. package/src/proactive-artifact/aux-message-injector.ts +17 -4
  462. package/src/prompts/__tests__/system-prompt.test.ts +46 -2
  463. package/src/prompts/__tests__/task-progress-hint-section.test.ts +3 -9
  464. package/src/prompts/normalize-onboarding.ts +40 -0
  465. package/src/prompts/persona-resolver.ts +36 -21
  466. package/src/prompts/sections.ts +69 -19
  467. package/src/prompts/system-prompt.ts +118 -216
  468. package/src/prompts/template-detection.ts +37 -0
  469. package/src/prompts/templates/BOOTSTRAP-CONTENT-AUTOMATION.md +141 -0
  470. package/src/prompts/templates/BOOTSTRAP.md +10 -2
  471. package/src/prompts/templates/VOICE.md +3 -0
  472. package/src/prompts/templates/system-sections.ts +281 -9
  473. package/src/providers/__tests__/connection-model-compat.test.ts +234 -0
  474. package/src/providers/__tests__/retry-callsite.test.ts +85 -5
  475. package/src/providers/anthropic/client.ts +159 -66
  476. package/src/providers/call-site-routing.ts +14 -2
  477. package/src/providers/connection-model-compat.ts +38 -0
  478. package/src/providers/connection-resolution.ts +16 -2
  479. package/src/providers/fireworks/client.ts +20 -2
  480. package/src/providers/gemini/client.ts +49 -6
  481. package/src/providers/inference/__tests__/base-url-route-validation.test.ts +342 -0
  482. package/src/providers/inference/__tests__/base-url-security.test.ts +189 -0
  483. package/src/providers/inference/__tests__/codex-token-refresh.test.ts +254 -0
  484. package/src/providers/inference/adapter-factory.ts +18 -1
  485. package/src/providers/inference/auth.ts +3 -3
  486. package/src/providers/inference/codex-token-refresh.ts +128 -0
  487. package/src/providers/inference/resolve-auth.ts +49 -6
  488. package/src/providers/minimax/client.ts +106 -0
  489. package/src/providers/model-catalog.ts +91 -1
  490. package/src/providers/model-intents.ts +1 -1
  491. package/src/providers/openai/chat-completions-provider.ts +63 -23
  492. package/src/providers/openai/codex-models.ts +18 -0
  493. package/src/providers/openai/responses-provider.ts +86 -23
  494. package/src/providers/openrouter/client.ts +5 -1
  495. package/src/providers/provider-send-message.ts +7 -1
  496. package/src/providers/retry.ts +34 -3
  497. package/src/providers/thinking-config.ts +26 -1
  498. package/src/providers/types.ts +25 -0
  499. package/src/providers/usage-tracking.ts +2 -0
  500. package/src/runtime/AGENTS.md +2 -2
  501. package/src/runtime/__tests__/agent-wake.test.ts +214 -0
  502. package/src/runtime/__tests__/background-job-runner.test.ts +128 -0
  503. package/src/runtime/agent-wake.ts +152 -56
  504. package/src/runtime/assistant-event-hub.ts +76 -6
  505. package/src/runtime/auth/route-policy.ts +43 -3
  506. package/src/runtime/background-job-runner.ts +26 -0
  507. package/src/runtime/btw-sidechain.ts +0 -6
  508. package/src/runtime/channel-reply-delivery.ts +182 -47
  509. package/src/runtime/channel-retry-sweep.ts +141 -16
  510. package/src/runtime/http-types.ts +7 -6
  511. package/src/runtime/migrations/vbundle-builder.ts +10 -3
  512. package/src/runtime/pending-interactions.ts +50 -8
  513. package/src/runtime/routes/__tests__/content-source-routes.test.ts +162 -0
  514. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +161 -1
  515. package/src/runtime/routes/__tests__/memory-v2-routes.test.ts +14 -0
  516. package/src/runtime/routes/__tests__/memory-v2-simulate-route.test.ts +290 -0
  517. package/src/runtime/routes/__tests__/plugins-routes.test.ts +512 -0
  518. package/src/runtime/routes/__tests__/sanity-routes.test.ts +280 -0
  519. package/src/runtime/routes/__tests__/slack-channel-routes.test.ts +266 -0
  520. package/src/runtime/routes/acp-routes.test.ts +255 -6
  521. package/src/runtime/routes/acp-routes.ts +8 -1
  522. package/src/runtime/routes/approval-routes.ts +4 -1
  523. package/src/runtime/routes/avatar-routes.ts +10 -10
  524. package/src/runtime/routes/background-wake-routes.ts +188 -0
  525. package/src/runtime/routes/browser-tabs-routes.ts +200 -0
  526. package/src/runtime/routes/btw-routes.ts +0 -6
  527. package/src/runtime/routes/chatgpt-subscription-auth-routes.ts +246 -0
  528. package/src/runtime/routes/content-source-routes.ts +78 -0
  529. package/src/runtime/routes/conversation-cli-routes.ts +147 -2
  530. package/src/runtime/routes/conversation-list-routes.ts +12 -4
  531. package/src/runtime/routes/conversation-management-routes.ts +77 -20
  532. package/src/runtime/routes/conversation-query-routes.ts +196 -31
  533. package/src/runtime/routes/conversation-routes.ts +472 -425
  534. package/src/runtime/routes/conversation-starter-routes.ts +6 -3
  535. package/src/runtime/routes/disk-pressure-routes.ts +1 -1
  536. package/src/runtime/routes/document-comments-routes.ts +287 -0
  537. package/src/runtime/routes/documents-routes.ts +33 -0
  538. package/src/runtime/routes/domain-routes.ts +60 -10
  539. package/src/runtime/routes/email-routes.ts +5 -2
  540. package/src/runtime/routes/events-routes.ts +54 -10
  541. package/src/runtime/routes/group-routes.ts +24 -8
  542. package/src/runtime/routes/home-feed-routes.ts +6 -3
  543. package/src/runtime/routes/host-app-control-routes.ts +1 -1
  544. package/src/runtime/routes/host-browser-routes.ts +17 -2
  545. package/src/runtime/routes/host-cu-routes.ts +2 -2
  546. package/src/runtime/routes/identity-routes.ts +21 -0
  547. package/src/runtime/routes/inbound-message-handler.ts +288 -58
  548. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +96 -3
  549. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +365 -6
  550. package/src/runtime/routes/inbound-stages/background-dispatch.ts +283 -82
  551. package/src/runtime/routes/index.ts +20 -4
  552. package/src/runtime/routes/inference-profile-session-handler.ts +22 -12
  553. package/src/runtime/routes/inference-profile-session-routes.ts +7 -1
  554. package/src/runtime/routes/inference-provider-connection-routes.ts +63 -7
  555. package/src/runtime/routes/integrations/a2a.ts +60 -1
  556. package/src/runtime/routes/llm-call-sites-routes.ts +32 -5
  557. package/src/runtime/routes/log-export-routes.ts +39 -0
  558. package/src/runtime/routes/memory-item-routes.ts +8 -3
  559. package/src/runtime/routes/memory-v2-routes.ts +427 -0
  560. package/src/runtime/routes/memory-v3-routes.ts +316 -0
  561. package/src/runtime/routes/migration-routes.ts +21 -24
  562. package/src/runtime/routes/notification-routes.ts +19 -2
  563. package/src/runtime/routes/plugins-routes.ts +337 -0
  564. package/src/runtime/routes/question-routes.ts +4 -1
  565. package/src/runtime/routes/rename-conversation-routes.ts +6 -2
  566. package/src/runtime/routes/sanity-routes.ts +159 -0
  567. package/src/runtime/routes/secret-routes.ts +25 -5
  568. package/src/runtime/routes/settings-routes.ts +12 -11
  569. package/src/runtime/routes/slack-channel-routes.ts +188 -0
  570. package/src/runtime/routes/workspace-routes.ts +25 -10
  571. package/src/runtime/services/conversation-serializer.ts +30 -4
  572. package/src/runtime/sync/resource-sync-events.ts +106 -38
  573. package/src/runtime/sync/sync-publisher.test.ts +49 -0
  574. package/src/runtime/sync/sync-publisher.ts +2 -1
  575. package/src/runtime/verification-outbound-actions.ts +73 -1
  576. package/src/schedule/integration-status.ts +3 -1
  577. package/src/security/__tests__/oauth2-device-code.test.ts +479 -0
  578. package/src/security/oauth2-device-code.ts +307 -0
  579. package/src/security/oauth2.ts +26 -9
  580. package/src/security/secure-keys.ts +5 -0
  581. package/src/skills/catalog-install.ts +6 -2
  582. package/src/telemetry/types.ts +12 -0
  583. package/src/telemetry/usage-telemetry-reporter.test.ts +48 -0
  584. package/src/telemetry/usage-telemetry-reporter.ts +1 -0
  585. package/src/tools/acp/spawn.test.ts +119 -0
  586. package/src/tools/acp/spawn.ts +15 -2
  587. package/src/tools/apps/definitions.ts +2 -8
  588. package/src/tools/ask-question/ask-question-tool.test.ts +3 -3
  589. package/src/tools/ask-question/ask-question-tool.ts +38 -45
  590. package/src/tools/browser/__tests__/pinned-tabs.test.ts +150 -0
  591. package/src/tools/browser/browser-execution.ts +106 -0
  592. package/src/tools/browser/cdp-client/__tests__/browser-tabs-factory.test.ts +402 -0
  593. package/src/tools/browser/cdp-client/__tests__/factory.test.ts +28 -0
  594. package/src/tools/browser/cdp-client/__tests__/types.test.ts +4 -0
  595. package/src/tools/browser/cdp-client/cdp-inspect-client.ts +22 -0
  596. package/src/tools/browser/cdp-client/extension-cdp-client.ts +42 -2
  597. package/src/tools/browser/cdp-client/factory.ts +171 -4
  598. package/src/tools/browser/cdp-client/local-cdp-client.ts +21 -0
  599. package/src/tools/browser/cdp-client/types.ts +101 -0
  600. package/src/tools/browser/pinned-tabs.ts +146 -0
  601. package/src/tools/computer-use/definitions.ts +22 -78
  602. package/src/tools/credential-execution/make-authenticated-request.ts +3 -9
  603. package/src/tools/credential-execution/manage-secure-command-tool.ts +3 -9
  604. package/src/tools/credential-execution/run-authenticated-command.ts +3 -9
  605. package/src/tools/credentials/vault.ts +3 -9
  606. package/src/tools/document/document-comment-tool.test.ts +379 -0
  607. package/src/tools/document/document-comment-tool.ts +156 -0
  608. package/src/tools/document/document-tool.ts +187 -2
  609. package/src/tools/execution-target.ts +21 -23
  610. package/src/tools/executor.ts +6 -1
  611. package/src/tools/filesystem/edit.ts +3 -9
  612. package/src/tools/filesystem/list.ts +3 -9
  613. package/src/tools/filesystem/read.ts +3 -9
  614. package/src/tools/filesystem/write.ts +3 -9
  615. package/src/tools/host-filesystem/edit.ts +3 -9
  616. package/src/tools/host-filesystem/read.ts +3 -9
  617. package/src/tools/host-filesystem/transfer.ts +3 -9
  618. package/src/tools/host-filesystem/write.ts +3 -9
  619. package/src/tools/host-terminal/host-shell.ts +3 -9
  620. package/src/tools/mcp/mcp-tool-factory.ts +1 -8
  621. package/src/tools/memory/register.test.ts +1 -1
  622. package/src/tools/memory/register.ts +4 -9
  623. package/src/tools/network/__tests__/web-fetch-metadata.test.ts +229 -0
  624. package/src/tools/network/__tests__/web-search-metadata.test.ts +346 -0
  625. package/src/tools/network/domain-normalize.ts +17 -0
  626. package/src/tools/network/web-fetch.ts +216 -73
  627. package/src/tools/network/web-search.ts +216 -98
  628. package/src/tools/registry.ts +7 -23
  629. package/src/tools/schema-transforms.ts +1 -1
  630. package/src/tools/skills/execute.ts +3 -9
  631. package/src/tools/skills/load.ts +3 -9
  632. package/src/tools/skills/skill-tool-factory.ts +1 -8
  633. package/src/tools/subagent/notify-parent.ts +3 -9
  634. package/src/tools/system/request-permission.ts +3 -9
  635. package/src/tools/terminal/safe-env.ts +3 -2
  636. package/src/tools/terminal/shell.ts +3 -9
  637. package/src/tools/tool-approval-handler.ts +19 -12
  638. package/src/tools/tool-defaults.ts +94 -0
  639. package/src/tools/types.ts +31 -98
  640. package/src/tools/ui-surface/definitions.ts +9 -23
  641. package/src/types/onboarding-context.ts +4 -0
  642. package/src/usage/pricing.ts +23 -0
  643. package/src/usage/types.ts +12 -0
  644. package/src/util/__tests__/favicon.test.ts +84 -0
  645. package/src/util/favicon.ts +40 -0
  646. package/src/util/logger.ts +16 -7
  647. package/src/util/platform.ts +7 -7
  648. package/src/util/sqlite3-runtime.ts +65 -0
  649. package/src/workspace/git-service.ts +75 -4
  650. package/src/workspace/migrations/086-revert-stale-gemini-mis-rewrites.ts +1 -0
  651. package/src/workspace/migrations/088-deprecate-background-conversation-override.ts +103 -0
  652. package/src/workspace/migrations/089-move-memory-tree-out-of-v3.ts +86 -0
  653. package/src/workspace/migrations/registry.ts +4 -0
  654. package/src/__tests__/compaction-strip-metadata-clear.test.ts +0 -206
  655. package/src/__tests__/message-complete-display-id.test.ts +0 -175
  656. package/src/config/bundled-skills/document/SKILL.md +0 -54
  657. package/src/config/bundled-skills/document/TOOLS.json +0 -106
  658. package/src/daemon/seed-files.ts +0 -18
  659. package/src/prompts/cache-boundary.ts +0 -8
  660. package/src/runtime/routes/interface-routes.ts +0 -43
  661. /package/src/config/bundled-skills/{document → document-editor}/tools/document-create.ts +0 -0
  662. /package/src/config/bundled-skills/{document → document-editor}/tools/document-delete.ts +0 -0
  663. /package/src/config/bundled-skills/{document → document-editor}/tools/document-list.ts +0 -0
  664. /package/src/config/bundled-skills/{document → document-editor}/tools/document-read.ts +0 -0
  665. /package/src/config/bundled-skills/{document → document-editor}/tools/document-update.ts +0 -0
package/openapi.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  openapi: 3.0.0
4
4
  info:
5
5
  title: Vellum Assistant API
6
- version: 0.8.3
6
+ version: 0.8.5
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
@@ -1823,6 +1823,247 @@ paths:
1823
1823
  required:
1824
1824
  - id
1825
1825
  additionalProperties: false
1826
+ /v1/background-wake/drain-due:
1827
+ post:
1828
+ operationId: backgroundwake_draindue_post
1829
+ summary: Drain due background wake work
1830
+ description: Run due heartbeat and scheduler work for a background wake lease.
1831
+ tags:
1832
+ - background-wake
1833
+ responses:
1834
+ "200":
1835
+ description: Successful response
1836
+ content:
1837
+ application/json:
1838
+ schema:
1839
+ type: object
1840
+ properties:
1841
+ leaseId:
1842
+ type: string
1843
+ reason:
1844
+ type: string
1845
+ sourceGeneration:
1846
+ type: string
1847
+ startedAt:
1848
+ type: number
1849
+ deadlineAt:
1850
+ type: number
1851
+ counts:
1852
+ type: object
1853
+ properties:
1854
+ heartbeat:
1855
+ type: number
1856
+ scheduler:
1857
+ type: number
1858
+ total:
1859
+ type: number
1860
+ required:
1861
+ - heartbeat
1862
+ - scheduler
1863
+ - total
1864
+ additionalProperties: false
1865
+ nextIntent:
1866
+ anyOf:
1867
+ - type: object
1868
+ properties:
1869
+ nextWakeAt:
1870
+ type: number
1871
+ actualNextDueAt:
1872
+ type: number
1873
+ reason:
1874
+ type: string
1875
+ enum:
1876
+ - heartbeat
1877
+ - schedule
1878
+ - mixed
1879
+ sourceGeneration:
1880
+ type: string
1881
+ computedAt:
1882
+ type: number
1883
+ sourcePayload:
1884
+ type: object
1885
+ propertyNames:
1886
+ type: string
1887
+ additionalProperties: {}
1888
+ required:
1889
+ - nextWakeAt
1890
+ - actualNextDueAt
1891
+ - reason
1892
+ - sourceGeneration
1893
+ - computedAt
1894
+ - sourcePayload
1895
+ additionalProperties: false
1896
+ - type: "null"
1897
+ required:
1898
+ - leaseId
1899
+ - reason
1900
+ - sourceGeneration
1901
+ - startedAt
1902
+ - deadlineAt
1903
+ - counts
1904
+ - nextIntent
1905
+ additionalProperties: false
1906
+ requestBody:
1907
+ required: true
1908
+ content:
1909
+ application/json:
1910
+ schema:
1911
+ anyOf:
1912
+ - type: object
1913
+ properties:
1914
+ leaseId:
1915
+ type: string
1916
+ minLength: 1
1917
+ reason:
1918
+ type: string
1919
+ minLength: 1
1920
+ sourceGeneration:
1921
+ type: string
1922
+ minLength: 1
1923
+ startedAt:
1924
+ anyOf:
1925
+ - type: number
1926
+ - type: string
1927
+ deadlineAt:
1928
+ anyOf:
1929
+ - type: number
1930
+ - type: string
1931
+ required:
1932
+ - leaseId
1933
+ - reason
1934
+ - sourceGeneration
1935
+ - startedAt
1936
+ - deadlineAt
1937
+ additionalProperties: false
1938
+ - type: object
1939
+ properties:
1940
+ lease_id:
1941
+ type: string
1942
+ minLength: 1
1943
+ reason:
1944
+ type: string
1945
+ minLength: 1
1946
+ source_generation:
1947
+ type: string
1948
+ minLength: 1
1949
+ started_at:
1950
+ anyOf:
1951
+ - type: number
1952
+ - type: string
1953
+ deadline_at:
1954
+ anyOf:
1955
+ - type: number
1956
+ - type: string
1957
+ required:
1958
+ - lease_id
1959
+ - reason
1960
+ - source_generation
1961
+ - started_at
1962
+ - deadline_at
1963
+ additionalProperties: false
1964
+ /v1/background-wake/intent:
1965
+ get:
1966
+ operationId: backgroundwake_intent_get
1967
+ summary: Get background wake intent
1968
+ description: Return the current computed background wake intent.
1969
+ tags:
1970
+ - background-wake
1971
+ responses:
1972
+ "200":
1973
+ description: Successful response
1974
+ content:
1975
+ application/json:
1976
+ schema:
1977
+ type: object
1978
+ properties:
1979
+ intent:
1980
+ anyOf:
1981
+ - type: object
1982
+ properties:
1983
+ nextWakeAt:
1984
+ type: number
1985
+ actualNextDueAt:
1986
+ type: number
1987
+ reason:
1988
+ type: string
1989
+ enum:
1990
+ - heartbeat
1991
+ - schedule
1992
+ - mixed
1993
+ sourceGeneration:
1994
+ type: string
1995
+ computedAt:
1996
+ type: number
1997
+ sourcePayload:
1998
+ type: object
1999
+ propertyNames:
2000
+ type: string
2001
+ additionalProperties: {}
2002
+ required:
2003
+ - nextWakeAt
2004
+ - actualNextDueAt
2005
+ - reason
2006
+ - sourceGeneration
2007
+ - computedAt
2008
+ - sourcePayload
2009
+ additionalProperties: false
2010
+ - type: "null"
2011
+ required:
2012
+ - intent
2013
+ additionalProperties: false
2014
+ /v1/background-wake/prepare-sleep:
2015
+ post:
2016
+ operationId: backgroundwake_preparesleep_post
2017
+ summary: Prepare for assistant sleep
2018
+ description: Return the current background wake intent and whether sleep should be deferred.
2019
+ tags:
2020
+ - background-wake
2021
+ responses:
2022
+ "200":
2023
+ description: Successful response
2024
+ content:
2025
+ application/json:
2026
+ schema:
2027
+ type: object
2028
+ properties:
2029
+ intent:
2030
+ anyOf:
2031
+ - type: object
2032
+ properties:
2033
+ nextWakeAt:
2034
+ type: number
2035
+ actualNextDueAt:
2036
+ type: number
2037
+ reason:
2038
+ type: string
2039
+ enum:
2040
+ - heartbeat
2041
+ - schedule
2042
+ - mixed
2043
+ sourceGeneration:
2044
+ type: string
2045
+ computedAt:
2046
+ type: number
2047
+ sourcePayload:
2048
+ type: object
2049
+ propertyNames:
2050
+ type: string
2051
+ additionalProperties: {}
2052
+ required:
2053
+ - nextWakeAt
2054
+ - actualNextDueAt
2055
+ - reason
2056
+ - sourceGeneration
2057
+ - computedAt
2058
+ - sourcePayload
2059
+ additionalProperties: false
2060
+ - type: "null"
2061
+ deferSleep:
2062
+ type: boolean
2063
+ required:
2064
+ - intent
2065
+ - deferSleep
2066
+ additionalProperties: false
1826
2067
  /v1/backup/destinations:
1827
2068
  get:
1828
2069
  operationId: backup_destinations_get
@@ -2552,6 +2793,85 @@ paths:
2552
2793
  required:
2553
2794
  - operation
2554
2795
  additionalProperties: false
2796
+ /v1/browser/tabs:
2797
+ post:
2798
+ operationId: browser_tabs_post
2799
+ summary: Manage browser tabs
2800
+ description: List, create, select, or close browser tabs via the Chrome extension backend.
2801
+ tags:
2802
+ - browser
2803
+ responses:
2804
+ "200":
2805
+ description: Successful response
2806
+ content:
2807
+ application/json:
2808
+ schema:
2809
+ type: object
2810
+ properties:
2811
+ ok:
2812
+ type: boolean
2813
+ tabs:
2814
+ type: array
2815
+ items:
2816
+ type: object
2817
+ properties:
2818
+ tabId:
2819
+ type: number
2820
+ windowId:
2821
+ type: number
2822
+ url:
2823
+ type: string
2824
+ title:
2825
+ type: string
2826
+ active:
2827
+ type: boolean
2828
+ pinned:
2829
+ type: boolean
2830
+ required:
2831
+ - active
2832
+ - pinned
2833
+ additionalProperties: false
2834
+ tab: {}
2835
+ tabId:
2836
+ type: number
2837
+ clientId:
2838
+ type: string
2839
+ closed:
2840
+ type: boolean
2841
+ required:
2842
+ - ok
2843
+ additionalProperties: false
2844
+ requestBody:
2845
+ required: true
2846
+ content:
2847
+ application/json:
2848
+ schema:
2849
+ type: object
2850
+ properties:
2851
+ command:
2852
+ type: string
2853
+ enum:
2854
+ - list
2855
+ - select
2856
+ - new
2857
+ - close
2858
+ sessionId:
2859
+ default: default
2860
+ type: string
2861
+ minLength: 1
2862
+ conversationId:
2863
+ type: string
2864
+ minLength: 1
2865
+ tabId:
2866
+ type: number
2867
+ url:
2868
+ type: string
2869
+ targetClientId:
2870
+ type: string
2871
+ minLength: 1
2872
+ required:
2873
+ - command
2874
+ additionalProperties: false
2555
2875
  /v1/btw:
2556
2876
  post:
2557
2877
  operationId: btw_post
@@ -3411,6 +3731,19 @@ paths:
3411
3731
  responses:
3412
3732
  "200":
3413
3733
  description: Successful response
3734
+ /v1/config/llm/profiles:
3735
+ get:
3736
+ operationId: config_llm_profiles_get
3737
+ summary: List defined LLM profiles
3738
+ description:
3739
+ Returns the sorted list of profile names defined in `llm.profiles` plus the workspace-wide active profile.
3740
+ Used to populate per-call profile dropdowns (e.g. memory router playground) without requiring the caller to type
3741
+ profile names.
3742
+ tags:
3743
+ - config
3744
+ responses:
3745
+ "200":
3746
+ description: Successful response
3414
3747
  /v1/config/llm/profiles/{name}:
3415
3748
  put:
3416
3749
  operationId: config_llm_profiles_by_name_put
@@ -4219,6 +4552,27 @@ paths:
4219
4552
  limit:
4220
4553
  type: number
4221
4554
  additionalProperties: false
4555
+ /v1/content-source:
4556
+ post:
4557
+ operationId: contentsource_post
4558
+ summary: Validate and persist a content source URL
4559
+ tags:
4560
+ - content-source
4561
+ responses:
4562
+ "200":
4563
+ description: Successful response
4564
+ requestBody:
4565
+ required: true
4566
+ content:
4567
+ application/json:
4568
+ schema:
4569
+ type: object
4570
+ properties:
4571
+ url:
4572
+ type: string
4573
+ required:
4574
+ - url
4575
+ additionalProperties: false
4222
4576
  /v1/conversation-starters:
4223
4577
  get:
4224
4578
  operationId: conversationstarters_get
@@ -4341,8 +4695,10 @@ paths:
4341
4695
  properties:
4342
4696
  id:
4343
4697
  type: string
4698
+ description: Assistant-minted internal conversation id. The authoritative identifier for the conversation.
4344
4699
  conversationKey:
4345
4700
  type: string
4701
+ description: Echo of the optional external key supplied by the client.
4346
4702
  conversationType:
4347
4703
  type: string
4348
4704
  created:
@@ -4361,15 +4717,61 @@ paths:
4361
4717
  type: object
4362
4718
  properties:
4363
4719
  conversationKey:
4720
+ description:
4721
+ Optional external key. Echoed back in the response. Non-vellum channels (Telegram, WhatsApp) use this to
4722
+ scope to a logical channel thread; vellum-web clients can omit it and rely on the assistant-minted
4723
+ `id`.
4364
4724
  type: string
4365
- description: Idempotency key for the conversation
4366
4725
  conversationType:
4367
4726
  description: Only standard conversations are created by this endpoint
4368
4727
  type: string
4369
4728
  const: standard
4370
- required:
4371
- - conversationKey
4372
4729
  additionalProperties: false
4730
+ /v1/conversations/{conversationId}/slack-channel/resolve:
4731
+ post:
4732
+ operationId: conversations_by_conversationId_slackchannel_resolve_post
4733
+ summary: Resolve Slack channel name
4734
+ description: Resolve and persist a friendly Slack channel name for an external conversation binding.
4735
+ tags:
4736
+ - conversations
4737
+ - slack
4738
+ responses:
4739
+ "200":
4740
+ description: Successful response
4741
+ content:
4742
+ application/json:
4743
+ schema:
4744
+ type: object
4745
+ properties:
4746
+ channelId:
4747
+ type: string
4748
+ channelName:
4749
+ type: string
4750
+ cached:
4751
+ type: boolean
4752
+ resolved:
4753
+ type: boolean
4754
+ reason:
4755
+ type: string
4756
+ enum:
4757
+ - auth
4758
+ - dm
4759
+ - no_name
4760
+ - not_found
4761
+ - permission
4762
+ - rate_limit
4763
+ - slack_error
4764
+ required:
4765
+ - channelId
4766
+ - cached
4767
+ - resolved
4768
+ additionalProperties: false
4769
+ parameters:
4770
+ - name: conversationId
4771
+ in: path
4772
+ required: true
4773
+ schema:
4774
+ type: string
4373
4775
  /v1/conversations/{id}:
4374
4776
  delete:
4375
4777
  operationId: conversations_by_id_delete
@@ -4992,22 +5394,73 @@ paths:
4992
5394
  includeArchived:
4993
5395
  type: boolean
4994
5396
  additionalProperties: false
4995
- /v1/conversations/fork:
5397
+ /v1/conversations/cli/slack/detach:
4996
5398
  post:
4997
- operationId: conversations_fork_post
4998
- summary: Fork a conversation
4999
- description: Create a copy of a conversation, optionally truncated at a specific message.
5399
+ operationId: conversations_cli_slack_detach_post
5400
+ summary: Detach the assistant from a Slack thread (CLI)
5401
+ description: Stops Slack active-thread listening for a Slack thread. The CLI resolves current conversation defaults.
5000
5402
  tags:
5001
5403
  - conversations
5002
5404
  responses:
5003
5405
  "200":
5004
5406
  description: Successful response
5005
- requestBody:
5006
- required: true
5007
- content:
5008
- application/json:
5009
- schema:
5010
- type: object
5407
+ content:
5408
+ application/json:
5409
+ schema:
5410
+ type: object
5411
+ properties:
5412
+ detached:
5413
+ type: boolean
5414
+ channelId:
5415
+ type: string
5416
+ threadTs:
5417
+ type: string
5418
+ source:
5419
+ type: string
5420
+ enum:
5421
+ - explicit
5422
+ - conversation_binding
5423
+ conversationId:
5424
+ type: string
5425
+ required:
5426
+ - detached
5427
+ - channelId
5428
+ - threadTs
5429
+ - source
5430
+ additionalProperties: false
5431
+ requestBody:
5432
+ required: true
5433
+ content:
5434
+ application/json:
5435
+ schema:
5436
+ type: object
5437
+ properties:
5438
+ conversationId:
5439
+ type: string
5440
+ minLength: 1
5441
+ channelId:
5442
+ type: string
5443
+ minLength: 1
5444
+ threadTs:
5445
+ type: string
5446
+ minLength: 1
5447
+ additionalProperties: false
5448
+ /v1/conversations/fork:
5449
+ post:
5450
+ operationId: conversations_fork_post
5451
+ summary: Fork a conversation
5452
+ description: Create a copy of a conversation, optionally truncated at a specific message.
5453
+ tags:
5454
+ - conversations
5455
+ responses:
5456
+ "200":
5457
+ description: Successful response
5458
+ requestBody:
5459
+ required: true
5460
+ content:
5461
+ application/json:
5462
+ schema:
5463
+ type: object
5011
5464
  properties:
5012
5465
  conversationId:
5013
5466
  type: string
@@ -5315,6 +5768,76 @@ paths:
5315
5768
  schema:
5316
5769
  type: string
5317
5770
  description: Optional conversation ID filter
5771
+ /v1/conversations/llm-context:
5772
+ get:
5773
+ operationId: conversations_llmcontext_get
5774
+ summary: Get LLM context for a conversation
5775
+ description: Returns normalized LLM request/response logs for an entire conversation.
5776
+ tags:
5777
+ - conversations
5778
+ responses:
5779
+ "200":
5780
+ description: Successful response
5781
+ content:
5782
+ application/json:
5783
+ schema:
5784
+ type: object
5785
+ properties:
5786
+ conversationKey:
5787
+ anyOf:
5788
+ - type: string
5789
+ - type: "null"
5790
+ conversationId:
5791
+ anyOf:
5792
+ - type: string
5793
+ - type: "null"
5794
+ conversationKind:
5795
+ type: string
5796
+ enum:
5797
+ - user
5798
+ - background
5799
+ - background_memory_consolidation
5800
+ - scheduled
5801
+ conversationTotalEstimatedCostUsd:
5802
+ anyOf:
5803
+ - type: number
5804
+ - type: "null"
5805
+ logs:
5806
+ type: array
5807
+ items: {}
5808
+ memoryRecall:
5809
+ anyOf:
5810
+ - type: object
5811
+ properties: {}
5812
+ additionalProperties: {}
5813
+ - type: "null"
5814
+ memoryV2Activation:
5815
+ anyOf:
5816
+ - type: object
5817
+ properties: {}
5818
+ additionalProperties: {}
5819
+ - type: "null"
5820
+ required:
5821
+ - conversationId
5822
+ - conversationKind
5823
+ - conversationTotalEstimatedCostUsd
5824
+ - logs
5825
+ - memoryRecall
5826
+ - memoryV2Activation
5827
+ additionalProperties: false
5828
+ parameters:
5829
+ - name: conversationKey
5830
+ in: query
5831
+ required: false
5832
+ schema:
5833
+ type: string
5834
+ description: Stable external conversation key.
5835
+ - name: conversationId
5836
+ in: query
5837
+ required: false
5838
+ schema:
5839
+ type: string
5840
+ description: Internal conversation identifier.
5318
5841
  /v1/conversations/rename:
5319
5842
  post:
5320
5843
  operationId: conversations_rename_post
@@ -6221,6 +6744,7 @@ paths:
6221
6744
  enum:
6222
6745
  - disabled
6223
6746
  - ok
6747
+ - warning
6224
6748
  - critical
6225
6749
  - unknown
6226
6750
  locked:
@@ -6306,6 +6830,7 @@ paths:
6306
6830
  enum:
6307
6831
  - disabled
6308
6832
  - ok
6833
+ - warning
6309
6834
  - critical
6310
6835
  - unknown
6311
6836
  locked:
@@ -6407,6 +6932,7 @@ paths:
6407
6932
  enum:
6408
6933
  - disabled
6409
6934
  - ok
6935
+ - warning
6410
6936
  - critical
6411
6937
  - unknown
6412
6938
  locked:
@@ -6593,6 +7119,268 @@ paths:
6593
7119
  required: true
6594
7120
  schema:
6595
7121
  type: string
7122
+ /v1/documents/{id}/comments:
7123
+ get:
7124
+ operationId: documents_by_id_comments_get
7125
+ summary: List comments for a document
7126
+ description: Return comments for a document, optionally filtered by status.
7127
+ tags:
7128
+ - documents
7129
+ responses:
7130
+ "200":
7131
+ description: Successful response
7132
+ content:
7133
+ application/json:
7134
+ schema:
7135
+ type: object
7136
+ properties:
7137
+ comments:
7138
+ type: array
7139
+ items: {}
7140
+ description: Comment records
7141
+ required:
7142
+ - comments
7143
+ additionalProperties: false
7144
+ parameters:
7145
+ - name: id
7146
+ in: path
7147
+ required: true
7148
+ schema:
7149
+ type: string
7150
+ - name: status
7151
+ in: query
7152
+ required: false
7153
+ schema:
7154
+ type: string
7155
+ enum:
7156
+ - open
7157
+ - resolved
7158
+ - all
7159
+ description: "Filter by comment status (default: all)"
7160
+ post:
7161
+ operationId: documents_by_id_comments_post
7162
+ summary: Create a comment on a document
7163
+ description: Add a new comment to a document.
7164
+ tags:
7165
+ - documents
7166
+ responses:
7167
+ "200":
7168
+ description: Successful response
7169
+ content:
7170
+ application/json:
7171
+ schema:
7172
+ type: object
7173
+ properties:
7174
+ id:
7175
+ type: string
7176
+ surfaceId:
7177
+ type: string
7178
+ conversationId:
7179
+ type: string
7180
+ author:
7181
+ type: string
7182
+ content:
7183
+ type: string
7184
+ status:
7185
+ type: string
7186
+ createdAt:
7187
+ type: number
7188
+ updatedAt:
7189
+ type: number
7190
+ required:
7191
+ - id
7192
+ - surfaceId
7193
+ - conversationId
7194
+ - author
7195
+ - content
7196
+ - status
7197
+ - createdAt
7198
+ - updatedAt
7199
+ additionalProperties: false
7200
+ parameters:
7201
+ - name: id
7202
+ in: path
7203
+ required: true
7204
+ schema:
7205
+ type: string
7206
+ requestBody:
7207
+ required: true
7208
+ content:
7209
+ application/json:
7210
+ schema:
7211
+ type: object
7212
+ properties:
7213
+ content:
7214
+ type: string
7215
+ minLength: 1
7216
+ description: Comment text content
7217
+ author:
7218
+ default: user
7219
+ description: Comment author
7220
+ type: string
7221
+ const: user
7222
+ anchorStart:
7223
+ description: Selection start offset
7224
+ anyOf:
7225
+ - type: number
7226
+ - type: "null"
7227
+ anchorEnd:
7228
+ description: Selection end offset
7229
+ anyOf:
7230
+ - type: number
7231
+ - type: "null"
7232
+ anchorText:
7233
+ description: Anchored text snippet
7234
+ anyOf:
7235
+ - type: string
7236
+ - type: "null"
7237
+ parentCommentId:
7238
+ description: Parent comment ID for replies
7239
+ anyOf:
7240
+ - type: string
7241
+ - type: "null"
7242
+ conversationId:
7243
+ type: string
7244
+ description: Owning conversation ID
7245
+ required:
7246
+ - content
7247
+ - conversationId
7248
+ additionalProperties: false
7249
+ /v1/documents/{id}/comments/{commentId}:
7250
+ delete:
7251
+ operationId: documents_by_id_comments_by_commentId_delete
7252
+ summary: Delete a document comment
7253
+ description: Permanently delete a comment.
7254
+ tags:
7255
+ - documents
7256
+ responses:
7257
+ "200":
7258
+ description: Successful response
7259
+ content:
7260
+ application/json:
7261
+ schema:
7262
+ type: object
7263
+ properties:
7264
+ success:
7265
+ type: boolean
7266
+ const: true
7267
+ required:
7268
+ - success
7269
+ additionalProperties: false
7270
+ parameters:
7271
+ - name: id
7272
+ in: path
7273
+ required: true
7274
+ schema:
7275
+ type: string
7276
+ - name: commentId
7277
+ in: path
7278
+ required: true
7279
+ schema:
7280
+ type: string
7281
+ patch:
7282
+ operationId: documents_by_id_comments_by_commentId_patch
7283
+ summary: Update a document comment
7284
+ description: Update the status or content of a comment.
7285
+ tags:
7286
+ - documents
7287
+ responses:
7288
+ "200":
7289
+ description: Successful response
7290
+ content:
7291
+ application/json:
7292
+ schema:
7293
+ type: object
7294
+ properties:
7295
+ id:
7296
+ type: string
7297
+ surfaceId:
7298
+ type: string
7299
+ content:
7300
+ type: string
7301
+ status:
7302
+ type: string
7303
+ updatedAt:
7304
+ type: number
7305
+ required:
7306
+ - id
7307
+ - surfaceId
7308
+ - content
7309
+ - status
7310
+ - updatedAt
7311
+ additionalProperties: false
7312
+ parameters:
7313
+ - name: id
7314
+ in: path
7315
+ required: true
7316
+ schema:
7317
+ type: string
7318
+ - name: commentId
7319
+ in: path
7320
+ required: true
7321
+ schema:
7322
+ type: string
7323
+ requestBody:
7324
+ required: true
7325
+ content:
7326
+ application/json:
7327
+ schema:
7328
+ type: object
7329
+ properties:
7330
+ status:
7331
+ description: New comment status
7332
+ type: string
7333
+ enum:
7334
+ - open
7335
+ - resolved
7336
+ content:
7337
+ description: Updated comment text
7338
+ type: string
7339
+ minLength: 1
7340
+ resolvedBy:
7341
+ description: Who resolved the comment
7342
+ type: string
7343
+ additionalProperties: false
7344
+ /v1/documents/{id}/conversations:
7345
+ post:
7346
+ operationId: documents_by_id_conversations_post
7347
+ summary: Link a document to a conversation
7348
+ description: Associate a document with a conversation so the assistant sees it as context.
7349
+ tags:
7350
+ - documents
7351
+ responses:
7352
+ "200":
7353
+ description: Successful response
7354
+ content:
7355
+ application/json:
7356
+ schema:
7357
+ type: object
7358
+ properties:
7359
+ success:
7360
+ type: boolean
7361
+ const: true
7362
+ required:
7363
+ - success
7364
+ additionalProperties: false
7365
+ parameters:
7366
+ - name: id
7367
+ in: path
7368
+ required: true
7369
+ schema:
7370
+ type: string
7371
+ requestBody:
7372
+ required: true
7373
+ content:
7374
+ application/json:
7375
+ schema:
7376
+ type: object
7377
+ properties:
7378
+ conversationId:
7379
+ type: string
7380
+ description: Conversation to link
7381
+ required:
7382
+ - conversationId
7383
+ additionalProperties: false
6596
7384
  /v1/documents/{id}/pdf:
6597
7385
  get:
6598
7386
  operationId: documents_by_id_pdf_get
@@ -6627,6 +7415,15 @@ paths:
6627
7415
  responses:
6628
7416
  "200":
6629
7417
  description: Successful response
7418
+ /v1/domain/verification-status:
7419
+ post:
7420
+ operationId: domain_verificationstatus_post
7421
+ summary: Get live DNS verification status for a domain
7422
+ tags:
7423
+ - domain
7424
+ responses:
7425
+ "200":
7426
+ description: Successful response
6630
7427
  /v1/email/attachment-get:
6631
7428
  get:
6632
7429
  operationId: email_attachmentget_get
@@ -6948,12 +7745,20 @@ paths:
6948
7745
  "200":
6949
7746
  description: Successful response
6950
7747
  parameters:
7748
+ - name: conversationId
7749
+ in: query
7750
+ required: false
7751
+ schema:
7752
+ type: string
7753
+ description: Scope to a single conversation by its assistant-minted internal id. 404s if no such conversation exists.
6951
7754
  - name: conversationKey
6952
7755
  in: query
6953
7756
  required: false
6954
7757
  schema:
6955
7758
  type: string
6956
- description: Scope to a single conversation
7759
+ description:
7760
+ Scope to a single conversation by an external key (non-vellum channels) or the web idempotency key.
7761
+ Materializes a row on first use. Ignored when conversationId is also provided.
6957
7762
  /v1/events/emit:
6958
7763
  post:
6959
7764
  operationId: events_emit_post
@@ -7358,6 +8163,14 @@ paths:
7358
8163
  type: object
7359
8164
  properties: {}
7360
8165
  additionalProperties: {}
8166
+ ces:
8167
+ type: object
8168
+ properties:
8169
+ connected:
8170
+ type: boolean
8171
+ required:
8172
+ - connected
8173
+ additionalProperties: false
7361
8174
  profiler:
7362
8175
  type: object
7363
8176
  properties:
@@ -7441,6 +8254,7 @@ paths:
7441
8254
  - memory
7442
8255
  - cpu
7443
8256
  - migrations
8257
+ - ces
7444
8258
  additionalProperties: false
7445
8259
  /v1/healthz:
7446
8260
  get:
@@ -7479,6 +8293,14 @@ paths:
7479
8293
  type: object
7480
8294
  properties: {}
7481
8295
  additionalProperties: {}
8296
+ ces:
8297
+ type: object
8298
+ properties:
8299
+ connected:
8300
+ type: boolean
8301
+ required:
8302
+ - connected
8303
+ additionalProperties: false
7482
8304
  profiler:
7483
8305
  type: object
7484
8306
  properties:
@@ -7562,6 +8384,7 @@ paths:
7562
8384
  - memory
7563
8385
  - cpu
7564
8386
  - migrations
8387
+ - ces
7565
8388
  additionalProperties: false
7566
8389
  /v1/heartbeat/checklist:
7567
8390
  get:
@@ -8570,6 +9393,9 @@ paths:
8570
9393
  reason:
8571
9394
  description: Detach reason
8572
9395
  type: string
9396
+ clientId:
9397
+ description: Extension client ID that reported the invalidation
9398
+ type: string
8573
9399
  additionalProperties: false
8574
9400
  /v1/host-cu-result:
8575
9401
  post:
@@ -8779,10 +9605,42 @@ paths:
8779
9605
  operationId: identity_intro_get
8780
9606
  summary: Get identity intro text
8781
9607
  description:
8782
- Returns a deterministic greeting derived from the assistant name in IDENTITY.md, falling back to
8783
- LLM-generated cache.
9608
+ Returns a deterministic greeting derived from the assistant name in IDENTITY.md, falling back to
9609
+ LLM-generated cache.
9610
+ tags:
9611
+ - identity
9612
+ responses:
9613
+ "200":
9614
+ description: Successful response
9615
+ content:
9616
+ application/json:
9617
+ schema:
9618
+ type: object
9619
+ properties:
9620
+ text:
9621
+ type: string
9622
+ required:
9623
+ - text
9624
+ additionalProperties: false
9625
+ /v1/image-generation/generate:
9626
+ post:
9627
+ operationId: imagegeneration_generate_post
9628
+ summary: Generate or edit images using AI
9629
+ description: Calls the configured image-generation provider (Gemini or OpenAI) to produce one or more images.
9630
+ tags:
9631
+ - image-generation
9632
+ responses:
9633
+ "200":
9634
+ description: Successful response
9635
+ /v1/inference/chatgpt-subscription/auth:
9636
+ post:
9637
+ operationId: inference_chatgptsubscription_auth_post
9638
+ summary: Start ChatGPT subscription OAuth PKCE flow
9639
+ description:
9640
+ Generate a PKCE authorize URL for ChatGPT subscription auth. Returns the URL and state for the client to
9641
+ open in a browser.
8784
9642
  tags:
8785
- - identity
9643
+ - inference
8786
9644
  responses:
8787
9645
  "200":
8788
9646
  description: Successful response
@@ -8791,21 +9649,51 @@ paths:
8791
9649
  schema:
8792
9650
  type: object
8793
9651
  properties:
8794
- text:
9652
+ authorize_url:
9653
+ type: string
9654
+ state:
8795
9655
  type: string
8796
9656
  required:
8797
- - text
9657
+ - authorize_url
9658
+ - state
8798
9659
  additionalProperties: false
8799
- /v1/image-generation/generate:
9660
+ /v1/inference/chatgpt-subscription/auth/exchange:
8800
9661
  post:
8801
- operationId: imagegeneration_generate_post
8802
- summary: Generate or edit images using AI
8803
- description: Calls the configured image-generation provider (Gemini or OpenAI) to produce one or more images.
9662
+ operationId: inference_chatgptsubscription_auth_exchange_post
9663
+ summary: Exchange ChatGPT subscription OAuth authorization code
9664
+ description:
9665
+ Accept an authorization code and state from the OAuth redirect, exchange it for tokens, store them in CES,
9666
+ and upsert the provider connection.
8804
9667
  tags:
8805
- - image-generation
9668
+ - inference
8806
9669
  responses:
8807
9670
  "200":
8808
9671
  description: Successful response
9672
+ content:
9673
+ application/json:
9674
+ schema:
9675
+ type: object
9676
+ properties:
9677
+ ok:
9678
+ type: boolean
9679
+ required:
9680
+ - ok
9681
+ additionalProperties: false
9682
+ requestBody:
9683
+ required: true
9684
+ content:
9685
+ application/json:
9686
+ schema:
9687
+ type: object
9688
+ properties:
9689
+ code:
9690
+ type: string
9691
+ state:
9692
+ type: string
9693
+ required:
9694
+ - code
9695
+ - state
9696
+ additionalProperties: false
8809
9697
  /v1/inference/provider-connections:
8810
9698
  get:
8811
9699
  operationId: inference_providerconnections_get
@@ -8839,6 +9727,7 @@ paths:
8839
9727
  - fireworks
8840
9728
  - openrouter
8841
9729
  - openai-compatible
9730
+ - minimax
8842
9731
  auth:
8843
9732
  oneOf:
8844
9733
  - type: object
@@ -8955,7 +9844,9 @@ paths:
8955
9844
  required: false
8956
9845
  schema:
8957
9846
  type: string
8958
- description: "Filter by provider. One of: anthropic, openai, gemini, ollama, fireworks, openrouter, openai-compatible"
9847
+ description:
9848
+ "Filter by provider. One of: anthropic, openai, gemini, ollama, fireworks, openrouter, openai-compatible,
9849
+ minimax"
8959
9850
  post:
8960
9851
  operationId: inference_providerconnections_post
8961
9852
  summary: Create a provider connection
@@ -8983,6 +9874,7 @@ paths:
8983
9874
  - fireworks
8984
9875
  - openrouter
8985
9876
  - openai-compatible
9877
+ - minimax
8986
9878
  auth:
8987
9879
  oneOf:
8988
9880
  - type: object
@@ -9114,6 +10006,7 @@ paths:
9114
10006
  - fireworks
9115
10007
  - openrouter
9116
10008
  - openai-compatible
10009
+ - minimax
9117
10010
  auth:
9118
10011
  oneOf:
9119
10012
  - type: object
@@ -9265,6 +10158,7 @@ paths:
9265
10158
  - fireworks
9266
10159
  - openrouter
9267
10160
  - openai-compatible
10161
+ - minimax
9268
10162
  auth:
9269
10163
  oneOf:
9270
10164
  - type: object
@@ -9410,6 +10304,7 @@ paths:
9410
10304
  - fireworks
9411
10305
  - openrouter
9412
10306
  - openai-compatible
10307
+ - minimax
9413
10308
  auth:
9414
10309
  oneOf:
9415
10310
  - type: object
@@ -9720,6 +10615,18 @@ paths:
9720
10615
  responses:
9721
10616
  "200":
9722
10617
  description: Successful response
10618
+ /v1/integrations/a2a/invite/accept:
10619
+ post:
10620
+ operationId: integrations_a2a_invite_accept_post
10621
+ summary: Accept A2A invite (self-hosted broker)
10622
+ description:
10623
+ Orchestrate cross-daemon invite acceptance for self-hosted deployments. Calls the sender's invite/complete,
10624
+ then creates a local contact via invite/redeem.
10625
+ tags:
10626
+ - integrations
10627
+ responses:
10628
+ "200":
10629
+ description: Successful response
9723
10630
  /v1/integrations/a2a/invite/complete:
9724
10631
  post:
9725
10632
  operationId: integrations_a2a_invite_complete_post
@@ -9994,21 +10901,6 @@ paths:
9994
10901
  responses:
9995
10902
  "200":
9996
10903
  description: Successful response
9997
- /v1/interfaces/{path}:
9998
- get:
9999
- operationId: interfaces_by_path_get
10000
- summary: Serve an interface definition file
10001
- tags:
10002
- - interfaces
10003
- responses:
10004
- "200":
10005
- description: Successful response
10006
- parameters:
10007
- - name: path
10008
- in: path
10009
- required: true
10010
- schema:
10011
- type: string
10012
10904
  /v1/internal/mcp/add:
10013
10905
  post:
10014
10906
  operationId: internal_mcp_add_post
@@ -10535,24 +11427,273 @@ paths:
10535
11427
  properties:
10536
11428
  op:
10537
11429
  type: string
10538
- enum:
10539
- - migrate
10540
- - reembed
10541
- - activation-recompute
10542
- force:
10543
- type: boolean
11430
+ enum:
11431
+ - migrate
11432
+ - reembed
11433
+ - activation-recompute
11434
+ force:
11435
+ type: boolean
11436
+ required:
11437
+ - op
11438
+ additionalProperties: false
11439
+ /v1/memory/v2/compare-retrievers:
11440
+ post:
11441
+ operationId: memory_v2_compareretrievers_post
11442
+ summary: Compare retrievers against the router's logged selections (read-only)
11443
+ description:
11444
+ Runs one or more retrievers over a sample of historical turns (memory_v2_activation_logs, mode='router')
11445
+ and scores their selected pages against the logged selections as ground truth, reconstructing each turn's inputs
11446
+ from the messages table + current NOW. Read-only — writes nothing. Each scored turn re-runs the router (one LLM
11447
+ call), so keep `limit` modest. Today the only retriever is the router itself, so this is the harness self-test.
11448
+ tags:
11449
+ - memory
11450
+ responses:
11451
+ "200":
11452
+ description: Successful response
11453
+ requestBody:
11454
+ required: true
11455
+ content:
11456
+ application/json:
11457
+ schema:
11458
+ type: object
11459
+ properties:
11460
+ limit:
11461
+ type: integer
11462
+ exclusiveMinimum: 0
11463
+ maximum: 9007199254740991
11464
+ strategy:
11465
+ type: string
11466
+ enum:
11467
+ - recent
11468
+ - random
11469
+ conversationIds:
11470
+ type: array
11471
+ items:
11472
+ type: string
11473
+ minLength: 1
11474
+ ks:
11475
+ type: array
11476
+ items:
11477
+ type: integer
11478
+ exclusiveMinimum: 0
11479
+ maximum: 9007199254740991
11480
+ includeNotInjected:
11481
+ type: boolean
11482
+ additionalProperties: false
11483
+ /v1/memory/v2/concept-frequency:
11484
+ post:
11485
+ operationId: memory_v2_conceptfrequency_post
11486
+ summary: Aggregate per-concept injection frequency from activation logs
11487
+ description:
11488
+ "Debug-only. Aggregates the existing memory_v2_activation_logs table by (slug, status) and cross-references
11489
+ on-disk concept pages so an operator can see which concepts get injected often, which get scored but rejected,
11490
+ and which on-disk pages never even surface as candidates. Optional filters: conversationId narrows to a single
11491
+ conversation; sinceMs restricts to logs created at-or-after the given epoch ms timestamp."
11492
+ tags:
11493
+ - memory
11494
+ responses:
11495
+ "200":
11496
+ description: Successful response
11497
+ requestBody:
11498
+ required: true
11499
+ content:
11500
+ application/json:
11501
+ schema:
11502
+ type: object
11503
+ properties:
11504
+ conversationId:
11505
+ type: string
11506
+ minLength: 1
11507
+ sinceMs:
11508
+ type: integer
11509
+ minimum: 0
11510
+ maximum: 9007199254740991
11511
+ additionalProperties: false
11512
+ /v1/memory/v2/concept-page:
11513
+ post:
11514
+ operationId: memory_v2_conceptpage_post
11515
+ summary: Read a single memory v2 concept page
11516
+ description:
11517
+ Returns the rendered (frontmatter + body) markdown for a slug. 404 when the slug has no on-disk page — the
11518
+ activation log inspector uses this to show what got injected.
11519
+ tags:
11520
+ - memory
11521
+ responses:
11522
+ "200":
11523
+ description: Successful response
11524
+ requestBody:
11525
+ required: true
11526
+ content:
11527
+ application/json:
11528
+ schema:
11529
+ type: object
11530
+ properties:
11531
+ slug:
11532
+ type: string
11533
+ minLength: 1
11534
+ required:
11535
+ - slug
11536
+ additionalProperties: false
11537
+ /v1/memory/v2/ema-scores:
11538
+ post:
11539
+ operationId: memory_v2_emascores_post
11540
+ summary: List every concept page with its injection-frequency EMA score
11541
+ description:
11542
+ Computes the time-decayed injection frequency (3-day half-life) for every entry in the current page index
11543
+ by reading memory_v2_injection_events. Returns entries sorted by score descending then slug ASCII, including
11544
+ zero-score pages so callers can decide whether to filter. Read-only; tier 2 of the v4 router uses the same
11545
+ computation to pick its top-M.
11546
+ tags:
11547
+ - memory
11548
+ responses:
11549
+ "200":
11550
+ description: Successful response
11551
+ requestBody:
11552
+ required: true
11553
+ content:
11554
+ application/json:
11555
+ schema:
11556
+ type: object
11557
+ properties: {}
11558
+ additionalProperties: false
11559
+ /v1/memory/v2/list-concept-pages:
11560
+ post:
11561
+ operationId: memory_v2_listconceptpages_post
11562
+ summary: List all memory v2 concept pages with metadata
11563
+ description:
11564
+ Returns slugs, body sizes, edge counts, and last-modified timestamps for every concept page on disk.
11565
+ Read-only; used by the desktop About → Memories surface to render a browse-able list.
11566
+ tags:
11567
+ - memory
11568
+ responses:
11569
+ "200":
11570
+ description: Successful response
11571
+ requestBody:
11572
+ required: true
11573
+ content:
11574
+ application/json:
11575
+ schema:
11576
+ type: object
11577
+ properties: {}
11578
+ additionalProperties: false
11579
+ /v1/memory/v2/now-text:
11580
+ get:
11581
+ operationId: memory_v2_nowtext_get
11582
+ summary: Return the current rendered `<now>` body
11583
+ description:
11584
+ Returns the current NOW.md (autoloaded essentials/threads/recent). Used by the memory router playground to
11585
+ seed its `<now>` text area with a production-like default so callers can edit from a realistic baseline.
11586
+ tags:
11587
+ - memory
11588
+ responses:
11589
+ "200":
11590
+ description: Successful response
11591
+ /v1/memory/v2/reembed-skills:
11592
+ post:
11593
+ operationId: memory_v2_reembedskills_post
11594
+ summary: Re-seed v2 skill entries from the current skill catalog
11595
+ description: Synchronously re-runs seedV2SkillEntries against the current skill catalog. Gated on config.memory.v2.enabled.
11596
+ tags:
11597
+ - memory
11598
+ responses:
11599
+ "200":
11600
+ description: Successful response
11601
+ requestBody:
11602
+ required: true
11603
+ content:
11604
+ application/json:
11605
+ schema:
11606
+ type: object
11607
+ properties: {}
11608
+ additionalProperties: false
11609
+ /v1/memory/v2/router-prompt-template:
11610
+ get:
11611
+ operationId: memory_v2_routerprompttemplate_get
11612
+ summary: Return the bundled router system-prompt template
11613
+ description:
11614
+ Returns the bundled `ROUTER_PROMPT` body with placeholders intact (`{{ASSISTANT_NAME}}`, `{{USER_NAME}}`,
11615
+ `{{PAGE_INDEX}}`). Used by the memory router playground's 'Load default' affordance so users have a known-good
11616
+ starting point when authoring an inline prompt override.
11617
+ tags:
11618
+ - memory
11619
+ responses:
11620
+ "200":
11621
+ description: Successful response
11622
+ /v1/memory/v2/simulate-router:
11623
+ post:
11624
+ operationId: memory_v2_simulaterouter_post
11625
+ summary: Dry-run the v4 router with config overrides (read-only)
11626
+ description:
11627
+ Runs the memory router against the live page index + EMA scores with optional tier_size / batch_size
11628
+ overrides, without recording an injection event or writing an activation log. Returns the slugs that would have
11629
+ been selected, per-slug tier provenance, EMA scores, and the effective router config so operators can validate
11630
+ knob changes before flipping them in workspace config.
11631
+ tags:
11632
+ - memory
11633
+ responses:
11634
+ "200":
11635
+ description: Successful response
11636
+ requestBody:
11637
+ required: true
11638
+ content:
11639
+ application/json:
11640
+ schema:
11641
+ type: object
11642
+ properties:
11643
+ recentTurnPairs:
11644
+ minItems: 1
11645
+ type: array
11646
+ items:
11647
+ type: object
11648
+ properties:
11649
+ assistantMessage:
11650
+ type: string
11651
+ userMessage:
11652
+ type: string
11653
+ required:
11654
+ - assistantMessage
11655
+ - userMessage
11656
+ additionalProperties: false
11657
+ nowText:
11658
+ type: string
11659
+ configOverrides:
11660
+ type: object
11661
+ properties:
11662
+ tier1_size:
11663
+ anyOf:
11664
+ - type: integer
11665
+ minimum: 1
11666
+ maximum: 9007199254740991
11667
+ - type: "null"
11668
+ tier2_size:
11669
+ anyOf:
11670
+ - type: integer
11671
+ minimum: 1
11672
+ maximum: 9007199254740991
11673
+ - type: "null"
11674
+ batch_size:
11675
+ anyOf:
11676
+ - type: integer
11677
+ minimum: 1
11678
+ maximum: 9007199254740991
11679
+ - type: "null"
11680
+ additionalProperties: false
11681
+ profileOverride:
11682
+ type: string
11683
+ minLength: 1
11684
+ routerPromptOverride:
11685
+ type: string
11686
+ maxLength: 1000000
10544
11687
  required:
10545
- - op
11688
+ - recentTurnPairs
10546
11689
  additionalProperties: false
10547
- /v1/memory/v2/concept-frequency:
11690
+ /v1/memory/v2/validate:
10548
11691
  post:
10549
- operationId: memory_v2_conceptfrequency_post
10550
- summary: Aggregate per-concept injection frequency from activation logs
11692
+ operationId: memory_v2_validate_post
11693
+ summary: Validate memory v2 workspace state
10551
11694
  description:
10552
- "Debug-only. Aggregates the existing memory_v2_activation_logs table by (slug, status) and cross-references
10553
- on-disk concept pages so an operator can see which concepts get injected often, which get scored but rejected,
10554
- and which on-disk pages never even surface as candidates. Optional filters: conversationId narrows to a single
10555
- conversation; sinceMs restricts to logs created at-or-after the given epoch ms timestamp."
11695
+ Read-only structural validation of the v2 workspace reports orphan edges, oversized pages, and parse
11696
+ failures. Runnable regardless of memory.v2.enabled so operators can dry-run validation before flipping the flag.
10556
11697
  tags:
10557
11698
  - memory
10558
11699
  responses:
@@ -10564,22 +11705,19 @@ paths:
10564
11705
  application/json:
10565
11706
  schema:
10566
11707
  type: object
10567
- properties:
10568
- conversationId:
10569
- type: string
10570
- minLength: 1
10571
- sinceMs:
10572
- type: integer
10573
- minimum: 0
10574
- maximum: 9007199254740991
11708
+ properties: {}
10575
11709
  additionalProperties: false
10576
- /v1/memory/v2/concept-page:
11710
+ /v1/memory/v3/simulate:
10577
11711
  post:
10578
- operationId: memory_v2_conceptpage_post
10579
- summary: Read a single memory v2 concept page
11712
+ operationId: memory_v3_simulate_post
11713
+ summary: Dry-run the v3 retrieval loop against an ad-hoc query (read-only)
10580
11714
  description:
10581
- Returns the rendered (frontmatter + body) markdown for a slug. 404 when the slug has no on-disk page — the
10582
- activation log inspector uses this to show what got injected.
11715
+ Runs the v3 multi-lane bounded-descent retrieval loop read-only against a single synthetic turn built from
11716
+ the supplied query plus the live (or supplied) NOW context. Returns the selected page slugs, per-lane
11717
+ provenance, the full multi-pass descent trace, and accumulated cost. Optional passCap / lane-allowlist overrides
11718
+ apply on top of live config. Invoked directly (not gated by memory.v3.enabled/shadow) so operators can probe v3
11719
+ retrieval before flipping the flags; writes nothing (co-activation persistence is forced off), though each pass
11720
+ still spends the loop's filter + gate LLM calls.
10583
11721
  tags:
10584
11722
  - memory
10585
11723
  responses:
@@ -10592,37 +11730,36 @@ paths:
10592
11730
  schema:
10593
11731
  type: object
10594
11732
  properties:
10595
- slug:
11733
+ query:
10596
11734
  type: string
10597
11735
  minLength: 1
11736
+ nowText:
11737
+ type: string
11738
+ passCap:
11739
+ type: integer
11740
+ exclusiveMinimum: 0
11741
+ maximum: 9007199254740991
11742
+ lanes:
11743
+ type: array
11744
+ items:
11745
+ type: string
11746
+ enum:
11747
+ - hot
11748
+ - sparse
11749
+ - dense
11750
+ - tree
11751
+ - edges
10598
11752
  required:
10599
- - slug
11753
+ - query
10600
11754
  additionalProperties: false
10601
- /v1/memory/v2/list-concept-pages:
11755
+ /v1/memory/v3/tree:
10602
11756
  post:
10603
- operationId: memory_v2_listconceptpages_post
10604
- summary: List all memory v2 concept pages with metadata
11757
+ operationId: memory_v3_tree_post
11758
+ summary: Return a serializable view of the memory v3 tree DAG (read-only)
10605
11759
  description:
10606
- Returns slugs, body sizes, edge counts, and last-modified timestamps for every concept page on disk.
10607
- Read-only; used by the desktop About Memories surface to render a browse-able list.
10608
- tags:
10609
- - memory
10610
- responses:
10611
- "200":
10612
- description: Successful response
10613
- requestBody:
10614
- required: true
10615
- content:
10616
- application/json:
10617
- schema:
10618
- type: object
10619
- properties: {}
10620
- additionalProperties: false
10621
- /v1/memory/v2/reembed-skills:
10622
- post:
10623
- operationId: memory_v2_reembedskills_post
10624
- summary: Re-seed v2 skill entries from the current skill catalog
10625
- description: Synchronously re-runs seedV2SkillEntries against the current skill catalog. Gated on config.memory.v2.enabled.
11760
+ Returns the v3 tree root id plus every node and its ordered child refs (page:/node:) as a JSON-serializable
11761
+ projection of the in-memory TreeIndex. Read-only; the CLI uses it to print an indented tree with shared-DAG
11762
+ re-entries marked.
10626
11763
  tags:
10627
11764
  - memory
10628
11765
  responses:
@@ -10636,13 +11773,14 @@ paths:
10636
11773
  type: object
10637
11774
  properties: {}
10638
11775
  additionalProperties: false
10639
- /v1/memory/v2/validate:
11776
+ /v1/memory/v3/validate:
10640
11777
  post:
10641
- operationId: memory_v2_validate_post
10642
- summary: Validate memory v2 workspace state
11778
+ operationId: memory_v3_validate_post
11779
+ summary: Validate the memory v3 tree structure (read-only)
10643
11780
  description:
10644
- Read-only structural validation of the v2 workspace reports orphan edges, oversized pages, and parse
10645
- failures. Runnable regardless of memory.v2.enabled so operators can dry-run validation before flipping the flag.
11781
+ Read-only structural validation of the hand-authored v3 tree DAG. Reports dangling child refs, orphan
11782
+ pages, cycles, stale compositional indexes, and unknown edge targets. Writes nothing and runs no LLM operators
11783
+ dry-run it while the v2 → v3 migration is in flight.
10646
11784
  tags:
10647
11785
  - memory
10648
11786
  responses:
@@ -10861,6 +11999,28 @@ paths:
10861
11999
  schema:
10862
12000
  type: string
10863
12001
  description: Conversation ID (required)
12002
+ /v1/messages/queued/{id}/steer:
12003
+ post:
12004
+ operationId: messages_queued_by_id_steer_post
12005
+ summary: Steer to a queued message
12006
+ description: Promote a queued message to the head of the queue and abort the current generation so it is processed next.
12007
+ tags:
12008
+ - messages
12009
+ responses:
12010
+ "200":
12011
+ description: Successful response
12012
+ parameters:
12013
+ - name: id
12014
+ in: path
12015
+ required: true
12016
+ schema:
12017
+ type: string
12018
+ - name: conversationId
12019
+ in: query
12020
+ required: true
12021
+ schema:
12022
+ type: string
12023
+ description: Conversation ID (required)
10864
12024
  /v1/migrations/export:
10865
12025
  post:
10866
12026
  operationId: migrations_export_post
@@ -11361,6 +12521,8 @@ paths:
11361
12521
  type: string
11362
12522
  throwOnError:
11363
12523
  type: boolean
12524
+ originatingConversationId:
12525
+ type: string
11364
12526
  required:
11365
12527
  - sourceEventName
11366
12528
  - sourceChannel
@@ -11971,6 +13133,168 @@ paths:
11971
13133
  required: true
11972
13134
  schema:
11973
13135
  type: string
13136
+ /v1/plugins:
13137
+ get:
13138
+ operationId: plugins_get
13139
+ summary: List installed plugins
13140
+ description:
13141
+ Return one entry per directory under `<workspaceDir>/plugins/`, sorted alphabetically. Matches the CLI's
13142
+ `assistant plugins list`. Supports `?q=<text>` for case-insensitive substring matching across plugin id, name,
13143
+ and description.
13144
+ tags:
13145
+ - plugins
13146
+ responses:
13147
+ "200":
13148
+ description: Successful response
13149
+ content:
13150
+ application/json:
13151
+ schema:
13152
+ type: object
13153
+ properties:
13154
+ plugins:
13155
+ type: array
13156
+ items:
13157
+ type: object
13158
+ properties:
13159
+ id:
13160
+ type: string
13161
+ description: Plugin's directory name (kebab-case). Matches `assistant plugins install <id>`.
13162
+ name:
13163
+ type: string
13164
+ description: Display name. Equal to `id` today.
13165
+ description:
13166
+ anyOf:
13167
+ - type: string
13168
+ - type: "null"
13169
+ description: From `package.json#description`; `null` when unknown.
13170
+ version:
13171
+ anyOf:
13172
+ - type: string
13173
+ - type: "null"
13174
+ description: From `package.json#version`; `null` when unknown.
13175
+ path:
13176
+ description: Absolute path to the plugin directory on the assistant host.
13177
+ type: string
13178
+ issues:
13179
+ description: Non-fatal issues with this entry (missing `package.json`, malformed JSON, ...). Omitted when clean.
13180
+ type: array
13181
+ items:
13182
+ type: string
13183
+ required:
13184
+ - id
13185
+ - name
13186
+ - description
13187
+ - version
13188
+ additionalProperties: false
13189
+ required:
13190
+ - plugins
13191
+ additionalProperties: false
13192
+ parameters:
13193
+ - name: q
13194
+ in: query
13195
+ required: false
13196
+ schema:
13197
+ type: string
13198
+ description: Optional substring filter applied to plugin id, name, and description.
13199
+ /v1/plugins/{name}:
13200
+ delete:
13201
+ operationId: plugins_by_name_delete
13202
+ summary: Uninstall a plugin
13203
+ description:
13204
+ Remove the directory at `<workspaceDir>/plugins/<name>/`. Mirrors the CLI's `assistant plugins uninstall
13205
+ <name>` (without the interactive confirmation — the API caller is responsible for any prompt). The plugin name
13206
+ is sanitized by the same regex the CLI uses; `../escape`-style values, hidden names, and absolute paths return
13207
+ 400. Missing plugins return 404. The assistant must be restarted to drop the plugin from the running runtime.
13208
+ tags:
13209
+ - plugins
13210
+ responses:
13211
+ "200":
13212
+ description: Successful response
13213
+ content:
13214
+ application/json:
13215
+ schema:
13216
+ type: object
13217
+ properties:
13218
+ name:
13219
+ type: string
13220
+ description: Directory name that was removed. Echoes the request's `:name` path parameter after sanitization.
13221
+ target:
13222
+ type: string
13223
+ description: Absolute path that was removed on the assistant host. Useful for audit logs and confirmation toasts.
13224
+ required:
13225
+ - name
13226
+ - target
13227
+ additionalProperties: false
13228
+ "400":
13229
+ description: The plugin name failed sanitization (e.g. contained slashes, dots, or uppercase letters).
13230
+ "404":
13231
+ description: No plugin directory exists with the given name.
13232
+ parameters:
13233
+ - name: name
13234
+ in: path
13235
+ required: true
13236
+ schema:
13237
+ type: string
13238
+ /v1/plugins/search:
13239
+ get:
13240
+ operationId: plugins_search_get
13241
+ summary: Search the plugin catalog
13242
+ description:
13243
+ List installable plugins from the canonical `vellum-ai/vellum-assistant` catalog at
13244
+ `experimental/plugins/`. The query is an ECMAScript regex matched case-insensitively against the directory name
13245
+ (e.g. `memory`, `^simple`). Empty query returns every entry. Mirrors the CLI's `assistant plugins search`.
13246
+ tags:
13247
+ - plugins
13248
+ responses:
13249
+ "200":
13250
+ description: Successful response
13251
+ content:
13252
+ application/json:
13253
+ schema:
13254
+ type: object
13255
+ properties:
13256
+ query:
13257
+ type: string
13258
+ description: Echo of the requested query (ECMAScript regex source).
13259
+ ref:
13260
+ type: string
13261
+ description: Git ref the catalog was listed at.
13262
+ matches:
13263
+ type: array
13264
+ items:
13265
+ type: object
13266
+ properties:
13267
+ name:
13268
+ type: string
13269
+ description: Directory name under `experimental/plugins/`. Matches `assistant plugins install <name>`.
13270
+ path:
13271
+ type: string
13272
+ description: Repo-relative path of the match (e.g. `experimental/plugins/<name>`).
13273
+ required:
13274
+ - name
13275
+ - path
13276
+ additionalProperties: false
13277
+ description: Directory matches, sorted alphabetically by name.
13278
+ required:
13279
+ - query
13280
+ - ref
13281
+ - matches
13282
+ additionalProperties: false
13283
+ parameters:
13284
+ - name: q
13285
+ in: query
13286
+ required: false
13287
+ schema:
13288
+ type: string
13289
+ description:
13290
+ ECMAScript regex pattern matched case-insensitively against catalog directory names. Empty/missing matches
13291
+ everything.
13292
+ - name: ref
13293
+ in: query
13294
+ required: false
13295
+ schema:
13296
+ type: string
13297
+ description: Optional git ref to list the catalog at. Defaults to the CLI's `DEFAULT_PLUGIN_REF` (typically `main`).
11974
13298
  /v1/profiler/runs:
11975
13299
  get:
11976
13300
  operationId: profiler_runs_get
@@ -12532,6 +13856,49 @@ paths:
12532
13856
  responses:
12533
13857
  "200":
12534
13858
  description: Successful response
13859
+ /v1/sanity/connect:
13860
+ post:
13861
+ operationId: sanity_connect_post
13862
+ summary: Finalise Sanity connection and write sidecar file
13863
+ tags:
13864
+ - sanity
13865
+ responses:
13866
+ "200":
13867
+ description: Successful response
13868
+ requestBody:
13869
+ required: true
13870
+ content:
13871
+ application/json:
13872
+ schema:
13873
+ type: object
13874
+ properties:
13875
+ projectId:
13876
+ type: string
13877
+ dataset:
13878
+ type: string
13879
+ required:
13880
+ - projectId
13881
+ - dataset
13882
+ additionalProperties: false
13883
+ /v1/sanity/discover:
13884
+ post:
13885
+ operationId: sanity_discover_post
13886
+ summary: Discover Sanity projects and datasets using the stored API token
13887
+ tags:
13888
+ - sanity
13889
+ responses:
13890
+ "200":
13891
+ description: Successful response
13892
+ requestBody:
13893
+ required: true
13894
+ content:
13895
+ application/json:
13896
+ schema:
13897
+ type: object
13898
+ properties:
13899
+ projectId:
13900
+ type: string
13901
+ additionalProperties: false
12535
13902
  /v1/schedules:
12536
13903
  get:
12537
13904
  operationId: schedules_get
@@ -14843,16 +16210,41 @@ paths:
14843
16210
  type: object
14844
16211
  properties:
14845
16212
  suggestion:
14846
- type: string
16213
+ anyOf:
16214
+ - type: string
16215
+ - type: "null"
14847
16216
  messageId:
14848
- type: string
16217
+ anyOf:
16218
+ - type: string
16219
+ - type: "null"
14849
16220
  source:
14850
16221
  type: string
16222
+ stale:
16223
+ type: boolean
14851
16224
  required:
14852
16225
  - suggestion
14853
16226
  - messageId
14854
16227
  - source
14855
16228
  additionalProperties: false
16229
+ parameters:
16230
+ - name: conversationId
16231
+ in: query
16232
+ required: false
16233
+ schema:
16234
+ type: string
16235
+ description: Conversation ID to fetch a suggestion for. Either this or conversationKey is required.
16236
+ - name: conversationKey
16237
+ in: query
16238
+ required: false
16239
+ schema:
16240
+ type: string
16241
+ description: Legacy conversation key. Either this or conversationId is required.
16242
+ - name: messageId
16243
+ in: query
16244
+ required: false
16245
+ schema:
16246
+ type: string
16247
+ description: Optional. Latest assistant message ID the client has seen — used to detect staleness.
14856
16248
  /v1/surface-actions:
14857
16249
  post:
14858
16250
  operationId: surfaceactions_post