@vellumai/assistant 0.8.10 → 0.8.11-staging.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/bun.lock +62 -1
  2. package/docs/workspace-tools.md +196 -0
  3. package/examples/plugins/echo/README.md +3 -3
  4. package/knip.json +1 -0
  5. package/openapi.yaml +460 -128
  6. package/package.json +2 -1
  7. package/scripts/build-plugin-api.ts +299 -0
  8. package/src/__tests__/agent-loop-callsite-precedence.test.ts +7 -0
  9. package/src/__tests__/agent-loop-compaction-events.test.ts +197 -0
  10. package/src/__tests__/agent-loop-exit-reason.test.ts +93 -96
  11. package/src/__tests__/agent-loop-mutable-latest-user-message.test.ts +2 -0
  12. package/src/__tests__/agent-loop-output-hooks.test.ts +274 -1
  13. package/src/__tests__/agent-loop-override-profile.test.ts +3 -0
  14. package/src/__tests__/agent-loop-provider-error-recording.test.ts +4 -0
  15. package/src/__tests__/agent-loop-thinking.test.ts +4 -0
  16. package/src/__tests__/agent-loop.test.ts +578 -5
  17. package/src/__tests__/agent-wake-disk-pressure-callsite.test.ts +0 -1
  18. package/src/__tests__/approval-cascade.test.ts +1 -0
  19. package/src/__tests__/background-workers-disk-pressure.test.ts +0 -2
  20. package/src/__tests__/btw-routes.test.ts +0 -1
  21. package/src/__tests__/build-persisted-content.test.ts +75 -1
  22. package/src/__tests__/catalog-install-normalize.test.ts +141 -0
  23. package/src/__tests__/ces-startup-timeout.test.ts +60 -0
  24. package/src/__tests__/compaction-events.test.ts +1 -0
  25. package/src/__tests__/config-managed-gemini-defaults.test.ts +2 -46
  26. package/src/__tests__/context-overflow-reducer.test.ts +264 -124
  27. package/src/__tests__/context-window-manager-overflow-rung.test.ts +351 -0
  28. package/src/__tests__/conversation-abort-tool-results.test.ts +1 -1
  29. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +13 -5
  30. package/src/__tests__/conversation-agent-loop-overflow.test.ts +284 -455
  31. package/src/__tests__/conversation-agent-loop.test.ts +131 -551
  32. package/src/__tests__/conversation-app-control-instantiation.test.ts +13 -0
  33. package/src/__tests__/conversation-confirmation-signals.test.ts +1 -0
  34. package/src/__tests__/conversation-fork-crud.test.ts +259 -0
  35. package/src/__tests__/conversation-history-web-search.test.ts +1 -1
  36. package/src/__tests__/conversation-lifecycle.test.ts +257 -1
  37. package/src/__tests__/conversation-process-callsite.test.ts +1 -0
  38. package/src/__tests__/conversation-provider-retry-repair.test.ts +38 -377
  39. package/src/__tests__/conversation-queue.test.ts +1 -39
  40. package/src/__tests__/conversation-runtime-assembly.test.ts +119 -8
  41. package/src/__tests__/conversation-skill-tools.test.ts +491 -5
  42. package/src/__tests__/conversation-slash-queue.test.ts +1 -1
  43. package/src/__tests__/conversation-slash-unknown.test.ts +1 -0
  44. package/src/__tests__/conversation-speed-override.test.ts +1 -0
  45. package/src/__tests__/conversation-store.test.ts +74 -0
  46. package/src/__tests__/conversation-surfaces-app-control.test.ts +4 -1
  47. package/src/__tests__/conversation-tool-setup-attribution.test.ts +323 -0
  48. package/src/__tests__/conversation-tool-setup-tools-disabled.test.ts +34 -0
  49. package/src/__tests__/conversation-workspace-cache-state.test.ts +1 -0
  50. package/src/__tests__/conversation-workspace-injection.test.ts +1 -1
  51. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +1 -0
  52. package/src/__tests__/corrected-target.test.ts +93 -0
  53. package/src/__tests__/credential-execution-feature-gates.test.ts +3 -5
  54. package/src/__tests__/credential-execution-tools.test.ts +23 -11
  55. package/src/__tests__/credential-security-invariants.test.ts +6 -1
  56. package/src/__tests__/db-schedule-syntax-migration.test.ts +80 -0
  57. package/src/__tests__/device-id.test.ts +70 -1
  58. package/src/__tests__/embedding-managed-proxy-selection.test.ts +6 -40
  59. package/src/__tests__/empty-response-hook.test.ts +242 -66
  60. package/src/__tests__/external-plugin-loader.test.ts +0 -31
  61. package/src/__tests__/get-skill-detail-audit.test.ts +43 -1
  62. package/src/__tests__/guardian-routing-invariants.test.ts +91 -0
  63. package/src/__tests__/history-repair-hook.test.ts +228 -3
  64. package/src/__tests__/host-app-control-proxy.test.ts +45 -0
  65. package/src/__tests__/host-browser-proxy.test.ts +254 -9
  66. package/src/__tests__/identity-routes.test.ts +1 -0
  67. package/src/__tests__/image-recovery-hook.test.ts +387 -0
  68. package/src/__tests__/injector-chain.test.ts +5 -4
  69. package/src/__tests__/injector-v3-suppression.test.ts +373 -47
  70. package/src/__tests__/intent-routing.test.ts +7 -0
  71. package/src/__tests__/memory-retrieval-hook.test.ts +117 -15
  72. package/src/__tests__/notification-decision-strategy.test.ts +3 -3
  73. package/src/__tests__/oauth-store.test.ts +0 -85
  74. package/src/__tests__/{context-overflow-policy.test.ts → overflow-policy.test.ts} +1 -1
  75. package/src/__tests__/parallel-tool.benchmark.test.ts +4 -0
  76. package/src/__tests__/persist-unsendable-image-downscale.test.ts +29 -9
  77. package/src/__tests__/persist-unsendable-image.test.ts +4 -4
  78. package/src/__tests__/persistence-secret-redaction.test.ts +78 -0
  79. package/src/__tests__/plugin-bootstrap.test.ts +82 -73
  80. package/src/__tests__/plugin-tool-contribution.test.ts +7 -4
  81. package/src/__tests__/plugin-types.test.ts +0 -8
  82. package/src/__tests__/provider-catalog-visibility.test.ts +1 -9
  83. package/src/__tests__/prune-old-conversations-job.test.ts +99 -0
  84. package/src/__tests__/registry.test.ts +240 -1
  85. package/src/__tests__/require-fresh-approval.test.ts +3 -0
  86. package/src/__tests__/schedule-routes.test.ts +116 -1
  87. package/src/__tests__/schedule-store.test.ts +28 -0
  88. package/src/__tests__/schedule-tools.test.ts +94 -1
  89. package/src/__tests__/server-history-render.test.ts +39 -0
  90. package/src/__tests__/skill-projection-feature-flag.test.ts +13 -0
  91. package/src/__tests__/skill-projection.benchmark.test.ts +25 -7
  92. package/src/__tests__/skills.test.ts +202 -0
  93. package/src/__tests__/slim-skill-category.test.ts +195 -0
  94. package/src/__tests__/strip-memory-injections.test.ts +33 -39
  95. package/src/__tests__/test-support/tool-invocation-seed.ts +79 -0
  96. package/src/__tests__/title-generate-hook.test.ts +9 -7
  97. package/src/__tests__/tool-audit-listener.test.ts +264 -1
  98. package/src/__tests__/tool-error-hook.test.ts +4 -3
  99. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +1 -0
  100. package/src/__tests__/tool-executor-lifecycle-events.test.ts +273 -0
  101. package/src/__tests__/tool-result-truncate-hook.test.ts +1 -0
  102. package/src/__tests__/tool-start-timestamp.test.ts +218 -0
  103. package/src/__tests__/tools-get-route.test.ts +202 -0
  104. package/src/__tests__/workspace-tool-loader.test.ts +319 -0
  105. package/src/__tests__/workspace-tools-watcher-flag.test.ts +70 -0
  106. package/src/agent/loop.ts +569 -319
  107. package/src/api/events/tool-result.ts +9 -0
  108. package/src/api/events/tool-use-start.ts +7 -0
  109. package/src/api/index.ts +10 -0
  110. package/src/api/responses/conversation-message.ts +135 -27
  111. package/src/api/responses/memory-v3-selection-log.ts +4 -4
  112. package/src/approvals/guardian-request-resolvers.ts +26 -0
  113. package/src/browser-session/backends/host-bridge.ts +29 -0
  114. package/src/browser-session/index.ts +1 -0
  115. package/src/browser-session/types.ts +5 -1
  116. package/src/cli/commands/__tests__/schedules.test.ts +62 -4
  117. package/src/cli/commands/__tests__/skills.test.ts +53 -0
  118. package/src/cli/commands/channel-verification-sessions.ts +6 -6
  119. package/src/cli/commands/inference-providers.ts +0 -8
  120. package/src/cli/commands/plugins.ts +2 -2
  121. package/src/cli/commands/schedules.ts +27 -4
  122. package/src/cli/commands/skills.ts +187 -146
  123. package/src/cli/commands/tools.ts +106 -0
  124. package/src/cli/lib/__tests__/install-from-github.test.ts +256 -328
  125. package/src/cli/lib/__tests__/plugin-catalog-cache.test.ts +6 -2
  126. package/src/cli/lib/__tests__/plugin-details.test.ts +10 -16
  127. package/src/cli/lib/__tests__/plugin-marketplace.test.ts +2 -2
  128. package/src/cli/lib/__tests__/search-plugins.test.ts +145 -240
  129. package/src/cli/lib/install-from-github.ts +187 -117
  130. package/src/cli/lib/plugin-catalog-cache.ts +9 -9
  131. package/src/cli/lib/plugin-details.ts +38 -68
  132. package/src/cli/lib/plugin-marketplace.ts +42 -14
  133. package/src/cli/lib/search-plugins.ts +29 -129
  134. package/src/cli/program.ts +2 -0
  135. package/src/config/bundled-skills/acp/SKILL.md +1 -0
  136. package/src/config/bundled-skills/app-builder/SKILL.md +1 -0
  137. package/src/config/bundled-skills/app-control/SKILL.md +1 -0
  138. package/src/config/bundled-skills/computer-use/SKILL.md +1 -0
  139. package/src/config/bundled-skills/contacts/SKILL.md +1 -0
  140. package/src/config/bundled-skills/document-editor/SKILL.md +1 -0
  141. package/src/config/bundled-skills/followups/SKILL.md +1 -0
  142. package/src/config/bundled-skills/image-studio/SKILL.md +1 -0
  143. package/src/config/bundled-skills/media-processing/SKILL.md +1 -0
  144. package/src/config/bundled-skills/messaging/SKILL.md +1 -0
  145. package/src/config/bundled-skills/phone-calls/SKILL.md +1 -0
  146. package/src/config/bundled-skills/playbooks/SKILL.md +1 -0
  147. package/src/config/bundled-skills/schedule/SKILL.md +1 -0
  148. package/src/config/bundled-skills/schedule/TOOLS.json +11 -3
  149. package/src/config/bundled-skills/sequences/SKILL.md +1 -0
  150. package/src/config/bundled-skills/settings/SKILL.md +1 -0
  151. package/src/config/bundled-skills/skill-management/SKILL.md +101 -1
  152. package/src/config/bundled-skills/subagent/SKILL.md +1 -0
  153. package/src/config/bundled-skills/transcribe/SKILL.md +1 -0
  154. package/src/config/env-registry.ts +23 -0
  155. package/src/config/feature-flag-registry.json +17 -81
  156. package/src/config/loader.ts +5 -22
  157. package/src/config/schema.ts +2 -0
  158. package/src/config/schemas/__tests__/compaction-logs.test.ts +56 -0
  159. package/src/config/schemas/__tests__/memory-v2.test.ts +0 -1
  160. package/src/config/schemas/__tests__/memory-v3.test.ts +61 -1
  161. package/src/config/schemas/compaction-logs.ts +79 -0
  162. package/src/config/schemas/memory-v2.ts +0 -8
  163. package/src/config/schemas/memory-v3.ts +104 -33
  164. package/src/config/seed-inference-profiles.ts +1 -1
  165. package/src/config/skills.ts +117 -47
  166. package/src/context/compactor.ts +11 -0
  167. package/src/context/strip-injections.ts +38 -4
  168. package/src/credential-execution/feature-gates.ts +0 -21
  169. package/src/credential-execution/startup-timeout.ts +32 -4
  170. package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +18 -0
  171. package/src/daemon/conversation-agent-loop-handlers.ts +140 -91
  172. package/src/daemon/conversation-agent-loop.ts +123 -658
  173. package/src/daemon/conversation-error.ts +6 -33
  174. package/src/daemon/conversation-lifecycle.ts +1 -1
  175. package/src/daemon/conversation-runtime-assembly.ts +183 -22
  176. package/src/daemon/conversation-skill-tools.ts +137 -8
  177. package/src/daemon/conversation-slash.ts +0 -14
  178. package/src/daemon/conversation-store.ts +2 -19
  179. package/src/daemon/conversation-tool-setup.ts +87 -1
  180. package/src/daemon/conversation.ts +119 -50
  181. package/src/daemon/external-plugins-bootstrap.ts +36 -95
  182. package/src/daemon/handlers/config-channels.ts +11 -2
  183. package/src/daemon/handlers/shared.ts +9 -1
  184. package/src/daemon/handlers/skills.ts +10 -4
  185. package/src/daemon/host-app-control-proxy.ts +72 -57
  186. package/src/daemon/host-browser-proxy.ts +117 -22
  187. package/src/daemon/lifecycle.ts +34 -5
  188. package/src/daemon/message-protocol.ts +0 -7
  189. package/src/daemon/message-types/schedules.ts +1 -0
  190. package/src/daemon/message-types/skills.ts +17 -0
  191. package/src/daemon/providers-setup.ts +3 -0
  192. package/src/daemon/server.ts +3 -3
  193. package/src/daemon/tool-setup-types.ts +9 -3
  194. package/src/daemon/trust-context.ts +23 -0
  195. package/src/daemon/workspace-tools-watcher.ts +324 -0
  196. package/src/events/tool-audit-listener.ts +78 -16
  197. package/src/events/tool-metrics-listener.ts +2 -5
  198. package/src/memory/__tests__/compaction-log-writer-clickhouse.test.ts +227 -0
  199. package/src/memory/__tests__/conversation-queries.test.ts +176 -0
  200. package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +20 -32
  201. package/src/memory/compaction-log-writer-clickhouse.ts +418 -0
  202. package/src/memory/conversation-crud.ts +134 -3
  203. package/src/memory/conversation-queries.ts +64 -7
  204. package/src/memory/db-init.ts +14 -0
  205. package/src/memory/embedding-backend.test.ts +130 -1
  206. package/src/memory/embedding-backend.ts +79 -106
  207. package/src/memory/embedding-gemini.ts +5 -0
  208. package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +12 -0
  209. package/src/memory/graph/__tests__/handle-remember-v2.test.ts +19 -0
  210. package/src/memory/graph/conversation-graph-memory.ts +36 -25
  211. package/src/memory/graph/tool-handlers.ts +3 -0
  212. package/src/memory/job-handlers/cleanup.ts +3 -1
  213. package/src/memory/jobs-store.ts +0 -28
  214. package/src/memory/jobs-worker.ts +10 -22
  215. package/src/memory/memory-marker.ts +29 -0
  216. package/src/memory/memory-retrospective-startup-cleanup.ts +1 -1
  217. package/src/memory/migrations/268-add-memory-v3-selections.ts +6 -0
  218. package/src/memory/migrations/270-schedule-description.ts +36 -0
  219. package/src/memory/migrations/275-tool-invocations-add-skill-id.test.ts +81 -0
  220. package/src/memory/migrations/275-tool-invocations-add-skill-id.ts +20 -0
  221. package/src/memory/migrations/276-tool-invocations-created-at-id-index.test.ts +68 -0
  222. package/src/memory/migrations/276-tool-invocations-created-at-id-index.ts +20 -0
  223. package/src/memory/migrations/277-add-memory-v3-ever-injected.ts +29 -0
  224. package/src/memory/migrations/278-tool-invocations-telemetry-columns.test.ts +96 -0
  225. package/src/memory/migrations/278-tool-invocations-telemetry-columns.ts +39 -0
  226. package/src/memory/migrations/279-create-skill-loaded-events.test.ts +84 -0
  227. package/src/memory/migrations/279-create-skill-loaded-events.ts +26 -0
  228. package/src/memory/migrations/280-conversations-surfaced-at.test.ts +88 -0
  229. package/src/memory/migrations/280-conversations-surfaced-at.ts +24 -0
  230. package/src/memory/migrations/index.ts +10 -0
  231. package/src/memory/migrations/registry.ts +8 -0
  232. package/src/memory/schema/conversations.ts +16 -0
  233. package/src/memory/schema/infrastructure.ts +26 -0
  234. package/src/memory/skill-loaded-events-store.test.ts +160 -0
  235. package/src/memory/skill-loaded-events-store.ts +95 -0
  236. package/src/memory/tool-executed-events-store.test.ts +219 -0
  237. package/src/memory/tool-executed-events-store.ts +102 -0
  238. package/src/memory/tool-usage-store.ts +15 -3
  239. package/src/memory/v2/__tests__/consolidation-job.test.ts +117 -12
  240. package/src/memory/v2/__tests__/consolidation-prompt-flag-gating-guard.test.ts +189 -0
  241. package/src/memory/v2/__tests__/injected-block-slugs.test.ts +90 -0
  242. package/src/memory/v2/__tests__/page-store.test.ts +33 -0
  243. package/src/memory/v2/__tests__/prompts-consolidation.test.ts +88 -15
  244. package/src/memory/v2/activation-store.ts +50 -1
  245. package/src/memory/v2/consolidation-job.ts +113 -29
  246. package/src/memory/v2/injected-block-slugs.ts +79 -0
  247. package/src/memory/v2/injection.ts +6 -1
  248. package/src/memory/v2/prompts/consolidation.ts +414 -13
  249. package/src/memory/v2/router.ts +2 -28
  250. package/src/memory/v2/static-context.ts +1 -1
  251. package/src/memory/v2/types.ts +16 -0
  252. package/src/notifications/__tests__/copy-composer.test.ts +244 -0
  253. package/src/notifications/access-request-copy.ts +298 -0
  254. package/src/notifications/adapters/slack.ts +3 -3
  255. package/src/notifications/adapters/telegram.ts +2 -1
  256. package/src/notifications/copy-composer.ts +49 -267
  257. package/src/notifications/decision-engine.ts +16 -35
  258. package/src/notifications/home-feed-side-effect.ts +1 -6
  259. package/src/oauth/oauth-store.ts +0 -9
  260. package/src/permissions/checker.test.ts +83 -1
  261. package/src/permissions/checker.ts +25 -2
  262. package/src/permissions/gateway-threshold-reader.test.ts +182 -0
  263. package/src/permissions/gateway-threshold-reader.ts +80 -0
  264. package/src/platform/client.ts +1 -3
  265. package/src/platform/feature-gate.ts +3 -12
  266. package/src/plugin-api/constants.ts +4 -2
  267. package/src/plugin-api/index.ts +63 -11
  268. package/src/plugin-api/types.ts +236 -71
  269. package/src/plugins/defaults/compaction/compact.ts +66 -2
  270. package/src/plugins/defaults/compaction/context-overflow-reducer.ts +240 -32
  271. package/src/plugins/defaults/compaction/corrected-target.ts +53 -0
  272. package/src/{daemon/context-overflow-policy.ts → plugins/defaults/compaction/overflow-policy.ts} +1 -1
  273. package/src/plugins/defaults/compaction/window-manager.ts +303 -1
  274. package/src/plugins/defaults/empty-response/hooks/post-model-call.ts +173 -0
  275. package/src/plugins/defaults/empty-response/hooks/stop.ts +11 -115
  276. package/src/plugins/defaults/empty-response/nudge-state-store.ts +46 -0
  277. package/src/plugins/defaults/history-repair/hooks/post-model-call.ts +50 -0
  278. package/src/plugins/defaults/history-repair/hooks/stop.ts +22 -0
  279. package/src/plugins/defaults/history-repair/repair-state-store.ts +51 -0
  280. package/src/plugins/defaults/history-repair/terminal.ts +39 -2
  281. package/src/plugins/defaults/image-recovery/detect.ts +25 -0
  282. package/src/plugins/defaults/image-recovery/hooks/post-model-call.ts +73 -0
  283. package/src/plugins/defaults/image-recovery/hooks/stop.ts +22 -0
  284. package/src/plugins/defaults/image-recovery/image-recovery-state-store.ts +48 -0
  285. package/src/plugins/defaults/image-recovery/package.json +14 -0
  286. package/src/{daemon/persist-unsendable-image.ts → plugins/defaults/image-recovery/recover.ts} +67 -14
  287. package/src/plugins/defaults/index.ts +71 -5
  288. package/src/plugins/defaults/memory-retrieval/hooks/post-compact.ts +76 -112
  289. package/src/plugins/defaults/memory-retrieval/hooks/{user-prompt-submit-temp.ts → user-prompt-submit.ts} +83 -74
  290. package/src/plugins/defaults/memory-retrieval/injector-chain.ts +14 -8
  291. package/src/plugins/defaults/memory-retrieval/injectors.ts +2 -18
  292. package/src/plugins/defaults/memory-retrieval/package.json +14 -0
  293. package/src/plugins/defaults/memory-v3-shadow/__tests__/carry-integration.test.ts +1157 -0
  294. package/src/plugins/defaults/memory-v3-shadow/__tests__/injection.test.ts +683 -0
  295. package/src/plugins/defaults/memory-v3-shadow/__tests__/live-integration.test.ts +161 -140
  296. package/src/plugins/defaults/memory-v3-shadow/__tests__/maintain-job.test.ts +160 -0
  297. package/src/plugins/defaults/memory-v3-shadow/__tests__/orchestrate.test.ts +335 -316
  298. package/src/plugins/defaults/memory-v3-shadow/__tests__/pool-select.test.ts +145 -53
  299. package/src/plugins/defaults/memory-v3-shadow/__tests__/render-injection.test.ts +38 -1
  300. package/src/plugins/defaults/memory-v3-shadow/__tests__/selection-log-store.test.ts +18 -8
  301. package/src/plugins/defaults/memory-v3-shadow/__tests__/shadow-integration.test.ts +112 -71
  302. package/src/plugins/defaults/memory-v3-shadow/__tests__/shadow-plugin.test.ts +192 -51
  303. package/src/plugins/defaults/memory-v3-shadow/__tests__/types.test.ts +4 -16
  304. package/src/plugins/defaults/memory-v3-shadow/card.test.ts +173 -0
  305. package/src/plugins/defaults/memory-v3-shadow/card.ts +116 -0
  306. package/src/plugins/defaults/memory-v3-shadow/core-set.test.ts +104 -0
  307. package/src/plugins/defaults/memory-v3-shadow/core-set.ts +59 -0
  308. package/src/plugins/defaults/memory-v3-shadow/ever-injected-store.test.ts +305 -0
  309. package/src/plugins/defaults/memory-v3-shadow/ever-injected-store.ts +278 -0
  310. package/src/plugins/defaults/memory-v3-shadow/hot-set.test.ts +138 -0
  311. package/src/plugins/defaults/memory-v3-shadow/hot-set.ts +85 -0
  312. package/src/plugins/defaults/memory-v3-shadow/injector.ts +331 -24
  313. package/src/plugins/defaults/memory-v3-shadow/maintain-job.ts +119 -13
  314. package/src/plugins/defaults/memory-v3-shadow/orchestrate.ts +169 -114
  315. package/src/plugins/defaults/memory-v3-shadow/page-content.ts +47 -16
  316. package/src/plugins/defaults/memory-v3-shadow/pool-select.ts +144 -66
  317. package/src/plugins/defaults/memory-v3-shadow/prune.test.ts +758 -0
  318. package/src/plugins/defaults/memory-v3-shadow/prune.ts +471 -0
  319. package/src/plugins/defaults/memory-v3-shadow/render-injection.ts +68 -16
  320. package/src/plugins/defaults/memory-v3-shadow/selection-log-store.ts +19 -12
  321. package/src/plugins/defaults/memory-v3-shadow/shadow-plugin.ts +96 -43
  322. package/src/plugins/defaults/memory-v3-shadow/types.ts +34 -17
  323. package/src/plugins/defaults/title-generate/hooks/stop.ts +9 -11
  324. package/src/plugins/pipeline.ts +8 -5
  325. package/src/plugins/types.ts +5 -51
  326. package/src/providers/cache-control.ts +26 -0
  327. package/src/providers/inference/__tests__/base-url-route-validation.test.ts +1 -2
  328. package/src/providers/model-catalog.ts +13 -1
  329. package/src/providers/openai/__tests__/tool-choice-mapping.test.ts +147 -0
  330. package/src/providers/openai/chat-completions-provider.ts +46 -0
  331. package/src/providers/openai/responses-provider.ts +45 -0
  332. package/src/providers/registry.ts +0 -8
  333. package/src/runtime/__tests__/agent-wake.test.ts +0 -1
  334. package/src/runtime/agent-wake.ts +13 -0
  335. package/src/runtime/routes/__tests__/acp-routes.test.ts +151 -0
  336. package/src/runtime/routes/__tests__/consolidation-routes.test.ts +12 -50
  337. package/src/runtime/routes/__tests__/conversation-surface-routes.test.ts +322 -0
  338. package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +0 -62
  339. package/src/runtime/routes/__tests__/plugins-routes.test.ts +31 -11
  340. package/src/runtime/routes/acp-routes.test.ts +106 -0
  341. package/src/runtime/routes/acp-routes.ts +248 -2
  342. package/src/runtime/routes/browser-tabs-routes.ts +1 -1
  343. package/src/runtime/routes/channel-verification-routes.ts +14 -5
  344. package/src/runtime/routes/chatgpt-subscription-auth-routes.ts +0 -14
  345. package/src/runtime/routes/consolidation-routes.ts +6 -82
  346. package/src/runtime/routes/conversation-list-routes.ts +6 -0
  347. package/src/runtime/routes/conversation-management-routes.ts +71 -0
  348. package/src/runtime/routes/identity-routes.ts +8 -0
  349. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +33 -34
  350. package/src/runtime/routes/inference-provider-connection-routes.ts +0 -45
  351. package/src/runtime/routes/plugins-routes.ts +34 -45
  352. package/src/runtime/routes/schedule-routes.ts +43 -5
  353. package/src/runtime/routes/settings-routes.ts +140 -15
  354. package/src/runtime/routes/skills-routes.ts +18 -6
  355. package/src/runtime/services/__tests__/conversation-serializer.test.ts +140 -0
  356. package/src/runtime/services/conversation-serializer.ts +38 -1
  357. package/src/runtime/verification-outbound-actions.ts +147 -2
  358. package/src/runtime/verification-templates.ts +29 -3
  359. package/src/schedule/schedule-store.ts +19 -0
  360. package/src/skills/catalog-install.ts +77 -13
  361. package/src/tasks/task-scheduler.ts +1 -0
  362. package/src/telemetry/types.ts +66 -1
  363. package/src/telemetry/usage-telemetry-reporter.test.ts +542 -13
  364. package/src/telemetry/usage-telemetry-reporter.ts +213 -20
  365. package/src/tools/browser/__tests__/browser-execution-acquire.test.ts +49 -2
  366. package/src/tools/browser/__tests__/browser-status.test.ts +29 -5
  367. package/src/tools/browser/browser-execution.ts +27 -9
  368. package/src/tools/browser/cdp-client/__tests__/factory.test.ts +380 -4
  369. package/src/tools/browser/cdp-client/__tests__/host-bridge-cdp-client.test.ts +107 -0
  370. package/src/tools/browser/cdp-client/__tests__/types.test.ts +6 -1
  371. package/src/tools/browser/cdp-client/factory.ts +217 -17
  372. package/src/tools/browser/cdp-client/host-bridge-cdp-client.ts +67 -0
  373. package/src/tools/browser/cdp-client/types.ts +22 -2
  374. package/src/tools/credential-execution/make-authenticated-request.ts +2 -1
  375. package/src/tools/credential-execution/manage-secure-command-tool.ts +169 -164
  376. package/src/tools/credential-execution/run-authenticated-command.ts +2 -1
  377. package/src/tools/executor.ts +39 -7
  378. package/src/tools/registry.ts +387 -5
  379. package/src/tools/schedule/create.ts +16 -0
  380. package/src/tools/schedule/list.ts +12 -4
  381. package/src/tools/schedule/update.ts +12 -0
  382. package/src/tools/skills/load.ts +11 -6
  383. package/src/tools/terminal/safe-env.ts +2 -0
  384. package/src/tools/types.ts +65 -9
  385. package/src/tools/workspace-tools/loader.ts +673 -0
  386. package/src/usage/attribution.ts +28 -0
  387. package/src/util/device-id.ts +17 -3
  388. package/src/util/platform.ts +16 -0
  389. package/tsconfig.plugin-api.json +13 -0
  390. package/src/__tests__/plugin-external-api.test.ts +0 -68
  391. package/src/__tests__/plugin-skill-contribution.test.ts +0 -355
  392. package/src/daemon/message-types/browser.ts +0 -10
  393. package/src/notifications/__tests__/emit-signal-home-feed.test.ts +0 -187
  394. package/src/plugins/defaults/memory-v3-shadow/__tests__/fixtures/eval-turns.json +0 -36
  395. package/src/plugins/defaults/memory-v3-shadow/__tests__/fixtures/live-turns.json +0 -37
  396. package/src/plugins/defaults/memory-v3-shadow/__tests__/working-set-eviction.test.ts +0 -106
  397. package/src/plugins/defaults/memory-v3-shadow/__tests__/working-set-skeleton.test.ts +0 -44
  398. package/src/plugins/defaults/memory-v3-shadow/working-set.ts +0 -91
  399. package/src/plugins/external-api.ts +0 -114
  400. package/src/plugins/plugin-skill-contributions.ts +0 -292
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.8.10
6
+ version: 0.8.11
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
@@ -96,8 +96,11 @@ paths:
96
96
  operationId: acp_by_id_steer_post
97
97
  summary: Steer ACP session
98
98
  description:
99
- Send a steering instruction to an ACP session. Sessions no longer in memory (completed, or lost to a daemon
100
- restart) are transparently resumed from persisted history first, when the agent supports ACP session loading.
99
+ "Send a steering instruction to an ACP session. Sessions no longer in memory (completed, or lost to a
100
+ daemon restart) are transparently resumed from persisted history first, when the agent supports ACP session
101
+ loading. Resuming a terminal session re-spawns the host agent, so it requires guardian approval: the route acks
102
+ immediately with approvalPending=true and performs the resume in the background once approved, streaming results
103
+ over SSE."
101
104
  tags:
102
105
  - acp
103
106
  responses:
@@ -115,6 +118,11 @@ paths:
115
118
  resumed:
116
119
  description: True when the session was resumed from persisted history before steering.
117
120
  type: boolean
121
+ approvalPending:
122
+ description:
123
+ True when the steer triggered a guardian-approval-gated resume that will run asynchronously; watch SSE for
124
+ the outcome.
125
+ type: boolean
118
126
  required:
119
127
  - acpSessionId
120
128
  - steered
@@ -4531,55 +4539,6 @@ paths:
4531
4539
  - lastRunAt
4532
4540
  - success
4533
4541
  additionalProperties: false
4534
- put:
4535
- operationId: consolidation_config_put
4536
- summary: Update consolidation config
4537
- description: Update the memory v2 consolidation schedule configuration.
4538
- tags:
4539
- - consolidation
4540
- responses:
4541
- "200":
4542
- description: Successful response
4543
- content:
4544
- application/json:
4545
- schema:
4546
- type: object
4547
- properties:
4548
- available:
4549
- type: boolean
4550
- enabled:
4551
- type: boolean
4552
- intervalMs:
4553
- type: number
4554
- nextRunAt:
4555
- anyOf:
4556
- - type: number
4557
- - type: "null"
4558
- lastRunAt:
4559
- anyOf:
4560
- - type: number
4561
- - type: "null"
4562
- success:
4563
- type: boolean
4564
- required:
4565
- - available
4566
- - enabled
4567
- - intervalMs
4568
- - nextRunAt
4569
- - lastRunAt
4570
- - success
4571
- additionalProperties: false
4572
- requestBody:
4573
- required: true
4574
- content:
4575
- application/json:
4576
- schema:
4577
- type: object
4578
- properties:
4579
- enabled:
4580
- description: Enable or disable automatic consolidation
4581
- type: boolean
4582
- additionalProperties: false
4583
4542
  /v1/consolidation/run-now:
4584
4543
  post:
4585
4544
  operationId: consolidation_runnow_post
@@ -6012,6 +5971,8 @@ paths:
6012
5971
  additionalProperties: false
6013
5972
  archivedAt:
6014
5973
  type: number
5974
+ surfacedAt:
5975
+ type: number
6015
5976
  inferenceProfile:
6016
5977
  type: string
6017
5978
  isProcessing:
@@ -6373,6 +6334,8 @@ paths:
6373
6334
  additionalProperties: false
6374
6335
  archivedAt:
6375
6336
  type: number
6337
+ surfacedAt:
6338
+ type: number
6376
6339
  inferenceProfile:
6377
6340
  type: string
6378
6341
  isProcessing:
@@ -6571,6 +6534,8 @@ paths:
6571
6534
  additionalProperties: false
6572
6535
  archivedAt:
6573
6536
  type: number
6537
+ surfacedAt:
6538
+ type: number
6574
6539
  inferenceProfile:
6575
6540
  type: string
6576
6541
  isProcessing:
@@ -6979,6 +6944,56 @@ paths:
6979
6944
  required: true
6980
6945
  schema:
6981
6946
  type: string
6947
+ /v1/conversations/{id}/surface:
6948
+ post:
6949
+ operationId: conversations_by_id_surface_post
6950
+ summary: Surface a conversation into Recents
6951
+ description:
6952
+ Explicitly promote a background or scheduled conversation into the default conversation listing (the
6953
+ Recents sidebar grouping), or demote it with surfaced=false. Conversations are never surfaced automatically.
6954
+ tags:
6955
+ - conversations
6956
+ responses:
6957
+ "200":
6958
+ description: Successful response
6959
+ content:
6960
+ application/json:
6961
+ schema:
6962
+ type: object
6963
+ properties:
6964
+ ok:
6965
+ type: boolean
6966
+ conversationId:
6967
+ type: string
6968
+ surfacedAt:
6969
+ anyOf:
6970
+ - type: number
6971
+ - type: "null"
6972
+ description: Epoch-ms timestamp of the promotion, or null when cleared.
6973
+ required:
6974
+ - ok
6975
+ - conversationId
6976
+ - surfacedAt
6977
+ additionalProperties: false
6978
+ parameters:
6979
+ - name: id
6980
+ in: path
6981
+ required: true
6982
+ schema:
6983
+ type: string
6984
+ requestBody:
6985
+ required: true
6986
+ content:
6987
+ application/json:
6988
+ schema:
6989
+ type: object
6990
+ properties:
6991
+ surfaced:
6992
+ type: boolean
6993
+ description: true to surface the conversation into Recents, false to clear the promotion.
6994
+ required:
6995
+ - surfaced
6996
+ additionalProperties: false
6982
6997
  /v1/conversations/{id}/unarchive:
6983
6998
  post:
6984
6999
  operationId: conversations_by_id_unarchive_post
@@ -7534,6 +7549,8 @@ paths:
7534
7549
  additionalProperties: false
7535
7550
  archivedAt:
7536
7551
  type: number
7552
+ surfacedAt:
7553
+ type: number
7537
7554
  inferenceProfile:
7538
7555
  type: string
7539
7556
  isProcessing:
@@ -11174,6 +11191,14 @@ paths:
11174
11191
  required:
11175
11192
  - connected
11176
11193
  additionalProperties: false
11194
+ capabilities:
11195
+ type: object
11196
+ properties:
11197
+ memoryOptOut:
11198
+ type: boolean
11199
+ required:
11200
+ - memoryOptOut
11201
+ additionalProperties: false
11177
11202
  profiler:
11178
11203
  type: object
11179
11204
  properties:
@@ -11258,6 +11283,7 @@ paths:
11258
11283
  - cpu
11259
11284
  - migrations
11260
11285
  - ces
11286
+ - capabilities
11261
11287
  additionalProperties: false
11262
11288
  /v1/healthz:
11263
11289
  get:
@@ -11342,6 +11368,14 @@ paths:
11342
11368
  required:
11343
11369
  - connected
11344
11370
  additionalProperties: false
11371
+ capabilities:
11372
+ type: object
11373
+ properties:
11374
+ memoryOptOut:
11375
+ type: boolean
11376
+ required:
11377
+ - memoryOptOut
11378
+ additionalProperties: false
11345
11379
  profiler:
11346
11380
  type: object
11347
11381
  properties:
@@ -11426,6 +11460,7 @@ paths:
11426
11460
  - cpu
11427
11461
  - migrations
11428
11462
  - ces
11463
+ - capabilities
11429
11464
  additionalProperties: false
11430
11465
  /v1/heartbeat/checklist:
11431
11466
  get:
@@ -15937,6 +15972,8 @@ paths:
15937
15972
  - assistant
15938
15973
  content:
15939
15974
  type: string
15975
+ deprecated: true
15976
+ description: "Deprecated: superseded by contentBlocks. Flat plain-text body (joined text segments)."
15940
15977
  timestamp:
15941
15978
  type: string
15942
15979
  attachments:
@@ -16241,6 +16278,8 @@ paths:
16241
16278
  - name
16242
16279
  - input
16243
16280
  additionalProperties: false
16281
+ deprecated: true
16282
+ description: "Deprecated: superseded by contentBlocks (the tool_use variant). Flat list of tool calls."
16244
16283
  surfaces:
16245
16284
  type: array
16246
16285
  items:
@@ -16292,18 +16331,28 @@ paths:
16292
16331
  - surfaceType
16293
16332
  - data
16294
16333
  additionalProperties: false
16334
+ deprecated: true
16335
+ description: "Deprecated: superseded by contentBlocks (the surface variant). Flat list of surfaces."
16295
16336
  textSegments:
16296
16337
  type: array
16297
16338
  items:
16298
16339
  type: string
16340
+ deprecated: true
16341
+ description: "Deprecated: superseded by contentBlocks. Text segments split by tool-call boundaries."
16299
16342
  thinkingSegments:
16300
16343
  type: array
16301
16344
  items:
16302
16345
  type: string
16346
+ deprecated: true
16347
+ description: "Deprecated: superseded by contentBlocks. Reasoning text extracted from thinking blocks."
16303
16348
  contentOrder:
16304
16349
  type: array
16305
16350
  items:
16306
16351
  type: string
16352
+ deprecated: true
16353
+ description:
16354
+ 'Deprecated: superseded by contentBlocks. Positional "<type>:<index>" content ordering (e.g. "text:0",
16355
+ "thinking:1").'
16307
16356
  contentBlocks:
16308
16357
  type: array
16309
16358
  items:
@@ -16326,6 +16375,10 @@ paths:
16326
16375
  const: thinking
16327
16376
  thinking:
16328
16377
  type: string
16378
+ startedAt:
16379
+ type: number
16380
+ completedAt:
16381
+ type: number
16329
16382
  required:
16330
16383
  - type
16331
16384
  - thinking
@@ -19380,15 +19433,7 @@ paths:
19380
19433
  - type: "null"
19381
19434
  description: Resolved version (installed copy first, then repo `package.json`).
19382
19435
  source:
19383
- oneOf:
19384
- - type: object
19385
- properties:
19386
- kind:
19387
- type: string
19388
- const: first-party
19389
- required:
19390
- - kind
19391
- additionalProperties: false
19436
+ anyOf:
19392
19437
  - type: object
19393
19438
  properties:
19394
19439
  kind:
@@ -19408,7 +19453,9 @@ paths:
19408
19453
  - repo
19409
19454
  - ref
19410
19455
  additionalProperties: false
19411
- description: "Origin of the match: a first-party in-repo plugin or a whitelisted external one."
19456
+ description: "Origin of the match: a whitelisted external plugin repository."
19457
+ - type: "null"
19458
+ description: Pinned origin from the marketplace entry, or null when an installed copy has no catalog entry.
19412
19459
  readme:
19413
19460
  anyOf:
19414
19461
  - type: string
@@ -19449,13 +19496,12 @@ paths:
19449
19496
  operationId: plugins_install_post
19450
19497
  summary: Install a plugin
19451
19498
  description:
19452
- "Install a plugin by name from the canonical source — a whitelisted `experimental/plugins/marketplace.json`
19453
- entry, else the first-party `experimental/plugins/<name>/` convention. Always resolves against the curated
19454
- default git ref (no caller-supplied ref): installing from an unreviewed revision would bypass the
19455
- marketplace/first-party curation boundary and let attacker-controlled code be loaded. Materializes the plugin
19456
- under `<workspaceDir>/plugins/<name>/`; the assistant must be restarted to load it. Mirrors the CLI's `assistant
19457
- plugins install <name>`. An already-installed name without `force` returns 409; a name that resolves to nothing
19458
- returns 404. Sibling to `POST /v1/skills/install`."
19499
+ "Install a plugin by name from the canonical source — a whitelisted `plugins/marketplace.json` entry.
19500
+ Always resolves against the curated default git ref (no caller-supplied ref): installing from an unreviewed
19501
+ revision would bypass the marketplace curation boundary and let attacker-controlled code be loaded. Materializes
19502
+ the plugin under `<workspaceDir>/plugins/<name>/`; the assistant must be restarted to load it. Mirrors the CLI's
19503
+ `assistant plugins install <name>`. An already-installed name without `force` returns 409; a name that resolves
19504
+ to nothing returns 404. Sibling to `POST /v1/skills/install`."
19459
19505
  tags:
19460
19506
  - plugins
19461
19507
  responses:
@@ -19503,7 +19549,7 @@ paths:
19503
19549
  properties:
19504
19550
  name:
19505
19551
  type: string
19506
- description: Install name to resolve against the catalog (first-party directory or marketplace entry).
19552
+ description: Install name to resolve against the marketplace catalog.
19507
19553
  force:
19508
19554
  description: Overwrite an existing install in place. Defaults to false.
19509
19555
  type: boolean
@@ -19515,9 +19561,9 @@ paths:
19515
19561
  operationId: plugins_search_get
19516
19562
  summary: Search the plugin catalog
19517
19563
  description:
19518
- List installable plugins from the canonical `vellum-ai/vellum-assistant` catalog at
19519
- `experimental/plugins/`. The query is an ECMAScript regex matched case-insensitively against the directory name
19520
- (e.g. `memory`, `^simple`). Empty query returns every entry. Mirrors the CLI's `assistant plugins search`.
19564
+ List installable plugins from the curated `plugins/marketplace.json` catalog. The query is an ECMAScript
19565
+ regex matched case-insensitively against the plugin name (e.g. `memory`, `^simple`). Empty query returns every
19566
+ entry. Mirrors the CLI's `assistant plugins search`.
19521
19567
  tags:
19522
19568
  - plugins
19523
19569
  responses:
@@ -19544,42 +19590,31 @@ paths:
19544
19590
  description: Install name. Matches `assistant plugins install <name>`.
19545
19591
  path:
19546
19592
  type: string
19547
- description:
19548
- "Human-readable origin: a repo-relative path (`experimental/plugins/<name>`) for first-party plugins or a
19549
- `github:owner/repo@ref` locator for external ones."
19593
+ description: "Human-readable origin: a `github:owner/repo@ref` locator for the external plugin."
19550
19594
  description:
19551
19595
  description: Short description, when known (external entries only today).
19552
19596
  type: string
19553
19597
  source:
19554
- oneOf:
19555
- - type: object
19556
- properties:
19557
- kind:
19558
- type: string
19559
- const: first-party
19560
- required:
19561
- - kind
19562
- additionalProperties: false
19563
- - type: object
19564
- properties:
19565
- kind:
19566
- type: string
19567
- const: github
19568
- repo:
19569
- type: string
19570
- description: "`owner/repo` of the external plugin repository."
19571
- path:
19572
- description: Directory within the repo, when the plugin is not at the root.
19573
- type: string
19574
- ref:
19575
- type: string
19576
- description: Pinned git ref the plugin is fetched from.
19577
- required:
19578
- - kind
19579
- - repo
19580
- - ref
19581
- additionalProperties: false
19582
- description: "Origin of the match: a first-party in-repo plugin or a whitelisted external one."
19598
+ type: object
19599
+ properties:
19600
+ kind:
19601
+ type: string
19602
+ const: github
19603
+ repo:
19604
+ type: string
19605
+ description: "`owner/repo` of the external plugin repository."
19606
+ path:
19607
+ description: Directory within the repo, when the plugin is not at the root.
19608
+ type: string
19609
+ ref:
19610
+ type: string
19611
+ description: Pinned git ref the plugin is fetched from.
19612
+ required:
19613
+ - kind
19614
+ - repo
19615
+ - ref
19616
+ additionalProperties: false
19617
+ description: "Origin of the match: a whitelisted external plugin repository."
19583
19618
  required:
19584
19619
  - name
19585
19620
  - path
@@ -20290,9 +20325,9 @@ paths:
20290
20325
  - type: number
20291
20326
  - type: "null"
20292
20327
  description:
20293
- anyOf:
20294
- - type: string
20295
- - type: "null"
20328
+ type: string
20329
+ cadenceDescription:
20330
+ type: string
20296
20331
  mode:
20297
20332
  type: string
20298
20333
  enum:
@@ -20342,6 +20377,7 @@ paths:
20342
20377
  - createdFromConversationExists
20343
20378
  - createdFromConversationArchivedAt
20344
20379
  - description
20380
+ - cadenceDescription
20345
20381
  - mode
20346
20382
  - status
20347
20383
  - routingIntent
@@ -20439,9 +20475,9 @@ paths:
20439
20475
  - type: number
20440
20476
  - type: "null"
20441
20477
  description:
20442
- anyOf:
20443
- - type: string
20444
- - type: "null"
20478
+ type: string
20479
+ cadenceDescription:
20480
+ type: string
20445
20481
  mode:
20446
20482
  type: string
20447
20483
  enum:
@@ -20491,6 +20527,7 @@ paths:
20491
20527
  - createdFromConversationExists
20492
20528
  - createdFromConversationArchivedAt
20493
20529
  - description
20530
+ - cadenceDescription
20494
20531
  - mode
20495
20532
  - status
20496
20533
  - routingIntent
@@ -20512,6 +20549,9 @@ paths:
20512
20549
  name:
20513
20550
  type: string
20514
20551
  description: Display name
20552
+ description:
20553
+ type: string
20554
+ description: Authored schedule description. Defaults to the schedule name when omitted for backward compatibility.
20515
20555
  expression:
20516
20556
  type: string
20517
20557
  description: Cron or RRULE expression
@@ -20614,9 +20654,9 @@ paths:
20614
20654
  - type: number
20615
20655
  - type: "null"
20616
20656
  description:
20617
- anyOf:
20618
- - type: string
20619
- - type: "null"
20657
+ type: string
20658
+ cadenceDescription:
20659
+ type: string
20620
20660
  mode:
20621
20661
  type: string
20622
20662
  enum:
@@ -20666,6 +20706,7 @@ paths:
20666
20706
  - createdFromConversationExists
20667
20707
  - createdFromConversationArchivedAt
20668
20708
  - description
20709
+ - cadenceDescription
20669
20710
  - mode
20670
20711
  - status
20671
20712
  - routingIntent
@@ -20762,9 +20803,9 @@ paths:
20762
20803
  - type: number
20763
20804
  - type: "null"
20764
20805
  description:
20765
- anyOf:
20766
- - type: string
20767
- - type: "null"
20806
+ type: string
20807
+ cadenceDescription:
20808
+ type: string
20768
20809
  mode:
20769
20810
  type: string
20770
20811
  enum:
@@ -20814,6 +20855,7 @@ paths:
20814
20855
  - createdFromConversationExists
20815
20856
  - createdFromConversationArchivedAt
20816
20857
  - description
20858
+ - cadenceDescription
20817
20859
  - mode
20818
20860
  - status
20819
20861
  - routingIntent
@@ -20840,6 +20882,8 @@ paths:
20840
20882
  properties:
20841
20883
  name:
20842
20884
  type: string
20885
+ description:
20886
+ type: string
20843
20887
  expression:
20844
20888
  type: string
20845
20889
  timezone:
@@ -20953,9 +20997,9 @@ paths:
20953
20997
  - type: number
20954
20998
  - type: "null"
20955
20999
  description:
20956
- anyOf:
20957
- - type: string
20958
- - type: "null"
21000
+ type: string
21001
+ cadenceDescription:
21002
+ type: string
20959
21003
  mode:
20960
21004
  type: string
20961
21005
  enum:
@@ -21005,6 +21049,7 @@ paths:
21005
21049
  - createdFromConversationExists
21006
21050
  - createdFromConversationArchivedAt
21007
21051
  - description
21052
+ - cadenceDescription
21008
21053
  - mode
21009
21054
  - status
21010
21055
  - routingIntent
@@ -21102,9 +21147,9 @@ paths:
21102
21147
  - type: number
21103
21148
  - type: "null"
21104
21149
  description:
21105
- anyOf:
21106
- - type: string
21107
- - type: "null"
21150
+ type: string
21151
+ cadenceDescription:
21152
+ type: string
21108
21153
  mode:
21109
21154
  type: string
21110
21155
  enum:
@@ -21154,6 +21199,7 @@ paths:
21154
21199
  - createdFromConversationExists
21155
21200
  - createdFromConversationArchivedAt
21156
21201
  - description
21202
+ - cadenceDescription
21157
21203
  - mode
21158
21204
  - status
21159
21205
  - routingIntent
@@ -21340,9 +21386,9 @@ paths:
21340
21386
  - type: number
21341
21387
  - type: "null"
21342
21388
  description:
21343
- anyOf:
21344
- - type: string
21345
- - type: "null"
21389
+ type: string
21390
+ cadenceDescription:
21391
+ type: string
21346
21392
  mode:
21347
21393
  type: string
21348
21394
  enum:
@@ -21392,6 +21438,7 @@ paths:
21392
21438
  - createdFromConversationExists
21393
21439
  - createdFromConversationArchivedAt
21394
21440
  - description
21441
+ - cadenceDescription
21395
21442
  - mode
21396
21443
  - status
21397
21444
  - routingIntent
@@ -22176,6 +22223,22 @@ paths:
22176
22223
  - available
22177
22224
  category:
22178
22225
  type: string
22226
+ owner:
22227
+ type: object
22228
+ properties:
22229
+ kind:
22230
+ type: string
22231
+ enum:
22232
+ - skill
22233
+ - mcp
22234
+ - plugin
22235
+ - workspace
22236
+ id:
22237
+ type: string
22238
+ required:
22239
+ - kind
22240
+ - id
22241
+ additionalProperties: false
22179
22242
  origin:
22180
22243
  type: string
22181
22244
  const: vellum
@@ -22214,6 +22277,22 @@ paths:
22214
22277
  - available
22215
22278
  category:
22216
22279
  type: string
22280
+ owner:
22281
+ type: object
22282
+ properties:
22283
+ kind:
22284
+ type: string
22285
+ enum:
22286
+ - skill
22287
+ - mcp
22288
+ - plugin
22289
+ - workspace
22290
+ id:
22291
+ type: string
22292
+ required:
22293
+ - kind
22294
+ - id
22295
+ additionalProperties: false
22217
22296
  origin:
22218
22297
  type: string
22219
22298
  const: clawhub
@@ -22272,6 +22351,22 @@ paths:
22272
22351
  - available
22273
22352
  category:
22274
22353
  type: string
22354
+ owner:
22355
+ type: object
22356
+ properties:
22357
+ kind:
22358
+ type: string
22359
+ enum:
22360
+ - skill
22361
+ - mcp
22362
+ - plugin
22363
+ - workspace
22364
+ id:
22365
+ type: string
22366
+ required:
22367
+ - kind
22368
+ - id
22369
+ additionalProperties: false
22275
22370
  origin:
22276
22371
  type: string
22277
22372
  const: skillssh
@@ -22345,6 +22440,22 @@ paths:
22345
22440
  - available
22346
22441
  category:
22347
22442
  type: string
22443
+ owner:
22444
+ type: object
22445
+ properties:
22446
+ kind:
22447
+ type: string
22448
+ enum:
22449
+ - skill
22450
+ - mcp
22451
+ - plugin
22452
+ - workspace
22453
+ id:
22454
+ type: string
22455
+ required:
22456
+ - kind
22457
+ - id
22458
+ additionalProperties: false
22348
22459
  origin:
22349
22460
  type: string
22350
22461
  const: custom
@@ -22502,6 +22613,22 @@ paths:
22502
22613
  - available
22503
22614
  category:
22504
22615
  type: string
22616
+ owner:
22617
+ type: object
22618
+ properties:
22619
+ kind:
22620
+ type: string
22621
+ enum:
22622
+ - skill
22623
+ - mcp
22624
+ - plugin
22625
+ - workspace
22626
+ id:
22627
+ type: string
22628
+ required:
22629
+ - kind
22630
+ - id
22631
+ additionalProperties: false
22505
22632
  origin:
22506
22633
  type: string
22507
22634
  const: vellum
@@ -22725,6 +22852,22 @@ paths:
22725
22852
  - available
22726
22853
  category:
22727
22854
  type: string
22855
+ owner:
22856
+ type: object
22857
+ properties:
22858
+ kind:
22859
+ type: string
22860
+ enum:
22861
+ - skill
22862
+ - mcp
22863
+ - plugin
22864
+ - workspace
22865
+ id:
22866
+ type: string
22867
+ required:
22868
+ - kind
22869
+ - id
22870
+ additionalProperties: false
22728
22871
  origin:
22729
22872
  type: string
22730
22873
  const: custom
@@ -22892,6 +23035,22 @@ paths:
22892
23035
  - available
22893
23036
  category:
22894
23037
  type: string
23038
+ owner:
23039
+ type: object
23040
+ properties:
23041
+ kind:
23042
+ type: string
23043
+ enum:
23044
+ - skill
23045
+ - mcp
23046
+ - plugin
23047
+ - workspace
23048
+ id:
23049
+ type: string
23050
+ required:
23051
+ - kind
23052
+ - id
23053
+ additionalProperties: false
22895
23054
  origin:
22896
23055
  type: string
22897
23056
  const: vellum
@@ -22930,6 +23089,22 @@ paths:
22930
23089
  - available
22931
23090
  category:
22932
23091
  type: string
23092
+ owner:
23093
+ type: object
23094
+ properties:
23095
+ kind:
23096
+ type: string
23097
+ enum:
23098
+ - skill
23099
+ - mcp
23100
+ - plugin
23101
+ - workspace
23102
+ id:
23103
+ type: string
23104
+ required:
23105
+ - kind
23106
+ - id
23107
+ additionalProperties: false
22933
23108
  origin:
22934
23109
  type: string
22935
23110
  const: clawhub
@@ -22988,6 +23163,22 @@ paths:
22988
23163
  - available
22989
23164
  category:
22990
23165
  type: string
23166
+ owner:
23167
+ type: object
23168
+ properties:
23169
+ kind:
23170
+ type: string
23171
+ enum:
23172
+ - skill
23173
+ - mcp
23174
+ - plugin
23175
+ - workspace
23176
+ id:
23177
+ type: string
23178
+ required:
23179
+ - kind
23180
+ - id
23181
+ additionalProperties: false
22991
23182
  origin:
22992
23183
  type: string
22993
23184
  const: skillssh
@@ -23061,6 +23252,22 @@ paths:
23061
23252
  - available
23062
23253
  category:
23063
23254
  type: string
23255
+ owner:
23256
+ type: object
23257
+ properties:
23258
+ kind:
23259
+ type: string
23260
+ enum:
23261
+ - skill
23262
+ - mcp
23263
+ - plugin
23264
+ - workspace
23265
+ id:
23266
+ type: string
23267
+ required:
23268
+ - kind
23269
+ - id
23270
+ additionalProperties: false
23064
23271
  origin:
23065
23272
  type: string
23066
23273
  const: custom
@@ -23409,6 +23616,22 @@ paths:
23409
23616
  - available
23410
23617
  category:
23411
23618
  type: string
23619
+ owner:
23620
+ type: object
23621
+ properties:
23622
+ kind:
23623
+ type: string
23624
+ enum:
23625
+ - skill
23626
+ - mcp
23627
+ - plugin
23628
+ - workspace
23629
+ id:
23630
+ type: string
23631
+ required:
23632
+ - kind
23633
+ - id
23634
+ additionalProperties: false
23412
23635
  origin:
23413
23636
  type: string
23414
23637
  const: vellum
@@ -23447,6 +23670,22 @@ paths:
23447
23670
  - available
23448
23671
  category:
23449
23672
  type: string
23673
+ owner:
23674
+ type: object
23675
+ properties:
23676
+ kind:
23677
+ type: string
23678
+ enum:
23679
+ - skill
23680
+ - mcp
23681
+ - plugin
23682
+ - workspace
23683
+ id:
23684
+ type: string
23685
+ required:
23686
+ - kind
23687
+ - id
23688
+ additionalProperties: false
23450
23689
  origin:
23451
23690
  type: string
23452
23691
  const: clawhub
@@ -23505,6 +23744,22 @@ paths:
23505
23744
  - available
23506
23745
  category:
23507
23746
  type: string
23747
+ owner:
23748
+ type: object
23749
+ properties:
23750
+ kind:
23751
+ type: string
23752
+ enum:
23753
+ - skill
23754
+ - mcp
23755
+ - plugin
23756
+ - workspace
23757
+ id:
23758
+ type: string
23759
+ required:
23760
+ - kind
23761
+ - id
23762
+ additionalProperties: false
23508
23763
  origin:
23509
23764
  type: string
23510
23765
  const: skillssh
@@ -23578,6 +23833,22 @@ paths:
23578
23833
  - available
23579
23834
  category:
23580
23835
  type: string
23836
+ owner:
23837
+ type: object
23838
+ properties:
23839
+ kind:
23840
+ type: string
23841
+ enum:
23842
+ - skill
23843
+ - mcp
23844
+ - plugin
23845
+ - workspace
23846
+ id:
23847
+ type: string
23848
+ required:
23849
+ - kind
23850
+ - id
23851
+ additionalProperties: false
23581
23852
  origin:
23582
23853
  type: string
23583
23854
  const: custom
@@ -24663,13 +24934,74 @@ paths:
24663
24934
  /v1/tools:
24664
24935
  get:
24665
24936
  operationId: tools_get
24666
- summary: List tools
24667
- description: Return available tool names with their descriptions, risk levels, and categories.
24937
+ summary: List registered tools with metadata and schemas
24938
+ description:
24939
+ "Return registered tools. Without `conversationId`, returns every tool in the global registry; `tools`
24940
+ carries per-tool metadata (description, author-asserted risk level, category, and contributing source: core,
24941
+ skill, plugin, or MCP server) and `names`/`schemas` additionally cover skill tools whose manifests are present
24942
+ but not yet loaded, for the permission-simulator catalog. With `conversationId`, scopes the result to the tools
24943
+ available to that conversation as of its most recent turn (including skill/MCP tools registered over its
24944
+ lifecycle); 404 if no such conversation is active."
24668
24945
  tags:
24669
24946
  - tools
24670
24947
  responses:
24671
24948
  "200":
24672
24949
  description: Successful response
24950
+ content:
24951
+ application/json:
24952
+ schema:
24953
+ type: object
24954
+ properties:
24955
+ names:
24956
+ type: array
24957
+ items:
24958
+ type: string
24959
+ schemas:
24960
+ type: object
24961
+ propertyNames:
24962
+ type: string
24963
+ additionalProperties:
24964
+ type: object
24965
+ propertyNames:
24966
+ type: string
24967
+ additionalProperties: {}
24968
+ tools:
24969
+ type: array
24970
+ items:
24971
+ type: object
24972
+ properties:
24973
+ name:
24974
+ type: string
24975
+ description:
24976
+ type: string
24977
+ riskLevel:
24978
+ type: string
24979
+ category:
24980
+ type: string
24981
+ source:
24982
+ type: string
24983
+ description:
24984
+ 'Tool origin: "core" for built-ins, otherwise "<kind>:<id>" (e.g. "plugin:echo", "skill:my-skill",
24985
+ "mcp:server").'
24986
+ required:
24987
+ - name
24988
+ - description
24989
+ - riskLevel
24990
+ - category
24991
+ - source
24992
+ additionalProperties: false
24993
+ required:
24994
+ - names
24995
+ - schemas
24996
+ - tools
24997
+ additionalProperties: false
24998
+ parameters:
24999
+ - name: conversationId
25000
+ in: query
25001
+ required: false
25002
+ schema:
25003
+ type: string
25004
+ description: When set, scope the tool inventory to this conversation's most recent turn instead of the global registry.
24673
25005
  /v1/tools/simulate-permission:
24674
25006
  post:
24675
25007
  operationId: tools_simulatepermission_post