@vellumai/assistant 0.8.1 → 0.8.3

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 (630) hide show
  1. package/ARCHITECTURE.md +13 -19
  2. package/Dockerfile +75 -1
  3. package/bun.lock +11 -1
  4. package/docker-entrypoint.sh +17 -0
  5. package/docker-init-apt-root.sh +167 -0
  6. package/docker-kata-apt-env.sh +39 -0
  7. package/docs/plugins.md +88 -47
  8. package/docs/skills.md +9 -7
  9. package/examples/plugins/echo/README.md +27 -27
  10. package/examples/plugins/echo/package.json +3 -0
  11. package/examples/plugins/echo/register.ts +31 -31
  12. package/node_modules/@vellumai/slack-text/src/index.test.ts +114 -14
  13. package/node_modules/@vellumai/slack-text/src/index.ts +82 -18
  14. package/openapi.yaml +642 -5
  15. package/package.json +3 -1
  16. package/scripts/generate-openapi.ts +83 -10
  17. package/scripts/sync-llm-catalog.ts +2 -2
  18. package/scripts/sync-web-search-catalog.ts +47 -25
  19. package/src/__tests__/agent-image-optimize.test.ts +11 -3
  20. package/src/__tests__/agent-loop-exit-reason.test.ts +272 -0
  21. package/src/__tests__/agent-loop-provider-error-recording.test.ts +195 -0
  22. package/src/__tests__/agent-wake-disk-pressure-callsite.test.ts +131 -0
  23. package/src/__tests__/anthropic-provider.test.ts +45 -0
  24. package/src/__tests__/app-builder-tool-scripts.test.ts +9 -3
  25. package/src/__tests__/app-executors.test.ts +220 -4
  26. package/src/__tests__/auto-analysis-end-to-end.test.ts +35 -0
  27. package/src/__tests__/bundled-asset.test.ts +6 -6
  28. package/src/__tests__/channel-availability-routes.test.ts +206 -0
  29. package/src/__tests__/channel-delivery-store.test.ts +289 -1
  30. package/src/__tests__/circuit-breaker-pipeline.test.ts +0 -1
  31. package/src/__tests__/clawhub.test.ts +75 -16
  32. package/src/__tests__/compactor-tail-resolution.test.ts +147 -0
  33. package/src/__tests__/config-get-vision-flag.test.ts +136 -0
  34. package/src/__tests__/config-loader-backfill.test.ts +115 -18
  35. package/src/__tests__/config-schema.test.ts +21 -0
  36. package/src/__tests__/config-set-route.test.ts +80 -0
  37. package/src/__tests__/config-sounds-sync.test.ts +97 -0
  38. package/src/__tests__/config-watcher-skill-reseed.test.ts +453 -0
  39. package/src/__tests__/context-search-conversations-source.test.ts +117 -2
  40. package/src/__tests__/context-search-memory-v2-source.test.ts +0 -1
  41. package/src/__tests__/context-search-workspace-source.test.ts +7 -0
  42. package/src/__tests__/context-token-estimator.test.ts +31 -65
  43. package/src/__tests__/conversation-abort-tool-results.test.ts +4 -1
  44. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +1 -0
  45. package/src/__tests__/conversation-agent-loop-overflow.test.ts +92 -92
  46. package/src/__tests__/conversation-agent-loop.test.ts +59 -1
  47. package/src/__tests__/conversation-error.test.ts +42 -3
  48. package/src/__tests__/conversation-fork-crud.test.ts +82 -0
  49. package/src/__tests__/conversation-inference-profile-route.test.ts +40 -4
  50. package/src/__tests__/conversation-lifecycle.test.ts +173 -0
  51. package/src/__tests__/conversation-media-retry.test.ts +19 -8
  52. package/src/__tests__/conversation-message-sync-tags.test.ts +97 -0
  53. package/src/__tests__/conversation-pairing.test.ts +54 -0
  54. package/src/__tests__/conversation-process-callsite.test.ts +4 -1
  55. package/src/__tests__/conversation-provider-retry-repair.test.ts +5 -1
  56. package/src/__tests__/conversation-queue.test.ts +4 -1
  57. package/src/__tests__/conversation-runtime-assembly.test.ts +102 -13
  58. package/src/__tests__/conversation-slash-queue.test.ts +59 -1
  59. package/src/__tests__/conversation-slash-unknown.test.ts +4 -1
  60. package/src/__tests__/conversation-surfaces-table-action.test.ts +360 -0
  61. package/src/__tests__/conversation-sync-tags.test.ts +235 -0
  62. package/src/__tests__/conversation-workspace-injection.test.ts +5 -1
  63. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +5 -1
  64. package/src/__tests__/credential-security-invariants.test.ts +3 -2
  65. package/src/__tests__/date-context.test.ts +45 -0
  66. package/src/__tests__/db-slack-external-content-normalization.test.ts +301 -0
  67. package/src/__tests__/delete-managed-skill-tool.test.ts +55 -13
  68. package/src/__tests__/disk-pressure-tools.test.ts +1 -0
  69. package/src/__tests__/dm-backfill.test.ts +121 -10
  70. package/src/__tests__/document-tool-security.test.ts +258 -0
  71. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +0 -1
  72. package/src/__tests__/edit-propagation.test.ts +33 -0
  73. package/src/__tests__/empty-response-pipeline.test.ts +0 -4
  74. package/src/__tests__/external-plugin-loader.test.ts +151 -55
  75. package/src/__tests__/filing-service.test.ts +140 -0
  76. package/src/__tests__/get-skill-detail-audit.test.ts +0 -4
  77. package/src/__tests__/guardian-action-no-hardcoded-copy.test.ts +0 -1
  78. package/src/__tests__/guardian-dispatch.test.ts +1 -0
  79. package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +43 -62
  80. package/src/__tests__/heartbeat-service.test.ts +24 -164
  81. package/src/__tests__/helpers/channel-test-adapter.ts +0 -2
  82. package/src/__tests__/helpers/tar-fixtures.ts +39 -0
  83. package/src/__tests__/helpers/wait-for.ts +21 -0
  84. package/src/__tests__/history-repair-pipeline.test.ts +0 -3
  85. package/src/__tests__/history-repair.test.ts +73 -0
  86. package/src/__tests__/host-app-control-proxy.test.ts +507 -10
  87. package/src/__tests__/host-proxy-preactivation.test.ts +200 -13
  88. package/src/__tests__/image-credentials.test.ts +1 -1
  89. package/src/__tests__/inbound-slack-persistence.test.ts +2 -0
  90. package/src/__tests__/inference-no-mode-boot-e2e.test.ts +1 -1
  91. package/src/__tests__/inference-profile-reaper.test.ts +4 -2
  92. package/src/__tests__/inference-profile-session-handler.test.ts +18 -6
  93. package/src/__tests__/inference-profile-session-ipc.test.ts +17 -5
  94. package/src/__tests__/injector-background-turn.test.ts +153 -0
  95. package/src/__tests__/injector-chain.test.ts +15 -8
  96. package/src/__tests__/install-skill-routing.test.ts +155 -37
  97. package/src/__tests__/lifecycle-memory-v2-seed.test.ts +99 -3
  98. package/src/__tests__/list-messages-page-latest.test.ts +55 -0
  99. package/src/__tests__/llm-call-pipeline.test.ts +0 -3
  100. package/src/__tests__/llm-callsite-catalog.test.ts +25 -0
  101. package/src/__tests__/llm-catalog-parity.test.ts +58 -13
  102. package/src/__tests__/llm-request-log-agent-loop-exit-reason.test.ts +116 -0
  103. package/src/__tests__/llm-request-log-error-payload.test.ts +138 -0
  104. package/src/__tests__/llm-request-log-source-clickhouse.test.ts +36 -0
  105. package/src/__tests__/llm-request-log-source-factory.test.ts +29 -53
  106. package/src/__tests__/llm-resolver.test.ts +255 -2
  107. package/src/__tests__/llm-usage-store.test.ts +114 -0
  108. package/src/__tests__/managed-profile-guard.test.ts +41 -29
  109. package/src/__tests__/managed-skill-lifecycle.test.ts +109 -18
  110. package/src/__tests__/managed-store.test.ts +84 -192
  111. package/src/__tests__/media-generate-image.test.ts +1 -1
  112. package/src/__tests__/memory-retrieval-pipeline.test.ts +0 -2
  113. package/src/__tests__/messages-after-tiebreaker.test.ts +122 -0
  114. package/src/__tests__/notification-decision-fallback.test.ts +0 -91
  115. package/src/__tests__/notification-decision-strategy.test.ts +14 -31
  116. package/src/__tests__/notification-deep-link.test.ts +15 -0
  117. package/src/__tests__/notification-guardian-path.test.ts +1 -2
  118. package/src/__tests__/notification-platform-adapter.test.ts +5 -4
  119. package/src/__tests__/notification-telegram-adapter.test.ts +1 -0
  120. package/src/__tests__/notification-vellum-adapter.test.ts +113 -0
  121. package/src/__tests__/oauth-commands-routes.test.ts +168 -16
  122. package/src/__tests__/oauth-provider-profiles.test.ts +9 -0
  123. package/src/__tests__/openai-provider.test.ts +242 -3
  124. package/src/__tests__/openai-responses-cutover-guard.test.ts +17 -9
  125. package/src/__tests__/openrouter-provider-only.test.ts +51 -3
  126. package/src/__tests__/openrouter-token-estimation.test.ts +34 -25
  127. package/src/__tests__/overflow-reduce-pipeline.test.ts +0 -2
  128. package/src/__tests__/persistence-pipeline.test.ts +0 -2
  129. package/src/__tests__/{managed-proxy-context.test.ts → platform-proxy-context.test.ts} +7 -2
  130. package/src/__tests__/platform.test.ts +2 -0
  131. package/src/__tests__/plugin-api-shim.test.ts +125 -0
  132. package/src/__tests__/plugin-bootstrap.test.ts +10 -36
  133. package/src/__tests__/plugin-external-api.test.ts +68 -0
  134. package/src/__tests__/plugin-registry.test.ts +0 -77
  135. package/src/__tests__/plugin-route-contribution.test.ts +0 -1
  136. package/src/__tests__/plugin-skill-contribution.test.ts +0 -2
  137. package/src/__tests__/plugin-tool-contribution.test.ts +16 -15
  138. package/src/__tests__/plugin-types.test.ts +3 -13
  139. package/src/__tests__/process-message-background-slack.test.ts +8 -1
  140. package/src/__tests__/process-message-display-content.test.ts +421 -0
  141. package/src/__tests__/provider-catalog-visibility.test.ts +158 -0
  142. package/src/__tests__/provider-error-scenarios.test.ts +111 -0
  143. package/src/__tests__/{provider-managed-proxy-integration.test.ts → provider-platform-proxy-integration.test.ts} +33 -31
  144. package/src/__tests__/scaffold-managed-skill-tool.test.ts +65 -13
  145. package/src/__tests__/schedule-routes.test.ts +50 -3
  146. package/src/__tests__/schedule-store.test.ts +94 -0
  147. package/src/__tests__/scheduler-reuse-conversation.test.ts +54 -7
  148. package/src/__tests__/schema-transforms.test.ts +20 -0
  149. package/src/__tests__/search-skills-unified.test.ts +0 -5
  150. package/src/__tests__/{secret-routes-managed-proxy.test.ts → secret-routes-platform-proxy.test.ts} +1 -1
  151. package/src/__tests__/server-history-render.test.ts +43 -0
  152. package/src/__tests__/skill-load-feature-flag.test.ts +0 -12
  153. package/src/__tests__/skill-load-tool.test.ts +27 -89
  154. package/src/__tests__/skill-memory.test.ts +23 -3
  155. package/src/__tests__/skills-file-content-endpoint.test.ts +9 -38
  156. package/src/__tests__/skills-files-catalog-fallback.test.ts +0 -3
  157. package/src/__tests__/skills-install-extract.test.ts +49 -38
  158. package/src/__tests__/skills-install-staging.test.ts +159 -0
  159. package/src/__tests__/skills-uninstall.test.ts +9 -41
  160. package/src/__tests__/skills.test.ts +51 -58
  161. package/src/__tests__/slack-channel-config.test.ts +9 -0
  162. package/src/__tests__/subagent-tool-filtering.test.ts +50 -0
  163. package/src/__tests__/system-prompt.test.ts +670 -63
  164. package/src/__tests__/terminal-tools.test.ts +28 -1
  165. package/src/__tests__/thread-backfill.test.ts +557 -27
  166. package/src/__tests__/title-generate-pipeline.test.ts +0 -13
  167. package/src/__tests__/token-estimate-pipeline.test.ts +0 -3
  168. package/src/__tests__/tool-error-pipeline.test.ts +0 -3
  169. package/src/__tests__/tool-execute-pipeline.test.ts +0 -5
  170. package/src/__tests__/tool-executor-lifecycle-events.test.ts +1 -1
  171. package/src/__tests__/tool-executor.test.ts +16 -4
  172. package/src/__tests__/tool-result-truncate-pipeline.test.ts +0 -12
  173. package/src/__tests__/turn-events-store.test.ts +256 -0
  174. package/src/__tests__/twilio-routes.test.ts +4 -0
  175. package/src/__tests__/user-plugin-loader.test.ts +0 -7
  176. package/src/__tests__/voice-session-bridge.test.ts +198 -0
  177. package/src/__tests__/web-search-catalog-parity.test.ts +32 -10
  178. package/src/__tests__/workspace-migration-057-repair-stale-gemini-model-ids.test.ts +115 -3
  179. package/src/__tests__/workspace-migration-072-seed-reply-suggestion-callsite.test.ts +50 -0
  180. package/src/__tests__/workspace-migration-073-repair-recall-callsite-empty-profile.test.ts +153 -0
  181. package/src/__tests__/workspace-migration-085-memory-v2-bm25-b-reembed-disabled-v2-pages.test.ts +220 -0
  182. package/src/__tests__/workspace-migration-086-revert-stale-gemini-mis-rewrites.test.ts +269 -0
  183. package/src/__tests__/workspace-migration-087-memory-router-balanced-profile.test.ts +228 -0
  184. package/src/__tests__/workspace-migration-remove-legacy-skills-index.test.ts +309 -0
  185. package/src/__tests__/workspace-migrations-runner.test.ts +111 -3
  186. package/src/a2a/__tests__/agent-card.test.ts +98 -0
  187. package/src/a2a/__tests__/e2e-a2a-channel.test.ts +597 -0
  188. package/src/a2a/__tests__/protocol-helpers.test.ts +113 -0
  189. package/src/a2a/__tests__/task-store.test.ts +246 -0
  190. package/src/a2a/agent-card.ts +58 -0
  191. package/src/a2a/feature-gate.ts +8 -0
  192. package/src/a2a/protocol-constants.ts +21 -0
  193. package/src/a2a/protocol-errors.ts +50 -0
  194. package/src/a2a/protocol-types.ts +162 -0
  195. package/src/a2a/task-store.ts +168 -0
  196. package/src/acp/resolve-agent.ts +1 -1
  197. package/src/agent/image-optimize.ts +13 -5
  198. package/src/agent/loop.ts +167 -18
  199. package/src/calls/voice-session-bridge.ts +61 -42
  200. package/src/channels/config.ts +9 -0
  201. package/src/channels/types.ts +122 -0
  202. package/src/cli/__tests__/unknown-command.test.ts +24 -0
  203. package/src/cli/commands/__tests__/changelog.test.ts +304 -319
  204. package/src/cli/{__tests__ → commands/__tests__}/notifications.test.ts +201 -28
  205. package/src/cli/commands/__tests__/schedules.test.ts +960 -0
  206. package/src/cli/commands/changelog.ts +106 -42
  207. package/src/cli/commands/conversations.ts +102 -17
  208. package/src/cli/commands/default-action.ts +10 -53
  209. package/src/cli/commands/notifications.ts +388 -346
  210. package/src/cli/commands/plugins.ts +252 -0
  211. package/src/cli/commands/schedules.ts +683 -0
  212. package/src/cli/commands/telemetry.ts +40 -0
  213. package/src/cli/lib/__tests__/cli-colors.test.ts +48 -0
  214. package/src/cli/lib/__tests__/confirm-prompt.test.ts +159 -0
  215. package/src/cli/lib/__tests__/install-from-github.test.ts +355 -0
  216. package/src/cli/lib/__tests__/list-installed-plugins.test.ts +154 -0
  217. package/src/cli/lib/__tests__/search-plugins.test.ts +261 -0
  218. package/src/cli/lib/__tests__/uninstall-plugin.test.ts +124 -0
  219. package/src/cli/lib/__tests__/unknown-command.test.ts +106 -0
  220. package/src/cli/lib/cli-colors.ts +12 -0
  221. package/src/cli/lib/confirm-prompt.ts +79 -0
  222. package/src/cli/lib/install-from-github.ts +303 -0
  223. package/src/cli/lib/list-installed-plugins.ts +137 -0
  224. package/src/cli/lib/search-plugins.ts +163 -0
  225. package/src/cli/lib/uninstall-plugin.ts +82 -0
  226. package/src/cli/lib/unknown-command.ts +111 -0
  227. package/src/cli/program.ts +52 -2
  228. package/src/config/assistant-feature-flags.ts +24 -54
  229. package/src/config/bundled-skills/app-builder/SKILL.md +140 -22
  230. package/src/config/bundled-skills/app-builder/TOOLS.json +7 -0
  231. package/src/config/bundled-skills/computer-use/TOOLS.json +15 -52
  232. package/src/config/bundled-skills/document/SKILL.md +23 -3
  233. package/src/config/bundled-skills/document/TOOLS.json +53 -0
  234. package/src/config/bundled-skills/document/tools/document-delete.ts +12 -0
  235. package/src/config/bundled-skills/document/tools/document-list.ts +12 -0
  236. package/src/config/bundled-skills/document/tools/document-read.ts +12 -0
  237. package/src/config/bundled-skills/phone-calls/SKILL.md +1 -1
  238. package/src/config/bundled-skills/skill-management/SKILL.md +2 -2
  239. package/src/config/bundled-skills/skill-management/TOOLS.json +7 -7
  240. package/src/config/bundled-tool-registry.ts +6 -0
  241. package/src/config/call-site-defaults.ts +105 -0
  242. package/src/config/feature-flag-registry.json +41 -9
  243. package/src/config/llm-resolver.ts +52 -1
  244. package/src/config/loader.ts +64 -38
  245. package/src/config/schema.ts +9 -10
  246. package/src/config/schemas/__tests__/llm-request-logs.test.ts +36 -0
  247. package/src/config/schemas/__tests__/memory-v2.test.ts +3 -3
  248. package/src/config/schemas/channels.ts +17 -0
  249. package/src/config/schemas/compaction.ts +28 -0
  250. package/src/config/schemas/conversations.ts +10 -0
  251. package/src/config/schemas/heartbeat.ts +23 -0
  252. package/src/config/schemas/llm-request-logs.ts +31 -7
  253. package/src/config/schemas/llm.ts +1 -0
  254. package/src/config/schemas/memory-retrieval.ts +18 -0
  255. package/src/config/schemas/memory-retrospective.ts +1 -1
  256. package/src/config/schemas/memory-v2.ts +4 -4
  257. package/src/config/schemas/memory.ts +3 -1
  258. package/src/config/schemas/tools.ts +14 -0
  259. package/src/config/seed-inference-profiles.ts +99 -29
  260. package/src/config/skills.ts +3 -96
  261. package/src/context/compactor.ts +1107 -0
  262. package/src/context/token-estimator.ts +34 -36
  263. package/src/context/window-manager.ts +197 -1520
  264. package/src/credential-execution/managed-catalog.ts +37 -0
  265. package/src/credential-health/credential-health-service.ts +280 -19
  266. package/src/daemon/__tests__/conversation-lifecycle-auto-analyze.test.ts +33 -18
  267. package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +138 -0
  268. package/src/daemon/__tests__/conversation-tool-setup.test.ts +74 -0
  269. package/src/daemon/approval-generators.ts +8 -6
  270. package/src/daemon/config-watcher.ts +94 -31
  271. package/src/daemon/conversation-agent-loop-handlers.ts +78 -0
  272. package/src/daemon/conversation-agent-loop.ts +198 -11
  273. package/src/daemon/conversation-error.ts +171 -37
  274. package/src/daemon/conversation-lifecycle.ts +53 -40
  275. package/src/daemon/conversation-messaging.ts +25 -6
  276. package/src/daemon/conversation-process.ts +49 -12
  277. package/src/daemon/conversation-runtime-assembly.ts +25 -1
  278. package/src/daemon/conversation-slash.ts +12 -5
  279. package/src/daemon/conversation-store.ts +11 -4
  280. package/src/daemon/conversation-tool-setup.ts +39 -7
  281. package/src/daemon/conversation.ts +33 -8
  282. package/src/daemon/date-context.ts +40 -0
  283. package/src/daemon/external-plugins-bootstrap.ts +217 -181
  284. package/src/daemon/first-greeting.ts +22 -2
  285. package/src/daemon/guardian-action-generators.ts +1 -125
  286. package/src/daemon/handlers/__tests__/config-a2a-complete.test.ts +248 -0
  287. package/src/daemon/handlers/__tests__/config-a2a-invite.test.ts +154 -0
  288. package/src/daemon/handlers/__tests__/config-a2a-redeem.test.ts +133 -0
  289. package/src/daemon/handlers/__tests__/config-a2a.test.ts +95 -0
  290. package/src/daemon/handlers/config-a2a.ts +289 -0
  291. package/src/daemon/handlers/config-model.ts +6 -5
  292. package/src/daemon/handlers/config-slack-channel.ts +15 -3
  293. package/src/daemon/handlers/conversations.ts +1 -0
  294. package/src/daemon/handlers/shared.ts +14 -5
  295. package/src/daemon/handlers/skills.ts +111 -108
  296. package/src/daemon/history-repair.ts +28 -1
  297. package/src/daemon/host-app-control-proxy.ts +153 -27
  298. package/src/daemon/host-proxy-preactivation.ts +85 -18
  299. package/src/daemon/lifecycle.ts +89 -91
  300. package/src/daemon/meet-host-supervisor.ts +5 -4
  301. package/src/daemon/memory-v2-startup.ts +85 -0
  302. package/src/daemon/message-protocol.ts +1 -0
  303. package/src/daemon/message-types/conversations.ts +25 -0
  304. package/src/daemon/message-types/messages.ts +61 -0
  305. package/src/daemon/message-types/notifications.ts +21 -0
  306. package/src/daemon/message-types/subagents.ts +1 -0
  307. package/src/daemon/message-types/sync.ts +1 -0
  308. package/src/daemon/pkb-reminder-builder.test.ts +11 -54
  309. package/src/daemon/pkb-reminder-builder.ts +5 -20
  310. package/src/daemon/plugin-source-watcher.ts +146 -0
  311. package/src/daemon/process-message.ts +24 -3
  312. package/src/daemon/server.ts +11 -2
  313. package/src/daemon/skill-memory-refresh.ts +33 -0
  314. package/src/daemon/wake-target-adapter.ts +2 -0
  315. package/src/documents/document-store.ts +221 -3
  316. package/src/embedded/plugin-api.ts +40 -0
  317. package/src/export/__tests__/transcript-formatter.test.ts +121 -0
  318. package/src/export/transcript-formatter.ts +54 -20
  319. package/src/filing/filing-service.ts +39 -0
  320. package/src/heartbeat/__tests__/heartbeat-service.test.ts +135 -6
  321. package/src/heartbeat/heartbeat-run-store.ts +2 -1
  322. package/src/heartbeat/heartbeat-service.ts +73 -189
  323. package/src/home/__tests__/feed-types.test.ts +80 -0
  324. package/src/home/feed-types.ts +36 -2
  325. package/src/home/post-connect-feed.ts +1 -0
  326. package/src/index.ts +18 -1
  327. package/src/ipc/cli-client.ts +147 -45
  328. package/src/live-voice/__tests__/live-voice-stt.test.ts +57 -0
  329. package/src/mcp/client.ts +20 -4
  330. package/src/media/image-credentials.ts +3 -3
  331. package/src/memory/__tests__/bookmark-crud.test.ts +33 -27
  332. package/src/memory/__tests__/conversation-queries.test.ts +483 -0
  333. package/src/memory/__tests__/jobs-worker-v2-graph-trigger-embed.test.ts +113 -0
  334. package/src/memory/__tests__/memory-retrospective-enqueue.test.ts +2 -50
  335. package/src/memory/__tests__/memory-retrospective-job.test.ts +87 -4
  336. package/src/memory/__tests__/memory-retrospective-startup-cleanup.test.ts +119 -14
  337. package/src/memory/__tests__/message-content.test.ts +35 -0
  338. package/src/memory/bookmark-crud.ts +42 -10
  339. package/src/memory/context-search/sources/conversations.ts +62 -2
  340. package/src/memory/context-search/sources/workspace.ts +4 -0
  341. package/src/memory/conversation-crud.ts +63 -19
  342. package/src/memory/conversation-queries.ts +197 -11
  343. package/src/memory/conversation-title-service.ts +26 -4
  344. package/src/memory/db-init.ts +12 -0
  345. package/src/memory/delivery-crud.ts +152 -5
  346. package/src/memory/embedding-backend.ts +4 -4
  347. package/src/memory/external-conversation-store.ts +66 -5
  348. package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +150 -12
  349. package/src/memory/graph/conversation-graph-memory.ts +49 -21
  350. package/src/memory/graph/tools.ts +9 -40
  351. package/src/memory/indexer.ts +34 -29
  352. package/src/memory/invite-store.ts +53 -0
  353. package/src/memory/jobs/__tests__/embed-concept-page.test.ts +73 -0
  354. package/src/memory/jobs/embed-concept-page.ts +20 -11
  355. package/src/memory/jobs-worker.ts +6 -1
  356. package/src/memory/llm-request-log-source-clickhouse.ts +24 -12
  357. package/src/memory/llm-request-log-source.ts +19 -52
  358. package/src/memory/llm-request-log-store.ts +92 -1
  359. package/src/memory/llm-usage-store.ts +125 -5
  360. package/src/memory/memory-retrospective-enqueue.ts +1 -20
  361. package/src/memory/memory-retrospective-job.ts +33 -6
  362. package/src/memory/memory-retrospective-startup-cleanup.ts +72 -5
  363. package/src/memory/message-content.ts +1 -1
  364. package/src/memory/migrations/109-external-conversation-bindings.ts +15 -4
  365. package/src/memory/migrations/229-delete-private-conversations.test.ts +38 -1
  366. package/src/memory/migrations/229-delete-private-conversations.ts +7 -0
  367. package/src/memory/migrations/247-external-conversation-binding-thread-id.ts +78 -0
  368. package/src/memory/migrations/248-create-onboarding-events.ts +21 -0
  369. package/src/memory/migrations/249-normalize-slack-external-content.ts +240 -0
  370. package/src/memory/migrations/250-provider-connection-base-url-and-models.ts +28 -0
  371. package/src/memory/migrations/251-a2a-tasks.ts +49 -0
  372. package/src/memory/migrations/252-llm-request-log-agent-loop-exit-reason.ts +32 -0
  373. package/src/memory/migrations/index.ts +9 -0
  374. package/src/memory/migrations/registry.ts +16 -0
  375. package/src/memory/onboarding-events-store.ts +106 -0
  376. package/src/memory/schema/a2a.ts +15 -0
  377. package/src/memory/schema/bookmarks.ts +0 -2
  378. package/src/memory/schema/calls.ts +1 -0
  379. package/src/memory/schema/index.ts +1 -0
  380. package/src/memory/schema/inference.ts +3 -3
  381. package/src/memory/schema/infrastructure.ts +13 -0
  382. package/src/memory/turn-events-store.ts +127 -2
  383. package/src/memory/v2/__tests__/activation-store.test.ts +25 -23
  384. package/src/memory/v2/__tests__/activation.test.ts +0 -8
  385. package/src/memory/v2/__tests__/cli-command-store.test.ts +404 -0
  386. package/src/memory/v2/__tests__/frontmatter-sweep.test.ts +25 -4
  387. package/src/memory/v2/__tests__/injection.test.ts +288 -11
  388. package/src/memory/v2/__tests__/migration.test.ts +87 -0
  389. package/src/memory/v2/__tests__/page-index.test.ts +83 -0
  390. package/src/memory/v2/__tests__/prompts-router.test.ts +58 -6
  391. package/src/memory/v2/__tests__/qdrant.test.ts +66 -3
  392. package/src/memory/v2/__tests__/router.test.ts +15 -0
  393. package/src/memory/v2/__tests__/skill-store.test.ts +387 -8
  394. package/src/memory/v2/__tests__/static-context.test.ts +12 -1
  395. package/src/memory/v2/activation-store.ts +14 -16
  396. package/src/memory/v2/cli-command-content.ts +19 -0
  397. package/src/memory/v2/cli-command-store.ts +304 -0
  398. package/src/memory/v2/frontmatter-sweep.ts +7 -1
  399. package/src/memory/v2/injection.ts +81 -26
  400. package/src/memory/v2/migration.ts +49 -19
  401. package/src/memory/v2/page-index.ts +63 -8
  402. package/src/memory/v2/prompts/router.ts +11 -8
  403. package/src/memory/v2/prompts/sweep.ts +2 -2
  404. package/src/memory/v2/qdrant.ts +135 -7
  405. package/src/memory/v2/router.ts +9 -8
  406. package/src/memory/v2/skill-store.ts +120 -35
  407. package/src/memory/v2/static-context.ts +4 -4
  408. package/src/memory/v2/types.ts +23 -0
  409. package/src/messaging/providers/a2a/__tests__/deliver.test.ts +274 -0
  410. package/src/messaging/providers/a2a/deliver.ts +156 -0
  411. package/src/messaging/providers/gmail/client.ts +9 -2
  412. package/src/messaging/providers/index.ts +11 -2
  413. package/src/messaging/providers/slack/__tests__/adapter-token-routing.test.ts +45 -5
  414. package/src/messaging/providers/slack/__tests__/download.test.ts +231 -0
  415. package/src/messaging/providers/slack/adapter.ts +43 -5
  416. package/src/messaging/providers/slack/client.ts +27 -0
  417. package/src/messaging/providers/slack/deep-link.ts +65 -0
  418. package/src/messaging/providers/slack/download.ts +104 -0
  419. package/src/messaging/providers/slack/message-metadata.test.ts +32 -0
  420. package/src/messaging/providers/slack/message-metadata.ts +27 -0
  421. package/src/messaging/providers/slack/render-transcript.test.ts +134 -0
  422. package/src/messaging/providers/slack/render-transcript.ts +69 -5
  423. package/src/messaging/providers/slack/types.ts +20 -1
  424. package/src/notifications/__tests__/broadcaster.test.ts +203 -0
  425. package/src/notifications/__tests__/decision-engine.test.ts +283 -0
  426. package/src/notifications/__tests__/deterministic-checks.test.ts +286 -0
  427. package/src/notifications/__tests__/emit-signal-home-feed.test.ts +1 -0
  428. package/src/notifications/__tests__/home-feed-side-effect.test.ts +430 -7
  429. package/src/notifications/adapters/macos.ts +12 -2
  430. package/src/notifications/broadcaster.ts +29 -4
  431. package/src/notifications/conversation-pairing.ts +2 -1
  432. package/src/notifications/copy-composer.ts +17 -64
  433. package/src/notifications/decision-engine.ts +113 -45
  434. package/src/notifications/deterministic-checks.ts +96 -0
  435. package/src/notifications/emit-signal.ts +21 -1
  436. package/src/notifications/home-feed-side-effect.ts +138 -5
  437. package/src/notifications/signal.ts +3 -5
  438. package/src/notifications/types.ts +8 -0
  439. package/src/oauth/connection-resolver.ts +8 -4
  440. package/src/oauth/platform-connection.test.ts +43 -3
  441. package/src/oauth/platform-connection.ts +19 -6
  442. package/src/oauth/seed-providers.ts +10 -1
  443. package/src/permissions/checker.ts +2 -0
  444. package/src/permissions/ipc-risk-types.ts +1 -0
  445. package/src/permissions/question-prompter.test.ts +416 -0
  446. package/src/permissions/question-prompter.ts +294 -0
  447. package/src/platform/client.test.ts +1 -1
  448. package/src/platform/client.ts +1 -1
  449. package/src/plugin-api/constants.ts +26 -0
  450. package/src/plugin-api/index.ts +34 -1
  451. package/src/plugin-api/types.ts +104 -22
  452. package/src/plugins/defaults/circuit-breaker.ts +0 -5
  453. package/src/plugins/defaults/compaction.ts +0 -4
  454. package/src/plugins/defaults/empty-response.ts +0 -2
  455. package/src/plugins/defaults/history-repair.ts +0 -2
  456. package/src/plugins/defaults/injectors.ts +74 -22
  457. package/src/plugins/defaults/llm-call.ts +0 -2
  458. package/src/plugins/defaults/memory-retrieval.ts +0 -1
  459. package/src/plugins/defaults/overflow-reduce.ts +0 -1
  460. package/src/plugins/defaults/persistence.ts +0 -2
  461. package/src/plugins/defaults/title-generate.ts +0 -5
  462. package/src/plugins/defaults/token-estimate.ts +0 -2
  463. package/src/plugins/defaults/tool-error.ts +0 -7
  464. package/src/plugins/defaults/tool-execute.ts +0 -2
  465. package/src/plugins/defaults/tool-result-truncate.ts +0 -4
  466. package/src/plugins/ensure-plugin-api-shim.ts +96 -0
  467. package/src/plugins/external-api.ts +104 -0
  468. package/src/plugins/external-plugin-loader.ts +187 -42
  469. package/src/plugins/feature-gate.ts +22 -0
  470. package/src/plugins/pipeline.ts +37 -0
  471. package/src/plugins/registry.ts +48 -80
  472. package/src/plugins/types.ts +40 -26
  473. package/src/plugins/user-loader.ts +21 -2
  474. package/src/proactive-artifact/aux-message-injector.ts +11 -0
  475. package/src/proactive-artifact/job.test.ts +37 -5
  476. package/src/prompts/__tests__/system-prompt.test.ts +10 -43
  477. package/src/prompts/__tests__/task-progress-hint-section.test.ts +95 -0
  478. package/src/prompts/normalize-onboarding.ts +27 -0
  479. package/src/prompts/sections.ts +302 -0
  480. package/src/prompts/system-prompt.ts +63 -174
  481. package/src/prompts/templates/BOOTSTRAP.md +17 -1
  482. package/src/prompts/templates/system-sections.ts +164 -0
  483. package/src/providers/__tests__/inference.test.ts +24 -7
  484. package/src/providers/anthropic/client.ts +28 -28
  485. package/src/providers/call-site-routing.ts +24 -6
  486. package/src/providers/connection-resolution.ts +68 -11
  487. package/src/providers/inference/__tests__/adapter-factory-openai-compatible.test.ts +74 -0
  488. package/src/providers/inference/__tests__/connections-openai-compatible.test.ts +175 -0
  489. package/src/providers/inference/__tests__/connections-status-label.test.ts +15 -0
  490. package/src/providers/inference/adapter-factory.ts +32 -6
  491. package/src/providers/inference/auth.ts +12 -0
  492. package/src/providers/inference/backfill.ts +14 -1
  493. package/src/providers/inference/connections.ts +159 -34
  494. package/src/providers/inference/resolve-auth.ts +14 -4
  495. package/src/providers/model-catalog.ts +249 -12
  496. package/src/providers/model-intents.ts +3 -3
  497. package/src/providers/openai/__tests__/chat-completions-provider-reasoning.test.ts +235 -0
  498. package/src/providers/openai/chat-completions-provider.ts +169 -8
  499. package/src/providers/openrouter/client.ts +49 -4
  500. package/src/providers/{managed-proxy → platform-proxy}/constants.ts +4 -2
  501. package/src/providers/{managed-proxy → platform-proxy}/context.ts +3 -3
  502. package/src/providers/provider-availability.ts +17 -2
  503. package/src/providers/provider-catalog-visibility.ts +38 -0
  504. package/src/providers/provider-send-message.ts +27 -12
  505. package/src/providers/registry.ts +52 -15
  506. package/src/providers/retry.ts +47 -1
  507. package/src/runtime/__tests__/agent-wake.test.ts +152 -0
  508. package/src/runtime/agent-wake.ts +103 -15
  509. package/src/runtime/auth/route-policy.ts +21 -1
  510. package/src/runtime/btw-sidechain.ts +2 -0
  511. package/src/runtime/http-server.ts +7 -16
  512. package/src/runtime/http-types.ts +19 -47
  513. package/src/runtime/migrations/origin-mode.ts +1 -1
  514. package/src/runtime/pending-interactions.ts +1 -0
  515. package/src/runtime/routes/__tests__/bookmark-routes.test.ts +17 -0
  516. package/src/runtime/routes/__tests__/consolidation-routes.test.ts +258 -0
  517. package/src/runtime/routes/__tests__/conversation-management-routes.test.ts +5 -1
  518. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +172 -23
  519. package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +275 -44
  520. package/src/runtime/routes/__tests__/llm-call-sites-routes.test.ts +12 -0
  521. package/src/runtime/routes/__tests__/question-routes.test.ts +395 -0
  522. package/src/runtime/routes/__tests__/tts-routes.test.ts +64 -1
  523. package/src/runtime/routes/acp-routes-list.test.ts +143 -0
  524. package/src/runtime/routes/acp-routes.ts +5 -3
  525. package/src/runtime/routes/auth-routes.ts +1 -1
  526. package/src/runtime/routes/bookmark-routes.ts +5 -3
  527. package/src/runtime/routes/btw-routes.ts +5 -1
  528. package/src/runtime/routes/channel-availability-routes.ts +126 -0
  529. package/src/runtime/routes/consolidation-routes.ts +100 -0
  530. package/src/runtime/routes/conversation-cli-routes.ts +44 -3
  531. package/src/runtime/routes/conversation-list-routes.ts +3 -20
  532. package/src/runtime/routes/conversation-management-routes.ts +17 -42
  533. package/src/runtime/routes/conversation-query-routes.ts +99 -35
  534. package/src/runtime/routes/conversation-routes.ts +97 -11
  535. package/src/runtime/routes/documents-routes.ts +25 -86
  536. package/src/runtime/routes/group-routes.ts +5 -0
  537. package/src/runtime/routes/inbound-conversation.ts +28 -8
  538. package/src/runtime/routes/inbound-message-handler.ts +236 -41
  539. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +111 -0
  540. package/src/runtime/routes/inbound-stages/background-dispatch.ts +32 -1
  541. package/src/runtime/routes/inbound-stages/edit-intercept.ts +17 -4
  542. package/src/runtime/routes/index.ts +8 -0
  543. package/src/runtime/routes/inference-profile-session-handler.ts +17 -44
  544. package/src/runtime/routes/inference-profile-session-reaper.ts +7 -21
  545. package/src/runtime/routes/inference-provider-connection-routes.ts +199 -22
  546. package/src/runtime/routes/integrations/a2a.ts +235 -0
  547. package/src/runtime/routes/integrations/slack/share.ts +4 -52
  548. package/src/runtime/routes/integrations/slack/token.ts +43 -0
  549. package/src/runtime/routes/integrations/twilio.ts +6 -13
  550. package/src/runtime/routes/llm-call-sites-routes.ts +11 -1
  551. package/src/runtime/routes/notification-routes.ts +1 -1
  552. package/src/runtime/routes/oauth-commands-routes.ts +105 -15
  553. package/src/runtime/routes/oauth-lifecycle-routes.ts +43 -0
  554. package/src/runtime/routes/question-routes.ts +259 -0
  555. package/src/runtime/routes/rename-conversation-routes.ts +2 -33
  556. package/src/runtime/routes/schedule-routes.ts +4 -7
  557. package/src/runtime/routes/subagents-routes.ts +98 -18
  558. package/src/runtime/routes/telemetry-routes.ts +27 -0
  559. package/src/runtime/routes/tts-routes.ts +27 -2
  560. package/src/runtime/routes/workspace-routes.test.ts +43 -0
  561. package/src/runtime/routes/workspace-routes.ts +28 -0
  562. package/src/runtime/services/conversation-serializer.ts +39 -7
  563. package/src/runtime/sync/resource-sync-events.ts +93 -1
  564. package/src/schedule/schedule-store.ts +27 -2
  565. package/src/schedule/scheduler.ts +9 -1
  566. package/src/security/__tests__/untrusted-content.test.ts +86 -0
  567. package/src/security/untrusted-content.ts +93 -8
  568. package/src/skills/catalog-files.ts +1 -1
  569. package/src/skills/catalog-install.ts +233 -116
  570. package/src/skills/clawhub.ts +70 -13
  571. package/src/skills/managed-store.ts +4 -119
  572. package/src/skills/skillssh-registry.ts +27 -48
  573. package/src/subagent/manager.ts +17 -7
  574. package/src/telemetry/types.ts +113 -1
  575. package/src/telemetry/usage-telemetry-reporter.test.ts +312 -5
  576. package/src/telemetry/usage-telemetry-reporter.ts +113 -7
  577. package/src/tools/apps/executors.ts +58 -7
  578. package/src/tools/ask-question/ask-question-tool.test.ts +509 -0
  579. package/src/tools/ask-question/ask-question-tool.ts +304 -0
  580. package/src/tools/browser/browser-execution.ts +15 -11
  581. package/src/tools/computer-use/definitions.ts +3 -3
  582. package/src/tools/credentials/vault.ts +1 -1
  583. package/src/tools/document/document-tool.ts +124 -1
  584. package/src/tools/filesystem/edit.ts +1 -1
  585. package/src/tools/filesystem/list.ts +1 -1
  586. package/src/tools/filesystem/read.ts +1 -1
  587. package/src/tools/filesystem/write.ts +5 -2
  588. package/src/tools/host-filesystem/transfer.ts +1 -1
  589. package/src/tools/host-terminal/host-shell.ts +1 -1
  590. package/src/tools/memory/register.ts +1 -9
  591. package/src/tools/permission-checker.ts +1 -1
  592. package/src/tools/registry.ts +17 -7
  593. package/src/tools/schedule/create.ts +2 -2
  594. package/src/tools/schema-transforms.ts +7 -2
  595. package/src/tools/side-effects.ts +1 -0
  596. package/src/tools/skills/delete-managed.ts +4 -4
  597. package/src/tools/skills/execute.ts +1 -1
  598. package/src/tools/skills/scaffold-managed.ts +3 -2
  599. package/src/tools/subagent/notify-parent.ts +1 -1
  600. package/src/tools/system/request-permission.ts +2 -2
  601. package/src/tools/terminal/safe-env.ts +60 -1
  602. package/src/tools/tool-manifest.ts +2 -0
  603. package/src/tools/types.ts +107 -21
  604. package/src/tools/ui-surface/definitions.ts +6 -5
  605. package/src/tts/__tests__/provider-adapters.test.ts +76 -2
  606. package/src/tts/providers/elevenlabs-provider.ts +75 -1
  607. package/src/types/onboarding-context.ts +2 -0
  608. package/src/util/errors.ts +17 -0
  609. package/src/util/platform.ts +10 -0
  610. package/src/watcher/__tests__/engine.test.ts +22 -0
  611. package/src/watcher/engine.ts +6 -2
  612. package/src/workspace/migrations/057-repair-stale-gemini-model-ids.ts +80 -15
  613. package/src/workspace/migrations/072-seed-reply-suggestion-callsite.ts +35 -22
  614. package/src/workspace/migrations/073-repair-recall-callsite-empty-profile.ts +3 -1
  615. package/src/workspace/migrations/083-system-prompt-prefix-to-file.ts +191 -0
  616. package/src/workspace/migrations/084-remove-legacy-skills-index.ts +276 -0
  617. package/src/workspace/migrations/085-memory-v2-bm25-b-reembed-disabled-v2-pages.ts +137 -0
  618. package/src/workspace/migrations/086-revert-stale-gemini-mis-rewrites.ts +198 -0
  619. package/src/workspace/migrations/087-memory-router-balanced-profile.ts +91 -0
  620. package/src/workspace/migrations/registry.ts +10 -0
  621. package/src/workspace/migrations/runner.ts +39 -9
  622. package/src/workspace/migrations/types.ts +4 -0
  623. package/examples/plugins/echo/bun.lock +0 -25
  624. package/src/__tests__/context-window-manager.test.ts +0 -2481
  625. package/src/__tests__/guardian-action-conversation-turn.test.ts +0 -441
  626. package/src/context/__tests__/compact-prompt.test.ts +0 -63
  627. package/src/context/prompts/compact.md +0 -26
  628. package/src/memory/graph/__tests__/remember-description.test.ts +0 -55
  629. package/src/prompts/__tests__/build-cli-reference-section.test.ts +0 -37
  630. package/src/runtime/guardian-action-conversation-turn.ts +0 -99
package/openapi.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  openapi: 3.0.0
4
4
  info:
5
5
  title: Vellum Assistant API
6
- version: 0.8.1
6
+ version: 0.8.3
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
@@ -3075,6 +3075,71 @@ paths:
3075
3075
  schema:
3076
3076
  type: string
3077
3077
  description: Optional channel ID filter
3078
+ /v1/channels/available:
3079
+ get:
3080
+ operationId: channels_available_get
3081
+ summary: Get available channels
3082
+ description:
3083
+ Return the channels this assistant can surface to clients, with display metadata (label, icon, verification
3084
+ capability, setup copy). Today this is a fixed base list plus `email` when an inbox is registered; will become
3085
+ plugin/skill-driven in future.
3086
+ tags:
3087
+ - channels
3088
+ responses:
3089
+ "200":
3090
+ description: Successful response
3091
+ content:
3092
+ application/json:
3093
+ schema:
3094
+ type: object
3095
+ properties:
3096
+ channels:
3097
+ type: array
3098
+ items:
3099
+ type: object
3100
+ properties:
3101
+ id:
3102
+ type: string
3103
+ enum:
3104
+ - telegram
3105
+ - phone
3106
+ - vellum
3107
+ - whatsapp
3108
+ - slack
3109
+ - email
3110
+ - platform
3111
+ - a2a
3112
+ label:
3113
+ type: string
3114
+ subtitle:
3115
+ type: string
3116
+ icon:
3117
+ type: string
3118
+ supportsVerification:
3119
+ type: boolean
3120
+ setupMessages:
3121
+ type: object
3122
+ properties:
3123
+ guardian:
3124
+ type: string
3125
+ contact:
3126
+ type: string
3127
+ required:
3128
+ - guardian
3129
+ - contact
3130
+ additionalProperties: false
3131
+ required:
3132
+ - id
3133
+ - label
3134
+ - subtitle
3135
+ - icon
3136
+ - supportsVerification
3137
+ - setupMessages
3138
+ additionalProperties: false
3139
+ description: Available channels in display order
3140
+ required:
3141
+ - channels
3142
+ additionalProperties: false
3078
3143
  /v1/channels/conversation:
3079
3144
  delete:
3080
3145
  operationId: channels_conversation_delete
@@ -3550,6 +3615,95 @@ paths:
3550
3615
  - ran
3551
3616
  - jobId
3552
3617
  additionalProperties: false
3618
+ /v1/consolidation/runs:
3619
+ get:
3620
+ operationId: consolidation_runs_get
3621
+ summary: List consolidation runs
3622
+ description:
3623
+ "Return recent memory v2 consolidation conversations as run records. Each consolidation dispatch creates
3624
+ exactly one background conversation tagged with `source = memory_v2_consolidation`; that conversation IS the
3625
+ run. Synthetic fields: `id` mirrors `conversationId` (no separate run row exists), `scheduledFor` and
3626
+ `startedAt` both equal `conversation.createdAt` (no separate schedule timestamp), `finishedAt` is the
3627
+ `createdAt` of the latest assistant message in the conversation (NOT `conversation.lastMessageAt`, which the
3628
+ kickoff user prompt bumps before the agent runs). `status` is `'ok'` when the conversation has at least one
3629
+ assistant message — i.e. positive evidence the agent emitted output — otherwise `'running'`. This is a weaker
3630
+ signal than heartbeat's `'ok'`: without a dedicated runs table we cannot distinguish 'ran cleanly' from 'crashed
3631
+ after emitting at least one assistant message'. `skipReason` and `error` are always null — skipped runs (lock
3632
+ held, disabled, empty buffer) never create a conversation, and run failure detail is not stored on the
3633
+ conversation row. Shape mirrors `heartbeat/runs` so the schedules settings UI can reuse its run-row component."
3634
+ tags:
3635
+ - consolidation
3636
+ responses:
3637
+ "200":
3638
+ description: Successful response
3639
+ content:
3640
+ application/json:
3641
+ schema:
3642
+ type: object
3643
+ properties:
3644
+ runs:
3645
+ type: array
3646
+ items:
3647
+ type: object
3648
+ properties:
3649
+ id:
3650
+ type: string
3651
+ scheduledFor:
3652
+ type: number
3653
+ startedAt:
3654
+ anyOf:
3655
+ - type: number
3656
+ - type: "null"
3657
+ finishedAt:
3658
+ anyOf:
3659
+ - type: number
3660
+ - type: "null"
3661
+ durationMs:
3662
+ anyOf:
3663
+ - type: number
3664
+ - type: "null"
3665
+ status:
3666
+ type: string
3667
+ enum:
3668
+ - ok
3669
+ - running
3670
+ skipReason:
3671
+ anyOf:
3672
+ - type: string
3673
+ - type: "null"
3674
+ error:
3675
+ anyOf:
3676
+ - type: string
3677
+ - type: "null"
3678
+ conversationId:
3679
+ anyOf:
3680
+ - type: string
3681
+ - type: "null"
3682
+ createdAt:
3683
+ type: number
3684
+ required:
3685
+ - id
3686
+ - scheduledFor
3687
+ - startedAt
3688
+ - finishedAt
3689
+ - durationMs
3690
+ - status
3691
+ - skipReason
3692
+ - error
3693
+ - conversationId
3694
+ - createdAt
3695
+ additionalProperties: false
3696
+ description: Consolidation run records
3697
+ required:
3698
+ - runs
3699
+ additionalProperties: false
3700
+ parameters:
3701
+ - name: limit
3702
+ in: query
3703
+ required: false
3704
+ schema:
3705
+ type: integer
3706
+ description: Max runs to return (default 20, max 100)
3553
3707
  /v1/contact-channels/{contactChannelId}:
3554
3708
  patch:
3555
3709
  operationId: contactchannels_by_contactChannelId_patch
@@ -4696,7 +4850,7 @@ paths:
4696
4850
  post:
4697
4851
  operationId: conversations_cli_create_post
4698
4852
  summary: Create a conversation (CLI)
4699
- description: Create a new conversation with an optional title.
4853
+ description: Create a new conversation with an optional title and seeded messages.
4700
4854
  tags:
4701
4855
  - conversations
4702
4856
  responses:
@@ -4711,9 +4865,17 @@ paths:
4711
4865
  type: string
4712
4866
  title:
4713
4867
  type: string
4868
+ conversationKey:
4869
+ type: string
4870
+ messagesInserted:
4871
+ type: integer
4872
+ minimum: 0
4873
+ maximum: 9007199254740991
4714
4874
  required:
4715
4875
  - id
4716
4876
  - title
4877
+ - conversationKey
4878
+ - messagesInserted
4717
4879
  additionalProperties: false
4718
4880
  requestBody:
4719
4881
  required: true
@@ -4724,6 +4886,22 @@ paths:
4724
4886
  properties:
4725
4887
  title:
4726
4888
  type: string
4889
+ messages:
4890
+ type: array
4891
+ items:
4892
+ type: object
4893
+ properties:
4894
+ role:
4895
+ type: string
4896
+ enum:
4897
+ - user
4898
+ - assistant
4899
+ content:
4900
+ type: string
4901
+ required:
4902
+ - role
4903
+ - content
4904
+ additionalProperties: false
4727
4905
  additionalProperties: false
4728
4906
  /v1/conversations/cli/export:
4729
4907
  post:
@@ -7773,13 +7951,29 @@ paths:
7773
7951
  required:
7774
7952
  - kind
7775
7953
  additionalProperties: false
7954
+ category:
7955
+ type: string
7956
+ enum:
7957
+ - security
7958
+ - scheduling
7959
+ - background
7960
+ - email
7961
+ - system
7962
+ noteworthy:
7963
+ type: boolean
7964
+ fromAssistant:
7965
+ type: boolean
7966
+ metadata:
7967
+ type: object
7968
+ propertyNames:
7969
+ type: string
7970
+ additionalProperties: {}
7776
7971
  createdAt:
7777
7972
  type: string
7778
7973
  required:
7779
7974
  - id
7780
7975
  - type
7781
7976
  - priority
7782
- - title
7783
7977
  - summary
7784
7978
  - timestamp
7785
7979
  - status
@@ -7922,13 +8116,29 @@ paths:
7922
8116
  required:
7923
8117
  - kind
7924
8118
  additionalProperties: false
8119
+ category:
8120
+ type: string
8121
+ enum:
8122
+ - security
8123
+ - scheduling
8124
+ - background
8125
+ - email
8126
+ - system
8127
+ noteworthy:
8128
+ type: boolean
8129
+ fromAssistant:
8130
+ type: boolean
8131
+ metadata:
8132
+ type: object
8133
+ propertyNames:
8134
+ type: string
8135
+ additionalProperties: {}
7925
8136
  createdAt:
7926
8137
  type: string
7927
8138
  required:
7928
8139
  - id
7929
8140
  - type
7930
8141
  - priority
7931
- - title
7932
8142
  - summary
7933
8143
  - timestamp
7934
8144
  - status
@@ -8628,6 +8838,7 @@ paths:
8628
8838
  - ollama
8629
8839
  - fireworks
8630
8840
  - openrouter
8841
+ - openai-compatible
8631
8842
  auth:
8632
8843
  oneOf:
8633
8844
  - type: object
@@ -8692,6 +8903,27 @@ paths:
8692
8903
  - type: string
8693
8904
  minLength: 1
8694
8905
  - type: "null"
8906
+ baseUrl:
8907
+ anyOf:
8908
+ - type: string
8909
+ format: uri
8910
+ - type: "null"
8911
+ models:
8912
+ anyOf:
8913
+ - type: array
8914
+ items:
8915
+ type: object
8916
+ properties:
8917
+ id:
8918
+ type: string
8919
+ minLength: 1
8920
+ displayName:
8921
+ type: string
8922
+ minLength: 1
8923
+ required:
8924
+ - id
8925
+ additionalProperties: false
8926
+ - type: "null"
8695
8927
  createdAt:
8696
8928
  type: integer
8697
8929
  minimum: -9007199254740991
@@ -8708,6 +8940,8 @@ paths:
8708
8940
  - auth
8709
8941
  - status
8710
8942
  - label
8943
+ - baseUrl
8944
+ - models
8711
8945
  - createdAt
8712
8946
  - updatedAt
8713
8947
  - isManaged
@@ -8721,7 +8955,7 @@ paths:
8721
8955
  required: false
8722
8956
  schema:
8723
8957
  type: string
8724
- description: "Filter by provider. One of: anthropic, openai, gemini, ollama, fireworks, openrouter"
8958
+ description: "Filter by provider. One of: anthropic, openai, gemini, ollama, fireworks, openrouter, openai-compatible"
8725
8959
  post:
8726
8960
  operationId: inference_providerconnections_post
8727
8961
  summary: Create a provider connection
@@ -8748,6 +8982,7 @@ paths:
8748
8982
  - ollama
8749
8983
  - fireworks
8750
8984
  - openrouter
8985
+ - openai-compatible
8751
8986
  auth:
8752
8987
  oneOf:
8753
8988
  - type: object
@@ -8812,6 +9047,27 @@ paths:
8812
9047
  - type: string
8813
9048
  minLength: 1
8814
9049
  - type: "null"
9050
+ baseUrl:
9051
+ anyOf:
9052
+ - type: string
9053
+ format: uri
9054
+ - type: "null"
9055
+ models:
9056
+ anyOf:
9057
+ - type: array
9058
+ items:
9059
+ type: object
9060
+ properties:
9061
+ id:
9062
+ type: string
9063
+ minLength: 1
9064
+ displayName:
9065
+ type: string
9066
+ minLength: 1
9067
+ required:
9068
+ - id
9069
+ additionalProperties: false
9070
+ - type: "null"
8815
9071
  createdAt:
8816
9072
  type: integer
8817
9073
  minimum: -9007199254740991
@@ -8828,6 +9084,8 @@ paths:
8828
9084
  - auth
8829
9085
  - status
8830
9086
  - label
9087
+ - baseUrl
9088
+ - models
8831
9089
  - createdAt
8832
9090
  - updatedAt
8833
9091
  - isManaged
@@ -8855,6 +9113,7 @@ paths:
8855
9113
  - ollama
8856
9114
  - fireworks
8857
9115
  - openrouter
9116
+ - openai-compatible
8858
9117
  auth:
8859
9118
  oneOf:
8860
9119
  - type: object
@@ -8917,6 +9176,27 @@ paths:
8917
9176
  enum:
8918
9177
  - active
8919
9178
  - disabled
9179
+ base_url:
9180
+ anyOf:
9181
+ - type: string
9182
+ format: uri
9183
+ - type: "null"
9184
+ models:
9185
+ anyOf:
9186
+ - type: array
9187
+ items:
9188
+ type: object
9189
+ properties:
9190
+ id:
9191
+ type: string
9192
+ minLength: 1
9193
+ displayName:
9194
+ type: string
9195
+ minLength: 1
9196
+ required:
9197
+ - id
9198
+ additionalProperties: false
9199
+ - type: "null"
8920
9200
  required:
8921
9201
  - name
8922
9202
  - provider
@@ -8984,6 +9264,7 @@ paths:
8984
9264
  - ollama
8985
9265
  - fireworks
8986
9266
  - openrouter
9267
+ - openai-compatible
8987
9268
  auth:
8988
9269
  oneOf:
8989
9270
  - type: object
@@ -9048,6 +9329,27 @@ paths:
9048
9329
  - type: string
9049
9330
  minLength: 1
9050
9331
  - type: "null"
9332
+ baseUrl:
9333
+ anyOf:
9334
+ - type: string
9335
+ format: uri
9336
+ - type: "null"
9337
+ models:
9338
+ anyOf:
9339
+ - type: array
9340
+ items:
9341
+ type: object
9342
+ properties:
9343
+ id:
9344
+ type: string
9345
+ minLength: 1
9346
+ displayName:
9347
+ type: string
9348
+ minLength: 1
9349
+ required:
9350
+ - id
9351
+ additionalProperties: false
9352
+ - type: "null"
9051
9353
  createdAt:
9052
9354
  type: integer
9053
9355
  minimum: -9007199254740991
@@ -9064,6 +9366,8 @@ paths:
9064
9366
  - auth
9065
9367
  - status
9066
9368
  - label
9369
+ - baseUrl
9370
+ - models
9067
9371
  - createdAt
9068
9372
  - updatedAt
9069
9373
  - isManaged
@@ -9105,6 +9409,7 @@ paths:
9105
9409
  - ollama
9106
9410
  - fireworks
9107
9411
  - openrouter
9412
+ - openai-compatible
9108
9413
  auth:
9109
9414
  oneOf:
9110
9415
  - type: object
@@ -9169,6 +9474,27 @@ paths:
9169
9474
  - type: string
9170
9475
  minLength: 1
9171
9476
  - type: "null"
9477
+ baseUrl:
9478
+ anyOf:
9479
+ - type: string
9480
+ format: uri
9481
+ - type: "null"
9482
+ models:
9483
+ anyOf:
9484
+ - type: array
9485
+ items:
9486
+ type: object
9487
+ properties:
9488
+ id:
9489
+ type: string
9490
+ minLength: 1
9491
+ displayName:
9492
+ type: string
9493
+ minLength: 1
9494
+ required:
9495
+ - id
9496
+ additionalProperties: false
9497
+ - type: "null"
9172
9498
  createdAt:
9173
9499
  type: integer
9174
9500
  minimum: -9007199254740991
@@ -9185,6 +9511,8 @@ paths:
9185
9511
  - auth
9186
9512
  - status
9187
9513
  - label
9514
+ - baseUrl
9515
+ - models
9188
9516
  - createdAt
9189
9517
  - updatedAt
9190
9518
  - isManaged
@@ -9270,6 +9598,27 @@ paths:
9270
9598
  - type: string
9271
9599
  minLength: 1
9272
9600
  - type: "null"
9601
+ base_url:
9602
+ anyOf:
9603
+ - type: string
9604
+ format: uri
9605
+ - type: "null"
9606
+ models:
9607
+ anyOf:
9608
+ - type: array
9609
+ items:
9610
+ type: object
9611
+ properties:
9612
+ id:
9613
+ type: string
9614
+ minLength: 1
9615
+ displayName:
9616
+ type: string
9617
+ minLength: 1
9618
+ required:
9619
+ - id
9620
+ additionalProperties: false
9621
+ - type: "null"
9273
9622
  required:
9274
9623
  - auth
9275
9624
  additionalProperties: false
@@ -9333,6 +9682,64 @@ paths:
9333
9682
  required:
9334
9683
  - message
9335
9684
  additionalProperties: false
9685
+ /v1/integrations/a2a/config:
9686
+ delete:
9687
+ operationId: integrations_a2a_config_delete
9688
+ summary: Disable A2A channel
9689
+ description: Disable the A2A channel.
9690
+ tags:
9691
+ - integrations
9692
+ responses:
9693
+ "200":
9694
+ description: Successful response
9695
+ get:
9696
+ operationId: integrations_a2a_config_get
9697
+ summary: Get A2A config
9698
+ description: Check current A2A channel configuration status.
9699
+ tags:
9700
+ - integrations
9701
+ responses:
9702
+ "200":
9703
+ description: Successful response
9704
+ post:
9705
+ operationId: integrations_a2a_config_post
9706
+ summary: Enable A2A channel
9707
+ description: Enable the A2A channel for inter-assistant communication.
9708
+ tags:
9709
+ - integrations
9710
+ responses:
9711
+ "200":
9712
+ description: Successful response
9713
+ /v1/integrations/a2a/invite:
9714
+ post:
9715
+ operationId: integrations_a2a_invite_post
9716
+ summary: Create A2A invite
9717
+ description: Create a shareable A2A invite token for link-based contact creation.
9718
+ tags:
9719
+ - integrations
9720
+ responses:
9721
+ "200":
9722
+ description: Successful response
9723
+ /v1/integrations/a2a/invite/complete:
9724
+ post:
9725
+ operationId: integrations_a2a_invite_complete_post
9726
+ summary: Complete A2A invite (sender side)
9727
+ description: Called by the platform to finalize the sender side of a link-based A2A connection.
9728
+ tags:
9729
+ - integrations
9730
+ responses:
9731
+ "200":
9732
+ description: Successful response
9733
+ /v1/integrations/a2a/invite/redeem:
9734
+ post:
9735
+ operationId: integrations_a2a_invite_redeem_post
9736
+ summary: Redeem A2A invite (receiver side)
9737
+ description: Called by the platform to create a trusted contact on the receiver side of a link-based A2A connection.
9738
+ tags:
9739
+ - integrations
9740
+ responses:
9741
+ "200":
9742
+ description: Successful response
9336
9743
  /v1/integrations/ingress/config:
9337
9744
  get:
9338
9745
  operationId: integrations_ingress_config_get
@@ -10920,6 +11327,7 @@ paths:
10920
11327
  - low
10921
11328
  - medium
10922
11329
  - high
11330
+ - critical
10923
11331
  deadlineAt:
10924
11332
  type: number
10925
11333
  isAsyncBackground:
@@ -11128,6 +11536,26 @@ paths:
11128
11536
  responses:
11129
11537
  "200":
11130
11538
  description: Successful response
11539
+ /v1/oauth/connection-changed:
11540
+ post:
11541
+ operationId: oauth_connectionchanged_post
11542
+ summary: Notify the assistant that an OAuth connection changed
11543
+ description: Invalidates the config cache so the assistant picks up mode and credential changes immediately.
11544
+ tags:
11545
+ - oauth
11546
+ responses:
11547
+ "200":
11548
+ description: Successful response
11549
+ content:
11550
+ application/json:
11551
+ schema:
11552
+ type: object
11553
+ properties:
11554
+ refreshed:
11555
+ type: boolean
11556
+ required:
11557
+ - refreshed
11558
+ additionalProperties: false
11131
11559
  /v1/oauth/connections/{id}:
11132
11560
  delete:
11133
11561
  operationId: oauth_connections_by_id_delete
@@ -11761,6 +12189,129 @@ paths:
11761
12189
  - name
11762
12190
  - status
11763
12191
  additionalProperties: false
12192
+ /v1/question-response:
12193
+ post:
12194
+ operationId: questionresponse_post
12195
+ summary: Resolve a pending ask-question prompt
12196
+ description:
12197
+ Submit the user's batched response (or close the card) for a pending question prompt by requestId. Legacy
12198
+ single-question payloads remain accepted as syntactic sugar for a one-element batch.
12199
+ tags:
12200
+ - approvals
12201
+ responses:
12202
+ "200":
12203
+ description: Successful response
12204
+ content:
12205
+ application/json:
12206
+ schema:
12207
+ type: object
12208
+ properties:
12209
+ success:
12210
+ type: boolean
12211
+ required:
12212
+ - success
12213
+ additionalProperties: false
12214
+ requestBody:
12215
+ required: true
12216
+ content:
12217
+ application/json:
12218
+ schema:
12219
+ oneOf:
12220
+ - type: object
12221
+ properties:
12222
+ requestId:
12223
+ type: string
12224
+ kind:
12225
+ type: string
12226
+ const: submit
12227
+ responses:
12228
+ minItems: 1
12229
+ type: array
12230
+ items:
12231
+ oneOf:
12232
+ - type: object
12233
+ properties:
12234
+ questionId:
12235
+ type: string
12236
+ kind:
12237
+ type: string
12238
+ const: option
12239
+ optionId:
12240
+ type: string
12241
+ required:
12242
+ - questionId
12243
+ - kind
12244
+ - optionId
12245
+ additionalProperties: false
12246
+ - type: object
12247
+ properties:
12248
+ questionId:
12249
+ type: string
12250
+ kind:
12251
+ type: string
12252
+ const: free_text
12253
+ text:
12254
+ type: string
12255
+ required:
12256
+ - questionId
12257
+ - kind
12258
+ - text
12259
+ additionalProperties: false
12260
+ - type: object
12261
+ properties:
12262
+ questionId:
12263
+ type: string
12264
+ kind:
12265
+ type: string
12266
+ const: skip
12267
+ required:
12268
+ - questionId
12269
+ - kind
12270
+ additionalProperties: false
12271
+ required:
12272
+ - requestId
12273
+ - kind
12274
+ - responses
12275
+ additionalProperties: false
12276
+ - type: object
12277
+ properties:
12278
+ requestId:
12279
+ type: string
12280
+ kind:
12281
+ type: string
12282
+ const: close
12283
+ required:
12284
+ - requestId
12285
+ - kind
12286
+ additionalProperties: false
12287
+ - type: object
12288
+ properties:
12289
+ requestId:
12290
+ type: string
12291
+ kind:
12292
+ type: string
12293
+ const: option
12294
+ optionId:
12295
+ type: string
12296
+ required:
12297
+ - requestId
12298
+ - kind
12299
+ - optionId
12300
+ additionalProperties: false
12301
+ - type: object
12302
+ properties:
12303
+ requestId:
12304
+ type: string
12305
+ kind:
12306
+ type: string
12307
+ const: free_text
12308
+ text:
12309
+ type: string
12310
+ required:
12311
+ - requestId
12312
+ - kind
12313
+ - text
12314
+ additionalProperties: false
11764
12315
  /v1/recordings/pause:
11765
12316
  post:
11766
12317
  operationId: recordings_pause_post
@@ -14117,6 +14668,20 @@ paths:
14117
14668
  type: string
14118
14669
  objective:
14119
14670
  type: string
14671
+ usage:
14672
+ type: object
14673
+ properties:
14674
+ inputTokens:
14675
+ type: number
14676
+ outputTokens:
14677
+ type: number
14678
+ estimatedCost:
14679
+ type: number
14680
+ required:
14681
+ - inputTokens
14682
+ - outputTokens
14683
+ - estimatedCost
14684
+ additionalProperties: false
14120
14685
  events:
14121
14686
  type: array
14122
14687
  items: {}
@@ -14223,6 +14788,45 @@ paths:
14223
14788
  - conversationId
14224
14789
  - content
14225
14790
  additionalProperties: false
14791
+ /v1/subagents/reconcile:
14792
+ get:
14793
+ operationId: subagents_reconcile_get
14794
+ summary: Reconcile subagent live status
14795
+ description:
14796
+ Returns the live in-memory status of all subagents known to the daemon for a given parent conversation.
14797
+ Subagents not in the response are orphaned.
14798
+ tags:
14799
+ - subagents
14800
+ responses:
14801
+ "200":
14802
+ description: Successful response
14803
+ content:
14804
+ application/json:
14805
+ schema:
14806
+ type: object
14807
+ properties:
14808
+ subagents:
14809
+ type: object
14810
+ propertyNames:
14811
+ type: string
14812
+ additionalProperties:
14813
+ type: object
14814
+ properties:
14815
+ status:
14816
+ type: string
14817
+ required:
14818
+ - status
14819
+ additionalProperties: false
14820
+ required:
14821
+ - subagents
14822
+ additionalProperties: false
14823
+ parameters:
14824
+ - name: parentConversationId
14825
+ in: query
14826
+ required: false
14827
+ schema:
14828
+ type: string
14829
+ description: Parent conversation ID
14226
14830
  /v1/suggestion:
14227
14831
  get:
14228
14832
  operationId: suggestion_get
@@ -14752,6 +15356,39 @@ paths:
14752
15356
  type: string
14753
15357
  minLength: 1
14754
15358
  additionalProperties: false
15359
+ /v1/telemetry/flush:
15360
+ post:
15361
+ operationId: telemetry_flush_post
15362
+ summary: Flush pending telemetry events
15363
+ description: Force-flush all pending usage, turn, and lifecycle telemetry events to the platform.
15364
+ tags:
15365
+ - telemetry
15366
+ responses:
15367
+ "200":
15368
+ description: Successful response
15369
+ content:
15370
+ application/json:
15371
+ schema:
15372
+ anyOf:
15373
+ - type: object
15374
+ properties:
15375
+ flushed:
15376
+ type: boolean
15377
+ const: true
15378
+ required:
15379
+ - flushed
15380
+ additionalProperties: false
15381
+ - type: object
15382
+ properties:
15383
+ flushed:
15384
+ type: boolean
15385
+ const: false
15386
+ reason:
15387
+ type: string
15388
+ required:
15389
+ - flushed
15390
+ - reason
15391
+ additionalProperties: false
14755
15392
  /v1/telemetry/lifecycle:
14756
15393
  post:
14757
15394
  operationId: telemetry_lifecycle_post