@vellumai/assistant 0.9.0 → 0.10.0-dev.202606192226.8ed8a6a

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 (624) hide show
  1. package/ARCHITECTURE.md +19 -35
  2. package/bun.lock +7 -8
  3. package/docs/activation-funnel-telemetry.md +28 -22
  4. package/docs/architecture/security.md +29 -28
  5. package/docs/stt-provider-onboarding.md +3 -5
  6. package/docs/workflows-testing.md +13 -44
  7. package/docs/workflows.md +3 -5
  8. package/node_modules/@vellumai/ces-client/src/__tests__/ces-client.test.ts +47 -0
  9. package/node_modules/@vellumai/ces-client/src/rpc-client.ts +28 -5
  10. package/node_modules/@vellumai/environments/src/seeds.ts +2 -5
  11. package/node_modules/@vellumai/gateway-client/src/admission-policy-contract.ts +97 -0
  12. package/node_modules/@vellumai/gateway-client/src/inbound-contract.ts +10 -0
  13. package/node_modules/@vellumai/gateway-client/src/index.ts +32 -6
  14. package/node_modules/@vellumai/gateway-client/src/outbound-contract.ts +119 -0
  15. package/node_modules/@vellumai/gateway-client/src/types.ts +15 -84
  16. package/openapi.yaml +1128 -119
  17. package/package.json +2 -1
  18. package/scripts/sync-llm-catalog.ts +6 -15
  19. package/scripts/sync-web-search-catalog.ts +3 -11
  20. package/src/__tests__/access-request-card-view.test.ts +98 -0
  21. package/src/__tests__/access-request-seed-content-blocks.test.ts +2 -4
  22. package/src/__tests__/actor-trust-resolver-address-fallback.test.ts +72 -32
  23. package/src/__tests__/agent-loop-compaction-strip.test.ts +241 -0
  24. package/src/__tests__/agent-loop-mutable-latest-user-message.test.ts +16 -13
  25. package/src/__tests__/agent-loop-output-hooks.test.ts +69 -0
  26. package/src/__tests__/agent-loop-override-profile.test.ts +25 -0
  27. package/src/__tests__/agent-loop-pushes-post-hook-prompt.test.ts +306 -0
  28. package/src/__tests__/always-loaded-tools-guard.test.ts +2 -3
  29. package/src/__tests__/app-compiler.test.ts +15 -1
  30. package/src/__tests__/app-dir-path-guard.test.ts +0 -1
  31. package/src/__tests__/approval-cascade.test.ts +6 -0
  32. package/src/__tests__/approval-routes-http.test.ts +128 -0
  33. package/src/__tests__/assistant-feature-flag-guard.test.ts +1 -4
  34. package/src/__tests__/assistant-feature-flag-guardrails.test.ts +0 -2
  35. package/src/__tests__/auth-fallback-events-store.test.ts +6 -14
  36. package/src/__tests__/avatar-identity-sync.test.ts +2 -27
  37. package/src/__tests__/btw-routes.test.ts +6 -8
  38. package/src/__tests__/call-pointer-messages.test.ts +28 -0
  39. package/src/__tests__/cancel-clears-processing.test.ts +89 -0
  40. package/src/__tests__/channel-approval-routes.test.ts +0 -4
  41. package/src/__tests__/channel-inbound-disk-pressure.test.ts +5 -15
  42. package/src/__tests__/checker.test.ts +0 -3
  43. package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +3 -4
  44. package/src/__tests__/compaction-events.test.ts +6 -0
  45. package/src/__tests__/compactor-image-manifest-trust.test.ts +21 -1
  46. package/src/__tests__/compactor-summary-call-truncation.test.ts +223 -0
  47. package/src/__tests__/config-loader-backfill.test.ts +268 -27
  48. package/src/__tests__/config-schema.test.ts +35 -0
  49. package/src/__tests__/config-watcher.test.ts +0 -18
  50. package/src/__tests__/confirmation-request-guardian-bridge.test.ts +2 -2
  51. package/src/__tests__/contact-store-user-file.test.ts +0 -6
  52. package/src/__tests__/contacts-tools.test.ts +29 -0
  53. package/src/__tests__/conversation-abort-tool-results.test.ts +6 -0
  54. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +22 -0
  55. package/src/__tests__/conversation-agent-loop-overflow.test.ts +1 -0
  56. package/src/__tests__/conversation-agent-loop.test.ts +58 -0
  57. package/src/__tests__/conversation-attention-telegram.test.ts +0 -1
  58. package/src/__tests__/conversation-confirmation-signals.test.ts +6 -0
  59. package/src/__tests__/conversation-lifecycle.test.ts +7 -9
  60. package/src/__tests__/conversation-load-history-repair.test.ts +101 -0
  61. package/src/__tests__/conversation-process-callsite.test.ts +6 -0
  62. package/src/__tests__/conversation-provider-retry-repair.test.ts +6 -0
  63. package/src/__tests__/conversation-queue.test.ts +6 -0
  64. package/src/__tests__/conversation-routes-guardian-reply.test.ts +15 -12
  65. package/src/__tests__/conversation-slash-queue.test.ts +6 -0
  66. package/src/__tests__/conversation-slash-unknown.test.ts +6 -0
  67. package/src/__tests__/conversation-speed-override.test.ts +6 -0
  68. package/src/__tests__/conversation-surfaces-activation-emit.test.ts +6 -3
  69. package/src/__tests__/conversation-title-service.test.ts +62 -0
  70. package/src/__tests__/conversation-workspace-cache-state.test.ts +6 -0
  71. package/src/__tests__/conversation-workspace-injection.test.ts +6 -0
  72. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +6 -0
  73. package/src/__tests__/credential-broker.test.ts +449 -1
  74. package/src/__tests__/credential-execution-shell-lockdown.test.ts +18 -11
  75. package/src/__tests__/credential-execution-tools.test.ts +0 -1
  76. package/src/__tests__/credential-prompt-route.test.ts +4 -4
  77. package/src/__tests__/credential-routes.test.ts +360 -0
  78. package/src/__tests__/credential-security-invariants.test.ts +4 -13
  79. package/src/__tests__/disk-pressure-policy.test.ts +12 -0
  80. package/src/__tests__/disk-pressure-tools.test.ts +41 -1
  81. package/src/__tests__/disk-usage.test.ts +65 -0
  82. package/src/__tests__/document-tool-security.test.ts +9 -6
  83. package/src/__tests__/document-update-default-surface.test.ts +202 -0
  84. package/src/__tests__/dynamic-page-surface.test.ts +152 -1
  85. package/src/__tests__/fixtures/credential-security-fixtures.ts +2 -33
  86. package/src/__tests__/gateway-flag-listener.test.ts +110 -1
  87. package/src/__tests__/gateway-only-guard.test.ts +3 -7
  88. package/src/__tests__/gemini-count-tokens.test.ts +70 -0
  89. package/src/__tests__/guardian-binding-drift-heal.test.ts +1 -1
  90. package/src/__tests__/guardian-card-withdrawal.test.ts +403 -0
  91. package/src/__tests__/guardian-decision-primitive-canonical.test.ts +5 -3
  92. package/src/__tests__/guardian-grant-minting.test.ts +3 -35
  93. package/src/__tests__/guardian-routing-invariants.test.ts +64 -26
  94. package/src/__tests__/guardian-routing-state.test.ts +0 -1
  95. package/src/__tests__/headless-browser-mode.test.ts +10 -0
  96. package/src/__tests__/headless-browser-navigate.test.ts +8 -3
  97. package/src/__tests__/helpers/create-guardian-binding.ts +0 -1
  98. package/src/__tests__/host-browser-proxy.test.ts +87 -0
  99. package/src/__tests__/identity-routes.test.ts +0 -189
  100. package/src/__tests__/inbound-invite-redemption.test.ts +4 -4
  101. package/src/__tests__/injector-disk-pressure.test.ts +10 -5
  102. package/src/__tests__/injector-v3-suppression.test.ts +27 -20
  103. package/src/__tests__/internal-telemetry-routes.test.ts +6 -14
  104. package/src/__tests__/invite-redemption-service.test.ts +4 -7
  105. package/src/__tests__/llm-callsite-catalog.test.ts +5 -6
  106. package/src/__tests__/llm-catalog-parity.test.ts +30 -23
  107. package/src/__tests__/llm-resolver.test.ts +70 -24
  108. package/src/__tests__/llm-schema.test.ts +1 -0
  109. package/src/__tests__/managed-profile-guard.test.ts +163 -4
  110. package/src/__tests__/mcp-health-check.test.ts +6 -7
  111. package/src/__tests__/media-stream-server-integration.test.ts +317 -13
  112. package/src/__tests__/oauth-provider-seed-logos.test.ts +4 -6
  113. package/src/__tests__/onboarding-persona-write.test.ts +1 -1
  114. package/src/__tests__/path-policy.test.ts +34 -0
  115. package/src/__tests__/persona-resolver.test.ts +49 -14
  116. package/src/__tests__/plugin-api-model-profiles.test.ts +178 -0
  117. package/src/__tests__/plugin-api-provider.test.ts +24 -0
  118. package/src/__tests__/plugin-tool-contribution.test.ts +6 -3
  119. package/src/__tests__/post-compaction-reinjection-idempotency.test.ts +214 -0
  120. package/src/__tests__/provider-send-message-override-profile.test.ts +76 -0
  121. package/src/__tests__/reaction-persistence.test.ts +150 -29
  122. package/src/__tests__/registry.test.ts +2 -7
  123. package/src/__tests__/relay-server.test.ts +285 -0
  124. package/src/__tests__/runtime-attachment-metadata.test.ts +0 -1
  125. package/src/__tests__/schedule-routes-workflow-validation.test.ts +1 -10
  126. package/src/__tests__/schedule-routes.test.ts +0 -30
  127. package/src/__tests__/schedule-tools.test.ts +2 -18
  128. package/src/__tests__/scheduler-reuse-conversation.test.ts +8 -5
  129. package/src/__tests__/secret-response-routing.test.ts +35 -0
  130. package/src/__tests__/secret-routes-platform-proxy.test.ts +16 -2
  131. package/src/__tests__/skill-execute-input.test.ts +177 -1
  132. package/src/__tests__/skill-load-tool.test.ts +72 -0
  133. package/src/__tests__/skill-runtime-path.test.ts +2 -3
  134. package/src/__tests__/skills.test.ts +51 -0
  135. package/src/__tests__/slack-notification-approval-card.test.ts +176 -0
  136. package/src/__tests__/slack-reaction-canonical-approval.test.ts +285 -0
  137. package/src/__tests__/subagent-tools.test.ts +266 -0
  138. package/src/__tests__/surface-completion-nudge-hook.test.ts +367 -0
  139. package/src/__tests__/system-storage-cleanup-skill.test.ts +56 -0
  140. package/src/__tests__/task-progress-nudge-hook.test.ts +1 -1
  141. package/src/__tests__/title-generate-hook.test.ts +100 -3
  142. package/src/__tests__/token-estimator-accuracy.benchmark.test.ts +1 -29
  143. package/src/__tests__/token-manager.test.ts +519 -0
  144. package/src/__tests__/tool-approval-seed-content-blocks.test.ts +1 -1
  145. package/src/__tests__/tool-audit-listener.test.ts +7 -7
  146. package/src/__tests__/tool-executor-lifecycle-events.test.ts +6 -3
  147. package/src/__tests__/tool-executor.test.ts +0 -79
  148. package/src/__tests__/trusted-contact-approval-notifier.test.ts +4 -2
  149. package/src/__tests__/trusted-contact-inline-approval-integration.test.ts +220 -3
  150. package/src/__tests__/trusted-contact-multichannel.test.ts +3 -3
  151. package/src/__tests__/trusted-contact-verification.test.ts +8 -10
  152. package/src/__tests__/twilio-routes.test.ts +81 -1
  153. package/src/__tests__/voice-invite-redemption.test.ts +2 -3
  154. package/src/__tests__/weak-open-model.test.ts +30 -0
  155. package/src/__tests__/web-search-catalog-parity.test.ts +6 -25
  156. package/src/__tests__/workspace-greetings.test.ts +152 -0
  157. package/src/__tests__/workspace-migration-105-enable-memory-v3-live-for-new-workspaces.test.ts +149 -0
  158. package/src/__tests__/workspace-migration-108-drop-balanced-economy-profile.test.ts +285 -0
  159. package/src/__tests__/workspace-migration-add-send-diagnostics.test.ts +1 -1
  160. package/src/__tests__/workspace-migration-drop-collect-usage-data.test.ts +118 -0
  161. package/src/__tests__/workspace-migration-drop-send-diagnostics.test.ts +118 -0
  162. package/src/a2a/__tests__/e2e-a2a-channel.test.ts +0 -4
  163. package/src/agent/loop.ts +75 -29
  164. package/src/api/README.md +6 -6
  165. package/src/api/events/tool-result.ts +6 -0
  166. package/src/api/events/workflow-completed.ts +53 -0
  167. package/src/api/events/workflow-leaf-finished.ts +38 -0
  168. package/src/api/events/workflow-leaf-started.ts +35 -0
  169. package/src/api/events/workflow-progress.ts +32 -0
  170. package/src/api/events/workflow-started.ts +31 -0
  171. package/src/api/index.ts +40 -0
  172. package/src/api/responses/conversation-message.ts +28 -4
  173. package/src/api/responses/home.ts +26 -4
  174. package/src/api/responses/workflow-journal.ts +53 -0
  175. package/src/approvals/guardian-card-withdrawal.ts +145 -0
  176. package/src/approvals/guardian-decision-primitive.ts +26 -3
  177. package/src/approvals/guardian-request-resolvers.ts +183 -80
  178. package/src/calls/__tests__/channel-admission-reader.test.ts +132 -0
  179. package/src/calls/__tests__/relay-setup-router.test.ts +350 -0
  180. package/src/calls/call-pointer-messages.ts +10 -4
  181. package/src/calls/channel-admission-reader.ts +104 -0
  182. package/src/calls/guardian-dispatch.ts +17 -45
  183. package/src/calls/media-stream-server.ts +84 -2
  184. package/src/calls/relay-access-wait.ts +1 -1
  185. package/src/calls/relay-server.ts +66 -0
  186. package/src/calls/relay-setup-router.ts +82 -1
  187. package/src/calls/twilio-routes.ts +17 -8
  188. package/src/calls/voice-session-bridge.ts +2 -2
  189. package/src/cli/commands/clients.ts +3 -0
  190. package/src/cli/commands/db/status.ts +37 -3
  191. package/src/cli/commands/{__tests__ → memory/__tests__}/memory-v2-compare-render.test.ts +1 -1
  192. package/src/cli/commands/{__tests__ → memory/__tests__}/memory-v2.test.ts +8 -7
  193. package/src/cli/commands/{__tests__ → memory/__tests__}/memory-v3.test.ts +5 -4
  194. package/src/cli/commands/memory/index.ts +30 -0
  195. package/src/cli/commands/{memory-v2-compare-render.ts → memory/memory-v2-compare-render.ts} +1 -1
  196. package/src/cli/commands/{memory-v2.ts → memory/memory-v2.ts} +6 -15
  197. package/src/cli/commands/{memory-v3.ts → memory/memory-v3.ts} +97 -11
  198. package/src/cli/commands/oauth/status.test.ts +36 -0
  199. package/src/cli/commands/oauth/status.ts +23 -3
  200. package/src/cli/commands/plugins.ts +400 -14
  201. package/src/cli/lib/__tests__/diff-plugin.test.ts +443 -0
  202. package/src/cli/lib/__tests__/inspect-plugin.test.ts +54 -0
  203. package/src/cli/lib/__tests__/install-from-github.test.ts +31 -0
  204. package/src/cli/lib/__tests__/merge-plugin-tree.test.ts +443 -0
  205. package/src/cli/lib/__tests__/plugin-pin-history.test.ts +162 -0
  206. package/src/cli/lib/__tests__/plugin-surfaces.test.ts +111 -0
  207. package/src/cli/lib/__tests__/upgrade-plugin.test.ts +295 -2
  208. package/src/cli/lib/diff-plugin.ts +346 -0
  209. package/src/cli/lib/inspect-plugin.ts +12 -1
  210. package/src/cli/lib/install-from-github.ts +128 -19
  211. package/src/cli/lib/merge-plugin-tree.ts +328 -0
  212. package/src/cli/lib/plugin-fingerprint.ts +14 -0
  213. package/src/cli/lib/plugin-marketplace.ts +11 -0
  214. package/src/cli/lib/plugin-pin-history.ts +257 -0
  215. package/src/cli/lib/plugin-surfaces.ts +104 -0
  216. package/src/cli/lib/upgrade-plugin.ts +298 -10
  217. package/src/cli/program.ts +2 -6
  218. package/src/config/__tests__/sync-gated-profiles.test.ts +368 -0
  219. package/src/config/assistant-feature-flags.ts +22 -7
  220. package/src/config/bundled-skills/contacts/tools/contact-search.ts +0 -1
  221. package/src/config/bundled-skills/document-editor/SKILL.md +3 -3
  222. package/src/config/bundled-skills/document-editor/TOOLS.json +2 -2
  223. package/src/config/bundled-skills/messaging/SKILL.md +6 -4
  224. package/src/config/bundled-skills/messaging/tools/messaging-archive-by-sender.ts +9 -8
  225. package/src/config/bundled-skills/subagent/SKILL.md +4 -0
  226. package/src/config/bundled-skills/subagent/TOOLS.json +4 -0
  227. package/src/config/bundled-skills/system-storage-cleanup/SKILL.md +74 -0
  228. package/src/config/bundled-skills/workflows/SKILL.md +14 -8
  229. package/src/config/bundled-tool-registry.ts +2 -7
  230. package/src/config/call-site-defaults.ts +15 -2
  231. package/src/config/feature-flag-registry.json +46 -31
  232. package/src/config/inference-profile-validation.ts +26 -0
  233. package/src/config/llm-resolver.ts +3 -0
  234. package/src/config/loader.ts +4 -0
  235. package/src/config/memory-v3-gate.ts +11 -0
  236. package/src/config/profile-order.ts +28 -0
  237. package/src/config/schema.ts +8 -6
  238. package/src/config/schemas/__tests__/memory-v3.test.ts +1 -0
  239. package/src/config/schemas/call-site-catalog.ts +7 -0
  240. package/src/config/schemas/channels.ts +11 -0
  241. package/src/config/schemas/elevenlabs.ts +0 -1
  242. package/src/config/schemas/llm.ts +31 -0
  243. package/src/config/schemas/memory-lifecycle.ts +3 -7
  244. package/src/config/schemas/memory-v3.ts +6 -0
  245. package/src/config/schemas/platform.ts +0 -8
  246. package/src/config/schemas/services.ts +18 -0
  247. package/src/config/seed-inference-profiles.ts +109 -44
  248. package/src/config/skills.ts +21 -0
  249. package/src/config/sync-gated-profiles.ts +220 -0
  250. package/src/contacts/contact-store.ts +89 -106
  251. package/src/contacts/contacts-write.ts +5 -22
  252. package/src/contacts/types.ts +0 -1
  253. package/src/context/compactor.ts +88 -54
  254. package/src/context/strip-injections.ts +58 -10
  255. package/src/context/token-estimator.ts +1 -1
  256. package/src/credential-execution/process-manager.ts +55 -14
  257. package/src/credential-execution/prompted-credential.ts +2 -3
  258. package/src/daemon/__tests__/conversation-lifecycle-auto-analyze.test.ts +3 -2
  259. package/src/daemon/__tests__/conversation-tool-setup.test.ts +44 -0
  260. package/src/daemon/config-watcher.ts +0 -4
  261. package/src/daemon/conversation-agent-loop-handlers.ts +2 -0
  262. package/src/daemon/conversation-agent-loop.ts +114 -22
  263. package/src/daemon/conversation-history.ts +1 -1
  264. package/src/daemon/conversation-lifecycle.ts +3 -5
  265. package/src/daemon/conversation-process.ts +13 -5
  266. package/src/daemon/conversation-runtime-assembly.ts +13 -15
  267. package/src/daemon/conversation-slash.ts +2 -23
  268. package/src/daemon/conversation-surfaces.ts +26 -0
  269. package/src/daemon/conversation-tool-setup.ts +53 -19
  270. package/src/daemon/conversation.ts +131 -20
  271. package/src/daemon/disk-pressure-policy.ts +5 -3
  272. package/src/daemon/handlers/__tests__/config-a2a-complete.test.ts +0 -1
  273. package/src/daemon/handlers/__tests__/config-a2a-redeem.test.ts +0 -1
  274. package/src/daemon/handlers/config-a2a.ts +0 -2
  275. package/src/daemon/handlers/config-channels.ts +15 -16
  276. package/src/daemon/handlers/config-slack-channel.ts +22 -3
  277. package/src/daemon/handlers/conversations.ts +107 -0
  278. package/src/daemon/host-browser-proxy.ts +41 -0
  279. package/src/daemon/lifecycle.ts +55 -27
  280. package/src/daemon/memory-v2-startup.test.ts +131 -0
  281. package/src/daemon/memory-v2-startup.ts +100 -1
  282. package/src/daemon/message-provenance.ts +2 -0
  283. package/src/daemon/message-types/contacts.ts +0 -1
  284. package/src/daemon/message-types/conversations.ts +3 -3
  285. package/src/daemon/message-types/sync.ts +0 -1
  286. package/src/daemon/message-types/web-activity.ts +7 -1
  287. package/src/daemon/message-types/workflows.ts +83 -1
  288. package/src/daemon/orphan-reaper.test.ts +0 -19
  289. package/src/daemon/orphan-reaper.ts +2 -24
  290. package/src/daemon/server.ts +0 -10
  291. package/src/daemon/tool-setup-types.ts +4 -0
  292. package/src/daemon/trust-context.ts +1 -1
  293. package/src/daemon/wake-conversation-ops.ts +1 -0
  294. package/src/events/tool-audit-listener.ts +2 -2
  295. package/src/home/feed-source-enrichment.test.ts +151 -0
  296. package/src/home/feed-source-enrichment.ts +176 -0
  297. package/src/home/relationship-state.ts +2 -4
  298. package/src/instrument.ts +18 -6
  299. package/src/ipc/__tests__/binary-result-ipc.test.ts +81 -0
  300. package/src/ipc/__tests__/clients-list-ipc.test.ts +20 -0
  301. package/src/ipc/assistant-server.ts +37 -4
  302. package/src/ipc/gateway-flag-listener.ts +18 -2
  303. package/src/memory/__tests__/auto-analysis-enqueue.test.ts +5 -16
  304. package/src/memory/__tests__/db-logs-attach.test.ts +122 -0
  305. package/src/memory/__tests__/jobs-store-enqueue-gate.test.ts +7 -11
  306. package/src/memory/__tests__/memory-retrospective-enqueue.test.ts +37 -7
  307. package/src/memory/__tests__/memory-retrospective-job.test.ts +229 -401
  308. package/src/memory/__tests__/onboarding-events-store.test.ts +7 -7
  309. package/src/memory/auth-fallback-events-store.ts +2 -2
  310. package/src/memory/auto-analysis-enqueue.ts +3 -5
  311. package/src/memory/bookmark-crud.ts +1 -2
  312. package/src/memory/canonical-guardian-store.ts +39 -1
  313. package/src/memory/conversation-crud.ts +9 -4
  314. package/src/memory/conversation-key-store.ts +17 -2
  315. package/src/memory/conversation-title-service.ts +64 -7
  316. package/src/memory/db-async-query.ts +20 -2
  317. package/src/memory/db-connection.ts +49 -5
  318. package/src/memory/db-init.ts +17 -17
  319. package/src/memory/embedding-backend.ts +38 -1
  320. package/src/memory/embedding-billing-breaker.ts +96 -0
  321. package/src/memory/jobs-store.ts +25 -13
  322. package/src/memory/jobs-worker.ts +54 -1
  323. package/src/memory/lifecycle-events-store.ts +2 -2
  324. package/src/memory/memory-retrospective-constants.ts +4 -4
  325. package/src/memory/memory-retrospective-enqueue.ts +31 -6
  326. package/src/memory/memory-retrospective-job.ts +28 -227
  327. package/src/memory/migrations/129-contact-channels-access-fields.ts +18 -9
  328. package/src/memory/migrations/131-drop-legacy-member-guardian-tables.ts +14 -2
  329. package/src/memory/migrations/289-contact-channels-unique-ext-user.ts +10 -0
  330. package/src/memory/migrations/291-contact-channels-renormalize-addresses.ts +72 -0
  331. package/src/memory/migrations/292-schedule-default-no-reuse-conversation.test.ts +67 -0
  332. package/src/memory/migrations/292-schedule-default-no-reuse-conversation.ts +25 -0
  333. package/src/memory/migrations/293-workflow-journal-leaf-tokens.ts +32 -0
  334. package/src/memory/migrations/294-drop-external-user-id.ts +31 -0
  335. package/src/memory/migrations/295-drop-approval-prompt-ts-tracker.ts +20 -0
  336. package/src/memory/migrations/296-rewrite-balanced-economy-profile-pins.test.ts +110 -0
  337. package/src/memory/migrations/296-rewrite-balanced-economy-profile-pins.ts +68 -0
  338. package/src/memory/migrations/__tests__/131-drop-legacy-member-guardian-tables.test.ts +154 -0
  339. package/src/memory/migrations/__tests__/289-contact-channels-unique-ext-user.test.ts +31 -0
  340. package/src/memory/migrations/__tests__/291-contact-channels-renormalize-addresses.test.ts +341 -0
  341. package/src/memory/migrations/__tests__/run-migrations.test.ts +52 -0
  342. package/src/memory/migrations/index.ts +6 -0
  343. package/src/memory/migrations/run-migrations.ts +41 -0
  344. package/src/memory/migrations/validate-migration-state.ts +1 -1
  345. package/src/memory/onboarding-events-store.ts +3 -3
  346. package/src/memory/schema/contacts.ts +0 -5
  347. package/src/memory/skill-loaded-events-store.test.ts +7 -15
  348. package/src/memory/skill-loaded-events-store.ts +2 -2
  349. package/src/memory/tool-executed-events-store.test.ts +7 -7
  350. package/src/memory/turn-trace-store.test.ts +736 -0
  351. package/src/memory/turn-trace-store.ts +364 -0
  352. package/src/memory/v2/__tests__/consolidation-job.test.ts +8 -0
  353. package/src/memory/v2/__tests__/skill-content.test.ts +30 -0
  354. package/src/memory/v2/consolidation-job.ts +2 -2
  355. package/src/memory/v2/skill-content.ts +25 -7
  356. package/src/memory/v2/skill-store.ts +7 -1
  357. package/src/memory/v3-eval/__tests__/eval-packets.test.ts +248 -0
  358. package/src/memory/v3-eval/eval-packets.ts +546 -0
  359. package/src/messaging/providers/slack/adapter.ts +1 -1
  360. package/src/messaging/providers/slack/api.ts +31 -0
  361. package/src/messaging/providers/slack/send.test.ts +114 -2
  362. package/src/messaging/providers/slack/send.ts +30 -7
  363. package/src/messaging/providers/slack/withdraw.test.ts +200 -0
  364. package/src/messaging/providers/slack/withdraw.ts +161 -0
  365. package/src/notifications/AGENTS.md +2 -0
  366. package/src/notifications/access-request-copy.ts +72 -59
  367. package/src/notifications/adapters/shared.ts +29 -0
  368. package/src/notifications/adapters/slack.ts +58 -103
  369. package/src/notifications/adapters/telegram.ts +2 -20
  370. package/src/notifications/approval-card-data.ts +333 -0
  371. package/src/notifications/broadcaster.ts +16 -3
  372. package/src/notifications/canonical-delivery-recorder.ts +139 -0
  373. package/src/notifications/copy-composer.ts +3 -3
  374. package/src/notifications/decision-engine.ts +4 -2
  375. package/src/notifications/destination-resolver.ts +4 -6
  376. package/src/notifications/guardian-question-mode.ts +10 -0
  377. package/src/notifications/home-feed-side-effect.ts +7 -16
  378. package/src/notifications/notification-utils.ts +19 -20
  379. package/src/notifications/signal.ts +79 -43
  380. package/src/notifications/types.ts +98 -121
  381. package/src/oauth/AGENTS.md +5 -24
  382. package/src/permissions/checker.test.ts +51 -0
  383. package/src/permissions/checker.ts +185 -26
  384. package/src/permissions/ipc-risk-types.ts +24 -0
  385. package/src/permissions/question-prompter.test.ts +27 -0
  386. package/src/permissions/question-prompter.ts +4 -0
  387. package/src/permissions/secret-prompter.ts +15 -1
  388. package/src/platform/client.test.ts +119 -0
  389. package/src/platform/client.ts +66 -0
  390. package/src/platform/consent-cache.test.ts +267 -0
  391. package/src/platform/consent-cache.ts +174 -0
  392. package/src/plugin-api/constants.ts +1 -1
  393. package/src/plugin-api/index.ts +33 -1
  394. package/src/plugin-api/model-profiles.ts +33 -0
  395. package/src/plugin-api/types.ts +50 -2
  396. package/src/plugins/defaults/advisor/__tests__/advisor-gate.test.ts +56 -0
  397. package/src/plugins/defaults/advisor/__tests__/advisor-state-store.test.ts +43 -0
  398. package/src/plugins/defaults/advisor/__tests__/agent-loop-integration.test.ts +137 -0
  399. package/src/plugins/defaults/advisor/__tests__/consult.test.ts +153 -0
  400. package/src/plugins/defaults/advisor/__tests__/hooks.test.ts +138 -0
  401. package/src/plugins/defaults/advisor/__tests__/transcript.test.ts +147 -0
  402. package/src/plugins/defaults/advisor/advisor-gate.ts +29 -0
  403. package/src/plugins/defaults/advisor/advisor-state-store.ts +94 -0
  404. package/src/plugins/defaults/advisor/config.ts +21 -0
  405. package/src/plugins/defaults/advisor/consult.ts +93 -0
  406. package/src/plugins/defaults/advisor/hooks/post-model-call.ts +34 -0
  407. package/src/plugins/defaults/advisor/hooks/pre-model-call.ts +30 -0
  408. package/src/plugins/defaults/advisor/hooks/user-prompt-submit.ts +19 -0
  409. package/src/plugins/defaults/advisor/package.json +14 -0
  410. package/src/plugins/defaults/advisor/steering.ts +67 -0
  411. package/src/plugins/defaults/advisor/tools/advisor.ts +65 -0
  412. package/src/plugins/defaults/advisor/transcript.ts +76 -0
  413. package/src/plugins/defaults/compaction/window-manager.ts +18 -0
  414. package/src/plugins/defaults/index.ts +60 -0
  415. package/src/plugins/defaults/memory-retrieval/hooks/post-compact.ts +22 -9
  416. package/src/plugins/defaults/memory-retrieval/hooks/user-prompt-submit.ts +2 -2
  417. package/src/plugins/defaults/memory-retrieval/injectors.ts +4 -4
  418. package/src/plugins/defaults/memory-retrieval/tail-reinjection-strip.ts +64 -0
  419. package/src/plugins/defaults/memory-retrieval/unified-turn-context.ts +29 -21
  420. package/src/plugins/defaults/memory-v3-shadow/__tests__/carry-integration.test.ts +1 -0
  421. package/src/plugins/defaults/memory-v3-shadow/__tests__/injection.test.ts +1 -0
  422. package/src/plugins/defaults/memory-v3-shadow/__tests__/maintain-job.test.ts +129 -9
  423. package/src/plugins/defaults/memory-v3-shadow/__tests__/orchestrate.test.ts +31 -4
  424. package/src/plugins/defaults/memory-v3-shadow/__tests__/selection-log-store.test.ts +77 -2
  425. package/src/plugins/defaults/memory-v3-shadow/__tests__/shadow-plugin.test.ts +1 -0
  426. package/src/plugins/defaults/memory-v3-shadow/injector.ts +7 -10
  427. package/src/plugins/defaults/memory-v3-shadow/maintain-job.ts +144 -11
  428. package/src/plugins/defaults/memory-v3-shadow/orchestrate.ts +32 -20
  429. package/src/plugins/defaults/memory-v3-shadow/selection-log-store.ts +56 -3
  430. package/src/plugins/defaults/memory-v3-shadow/shadow-plugin.ts +23 -2
  431. package/src/plugins/defaults/surface-completion-nudge/hooks/post-model-call.ts +276 -0
  432. package/src/plugins/defaults/surface-completion-nudge/hooks/stop.ts +22 -0
  433. package/src/plugins/defaults/surface-completion-nudge/nudge-state-store.ts +46 -0
  434. package/src/plugins/defaults/surface-completion-nudge/package.json +14 -0
  435. package/src/plugins/defaults/task-progress-nudge/hooks/post-tool-use.ts +3 -13
  436. package/src/plugins/defaults/title-generate/hooks/stop.ts +56 -21
  437. package/src/prompts/persona-resolver.ts +14 -4
  438. package/src/prompts/templates/system-sections.ts +7 -2
  439. package/src/providers/__tests__/count-tokens-forwarding.test.ts +98 -0
  440. package/src/providers/__tests__/provider-env-vars.test.ts +6 -0
  441. package/src/providers/__tests__/provider-secret-catalog.test.ts +1 -0
  442. package/src/providers/__tests__/retry-callsite.test.ts +176 -0
  443. package/src/providers/anthropic/client.ts +230 -175
  444. package/src/providers/atlascloud/client.ts +85 -0
  445. package/src/providers/call-site-routing.ts +10 -0
  446. package/src/providers/fetch-provider-catalog.ts +85 -0
  447. package/src/providers/gemini/client.ts +43 -0
  448. package/src/providers/inference/adapter-factory.ts +3 -0
  449. package/src/providers/model-catalog.ts +58 -0
  450. package/src/providers/openai/__tests__/chat-completions-provider-reasoning.test.ts +33 -0
  451. package/src/providers/openai/chat-completions-provider.ts +7 -0
  452. package/src/providers/openai/responses-provider.ts +10 -0
  453. package/src/providers/provider-send-message.ts +11 -3
  454. package/src/providers/ratelimit.ts +9 -0
  455. package/src/providers/retry.ts +62 -12
  456. package/src/providers/search-provider-catalog.ts +10 -0
  457. package/src/providers/types.ts +16 -0
  458. package/src/providers/usage-tracking.ts +7 -0
  459. package/src/providers/weak-open-model.ts +22 -0
  460. package/src/runtime/AGENTS.md +0 -1
  461. package/src/runtime/__tests__/agent-wake.test.ts +227 -0
  462. package/src/runtime/__tests__/client-health.test.ts +44 -0
  463. package/src/runtime/access-request-helper.ts +21 -53
  464. package/src/runtime/actor-trust-resolver.ts +59 -63
  465. package/src/runtime/agent-wake.ts +71 -0
  466. package/src/runtime/assistant-event-hub.ts +18 -4
  467. package/src/runtime/auth/__tests__/route-policy.test.ts +12 -0
  468. package/src/runtime/auth/require-bound-guardian.ts +1 -4
  469. package/src/runtime/btw-sidechain.ts +3 -6
  470. package/src/runtime/capabilities.test.ts +120 -0
  471. package/src/runtime/capabilities.ts +197 -0
  472. package/src/runtime/channel-approval-types.ts +22 -45
  473. package/src/runtime/channel-invite-transports/telegram.ts +4 -4
  474. package/src/runtime/channel-retry-sweep.ts +1 -0
  475. package/src/runtime/channel-verification-service.ts +3 -3
  476. package/src/runtime/client-health.ts +26 -0
  477. package/src/runtime/confirmation-request-guardian-bridge.ts +38 -29
  478. package/src/runtime/effective-capabilities.test.ts +128 -0
  479. package/src/runtime/effective-capabilities.ts +84 -0
  480. package/src/runtime/guardian-reply-router.ts +106 -21
  481. package/src/runtime/invite-redemption-service.ts +9 -25
  482. package/src/runtime/migrations/__tests__/vbundle-builder-fd-leak.test.ts +126 -0
  483. package/src/runtime/migrations/vbundle-builder.ts +49 -20
  484. package/src/runtime/pending-interactions.ts +35 -0
  485. package/src/runtime/routes/__tests__/client-routes.test.ts +13 -0
  486. package/src/runtime/routes/__tests__/conversation-management-routes.test.ts +67 -0
  487. package/src/runtime/routes/__tests__/plugins-routes.test.ts +383 -1
  488. package/src/runtime/routes/app-routes.ts +1 -1
  489. package/src/runtime/routes/approval-routes.ts +40 -9
  490. package/src/runtime/routes/approval-strategies/guardian-callback-strategy.ts +2 -2
  491. package/src/runtime/routes/assets/vellum-design-system.css +1959 -0
  492. package/src/runtime/routes/browser-tabs-routes.ts +9 -0
  493. package/src/runtime/routes/btw-routes.ts +1 -27
  494. package/src/runtime/routes/canonical-guardian-expiry-sweep.ts +17 -8
  495. package/src/runtime/routes/client-routes.ts +10 -0
  496. package/src/runtime/routes/contact-routes.ts +31 -8
  497. package/src/runtime/routes/conversation-compaction-routes.ts +1 -1
  498. package/src/runtime/routes/conversation-management-routes.ts +80 -1
  499. package/src/runtime/routes/conversation-query-routes.ts +68 -22
  500. package/src/runtime/routes/conversation-routes.ts +39 -14
  501. package/src/runtime/routes/credential-routes.ts +40 -16
  502. package/src/runtime/routes/empty-state-greeting-cache.ts +1 -2
  503. package/src/runtime/routes/events-routes.ts +1 -3
  504. package/src/runtime/routes/guardian-approval-interception.ts +14 -73
  505. package/src/runtime/routes/guardian-approval-prompt.ts +22 -4
  506. package/src/runtime/routes/home-feed-routes.ts +8 -3
  507. package/src/runtime/routes/identity-routes.ts +1 -296
  508. package/src/runtime/routes/inbound-message-handler.ts +214 -228
  509. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +89 -7
  510. package/src/runtime/routes/inbound-stages/admission-policy.test.ts +154 -0
  511. package/src/runtime/routes/inbound-stages/admission-policy.ts +140 -0
  512. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +3 -3
  513. package/src/runtime/routes/inbound-stages/background-dispatch.ts +11 -6
  514. package/src/runtime/routes/inbound-stages/escalation-intercept.ts +1 -2
  515. package/src/runtime/routes/inbound-stages/guardian-activation-intercept.ts +1 -2
  516. package/src/runtime/routes/inbound-stages/guardian-reply-intercept.test.ts +7 -7
  517. package/src/runtime/routes/inbound-stages/guardian-reply-intercept.ts +47 -28
  518. package/src/runtime/routes/inbound-stages/reaction-intercept.ts +358 -0
  519. package/src/runtime/routes/index.ts +2 -0
  520. package/src/runtime/routes/integrations/slack/__tests__/channel.test.ts +8 -0
  521. package/src/runtime/routes/integrations/slack/channel.ts +36 -0
  522. package/src/runtime/routes/internal-telemetry-routes.ts +1 -1
  523. package/src/runtime/routes/mcp-auth-routes.ts +233 -41
  524. package/src/runtime/routes/memory-eval-routes.ts +87 -0
  525. package/src/runtime/routes/notification-routes.ts +122 -133
  526. package/src/runtime/routes/platform-routes.ts +2 -2
  527. package/src/runtime/routes/plugins-routes.ts +366 -11
  528. package/src/runtime/routes/schedule-routes.ts +0 -22
  529. package/src/runtime/routes/secret-routes.ts +15 -0
  530. package/src/runtime/routes/surface-action-routes.ts +2 -1
  531. package/src/runtime/routes/tool-call-question-enrichment.test.ts +146 -0
  532. package/src/runtime/routes/tool-call-question-enrichment.ts +66 -0
  533. package/src/runtime/routes/workflow-routes.test.ts +229 -44
  534. package/src/runtime/routes/workflow-routes.ts +131 -29
  535. package/src/runtime/routes/workspace-greetings.ts +55 -0
  536. package/src/runtime/sync/resource-sync-events.ts +1 -11
  537. package/src/runtime/tool-grant-request-helper.ts +18 -16
  538. package/src/runtime/trust-context-resolver.ts +8 -5
  539. package/src/schedule/inference-profile.ts +2 -14
  540. package/src/schedule/schedule-store.ts +1 -1
  541. package/src/schedule/scheduler-types.ts +5 -1
  542. package/src/security/__tests__/provider-key-env-fallback.test.ts +6 -0
  543. package/src/security/secret-patterns.ts +3 -0
  544. package/src/subagent/manager.ts +17 -4
  545. package/src/subagent/types.ts +6 -0
  546. package/src/telemetry/trace-collection-policy.test.ts +28 -0
  547. package/src/telemetry/trace-collection-policy.ts +30 -0
  548. package/src/telemetry/types.ts +89 -0
  549. package/src/telemetry/usage-telemetry-reporter.test.ts +586 -36
  550. package/src/telemetry/usage-telemetry-reporter.ts +148 -41
  551. package/src/tools/AGENTS.md +3 -3
  552. package/src/tools/browser/__tests__/browser-execution-acquire.test.ts +31 -0
  553. package/src/tools/browser/browser-execution.ts +30 -19
  554. package/src/tools/document/document-tool.ts +30 -6
  555. package/src/tools/executor.ts +5 -3
  556. package/src/tools/host-terminal/host-shell.ts +5 -4
  557. package/src/tools/memory/register.ts +2 -2
  558. package/src/tools/network/__tests__/web-fetch-firecrawl.test.ts +360 -0
  559. package/src/tools/network/__tests__/web-search.test.ts +143 -0
  560. package/src/tools/network/web-fetch.ts +372 -1
  561. package/src/tools/network/web-search-error.ts +1 -1
  562. package/src/tools/network/web-search.ts +213 -10
  563. package/src/tools/permission-checker.ts +4 -3
  564. package/src/tools/registry.ts +20 -0
  565. package/src/tools/schedule/create.ts +7 -12
  566. package/src/tools/schedule/update.ts +4 -11
  567. package/src/tools/shared/filesystem/path-policy.ts +39 -13
  568. package/src/tools/side-effects.ts +2 -17
  569. package/src/tools/skills/execute.ts +99 -2
  570. package/src/tools/skills/load.ts +43 -2
  571. package/src/tools/subagent/spawn.ts +64 -15
  572. package/src/tools/terminal/shell.ts +10 -4
  573. package/src/tools/tool-approval-handler.ts +18 -13
  574. package/src/tools/tool-manifest.ts +0 -2
  575. package/src/tools/types.ts +10 -0
  576. package/src/tools/ui-surface/definitions.ts +64 -3
  577. package/src/tools/verification-control-plane-policy.ts +3 -1
  578. package/src/tools/workflows/run-workflow.test.ts +8 -18
  579. package/src/tools/workflows/run-workflow.ts +1 -0
  580. package/src/util/disk-usage.ts +78 -23
  581. package/src/util/logs-db-path.ts +22 -0
  582. package/src/util/platform.ts +10 -3
  583. package/src/watcher/telemetry.ts +2 -2
  584. package/src/workflows/capabilities.ts +2 -3
  585. package/src/workflows/engine.test.ts +175 -1
  586. package/src/workflows/engine.ts +82 -0
  587. package/src/workflows/journal-store.test.ts +70 -0
  588. package/src/workflows/journal-store.ts +18 -3
  589. package/src/workflows/run-manager.test.ts +171 -28
  590. package/src/workflows/run-manager.ts +66 -24
  591. package/src/workspace/migrations/105-enable-memory-v3-live-for-new-workspaces.ts +63 -0
  592. package/src/workspace/migrations/106-drop-collect-usage-data.ts +47 -0
  593. package/src/workspace/migrations/107-drop-send-diagnostics.ts +47 -0
  594. package/src/workspace/migrations/108-drop-balanced-economy-profile.ts +129 -0
  595. package/src/workspace/migrations/registry.ts +8 -0
  596. package/src/__tests__/app-control-no-global-cgevent.test.ts +0 -98
  597. package/src/__tests__/credential-security-e2e.test.ts +0 -362
  598. package/src/__tests__/credential-vault-unit.test.ts +0 -1528
  599. package/src/__tests__/credential-vault.test.ts +0 -1706
  600. package/src/__tests__/identity-intro-cache.test.ts +0 -315
  601. package/src/__tests__/secret-onetime-send.test.ts +0 -182
  602. package/src/cli/commands/__tests__/task.test.ts +0 -914
  603. package/src/cli/commands/task.ts +0 -771
  604. package/src/config/bundled-skills/personal-page/SKILL.md +0 -57
  605. package/src/config/bundled-skills/personal-page/TOOLS.json +0 -27
  606. package/src/config/bundled-skills/personal-page/tools/app-refresh.ts +0 -17
  607. package/src/config/preloaded-apps/personal-page/src/components/About.tsx +0 -22
  608. package/src/config/preloaded-apps/personal-page/src/components/App.tsx +0 -16
  609. package/src/config/preloaded-apps/personal-page/src/components/Features.tsx +0 -77
  610. package/src/config/preloaded-apps/personal-page/src/components/Hero.tsx +0 -57
  611. package/src/config/preloaded-apps/personal-page/src/components/Pending.tsx +0 -28
  612. package/src/config/preloaded-apps/personal-page/src/components/animations.tsx +0 -234
  613. package/src/config/preloaded-apps/personal-page/src/components/icons.tsx +0 -48
  614. package/src/config/preloaded-apps/personal-page/src/components/media.ts +0 -16
  615. package/src/config/preloaded-apps/personal-page/src/index.html +0 -20
  616. package/src/config/preloaded-apps/personal-page/src/main.tsx +0 -7
  617. package/src/config/preloaded-apps/personal-page/src/profile-data.ts +0 -82
  618. package/src/config/preloaded-apps/personal-page/src/styles.css +0 -759
  619. package/src/memory/__tests__/preloaded-apps.test.ts +0 -85
  620. package/src/memory/preloaded-apps.ts +0 -116
  621. package/src/notifications/tool-approval-copy.ts +0 -142
  622. package/src/runtime/routes/approval-prompt-ts-tracker.ts +0 -78
  623. package/src/runtime/routes/identity-intro-cache.ts +0 -172
  624. package/src/tools/credentials/vault.ts +0 -712
package/openapi.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  openapi: 3.1.0
4
4
  info:
5
5
  title: Vellum Assistant API
6
- version: 0.9.0
6
+ version: 0.10.0
7
7
  description: Auto-generated OpenAPI specification for the Vellum Assistant runtime HTTP server.
8
8
  servers:
9
9
  - url: http://127.0.0.1:7821
@@ -3951,6 +3951,14 @@ paths:
3951
3951
  type: boolean
3952
3952
  account:
3953
3953
  type: string
3954
+ admissionPolicy:
3955
+ type: string
3956
+ enum:
3957
+ - no_one
3958
+ - guardian_only
3959
+ - trusted_contacts
3960
+ - any_contact
3961
+ - strangers
3954
3962
  emailSubject:
3955
3963
  type: string
3956
3964
  emailRecipient:
@@ -6144,6 +6152,12 @@ paths:
6144
6152
  description: Only standard conversations are created by this endpoint
6145
6153
  type: string
6146
6154
  const: standard
6155
+ title:
6156
+ description:
6157
+ Explicit title for the conversation. When provided on creation, it is persisted as a user-set title (never
6158
+ overwritten by the auto-titler). Used by flows that mint a conversation up-front and don't want an
6159
+ auto-generated title.
6160
+ type: string
6147
6161
  responses:
6148
6162
  "200":
6149
6163
  description: Successful response
@@ -7041,6 +7055,71 @@ paths:
7041
7055
  responses:
7042
7056
  "202":
7043
7057
  description: Successful response
7058
+ /v1/conversations/{id}/slash:
7059
+ post:
7060
+ operationId: conversations_by_id_slash_post
7061
+ summary: Resolve a local meta slash command
7062
+ description:
7063
+ "Run a local meta slash command (/clean, /status, /commands, /models) without starting a turn: no messages
7064
+ are persisted and no turn events are emitted. /clean also strips runtime injections from the history. Returns
7065
+ the text to render and, for /clean, the post-strip context usage."
7066
+ tags:
7067
+ - conversations
7068
+ parameters:
7069
+ - name: id
7070
+ in: path
7071
+ required: true
7072
+ schema:
7073
+ type: string
7074
+ requestBody:
7075
+ required: true
7076
+ content:
7077
+ application/json:
7078
+ schema:
7079
+ type: object
7080
+ properties:
7081
+ command:
7082
+ type: string
7083
+ description: The slash command text, e.g. `/clean` or `/status`.
7084
+ required:
7085
+ - command
7086
+ responses:
7087
+ "200":
7088
+ description: Successful response
7089
+ content:
7090
+ application/json:
7091
+ schema:
7092
+ type: object
7093
+ properties:
7094
+ kind:
7095
+ type: string
7096
+ enum:
7097
+ - clean
7098
+ - info
7099
+ text:
7100
+ type: string
7101
+ contextUsage:
7102
+ type: object
7103
+ properties:
7104
+ tokens:
7105
+ type: number
7106
+ maxTokens:
7107
+ anyOf:
7108
+ - type: number
7109
+ - type: "null"
7110
+ fillRatio:
7111
+ anyOf:
7112
+ - type: number
7113
+ - type: "null"
7114
+ required:
7115
+ - tokens
7116
+ - maxTokens
7117
+ - fillRatio
7118
+ additionalProperties: false
7119
+ required:
7120
+ - kind
7121
+ - text
7122
+ additionalProperties: false
7044
7123
  /v1/conversations/{id}/surface:
7045
7124
  post:
7046
7125
  operationId: conversations_by_id_surface_post
@@ -12043,6 +12122,19 @@ paths:
12043
12122
  propertyNames:
12044
12123
  type: string
12045
12124
  additionalProperties: {}
12125
+ sourceType:
12126
+ type: string
12127
+ enum:
12128
+ - heartbeat
12129
+ - memory_consolidation
12130
+ - schedule
12131
+ - auto_analysis
12132
+ - user
12133
+ - other
12134
+ sourceKey:
12135
+ type: string
12136
+ sourceLabel:
12137
+ type: string
12046
12138
  createdAt:
12047
12139
  type: string
12048
12140
  required:
@@ -12223,6 +12315,19 @@ paths:
12223
12315
  propertyNames:
12224
12316
  type: string
12225
12317
  additionalProperties: {}
12318
+ sourceType:
12319
+ type: string
12320
+ enum:
12321
+ - heartbeat
12322
+ - memory_consolidation
12323
+ - schedule
12324
+ - auto_analysis
12325
+ - user
12326
+ - other
12327
+ sourceKey:
12328
+ type: string
12329
+ sourceLabel:
12330
+ type: string
12226
12331
  createdAt:
12227
12332
  type: string
12228
12333
  required:
@@ -12435,6 +12540,19 @@ paths:
12435
12540
  propertyNames:
12436
12541
  type: string
12437
12542
  additionalProperties: {}
12543
+ sourceType:
12544
+ type: string
12545
+ enum:
12546
+ - heartbeat
12547
+ - memory_consolidation
12548
+ - schedule
12549
+ - auto_analysis
12550
+ - user
12551
+ - other
12552
+ sourceKey:
12553
+ type: string
12554
+ sourceLabel:
12555
+ type: string
12438
12556
  createdAt:
12439
12557
  type: string
12440
12558
  required:
@@ -13030,60 +13148,6 @@ paths:
13030
13148
  - home
13031
13149
  - version
13032
13150
  additionalProperties: false
13033
- /v1/identity/intro:
13034
- get:
13035
- operationId: identity_intro_get
13036
- summary: Get identity greetings
13037
- description:
13038
- Returns greetings sourced from SOUL.md, the generated cache, or generic fallbacks while background
13039
- generation refreshes the cache.
13040
- tags:
13041
- - identity
13042
- parameters:
13043
- - name: localHour
13044
- in: query
13045
- required: false
13046
- schema:
13047
- type: integer
13048
- minimum: 0
13049
- maximum: 23
13050
- description: Optional client-local hour of day used only when refreshing generated greetings.
13051
- - name: localMinute
13052
- in: query
13053
- required: false
13054
- schema:
13055
- type: integer
13056
- minimum: 0
13057
- maximum: 59
13058
- description: Optional client-local minute used only when refreshing generated greetings.
13059
- responses:
13060
- "200":
13061
- description: Successful response
13062
- content:
13063
- application/json:
13064
- schema:
13065
- type: object
13066
- properties:
13067
- greetings:
13068
- type: array
13069
- items:
13070
- type: string
13071
- text:
13072
- type: string
13073
- source:
13074
- type: string
13075
- enum:
13076
- - workspace
13077
- - cache
13078
- - fallback
13079
- refreshing:
13080
- type: boolean
13081
- required:
13082
- - greetings
13083
- - text
13084
- - source
13085
- - refreshing
13086
- additionalProperties: false
13087
13151
  /v1/image-generation/generate:
13088
13152
  post:
13089
13153
  operationId: imagegeneration_generate_post
@@ -13230,7 +13294,7 @@ paths:
13230
13294
  type: string
13231
13295
  description:
13232
13296
  "Filter by provider. One of: anthropic, openai, gemini, ollama, fireworks, openrouter, openai-compatible,
13233
- minimax"
13297
+ minimax, atlascloud"
13234
13298
  responses:
13235
13299
  "200":
13236
13300
  description: Successful response
@@ -13781,6 +13845,11 @@ paths:
13781
13845
  type: string
13782
13846
  botUsername:
13783
13847
  type: string
13848
+ threadMode:
13849
+ type: string
13850
+ enum:
13851
+ - mention_only
13852
+ - mention_then_thread
13784
13853
  error:
13785
13854
  type: string
13786
13855
  warning:
@@ -13791,6 +13860,7 @@ paths:
13791
13860
  - hasAppToken
13792
13861
  - hasUserToken
13793
13862
  - connected
13863
+ - threadMode
13794
13864
  additionalProperties: false
13795
13865
  get:
13796
13866
  operationId: integrations_slack_channel_config_get
@@ -13826,6 +13896,75 @@ paths:
13826
13896
  type: string
13827
13897
  botUsername:
13828
13898
  type: string
13899
+ threadMode:
13900
+ type: string
13901
+ enum:
13902
+ - mention_only
13903
+ - mention_then_thread
13904
+ error:
13905
+ type: string
13906
+ warning:
13907
+ type: string
13908
+ required:
13909
+ - success
13910
+ - hasBotToken
13911
+ - hasAppToken
13912
+ - hasUserToken
13913
+ - connected
13914
+ - threadMode
13915
+ additionalProperties: false
13916
+ patch:
13917
+ operationId: integrations_slack_channel_config_patch
13918
+ summary: Update Slack channel settings
13919
+ description: Update Slack channel behavior settings (e.g. thread mode).
13920
+ tags:
13921
+ - integrations
13922
+ requestBody:
13923
+ required: true
13924
+ content:
13925
+ application/json:
13926
+ schema:
13927
+ type: object
13928
+ properties:
13929
+ threadMode:
13930
+ type: string
13931
+ enum:
13932
+ - mention_only
13933
+ - mention_then_thread
13934
+ description: Controls whether the bot follows threads after an initial @mention
13935
+ responses:
13936
+ "200":
13937
+ description: Successful response
13938
+ content:
13939
+ application/json:
13940
+ schema:
13941
+ type: object
13942
+ properties:
13943
+ success:
13944
+ type: boolean
13945
+ hasBotToken:
13946
+ type: boolean
13947
+ hasAppToken:
13948
+ type: boolean
13949
+ hasUserToken:
13950
+ type: boolean
13951
+ connected:
13952
+ type: boolean
13953
+ teamId:
13954
+ type: string
13955
+ teamName:
13956
+ type: string
13957
+ teamUrl:
13958
+ type: string
13959
+ botUserId:
13960
+ type: string
13961
+ botUsername:
13962
+ type: string
13963
+ threadMode:
13964
+ type: string
13965
+ enum:
13966
+ - mention_only
13967
+ - mention_then_thread
13829
13968
  error:
13830
13969
  type: string
13831
13970
  warning:
@@ -13836,6 +13975,7 @@ paths:
13836
13975
  - hasAppToken
13837
13976
  - hasUserToken
13838
13977
  - connected
13978
+ - threadMode
13839
13979
  additionalProperties: false
13840
13980
  post:
13841
13981
  operationId: integrations_slack_channel_config_post
@@ -13887,6 +14027,11 @@ paths:
13887
14027
  type: string
13888
14028
  botUsername:
13889
14029
  type: string
14030
+ threadMode:
14031
+ type: string
14032
+ enum:
14033
+ - mention_only
14034
+ - mention_then_thread
13890
14035
  error:
13891
14036
  type: string
13892
14037
  warning:
@@ -13897,6 +14042,7 @@ paths:
13897
14042
  - hasAppToken
13898
14043
  - hasUserToken
13899
14044
  - connected
14045
+ - threadMode
13900
14046
  additionalProperties: false
13901
14047
  /v1/integrations/telegram/commands:
13902
14048
  post:
@@ -14511,6 +14657,54 @@ paths:
14511
14657
  responses:
14512
14658
  "200":
14513
14659
  description: Successful response
14660
+ content:
14661
+ application/json:
14662
+ schema:
14663
+ type: object
14664
+ properties:
14665
+ servers:
14666
+ type: array
14667
+ items:
14668
+ type: object
14669
+ properties:
14670
+ id:
14671
+ type: string
14672
+ status:
14673
+ type: string
14674
+ transport:
14675
+ type: object
14676
+ properties:
14677
+ type:
14678
+ type: string
14679
+ enum:
14680
+ - stdio
14681
+ - sse
14682
+ - streamable-http
14683
+ required:
14684
+ - type
14685
+ additionalProperties: {}
14686
+ enabled:
14687
+ type: boolean
14688
+ defaultRiskLevel:
14689
+ type: string
14690
+ allowedTools:
14691
+ type: array
14692
+ items:
14693
+ type: string
14694
+ blockedTools:
14695
+ type: array
14696
+ items:
14697
+ type: string
14698
+ required:
14699
+ - id
14700
+ - status
14701
+ - transport
14702
+ - enabled
14703
+ - defaultRiskLevel
14704
+ additionalProperties: false
14705
+ required:
14706
+ - servers
14707
+ additionalProperties: false
14514
14708
  /v1/internal/mcp/reload:
14515
14709
  post:
14516
14710
  operationId: internal_mcp_reload_post
@@ -14542,38 +14736,136 @@ paths:
14542
14736
  responses:
14543
14737
  "200":
14544
14738
  description: Successful response
14545
- /v1/internal/oauth/callback:
14546
- post:
14547
- operationId: internal_oauth_callback_post
14548
- summary: Internal OAuth callback
14739
+ /v1/internal/mcp/tools-summary:
14740
+ get:
14741
+ operationId: internal_mcp_toolssummary_get
14742
+ summary: Per-server MCP tool counts and token estimates
14549
14743
  description:
14550
- Receives forwarded OAuth callback results (code or error) from the gateway and resolves the pending
14551
- callback in the runtime.
14744
+ Returns registered tool counts, individual tool details, and estimated token overhead for each connected
14745
+ MCP server.
14552
14746
  tags:
14553
14747
  - internal
14554
- requestBody:
14555
- required: true
14556
- content:
14557
- application/json:
14558
- schema:
14559
- type: object
14560
- properties:
14561
- state:
14562
- type: string
14563
- code:
14564
- type: string
14565
- error:
14566
- type: string
14567
- required:
14568
- - state
14569
14748
  responses:
14570
14749
  "200":
14571
14750
  description: Successful response
14572
- /v1/internal/oauth/connect/start:
14751
+ content:
14752
+ application/json:
14753
+ schema:
14754
+ type: object
14755
+ properties:
14756
+ servers:
14757
+ type: array
14758
+ items:
14759
+ type: object
14760
+ properties:
14761
+ serverId:
14762
+ type: string
14763
+ toolCount:
14764
+ type: number
14765
+ estimatedTokens:
14766
+ type: number
14767
+ tools:
14768
+ type: array
14769
+ items:
14770
+ type: object
14771
+ properties:
14772
+ name:
14773
+ type: string
14774
+ description:
14775
+ type: string
14776
+ estimatedTokens:
14777
+ type: number
14778
+ required:
14779
+ - name
14780
+ - description
14781
+ - estimatedTokens
14782
+ additionalProperties: false
14783
+ required:
14784
+ - serverId
14785
+ - toolCount
14786
+ - estimatedTokens
14787
+ - tools
14788
+ additionalProperties: false
14789
+ totalToolCount:
14790
+ type: number
14791
+ totalEstimatedTokens:
14792
+ type: number
14793
+ required:
14794
+ - servers
14795
+ - totalToolCount
14796
+ - totalEstimatedTokens
14797
+ additionalProperties: false
14798
+ /v1/internal/mcp/update:
14573
14799
  post:
14574
- operationId: internal_oauth_connect_start_post
14575
- summary: Start daemon-owned OAuth connect flow
14576
- description: Starts an OAuth connect flow in the daemon and returns the authorization URL for the CLI to open in the browser.
14800
+ operationId: internal_mcp_update_post
14801
+ summary: Update an MCP server configuration
14802
+ description: Updates fields on an existing MCP server config entry and triggers a reload.
14803
+ tags:
14804
+ - internal
14805
+ requestBody:
14806
+ required: true
14807
+ content:
14808
+ application/json:
14809
+ schema:
14810
+ type: object
14811
+ properties:
14812
+ name:
14813
+ type: string
14814
+ enabled:
14815
+ type: boolean
14816
+ defaultRiskLevel:
14817
+ type: string
14818
+ maxTools:
14819
+ type: number
14820
+ allowedTools:
14821
+ anyOf:
14822
+ - type: array
14823
+ items:
14824
+ type: string
14825
+ - type: "null"
14826
+ blockedTools:
14827
+ anyOf:
14828
+ - type: array
14829
+ items:
14830
+ type: string
14831
+ - type: "null"
14832
+ required:
14833
+ - name
14834
+ responses:
14835
+ "200":
14836
+ description: Successful response
14837
+ /v1/internal/oauth/callback:
14838
+ post:
14839
+ operationId: internal_oauth_callback_post
14840
+ summary: Internal OAuth callback
14841
+ description:
14842
+ Receives forwarded OAuth callback results (code or error) from the gateway and resolves the pending
14843
+ callback in the runtime.
14844
+ tags:
14845
+ - internal
14846
+ requestBody:
14847
+ required: true
14848
+ content:
14849
+ application/json:
14850
+ schema:
14851
+ type: object
14852
+ properties:
14853
+ state:
14854
+ type: string
14855
+ code:
14856
+ type: string
14857
+ error:
14858
+ type: string
14859
+ required:
14860
+ - state
14861
+ responses:
14862
+ "200":
14863
+ description: Successful response
14864
+ /v1/internal/oauth/connect/start:
14865
+ post:
14866
+ operationId: internal_oauth_connect_start_post
14867
+ summary: Start daemon-owned OAuth connect flow
14868
+ description: Starts an OAuth connect flow in the daemon and returns the authorization URL for the CLI to open in the browser.
14577
14869
  tags:
14578
14870
  - internal
14579
14871
  requestBody:
@@ -15191,6 +15483,81 @@ paths:
15191
15483
  additionalProperties: false
15192
15484
  "409":
15193
15485
  description: Another memory item with this content already exists
15486
+ /v1/memory/eval/run:
15487
+ post:
15488
+ operationId: memory_eval_run_post
15489
+ summary: Build blinded A/B retrieval-eval packets over two concept corpora (snapshot vs staged wiki)
15490
+ tags:
15491
+ - memory
15492
+ requestBody:
15493
+ required: true
15494
+ content:
15495
+ application/json:
15496
+ schema:
15497
+ type: object
15498
+ properties:
15499
+ stagingDir:
15500
+ type: string
15501
+ minLength: 1
15502
+ snapshotDir:
15503
+ type: string
15504
+ minLength: 1
15505
+ outDir:
15506
+ type: string
15507
+ minLength: 1
15508
+ turns:
15509
+ type: integer
15510
+ exclusiveMinimum: 0
15511
+ maximum: 9007199254740991
15512
+ perConversationCap:
15513
+ type: integer
15514
+ exclusiveMinimum: 0
15515
+ maximum: 9007199254740991
15516
+ k:
15517
+ type: integer
15518
+ exclusiveMinimum: 0
15519
+ maximum: 9007199254740991
15520
+ dense:
15521
+ type: boolean
15522
+ seed:
15523
+ type: integer
15524
+ minimum: -9007199254740991
15525
+ maximum: 9007199254740991
15526
+ required:
15527
+ - stagingDir
15528
+ - snapshotDir
15529
+ - outDir
15530
+ responses:
15531
+ "200":
15532
+ description: Successful response
15533
+ content:
15534
+ application/json:
15535
+ schema:
15536
+ type: object
15537
+ properties:
15538
+ turnsMined:
15539
+ type: number
15540
+ packetsWritten:
15541
+ type: number
15542
+ packetsPath:
15543
+ type: string
15544
+ keyPath:
15545
+ type: string
15546
+ snapshotPages:
15547
+ type: number
15548
+ stagingPages:
15549
+ type: number
15550
+ dense:
15551
+ type: boolean
15552
+ required:
15553
+ - turnsMined
15554
+ - packetsWritten
15555
+ - packetsPath
15556
+ - keyPath
15557
+ - snapshotPages
15558
+ - stagingPages
15559
+ - dense
15560
+ additionalProperties: false
15194
15561
  /v1/memory/v2/backfill:
15195
15562
  post:
15196
15563
  operationId: memory_v2_backfill_post
@@ -15872,6 +16239,7 @@ paths:
15872
16239
  - brave
15873
16240
  - perplexity
15874
16241
  - tavily
16242
+ - firecrawl
15875
16243
  resultCount:
15876
16244
  type: number
15877
16245
  durationMs:
@@ -15919,6 +16287,11 @@ paths:
15919
16287
  type: string
15920
16288
  finalUrl:
15921
16289
  type: string
16290
+ provider:
16291
+ type: string
16292
+ enum:
16293
+ - default
16294
+ - firecrawl
15922
16295
  status:
15923
16296
  type: number
15924
16297
  contentType:
@@ -16035,6 +16408,48 @@ paths:
16035
16408
  required:
16036
16409
  - requestId
16037
16410
  additionalProperties: false
16411
+ pendingQuestion:
16412
+ type: object
16413
+ properties:
16414
+ requestId:
16415
+ type: string
16416
+ entries:
16417
+ type: array
16418
+ items:
16419
+ type: object
16420
+ properties:
16421
+ id:
16422
+ type: string
16423
+ question:
16424
+ type: string
16425
+ description:
16426
+ type: string
16427
+ options:
16428
+ type: array
16429
+ items:
16430
+ type: object
16431
+ properties:
16432
+ id:
16433
+ type: string
16434
+ label:
16435
+ type: string
16436
+ description:
16437
+ type: string
16438
+ required:
16439
+ - id
16440
+ - label
16441
+ additionalProperties: false
16442
+ freeTextPlaceholder:
16443
+ type: string
16444
+ required:
16445
+ - id
16446
+ - question
16447
+ - options
16448
+ additionalProperties: false
16449
+ required:
16450
+ - requestId
16451
+ - entries
16452
+ additionalProperties: false
16038
16453
  required:
16039
16454
  - name
16040
16455
  - input
@@ -16254,6 +16669,7 @@ paths:
16254
16669
  - brave
16255
16670
  - perplexity
16256
16671
  - tavily
16672
+ - firecrawl
16257
16673
  resultCount:
16258
16674
  type: number
16259
16675
  durationMs:
@@ -16301,6 +16717,11 @@ paths:
16301
16717
  type: string
16302
16718
  finalUrl:
16303
16719
  type: string
16720
+ provider:
16721
+ type: string
16722
+ enum:
16723
+ - default
16724
+ - firecrawl
16304
16725
  status:
16305
16726
  type: number
16306
16727
  contentType:
@@ -16417,6 +16838,48 @@ paths:
16417
16838
  required:
16418
16839
  - requestId
16419
16840
  additionalProperties: false
16841
+ pendingQuestion:
16842
+ type: object
16843
+ properties:
16844
+ requestId:
16845
+ type: string
16846
+ entries:
16847
+ type: array
16848
+ items:
16849
+ type: object
16850
+ properties:
16851
+ id:
16852
+ type: string
16853
+ question:
16854
+ type: string
16855
+ description:
16856
+ type: string
16857
+ options:
16858
+ type: array
16859
+ items:
16860
+ type: object
16861
+ properties:
16862
+ id:
16863
+ type: string
16864
+ label:
16865
+ type: string
16866
+ description:
16867
+ type: string
16868
+ required:
16869
+ - id
16870
+ - label
16871
+ additionalProperties: false
16872
+ freeTextPlaceholder:
16873
+ type: string
16874
+ required:
16875
+ - id
16876
+ - question
16877
+ - options
16878
+ additionalProperties: false
16879
+ required:
16880
+ - requestId
16881
+ - entries
16882
+ additionalProperties: false
16420
16883
  required:
16421
16884
  - name
16422
16885
  - input
@@ -16721,6 +17184,12 @@ paths:
16721
17184
  type: array
16722
17185
  items:
16723
17186
  type: string
17187
+ title:
17188
+ description:
17189
+ Explicit title for the conversation minted on this first message. Persisted as a user-set title (never
17190
+ overwritten by the auto-titler). Used by onboarding flows that mint a conversation behind the
17191
+ scenes.
17192
+ type: string
16724
17193
  required:
16725
17194
  - tools
16726
17195
  - tasks
@@ -17681,6 +18150,7 @@ paths:
17681
18150
  properties:
17682
18151
  deliveryId:
17683
18152
  type: string
18153
+ minLength: 1
17684
18154
  description: Notification delivery ID
17685
18155
  success:
17686
18156
  type: boolean
@@ -17758,9 +18228,113 @@ paths:
17758
18228
  type: boolean
17759
18229
  feedItem:
17760
18230
  type: object
17761
- propertyNames:
17762
- type: string
17763
- additionalProperties: {}
18231
+ properties:
18232
+ id:
18233
+ type: string
18234
+ type:
18235
+ type: string
18236
+ const: notification
18237
+ priority:
18238
+ type: integer
18239
+ minimum: 0
18240
+ maximum: 100
18241
+ title:
18242
+ type: string
18243
+ summary:
18244
+ type: string
18245
+ timestamp:
18246
+ type: string
18247
+ status:
18248
+ default: new
18249
+ type: string
18250
+ enum:
18251
+ - new
18252
+ - seen
18253
+ - acted_on
18254
+ - dismissed
18255
+ expiresAt:
18256
+ type: string
18257
+ actions:
18258
+ type: array
18259
+ items:
18260
+ type: object
18261
+ properties:
18262
+ id:
18263
+ type: string
18264
+ label:
18265
+ type: string
18266
+ prompt:
18267
+ type: string
18268
+ required:
18269
+ - id
18270
+ - label
18271
+ - prompt
18272
+ additionalProperties: false
18273
+ urgency:
18274
+ type: string
18275
+ enum:
18276
+ - low
18277
+ - medium
18278
+ - high
18279
+ - critical
18280
+ conversationId:
18281
+ type: string
18282
+ detailPanel:
18283
+ type: object
18284
+ properties:
18285
+ kind:
18286
+ type: string
18287
+ enum:
18288
+ - emailDraft
18289
+ - documentPreview
18290
+ - permissionChat
18291
+ - paymentAuth
18292
+ - toolPermission
18293
+ - updatesList
18294
+ required:
18295
+ - kind
18296
+ additionalProperties: false
18297
+ category:
18298
+ type: string
18299
+ enum:
18300
+ - security
18301
+ - scheduling
18302
+ - background
18303
+ - email
18304
+ - system
18305
+ noteworthy:
18306
+ type: boolean
18307
+ fromAssistant:
18308
+ type: boolean
18309
+ metadata:
18310
+ type: object
18311
+ propertyNames:
18312
+ type: string
18313
+ additionalProperties: {}
18314
+ sourceType:
18315
+ type: string
18316
+ enum:
18317
+ - heartbeat
18318
+ - memory_consolidation
18319
+ - schedule
18320
+ - auto_analysis
18321
+ - user
18322
+ - other
18323
+ sourceKey:
18324
+ type: string
18325
+ sourceLabel:
18326
+ type: string
18327
+ createdAt:
18328
+ type: string
18329
+ required:
18330
+ - id
18331
+ - type
18332
+ - priority
18333
+ - summary
18334
+ - timestamp
18335
+ - status
18336
+ - createdAt
18337
+ additionalProperties: false
17764
18338
  channels:
17765
18339
  type: array
17766
18340
  items:
@@ -17815,7 +18389,11 @@ paths:
17815
18389
  - vellum
17816
18390
  - phone
17817
18391
  - telegram
18392
+ - whatsapp
17818
18393
  - slack
18394
+ - email
18395
+ - platform
18396
+ - a2a
17819
18397
  - scheduler
17820
18398
  - watcher
17821
18399
  sourceContextId:
@@ -18737,9 +19315,37 @@ paths:
18737
19315
  additionalProperties: {}
18738
19316
  description: Pending confirmation details or null
18739
19317
  pendingSecret:
18740
- type: object
18741
- properties: {}
18742
- additionalProperties: {}
19318
+ anyOf:
19319
+ - type: object
19320
+ properties:
19321
+ requestId:
19322
+ type: string
19323
+ service:
19324
+ type: string
19325
+ field:
19326
+ type: string
19327
+ label:
19328
+ type: string
19329
+ description:
19330
+ type: string
19331
+ placeholder:
19332
+ type: string
19333
+ purpose:
19334
+ type: string
19335
+ allowedTools:
19336
+ type: array
19337
+ items:
19338
+ type: string
19339
+ allowedDomains:
19340
+ type: array
19341
+ items:
19342
+ type: string
19343
+ allowOneTimeSend:
19344
+ type: boolean
19345
+ required:
19346
+ - requestId
19347
+ additionalProperties: {}
19348
+ - type: "null"
18743
19349
  description: Pending secret request or null
18744
19350
  interactions:
18745
19351
  type: array
@@ -19210,41 +19816,144 @@ paths:
19210
19816
  description: Git ref the catalog metadata / README were resolved at.
19211
19817
  artifact:
19212
19818
  anyOf:
19213
- - type: object
19214
- properties:
19215
- url:
19216
- type: string
19217
- description: HTTPS URL the prebuilt client artifact is downloaded from.
19218
- sha256:
19219
- type: string
19220
- description: Lowercase 64-char hex SHA-256 the download is verified against.
19221
- label:
19222
- description: Optional human label for the download (e.g. "Download for macOS"); absent when the plugin doesn't name it.
19223
- type: string
19224
- required:
19225
- - url
19226
- - sha256
19227
- additionalProperties: false
19819
+ - type: object
19820
+ properties:
19821
+ url:
19822
+ type: string
19823
+ description: HTTPS URL the prebuilt client artifact is downloaded from.
19824
+ sha256:
19825
+ type: string
19826
+ description: Lowercase 64-char hex SHA-256 the download is verified against.
19827
+ label:
19828
+ description: Optional human label for the download (e.g. "Download for macOS"); absent when the plugin doesn't name it.
19829
+ type: string
19830
+ required:
19831
+ - url
19832
+ - sha256
19833
+ additionalProperties: false
19834
+ - type: "null"
19835
+ description:
19836
+ Prebuilt client artifact from `package.json` `vellum.artifact`, or null when the plugin ships none or its
19837
+ descriptor is incomplete (e.g. a placeholder sha256).
19838
+ required:
19839
+ - name
19840
+ - installed
19841
+ - description
19842
+ - homepage
19843
+ - license
19844
+ - version
19845
+ - source
19846
+ - readme
19847
+ - ref
19848
+ - artifact
19849
+ additionalProperties: false
19850
+ "400":
19851
+ description: The plugin name failed sanitization (e.g. contained slashes, dots, or uppercase letters).
19852
+ "404":
19853
+ description: No installed copy and no catalog entry claims the given name.
19854
+ /v1/plugins/{name}/diff:
19855
+ post:
19856
+ operationId: plugins_by_name_diff_post
19857
+ summary: Diff a plugin against its install commit
19858
+ description:
19859
+ "Show a unified diff of local edits to an installed plugin against the exact commit it was installed at
19860
+ (recorded in its `install-meta.json`). Computing the diff re-materializes the baseline through the install
19861
+ pipeline — a network clone plus a temp-dir write — so this is a POST: it is not a safe, cacheable GET even
19862
+ though it leaves persistent state untouched (requires only `settings.read`). Drift is classified against the
19863
+ install-time fingerprint so an adapter overlay that moved since install never reads as a local change. Returns
19864
+ the baseline `commit`, a `clean` flag, and a `files` array of `{ path, status, diff, binary, reconstructed }`
19865
+ for each modified/added/removed file. The baseline is the install commit, not the marketplace pin — comparing
19866
+ against the current pin is `POST /v1/plugins/:name/upgrade` with `dryRun`. A name with no installed copy returns
19867
+ 404; an install that recorded no commit or fingerprint returns 409; an unreachable source returns 503. Mirrors
19868
+ the CLI's `assistant plugins diff <name>`."
19869
+ tags:
19870
+ - plugins
19871
+ parameters:
19872
+ - name: name
19873
+ in: path
19874
+ required: true
19875
+ schema:
19876
+ type: string
19877
+ responses:
19878
+ "200":
19879
+ description: Successful response
19880
+ content:
19881
+ application/json:
19882
+ schema:
19883
+ type: object
19884
+ properties:
19885
+ name:
19886
+ type: string
19887
+ description: Install name. Matches `assistant plugins install <name>`.
19888
+ target:
19889
+ type: string
19890
+ description: Absolute path to the installed plugin directory on the host.
19891
+ commit:
19892
+ type: string
19893
+ description: Commit the baseline was re-materialized from (the recorded install SHA).
19894
+ committedAt:
19895
+ anyOf:
19896
+ - type: string
19228
19897
  - type: "null"
19229
- description:
19230
- Prebuilt client artifact from `package.json` `vellum.artifact`, or null when the plugin ships none or its
19231
- descriptor is incomplete (e.g. a placeholder sha256).
19898
+ description: ISO-8601 committer timestamp (UTC) of `commit`; null when not recorded.
19899
+ clean:
19900
+ type: boolean
19901
+ description: True when the on-disk tree exactly matches the re-materialized baseline.
19902
+ files:
19903
+ type: array
19904
+ items:
19905
+ type: object
19906
+ properties:
19907
+ path:
19908
+ type: string
19909
+ description: POSIX-relative path within the plugin root.
19910
+ status:
19911
+ type: string
19912
+ enum:
19913
+ - modified
19914
+ - added
19915
+ - removed
19916
+ description: Whether the file was edited, newly added, or deleted since install.
19917
+ diff:
19918
+ type: string
19919
+ description:
19920
+ Unified diff (`--- a/… / +++ b/…`) of the file. A short `Binary files differ` marker for binary files, or a
19921
+ `Baseline unavailable` marker when `reconstructed` is false.
19922
+ binary:
19923
+ type: boolean
19924
+ description: True when either side was detected as binary (NUL byte present).
19925
+ reconstructed:
19926
+ type: boolean
19927
+ description:
19928
+ True when the install-time baseline for this file was faithfully recovered (re-materialized bytes
19929
+ hash-match the install fingerprint). False when it could not be reconstructed (e.g. the
19930
+ curated adapter overlay changed since install), in which case `diff` is a marker, not a
19931
+ patch. Always true for added files.
19932
+ required:
19933
+ - path
19934
+ - status
19935
+ - diff
19936
+ - binary
19937
+ - reconstructed
19938
+ additionalProperties: false
19939
+ description: Unified diff of a single drifted file.
19940
+ description: One entry per drifted file, sorted by path. Empty when `clean`.
19232
19941
  required:
19233
19942
  - name
19234
- - installed
19235
- - description
19236
- - homepage
19237
- - license
19238
- - version
19239
- - source
19240
- - readme
19241
- - ref
19242
- - artifact
19943
+ - target
19944
+ - commit
19945
+ - committedAt
19946
+ - clean
19947
+ - files
19243
19948
  additionalProperties: false
19244
19949
  "400":
19245
19950
  description: The plugin name failed sanitization (e.g. contained slashes, dots, or uppercase letters).
19246
19951
  "404":
19247
- description: No installed copy and no catalog entry claims the given name.
19952
+ description: No copy of the plugin is installed, or its recorded commit resolves to nothing.
19953
+ "409":
19954
+ description: The install recorded no commit or no fingerprint to re-materialize and verify a baseline from.
19955
+ "503":
19956
+ description: The plugin source (GitHub) was temporarily unavailable; the diff is retryable.
19248
19957
  /v1/plugins/{name}/inspect:
19249
19958
  get:
19250
19959
  operationId: plugins_by_name_inspect_get
@@ -19459,6 +20168,35 @@ paths:
19459
20168
  - type: string
19460
20169
  - type: "null"
19461
20170
  description: Marketplace fetch error message, when the catalog could not be read.
20171
+ surfaces:
20172
+ anyOf:
20173
+ - type: object
20174
+ properties:
20175
+ skills:
20176
+ type: array
20177
+ items:
20178
+ type: string
20179
+ description: Skill ids shipped at `skills/<id>/SKILL.md`.
20180
+ hooks:
20181
+ type: array
20182
+ items:
20183
+ type: string
20184
+ description: Lifecycle hook names from `hooks/<name>.{ts,js}` (e.g. `pre-model-call`).
20185
+ tools:
20186
+ type: array
20187
+ items:
20188
+ type: string
20189
+ description:
20190
+ Registered tool names from `tools/<name>.{ts,js}` (filenames derived to tool names, e.g. `create-issue` →
20191
+ `create_issue`).
20192
+ required:
20193
+ - skills
20194
+ - hooks
20195
+ - tools
20196
+ additionalProperties: false
20197
+ description: Surfaces the installed copy contributes, read from its on-disk tree.
20198
+ - type: "null"
20199
+ description: Surfaces the installed copy contributes (skills, hooks, tools); null when the plugin is not installed.
19462
20200
  required:
19463
20201
  - name
19464
20202
  - installed
@@ -19466,6 +20204,7 @@ paths:
19466
20204
  - local
19467
20205
  - remote
19468
20206
  - remoteError
20207
+ - surfaces
19469
20208
  additionalProperties: false
19470
20209
  "400":
19471
20210
  description: The plugin name failed sanitization (e.g. contained slashes, dots, or uppercase letters).
@@ -19481,9 +20220,13 @@ paths:
19481
20220
  mirroring `plugins install`''s curation boundary. A no-op (`outcome: "already-up-to-date"`) when the installed
19482
20221
  commit already equals the pin; pass `dryRun` to preview the move (`outcome: "would-upgrade"`) without touching
19483
20222
  the install. Installs lacking provenance are re-pinned to the current SHA. The assistant must be restarted to
19484
- load the upgraded code. This does not gate on local edits — callers should consult `GET
19485
- /v1/plugins/:name/inspect` (`local.localChanges`) first and confirm before overwriting. Mirrors the CLI''s
19486
- `assistant plugins upgrade <name>`.'
20223
+ load the upgraded code. `strategy` controls how local edits are reconciled: `overwrite` (default) discards them
20224
+ and re-installs the pin wholesale; `ours`/`theirs`/`assistant` perform a three-way merge against the
20225
+ re-materialized install commit, carrying non-conflicting edits from both sides forward and resolving conflicting
20226
+ hunks toward the local edit (`ours`) or the pin (`theirs`), or writing git conflict markers into the file and
20227
+ reporting them in `conflicts`/`binaryConflicts` for the assistant to resolve (`assistant`). A merge strategy
20228
+ whose install-time baseline cannot be reconstructed returns 409. Mirrors the CLI''s `assistant plugins upgrade
20229
+ <name> [--strategy <s>]`.'
19487
20230
  tags:
19488
20231
  - plugins
19489
20232
  parameters:
@@ -19502,6 +20245,17 @@ paths:
19502
20245
  dryRun:
19503
20246
  description: Report what would change without modifying the install. Defaults to false.
19504
20247
  type: boolean
20248
+ strategy:
20249
+ description:
20250
+ How to reconcile local edits with the pin. `overwrite` (default) discards local edits and re-installs the
20251
+ pin; `ours`/`theirs` three-way merge, resolving conflicting hunks toward the local edit or the pin
20252
+ respectively; `assistant` is not yet supported.
20253
+ type: string
20254
+ enum:
20255
+ - ours
20256
+ - theirs
20257
+ - overwrite
20258
+ - assistant
19505
20259
  responses:
19506
20260
  "200":
19507
20261
  description: Successful response
@@ -19553,6 +20307,28 @@ paths:
19553
20307
  dryRun:
19554
20308
  type: boolean
19555
20309
  description: Whether this was a dry run (no changes made).
20310
+ strategy:
20311
+ type: string
20312
+ enum:
20313
+ - ours
20314
+ - theirs
20315
+ - overwrite
20316
+ - assistant
20317
+ description: Conflict-resolution strategy the upgrade applied.
20318
+ conflicts:
20319
+ type: array
20320
+ items:
20321
+ type: string
20322
+ description:
20323
+ "Paths left for the assistant to resolve under the `assistant` strategy: text files carry git conflict
20324
+ markers, modify/delete divergences keep the surviving content. Empty for other strategies."
20325
+ binaryConflicts:
20326
+ type: array
20327
+ items:
20328
+ type: string
20329
+ description:
20330
+ Binary files that conflicted under the `assistant` strategy; the local copy was kept since markers cannot
20331
+ be written into binary content. Empty for other strategies.
19556
20332
  provenanceWasUnknown:
19557
20333
  type: boolean
19558
20334
  description:
@@ -19568,6 +20344,9 @@ paths:
19568
20344
  - target
19569
20345
  - fileCount
19570
20346
  - dryRun
20347
+ - strategy
20348
+ - conflicts
20349
+ - binaryConflicts
19571
20350
  - provenanceWasUnknown
19572
20351
  additionalProperties: false
19573
20352
  "400":
@@ -19575,9 +20354,72 @@ paths:
19575
20354
  "404":
19576
20355
  description: No copy of the plugin is installed, or its source resolves to nothing.
19577
20356
  "409":
19578
- description: The install exists but has no marketplace entry to advance to.
20357
+ description:
20358
+ The install exists but has no marketplace entry to advance to, or a merge strategy was requested whose
20359
+ install-time baseline cannot be reconstructed.
19579
20360
  "503":
19580
20361
  description: The plugin source (GitHub) was temporarily unavailable; the upgrade is retryable.
20362
+ /v1/plugins/{name}/versions:
20363
+ get:
20364
+ operationId: plugins_by_name_versions_get
20365
+ summary: List a plugin's reviewed marketplace pins
20366
+ description:
20367
+ Report the distinct marketplace pins a plugin has been promoted to over time, newest first (the first entry
20368
+ is the current pin), capped at `limit` (default 5). The curated `marketplace.json` stores only the current pin,
20369
+ so this is reconstructed from the manifest's own commit history on the default branch — every entry is therefore
20370
+ a reviewed, known-good revision. Pair with `POST /v1/plugins/install`'s `pin` field to roll a plugin back to an
20371
+ older reviewed version. An unknown name (never in the manifest) returns an empty array, not 404.
20372
+ tags:
20373
+ - plugins
20374
+ parameters:
20375
+ - name: name
20376
+ in: path
20377
+ required: true
20378
+ schema:
20379
+ type: string
20380
+ - name: limit
20381
+ in: query
20382
+ required: false
20383
+ schema:
20384
+ type: string
20385
+ description: Maximum number of pins to return (positive integer; default 5).
20386
+ responses:
20387
+ "200":
20388
+ description: Successful response
20389
+ content:
20390
+ application/json:
20391
+ schema:
20392
+ type: array
20393
+ items:
20394
+ type: object
20395
+ properties:
20396
+ pin:
20397
+ type: string
20398
+ description: Plugin commit SHA pinned at this point in marketplace history.
20399
+ marketplaceCommit:
20400
+ type: string
20401
+ description: Marketplace-manifest commit to install this pin from (the newest commit carrying it).
20402
+ promotedAt:
20403
+ anyOf:
20404
+ - type: string
20405
+ - type: "null"
20406
+ description: ISO-8601 committer date (UTC) of the marketplace commit that promoted this pin; null when unreadable.
20407
+ current:
20408
+ type: boolean
20409
+ description: True for the pin currently active on the default branch.
20410
+ required:
20411
+ - pin
20412
+ - marketplaceCommit
20413
+ - promotedAt
20414
+ - current
20415
+ additionalProperties: false
20416
+ description:
20417
+ Distinct marketplace pins a plugin has been promoted to, newest first; the first entry is the current pin.
20418
+ Empty when the plugin has no resolvable history.
20419
+ "400":
20420
+ description: The plugin name failed sanitization, or `limit` was not a positive integer.
20421
+ "503":
20422
+ description: The marketplace pin history could not be read from GitHub (rate-limited or upstream error); retryable.
19581
20423
  /v1/plugins/install:
19582
20424
  post:
19583
20425
  operationId: plugins_install_post
@@ -19604,6 +20446,13 @@ paths:
19604
20446
  force:
19605
20447
  description: Overwrite an existing install in place. Defaults to false.
19606
20448
  type: boolean
20449
+ pin:
20450
+ description:
20451
+ Install a specific reviewed marketplace pin (full commit SHA) instead of the current one. The pin is
20452
+ validated against the plugin's marketplace pin history (`GET /v1/plugins/:name/versions`) and
20453
+ installed from the marketplace revision that introduced it; an unreviewed SHA is rejected. Use this
20454
+ to roll a plugin back to an older reviewed version.
20455
+ type: string
19607
20456
  required:
19608
20457
  - name
19609
20458
  responses:
@@ -27356,6 +28205,88 @@ paths:
27356
28205
  additionalProperties: false
27357
28206
  "404":
27358
28207
  description: Run not found
28208
+ /v1/workflows/runs/{id}/journal:
28209
+ get:
28210
+ operationId: workflows_runs_by_id_journal_get
28211
+ summary: Get workflow run journal
28212
+ description: Return a workflow run's leaf journal as bounded per-leaf summaries (one entry per finished leaf).
28213
+ tags:
28214
+ - workflows
28215
+ parameters:
28216
+ - name: id
28217
+ in: path
28218
+ required: true
28219
+ schema:
28220
+ type: string
28221
+ responses:
28222
+ "200":
28223
+ description: Successful response
28224
+ content:
28225
+ application/json:
28226
+ schema:
28227
+ type: object
28228
+ properties:
28229
+ runId:
28230
+ type: string
28231
+ status:
28232
+ type: string
28233
+ enum:
28234
+ - running
28235
+ - completed
28236
+ - failed
28237
+ - aborted
28238
+ - cap_exceeded
28239
+ - interrupted
28240
+ agentsSpawned:
28241
+ type: number
28242
+ inputTokens:
28243
+ type: number
28244
+ outputTokens:
28245
+ type: number
28246
+ phase:
28247
+ type: string
28248
+ leaves:
28249
+ type: array
28250
+ items:
28251
+ type: object
28252
+ properties:
28253
+ seq:
28254
+ type: number
28255
+ kind:
28256
+ type: string
28257
+ enum:
28258
+ - agent
28259
+ - workflow
28260
+ label:
28261
+ type: string
28262
+ phase:
28263
+ type: string
28264
+ promptSummary:
28265
+ type: string
28266
+ status:
28267
+ type: string
28268
+ resultSummary:
28269
+ type: string
28270
+ inputTokens:
28271
+ type: number
28272
+ outputTokens:
28273
+ type: number
28274
+ createdAt:
28275
+ anyOf:
28276
+ - type: number
28277
+ - type: "null"
28278
+ required:
28279
+ - seq
28280
+ - kind
28281
+ - status
28282
+ - createdAt
28283
+ additionalProperties: false
28284
+ required:
28285
+ - runId
28286
+ - leaves
28287
+ additionalProperties: false
28288
+ "404":
28289
+ description: Run not found
27359
28290
  /v1/workflows/runs/{id}/resume:
27360
28291
  post:
27361
28292
  operationId: workflows_runs_by_id_resume_post
@@ -27888,6 +28819,14 @@ components:
27888
28819
  maximum: 2
27889
28820
  - type: "null"
27890
28821
  - type: "null"
28822
+ topP:
28823
+ anyOf:
28824
+ - anyOf:
28825
+ - type: number
28826
+ minimum: 0
28827
+ maximum: 1
28828
+ - type: "null"
28829
+ - type: "null"
27891
28830
  thinking:
27892
28831
  anyOf:
27893
28832
  - type: object
@@ -27994,6 +28933,10 @@ components:
27994
28933
  anyOf:
27995
28934
  - type: string
27996
28935
  - type: "null"
28936
+ advisorProfile:
28937
+ anyOf:
28938
+ - type: string
28939
+ - type: "null"
27997
28940
  callSites:
27998
28941
  type: object
27999
28942
  propertyNames:
@@ -28029,6 +28972,16 @@ components:
28029
28972
  type: string
28030
28973
  additionalProperties: {}
28031
28974
  - type: "null"
28975
+ web-fetch:
28976
+ anyOf:
28977
+ - type: object
28978
+ properties:
28979
+ mode:
28980
+ $ref: "#/components/schemas/ServiceMode"
28981
+ provider:
28982
+ type: string
28983
+ additionalProperties: {}
28984
+ - type: "null"
28032
28985
  image-generation:
28033
28986
  anyOf:
28034
28987
  - type: object
@@ -28058,6 +29011,7 @@ components:
28058
29011
  - openrouter
28059
29012
  - openai-compatible
28060
29013
  - minimax
29014
+ - atlascloud
28061
29015
  ProfilePatchEntry:
28062
29016
  type: object
28063
29017
  properties:
@@ -28110,6 +29064,14 @@ components:
28110
29064
  maximum: 2
28111
29065
  - type: "null"
28112
29066
  - type: "null"
29067
+ topP:
29068
+ anyOf:
29069
+ - anyOf:
29070
+ - type: number
29071
+ minimum: 0
29072
+ maximum: 1
29073
+ - type: "null"
29074
+ - type: "null"
28113
29075
  thinking:
28114
29076
  anyOf:
28115
29077
  - type: object
@@ -28223,6 +29185,12 @@ components:
28223
29185
  - $ref: "#/components/schemas/ProfileStatus"
28224
29186
  - type: "null"
28225
29187
  - type: "null"
29188
+ advisorEnabled:
29189
+ anyOf:
29190
+ - anyOf:
29191
+ - type: boolean
29192
+ - type: "null"
29193
+ - type: "null"
28226
29194
  mix:
28227
29195
  anyOf:
28228
29196
  - minItems: 2
@@ -28298,6 +29266,14 @@ components:
28298
29266
  maximum: 2
28299
29267
  - type: "null"
28300
29268
  - type: "null"
29269
+ topP:
29270
+ anyOf:
29271
+ - anyOf:
29272
+ - type: number
29273
+ minimum: 0
29274
+ maximum: 1
29275
+ - type: "null"
29276
+ - type: "null"
28301
29277
  thinking:
28302
29278
  anyOf:
28303
29279
  - type: object
@@ -28415,6 +29391,7 @@ components:
28415
29391
  - openrouter
28416
29392
  - openai-compatible
28417
29393
  - minimax
29394
+ - atlascloud
28418
29395
  Auth:
28419
29396
  oneOf:
28420
29397
  - type: object
@@ -28520,6 +29497,12 @@ components:
28520
29497
  minimum: 0
28521
29498
  maximum: 2
28522
29499
  - type: "null"
29500
+ topP:
29501
+ anyOf:
29502
+ - type: number
29503
+ minimum: 0
29504
+ maximum: 1
29505
+ - type: "null"
28523
29506
  thinking:
28524
29507
  type: object
28525
29508
  properties:
@@ -28613,6 +29596,8 @@ components:
28613
29596
  type: string
28614
29597
  activeProfile:
28615
29598
  type: string
29599
+ advisorProfile:
29600
+ type: string
28616
29601
  callSites:
28617
29602
  type: object
28618
29603
  propertyNames:
@@ -28656,6 +29641,12 @@ components:
28656
29641
  minimum: 0
28657
29642
  maximum: 2
28658
29643
  - type: "null"
29644
+ topP:
29645
+ anyOf:
29646
+ - type: number
29647
+ minimum: 0
29648
+ maximum: 1
29649
+ - type: "null"
28659
29650
  thinking:
28660
29651
  type: object
28661
29652
  properties:
@@ -28763,6 +29754,14 @@ components:
28763
29754
  provider:
28764
29755
  type: string
28765
29756
  additionalProperties: {}
29757
+ web-fetch:
29758
+ type: object
29759
+ properties:
29760
+ mode:
29761
+ $ref: "#/components/schemas/ServiceMode"
29762
+ provider:
29763
+ type: string
29764
+ additionalProperties: {}
28766
29765
  image-generation:
28767
29766
  type: object
28768
29767
  properties:
@@ -28815,6 +29814,12 @@ components:
28815
29814
  minimum: 0
28816
29815
  maximum: 2
28817
29816
  - type: "null"
29817
+ topP:
29818
+ anyOf:
29819
+ - type: number
29820
+ minimum: 0
29821
+ maximum: 1
29822
+ - type: "null"
28818
29823
  thinking:
28819
29824
  type: object
28820
29825
  properties:
@@ -28912,6 +29917,10 @@ components:
28912
29917
  anyOf:
28913
29918
  - $ref: "#/components/schemas/ProfileStatus"
28914
29919
  - type: "null"
29920
+ advisorEnabled:
29921
+ anyOf:
29922
+ - type: boolean
29923
+ - type: "null"
28915
29924
  mix:
28916
29925
  minItems: 2
28917
29926
  type: array