@vellumai/assistant 0.8.5 → 0.8.6

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 (544) hide show
  1. package/AGENTS.md +33 -1
  2. package/ARCHITECTURE.md +1 -1
  3. package/bunfig.toml +6 -1
  4. package/docs/credential-execution-service.md +6 -6
  5. package/docs/plugins.md +4 -3
  6. package/node_modules/@vellumai/skill-host-contracts/src/client.ts +12 -13
  7. package/node_modules/@vellumai/skill-host-contracts/src/skill-host.ts +4 -1
  8. package/node_modules/@vellumai/skill-host-contracts/src/tool-types.ts +16 -14
  9. package/openapi.yaml +1900 -166
  10. package/package.json +1 -1
  11. package/src/__tests__/actor-token-service.test.ts +3 -2
  12. package/src/__tests__/agent-loop-exit-reason.test.ts +102 -9
  13. package/src/__tests__/agent-loop-override-profile.test.ts +2 -1
  14. package/src/__tests__/agent-wake-disk-pressure-callsite.test.ts +1 -0
  15. package/src/__tests__/agent-wake-override-profile.test.ts +1 -0
  16. package/src/__tests__/always-loaded-tools-guard.test.ts +2 -2
  17. package/src/__tests__/annotate-risk-options.test.ts +1 -0
  18. package/src/__tests__/approval-cascade.test.ts +1 -0
  19. package/src/__tests__/approval-routes-http.test.ts +9 -13
  20. package/src/__tests__/assert-not-live-db.ts +79 -0
  21. package/src/__tests__/assistant-feature-flags-integration.test.ts +9 -25
  22. package/src/__tests__/audit-log-rotation.test.ts +2 -2
  23. package/src/__tests__/auto-analysis-end-to-end.test.ts +6 -6
  24. package/src/__tests__/background-workers-disk-pressure.test.ts +5 -8
  25. package/src/__tests__/browser-skill-endstate.test.ts +3 -3
  26. package/src/__tests__/btw-routes.test.ts +3 -2
  27. package/src/__tests__/call-controller.test.ts +3 -2
  28. package/src/__tests__/channel-approval-routes.test.ts +3 -2
  29. package/src/__tests__/channel-guardian.test.ts +3 -2
  30. package/src/__tests__/channel-readiness-slack-remote.test.ts +175 -0
  31. package/src/__tests__/channel-reply-delivery.test.ts +35 -0
  32. package/src/__tests__/channel-retry-sweep.test.ts +320 -3
  33. package/src/__tests__/checker.test.ts +12 -12
  34. package/src/__tests__/compaction-events.test.ts +1 -0
  35. package/src/__tests__/compaction-trail-store.test.ts +264 -0
  36. package/src/__tests__/compactor-call-site-logging.test.ts +1 -0
  37. package/src/__tests__/compactor-preserved-tail-count.test.ts +1 -0
  38. package/src/__tests__/computer-use-skill-manifest-regression.test.ts +7 -5
  39. package/src/__tests__/computer-use-tools.test.ts +12 -14
  40. package/src/__tests__/config-loader-backfill.test.ts +13 -28
  41. package/src/__tests__/config-loader-corrupt.test.ts +5 -5
  42. package/src/__tests__/config-loader-platform-defaults.test.ts +93 -26
  43. package/src/__tests__/config-loader-quarantine-bulletin.test.ts +3 -3
  44. package/src/__tests__/config-managed-gemini-defaults.test.ts +3 -4
  45. package/src/__tests__/config-schema.test.ts +10 -10
  46. package/src/__tests__/connection-model-compat.test.ts +83 -0
  47. package/src/__tests__/contacts-tools.test.ts +3 -2
  48. package/src/__tests__/context-token-estimator.test.ts +22 -0
  49. package/src/__tests__/conversation-abort-tool-results.test.ts +5 -0
  50. package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +1 -0
  51. package/src/__tests__/conversation-agent-loop-handlers-max-tokens.test.ts +55 -0
  52. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +1 -0
  53. package/src/__tests__/conversation-agent-loop-overflow.test.ts +34 -0
  54. package/src/__tests__/conversation-agent-loop.test.ts +488 -2
  55. package/src/__tests__/conversation-analysis-routes.test.ts +1 -0
  56. package/src/__tests__/conversation-app-control-instantiation.test.ts +29 -19
  57. package/src/__tests__/conversation-app-control-lifecycle.test.ts +1 -0
  58. package/src/__tests__/conversation-attention-store.test.ts +101 -0
  59. package/src/__tests__/conversation-attention-telegram.test.ts +3 -2
  60. package/src/__tests__/conversation-confirmation-signals.test.ts +1 -0
  61. package/src/__tests__/conversation-error.test.ts +30 -0
  62. package/src/__tests__/conversation-fork-crud.test.ts +69 -8
  63. package/src/__tests__/conversation-fork-route.test.ts +3 -2
  64. package/src/__tests__/conversation-history-web-search.test.ts +1 -0
  65. package/src/__tests__/conversation-inference-profile-list.test.ts +3 -2
  66. package/src/__tests__/conversation-inference-profile-route.test.ts +3 -2
  67. package/src/__tests__/conversation-lifecycle.test.ts +1 -0
  68. package/src/__tests__/conversation-list-source.test.ts +3 -2
  69. package/src/__tests__/conversation-load-history-repair.test.ts +2 -1
  70. package/src/__tests__/conversation-load-history-stripped.test.ts +1 -0
  71. package/src/__tests__/conversation-pairing.test.ts +53 -0
  72. package/src/__tests__/conversation-process-app-control-preactivation.test.ts +26 -7
  73. package/src/__tests__/conversation-process-callsite.test.ts +1 -0
  74. package/src/__tests__/conversation-provider-retry-repair.test.ts +5 -0
  75. package/src/__tests__/conversation-queue.test.ts +333 -291
  76. package/src/__tests__/conversation-routes-disk-view.test.ts +3 -18
  77. package/src/__tests__/conversation-routes-guardian-reply.test.ts +33 -8
  78. package/src/__tests__/conversation-routes-slash-commands.test.ts +33 -2
  79. package/src/__tests__/conversation-runtime-assembly.test.ts +78 -0
  80. package/src/__tests__/conversation-skill-tools.test.ts +38 -142
  81. package/src/__tests__/conversation-slash-queue.test.ts +84 -32
  82. package/src/__tests__/conversation-slash-unknown.test.ts +5 -0
  83. package/src/__tests__/conversation-speed-override.test.ts +1 -0
  84. package/src/__tests__/conversation-surfaces-action-delivery.test.ts +46 -0
  85. package/src/__tests__/conversation-surfaces-data-persist.test.ts +1 -0
  86. package/src/__tests__/conversation-surfaces-standalone-payloads.test.ts +6 -3
  87. package/src/__tests__/conversation-surfaces-standalone.test.ts +6 -3
  88. package/src/__tests__/conversation-surfaces-state-update.test.ts +3 -3
  89. package/src/__tests__/conversation-surfaces-table-action.test.ts +7 -17
  90. package/src/__tests__/conversation-sync-tags.test.ts +128 -12
  91. package/src/__tests__/conversation-title-service.test.ts +1 -0
  92. package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +30 -0
  93. package/src/__tests__/conversation-usage.test.ts +1 -0
  94. package/src/__tests__/conversation-workspace-cache-state.test.ts +1 -0
  95. package/src/__tests__/conversation-workspace-injection.test.ts +5 -0
  96. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +5 -0
  97. package/src/__tests__/credential-broker-browser-fill.test.ts +3 -3
  98. package/src/__tests__/credential-broker-server-use.test.ts +5 -5
  99. package/src/__tests__/credential-execution-client.test.ts +72 -1
  100. package/src/__tests__/credential-execution-feature-gates.test.ts +10 -12
  101. package/src/__tests__/credential-health-service.test.ts +252 -3
  102. package/src/__tests__/credential-security-invariants.test.ts +5 -5
  103. package/src/__tests__/credential-vault-unit.test.ts +19 -19
  104. package/src/__tests__/credential-vault.test.ts +5 -5
  105. package/src/__tests__/cross-provider-web-search.test.ts +56 -2
  106. package/src/__tests__/db-connection-isolation.test.ts +7 -6
  107. package/src/__tests__/db-conversation-fork-lineage-migration.test.ts +8 -10
  108. package/src/__tests__/db-conversation-inference-profile-migration.test.ts +7 -10
  109. package/src/__tests__/db-llm-request-log-provider-migration.test.ts +9 -15
  110. package/src/__tests__/db-test-helpers.ts +58 -0
  111. package/src/__tests__/disk-pressure-guard.test.ts +58 -41
  112. package/src/__tests__/disk-pressure-lifecycle.test.ts +13 -10
  113. package/src/__tests__/disk-pressure-routes.test.ts +0 -33
  114. package/src/__tests__/disk-pressure-tools.test.ts +0 -4
  115. package/src/__tests__/dm-persistence.test.ts +26 -40
  116. package/src/__tests__/document-create-dedupe.test.ts +189 -0
  117. package/src/__tests__/document-find-replace.test.ts +3 -2
  118. package/src/__tests__/document-tool-security.test.ts +81 -2
  119. package/src/__tests__/dynamic-skill-workflow-prompt.test.ts +5 -4
  120. package/src/__tests__/encrypted-store-test-helpers.ts +56 -0
  121. package/src/__tests__/encrypted-store.test.ts +11 -9
  122. package/src/__tests__/feature-flag-test-helpers.ts +53 -0
  123. package/src/__tests__/filing-service.test.ts +1 -0
  124. package/src/__tests__/first-greeting.test.ts +62 -12
  125. package/src/__tests__/gateway-flag-listener.test.ts +0 -1
  126. package/src/__tests__/gemini-provider.test.ts +26 -0
  127. package/src/__tests__/guardian-action-sweep.test.ts +3 -2
  128. package/src/__tests__/guardian-outbound-http.test.ts +3 -2
  129. package/src/__tests__/handlers-skills-memory-v2-reseed.test.ts +48 -3
  130. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +1 -0
  131. package/src/__tests__/heartbeat-disk-pressure.test.ts +1 -0
  132. package/src/__tests__/heartbeat-service.test.ts +1 -0
  133. package/src/__tests__/helpers/mock-logger.ts +26 -0
  134. package/src/__tests__/host-bash-routes.test.ts +1 -0
  135. package/src/__tests__/host-cu-routes-targeted.test.ts +1 -0
  136. package/src/__tests__/host-file-routes-targeted.test.ts +1 -0
  137. package/src/__tests__/host-shell-tool.test.ts +5 -4
  138. package/src/__tests__/host-transfer-routes-targeted.test.ts +1 -0
  139. package/src/__tests__/http-conversation-lineage.test.ts +3 -2
  140. package/src/__tests__/http-user-message-parity.test.ts +29 -7
  141. package/src/__tests__/identity-intro-cache.test.ts +133 -22
  142. package/src/__tests__/inbound-slack-persistence.test.ts +44 -72
  143. package/src/__tests__/inference-profile-reaper.test.ts +3 -2
  144. package/src/__tests__/inference-profile-session-ipc.test.ts +3 -2
  145. package/src/__tests__/injector-disk-pressure.test.ts +3 -17
  146. package/src/__tests__/inline-skill-load-permissions.test.ts +4 -4
  147. package/src/__tests__/list-messages-hidden-metadata.test.ts +80 -0
  148. package/src/__tests__/llm-context-normalization.test.ts +42 -0
  149. package/src/__tests__/llm-resolver.test.ts +331 -0
  150. package/src/__tests__/llm-schema.test.ts +1 -1
  151. package/src/__tests__/manual-token-reconciliation.test.ts +76 -1
  152. package/src/__tests__/mcp-abort-signal.test.ts +14 -0
  153. package/src/__tests__/mcp-client-auth.test.ts +14 -0
  154. package/src/__tests__/messaging-send-tool.test.ts +1 -0
  155. package/src/__tests__/migration-import-from-url.test.ts +3 -3
  156. package/src/__tests__/mock-gateway-ipc.ts +18 -2
  157. package/src/__tests__/model-intents.test.ts +3 -3
  158. package/src/__tests__/native-web-search.test.ts +30 -2
  159. package/src/__tests__/notification-deep-link.test.ts +62 -0
  160. package/src/__tests__/oauth-commands-routes.test.ts +37 -0
  161. package/src/__tests__/oauth-provider-visibility.test.ts +8 -8
  162. package/src/__tests__/oauth-store.test.ts +3 -2
  163. package/src/__tests__/onboarding-template-contract.test.ts +3 -2
  164. package/src/__tests__/openai-provider.test.ts +8 -9
  165. package/src/__tests__/openai-responses-provider.test.ts +70 -10
  166. package/src/__tests__/openrouter-provider-only.test.ts +27 -5
  167. package/src/__tests__/outbound-slack-persistence.test.ts +46 -1
  168. package/src/__tests__/persistence-pipeline.test.ts +139 -1
  169. package/src/__tests__/persistence-secret-redaction.test.ts +83 -12
  170. package/src/__tests__/plugin-bootstrap.test.ts +9 -11
  171. package/src/__tests__/plugin-tool-contribution.test.ts +41 -38
  172. package/src/__tests__/process-message-background-slack.test.ts +21 -16
  173. package/src/__tests__/process-message-display-content.test.ts +19 -22
  174. package/src/__tests__/provider-catalog-visibility.test.ts +9 -9
  175. package/src/__tests__/provider-platform-proxy-integration.test.ts +216 -4
  176. package/src/__tests__/provider-registry-ollama.test.ts +45 -22
  177. package/src/__tests__/recording-handler.test.ts +1 -0
  178. package/src/__tests__/regenerate-fire-and-forget-trace.test.ts +1 -0
  179. package/src/__tests__/registry.test.ts +82 -76
  180. package/src/__tests__/relay-server.test.ts +10 -10
  181. package/src/__tests__/runtime-attachment-metadata.test.ts +3 -2
  182. package/src/__tests__/schedule-store.test.ts +16 -1
  183. package/src/__tests__/scheduler-reuse-conversation.test.ts +48 -3
  184. package/src/__tests__/secret-ingress-http.test.ts +5 -1
  185. package/src/__tests__/secure-keys.test.ts +3 -3
  186. package/src/__tests__/send-endpoint-busy.test.ts +81 -42
  187. package/src/__tests__/server-history-render.test.ts +4 -1
  188. package/src/__tests__/skill-feature-flags-integration.test.ts +8 -10
  189. package/src/__tests__/skill-feature-flags.test.ts +14 -16
  190. package/src/__tests__/skill-load-feature-flag.test.ts +5 -5
  191. package/src/__tests__/skill-projection-feature-flag.test.ts +44 -30
  192. package/src/__tests__/skill-projection.benchmark.test.ts +5 -7
  193. package/src/__tests__/skill-tool-factory.test.ts +96 -95
  194. package/src/__tests__/slack-channel-config.test.ts +3 -3
  195. package/src/__tests__/subagent-call-site-routing.test.ts +11 -3
  196. package/src/__tests__/subagent-disposal.test.ts +27 -8
  197. package/src/__tests__/subagent-fork-notifications.test.ts +24 -9
  198. package/src/__tests__/subagent-fork-spawn.test.ts +13 -4
  199. package/src/__tests__/subagent-manager-notify.test.ts +20 -8
  200. package/src/__tests__/subagent-notify-parent.test.ts +5 -4
  201. package/src/__tests__/subagent-spawn-tool-fork.test.ts +58 -0
  202. package/src/__tests__/subagent-tools.test.ts +2 -1
  203. package/src/__tests__/suggestion-routes.test.ts +1 -0
  204. package/src/__tests__/system-prompt.test.ts +38 -0
  205. package/src/__tests__/test-preload-verifier.ts +68 -0
  206. package/src/__tests__/test-preload.ts +32 -39
  207. package/src/__tests__/tool-executor-lifecycle-events.test.ts +20 -7
  208. package/src/__tests__/tool-executor.test.ts +55 -10
  209. package/src/__tests__/tool-preview-lifecycle.test.ts +1 -0
  210. package/src/__tests__/tool-result-metadata-plumbing.test.ts +1 -0
  211. package/src/__tests__/twilio-routes.test.ts +3 -2
  212. package/src/__tests__/validate-input.test.ts +381 -0
  213. package/src/__tests__/verification-control-plane-policy.test.ts +1 -0
  214. package/src/__tests__/voice-scoped-grant-consumer.test.ts +2 -1
  215. package/src/__tests__/voice-session-bridge.test.ts +37 -28
  216. package/src/__tests__/workspace-migration-090-memory-router-cost-optimized-profile.test.ts +326 -0
  217. package/src/__tests__/workspace-migration-091-retighten-migration-onboarding-thread.test.ts +166 -0
  218. package/src/acp/session-manager.ts +5 -6
  219. package/src/agent/loop.ts +80 -0
  220. package/src/api/README.md +124 -2
  221. package/src/api/constants/call-sites.ts +27 -0
  222. package/src/api/events/assistant-outbound-attachment.ts +51 -0
  223. package/src/api/events/assistant-text-delta.ts +32 -0
  224. package/src/api/events/assistant-turn-start.ts +33 -0
  225. package/src/api/events/document-comment-created.ts +48 -0
  226. package/src/api/events/document-comment-deleted.ts +24 -0
  227. package/src/api/events/document-comment-reopened.ts +25 -0
  228. package/src/api/events/document-comment-resolved.ts +27 -0
  229. package/src/api/events/generation-cancelled.ts +24 -0
  230. package/src/api/events/generation-handoff.ts +41 -0
  231. package/src/api/events/message-complete.ts +42 -0
  232. package/src/api/events/open-url.ts +30 -0
  233. package/src/{events → api/events}/relationship-state-updated.ts +3 -3
  234. package/src/api/events/tool-use-start.ts +32 -0
  235. package/src/api/index.ts +128 -3
  236. package/src/api/responses/llm-context-response.ts +39 -0
  237. package/src/api/responses/llm-request-log-entry.ts +93 -0
  238. package/src/api/responses/memory-recall-log.ts +65 -0
  239. package/src/api/responses/memory-v2-activation-log.ts +78 -0
  240. package/src/background-wake/background-wake-routes.test.ts +687 -52
  241. package/src/background-wake/platform-client.test.ts +308 -0
  242. package/src/background-wake/platform-client.ts +167 -0
  243. package/src/background-wake/publisher.ts +91 -0
  244. package/src/background-wake/runtime-registry.ts +2 -2
  245. package/src/background-wake/wake-intent-hooks.test.ts +282 -0
  246. package/src/calls/guardian-dispatch.ts +1 -0
  247. package/src/calls/voice-session-bridge.ts +4 -4
  248. package/src/cli/commands/__tests__/conversations-slack.test.ts +16 -0
  249. package/src/cli/commands/__tests__/notifications.test.ts +184 -40
  250. package/src/cli/commands/channels/__tests__/channels.test.ts +143 -0
  251. package/src/cli/commands/channels/index.ts +229 -0
  252. package/src/cli/commands/memory-v3-render.ts +147 -0
  253. package/src/cli/commands/memory-v3.ts +255 -4
  254. package/src/cli/commands/notifications.ts +365 -55
  255. package/src/cli/lib/open-browser.ts +7 -2
  256. package/src/cli/program.ts +2 -0
  257. package/src/config/assistant-feature-flags.ts +23 -42
  258. package/src/config/bundled-skills/document-editor/SKILL.md +5 -1
  259. package/src/config/bundled-skills/schedule/SKILL.md +1 -1
  260. package/src/config/bundled-skills/schedule/TOOLS.json +2 -2
  261. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +1 -0
  262. package/src/config/call-site-defaults.ts +1 -1
  263. package/src/config/feature-flag-cache.ts +86 -0
  264. package/src/config/feature-flag-registry.json +17 -17
  265. package/src/config/llm-context-resolution.ts +10 -1
  266. package/src/config/llm-resolver.ts +121 -15
  267. package/src/config/loader.ts +4 -5
  268. package/src/config/schemas/__tests__/memory-v2.test.ts +15 -0
  269. package/src/config/schemas/heartbeat.ts +1 -1
  270. package/src/config/schemas/llm.ts +90 -1
  271. package/src/config/schemas/memory-v2.ts +26 -0
  272. package/src/config/schemas/services.ts +6 -2
  273. package/src/config/seed-inference-profiles.ts +36 -16
  274. package/src/context/token-estimator.ts +10 -5
  275. package/src/credential-execution/executable-discovery.ts +40 -0
  276. package/src/credential-execution/process-manager.ts +6 -2
  277. package/src/credential-health/credential-health-service.ts +125 -40
  278. package/src/daemon/__tests__/conversation-lifecycle-auto-analyze.test.ts +3 -6
  279. package/src/daemon/__tests__/conversation-surfaces-launch.test.ts +13 -15
  280. package/src/daemon/__tests__/conversation-tool-setup-exclude.test.ts +1 -2
  281. package/src/daemon/__tests__/daemon-skill-host.test.ts +2 -0
  282. package/src/daemon/__tests__/meet-manifest-loader.test.ts +25 -12
  283. package/src/daemon/__tests__/native-web-search-metadata.test.ts +1 -0
  284. package/src/daemon/__tests__/switch-inference-profile-tool.test.ts +107 -0
  285. package/src/daemon/__tests__/web-search-status-text.test.ts +1 -0
  286. package/src/daemon/conversation-agent-loop-handlers.ts +389 -68
  287. package/src/daemon/conversation-agent-loop.ts +132 -28
  288. package/src/daemon/conversation-error.ts +33 -5
  289. package/src/daemon/conversation-messaging.ts +84 -43
  290. package/src/daemon/conversation-process.ts +74 -37
  291. package/src/daemon/conversation-runtime-assembly.ts +29 -9
  292. package/src/daemon/conversation-skill-tools.ts +14 -30
  293. package/src/daemon/conversation-surfaces.ts +69 -34
  294. package/src/daemon/conversation-tool-setup.ts +33 -48
  295. package/src/daemon/conversation.ts +26 -46
  296. package/src/daemon/daemon-control.ts +1 -1
  297. package/src/daemon/daemon-skill-host.ts +9 -2
  298. package/src/daemon/disk-pressure-guard.ts +27 -29
  299. package/src/daemon/first-greeting.ts +31 -13
  300. package/src/daemon/handlers/shared.ts +6 -1
  301. package/src/daemon/lifecycle.ts +12 -12
  302. package/src/daemon/mcp-reload-service.ts +1 -1
  303. package/src/daemon/meet-manifest-loader.ts +10 -17
  304. package/src/daemon/message-types/conversations.ts +20 -22
  305. package/src/daemon/message-types/document-comments.ts +8 -44
  306. package/src/daemon/message-types/home.ts +2 -2
  307. package/src/daemon/message-types/integrations.ts +2 -7
  308. package/src/daemon/message-types/messages.ts +23 -38
  309. package/src/daemon/message-types/subagents.ts +6 -0
  310. package/src/daemon/process-message.ts +9 -9
  311. package/src/daemon/providers-setup.ts +1 -1
  312. package/src/daemon/server.ts +16 -0
  313. package/src/daemon/switch-inference-profile-tool.ts +13 -3
  314. package/src/daemon/tool-setup-types.ts +0 -6
  315. package/src/daemon/wake-target-adapter.ts +10 -0
  316. package/src/documents/document-store.ts +38 -0
  317. package/src/export/__tests__/transcript-formatter.test.ts +1 -0
  318. package/src/heartbeat/__tests__/heartbeat-service.test.ts +29 -0
  319. package/src/heartbeat/heartbeat-service.ts +63 -0
  320. package/src/home/__tests__/feed-writer.test.ts +161 -0
  321. package/src/home/__tests__/post-connect-feed.test.ts +1 -0
  322. package/src/home/__tests__/suggested-prompts.test.ts +55 -59
  323. package/src/home/feed-writer.ts +146 -7
  324. package/src/home/suggested-prompts.ts +27 -145
  325. package/src/ipc/__tests__/cli-ipc.test.ts +1 -0
  326. package/src/ipc/gateway-client.test.ts +4 -1
  327. package/src/ipc/skill-routes/__tests__/memory.test.ts +1 -0
  328. package/src/ipc/skill-routes/__tests__/registries.test.ts +36 -7
  329. package/src/ipc/skill-routes/memory.ts +4 -3
  330. package/src/ipc/skill-routes/registries.ts +28 -29
  331. package/src/memory/__tests__/jobs-store-enqueue-gate.test.ts +1 -0
  332. package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +26 -5
  333. package/src/memory/__tests__/memory-retrospective-enqueue.test.ts +1 -0
  334. package/src/memory/__tests__/memory-retrospective-job.test.ts +1 -0
  335. package/src/memory/__tests__/memory-retrospective-startup-cleanup.test.ts +1 -0
  336. package/src/memory/__tests__/memory-v2-activation-log-store.test.ts +31 -0
  337. package/src/memory/conversation-attention-store.ts +17 -3
  338. package/src/memory/conversation-crud.ts +352 -112
  339. package/src/memory/db-connection.ts +29 -19
  340. package/src/memory/db-init.ts +4 -0
  341. package/src/memory/db-singleton.ts +77 -0
  342. package/src/memory/delivery-channels.ts +82 -0
  343. package/src/memory/graph/__tests__/conversation-graph-memory-v2-routing.test.ts +2 -4
  344. package/src/memory/graph/retriever.test.ts +3 -3
  345. package/src/memory/job-handlers/embedding.test.ts +3 -2
  346. package/src/memory/jobs/__tests__/embed-concept-page.test.ts +5 -2
  347. package/src/memory/jobs-worker.ts +12 -1
  348. package/src/memory/llm-request-log-source-clickhouse.ts +80 -0
  349. package/src/memory/llm-request-log-source-local.ts +24 -0
  350. package/src/memory/llm-request-log-source.ts +31 -0
  351. package/src/memory/llm-request-log-store.ts +188 -3
  352. package/src/memory/memory-v2-activation-log-store.ts +95 -1
  353. package/src/memory/migrations/265-drop-provider-connection-status.ts +26 -0
  354. package/src/memory/migrations/266-messages-client-message-id.ts +43 -0
  355. package/src/memory/migrations/index.ts +2 -0
  356. package/src/memory/schema/conversations.ts +9 -1
  357. package/src/memory/schema/inference.ts +0 -1
  358. package/src/memory/v2/__tests__/backfill-jobs.test.ts +5 -2
  359. package/src/memory/v2/__tests__/harness-metrics.test.ts +9 -0
  360. package/src/memory/v2/__tests__/harness-replay-input.test.ts +9 -4
  361. package/src/memory/v2/__tests__/harness-runner.test.ts +26 -0
  362. package/src/memory/v2/__tests__/sweep-job.test.ts +6 -3
  363. package/src/memory/v2/harness/metrics.ts +5 -1
  364. package/src/memory/v2/harness/replay-input.ts +19 -3
  365. package/src/memory/v2/harness/runner.ts +6 -0
  366. package/src/memory/v2/harness/trace.ts +6 -0
  367. package/src/memory/v3/__tests__/consolidation-job.test.ts +2 -4
  368. package/src/memory/v3/__tests__/coretrieval-seed.test.ts +270 -0
  369. package/src/memory/v3/__tests__/edges.test.ts +144 -1
  370. package/src/memory/v3/__tests__/filter.test.ts +48 -0
  371. package/src/memory/v3/__tests__/gate.test.ts +96 -33
  372. package/src/memory/v3/__tests__/index-composition.test.ts +58 -0
  373. package/src/memory/v3/__tests__/loop.test.ts +250 -5
  374. package/src/memory/v3/__tests__/scouts.test.ts +49 -0
  375. package/src/memory/v3/__tests__/shadow-diff.test.ts +225 -0
  376. package/src/memory/v3/__tests__/shadow-middleware.test.ts +88 -2
  377. package/src/memory/v3/__tests__/traversal.test.ts +39 -0
  378. package/src/memory/v3/__tests__/tree-walk.test.ts +77 -0
  379. package/src/memory/v3/__tests__/validate.test.ts +32 -0
  380. package/src/memory/v3/coretrieval-seed.ts +240 -0
  381. package/src/memory/v3/edges.ts +58 -21
  382. package/src/memory/v3/filter.ts +27 -22
  383. package/src/memory/v3/gate.ts +51 -36
  384. package/src/memory/v3/index-composition.ts +18 -5
  385. package/src/memory/v3/loop.ts +65 -17
  386. package/src/memory/v3/scouts.ts +15 -4
  387. package/src/memory/v3/shadow-diff.ts +287 -0
  388. package/src/memory/v3/shadow-middleware.ts +44 -2
  389. package/src/memory/v3/traversal.ts +6 -1
  390. package/src/memory/v3/tree-walk.ts +6 -1
  391. package/src/memory/v3/validate.ts +56 -33
  392. package/src/notifications/__tests__/emit-signal-home-feed.test.ts +1 -0
  393. package/src/notifications/__tests__/home-feed-side-effect.test.ts +1 -0
  394. package/src/notifications/adapters/slack.ts +45 -11
  395. package/src/notifications/broadcaster.ts +114 -63
  396. package/src/notifications/conversation-pairing.ts +23 -3
  397. package/src/notifications/decisions-store.ts +32 -1
  398. package/src/notifications/deliveries-store.ts +45 -0
  399. package/src/notifications/edit-notification.ts +201 -0
  400. package/src/notifications/emit-signal.ts +11 -1
  401. package/src/notifications/signal.ts +10 -0
  402. package/src/notifications/types.ts +37 -0
  403. package/src/oauth/byo-connection.test.ts +67 -3
  404. package/src/oauth/byo-connection.ts +32 -5
  405. package/src/oauth/connect-orchestrator.ts +9 -0
  406. package/src/oauth/connection-resolver.test.ts +76 -0
  407. package/src/oauth/connection-resolver.ts +49 -10
  408. package/src/oauth/manual-token-connection.ts +51 -3
  409. package/src/oauth/seed-providers.ts +3 -0
  410. package/src/permissions/approval-policy.test.ts +19 -5
  411. package/src/permissions/approval-policy.ts +14 -3
  412. package/src/permissions/checker.ts +21 -8
  413. package/src/platform/client.test.ts +24 -1
  414. package/src/platform/client.ts +8 -0
  415. package/src/platform/feature-gate.ts +15 -0
  416. package/src/plugins/defaults/injectors.ts +2 -8
  417. package/src/plugins/defaults/persistence.ts +25 -6
  418. package/src/plugins/types.ts +57 -13
  419. package/src/proactive-artifact/job.test.ts +1 -0
  420. package/src/prompts/__tests__/system-prompt.test.ts +4 -4
  421. package/src/prompts/system-prompt.ts +38 -40
  422. package/src/prompts/template-detection.ts +10 -4
  423. package/src/prompts/templates/BOOTSTRAP.md +7 -11
  424. package/src/prompts/templates/IDENTITY.md +0 -2
  425. package/src/providers/__tests__/connection-model-compat.test.ts +3 -4
  426. package/src/providers/__tests__/registry-native-web-search.test.ts +122 -0
  427. package/src/providers/call-site-routing.ts +33 -9
  428. package/src/providers/connection-model-compat.ts +23 -0
  429. package/src/providers/connection-resolution.ts +39 -20
  430. package/src/providers/fireworks/client.ts +1 -0
  431. package/src/providers/gemini/client.ts +24 -3
  432. package/src/providers/inference/__tests__/adapter-factory-openai-compatible.test.ts +0 -2
  433. package/src/providers/inference/__tests__/base-url-security.test.ts +2 -3
  434. package/src/providers/inference/__tests__/{connections-status-label.test.ts → connections-label.test.ts} +12 -111
  435. package/src/providers/inference/auth.ts +0 -8
  436. package/src/providers/inference/connections.ts +3 -66
  437. package/src/providers/inference/resolve-auth.ts +2 -3
  438. package/src/providers/model-catalog.ts +35 -1
  439. package/src/providers/model-intents.ts +3 -3
  440. package/src/providers/openai/__tests__/api-error-detail.test.ts +120 -0
  441. package/src/providers/openai/__tests__/chat-completions-provider-reasoning.test.ts +157 -5
  442. package/src/providers/openai/chat-completions-provider.ts +110 -12
  443. package/src/providers/openai/codex-models.ts +2 -0
  444. package/src/providers/openai/responses-provider.ts +53 -53
  445. package/src/providers/openrouter/client.ts +13 -8
  446. package/src/providers/provider-send-message.ts +18 -9
  447. package/src/providers/registry.ts +48 -8
  448. package/src/providers/retry.ts +16 -4
  449. package/src/providers/search-provider-catalog.ts +17 -9
  450. package/src/providers/types.ts +9 -0
  451. package/src/runtime/__tests__/agent-wake.test.ts +1 -0
  452. package/src/runtime/__tests__/background-job-runner.test.ts +1 -0
  453. package/src/runtime/access-request-helper.ts +1 -0
  454. package/src/runtime/auth/route-policy.ts +10 -0
  455. package/src/runtime/channel-readiness-service.ts +68 -0
  456. package/src/runtime/channel-reply-delivery.ts +23 -0
  457. package/src/runtime/channel-retry-sweep.ts +47 -14
  458. package/src/runtime/confirmation-request-guardian-bridge.ts +1 -1
  459. package/src/runtime/migrations/vbundle-builder.ts +3 -2
  460. package/src/runtime/routes/__tests__/bookmark-routes.test.ts +1 -0
  461. package/src/runtime/routes/__tests__/conversation-compaction-routes.test.ts +406 -0
  462. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +98 -0
  463. package/src/runtime/routes/__tests__/heartbeat-routes.test.ts +1 -1
  464. package/src/runtime/routes/__tests__/home-feed-routes.test.ts +209 -1
  465. package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +13 -50
  466. package/src/runtime/routes/__tests__/memory-v2-simulate-route.test.ts +51 -3
  467. package/src/runtime/routes/__tests__/memory-v3-simulate-params.test.ts +35 -0
  468. package/src/runtime/routes/__tests__/slack-channel-routes.test.ts +3 -2
  469. package/src/runtime/routes/__tests__/surface-content-routes.test.ts +294 -0
  470. package/src/runtime/routes/__tests__/task-routes.test.ts +48 -3
  471. package/src/runtime/routes/acp-routes-list.test.ts +3 -0
  472. package/src/runtime/routes/app-management-routes.ts +111 -4
  473. package/src/runtime/routes/background-wake-routes.ts +188 -20
  474. package/src/runtime/routes/btw-routes.ts +4 -4
  475. package/src/runtime/routes/conversation-analysis-routes.ts +6 -0
  476. package/src/runtime/routes/conversation-compaction-routes.ts +263 -0
  477. package/src/runtime/routes/conversation-list-routes.ts +147 -0
  478. package/src/runtime/routes/conversation-management-routes.ts +39 -14
  479. package/src/runtime/routes/conversation-query-routes.ts +60 -10
  480. package/src/runtime/routes/conversation-routes.ts +186 -140
  481. package/src/runtime/routes/conversations-import-routes.ts +19 -6
  482. package/src/runtime/routes/documents-routes.ts +10 -1
  483. package/src/runtime/routes/group-routes.ts +11 -0
  484. package/src/runtime/routes/home-feed-routes.ts +129 -0
  485. package/src/runtime/routes/identity-intro-cache.ts +61 -16
  486. package/src/runtime/routes/identity-routes.ts +30 -9
  487. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +530 -6
  488. package/src/runtime/routes/inbound-stages/background-dispatch.ts +57 -8
  489. package/src/runtime/routes/index.ts +2 -0
  490. package/src/runtime/routes/inference-provider-connection-routes.ts +5 -26
  491. package/src/runtime/routes/integrations/vercel.ts +15 -0
  492. package/src/runtime/routes/llm-context-normalization.ts +7 -2
  493. package/src/runtime/routes/memory-v3-routes.ts +160 -2
  494. package/src/runtime/routes/migration-routes.ts +20 -13
  495. package/src/runtime/routes/notification-routes.ts +63 -1
  496. package/src/runtime/routes/oauth-commands-routes.ts +6 -1
  497. package/src/runtime/routes/surface-action-routes.ts +1 -38
  498. package/src/runtime/routes/surface-content-routes.ts +12 -5
  499. package/src/runtime/routes/surface-conversation-resolver.ts +65 -0
  500. package/src/runtime/routes/wipe-conversation-routes.ts +3 -0
  501. package/src/runtime/services/__tests__/analyze-conversation.test.ts +2 -0
  502. package/src/runtime/slack-dm-text-delivery.ts +177 -0
  503. package/src/runtime/sync/resource-sync-events.ts +1 -1
  504. package/src/runtime/tool-grant-request-helper.ts +1 -0
  505. package/src/schedule/schedule-store.ts +8 -1
  506. package/src/schedule/scheduler.ts +111 -15
  507. package/src/security/__tests__/provider-key-env-fallback.test.ts +3 -3
  508. package/src/security/encrypted-store.ts +7 -16
  509. package/src/security/store-path-override.ts +61 -0
  510. package/src/signals/user-message.ts +5 -8
  511. package/src/skills/validate-input.ts +177 -0
  512. package/src/subagent/manager.ts +13 -13
  513. package/src/subagent/types.ts +6 -0
  514. package/src/tasks/tool-sanitizer.ts +2 -2
  515. package/src/tools/apps/definitions.ts +35 -21
  516. package/src/tools/browser/__tests__/browser-execution-acquire.test.ts +2 -8
  517. package/src/tools/computer-use/definitions.ts +268 -266
  518. package/src/tools/document/document-tool.ts +131 -8
  519. package/src/tools/execution-target.ts +2 -5
  520. package/src/tools/executor.ts +18 -55
  521. package/src/tools/host-filesystem/edit.test.ts +1 -0
  522. package/src/tools/host-filesystem/read.test.ts +1 -0
  523. package/src/tools/host-filesystem/transfer.test.ts +31 -6
  524. package/src/tools/host-filesystem/write.test.ts +1 -0
  525. package/src/tools/mcp/mcp-tool-factory.ts +0 -2
  526. package/src/tools/network/__tests__/managed-search-proxy.test.ts +282 -0
  527. package/src/tools/network/__tests__/web-search.test.ts +211 -3
  528. package/src/tools/network/managed-search-proxy.ts +183 -0
  529. package/src/tools/network/web-search.ts +199 -44
  530. package/src/tools/policy-context.ts +3 -1
  531. package/src/tools/registry.ts +146 -103
  532. package/src/tools/schedule/create.ts +1 -1
  533. package/src/tools/skills/skill-tool-factory.ts +17 -36
  534. package/src/tools/subagent/spawn.ts +3 -0
  535. package/src/tools/tool-approval-handler.ts +10 -4
  536. package/src/tools/tool-name-aliases.ts +72 -14
  537. package/src/tools/types.ts +17 -15
  538. package/src/tools/ui-surface/definitions.ts +98 -86
  539. package/src/types/onboarding-context.ts +6 -0
  540. package/src/usage/attribution.ts +32 -1
  541. package/src/util/browser.ts +7 -2
  542. package/src/workspace/migrations/090-memory-router-cost-optimized-profile.ts +109 -0
  543. package/src/workspace/migrations/091-retighten-migration-onboarding-thread.ts +41 -0
  544. package/src/workspace/migrations/registry.ts +4 -0
package/openapi.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  openapi: 3.0.0
4
4
  info:
5
5
  title: Vellum Assistant API
6
- version: 0.8.5
6
+ version: 0.8.6
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
@@ -460,8 +460,30 @@ paths:
460
460
  properties:
461
461
  apps:
462
462
  type: array
463
- items: {}
464
- description: Array of app summary objects
463
+ items:
464
+ type: object
465
+ properties:
466
+ id:
467
+ type: string
468
+ name:
469
+ type: string
470
+ description:
471
+ type: string
472
+ icon:
473
+ type: string
474
+ createdAt:
475
+ type: number
476
+ version:
477
+ type: string
478
+ contentId:
479
+ type: string
480
+ required:
481
+ - id
482
+ - name
483
+ - createdAt
484
+ - version
485
+ - contentId
486
+ additionalProperties: false
465
487
  required:
466
488
  - apps
467
489
  additionalProperties: false
@@ -540,6 +562,18 @@ paths:
540
562
  responses:
541
563
  "200":
542
564
  description: Successful response
565
+ content:
566
+ application/json:
567
+ schema:
568
+ type: object
569
+ properties:
570
+ success:
571
+ type: boolean
572
+ result: {}
573
+ required:
574
+ - success
575
+ - result
576
+ additionalProperties: false
543
577
  parameters:
544
578
  - name: id
545
579
  in: path
@@ -560,6 +594,18 @@ paths:
560
594
  responses:
561
595
  "200":
562
596
  description: Successful response
597
+ content:
598
+ application/json:
599
+ schema:
600
+ type: object
601
+ properties:
602
+ success:
603
+ type: boolean
604
+ result: {}
605
+ required:
606
+ - success
607
+ - result
608
+ additionalProperties: false
563
609
  parameters:
564
610
  - name: id
565
611
  in: path
@@ -597,6 +643,16 @@ paths:
597
643
  responses:
598
644
  "200":
599
645
  description: Successful response
646
+ content:
647
+ application/json:
648
+ schema:
649
+ type: object
650
+ properties:
651
+ success:
652
+ type: boolean
653
+ required:
654
+ - success
655
+ additionalProperties: false
600
656
  parameters:
601
657
  - name: id
602
658
  in: path
@@ -613,6 +669,19 @@ paths:
613
669
  responses:
614
670
  "200":
615
671
  description: Successful response
672
+ content:
673
+ application/json:
674
+ schema:
675
+ type: object
676
+ properties:
677
+ appId:
678
+ type: string
679
+ diff:
680
+ type: string
681
+ required:
682
+ - appId
683
+ - diff
684
+ additionalProperties: false
616
685
  parameters:
617
686
  - name: id
618
687
  in: path
@@ -648,7 +717,20 @@ paths:
648
717
  type: string
649
718
  versions:
650
719
  type: array
651
- items: {}
720
+ items:
721
+ type: object
722
+ properties:
723
+ commitHash:
724
+ type: string
725
+ message:
726
+ type: string
727
+ timestamp:
728
+ type: number
729
+ required:
730
+ - commitHash
731
+ - message
732
+ - timestamp
733
+ additionalProperties: false
652
734
  required:
653
735
  - appId
654
736
  - versions
@@ -709,6 +791,21 @@ paths:
709
791
  responses:
710
792
  "200":
711
793
  description: Successful response
794
+ content:
795
+ application/json:
796
+ schema:
797
+ type: object
798
+ properties:
799
+ appId:
800
+ type: string
801
+ preview:
802
+ anyOf:
803
+ - type: string
804
+ - type: "null"
805
+ required:
806
+ - appId
807
+ - preview
808
+ additionalProperties: false
712
809
  parameters:
713
810
  - name: id
714
811
  in: path
@@ -724,6 +821,19 @@ paths:
724
821
  responses:
725
822
  "200":
726
823
  description: Successful response
824
+ content:
825
+ application/json:
826
+ schema:
827
+ type: object
828
+ properties:
829
+ success:
830
+ type: boolean
831
+ appId:
832
+ type: string
833
+ required:
834
+ - success
835
+ - appId
836
+ additionalProperties: false
727
837
  parameters:
728
838
  - name: id
729
839
  in: path
@@ -819,6 +929,16 @@ paths:
819
929
  responses:
820
930
  "200":
821
931
  description: Successful response
932
+ content:
933
+ application/json:
934
+ schema:
935
+ type: object
936
+ properties:
937
+ success:
938
+ type: boolean
939
+ required:
940
+ - success
941
+ additionalProperties: false
822
942
  parameters:
823
943
  - name: id
824
944
  in: path
@@ -907,6 +1027,23 @@ paths:
907
1027
  responses:
908
1028
  "200":
909
1029
  description: Successful response
1030
+ content:
1031
+ application/json:
1032
+ schema:
1033
+ type: object
1034
+ properties:
1035
+ success:
1036
+ type: boolean
1037
+ const: true
1038
+ appId:
1039
+ type: string
1040
+ name:
1041
+ type: string
1042
+ required:
1043
+ - success
1044
+ - appId
1045
+ - name
1046
+ additionalProperties: false
910
1047
  requestBody:
911
1048
  required: true
912
1049
  content:
@@ -936,9 +1073,61 @@ paths:
936
1073
  type: object
937
1074
  properties:
938
1075
  gallery:
939
- type: array
940
- items: {}
941
- description: Gallery app entries
1076
+ type: object
1077
+ properties:
1078
+ version:
1079
+ type: number
1080
+ updatedAt:
1081
+ type: string
1082
+ categories:
1083
+ type: array
1084
+ items:
1085
+ type: object
1086
+ properties:
1087
+ id:
1088
+ type: string
1089
+ name:
1090
+ type: string
1091
+ icon:
1092
+ type: string
1093
+ required:
1094
+ - id
1095
+ - name
1096
+ - icon
1097
+ additionalProperties: false
1098
+ apps:
1099
+ type: array
1100
+ items:
1101
+ type: object
1102
+ properties:
1103
+ id:
1104
+ type: string
1105
+ name:
1106
+ type: string
1107
+ description:
1108
+ type: string
1109
+ icon:
1110
+ type: string
1111
+ category:
1112
+ type: string
1113
+ version:
1114
+ type: string
1115
+ featured:
1116
+ type: boolean
1117
+ required:
1118
+ - id
1119
+ - name
1120
+ - description
1121
+ - icon
1122
+ - category
1123
+ - version
1124
+ additionalProperties: false
1125
+ required:
1126
+ - version
1127
+ - updatedAt
1128
+ - categories
1129
+ - apps
1130
+ additionalProperties: false
942
1131
  required:
943
1132
  - gallery
944
1133
  additionalProperties: false
@@ -952,6 +1141,23 @@ paths:
952
1141
  responses:
953
1142
  "200":
954
1143
  description: Successful response
1144
+ content:
1145
+ application/json:
1146
+ schema:
1147
+ type: object
1148
+ properties:
1149
+ success:
1150
+ type: boolean
1151
+ const: true
1152
+ appId:
1153
+ type: string
1154
+ name:
1155
+ type: string
1156
+ required:
1157
+ - success
1158
+ - appId
1159
+ - name
1160
+ additionalProperties: false
955
1161
  requestBody:
956
1162
  required: true
957
1163
  content:
@@ -1034,6 +1240,55 @@ paths:
1034
1240
  responses:
1035
1241
  "200":
1036
1242
  description: Successful response
1243
+ content:
1244
+ application/json:
1245
+ schema:
1246
+ type: object
1247
+ properties:
1248
+ manifest:
1249
+ type: object
1250
+ properties: {}
1251
+ additionalProperties: {}
1252
+ scanResult:
1253
+ type: object
1254
+ properties:
1255
+ passed:
1256
+ type: boolean
1257
+ blocked:
1258
+ type: array
1259
+ items:
1260
+ type: string
1261
+ warnings:
1262
+ type: array
1263
+ items:
1264
+ type: string
1265
+ required:
1266
+ - passed
1267
+ - blocked
1268
+ - warnings
1269
+ additionalProperties: false
1270
+ signatureResult:
1271
+ type: object
1272
+ properties:
1273
+ trustTier:
1274
+ type: string
1275
+ signerKeyId:
1276
+ type: string
1277
+ signerDisplayName:
1278
+ type: string
1279
+ signerAccount:
1280
+ type: string
1281
+ required:
1282
+ - trustTier
1283
+ additionalProperties: false
1284
+ bundleSizeBytes:
1285
+ type: number
1286
+ required:
1287
+ - manifest
1288
+ - scanResult
1289
+ - signatureResult
1290
+ - bundleSizeBytes
1291
+ additionalProperties: false
1037
1292
  requestBody:
1038
1293
  required: true
1039
1294
  content:
@@ -1090,27 +1345,62 @@ paths:
1090
1345
  properties:
1091
1346
  apps:
1092
1347
  type: array
1093
- items: {}
1094
- description: Array of shared app objects
1095
- required:
1096
- - apps
1097
- additionalProperties: false
1098
- /v1/apps/shared/{token}:
1099
- delete:
1100
- operationId: apps_shared_by_token_delete
1101
- summary: Delete shared app
1102
- description: Remove a shared app link.
1103
- tags:
1104
- - apps
1105
- responses:
1106
- "200":
1107
- description: Successful response
1108
- content:
1109
- application/json:
1110
- schema:
1111
- type: object
1112
- properties:
1113
- success:
1348
+ items:
1349
+ type: object
1350
+ properties:
1351
+ uuid:
1352
+ type: string
1353
+ name:
1354
+ type: string
1355
+ description:
1356
+ type: string
1357
+ icon:
1358
+ type: string
1359
+ preview:
1360
+ type: string
1361
+ entry:
1362
+ type: string
1363
+ trustTier:
1364
+ type: string
1365
+ signerDisplayName:
1366
+ type: string
1367
+ bundleSizeBytes:
1368
+ type: number
1369
+ installedAt:
1370
+ type: string
1371
+ version:
1372
+ type: string
1373
+ contentId:
1374
+ type: string
1375
+ updateAvailable:
1376
+ type: boolean
1377
+ required:
1378
+ - uuid
1379
+ - name
1380
+ - entry
1381
+ - trustTier
1382
+ - bundleSizeBytes
1383
+ - installedAt
1384
+ additionalProperties: false
1385
+ required:
1386
+ - apps
1387
+ additionalProperties: false
1388
+ /v1/apps/shared/{token}:
1389
+ delete:
1390
+ operationId: apps_shared_by_token_delete
1391
+ summary: Delete shared app
1392
+ description: Remove a shared app link.
1393
+ tags:
1394
+ - apps
1395
+ responses:
1396
+ "200":
1397
+ description: Successful response
1398
+ content:
1399
+ application/json:
1400
+ schema:
1401
+ type: object
1402
+ properties:
1403
+ success:
1114
1404
  type: boolean
1115
1405
  required:
1116
1406
  - success
@@ -1181,6 +1471,22 @@ paths:
1181
1471
  responses:
1182
1472
  "200":
1183
1473
  description: Successful response
1474
+ content:
1475
+ application/json:
1476
+ schema:
1477
+ type: object
1478
+ properties:
1479
+ signed:
1480
+ type: boolean
1481
+ signatureJson:
1482
+ type: object
1483
+ properties: {}
1484
+ additionalProperties: {}
1485
+ payload:
1486
+ type: string
1487
+ message:
1488
+ type: string
1489
+ additionalProperties: false
1184
1490
  requestBody:
1185
1491
  required: true
1186
1492
  content:
@@ -1210,6 +1516,16 @@ paths:
1210
1516
  responses:
1211
1517
  "200":
1212
1518
  description: Successful response
1519
+ content:
1520
+ application/json:
1521
+ schema:
1522
+ type: object
1523
+ properties:
1524
+ message:
1525
+ type: string
1526
+ required:
1527
+ - message
1528
+ additionalProperties: false
1213
1529
  /v1/attachments:
1214
1530
  delete:
1215
1531
  operationId: attachments_delete
@@ -1838,6 +2154,8 @@ paths:
1838
2154
  schema:
1839
2155
  type: object
1840
2156
  properties:
2157
+ accepted:
2158
+ type: boolean
1841
2159
  leaseId:
1842
2160
  type: string
1843
2161
  reason:
@@ -1848,60 +2166,13 @@ paths:
1848
2166
  type: number
1849
2167
  deadlineAt:
1850
2168
  type: number
1851
- counts:
1852
- type: object
1853
- properties:
1854
- heartbeat:
1855
- type: number
1856
- scheduler:
1857
- type: number
1858
- total:
1859
- type: number
1860
- required:
1861
- - heartbeat
1862
- - scheduler
1863
- - total
1864
- additionalProperties: false
1865
- nextIntent:
1866
- anyOf:
1867
- - type: object
1868
- properties:
1869
- nextWakeAt:
1870
- type: number
1871
- actualNextDueAt:
1872
- type: number
1873
- reason:
1874
- type: string
1875
- enum:
1876
- - heartbeat
1877
- - schedule
1878
- - mixed
1879
- sourceGeneration:
1880
- type: string
1881
- computedAt:
1882
- type: number
1883
- sourcePayload:
1884
- type: object
1885
- propertyNames:
1886
- type: string
1887
- additionalProperties: {}
1888
- required:
1889
- - nextWakeAt
1890
- - actualNextDueAt
1891
- - reason
1892
- - sourceGeneration
1893
- - computedAt
1894
- - sourcePayload
1895
- additionalProperties: false
1896
- - type: "null"
1897
2169
  required:
2170
+ - accepted
1898
2171
  - leaseId
1899
2172
  - reason
1900
2173
  - sourceGeneration
1901
2174
  - startedAt
1902
2175
  - deadlineAt
1903
- - counts
1904
- - nextIntent
1905
2176
  additionalProperties: false
1906
2177
  requestBody:
1907
2178
  required: true
@@ -4679,6 +4950,233 @@ paths:
4679
4950
  responses:
4680
4951
  "200":
4681
4952
  description: Successful response
4953
+ content:
4954
+ application/json:
4955
+ schema:
4956
+ type: object
4957
+ properties:
4958
+ conversations:
4959
+ type: array
4960
+ items:
4961
+ type: object
4962
+ properties:
4963
+ id:
4964
+ type: string
4965
+ title:
4966
+ type: string
4967
+ createdAt:
4968
+ type: number
4969
+ updatedAt:
4970
+ type: number
4971
+ lastMessageAt:
4972
+ anyOf:
4973
+ - type: number
4974
+ - type: "null"
4975
+ conversationType:
4976
+ type: string
4977
+ enum:
4978
+ - standard
4979
+ - background
4980
+ - scheduled
4981
+ source:
4982
+ type: string
4983
+ scheduleJobId:
4984
+ type: string
4985
+ channelBinding:
4986
+ type: object
4987
+ properties:
4988
+ sourceChannel:
4989
+ type: string
4990
+ externalChatId:
4991
+ type: string
4992
+ externalChatName:
4993
+ type: string
4994
+ externalThreadId:
4995
+ type: string
4996
+ externalUserId:
4997
+ anyOf:
4998
+ - type: string
4999
+ - type: "null"
5000
+ displayName:
5001
+ anyOf:
5002
+ - type: string
5003
+ - type: "null"
5004
+ username:
5005
+ anyOf:
5006
+ - type: string
5007
+ - type: "null"
5008
+ slackThread:
5009
+ type: object
5010
+ properties:
5011
+ channelId:
5012
+ type: string
5013
+ threadTs:
5014
+ type: string
5015
+ link:
5016
+ type: object
5017
+ properties:
5018
+ appUrl:
5019
+ type: string
5020
+ webUrl:
5021
+ type: string
5022
+ additionalProperties: false
5023
+ required:
5024
+ - channelId
5025
+ - threadTs
5026
+ additionalProperties: false
5027
+ slackChannel:
5028
+ type: object
5029
+ properties:
5030
+ channelId:
5031
+ type: string
5032
+ name:
5033
+ type: string
5034
+ link:
5035
+ type: object
5036
+ properties:
5037
+ webUrl:
5038
+ type: string
5039
+ required:
5040
+ - webUrl
5041
+ additionalProperties: false
5042
+ required:
5043
+ - channelId
5044
+ additionalProperties: false
5045
+ required:
5046
+ - sourceChannel
5047
+ - externalChatId
5048
+ - externalUserId
5049
+ - displayName
5050
+ - username
5051
+ additionalProperties: false
5052
+ conversationOriginChannel:
5053
+ anyOf:
5054
+ - type: string
5055
+ enum:
5056
+ - telegram
5057
+ - phone
5058
+ - vellum
5059
+ - whatsapp
5060
+ - slack
5061
+ - email
5062
+ - platform
5063
+ - a2a
5064
+ - type: "null"
5065
+ assistantAttention:
5066
+ type: object
5067
+ properties:
5068
+ hasUnseenLatestAssistantMessage:
5069
+ type: boolean
5070
+ latestAssistantMessageAt:
5071
+ type: number
5072
+ lastSeenAssistantMessageAt:
5073
+ type: number
5074
+ lastSeenConfidence:
5075
+ type: string
5076
+ enum:
5077
+ - explicit
5078
+ - inferred
5079
+ lastSeenSignalType:
5080
+ type: string
5081
+ enum:
5082
+ - macos_notification_view
5083
+ - macos_conversation_opened
5084
+ - ios_conversation_opened
5085
+ - telegram_inbound_message
5086
+ - telegram_callback
5087
+ - slack_inbound_message
5088
+ - slack_callback
5089
+ required:
5090
+ - hasUnseenLatestAssistantMessage
5091
+ additionalProperties: false
5092
+ isPinned:
5093
+ type: boolean
5094
+ const: true
5095
+ displayOrder:
5096
+ anyOf:
5097
+ - type: number
5098
+ - type: "null"
5099
+ groupId:
5100
+ anyOf:
5101
+ - type: string
5102
+ - type: "null"
5103
+ forkParent:
5104
+ type: object
5105
+ properties:
5106
+ conversationId:
5107
+ type: string
5108
+ messageId:
5109
+ type: string
5110
+ title:
5111
+ type: string
5112
+ required:
5113
+ - conversationId
5114
+ - messageId
5115
+ - title
5116
+ additionalProperties: false
5117
+ archivedAt:
5118
+ type: number
5119
+ inferenceProfile:
5120
+ type: string
5121
+ required:
5122
+ - id
5123
+ - title
5124
+ - createdAt
5125
+ - updatedAt
5126
+ - lastMessageAt
5127
+ - conversationType
5128
+ - source
5129
+ - groupId
5130
+ additionalProperties: false
5131
+ nextOffset:
5132
+ type: number
5133
+ hasMore:
5134
+ type: boolean
5135
+ groups:
5136
+ type: array
5137
+ items:
5138
+ type: object
5139
+ properties:
5140
+ id:
5141
+ type: string
5142
+ name:
5143
+ type: string
5144
+ sortPosition:
5145
+ type: number
5146
+ isSystemGroup:
5147
+ type: boolean
5148
+ required:
5149
+ - id
5150
+ - name
5151
+ - sortPosition
5152
+ - isSystemGroup
5153
+ additionalProperties: false
5154
+ required:
5155
+ - conversations
5156
+ - nextOffset
5157
+ - hasMore
5158
+ additionalProperties: false
5159
+ parameters:
5160
+ - name: limit
5161
+ in: query
5162
+ required: false
5163
+ schema:
5164
+ type: integer
5165
+ description: Maximum number of conversations to return (default 50).
5166
+ - name: offset
5167
+ in: query
5168
+ required: false
5169
+ schema:
5170
+ type: integer
5171
+ description: Number of conversations to skip (default 0).
5172
+ - name: conversationType
5173
+ in: query
5174
+ required: false
5175
+ schema:
5176
+ type: string
5177
+ enum:
5178
+ - background
5179
+ description: Filter by conversation type. Pass "background" to list only background/scheduled conversations.
4682
5180
  post:
4683
5181
  operationId: conversations_post
4684
5182
  summary: Create a conversation
@@ -4797,6 +5295,185 @@ paths:
4797
5295
  responses:
4798
5296
  "200":
4799
5297
  description: Successful response
5298
+ content:
5299
+ application/json:
5300
+ schema:
5301
+ type: object
5302
+ properties:
5303
+ conversation:
5304
+ type: object
5305
+ properties:
5306
+ id:
5307
+ type: string
5308
+ title:
5309
+ type: string
5310
+ createdAt:
5311
+ type: number
5312
+ updatedAt:
5313
+ type: number
5314
+ lastMessageAt:
5315
+ anyOf:
5316
+ - type: number
5317
+ - type: "null"
5318
+ conversationType:
5319
+ type: string
5320
+ enum:
5321
+ - standard
5322
+ - background
5323
+ - scheduled
5324
+ source:
5325
+ type: string
5326
+ scheduleJobId:
5327
+ type: string
5328
+ channelBinding:
5329
+ type: object
5330
+ properties:
5331
+ sourceChannel:
5332
+ type: string
5333
+ externalChatId:
5334
+ type: string
5335
+ externalChatName:
5336
+ type: string
5337
+ externalThreadId:
5338
+ type: string
5339
+ externalUserId:
5340
+ anyOf:
5341
+ - type: string
5342
+ - type: "null"
5343
+ displayName:
5344
+ anyOf:
5345
+ - type: string
5346
+ - type: "null"
5347
+ username:
5348
+ anyOf:
5349
+ - type: string
5350
+ - type: "null"
5351
+ slackThread:
5352
+ type: object
5353
+ properties:
5354
+ channelId:
5355
+ type: string
5356
+ threadTs:
5357
+ type: string
5358
+ link:
5359
+ type: object
5360
+ properties:
5361
+ appUrl:
5362
+ type: string
5363
+ webUrl:
5364
+ type: string
5365
+ additionalProperties: false
5366
+ required:
5367
+ - channelId
5368
+ - threadTs
5369
+ additionalProperties: false
5370
+ slackChannel:
5371
+ type: object
5372
+ properties:
5373
+ channelId:
5374
+ type: string
5375
+ name:
5376
+ type: string
5377
+ link:
5378
+ type: object
5379
+ properties:
5380
+ webUrl:
5381
+ type: string
5382
+ required:
5383
+ - webUrl
5384
+ additionalProperties: false
5385
+ required:
5386
+ - channelId
5387
+ additionalProperties: false
5388
+ required:
5389
+ - sourceChannel
5390
+ - externalChatId
5391
+ - externalUserId
5392
+ - displayName
5393
+ - username
5394
+ additionalProperties: false
5395
+ conversationOriginChannel:
5396
+ anyOf:
5397
+ - type: string
5398
+ enum:
5399
+ - telegram
5400
+ - phone
5401
+ - vellum
5402
+ - whatsapp
5403
+ - slack
5404
+ - email
5405
+ - platform
5406
+ - a2a
5407
+ - type: "null"
5408
+ assistantAttention:
5409
+ type: object
5410
+ properties:
5411
+ hasUnseenLatestAssistantMessage:
5412
+ type: boolean
5413
+ latestAssistantMessageAt:
5414
+ type: number
5415
+ lastSeenAssistantMessageAt:
5416
+ type: number
5417
+ lastSeenConfidence:
5418
+ type: string
5419
+ enum:
5420
+ - explicit
5421
+ - inferred
5422
+ lastSeenSignalType:
5423
+ type: string
5424
+ enum:
5425
+ - macos_notification_view
5426
+ - macos_conversation_opened
5427
+ - ios_conversation_opened
5428
+ - telegram_inbound_message
5429
+ - telegram_callback
5430
+ - slack_inbound_message
5431
+ - slack_callback
5432
+ required:
5433
+ - hasUnseenLatestAssistantMessage
5434
+ additionalProperties: false
5435
+ isPinned:
5436
+ type: boolean
5437
+ const: true
5438
+ displayOrder:
5439
+ anyOf:
5440
+ - type: number
5441
+ - type: "null"
5442
+ groupId:
5443
+ anyOf:
5444
+ - type: string
5445
+ - type: "null"
5446
+ forkParent:
5447
+ type: object
5448
+ properties:
5449
+ conversationId:
5450
+ type: string
5451
+ messageId:
5452
+ type: string
5453
+ title:
5454
+ type: string
5455
+ required:
5456
+ - conversationId
5457
+ - messageId
5458
+ - title
5459
+ additionalProperties: false
5460
+ archivedAt:
5461
+ type: number
5462
+ inferenceProfile:
5463
+ type: string
5464
+ required:
5465
+ - id
5466
+ - title
5467
+ - createdAt
5468
+ - updatedAt
5469
+ - lastMessageAt
5470
+ - conversationType
5471
+ - source
5472
+ - groupId
5473
+ additionalProperties: false
5474
+ required:
5475
+ - conversation
5476
+ additionalProperties: false
4800
5477
  parameters:
4801
5478
  - name: id
4802
5479
  in: path
@@ -4813,6 +5490,185 @@ paths:
4813
5490
  responses:
4814
5491
  "200":
4815
5492
  description: Successful response
5493
+ content:
5494
+ application/json:
5495
+ schema:
5496
+ type: object
5497
+ properties:
5498
+ conversation:
5499
+ type: object
5500
+ properties:
5501
+ id:
5502
+ type: string
5503
+ title:
5504
+ type: string
5505
+ createdAt:
5506
+ type: number
5507
+ updatedAt:
5508
+ type: number
5509
+ lastMessageAt:
5510
+ anyOf:
5511
+ - type: number
5512
+ - type: "null"
5513
+ conversationType:
5514
+ type: string
5515
+ enum:
5516
+ - standard
5517
+ - background
5518
+ - scheduled
5519
+ source:
5520
+ type: string
5521
+ scheduleJobId:
5522
+ type: string
5523
+ channelBinding:
5524
+ type: object
5525
+ properties:
5526
+ sourceChannel:
5527
+ type: string
5528
+ externalChatId:
5529
+ type: string
5530
+ externalChatName:
5531
+ type: string
5532
+ externalThreadId:
5533
+ type: string
5534
+ externalUserId:
5535
+ anyOf:
5536
+ - type: string
5537
+ - type: "null"
5538
+ displayName:
5539
+ anyOf:
5540
+ - type: string
5541
+ - type: "null"
5542
+ username:
5543
+ anyOf:
5544
+ - type: string
5545
+ - type: "null"
5546
+ slackThread:
5547
+ type: object
5548
+ properties:
5549
+ channelId:
5550
+ type: string
5551
+ threadTs:
5552
+ type: string
5553
+ link:
5554
+ type: object
5555
+ properties:
5556
+ appUrl:
5557
+ type: string
5558
+ webUrl:
5559
+ type: string
5560
+ additionalProperties: false
5561
+ required:
5562
+ - channelId
5563
+ - threadTs
5564
+ additionalProperties: false
5565
+ slackChannel:
5566
+ type: object
5567
+ properties:
5568
+ channelId:
5569
+ type: string
5570
+ name:
5571
+ type: string
5572
+ link:
5573
+ type: object
5574
+ properties:
5575
+ webUrl:
5576
+ type: string
5577
+ required:
5578
+ - webUrl
5579
+ additionalProperties: false
5580
+ required:
5581
+ - channelId
5582
+ additionalProperties: false
5583
+ required:
5584
+ - sourceChannel
5585
+ - externalChatId
5586
+ - externalUserId
5587
+ - displayName
5588
+ - username
5589
+ additionalProperties: false
5590
+ conversationOriginChannel:
5591
+ anyOf:
5592
+ - type: string
5593
+ enum:
5594
+ - telegram
5595
+ - phone
5596
+ - vellum
5597
+ - whatsapp
5598
+ - slack
5599
+ - email
5600
+ - platform
5601
+ - a2a
5602
+ - type: "null"
5603
+ assistantAttention:
5604
+ type: object
5605
+ properties:
5606
+ hasUnseenLatestAssistantMessage:
5607
+ type: boolean
5608
+ latestAssistantMessageAt:
5609
+ type: number
5610
+ lastSeenAssistantMessageAt:
5611
+ type: number
5612
+ lastSeenConfidence:
5613
+ type: string
5614
+ enum:
5615
+ - explicit
5616
+ - inferred
5617
+ lastSeenSignalType:
5618
+ type: string
5619
+ enum:
5620
+ - macos_notification_view
5621
+ - macos_conversation_opened
5622
+ - ios_conversation_opened
5623
+ - telegram_inbound_message
5624
+ - telegram_callback
5625
+ - slack_inbound_message
5626
+ - slack_callback
5627
+ required:
5628
+ - hasUnseenLatestAssistantMessage
5629
+ additionalProperties: false
5630
+ isPinned:
5631
+ type: boolean
5632
+ const: true
5633
+ displayOrder:
5634
+ anyOf:
5635
+ - type: number
5636
+ - type: "null"
5637
+ groupId:
5638
+ anyOf:
5639
+ - type: string
5640
+ - type: "null"
5641
+ forkParent:
5642
+ type: object
5643
+ properties:
5644
+ conversationId:
5645
+ type: string
5646
+ messageId:
5647
+ type: string
5648
+ title:
5649
+ type: string
5650
+ required:
5651
+ - conversationId
5652
+ - messageId
5653
+ - title
5654
+ additionalProperties: false
5655
+ archivedAt:
5656
+ type: number
5657
+ inferenceProfile:
5658
+ type: string
5659
+ required:
5660
+ - id
5661
+ - title
5662
+ - createdAt
5663
+ - updatedAt
5664
+ - lastMessageAt
5665
+ - conversationType
5666
+ - source
5667
+ - groupId
5668
+ additionalProperties: false
5669
+ required:
5670
+ - conversation
5671
+ additionalProperties: false
4816
5672
  parameters:
4817
5673
  - name: id
4818
5674
  in: path
@@ -4829,6 +5685,19 @@ paths:
4829
5685
  responses:
4830
5686
  "200":
4831
5687
  description: Successful response
5688
+ content:
5689
+ application/json:
5690
+ schema:
5691
+ type: object
5692
+ properties:
5693
+ ok:
5694
+ type: boolean
5695
+ conversationId:
5696
+ type: string
5697
+ required:
5698
+ - ok
5699
+ - conversationId
5700
+ additionalProperties: false
4832
5701
  parameters:
4833
5702
  - name: id
4834
5703
  in: path
@@ -4857,16 +5726,115 @@ paths:
4857
5726
  conversationId:
4858
5727
  type: string
4859
5728
  required:
4860
- - ok
4861
- - cancelled
5729
+ - ok
5730
+ - cancelled
5731
+ - conversationId
5732
+ additionalProperties: false
5733
+ parameters:
5734
+ - name: id
5735
+ in: path
5736
+ required: true
5737
+ schema:
5738
+ type: string
5739
+ /v1/conversations/{id}/compaction:
5740
+ get:
5741
+ operationId: conversations_by_id_compaction_get
5742
+ summary: Get the compaction trail leading up to an LLM call
5743
+ description:
5744
+ Return the chronological list of compaction events that ran in this conversation in the open window between
5745
+ the previous non-`compactionAgent` LLM call and the call identified by `callId`. Projected from
5746
+ `llm_request_logs` rows where `call_site = "compactionAgent"`. When the selected call is the first real call in
5747
+ the conversation, every preceding compaction is in scope. Drives the Inspector's Compaction tab.
5748
+ tags:
5749
+ - conversations
5750
+ responses:
5751
+ "200":
5752
+ description: Successful response
5753
+ content:
5754
+ application/json:
5755
+ schema:
5756
+ type: object
5757
+ properties:
5758
+ conversationId:
5759
+ type: string
5760
+ events:
5761
+ type: array
5762
+ items:
5763
+ type: object
5764
+ properties:
5765
+ id:
5766
+ type: string
5767
+ createdAt:
5768
+ type: number
5769
+ model:
5770
+ anyOf:
5771
+ - type: string
5772
+ - type: "null"
5773
+ provider:
5774
+ anyOf:
5775
+ - type: string
5776
+ - type: "null"
5777
+ inputTokens:
5778
+ anyOf:
5779
+ - type: number
5780
+ - type: "null"
5781
+ outputTokens:
5782
+ anyOf:
5783
+ - type: number
5784
+ - type: "null"
5785
+ durationMs:
5786
+ anyOf:
5787
+ - type: number
5788
+ - type: "null"
5789
+ responsePreview:
5790
+ anyOf:
5791
+ - type: string
5792
+ - type: "null"
5793
+ requestMessageCount:
5794
+ anyOf:
5795
+ - type: number
5796
+ - type: "null"
5797
+ stopReason:
5798
+ anyOf:
5799
+ - type: string
5800
+ - type: "null"
5801
+ estimatedCostUsd:
5802
+ anyOf:
5803
+ - type: number
5804
+ - type: "null"
5805
+ required:
5806
+ - id
5807
+ - createdAt
5808
+ - model
5809
+ - provider
5810
+ - inputTokens
5811
+ - outputTokens
5812
+ - durationMs
5813
+ - responsePreview
5814
+ - requestMessageCount
5815
+ - stopReason
5816
+ - estimatedCostUsd
5817
+ additionalProperties: false
5818
+ required:
4862
5819
  - conversationId
5820
+ - events
4863
5821
  additionalProperties: false
5822
+ "400":
5823
+ description: Returned when the callId is missing or refers to a call in a different conversation.
5824
+ "404":
5825
+ description: Returned when the conversation or the referenced LLM call does not exist.
4864
5826
  parameters:
4865
5827
  - name: id
4866
5828
  in: path
4867
5829
  required: true
4868
5830
  schema:
4869
5831
  type: string
5832
+ - name: callId
5833
+ in: query
5834
+ required: true
5835
+ schema:
5836
+ type: string
5837
+ description: ID of the selected LLM call from the rail. Defines the chronological cutoff for the trail.
4870
5838
  /v1/conversations/{id}/inference-profile:
4871
5839
  put:
4872
5840
  operationId: conversations_by_id_inferenceprofile_put
@@ -4970,6 +5938,16 @@ paths:
4970
5938
  responses:
4971
5939
  "200":
4972
5940
  description: Successful response
5941
+ content:
5942
+ application/json:
5943
+ schema:
5944
+ type: object
5945
+ properties:
5946
+ ok:
5947
+ type: boolean
5948
+ required:
5949
+ - ok
5950
+ additionalProperties: false
4973
5951
  parameters:
4974
5952
  - name: id
4975
5953
  in: path
@@ -5090,6 +6068,19 @@ paths:
5090
6068
  responses:
5091
6069
  "200":
5092
6070
  description: Successful response
6071
+ content:
6072
+ application/json:
6073
+ schema:
6074
+ type: object
6075
+ properties:
6076
+ ok:
6077
+ type: boolean
6078
+ conversationId:
6079
+ type: string
6080
+ required:
6081
+ - ok
6082
+ - conversationId
6083
+ additionalProperties: false
5093
6084
  parameters:
5094
6085
  - name: id
5095
6086
  in: path
@@ -5455,6 +6446,185 @@ paths:
5455
6446
  responses:
5456
6447
  "200":
5457
6448
  description: Successful response
6449
+ content:
6450
+ application/json:
6451
+ schema:
6452
+ type: object
6453
+ properties:
6454
+ conversation:
6455
+ type: object
6456
+ properties:
6457
+ id:
6458
+ type: string
6459
+ title:
6460
+ type: string
6461
+ createdAt:
6462
+ type: number
6463
+ updatedAt:
6464
+ type: number
6465
+ lastMessageAt:
6466
+ anyOf:
6467
+ - type: number
6468
+ - type: "null"
6469
+ conversationType:
6470
+ type: string
6471
+ enum:
6472
+ - standard
6473
+ - background
6474
+ - scheduled
6475
+ source:
6476
+ type: string
6477
+ scheduleJobId:
6478
+ type: string
6479
+ channelBinding:
6480
+ type: object
6481
+ properties:
6482
+ sourceChannel:
6483
+ type: string
6484
+ externalChatId:
6485
+ type: string
6486
+ externalChatName:
6487
+ type: string
6488
+ externalThreadId:
6489
+ type: string
6490
+ externalUserId:
6491
+ anyOf:
6492
+ - type: string
6493
+ - type: "null"
6494
+ displayName:
6495
+ anyOf:
6496
+ - type: string
6497
+ - type: "null"
6498
+ username:
6499
+ anyOf:
6500
+ - type: string
6501
+ - type: "null"
6502
+ slackThread:
6503
+ type: object
6504
+ properties:
6505
+ channelId:
6506
+ type: string
6507
+ threadTs:
6508
+ type: string
6509
+ link:
6510
+ type: object
6511
+ properties:
6512
+ appUrl:
6513
+ type: string
6514
+ webUrl:
6515
+ type: string
6516
+ additionalProperties: false
6517
+ required:
6518
+ - channelId
6519
+ - threadTs
6520
+ additionalProperties: false
6521
+ slackChannel:
6522
+ type: object
6523
+ properties:
6524
+ channelId:
6525
+ type: string
6526
+ name:
6527
+ type: string
6528
+ link:
6529
+ type: object
6530
+ properties:
6531
+ webUrl:
6532
+ type: string
6533
+ required:
6534
+ - webUrl
6535
+ additionalProperties: false
6536
+ required:
6537
+ - channelId
6538
+ additionalProperties: false
6539
+ required:
6540
+ - sourceChannel
6541
+ - externalChatId
6542
+ - externalUserId
6543
+ - displayName
6544
+ - username
6545
+ additionalProperties: false
6546
+ conversationOriginChannel:
6547
+ anyOf:
6548
+ - type: string
6549
+ enum:
6550
+ - telegram
6551
+ - phone
6552
+ - vellum
6553
+ - whatsapp
6554
+ - slack
6555
+ - email
6556
+ - platform
6557
+ - a2a
6558
+ - type: "null"
6559
+ assistantAttention:
6560
+ type: object
6561
+ properties:
6562
+ hasUnseenLatestAssistantMessage:
6563
+ type: boolean
6564
+ latestAssistantMessageAt:
6565
+ type: number
6566
+ lastSeenAssistantMessageAt:
6567
+ type: number
6568
+ lastSeenConfidence:
6569
+ type: string
6570
+ enum:
6571
+ - explicit
6572
+ - inferred
6573
+ lastSeenSignalType:
6574
+ type: string
6575
+ enum:
6576
+ - macos_notification_view
6577
+ - macos_conversation_opened
6578
+ - ios_conversation_opened
6579
+ - telegram_inbound_message
6580
+ - telegram_callback
6581
+ - slack_inbound_message
6582
+ - slack_callback
6583
+ required:
6584
+ - hasUnseenLatestAssistantMessage
6585
+ additionalProperties: false
6586
+ isPinned:
6587
+ type: boolean
6588
+ const: true
6589
+ displayOrder:
6590
+ anyOf:
6591
+ - type: number
6592
+ - type: "null"
6593
+ groupId:
6594
+ anyOf:
6595
+ - type: string
6596
+ - type: "null"
6597
+ forkParent:
6598
+ type: object
6599
+ properties:
6600
+ conversationId:
6601
+ type: string
6602
+ messageId:
6603
+ type: string
6604
+ title:
6605
+ type: string
6606
+ required:
6607
+ - conversationId
6608
+ - messageId
6609
+ - title
6610
+ additionalProperties: false
6611
+ archivedAt:
6612
+ type: number
6613
+ inferenceProfile:
6614
+ type: string
6615
+ required:
6616
+ - id
6617
+ - title
6618
+ - createdAt
6619
+ - updatedAt
6620
+ - lastMessageAt
6621
+ - conversationType
6622
+ - source
6623
+ - groupId
6624
+ additionalProperties: false
6625
+ required:
6626
+ - conversation
6627
+ additionalProperties: false
5458
6628
  requestBody:
5459
6629
  required: true
5460
6630
  content:
@@ -5875,6 +7045,16 @@ paths:
5875
7045
  responses:
5876
7046
  "200":
5877
7047
  description: Successful response
7048
+ content:
7049
+ application/json:
7050
+ schema:
7051
+ type: object
7052
+ properties:
7053
+ ok:
7054
+ type: boolean
7055
+ required:
7056
+ - ok
7057
+ additionalProperties: false
5878
7058
  requestBody:
5879
7059
  required: true
5880
7060
  content:
@@ -5884,8 +7064,22 @@ paths:
5884
7064
  properties:
5885
7065
  updates:
5886
7066
  type: array
5887
- items: {}
5888
- description: Array of { conversationId, displayOrder?, isPinned? } objects
7067
+ items:
7068
+ type: object
7069
+ properties:
7070
+ conversationId:
7071
+ type: string
7072
+ displayOrder:
7073
+ type: number
7074
+ isPinned:
7075
+ type: boolean
7076
+ groupId:
7077
+ anyOf:
7078
+ - type: string
7079
+ - type: "null"
7080
+ required:
7081
+ - conversationId
7082
+ additionalProperties: false
5889
7083
  required:
5890
7084
  - updates
5891
7085
  additionalProperties: false
@@ -5942,6 +7136,48 @@ paths:
5942
7136
  responses:
5943
7137
  "200":
5944
7138
  description: Successful response
7139
+ content:
7140
+ application/json:
7141
+ schema:
7142
+ type: object
7143
+ properties:
7144
+ ok:
7145
+ type: boolean
7146
+ required:
7147
+ - ok
7148
+ additionalProperties: false
7149
+ requestBody:
7150
+ required: true
7151
+ content:
7152
+ application/json:
7153
+ schema:
7154
+ type: object
7155
+ properties:
7156
+ conversationId:
7157
+ type: string
7158
+ sourceChannel:
7159
+ type: string
7160
+ signalType:
7161
+ type: string
7162
+ confidence:
7163
+ type: string
7164
+ enum:
7165
+ - explicit
7166
+ - inferred
7167
+ source:
7168
+ type: string
7169
+ evidenceText:
7170
+ type: string
7171
+ metadata:
7172
+ type: object
7173
+ propertyNames:
7174
+ type: string
7175
+ additionalProperties: {}
7176
+ observedAt:
7177
+ type: number
7178
+ required:
7179
+ - conversationId
7180
+ additionalProperties: false
5945
7181
  /v1/conversations/switch:
5946
7182
  post:
5947
7183
  operationId: conversations_switch_post
@@ -5995,6 +7231,28 @@ paths:
5995
7231
  responses:
5996
7232
  "200":
5997
7233
  description: Successful response
7234
+ content:
7235
+ application/json:
7236
+ schema:
7237
+ type: object
7238
+ properties:
7239
+ ok:
7240
+ type: boolean
7241
+ required:
7242
+ - ok
7243
+ additionalProperties: false
7244
+ requestBody:
7245
+ required: true
7246
+ content:
7247
+ application/json:
7248
+ schema:
7249
+ type: object
7250
+ properties:
7251
+ conversationId:
7252
+ type: string
7253
+ required:
7254
+ - conversationId
7255
+ additionalProperties: false
5998
7256
  /v1/conversations/wake:
5999
7257
  post:
6000
7258
  operationId: conversations_wake_post
@@ -7008,8 +8266,29 @@ paths:
7008
8266
  properties:
7009
8267
  documents:
7010
8268
  type: array
7011
- items: {}
7012
- description: Document summary objects
8269
+ items:
8270
+ type: object
8271
+ properties:
8272
+ surfaceId:
8273
+ type: string
8274
+ conversationId:
8275
+ type: string
8276
+ title:
8277
+ type: string
8278
+ wordCount:
8279
+ type: number
8280
+ createdAt:
8281
+ type: number
8282
+ updatedAt:
8283
+ type: number
8284
+ required:
8285
+ - surfaceId
8286
+ - conversationId
8287
+ - title
8288
+ - wordCount
8289
+ - createdAt
8290
+ - updatedAt
8291
+ additionalProperties: false
7013
8292
  required:
7014
8293
  - documents
7015
8294
  additionalProperties: false
@@ -7934,6 +9213,33 @@ paths:
7934
9213
  responses:
7935
9214
  "200":
7936
9215
  description: Successful response
9216
+ content:
9217
+ application/json:
9218
+ schema:
9219
+ type: object
9220
+ properties:
9221
+ groups:
9222
+ type: array
9223
+ items:
9224
+ type: object
9225
+ properties:
9226
+ id:
9227
+ type: string
9228
+ name:
9229
+ type: string
9230
+ sortPosition:
9231
+ type: number
9232
+ isSystemGroup:
9233
+ type: boolean
9234
+ required:
9235
+ - id
9236
+ - name
9237
+ - sortPosition
9238
+ - isSystemGroup
9239
+ additionalProperties: false
9240
+ required:
9241
+ - groups
9242
+ additionalProperties: false
7937
9243
  post:
7938
9244
  operationId: groups_post
7939
9245
  summary: Create group
@@ -7943,6 +9249,25 @@ paths:
7943
9249
  responses:
7944
9250
  "201":
7945
9251
  description: Successful response
9252
+ content:
9253
+ application/json:
9254
+ schema:
9255
+ type: object
9256
+ properties:
9257
+ id:
9258
+ type: string
9259
+ name:
9260
+ type: string
9261
+ sortPosition:
9262
+ type: number
9263
+ isSystemGroup:
9264
+ type: boolean
9265
+ required:
9266
+ - id
9267
+ - name
9268
+ - sortPosition
9269
+ - isSystemGroup
9270
+ additionalProperties: false
7946
9271
  "400":
7947
9272
  description: Missing or invalid name, or sort_position ceiling reached
7948
9273
  requestBody:
@@ -7987,6 +9312,25 @@ paths:
7987
9312
  responses:
7988
9313
  "200":
7989
9314
  description: Successful response
9315
+ content:
9316
+ application/json:
9317
+ schema:
9318
+ type: object
9319
+ properties:
9320
+ id:
9321
+ type: string
9322
+ name:
9323
+ type: string
9324
+ sortPosition:
9325
+ type: number
9326
+ isSystemGroup:
9327
+ type: boolean
9328
+ required:
9329
+ - id
9330
+ - name
9331
+ - sortPosition
9332
+ - isSystemGroup
9333
+ additionalProperties: false
7990
9334
  "403":
7991
9335
  description: System group sort position cannot be changed
7992
9336
  "404":
@@ -8019,6 +9363,16 @@ paths:
8019
9363
  responses:
8020
9364
  "200":
8021
9365
  description: Successful response
9366
+ content:
9367
+ application/json:
9368
+ schema:
9369
+ type: object
9370
+ properties:
9371
+ ok:
9372
+ type: boolean
9373
+ required:
9374
+ - ok
9375
+ additionalProperties: false
8022
9376
  "403":
8023
9377
  description: Cannot reorder system groups
8024
9378
  requestBody:
@@ -8986,51 +10340,242 @@ paths:
8986
10340
  properties:
8987
10341
  status:
8988
10342
  type: string
8989
- enum:
8990
- - new
8991
- - seen
8992
- - acted_on
8993
- - dismissed
8994
- required:
8995
- - status
10343
+ enum:
10344
+ - new
10345
+ - seen
10346
+ - acted_on
10347
+ - dismissed
10348
+ required:
10349
+ - status
10350
+ additionalProperties: false
10351
+ /v1/home/feed/{id}/actions/{actionId}:
10352
+ post:
10353
+ operationId: home_feed_by_id_actions_by_actionId_post
10354
+ summary: Trigger home feed action
10355
+ description:
10356
+ Create a new conversation pre-seeded with the action's prompt as the first user message. Returns the new
10357
+ `conversationId`.
10358
+ tags:
10359
+ - home
10360
+ responses:
10361
+ "200":
10362
+ description: Successful response
10363
+ content:
10364
+ application/json:
10365
+ schema:
10366
+ type: object
10367
+ properties:
10368
+ conversationId:
10369
+ type: string
10370
+ required:
10371
+ - conversationId
10372
+ additionalProperties: false
10373
+ "404":
10374
+ description: Feed item or action not found
10375
+ "500":
10376
+ description: Failed to create conversation
10377
+ parameters:
10378
+ - name: id
10379
+ in: path
10380
+ required: true
10381
+ schema:
10382
+ type: string
10383
+ - name: actionId
10384
+ in: path
10385
+ required: true
10386
+ schema:
10387
+ type: string
10388
+ /v1/home/feed/query:
10389
+ post:
10390
+ operationId: home_feed_query_post
10391
+ summary: List home feed items with filters
10392
+ description:
10393
+ Return home feed items filtered by status, urgency, category, conversation, and date range. Defaults to
10394
+ excluding dismissed items. Used by the assistant CLI to inspect what notifications have been surfaced to the
10395
+ user.
10396
+ tags:
10397
+ - home
10398
+ responses:
10399
+ "200":
10400
+ description: Successful response
10401
+ content:
10402
+ application/json:
10403
+ schema:
10404
+ type: object
10405
+ properties:
10406
+ items:
10407
+ type: array
10408
+ items:
10409
+ type: object
10410
+ properties:
10411
+ id:
10412
+ type: string
10413
+ type:
10414
+ type: string
10415
+ const: notification
10416
+ priority:
10417
+ type: integer
10418
+ minimum: 0
10419
+ maximum: 100
10420
+ title:
10421
+ type: string
10422
+ summary:
10423
+ type: string
10424
+ timestamp:
10425
+ type: string
10426
+ status:
10427
+ default: new
10428
+ type: string
10429
+ enum:
10430
+ - new
10431
+ - seen
10432
+ - acted_on
10433
+ - dismissed
10434
+ expiresAt:
10435
+ type: string
10436
+ actions:
10437
+ type: array
10438
+ items:
10439
+ type: object
10440
+ properties:
10441
+ id:
10442
+ type: string
10443
+ label:
10444
+ type: string
10445
+ prompt:
10446
+ type: string
10447
+ required:
10448
+ - id
10449
+ - label
10450
+ - prompt
10451
+ additionalProperties: false
10452
+ urgency:
10453
+ type: string
10454
+ enum:
10455
+ - low
10456
+ - medium
10457
+ - high
10458
+ - critical
10459
+ conversationId:
10460
+ type: string
10461
+ detailPanel:
10462
+ type: object
10463
+ properties:
10464
+ kind:
10465
+ type: string
10466
+ enum:
10467
+ - emailDraft
10468
+ - documentPreview
10469
+ - permissionChat
10470
+ - paymentAuth
10471
+ - toolPermission
10472
+ - updatesList
10473
+ required:
10474
+ - kind
10475
+ additionalProperties: false
10476
+ category:
10477
+ type: string
10478
+ enum:
10479
+ - security
10480
+ - scheduling
10481
+ - background
10482
+ - email
10483
+ - system
10484
+ noteworthy:
10485
+ type: boolean
10486
+ fromAssistant:
10487
+ type: boolean
10488
+ metadata:
10489
+ type: object
10490
+ propertyNames:
10491
+ type: string
10492
+ additionalProperties: {}
10493
+ createdAt:
10494
+ type: string
10495
+ required:
10496
+ - id
10497
+ - type
10498
+ - priority
10499
+ - summary
10500
+ - timestamp
10501
+ - status
10502
+ - createdAt
10503
+ additionalProperties: false
10504
+ total:
10505
+ type: integer
10506
+ minimum: 0
10507
+ maximum: 9007199254740991
10508
+ returned:
10509
+ type: integer
10510
+ minimum: 0
10511
+ maximum: 9007199254740991
10512
+ hasMore:
10513
+ type: boolean
10514
+ updatedAt:
10515
+ type: string
10516
+ required:
10517
+ - items
10518
+ - total
10519
+ - returned
10520
+ - hasMore
10521
+ - updatedAt
10522
+ additionalProperties: false
10523
+ requestBody:
10524
+ required: true
10525
+ content:
10526
+ application/json:
10527
+ schema:
10528
+ type: object
10529
+ properties:
10530
+ includeDismissed:
10531
+ type: boolean
10532
+ statuses:
10533
+ type: array
10534
+ items:
10535
+ type: string
10536
+ enum:
10537
+ - new
10538
+ - seen
10539
+ - acted_on
10540
+ - dismissed
10541
+ before:
10542
+ type: string
10543
+ after:
10544
+ type: string
10545
+ urgencies:
10546
+ type: array
10547
+ items:
10548
+ type: string
10549
+ enum:
10550
+ - low
10551
+ - medium
10552
+ - high
10553
+ - critical
10554
+ categories:
10555
+ type: array
10556
+ items:
10557
+ type: string
10558
+ enum:
10559
+ - security
10560
+ - scheduling
10561
+ - background
10562
+ - email
10563
+ - system
10564
+ conversationId:
10565
+ type: string
10566
+ fromAssistant:
10567
+ type: boolean
10568
+ noteworthy:
10569
+ type: boolean
10570
+ limit:
10571
+ type: integer
10572
+ exclusiveMinimum: 0
10573
+ maximum: 200
10574
+ offset:
10575
+ type: integer
10576
+ minimum: 0
10577
+ maximum: 9007199254740991
8996
10578
  additionalProperties: false
8997
- /v1/home/feed/{id}/actions/{actionId}:
8998
- post:
8999
- operationId: home_feed_by_id_actions_by_actionId_post
9000
- summary: Trigger home feed action
9001
- description:
9002
- Create a new conversation pre-seeded with the action's prompt as the first user message. Returns the new
9003
- `conversationId`.
9004
- tags:
9005
- - home
9006
- responses:
9007
- "200":
9008
- description: Successful response
9009
- content:
9010
- application/json:
9011
- schema:
9012
- type: object
9013
- properties:
9014
- conversationId:
9015
- type: string
9016
- required:
9017
- - conversationId
9018
- additionalProperties: false
9019
- "404":
9020
- description: Feed item or action not found
9021
- "500":
9022
- description: Failed to create conversation
9023
- parameters:
9024
- - name: id
9025
- in: path
9026
- required: true
9027
- schema:
9028
- type: string
9029
- - name: actionId
9030
- in: path
9031
- required: true
9032
- schema:
9033
- type: string
9034
10579
  /v1/home/state:
9035
10580
  get:
9036
10581
  operationId: home_state_get
@@ -9603,10 +11148,8 @@ paths:
9603
11148
  /v1/identity/intro:
9604
11149
  get:
9605
11150
  operationId: identity_intro_get
9606
- summary: Get identity intro text
9607
- description:
9608
- Returns a deterministic greeting derived from the assistant name in IDENTITY.md, falling back to
9609
- LLM-generated cache.
11151
+ summary: Get identity greetings
11152
+ description: Returns an array of greetings sourced from SOUL.md, LLM cache, or static fallbacks.
9610
11153
  tags:
9611
11154
  - identity
9612
11155
  responses:
@@ -9617,9 +11160,14 @@ paths:
9617
11160
  schema:
9618
11161
  type: object
9619
11162
  properties:
11163
+ greetings:
11164
+ type: array
11165
+ items:
11166
+ type: string
9620
11167
  text:
9621
11168
  type: string
9622
11169
  required:
11170
+ - greetings
9623
11171
  - text
9624
11172
  additionalProperties: false
9625
11173
  /v1/image-generation/generate:
@@ -9782,11 +11330,6 @@ paths:
9782
11330
  - type
9783
11331
  - credential
9784
11332
  additionalProperties: false
9785
- status:
9786
- type: string
9787
- enum:
9788
- - active
9789
- - disabled
9790
11333
  label:
9791
11334
  anyOf:
9792
11335
  - type: string
@@ -9827,7 +11370,6 @@ paths:
9827
11370
  - name
9828
11371
  - provider
9829
11372
  - auth
9830
- - status
9831
11373
  - label
9832
11374
  - baseUrl
9833
11375
  - models
@@ -9929,11 +11471,6 @@ paths:
9929
11471
  - type
9930
11472
  - credential
9931
11473
  additionalProperties: false
9932
- status:
9933
- type: string
9934
- enum:
9935
- - active
9936
- - disabled
9937
11474
  label:
9938
11475
  anyOf:
9939
11476
  - type: string
@@ -9974,7 +11511,6 @@ paths:
9974
11511
  - name
9975
11512
  - provider
9976
11513
  - auth
9977
- - status
9978
11514
  - label
9979
11515
  - baseUrl
9980
11516
  - models
@@ -10064,11 +11600,6 @@ paths:
10064
11600
  label:
10065
11601
  type: string
10066
11602
  minLength: 1
10067
- status:
10068
- type: string
10069
- enum:
10070
- - active
10071
- - disabled
10072
11603
  base_url:
10073
11604
  anyOf:
10074
11605
  - type: string
@@ -10213,11 +11744,6 @@ paths:
10213
11744
  - type
10214
11745
  - credential
10215
11746
  additionalProperties: false
10216
- status:
10217
- type: string
10218
- enum:
10219
- - active
10220
- - disabled
10221
11747
  label:
10222
11748
  anyOf:
10223
11749
  - type: string
@@ -10258,7 +11784,6 @@ paths:
10258
11784
  - name
10259
11785
  - provider
10260
11786
  - auth
10261
- - status
10262
11787
  - label
10263
11788
  - baseUrl
10264
11789
  - models
@@ -10279,8 +11804,7 @@ paths:
10279
11804
  summary: Update a provider connection
10280
11805
  description:
10281
11806
  Update an existing connection. Cannot rename or change the provider. For managed connections
10282
- (anthropic-managed, openai-managed, gemini-managed) the auth is locked to platform; label and status remain
10283
- editable.
11807
+ (anthropic-managed, openai-managed, gemini-managed) the auth is locked to platform; label remains editable.
10284
11808
  tags:
10285
11809
  - inference
10286
11810
  responses:
@@ -10359,11 +11883,6 @@ paths:
10359
11883
  - type
10360
11884
  - credential
10361
11885
  additionalProperties: false
10362
- status:
10363
- type: string
10364
- enum:
10365
- - active
10366
- - disabled
10367
11886
  label:
10368
11887
  anyOf:
10369
11888
  - type: string
@@ -10404,7 +11923,6 @@ paths:
10404
11923
  - name
10405
11924
  - provider
10406
11925
  - auth
10407
- - status
10408
11926
  - label
10409
11927
  - baseUrl
10410
11928
  - models
@@ -10483,11 +12001,6 @@ paths:
10483
12001
  - type
10484
12002
  - credential
10485
12003
  additionalProperties: false
10486
- status:
10487
- type: string
10488
- enum:
10489
- - active
10490
- - disabled
10491
12004
  label:
10492
12005
  anyOf:
10493
12006
  - type: string
@@ -10883,6 +12396,21 @@ paths:
10883
12396
  responses:
10884
12397
  "200":
10885
12398
  description: Successful response
12399
+ content:
12400
+ application/json:
12401
+ schema:
12402
+ type: object
12403
+ properties:
12404
+ hasToken:
12405
+ type: boolean
12406
+ success:
12407
+ type: boolean
12408
+ error:
12409
+ type: string
12410
+ required:
12411
+ - hasToken
12412
+ - success
12413
+ additionalProperties: false
10886
12414
  get:
10887
12415
  operationId: integrations_vercel_config_get
10888
12416
  summary: Get Vercel config
@@ -10892,6 +12420,21 @@ paths:
10892
12420
  responses:
10893
12421
  "200":
10894
12422
  description: Successful response
12423
+ content:
12424
+ application/json:
12425
+ schema:
12426
+ type: object
12427
+ properties:
12428
+ hasToken:
12429
+ type: boolean
12430
+ success:
12431
+ type: boolean
12432
+ error:
12433
+ type: string
12434
+ required:
12435
+ - hasToken
12436
+ - success
12437
+ additionalProperties: false
10895
12438
  post:
10896
12439
  operationId: integrations_vercel_config_post
10897
12440
  summary: Set or delete Vercel config
@@ -10901,6 +12444,37 @@ paths:
10901
12444
  responses:
10902
12445
  "200":
10903
12446
  description: Successful response
12447
+ content:
12448
+ application/json:
12449
+ schema:
12450
+ type: object
12451
+ properties:
12452
+ hasToken:
12453
+ type: boolean
12454
+ success:
12455
+ type: boolean
12456
+ error:
12457
+ type: string
12458
+ required:
12459
+ - hasToken
12460
+ - success
12461
+ additionalProperties: false
12462
+ requestBody:
12463
+ required: true
12464
+ content:
12465
+ application/json:
12466
+ schema:
12467
+ type: object
12468
+ properties:
12469
+ action:
12470
+ type: string
12471
+ enum:
12472
+ - get
12473
+ - set
12474
+ - delete
12475
+ apiToken:
12476
+ type: string
12477
+ additionalProperties: false
10904
12478
  /v1/internal/mcp/add:
10905
12479
  post:
10906
12480
  operationId: internal_mcp_add_post
@@ -11707,6 +13281,79 @@ paths:
11707
13281
  type: object
11708
13282
  properties: {}
11709
13283
  additionalProperties: false
13284
+ /v1/memory/v3/seed-edges:
13285
+ post:
13286
+ operationId: memory_v3_seededges_post
13287
+ summary: Seed the learned co-retrieval edge graph from v2 router history
13288
+ description:
13289
+ Builds an NPMI-scored co-retrieval graph from the v2 router's per-turn selections
13290
+ (memory_v2_activation_logs, status='injected') and persists it into memory_v3_auto_edges, warm-starting the
13291
+ learned edge graph that the v3 edge-expansion lane merges with curated edges when
13292
+ memory.v3.edges.learnedAdjacencyThreshold > 0. NPMI plus a min co-occurrence floor and an always-on frequency
13293
+ ceiling keep the neighborhoods associative rather than base-rate noise. Idempotent (upserts to a flat seed
13294
+ weight). Runs no LLM; the only write among the v3 routes.
13295
+ tags:
13296
+ - memory
13297
+ responses:
13298
+ "200":
13299
+ description: Successful response
13300
+ requestBody:
13301
+ required: true
13302
+ content:
13303
+ application/json:
13304
+ schema:
13305
+ type: object
13306
+ properties:
13307
+ minCount:
13308
+ type: integer
13309
+ exclusiveMinimum: 0
13310
+ maximum: 9007199254740991
13311
+ topK:
13312
+ type: integer
13313
+ exclusiveMinimum: 0
13314
+ maximum: 9007199254740991
13315
+ maxNeighborFreqRatio:
13316
+ type: number
13317
+ exclusiveMinimum: 0
13318
+ maximum: 1
13319
+ seedWeight:
13320
+ type: number
13321
+ exclusiveMinimum: 0
13322
+ additionalProperties: false
13323
+ /v1/memory/v3/shadow-diff:
13324
+ post:
13325
+ operationId: memory_v3_shadowdiff_post
13326
+ summary: Diff v3 shadow selections against live v2 router selections (read-only)
13327
+ description:
13328
+ Compares the v3 shadow-mode selections against the live v2 router selections turn-for-turn, from the memory
13329
+ activation log. Pairs each v3_shadow row with the nearest v2 router row in the same conversation (by timestamp,
13330
+ within a tolerance — the turn columns use different counters), then reports per-turn and aggregate overlap, what
13331
+ v3 surfaced that v2 did not, and what v2 had that v3 dropped, broken down by v3 provenance lane. The v2
13332
+ comparand is the router's fresh per-turn pick (status='injected'), not its accumulated in-context set. Requires
13333
+ that v3 shadow mode has been running so v3_shadow rows exist; the route runs no LLM and writes nothing.
13334
+ tags:
13335
+ - memory
13336
+ responses:
13337
+ "200":
13338
+ description: Successful response
13339
+ requestBody:
13340
+ required: true
13341
+ content:
13342
+ application/json:
13343
+ schema:
13344
+ type: object
13345
+ properties:
13346
+ sinceDays:
13347
+ type: number
13348
+ exclusiveMinimum: 0
13349
+ toleranceSec:
13350
+ type: number
13351
+ exclusiveMinimum: 0
13352
+ limit:
13353
+ type: integer
13354
+ exclusiveMinimum: 0
13355
+ maximum: 9007199254740991
13356
+ additionalProperties: false
11710
13357
  /v1/memory/v3/simulate:
11711
13358
  post:
11712
13359
  operationId: memory_v3_simulate_post
@@ -11740,6 +13387,7 @@ paths:
11740
13387
  exclusiveMinimum: 0
11741
13388
  maximum: 9007199254740991
11742
13389
  lanes:
13390
+ minItems: 1
11743
13391
  type: array
11744
13392
  items:
11745
13393
  type: string
@@ -12424,6 +14072,92 @@ paths:
12424
14072
  required:
12425
14073
  - deliveryId
12426
14074
  additionalProperties: false
14075
+ /v1/notifications/edit:
14076
+ post:
14077
+ operationId: notifications_edit_post
14078
+ summary: Edit an already-sent notification
14079
+ description:
14080
+ Patch the home-feed entry for a notification and, where supported (Slack today), update the delivered
14081
+ message in place.
14082
+ tags:
14083
+ - notifications
14084
+ responses:
14085
+ "200":
14086
+ description: Successful response
14087
+ content:
14088
+ application/json:
14089
+ schema:
14090
+ type: object
14091
+ properties:
14092
+ ok:
14093
+ type: boolean
14094
+ feedItem:
14095
+ type: object
14096
+ propertyNames:
14097
+ type: string
14098
+ additionalProperties: {}
14099
+ channels:
14100
+ type: array
14101
+ items:
14102
+ type: object
14103
+ properties:
14104
+ channel:
14105
+ type: string
14106
+ deliveryId:
14107
+ type: string
14108
+ outcome:
14109
+ type: string
14110
+ enum:
14111
+ - updated
14112
+ - unsupported
14113
+ - skipped
14114
+ - failed
14115
+ reason:
14116
+ type: string
14117
+ required:
14118
+ - channel
14119
+ - deliveryId
14120
+ - outcome
14121
+ additionalProperties: false
14122
+ required:
14123
+ - ok
14124
+ - feedItem
14125
+ - channels
14126
+ additionalProperties: false
14127
+ "404":
14128
+ description: No notification found for the supplied id
14129
+ requestBody:
14130
+ required: true
14131
+ content:
14132
+ application/json:
14133
+ schema:
14134
+ type: object
14135
+ properties:
14136
+ id:
14137
+ type: string
14138
+ minLength: 1
14139
+ description: Feed item id (notif:<uuid>) or bare uuid
14140
+ title:
14141
+ type: string
14142
+ body:
14143
+ type: string
14144
+ urgency:
14145
+ type: string
14146
+ enum:
14147
+ - low
14148
+ - medium
14149
+ - high
14150
+ - critical
14151
+ status:
14152
+ type: string
14153
+ enum:
14154
+ - new
14155
+ - seen
14156
+ - acted_on
14157
+ - dismissed
14158
+ required:
14159
+ - id
14160
+ additionalProperties: false
12427
14161
  /v1/notifications/emit:
12428
14162
  post:
12429
14163
  operationId: notifications_emit_post