@vellumai/assistant 0.11.3 → 0.11.4-dev.202608190019.b94dbf2

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 (596) hide show
  1. package/AGENTS.md +9 -3
  2. package/ARCHITECTURE.md +32 -10
  3. package/docs/architecture/memory.md +43 -5
  4. package/docs/architecture/security.md +96 -152
  5. package/docs/architecture/turn-actor.md +70 -0
  6. package/docs/browser-use-architecture-phase2.md +128 -56
  7. package/docs/flux-turn-detection-spike.md +248 -0
  8. package/docs/guardian-request-flow.md +35 -0
  9. package/docs/stt-provider-onboarding.md +3 -1
  10. package/knip.json +3 -0
  11. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/package.json +1 -0
  12. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/__tests__/url-normalization.test.ts +135 -0
  13. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/channels.ts +11 -0
  14. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/index.ts +1 -0
  15. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/remote-web-pairing.ts +60 -0
  16. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/url-normalization.ts +107 -0
  17. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/package.json +1 -0
  18. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/__tests__/url-normalization.test.ts +135 -0
  19. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/channels.ts +11 -0
  20. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/index.ts +1 -0
  21. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/remote-web-pairing.ts +60 -0
  22. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/url-normalization.ts +107 -0
  23. package/node_modules/@vellumai/gateway-client/src/admission-policy-contract.ts +34 -0
  24. package/node_modules/@vellumai/gateway-client/src/gateway-ipc-contracts.ts +166 -1
  25. package/node_modules/@vellumai/gateway-client/src/index.ts +2 -0
  26. package/node_modules/@vellumai/service-contracts/package.json +1 -0
  27. package/node_modules/@vellumai/service-contracts/src/__tests__/url-normalization.test.ts +135 -0
  28. package/node_modules/@vellumai/service-contracts/src/channels.ts +11 -0
  29. package/node_modules/@vellumai/service-contracts/src/index.ts +1 -0
  30. package/node_modules/@vellumai/service-contracts/src/remote-web-pairing.ts +60 -0
  31. package/node_modules/@vellumai/service-contracts/src/url-normalization.ts +107 -0
  32. package/openapi.yaml +289 -113
  33. package/package.json +1 -1
  34. package/scripts/voice-ttft-spike.ts +3 -3
  35. package/scripts/write-plugin-api-shim.ts +10 -0
  36. package/src/__tests__/app-compiler.test.ts +38 -3
  37. package/src/__tests__/app-control-flow.test.ts +1 -0
  38. package/src/__tests__/approval-routes-http.test.ts +2 -2
  39. package/src/__tests__/assistant-feature-flag-guard.test.ts +25 -3
  40. package/src/__tests__/attachments-store.test.ts +21 -12
  41. package/src/__tests__/byok-default-profile-ensure.test.ts +17 -0
  42. package/src/__tests__/call-setup-flow-name-capture.test.ts +0 -1
  43. package/src/__tests__/call-site-routing-provider.test.ts +1 -1
  44. package/src/__tests__/channel-availability-routes.test.ts +14 -1
  45. package/src/__tests__/channel-capabilities-dedupe.test.ts +214 -0
  46. package/src/__tests__/channel-delivery-store.test.ts +14 -14
  47. package/src/__tests__/channel-inbound-disk-pressure.test.ts +4 -4
  48. package/src/__tests__/channel-setup-panel-ack.test.ts +1 -1
  49. package/src/__tests__/checker.test.ts +20 -314
  50. package/src/__tests__/cli-memory-v2-reembed-skills.test.ts +6 -2
  51. package/src/__tests__/compaction-events.test.ts +8 -10
  52. package/src/__tests__/config-loader-backfill.test.ts +3 -3
  53. package/src/__tests__/config-schema.test.ts +25 -10
  54. package/src/__tests__/context-search-memory-v2-source.test.ts +0 -1
  55. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +8 -11
  56. package/src/__tests__/conversation-agent-loop-overflow.test.ts +8 -11
  57. package/src/__tests__/conversation-agent-loop.test.ts +32 -21
  58. package/src/__tests__/conversation-attachments.test.ts +0 -1
  59. package/src/__tests__/conversation-attention-store.test.ts +63 -0
  60. package/src/__tests__/conversation-confirmation-signals.test.ts +112 -0
  61. package/src/__tests__/conversation-delete-schedule-cleanup.test.ts +0 -4
  62. package/src/__tests__/conversation-fork-crud.test.ts +69 -0
  63. package/src/__tests__/conversation-fork-referential.test.ts +67 -0
  64. package/src/__tests__/conversation-fork-retrospective.test.ts +24 -0
  65. package/src/__tests__/conversation-load-history-repair.test.ts +209 -0
  66. package/src/__tests__/conversation-notifiers-provenance.test.ts +59 -0
  67. package/src/__tests__/conversation-queue.test.ts +154 -4
  68. package/src/__tests__/conversation-routes-disk-view.test.ts +1 -1
  69. package/src/__tests__/conversation-routes-enabled-plugins.test.ts +1 -1
  70. package/src/__tests__/conversation-routes-guardian-reply.test.ts +9 -9
  71. package/src/__tests__/conversation-routes-hidden-queue.test.ts +1 -1
  72. package/src/__tests__/conversation-routes-slash-commands.test.ts +1 -1
  73. package/src/__tests__/conversation-runtime-assembly.test.ts +187 -102
  74. package/src/__tests__/conversation-runtime-workspace.test.ts +14 -10
  75. package/src/__tests__/conversation-slash-queue.test.ts +3 -0
  76. package/src/__tests__/conversation-surfaces-action-delivery.test.ts +1 -0
  77. package/src/__tests__/conversation-surfaces-activation-emit.test.ts +1 -0
  78. package/src/__tests__/conversation-surfaces-app-control.test.ts +1 -0
  79. package/src/__tests__/conversation-surfaces-app-open.test.ts +1 -1
  80. package/src/__tests__/conversation-surfaces-data-persist.test.ts +1 -1
  81. package/src/__tests__/conversation-surfaces-history-restored-completion.test.ts +21 -14
  82. package/src/__tests__/conversation-surfaces-queued-emit.test.ts +1 -0
  83. package/src/__tests__/conversation-surfaces-standalone-payloads.test.ts +1 -0
  84. package/src/__tests__/conversation-surfaces-standalone.test.ts +1 -0
  85. package/src/__tests__/conversation-surfaces-state-update.test.ts +1 -1
  86. package/src/__tests__/conversation-surfaces-table-action.test.ts +1 -1
  87. package/src/__tests__/conversation-surfaces-task-progress.test.ts +1 -1
  88. package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +1 -1
  89. package/src/__tests__/conversation-tool-setup-attribution.test.ts +1 -1
  90. package/src/__tests__/credential-prompt-route.test.ts +7 -10
  91. package/src/__tests__/credential-security-invariants.test.ts +1 -0
  92. package/src/__tests__/cu-unified-flow.test.ts +1 -0
  93. package/src/__tests__/custom-profile-ensure.test.ts +5 -1
  94. package/src/__tests__/default-plugin-names-guard.test.ts +12 -1
  95. package/src/__tests__/discord-access-request-privacy.test.ts +5 -1
  96. package/src/__tests__/discord-requester-notice-privacy.test.ts +3 -3
  97. package/src/__tests__/document-append-idempotency.test.ts +233 -0
  98. package/src/__tests__/document-sync-tags.test.ts +0 -75
  99. package/src/__tests__/dynamic-skill-background-guard.test.ts +0 -2
  100. package/src/__tests__/edit-propagation.test.ts +107 -11
  101. package/src/__tests__/file-ops-service.test.ts +163 -30
  102. package/src/__tests__/filesystem-tools.test.ts +23 -24
  103. package/src/__tests__/gateway-only-guard.test.ts +2 -5
  104. package/src/__tests__/helpers/gateway-classify-mock.ts +27 -6
  105. package/src/__tests__/helpers/mock-actor-context.ts +49 -0
  106. package/src/__tests__/helpers/mock-conversation.ts +13 -1
  107. package/src/__tests__/host-file-read-tool.test.ts +16 -19
  108. package/src/__tests__/http-user-message-parity.test.ts +1 -1
  109. package/src/__tests__/init-feature-flag-overrides.test.ts +49 -0
  110. package/src/__tests__/injector-chain.test.ts +63 -41
  111. package/src/__tests__/injector-disk-pressure.test.ts +11 -23
  112. package/src/__tests__/inline-skill-load-permissions.test.ts +47 -36
  113. package/src/__tests__/llm-context-resolution.test.ts +73 -1
  114. package/src/__tests__/llm-schema.test.ts +5 -2
  115. package/src/__tests__/managed-skill-lifecycle.test.ts +7 -0
  116. package/src/__tests__/mcp-list-plugin-servers.test.ts +250 -0
  117. package/src/__tests__/media-generate-image.test.ts +131 -21
  118. package/src/__tests__/memory-retrieval-hook.test.ts +100 -7
  119. package/src/__tests__/messages-read-boundary-guard.test.ts +134 -0
  120. package/src/__tests__/mtime-cache.test.ts +3 -1
  121. package/src/__tests__/non-member-access-request.test.ts +0 -20
  122. package/src/__tests__/outbound-slack-persistence.test.ts +40 -1
  123. package/src/__tests__/platform-bash-auto-approve.test.ts +0 -4
  124. package/src/__tests__/plugin-api-store-credential.test.ts +261 -0
  125. package/src/__tests__/plugin-api-webhook-url.test.ts +10 -7
  126. package/src/__tests__/plugin-disabled-state.test.ts +2 -0
  127. package/src/__tests__/plugin-effective-enabled-set.test.ts +55 -3
  128. package/src/__tests__/plugin-execution-context.test.ts +73 -0
  129. package/src/__tests__/plugin-import-boundary-guard.test.ts +5 -1
  130. package/src/__tests__/plugin-import-boundary-reverse-guard.test.ts +7 -4
  131. package/src/__tests__/plugin-secret-pattern-contribution.test.ts +1 -1
  132. package/src/__tests__/post-compaction-reinjection-idempotency.test.ts +14 -7
  133. package/src/__tests__/provider-commit-message-generator.test.ts +20 -0
  134. package/src/__tests__/proxy-approval-callback.test.ts +1 -0
  135. package/src/__tests__/qdrant-manager.test.ts +14 -1
  136. package/src/__tests__/reaction-persistence.test.ts +200 -7
  137. package/src/__tests__/require-fresh-approval.test.ts +0 -4
  138. package/src/__tests__/risk-classification-boundary-guard.test.ts +115 -0
  139. package/src/__tests__/run-conversation-turn-persistence.test.ts +460 -105
  140. package/src/__tests__/run-due-schedules.test.ts +21 -0
  141. package/src/__tests__/scaffold-managed-skill-tool.test.ts +187 -18
  142. package/src/__tests__/schedule-routes.test.ts +23 -0
  143. package/src/__tests__/schedule-store.test.ts +17 -0
  144. package/src/__tests__/scoped-approval-grants.test.ts +11 -6
  145. package/src/__tests__/secret-ingress-channel.test.ts +0 -1
  146. package/src/__tests__/secret-ingress-http.test.ts +1 -1
  147. package/src/__tests__/send-endpoint-busy.test.ts +3 -3
  148. package/src/__tests__/skills.test.ts +32 -0
  149. package/src/__tests__/slack-edit-ordering-characterization.test.ts +0 -1
  150. package/src/__tests__/starter-task-flow.test.ts +5 -4
  151. package/src/__tests__/subagent-call-site-routing.test.ts +31 -19
  152. package/src/__tests__/subagent-fork-prompt-role.test.ts +1 -1
  153. package/src/__tests__/subagent-spawn-and-await.test.ts +18 -17
  154. package/src/__tests__/subagent-tool-gate-mode.test.ts +1 -1
  155. package/src/__tests__/subagent-tools.test.ts +81 -101
  156. package/src/__tests__/surface-completion-in-flight-snapshot.test.ts +1 -0
  157. package/src/__tests__/tool-execution-pipeline.benchmark.test.ts +1 -1
  158. package/src/__tests__/tool-executor-lifecycle-events.test.ts +132 -5
  159. package/src/__tests__/tool-executor.test.ts +68 -39
  160. package/src/__tests__/turn-events-store.test.ts +43 -0
  161. package/src/__tests__/ui-choice-copy-surfaces.test.ts +1 -1
  162. package/src/__tests__/ui-shape-teaching.test.ts +33 -0
  163. package/src/__tests__/ui-visual-surface.test.ts +1 -1
  164. package/src/__tests__/ui-voice-picker-surface.test.ts +128 -0
  165. package/src/__tests__/ui-work-result-surface.test.ts +1 -1
  166. package/src/__tests__/user-plugin-loader.test.ts +3 -1
  167. package/src/__tests__/verification-control-plane-policy.test.ts +0 -2
  168. package/src/__tests__/visible-app-context.test.ts +16 -9
  169. package/src/__tests__/voice-config-update.test.ts +40 -0
  170. package/src/__tests__/voice-scoped-grant-consumer.test.ts +5 -3
  171. package/src/__tests__/voice-session-bridge.test.ts +85 -29
  172. package/src/__tests__/worker-entrypoint-guards.test.ts +54 -0
  173. package/src/__tests__/worker-plugin-surface.test.ts +77 -0
  174. package/src/__tests__/workspace-migration-142-consolidate-voice-front-door.test.ts +158 -0
  175. package/src/__tests__/workspace-migration-143-repair-deprecated-codex-model-id.test.ts +133 -0
  176. package/src/__tests__/workspace-migration-144-convert-stranded-subscription-openai-profiles.test.ts +316 -0
  177. package/src/__tests__/workspace-migration-145-collapse-profile-bindings-to-entries.test.ts +325 -0
  178. package/src/__tests__/workspace-migration-146-repair-retired-fireworks-deepseek-flash-model-id.test.ts +235 -0
  179. package/src/acp/__tests__/acp-claude-oauth.test.ts +10 -2
  180. package/src/acp/__tests__/auth-required.test.ts +161 -0
  181. package/src/acp/acp-claude-oauth.ts +19 -2
  182. package/src/acp/agent-process.test.ts +100 -0
  183. package/src/acp/agent-process.ts +29 -26
  184. package/src/acp/auth-required.ts +102 -0
  185. package/src/acp/session-manager.test.ts +119 -0
  186. package/src/acp/session-manager.ts +76 -3
  187. package/src/api/events/acp-auth-required.ts +55 -0
  188. package/src/api/events/host-file.ts +2 -2
  189. package/src/api/index.ts +7 -0
  190. package/src/api/surfaces.ts +12 -3
  191. package/src/apps/app-store.ts +3 -0
  192. package/src/bundler/package-resolver.ts +2 -30
  193. package/src/calls/__tests__/voice-session-bridge.test.ts +194 -11
  194. package/src/calls/__tests__/voice-triage-escalate.test.ts +102 -0
  195. package/src/calls/call-controller.ts +19 -3
  196. package/src/calls/call-setup-flow.ts +0 -1
  197. package/src/calls/media-stream-stt-session.ts +15 -0
  198. package/src/calls/voice-session-bridge.ts +115 -41
  199. package/src/calls/voice-triage-escalate.ts +105 -2
  200. package/src/channels/__tests__/plugin-channel-declarations.test.ts +161 -0
  201. package/src/channels/config.ts +13 -0
  202. package/src/channels/plugin-channel-declarations.ts +108 -0
  203. package/src/channels/types.ts +30 -0
  204. package/src/cli/AGENTS.md +5 -2
  205. package/src/cli/bundled-modules.ts +29 -0
  206. package/src/cli/commands/credentials.help.ts +2 -2
  207. package/src/cli/commands/db/repair.ts +4 -8
  208. package/src/cli/commands/domain.ts +6 -3
  209. package/src/cli/commands/email.ts +6 -3
  210. package/src/cli/commands/inference-providers.ts +1 -1
  211. package/src/cli/commands/keys.ts +8 -3
  212. package/src/cli/commands/mcp.help.ts +13 -4
  213. package/src/cli/commands/mcp.ts +9 -0
  214. package/src/cli/commands/memory/__tests__/memory-v2.test.ts +57 -7
  215. package/src/cli/commands/memory/__tests__/memory-v3.test.ts +128 -5
  216. package/src/cli/commands/memory/index.help.ts +84 -28
  217. package/src/cli/commands/memory/index.ts +2 -0
  218. package/src/cli/commands/memory/memory-v2.ts +58 -54
  219. package/src/cli/commands/memory/memory-v3.ts +64 -0
  220. package/src/cli/commands/memory/memory-validate.ts +18 -0
  221. package/src/cli/commands/plugins.ts +85 -36
  222. package/src/cli/commands/schedules.ts +35 -1
  223. package/src/cli/commands/stt.help.ts +27 -2
  224. package/src/cli/commands/trust.ts +3 -14
  225. package/src/cli/lib/__tests__/upgrade-plugin.test.ts +39 -0
  226. package/src/cli/lib/bundled-marketplace.json +14 -1
  227. package/src/cli/lib/upgrade-plugin.ts +42 -0
  228. package/src/config/__tests__/balanced-model-experiment.test.ts +278 -0
  229. package/src/config/__tests__/default-profile-catalog.test.ts +34 -2
  230. package/src/config/__tests__/default-provider.test.ts +6 -1
  231. package/src/config/__tests__/profile-materialization.test.ts +75 -19
  232. package/src/config/assistant-feature-flags.ts +36 -15
  233. package/src/config/balanced-model-experiment.ts +35 -0
  234. package/src/config/bundled-skills/acp/SKILL.md +6 -7
  235. package/src/config/bundled-skills/document-editor/SKILL.md +2 -2
  236. package/src/config/bundled-skills/document-editor/TOOLS.json +2 -2
  237. package/src/config/bundled-skills/image-studio/SKILL.md +5 -4
  238. package/src/config/bundled-skills/image-studio/TOOLS.json +1 -1
  239. package/src/config/bundled-skills/image-studio/tools/media-generate-image.ts +101 -0
  240. package/src/config/bundled-skills/media-processing/services/preprocess.ts +14 -4
  241. package/src/config/bundled-skills/settings/TOOLS.json +3 -3
  242. package/src/config/bundled-skills/settings/tools/navigate-settings-tab.test.ts +65 -0
  243. package/src/config/bundled-skills/settings/tools/navigate-settings-tab.ts +7 -1
  244. package/src/config/bundled-skills/settings/tools/shared.ts +16 -0
  245. package/src/config/bundled-skills/settings/tools/voice-config-update.ts +19 -1
  246. package/src/config/bundled-skills/skill-management/TOOLS.json +9 -3
  247. package/src/config/bundled-skills/subagent/SKILL.md +17 -12
  248. package/src/config/bundled-skills/subagent/TOOLS.json +4 -4
  249. package/src/config/bundled-skills/transcribe/tools/transcribe-media.test.ts +22 -1
  250. package/src/config/bundled-skills/transcribe/tools/transcribe-media.ts +9 -2
  251. package/src/config/call-site-defaults.ts +11 -5
  252. package/src/config/default-profile-catalog.ts +179 -16
  253. package/src/config/default-profile-names.ts +4 -1
  254. package/src/config/default-provider-resolution.ts +4 -0
  255. package/src/config/feature-flag-registry.json +12 -12
  256. package/src/config/llm-context-resolution.ts +11 -3
  257. package/src/config/llm-resolver.ts +28 -1
  258. package/src/config/profile-materialization.ts +70 -22
  259. package/src/config/schemas/__tests__/live-voice.test.ts +107 -4
  260. package/src/config/schemas/call-site-catalog.ts +4 -4
  261. package/src/config/schemas/live-voice.ts +57 -23
  262. package/src/config/schemas/llm.ts +59 -32
  263. package/src/config/schemas/mcp.ts +23 -0
  264. package/src/config/schemas/plugin-updates.ts +6 -2
  265. package/src/config/schemas/stt.ts +1 -0
  266. package/src/config/skills.ts +9 -2
  267. package/src/context/outbound-sanitize.ts +96 -1
  268. package/src/daemon/__tests__/conversation-surfaces-launch.test.ts +1 -1
  269. package/src/daemon/__tests__/plugin-mcp-reconcile.test.ts +82 -0
  270. package/src/daemon/conversation-agent-loop-handlers.ts +15 -10
  271. package/src/daemon/conversation-agent-loop.ts +31 -19
  272. package/src/daemon/conversation-messaging.ts +5 -1
  273. package/src/daemon/conversation-notifiers.ts +20 -10
  274. package/src/daemon/conversation-process.ts +20 -6
  275. package/src/daemon/conversation-runtime-assembly.ts +12 -6
  276. package/src/daemon/conversation-store.ts +14 -4
  277. package/src/daemon/conversation-surfaces.ts +75 -26
  278. package/src/daemon/conversation-tool-setup.ts +3 -6
  279. package/src/daemon/conversation.ts +154 -51
  280. package/src/daemon/doordash-steps.ts +2 -2
  281. package/src/daemon/lifecycle.ts +14 -1
  282. package/src/daemon/mcp-reload-service.ts +36 -6
  283. package/src/daemon/process-message.ts +13 -26
  284. package/src/daemon/providers-setup.ts +6 -3
  285. package/src/daemon/trust-context-types.ts +29 -0
  286. package/src/daemon/trust-context.ts +12 -7
  287. package/src/daemon/wake-conversation-ops.ts +3 -2
  288. package/src/daemon/windows-compiled-entry.ts +4 -0
  289. package/src/documents/document-store.ts +143 -240
  290. package/src/hooks/hook-loader.ts +3 -3
  291. package/src/hooks/registry.ts +103 -45
  292. package/src/hooks/types.ts +5 -0
  293. package/src/inbound/__tests__/oauth-callback-url.test.ts +83 -0
  294. package/src/inbound/oauth-callback-url.ts +61 -0
  295. package/src/ipc/gateway-client.test.ts +1 -1
  296. package/src/ipc/gateway-client.ts +14 -21
  297. package/src/ipc/gateway-flag-listener.ts +17 -3
  298. package/src/live-voice/__tests__/live-voice-agent-turn.test.ts +1 -104
  299. package/src/live-voice/__tests__/live-voice-events.test.ts +7 -8
  300. package/src/live-voice/__tests__/live-voice-flux-turn-end.test.ts +1050 -0
  301. package/src/live-voice/__tests__/live-voice-metrics.test.ts +115 -8
  302. package/src/live-voice/__tests__/live-voice-photo.test.ts +100 -0
  303. package/src/live-voice/__tests__/live-voice-progress.test.ts +60 -194
  304. package/src/live-voice/__tests__/live-voice-stt.test.ts +14 -0
  305. package/src/live-voice/__tests__/live-voice-triage-escalate.test.ts +29 -0
  306. package/src/live-voice/__tests__/live-voice-tts-session.test.ts +0 -483
  307. package/src/live-voice/__tests__/live-voice-vad.test.ts +0 -16
  308. package/src/live-voice/__tests__/progress-narration.test.ts +214 -0
  309. package/src/live-voice/live-voice-archive.ts +2 -0
  310. package/src/live-voice/live-voice-manager.ts +16 -3
  311. package/src/live-voice/live-voice-metrics.ts +57 -32
  312. package/src/live-voice/live-voice-photo.ts +1 -2
  313. package/src/live-voice/live-voice-session.ts +598 -323
  314. package/src/live-voice/progress-narration.ts +277 -0
  315. package/src/live-voice/protocol.ts +21 -1
  316. package/src/live-voice/windows-compiled-live-voice.ts +4 -0
  317. package/src/mcp/__tests__/effective-config.test.ts +238 -0
  318. package/src/mcp/__tests__/mcp-auth-orchestrator.test.ts +0 -1
  319. package/src/mcp/__tests__/mcp-oauth-client-registration.test.ts +200 -0
  320. package/src/mcp/__tests__/mcp-oauth-provider.test.ts +9 -9
  321. package/src/mcp/__tests__/plugin-server-credential-isolation.test.ts +95 -0
  322. package/src/mcp/client.ts +16 -11
  323. package/src/mcp/effective-config.ts +113 -0
  324. package/src/mcp/manager.ts +11 -6
  325. package/src/mcp/mcp-auth-orchestrator.ts +13 -22
  326. package/src/mcp/mcp-oauth-provider.ts +205 -240
  327. package/src/monitoring/__tests__/plugin-auto-update.test.ts +166 -3
  328. package/src/monitoring/control.ts +1 -0
  329. package/src/monitoring/db-integrity-sample.ts +4 -5
  330. package/src/monitoring/plugin-auto-update.ts +128 -24
  331. package/src/notifications/AGENTS.md +2 -0
  332. package/src/notifications/approval-card-data.ts +33 -0
  333. package/src/notifications/signal.ts +1 -0
  334. package/src/permissions/AGENTS.md +16 -0
  335. package/src/permissions/checker.test.ts +75 -122
  336. package/src/permissions/checker.ts +44 -560
  337. package/src/permissions/confirmation-guardian-request.test.ts +15 -11
  338. package/src/permissions/confirmation-guardian-request.ts +2 -2
  339. package/src/permissions/prompter.ts +1 -5
  340. package/src/permissions/question-guardian-request.test.ts +14 -6
  341. package/src/permissions/question-guardian-request.ts +1 -2
  342. package/src/persistence/attachments-store.ts +8 -1
  343. package/src/persistence/bookmark-crud.ts +3 -7
  344. package/src/persistence/conversation-attention-store.ts +16 -45
  345. package/src/persistence/conversation-crud.ts +33 -4
  346. package/src/persistence/conversation-lineage.ts +9 -0
  347. package/src/persistence/conversation-queries.ts +182 -52
  348. package/src/persistence/delivery-crud.ts +150 -36
  349. package/src/persistence/embeddings/qdrant-manager.ts +84 -49
  350. package/src/persistence/external-conversation-store.ts +32 -4
  351. package/src/persistence/llm-request-log-store.ts +4 -10
  352. package/src/persistence/llm-usage-store.ts +8 -3
  353. package/src/persistence/message-reads.test.ts +197 -0
  354. package/src/persistence/message-reads.ts +211 -0
  355. package/src/persistence/migrations/360-add-document-workspace-path.ts +5 -14
  356. package/src/persistence/migrations/366-chatgpt-subscription-row-identity.test.ts +120 -0
  357. package/src/persistence/migrations/366-chatgpt-subscription-row-identity.ts +62 -0
  358. package/src/persistence/real-user-turn-filter.ts +27 -3
  359. package/src/persistence/schema/documents.ts +4 -4
  360. package/src/persistence/steps.ts +9 -0
  361. package/src/plugin-api/__tests__/oauth-callback-url-export.test.ts +29 -0
  362. package/src/plugin-api/constants.ts +8 -0
  363. package/src/plugin-api/conversation-turn.ts +195 -5
  364. package/src/plugin-api/index.ts +38 -6
  365. package/src/plugin-api/resolve-credential.ts +3 -2
  366. package/src/plugin-api/store-credential.ts +146 -0
  367. package/src/plugin-api/vision-support.test.ts +1 -1
  368. package/src/plugin-api/webhook-url.ts +13 -11
  369. package/src/plugins/__tests__/mcp-servers.test.ts +371 -0
  370. package/src/plugins/defaults/main.ts +21 -7
  371. package/src/plugins/defaults/memory/AGENTS.md +15 -3
  372. package/src/plugins/defaults/memory/__tests__/buffer-format.test.ts +204 -0
  373. package/src/plugins/defaults/memory/__tests__/memory-retrospective-accounting.test.ts +72 -0
  374. package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +4 -1
  375. package/src/plugins/defaults/memory/__tests__/memory-retrospective-provider-path.test.ts +4 -1
  376. package/src/plugins/defaults/memory/__tests__/memory-tier-boundary-guard.test.ts +0 -1
  377. package/src/plugins/defaults/memory/buffer-format.ts +165 -0
  378. package/src/plugins/defaults/memory/context-search/sources/conversations.ts +6 -0
  379. package/src/plugins/defaults/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +77 -0
  380. package/src/plugins/defaults/memory/graph/conversation-graph-memory.ts +24 -6
  381. package/src/plugins/defaults/memory/graph/image-ref-utils.ts +3 -0
  382. package/src/plugins/defaults/memory/graph/tool-handlers.ts +1 -30
  383. package/src/plugins/defaults/memory/graph-topology/pending-buffer.test.ts +34 -0
  384. package/src/plugins/defaults/memory/graph-topology/pending-buffer.ts +17 -24
  385. package/src/plugins/defaults/memory/hooks/post-compact.ts +1 -4
  386. package/src/plugins/defaults/memory/hooks/user-prompt-submit.ts +53 -5
  387. package/src/plugins/defaults/memory/indexer.ts +3 -1
  388. package/src/plugins/defaults/memory/memory-retrospective-accounting.ts +19 -7
  389. package/src/plugins/defaults/memory/memory-retrospective-job.ts +4 -4
  390. package/src/plugins/defaults/memory/src/__tests__/memory-v3-gate-stats.test.ts +281 -0
  391. package/src/plugins/defaults/memory/src/memory-v2-routes.ts +12 -10
  392. package/src/plugins/defaults/memory/src/memory-v3-routes.ts +207 -0
  393. package/src/plugins/defaults/memory/substrate/__tests__/consolidation-job.test.ts +147 -0
  394. package/src/plugins/defaults/memory/substrate/__tests__/consolidation-prompt-flag-gating-guard.test.ts +8 -0
  395. package/src/plugins/defaults/memory/substrate/__tests__/edge-index.test.ts +0 -30
  396. package/src/plugins/defaults/memory/substrate/__tests__/ingest.test.ts +73 -1
  397. package/src/plugins/defaults/memory/substrate/__tests__/page-index.test.ts +37 -0
  398. package/src/plugins/defaults/memory/substrate/__tests__/page-links.test.ts +208 -0
  399. package/src/plugins/defaults/memory/substrate/__tests__/prompts-consolidation.test.ts +158 -1
  400. package/src/plugins/defaults/memory/substrate/__tests__/static-context.test.ts +195 -58
  401. package/src/plugins/defaults/memory/substrate/consolidation-job.ts +93 -24
  402. package/src/plugins/defaults/memory/substrate/edge-index.ts +0 -31
  403. package/src/plugins/defaults/memory/substrate/ingest.ts +59 -0
  404. package/src/plugins/defaults/memory/substrate/page-index.ts +35 -8
  405. package/src/plugins/defaults/memory/substrate/page-links.ts +133 -0
  406. package/src/plugins/defaults/memory/substrate/page-store.ts +10 -0
  407. package/src/plugins/defaults/memory/substrate/prompts/consolidation.ts +124 -34
  408. package/src/plugins/defaults/memory/substrate/skill-content.ts +8 -1
  409. package/src/plugins/defaults/memory/substrate/static-context.ts +160 -33
  410. package/src/plugins/defaults/memory/substrate/sweep-job.ts +2 -4
  411. package/src/plugins/defaults/memory/v1/graph/extraction.ts +3 -1
  412. package/src/plugins/defaults/memory/v3/__tests__/injection.test.ts +18 -0
  413. package/src/plugins/defaults/memory/v3/__tests__/shadow-plugin.test.ts +66 -1
  414. package/src/plugins/defaults/memory/v3/card.ts +9 -9
  415. package/src/plugins/defaults/memory/v3/core-set.test.ts +7 -0
  416. package/src/plugins/defaults/memory/v3/core-set.ts +5 -1
  417. package/src/plugins/defaults/memory/v3/edge.ts +13 -57
  418. package/src/plugins/defaults/memory/v3/injector.ts +8 -0
  419. package/src/plugins/defaults/memory/v3/prune.ts +2 -0
  420. package/src/plugins/defaults/memory/v3/selection-log-store.ts +2 -0
  421. package/src/plugins/defaults/memory/v3/shadow-plugin.ts +23 -9
  422. package/src/plugins/defaults/memory/worker-control.ts +1 -0
  423. package/src/plugins/defaults/memory/worker.ts +6 -3
  424. package/src/plugins/defaults/worker-entrypoints.ts +3 -0
  425. package/src/plugins/external-plugin-loader.ts +47 -0
  426. package/src/plugins/mcp-servers.ts +361 -0
  427. package/src/plugins/mtime-cache.ts +37 -46
  428. package/src/plugins/pipeline.ts +14 -7
  429. package/src/plugins/plugin-execution-context.ts +35 -11
  430. package/src/plugins/worker-plugin-surface.ts +33 -0
  431. package/src/prompts/templates/system-sections.ts +0 -7
  432. package/src/providers/__tests__/connection-model-compat.test.ts +1 -1
  433. package/src/providers/__tests__/context-overflow-error.test.ts +24 -0
  434. package/src/providers/__tests__/dispatch-connection-routing.test.ts +214 -2
  435. package/src/providers/__tests__/preflight-resolved-config.test.ts +57 -0
  436. package/src/providers/__tests__/retry-callsite.test.ts +25 -2
  437. package/src/providers/anthropic/__tests__/pause-turn-continuation.test.ts +170 -0
  438. package/src/providers/anthropic/client.ts +332 -241
  439. package/src/providers/call-site-routing.ts +30 -3
  440. package/src/providers/connection-resolution.ts +194 -11
  441. package/src/providers/inference/__tests__/adapter-factory-openai-compatible.test.ts +4 -0
  442. package/src/providers/inference/adapter-factory.ts +3 -0
  443. package/src/providers/inference/auth.ts +6 -0
  444. package/src/providers/inference/connection-availability.ts +24 -2
  445. package/src/providers/inference/connections.ts +2 -0
  446. package/src/providers/model-catalog.ts +3 -3
  447. package/src/providers/model-intents.ts +28 -8
  448. package/src/providers/openai/__tests__/chat-completions-provider-reasoning.test.ts +163 -40
  449. package/src/providers/openai/__tests__/tool-choice-mapping.test.ts +125 -2
  450. package/src/providers/openai/chat-completions-provider.ts +133 -36
  451. package/src/providers/openai/codex-models.ts +2 -1
  452. package/src/providers/provider-send-message.ts +32 -3
  453. package/src/providers/speech-to-text/__tests__/deepgram-flux-frames.test.ts +433 -0
  454. package/src/providers/speech-to-text/__tests__/deepgram-flux-realtime.test.ts +625 -0
  455. package/src/providers/speech-to-text/__tests__/provider-catalog.test.ts +34 -0
  456. package/src/providers/speech-to-text/__tests__/resolve.test.ts +285 -6
  457. package/src/providers/speech-to-text/deepgram-flux-frames.ts +395 -0
  458. package/src/providers/speech-to-text/deepgram-flux-realtime.ts +679 -0
  459. package/src/providers/speech-to-text/provider-catalog.ts +99 -8
  460. package/src/providers/speech-to-text/resolve.ts +25 -2
  461. package/src/routes/control.ts +1 -0
  462. package/src/routes/route-host-client.ts +1 -0
  463. package/src/routes/route-host-protocol.ts +7 -0
  464. package/src/routes/worker.ts +48 -15
  465. package/src/runtime/AGENTS.md +16 -17
  466. package/src/runtime/access-request-helper.ts +9 -12
  467. package/src/runtime/agent-wake.ts +18 -15
  468. package/src/runtime/effective-capabilities.test.ts +43 -0
  469. package/src/runtime/effective-capabilities.ts +27 -0
  470. package/src/runtime/guardian-reply-router.ts +6 -2
  471. package/src/runtime/pre-first-message-gate.ts +4 -0
  472. package/src/runtime/routes/__tests__/acp-claude-auth-routes.test.ts +12 -4
  473. package/src/runtime/routes/__tests__/conversation-list-routes.test.ts +522 -2
  474. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +52 -0
  475. package/src/runtime/routes/__tests__/default-provider-routes.test.ts +61 -0
  476. package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +44 -0
  477. package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +102 -1
  478. package/src/runtime/routes/__tests__/plugins-routes.test.ts +132 -35
  479. package/src/runtime/routes/__tests__/schedule-routes-disarm-reason.test.ts +215 -0
  480. package/src/runtime/routes/__tests__/stt-routes.test.ts +25 -0
  481. package/src/runtime/routes/__tests__/surface-action-routes.test.ts +55 -6
  482. package/src/runtime/routes/__tests__/user-route-dispatcher-host.test.ts +52 -1
  483. package/src/runtime/routes/__tests__/user-route-dispatcher.test.ts +133 -1
  484. package/src/runtime/routes/channel-availability-routes.ts +32 -14
  485. package/src/runtime/routes/channel-route-shared.ts +0 -6
  486. package/src/runtime/routes/chatgpt-subscription-auth-routes.ts +6 -6
  487. package/src/runtime/routes/conversation-list-routes.ts +181 -23
  488. package/src/runtime/routes/conversation-management-routes.ts +17 -12
  489. package/src/runtime/routes/conversation-query-routes.ts +40 -27
  490. package/src/runtime/routes/conversation-routes.ts +43 -29
  491. package/src/runtime/routes/credential-prompt-routes.ts +4 -7
  492. package/src/runtime/routes/credential-routes.ts +26 -82
  493. package/src/runtime/routes/default-provider-routes.ts +15 -0
  494. package/src/runtime/routes/documents-routes.ts +3 -222
  495. package/src/runtime/routes/inbound-message-handler.ts +21 -45
  496. package/src/runtime/routes/inbound-stages/acl-enforcement.test.ts +0 -1
  497. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +0 -9
  498. package/src/runtime/routes/inbound-stages/admission-policy.ts +1 -17
  499. package/src/runtime/routes/inbound-stages/bootstrap-intercept.test.ts +0 -1
  500. package/src/runtime/routes/inbound-stages/bootstrap-intercept.ts +2 -3
  501. package/src/runtime/routes/inbound-stages/edit-intercept.ts +101 -79
  502. package/src/runtime/routes/inbound-stages/guardian-reply-intercept.test.ts +0 -1
  503. package/src/runtime/routes/inbound-stages/guardian-reply-intercept.ts +12 -7
  504. package/src/runtime/routes/inbound-stages/reaction-intercept.test.ts +91 -8
  505. package/src/runtime/routes/inbound-stages/reaction-intercept.ts +72 -79
  506. package/src/runtime/routes/inbound-stages/secret-ingress-check.ts +2 -3
  507. package/src/runtime/routes/inference-profiles-routes.ts +20 -11
  508. package/src/runtime/routes/inference-provider-connection-routes.ts +77 -15
  509. package/src/runtime/routes/log-export-routes.ts +3 -0
  510. package/src/runtime/routes/mcp-auth-routes.ts +148 -57
  511. package/src/runtime/routes/playground/__tests__/inject-failures.test.ts +2 -0
  512. package/src/runtime/routes/playground/__tests__/reset-circuit.test.ts +3 -0
  513. package/src/runtime/routes/playground/inject-failures.ts +2 -2
  514. package/src/runtime/routes/playground/reset-circuit.ts +1 -1
  515. package/src/runtime/routes/plugins-routes.ts +38 -8
  516. package/src/runtime/routes/schedule-routes.ts +94 -7
  517. package/src/runtime/routes/settings-routes.ts +6 -6
  518. package/src/runtime/routes/stt-routes.ts +31 -25
  519. package/src/runtime/routes/surface-action-routes.ts +20 -19
  520. package/src/runtime/routes/surface-conversation-resolver.ts +3 -0
  521. package/src/runtime/routes/user-route-dispatcher.ts +69 -15
  522. package/src/runtime/routes/user-route-import.ts +108 -0
  523. package/src/runtime/routes/user-route-resolution.ts +18 -1
  524. package/src/runtime/routes/workspace-routes.ts +0 -9
  525. package/src/runtime/routes/workspace-utils.ts +3 -13
  526. package/src/runtime/services/conversation-serializer.ts +7 -2
  527. package/src/schedule/__tests__/plugin-schedule-declarations.test.ts +68 -5
  528. package/src/schedule/__tests__/plugin-schedule-reconciler.test.ts +81 -0
  529. package/src/schedule/plugin-schedule-availability.ts +58 -0
  530. package/src/schedule/plugin-schedule-declarations.ts +23 -27
  531. package/src/schedule/plugin-schedule-reconciler.ts +12 -3
  532. package/src/schedule/schedule-store.ts +5 -1
  533. package/src/schedule/scheduler.ts +9 -4
  534. package/src/schedule/worker-control.ts +1 -0
  535. package/src/schedule/worker.ts +6 -0
  536. package/src/security/oauth2.ts +6 -22
  537. package/src/stt/__tests__/daemon-batch-transcriber.test.ts +22 -0
  538. package/src/stt/__tests__/types.test.ts +94 -0
  539. package/src/stt/daemon-batch-transcriber.ts +10 -0
  540. package/src/stt/stt-stream-session.ts +8 -4
  541. package/src/stt/types.ts +103 -0
  542. package/src/subagent/__tests__/consult-prompt.test.ts +26 -15
  543. package/src/subagent/consult-context.ts +11 -11
  544. package/src/subagent/consult-prompt.ts +26 -35
  545. package/src/subagent/manager.ts +21 -40
  546. package/src/subagent/notify.ts +7 -1
  547. package/src/subagent/types.ts +15 -12
  548. package/src/tools/__tests__/tool-input-schemas.test.ts +7 -7
  549. package/src/tools/acp/spawn.test.ts +97 -0
  550. package/src/tools/acp/spawn.ts +38 -4
  551. package/src/tools/credentials/ref-parse.ts +35 -0
  552. package/src/tools/credentials/resolve.ts +4 -10
  553. package/src/tools/credentials/store.ts +168 -0
  554. package/src/tools/document/document-tool.ts +12 -3
  555. package/src/tools/executor.ts +53 -15
  556. package/src/tools/filesystem/read.ts +27 -10
  557. package/src/tools/host-filesystem/read.ts +27 -15
  558. package/src/tools/network/url-safety.ts +9 -16
  559. package/src/tools/permission-checker.ts +43 -52
  560. package/src/tools/registry.ts +2 -1
  561. package/src/tools/shared/filesystem/file-ops-service.ts +63 -35
  562. package/src/tools/shared/filesystem/legacy-read-args.ts +22 -0
  563. package/src/tools/shared/filesystem/types.ts +5 -5
  564. package/src/tools/skills/scaffold-managed.ts +25 -7
  565. package/src/tools/subagent/spawn.ts +28 -88
  566. package/src/tools/tool-types.ts +26 -13
  567. package/src/tools/types.ts +6 -6
  568. package/src/tools/ui-surface/surface-shape-docs.ts +12 -1
  569. package/src/tools/workflows/run-workflow.ts +1 -2
  570. package/src/tts/__tests__/reasoning-tag-filter.test.ts +78 -0
  571. package/src/tts/reasoning-tag-filter.ts +89 -0
  572. package/src/util/__tests__/worker-process-command.test.ts +37 -0
  573. package/src/util/logger.ts +16 -0
  574. package/src/util/think-tag-stream.ts +95 -0
  575. package/src/util/worker-process.ts +37 -4
  576. package/src/windows-compiled-cli.ts +32 -0
  577. package/src/windows-compiled-entry.ts +4 -0
  578. package/src/windows-compiled-logger.ts +6 -0
  579. package/src/windows-compiled-worker-entry.ts +29 -0
  580. package/src/workspace/byok-default-profile-ensure.ts +76 -24
  581. package/src/workspace/custom-profile-ensure.ts +4 -24
  582. package/src/workspace/migrations/142-consolidate-voice-front-door.ts +70 -0
  583. package/src/workspace/migrations/143-repair-deprecated-codex-model-id.ts +134 -0
  584. package/src/workspace/migrations/144-convert-stranded-subscription-openai-profiles.ts +265 -0
  585. package/src/workspace/migrations/145-collapse-profile-bindings-to-entries.ts +328 -0
  586. package/src/workspace/migrations/146-repair-retired-fireworks-deepseek-flash-model-id.ts +195 -0
  587. package/src/workspace/migrations/__tests__/141-stt-english-default-to-multilingual.test.ts +0 -10
  588. package/src/workspace/migrations/registry.ts +10 -0
  589. package/src/workspace/provider-commit-message-generator.ts +7 -5
  590. package/src/__tests__/document-workspace-file.test.ts +0 -467
  591. package/src/live-voice/__tests__/front-decision.test.ts +0 -645
  592. package/src/live-voice/front-decision.ts +0 -476
  593. package/src/permissions/ipc-risk-types.ts +0 -143
  594. package/src/permissions/risk-types.ts +0 -76
  595. package/src/subagent/__tests__/consult-transcript.test.ts +0 -184
  596. package/src/subagent/consult-transcript.ts +0 -90
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.11.3
6
+ version: 0.11.4
7
7
  description: Auto-generated OpenAPI specification for the Vellum Assistant runtime HTTP server.
8
8
  servers:
9
9
  - url: http://127.0.0.1:7821
@@ -4017,8 +4017,8 @@ paths:
4017
4017
  summary: Get available channels
4018
4018
  description:
4019
4019
  Return the channels this assistant can surface to clients, with display metadata (label, icon, verification
4020
- capability, setup copy). Today this is a fixed base list plus `email` when an inbox is registered; will become
4021
- plugin/skill-driven in future.
4020
+ capability, setup copy). A fixed base list plus `email` when an inbox is registered, plus the channels installed
4021
+ plugins bring by declaring ingress routes. Each carries a `source` saying which of those it is.
4022
4022
  tags:
4023
4023
  - channels
4024
4024
  responses:
@@ -4036,16 +4036,9 @@ paths:
4036
4036
  properties:
4037
4037
  id:
4038
4038
  type: string
4039
- enum:
4040
- - telegram
4041
- - phone
4042
- - vellum
4043
- - whatsapp
4044
- - slack
4045
- - email
4046
- - platform
4047
- - a2a
4048
- - discord
4039
+ source:
4040
+ type: string
4041
+ description: "`default` for a channel the assistant ships, `plugin:<name>` for one an installed plugin brings"
4049
4042
  label:
4050
4043
  type: string
4051
4044
  subtitle:
@@ -4067,13 +4060,16 @@ paths:
4067
4060
  additionalProperties: false
4068
4061
  required:
4069
4062
  - id
4063
+ - source
4070
4064
  - label
4071
4065
  - subtitle
4072
4066
  - icon
4073
4067
  - supportsVerification
4074
4068
  - setupMessages
4075
4069
  additionalProperties: false
4076
- description: Available channels in display order
4070
+ description:
4071
+ "Available channels in display order: the ones the assistant ships, then the ones installed plugins bring
4072
+ by declaring ingress routes. `source` distinguishes them."
4077
4073
  required:
4078
4074
  - channels
4079
4075
  additionalProperties: false
@@ -4358,6 +4354,7 @@ paths:
4358
4354
  - platform
4359
4355
  - a2a
4360
4356
  - discord
4357
+ - plugin
4361
4358
  ready:
4362
4359
  type: boolean
4363
4360
  setupStatus:
@@ -4448,6 +4445,7 @@ paths:
4448
4445
  - platform
4449
4446
  - a2a
4450
4447
  - discord
4448
+ - plugin
4451
4449
  includeRemote:
4452
4450
  description: Include remote checks (default true)
4453
4451
  type: boolean
@@ -4478,6 +4476,7 @@ paths:
4478
4476
  - platform
4479
4477
  - a2a
4480
4478
  - discord
4479
+ - plugin
4481
4480
  ready:
4482
4481
  type: boolean
4483
4482
  setupStatus:
@@ -4827,6 +4826,7 @@ paths:
4827
4826
  - gemini
4828
4827
  - fireworks
4829
4828
  - openrouter
4829
+ - chatgpt
4830
4830
  - vellum
4831
4831
  - together
4832
4832
  - vercel-ai-gateway
@@ -6582,6 +6582,7 @@ paths:
6582
6582
  - platform
6583
6583
  - a2a
6584
6584
  - discord
6585
+ - plugin
6585
6586
  description:
6586
6587
  Filter by origin channel. When provided, only conversations with this exact origin_channel value are
6587
6588
  returned. Omit to include all channels.
@@ -6593,8 +6594,34 @@ paths:
6593
6594
  description:
6594
6595
  Filter to a single group, so each sidebar section can load independently of the paginated list. Pass
6595
6596
  "system:all" for conversations in no group, "system:pinned" for the Pinned section, or a custom group id. A
6596
- group-scoped request is ordered by the user's arrangement (display order, then recency) and never has pinned
6597
- rows appended to it. Omit to span every group.
6597
+ group-scoped request is recency-ordered like every list read (COALESCE(last_message_at, updated_at)
6598
+ descending) and never has pinned rows appended to it. Omit to span every group.
6599
+ - name: needsAttention
6600
+ in: query
6601
+ required: false
6602
+ schema:
6603
+ type: string
6604
+ enum:
6605
+ - "true"
6606
+ description:
6607
+ 'Pass "true" to return only conversations whose latest assistant message the user has not seen: the same
6608
+ predicate behind the unread count and the section index, so a client that keeps no complete conversation
6609
+ list can ask for exactly the rows its attention surfaces need. Composes with every other filter. Any value
6610
+ other than "true" is rejected. Omit to span every conversation.'
6611
+ - name: foregroundOnly
6612
+ in: query
6613
+ required: false
6614
+ schema:
6615
+ type: string
6616
+ enum:
6617
+ - "true"
6618
+ description:
6619
+ Pass "true" to return only user-facing foreground conversations, dropping the automated background and
6620
+ scheduled runs the standard listing admits when they are filed in a custom group (a surfaced run stays).
6621
+ This is the same predicate the unread count and the section index apply, so a client can ask for the newest
6622
+ conversation a user can open in one row instead of paging past runs it would skip. Composes with every other
6623
+ filter; a foreground-only first page never has pinned rows appended to it. Any value other than "true" is
6624
+ rejected. Omit to keep every visible row.
6598
6625
  responses:
6599
6626
  "200":
6600
6627
  description: Successful response
@@ -6718,6 +6745,7 @@ paths:
6718
6745
  - platform
6719
6746
  - a2a
6720
6747
  - discord
6748
+ - plugin
6721
6749
  - type: "null"
6722
6750
  assistantAttention:
6723
6751
  type: object
@@ -6951,7 +6979,9 @@ paths:
6951
6979
  get:
6952
6980
  operationId: conversations_by_id_get
6953
6981
  summary: Get conversation detail
6954
- description: Retrieve a single conversation with full metadata.
6982
+ description:
6983
+ Retrieve a single conversation with full metadata. Rows the listing hides by type (legacy private rows) are
6984
+ not found here either.
6955
6985
  tags:
6956
6986
  - conversations
6957
6987
  parameters:
@@ -7081,6 +7111,7 @@ paths:
7081
7111
  - platform
7082
7112
  - a2a
7083
7113
  - discord
7114
+ - plugin
7084
7115
  - type: "null"
7085
7116
  assistantAttention:
7086
7117
  type: object
@@ -8294,6 +8325,7 @@ paths:
8294
8325
  - platform
8295
8326
  - a2a
8296
8327
  - discord
8328
+ - plugin
8297
8329
  - type: "null"
8298
8330
  assistantAttention:
8299
8331
  type: object
@@ -9379,6 +9411,107 @@ paths:
9379
9411
  - query
9380
9412
  - results
9381
9413
  additionalProperties: false
9414
+ /v1/conversations/sections:
9415
+ get:
9416
+ operationId: conversations_sections_get
9417
+ summary: Sidebar section index
9418
+ description:
9419
+ "One row per renderable sidebar section (Pinned, each non-empty custom group, each origin channel with
9420
+ unassigned conversations, Chats) with total and unread counts and no conversation rows. Lets a client know which
9421
+ sections exist, and what their badges say, without fetching any conversation list. Totals follow the standard
9422
+ listing visibility; unread applies the same rules as GET /v1/conversations/unread-count scoped to the section.
9423
+ Chats is always present, even at zero: it is the leftover bucket and renders regardless."
9424
+ tags:
9425
+ - conversations
9426
+ responses:
9427
+ "200":
9428
+ description: Successful response
9429
+ content:
9430
+ application/json:
9431
+ schema:
9432
+ type: object
9433
+ properties:
9434
+ sections:
9435
+ type: array
9436
+ items:
9437
+ oneOf:
9438
+ - type: object
9439
+ properties:
9440
+ kind:
9441
+ type: string
9442
+ const: pinned
9443
+ total:
9444
+ type: number
9445
+ unread:
9446
+ type: number
9447
+ required:
9448
+ - kind
9449
+ - total
9450
+ - unread
9451
+ additionalProperties: false
9452
+ - type: object
9453
+ properties:
9454
+ kind:
9455
+ type: string
9456
+ const: group
9457
+ groupId:
9458
+ type: string
9459
+ name:
9460
+ type: string
9461
+ icon:
9462
+ anyOf:
9463
+ - type: string
9464
+ - type: "null"
9465
+ sortPosition:
9466
+ type: number
9467
+ total:
9468
+ type: number
9469
+ unread:
9470
+ type: number
9471
+ required:
9472
+ - kind
9473
+ - groupId
9474
+ - name
9475
+ - icon
9476
+ - sortPosition
9477
+ - total
9478
+ - unread
9479
+ additionalProperties: false
9480
+ - type: object
9481
+ properties:
9482
+ kind:
9483
+ type: string
9484
+ const: channel
9485
+ channelId:
9486
+ type: string
9487
+ total:
9488
+ type: number
9489
+ unread:
9490
+ type: number
9491
+ required:
9492
+ - kind
9493
+ - channelId
9494
+ - total
9495
+ - unread
9496
+ additionalProperties: false
9497
+ - type: object
9498
+ properties:
9499
+ kind:
9500
+ type: string
9501
+ const: chats
9502
+ total:
9503
+ type: number
9504
+ unread:
9505
+ type: number
9506
+ required:
9507
+ - kind
9508
+ - total
9509
+ - unread
9510
+ additionalProperties: false
9511
+ type: object
9512
+ required:
9513
+ - sections
9514
+ additionalProperties: false
9382
9515
  /v1/conversations/seen:
9383
9516
  post:
9384
9517
  operationId: conversations_seen_post
@@ -10801,11 +10934,6 @@ paths:
10801
10934
  type: number
10802
10935
  updatedAt:
10803
10936
  type: number
10804
- workspacePath:
10805
- anyOf:
10806
- - type: string
10807
- - type: "null"
10808
- description: Workspace-relative file this document is bound to, or null
10809
10937
  required:
10810
10938
  - success
10811
10939
  - surfaceId
@@ -10815,7 +10943,6 @@ paths:
10815
10943
  - wordCount
10816
10944
  - createdAt
10817
10945
  - updatedAt
10818
- - workspacePath
10819
10946
  additionalProperties: false
10820
10947
  /v1/documents/{id}/comments:
10821
10948
  get:
@@ -11233,74 +11360,6 @@ paths:
11233
11360
  schema:
11234
11361
  type: string
11235
11362
  format: binary
11236
- /v1/documents/for-workspace-file:
11237
- post:
11238
- operationId: documents_forworkspacefile_post
11239
- summary: Get or create the document for a workspace markdown file
11240
- description:
11241
- "Return the document bound to a workspace markdown file, creating it on first open. The file is the source
11242
- of truth at open time: stored content that has drifted from the file is refreshed from disk before the document
11243
- is returned."
11244
- tags:
11245
- - documents
11246
- requestBody:
11247
- required: true
11248
- content:
11249
- application/json:
11250
- schema:
11251
- type: object
11252
- properties:
11253
- path:
11254
- type: string
11255
- description: Workspace-relative path to a .md/.markdown file
11256
- conversationId:
11257
- type: string
11258
- description: Conversation the document is opened from
11259
- required:
11260
- - path
11261
- - conversationId
11262
- responses:
11263
- "200":
11264
- description: Successful response
11265
- content:
11266
- application/json:
11267
- schema:
11268
- type: object
11269
- properties:
11270
- success:
11271
- type: boolean
11272
- surfaceId:
11273
- type: string
11274
- conversationId:
11275
- type: string
11276
- title:
11277
- type: string
11278
- content:
11279
- type: string
11280
- wordCount:
11281
- type: number
11282
- createdAt:
11283
- type: number
11284
- updatedAt:
11285
- type: number
11286
- workspacePath:
11287
- anyOf:
11288
- - type: string
11289
- - type: "null"
11290
- description: Workspace-relative file this document is bound to, or null
11291
- required:
11292
- - success
11293
- - surfaceId
11294
- - conversationId
11295
- - title
11296
- - content
11297
- - wordCount
11298
- - createdAt
11299
- - updatedAt
11300
- - workspacePath
11301
- additionalProperties: false
11302
- "422":
11303
- description: Path is not a markdown file
11304
11363
  /v1/domain/register:
11305
11364
  post:
11306
11365
  operationId: domain_register_post
@@ -14832,7 +14891,7 @@ paths:
14832
14891
  type: string
14833
14892
  description:
14834
14893
  "Filter by provider. One of: anthropic, openai, gemini, ollama, fireworks, together, openrouter,
14835
- vercel-ai-gateway, litellm, openai-compatible, minimax, atlascloud, baseten, poolside, vellum"
14894
+ vercel-ai-gateway, litellm, openai-compatible, minimax, atlascloud, baseten, poolside, vellum, chatgpt"
14836
14895
  responses:
14837
14896
  "200":
14838
14897
  description: Successful response
@@ -21962,6 +22021,7 @@ paths:
21962
22021
  - platform
21963
22022
  - a2a
21964
22023
  - discord
22024
+ - plugin
21965
22025
  - scheduler
21966
22026
  - watcher
21967
22027
  sourceContextId:
@@ -24335,8 +24395,9 @@ paths:
24335
24395
  non-conflicting edits from both sides forward and resolving conflicting hunks toward the local edit (`ours`) or
24336
24396
  the target (`theirs`), or writing git conflict markers into the file and reporting them in
24337
24397
  `conflicts`/`binaryConflicts` for the assistant to resolve (`assistant`). A merge strategy whose install-time
24338
- baseline cannot be reconstructed returns 409. Mirrors the CLI''s `assistant plugins upgrade <name> [--strategy
24339
- <s>]`.'
24398
+ baseline cannot be reconstructed returns 409. Pass `marketplaceOnly` to refuse the untrusted direct path
24399
+ outright (409), which is what the unattended auto-update sweep does. Mirrors the CLI''s `assistant plugins
24400
+ upgrade <name> [--strategy <s>]`.'
24340
24401
  tags:
24341
24402
  - plugins
24342
24403
  parameters:
@@ -24366,6 +24427,13 @@ paths:
24366
24427
  - theirs
24367
24428
  - overwrite
24368
24429
  - assistant
24430
+ marketplaceOnly:
24431
+ description:
24432
+ Refuse the upgrade (409) when the marketplace does not claim this plugin, instead of advancing it to
24433
+ whatever its recorded GitHub ref now resolves to. Set by unattended callers such as the automatic
24434
+ update sweep, for which running code no curator reviewed is never an acceptable outcome. Defaults to
24435
+ false.
24436
+ type: boolean
24369
24437
  responses:
24370
24438
  "200":
24371
24439
  description: Successful response
@@ -24465,8 +24533,9 @@ paths:
24465
24533
  description: No copy of the plugin is installed, or its source resolves to nothing.
24466
24534
  "409":
24467
24535
  description:
24468
- The install has neither a marketplace entry nor a recorded GitHub source to advance to, or a merge strategy
24469
- was requested whose install-time baseline cannot be reconstructed.
24536
+ The install has neither a marketplace entry nor a recorded GitHub source to advance to, a `marketplaceOnly`
24537
+ upgrade was requested for an install the marketplace does not claim, or a merge strategy was requested whose
24538
+ install-time baseline cannot be reconstructed.
24470
24539
  "503":
24471
24540
  description: The plugin source (GitHub) was temporarily unavailable; the upgrade is retryable.
24472
24541
  /v1/plugins/{name}/versions:
@@ -25663,6 +25732,20 @@ paths:
25663
25732
  description:
25664
25733
  User enable/disable override on a plugin-sourced schedule; null when the declaration's own enabled value
25665
25734
  applies. Always null for user-created schedules.
25735
+ disarmReason:
25736
+ anyOf:
25737
+ - type: string
25738
+ enum:
25739
+ - user_disabled
25740
+ - plugin_removed
25741
+ - plugin_disabled
25742
+ - declaration_removed
25743
+ - declaration_disabled
25744
+ - type: "null"
25745
+ description:
25746
+ "Why a plugin-sourced schedule is off: the user turned it off, the plugin is gone, the plugin is disabled,
25747
+ the declaration is gone, or the plugin's own files turned it off. Null whenever the schedule
25748
+ is on, and always null for user-created schedules."
25666
25749
  isOneShot:
25667
25750
  type: boolean
25668
25751
  isDeferred:
@@ -25699,6 +25782,7 @@ paths:
25699
25782
  - workflowName
25700
25783
  - sourceKey
25701
25784
  - userEnabled
25785
+ - disarmReason
25702
25786
  - isOneShot
25703
25787
  - isDeferred
25704
25788
  additionalProperties: false
@@ -25896,6 +25980,20 @@ paths:
25896
25980
  description:
25897
25981
  User enable/disable override on a plugin-sourced schedule; null when the declaration's own enabled value
25898
25982
  applies. Always null for user-created schedules.
25983
+ disarmReason:
25984
+ anyOf:
25985
+ - type: string
25986
+ enum:
25987
+ - user_disabled
25988
+ - plugin_removed
25989
+ - plugin_disabled
25990
+ - declaration_removed
25991
+ - declaration_disabled
25992
+ - type: "null"
25993
+ description:
25994
+ "Why a plugin-sourced schedule is off: the user turned it off, the plugin is gone, the plugin is disabled,
25995
+ the declaration is gone, or the plugin's own files turned it off. Null whenever the schedule
25996
+ is on, and always null for user-created schedules."
25899
25997
  isOneShot:
25900
25998
  type: boolean
25901
25999
  isDeferred:
@@ -25932,6 +26030,7 @@ paths:
25932
26030
  - workflowName
25933
26031
  - sourceKey
25934
26032
  - userEnabled
26033
+ - disarmReason
25935
26034
  - isOneShot
25936
26035
  - isDeferred
25937
26036
  additionalProperties: false
@@ -26081,6 +26180,20 @@ paths:
26081
26180
  description:
26082
26181
  User enable/disable override on a plugin-sourced schedule; null when the declaration's own enabled value
26083
26182
  applies. Always null for user-created schedules.
26183
+ disarmReason:
26184
+ anyOf:
26185
+ - type: string
26186
+ enum:
26187
+ - user_disabled
26188
+ - plugin_removed
26189
+ - plugin_disabled
26190
+ - declaration_removed
26191
+ - declaration_disabled
26192
+ - type: "null"
26193
+ description:
26194
+ "Why a plugin-sourced schedule is off: the user turned it off, the plugin is gone, the plugin is disabled,
26195
+ the declaration is gone, or the plugin's own files turned it off. Null whenever the schedule
26196
+ is on, and always null for user-created schedules."
26084
26197
  isOneShot:
26085
26198
  type: boolean
26086
26199
  isDeferred:
@@ -26117,6 +26230,7 @@ paths:
26117
26230
  - workflowName
26118
26231
  - sourceKey
26119
26232
  - userEnabled
26233
+ - disarmReason
26120
26234
  - isOneShot
26121
26235
  - isDeferred
26122
26236
  additionalProperties: false
@@ -26263,6 +26377,20 @@ paths:
26263
26377
  description:
26264
26378
  User enable/disable override on a plugin-sourced schedule; null when the declaration's own enabled value
26265
26379
  applies. Always null for user-created schedules.
26380
+ disarmReason:
26381
+ anyOf:
26382
+ - type: string
26383
+ enum:
26384
+ - user_disabled
26385
+ - plugin_removed
26386
+ - plugin_disabled
26387
+ - declaration_removed
26388
+ - declaration_disabled
26389
+ - type: "null"
26390
+ description:
26391
+ "Why a plugin-sourced schedule is off: the user turned it off, the plugin is gone, the plugin is disabled,
26392
+ the declaration is gone, or the plugin's own files turned it off. Null whenever the schedule
26393
+ is on, and always null for user-created schedules."
26266
26394
  isOneShot:
26267
26395
  type: boolean
26268
26396
  isDeferred:
@@ -26299,6 +26427,7 @@ paths:
26299
26427
  - workflowName
26300
26428
  - sourceKey
26301
26429
  - userEnabled
26430
+ - disarmReason
26302
26431
  - isOneShot
26303
26432
  - isDeferred
26304
26433
  additionalProperties: false
@@ -26505,6 +26634,20 @@ paths:
26505
26634
  description:
26506
26635
  User enable/disable override on a plugin-sourced schedule; null when the declaration's own enabled value
26507
26636
  applies. Always null for user-created schedules.
26637
+ disarmReason:
26638
+ anyOf:
26639
+ - type: string
26640
+ enum:
26641
+ - user_disabled
26642
+ - plugin_removed
26643
+ - plugin_disabled
26644
+ - declaration_removed
26645
+ - declaration_disabled
26646
+ - type: "null"
26647
+ description:
26648
+ "Why a plugin-sourced schedule is off: the user turned it off, the plugin is gone, the plugin is disabled,
26649
+ the declaration is gone, or the plugin's own files turned it off. Null whenever the schedule
26650
+ is on, and always null for user-created schedules."
26508
26651
  isOneShot:
26509
26652
  type: boolean
26510
26653
  isDeferred:
@@ -26541,6 +26684,7 @@ paths:
26541
26684
  - workflowName
26542
26685
  - sourceKey
26543
26686
  - userEnabled
26687
+ - disarmReason
26544
26688
  - isOneShot
26545
26689
  - isDeferred
26546
26690
  additionalProperties: false
@@ -26690,6 +26834,20 @@ paths:
26690
26834
  description:
26691
26835
  User enable/disable override on a plugin-sourced schedule; null when the declaration's own enabled value
26692
26836
  applies. Always null for user-created schedules.
26837
+ disarmReason:
26838
+ anyOf:
26839
+ - type: string
26840
+ enum:
26841
+ - user_disabled
26842
+ - plugin_removed
26843
+ - plugin_disabled
26844
+ - declaration_removed
26845
+ - declaration_disabled
26846
+ - type: "null"
26847
+ description:
26848
+ "Why a plugin-sourced schedule is off: the user turned it off, the plugin is gone, the plugin is disabled,
26849
+ the declaration is gone, or the plugin's own files turned it off. Null whenever the schedule
26850
+ is on, and always null for user-created schedules."
26693
26851
  isOneShot:
26694
26852
  type: boolean
26695
26853
  isDeferred:
@@ -26726,6 +26884,7 @@ paths:
26726
26884
  - workflowName
26727
26885
  - sourceKey
26728
26886
  - userEnabled
26887
+ - disarmReason
26729
26888
  - isOneShot
26730
26889
  - isDeferred
26731
26890
  additionalProperties: false
@@ -26877,6 +27036,20 @@ paths:
26877
27036
  description:
26878
27037
  User enable/disable override on a plugin-sourced schedule; null when the declaration's own enabled value
26879
27038
  applies. Always null for user-created schedules.
27039
+ disarmReason:
27040
+ anyOf:
27041
+ - type: string
27042
+ enum:
27043
+ - user_disabled
27044
+ - plugin_removed
27045
+ - plugin_disabled
27046
+ - declaration_removed
27047
+ - declaration_disabled
27048
+ - type: "null"
27049
+ description:
27050
+ "Why a plugin-sourced schedule is off: the user turned it off, the plugin is gone, the plugin is disabled,
27051
+ the declaration is gone, or the plugin's own files turned it off. Null whenever the schedule
27052
+ is on, and always null for user-created schedules."
26880
27053
  isOneShot:
26881
27054
  type: boolean
26882
27055
  isDeferred:
@@ -26913,6 +27086,7 @@ paths:
26913
27086
  - workflowName
26914
27087
  - sourceKey
26915
27088
  - userEnabled
27089
+ - disarmReason
26916
27090
  - isOneShot
26917
27091
  - isDeferred
26918
27092
  additionalProperties: false
@@ -27199,6 +27373,20 @@ paths:
27199
27373
  description:
27200
27374
  User enable/disable override on a plugin-sourced schedule; null when the declaration's own enabled value
27201
27375
  applies. Always null for user-created schedules.
27376
+ disarmReason:
27377
+ anyOf:
27378
+ - type: string
27379
+ enum:
27380
+ - user_disabled
27381
+ - plugin_removed
27382
+ - plugin_disabled
27383
+ - declaration_removed
27384
+ - declaration_disabled
27385
+ - type: "null"
27386
+ description:
27387
+ "Why a plugin-sourced schedule is off: the user turned it off, the plugin is gone, the plugin is disabled,
27388
+ the declaration is gone, or the plugin's own files turned it off. Null whenever the schedule
27389
+ is on, and always null for user-created schedules."
27202
27390
  isOneShot:
27203
27391
  type: boolean
27204
27392
  isDeferred:
@@ -27235,6 +27423,7 @@ paths:
27235
27423
  - workflowName
27236
27424
  - sourceKey
27237
27425
  - userEnabled
27426
+ - disarmReason
27238
27427
  - isOneShot
27239
27428
  - isDeferred
27240
27429
  additionalProperties: false
@@ -33912,23 +34101,7 @@ components:
33912
34101
  additionalProperties: {}
33913
34102
  LLMProvider:
33914
34103
  type: string
33915
- enum:
33916
- - anthropic
33917
- - openai
33918
- - gemini
33919
- - ollama
33920
- - fireworks
33921
- - openrouter
33922
- - vercel-ai-gateway
33923
- - openai-compatible
33924
- - minimax
33925
- - atlascloud
33926
- - together
33927
- - litellm
33928
- - baseten
33929
- - poolside
33930
- - vellum
33931
- - chatgpt
34104
+ minLength: 1
33932
34105
  ProfilePatchEntry:
33933
34106
  type: object
33934
34107
  properties:
@@ -34309,6 +34482,7 @@ components:
34309
34482
  - baseten
34310
34483
  - poolside
34311
34484
  - vellum
34485
+ - chatgpt
34312
34486
  Auth:
34313
34487
  oneOf:
34314
34488
  - type: object
@@ -34526,6 +34700,7 @@ components:
34526
34700
  - gemini
34527
34701
  - fireworks
34528
34702
  - openrouter
34703
+ - chatgpt
34529
34704
  - vellum
34530
34705
  - together
34531
34706
  - vercel-ai-gateway
@@ -34903,6 +35078,7 @@ components:
34903
35078
  - gemini
34904
35079
  - fireworks
34905
35080
  - openrouter
35081
+ - chatgpt
34906
35082
  - vellum
34907
35083
  - together
34908
35084
  - vercel-ai-gateway