@vellumai/assistant 0.8.6 → 0.8.7

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 (891) hide show
  1. package/AGENTS.md +4 -4
  2. package/Dockerfile +1 -0
  3. package/bun.lock +11 -2
  4. package/docker-entrypoint.sh +8 -6
  5. package/docs/plugins.md +63 -28
  6. package/examples/plugins/echo/register.ts +4 -7
  7. package/knip.json +1 -0
  8. package/node_modules/@vellumai/environments/bun.lock +24 -0
  9. package/node_modules/@vellumai/environments/package.json +18 -0
  10. package/node_modules/@vellumai/environments/src/__tests__/package-boundary.test.ts +95 -0
  11. package/node_modules/@vellumai/environments/src/index.ts +11 -0
  12. package/node_modules/@vellumai/environments/src/seeds.ts +73 -0
  13. package/node_modules/@vellumai/environments/src/types.ts +70 -0
  14. package/node_modules/@vellumai/environments/tsconfig.json +20 -0
  15. package/node_modules/@vellumai/skill-host-contracts/src/assistant-event.ts +11 -0
  16. package/node_modules/@vellumai/skill-host-contracts/src/client.ts +3 -4
  17. package/node_modules/@vellumai/skill-host-contracts/src/skill-host.ts +6 -2
  18. package/openapi.yaml +3735 -353
  19. package/package.json +7 -3
  20. package/scripts/generate-openapi.ts +20 -13
  21. package/src/__tests__/agent-loop-callsite-precedence.test.ts +42 -80
  22. package/src/__tests__/agent-loop-exit-reason.test.ts +240 -39
  23. package/src/__tests__/agent-loop-mutable-latest-user-message.test.ts +141 -0
  24. package/src/__tests__/agent-loop-override-profile.test.ts +19 -32
  25. package/src/__tests__/agent-loop-provider-error-recording.test.ts +6 -4
  26. package/src/__tests__/agent-loop-thinking.test.ts +17 -12
  27. package/src/__tests__/agent-loop.test.ts +207 -341
  28. package/src/__tests__/agent-wake-disk-pressure-callsite.test.ts +4 -2
  29. package/src/__tests__/agent-wake-override-profile.test.ts +22 -40
  30. package/src/__tests__/anthropic-provider.test.ts +201 -55
  31. package/src/__tests__/app-builder-skill-instructions.test.ts +22 -0
  32. package/src/__tests__/app-control-flow.test.ts +5 -0
  33. package/src/__tests__/approval-cascade.test.ts +4 -11
  34. package/src/__tests__/approval-routes-http.test.ts +4 -2
  35. package/src/__tests__/assistant-event.test.ts +15 -0
  36. package/src/__tests__/assistant-feature-flags-integration.test.ts +2 -2
  37. package/src/__tests__/avatar-e2e.test.ts +7 -37
  38. package/src/__tests__/avatar-generator.test.ts +12 -42
  39. package/src/__tests__/avatar-identity-sync.test.ts +28 -3
  40. package/src/__tests__/background-shell-bash.test.ts +3 -7
  41. package/src/__tests__/btw-routes.test.ts +7 -12
  42. package/src/__tests__/call-pointer-messages.test.ts +5 -3
  43. package/src/__tests__/call-site-routing-provider.test.ts +22 -40
  44. package/src/__tests__/catalog-files.test.ts +1 -0
  45. package/src/__tests__/channel-approval-routes.test.ts +48 -20
  46. package/src/__tests__/channel-approvals.test.ts +3 -1
  47. package/src/__tests__/channel-invite-transport.test.ts +1 -5
  48. package/src/__tests__/channel-readiness-routes.test.ts +0 -4
  49. package/src/__tests__/channel-readiness-slack-remote.test.ts +2 -7
  50. package/src/__tests__/channel-retry-sweep.test.ts +71 -79
  51. package/src/__tests__/circuit-breaker-pipeline.test.ts +3 -3
  52. package/src/__tests__/clawhub-files.test.ts +1 -0
  53. package/src/__tests__/compaction-events.test.ts +5 -17
  54. package/src/__tests__/compaction-pipeline.test.ts +1 -1
  55. package/src/__tests__/compaction-timeout-recovery.test.ts +37 -48
  56. package/src/__tests__/compaction-trail-store.test.ts +1 -79
  57. package/src/__tests__/compactor-image-manifest-trust.test.ts +112 -0
  58. package/src/__tests__/computer-use-tools.test.ts +2 -2
  59. package/src/__tests__/config-watcher.test.ts +28 -0
  60. package/src/__tests__/context-search-agent-runner.test.ts +6 -3
  61. package/src/__tests__/context-token-estimator.test.ts +34 -0
  62. package/src/__tests__/context-window-manager-compact-retry.test.ts +291 -0
  63. package/src/__tests__/conversation-abort-tool-results.test.ts +14 -7
  64. package/src/__tests__/conversation-agent-loop-disk-pressure.test.ts +3 -2
  65. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +12 -27
  66. package/src/__tests__/conversation-agent-loop-overflow.test.ts +430 -90
  67. package/src/__tests__/conversation-agent-loop.test.ts +581 -62
  68. package/src/__tests__/conversation-analysis-routes.test.ts +1 -3
  69. package/src/__tests__/conversation-app-control-lifecycle.test.ts +1 -1
  70. package/src/__tests__/conversation-clear-safety.test.ts +20 -10
  71. package/src/__tests__/conversation-confirmation-signals.test.ts +15 -45
  72. package/src/__tests__/conversation-disk-view-integration.test.ts +2 -2
  73. package/src/__tests__/conversation-disk-view.test.ts +10 -17
  74. package/src/__tests__/conversation-fork-crud.test.ts +86 -172
  75. package/src/__tests__/conversation-fork-route.test.ts +16 -14
  76. package/src/__tests__/conversation-init.benchmark.test.ts +6 -6
  77. package/src/__tests__/conversation-lifecycle.test.ts +3 -2
  78. package/src/__tests__/conversation-load-history-repair.test.ts +3 -2
  79. package/src/__tests__/conversation-load-history-stripped.test.ts +1 -1
  80. package/src/__tests__/conversation-message-sync-tags.test.ts +3 -4
  81. package/src/__tests__/conversation-pairing.test.ts +34 -4
  82. package/src/__tests__/conversation-pre-run-repair.test.ts +1 -1
  83. package/src/__tests__/conversation-process-app-control-preactivation.test.ts +4 -0
  84. package/src/__tests__/conversation-process-callsite.test.ts +27 -30
  85. package/src/__tests__/conversation-provider-retry-repair.test.ts +53 -44
  86. package/src/__tests__/conversation-queue.test.ts +270 -164
  87. package/src/__tests__/conversation-routes-disk-view.test.ts +3 -2
  88. package/src/__tests__/conversation-routes-guardian-reply.test.ts +2 -2
  89. package/src/__tests__/conversation-routes-slash-commands.test.ts +2 -2
  90. package/src/__tests__/conversation-runtime-assembly.test.ts +20 -22
  91. package/src/__tests__/conversation-runtime-workspace.test.ts +19 -1
  92. package/src/__tests__/conversation-slash-queue.test.ts +37 -31
  93. package/src/__tests__/conversation-slash-unknown.test.ts +13 -15
  94. package/src/__tests__/conversation-speed-override.test.ts +8 -22
  95. package/src/__tests__/conversation-stream-state.test.ts +484 -0
  96. package/src/__tests__/conversation-surfaces-action-delivery.test.ts +6 -15
  97. package/src/__tests__/conversation-surfaces-app-control.test.ts +32 -4
  98. package/src/__tests__/conversation-surfaces-state-update.test.ts +5 -2
  99. package/src/__tests__/conversation-surfaces-table-action.test.ts +6 -15
  100. package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +23 -11
  101. package/src/__tests__/conversation-unread-route.test.ts +14 -2
  102. package/src/__tests__/conversation-usage.test.ts +0 -2
  103. package/src/__tests__/conversation-wipe.test.ts +1 -1
  104. package/src/__tests__/conversation-workspace-cache-state.test.ts +3 -1
  105. package/src/__tests__/conversation-workspace-injection.test.ts +48 -22
  106. package/src/__tests__/conversation-workspace-tool-tracking.test.ts +27 -7
  107. package/src/__tests__/credential-execution-tools.test.ts +1 -2
  108. package/src/__tests__/credential-security-invariants.test.ts +0 -1
  109. package/src/__tests__/cross-provider-web-search.test.ts +6 -2
  110. package/src/__tests__/cu-unified-flow.test.ts +26 -1
  111. package/src/__tests__/db-schedule-syntax-migration.test.ts +11 -0
  112. package/src/__tests__/disk-pressure-guard.test.ts +66 -0
  113. package/src/__tests__/disk-pressure-routes.test.ts +9 -2
  114. package/src/__tests__/dm-persistence.test.ts +7 -2
  115. package/src/__tests__/dynamic-page-surface.test.ts +68 -0
  116. package/src/__tests__/edit-propagation.test.ts +1 -2
  117. package/src/__tests__/empty-response-pipeline.test.ts +127 -5
  118. package/src/__tests__/filing-service.test.ts +2 -2
  119. package/src/__tests__/first-greeting.test.ts +55 -14
  120. package/src/__tests__/gemini-inline-media.test.ts +78 -0
  121. package/src/__tests__/gemini-provider.test.ts +351 -28
  122. package/src/__tests__/guardian-routing-state.test.ts +60 -71
  123. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +9 -7
  124. package/src/__tests__/heartbeat-disk-pressure.test.ts +1 -0
  125. package/src/__tests__/heartbeat-service.test.ts +2 -1
  126. package/src/__tests__/history-repair-hook.test.ts +161 -0
  127. package/src/__tests__/history-repair-observability.test.ts +1 -1
  128. package/src/__tests__/history-repair.test.ts +2 -1
  129. package/src/__tests__/host-app-control-proxy.test.ts +2 -0
  130. package/src/__tests__/host-cu-proxy.test.ts +2 -0
  131. package/src/__tests__/host-file-edit-tool.test.ts +4 -2
  132. package/src/__tests__/host-file-proxy.test.ts +31 -0
  133. package/src/__tests__/host-file-read-tool.test.ts +4 -2
  134. package/src/__tests__/host-file-write-tool.test.ts +9 -3
  135. package/src/__tests__/host-proxy-preactivation.test.ts +53 -14
  136. package/src/__tests__/host-shell-tool.test.ts +9 -4
  137. package/src/__tests__/http-user-message-parity.test.ts +2 -2
  138. package/src/__tests__/identity-intro-cache.test.ts +35 -14
  139. package/src/__tests__/inbound-slack-persistence.test.ts +7 -2
  140. package/src/__tests__/injector-background-turn.test.ts +1 -1
  141. package/src/__tests__/injector-chain.test.ts +1 -1
  142. package/src/__tests__/injector-disk-pressure.test.ts +1 -1
  143. package/src/__tests__/injector-document-comments.test.ts +1 -1
  144. package/src/__tests__/injector-pkb-v2-silenced.test.ts +1 -1
  145. package/src/__tests__/injector-v3-suppression.test.ts +220 -0
  146. package/src/__tests__/list-messages-attachments.test.ts +7 -8
  147. package/src/__tests__/list-messages-hidden-metadata.test.ts +17 -15
  148. package/src/__tests__/list-messages-page-latest.test.ts +0 -1
  149. package/src/__tests__/list-messages-tool-merge.test.ts +36 -6
  150. package/src/__tests__/llm-call-pipeline.test.ts +21 -15
  151. package/src/__tests__/llm-request-log-turn-query.test.ts +42 -86
  152. package/src/__tests__/llm-resolver.test.ts +23 -47
  153. package/src/__tests__/llm-usage-store.test.ts +45 -0
  154. package/src/__tests__/log-export-routes.test.ts +59 -0
  155. package/src/__tests__/managed-skill-lifecycle.test.ts +1 -8
  156. package/src/__tests__/mcp-auth-routes.test.ts +15 -10
  157. package/src/__tests__/mcp-health-check.test.ts +18 -13
  158. package/src/__tests__/memory-retrieval-pipeline.test.ts +1 -1
  159. package/src/__tests__/memory-v2-static-injector.test.ts +1 -1
  160. package/src/__tests__/messaging-send-tool.test.ts +8 -4
  161. package/src/__tests__/migration-export-http.test.ts +12 -12
  162. package/src/__tests__/migration-import-commit-http.test.ts +8 -8
  163. package/src/__tests__/migration-import-preflight-http.test.ts +7 -7
  164. package/src/__tests__/migration-validate-http.test.ts +3 -3
  165. package/src/__tests__/native-web-search.test.ts +14 -20
  166. package/src/__tests__/notification-decision-identity.test.ts +9 -18
  167. package/src/__tests__/notification-decision-recipient-context.test.ts +3 -6
  168. package/src/__tests__/oauth-commands-routes.test.ts +1 -1
  169. package/src/__tests__/onboarding-template-contract.test.ts +10 -0
  170. package/src/__tests__/openai-provider.test.ts +66 -70
  171. package/src/__tests__/openai-responses-provider.test.ts +21 -77
  172. package/src/__tests__/outbound-slack-persistence.test.ts +2 -1
  173. package/src/__tests__/overflow-reduce-pipeline.test.ts +2 -4
  174. package/src/__tests__/parallel-tool.benchmark.test.ts +24 -36
  175. package/src/__tests__/persistence-pipeline.test.ts +15 -26
  176. package/src/__tests__/persistence-secret-redaction.test.ts +2 -1
  177. package/src/__tests__/pipeline-runner.test.ts +2 -3
  178. package/src/__tests__/plugin-bootstrap.test.ts +51 -25
  179. package/src/__tests__/plugin-route-contribution.test.ts +6 -16
  180. package/src/__tests__/plugin-skill-contribution.test.ts +7 -17
  181. package/src/__tests__/plugin-tool-contribution.test.ts +10 -26
  182. package/src/__tests__/plugin-types.test.ts +7 -14
  183. package/src/__tests__/prechat-onboarding-contract.test.ts +23 -0
  184. package/src/__tests__/process-message-background-slack.test.ts +17 -16
  185. package/src/__tests__/process-message-display-content.test.ts +30 -42
  186. package/src/__tests__/provider-commit-message-generator.test.ts +19 -14
  187. package/src/__tests__/provider-error-scenarios.test.ts +7 -6
  188. package/src/__tests__/provider-platform-proxy-integration.test.ts +3 -8
  189. package/src/__tests__/provider-send-message-override-profile.test.ts +9 -25
  190. package/src/__tests__/provider-streaming.benchmark.test.ts +12 -22
  191. package/src/__tests__/provider-usage-tracking.test.ts +0 -6
  192. package/src/__tests__/ratelimit.test.ts +9 -4
  193. package/src/__tests__/relay-server.test.ts +20 -13
  194. package/src/__tests__/retry-openrouter-only-normalization.test.ts +5 -8
  195. package/src/__tests__/retry-thinking-tool-choice.test.ts +10 -13
  196. package/src/__tests__/retry-verbosity-normalization.test.ts +5 -8
  197. package/src/__tests__/runtime-events-sse-reconnect.test.ts +353 -0
  198. package/src/__tests__/schedule-routes.test.ts +80 -10
  199. package/src/__tests__/schedule-store.test.ts +67 -0
  200. package/src/__tests__/schedule-tools.test.ts +125 -0
  201. package/src/__tests__/secret-ingress-http.test.ts +2 -2
  202. package/src/__tests__/secret-prompt-log-hygiene.test.ts +11 -7
  203. package/src/__tests__/secret-prompter-channel-fallback.test.ts +11 -9
  204. package/src/__tests__/secret-response-routing.test.ts +13 -11
  205. package/src/__tests__/send-endpoint-busy.test.ts +2 -1
  206. package/src/__tests__/shell-observability.test.ts +249 -0
  207. package/src/__tests__/skill-feature-flags-integration.test.ts +11 -11
  208. package/src/__tests__/skill-feature-flags.test.ts +6 -6
  209. package/src/__tests__/skill-load-feature-flag.test.ts +10 -10
  210. package/src/__tests__/skills-files-catalog-fallback.test.ts +10 -0
  211. package/src/__tests__/skillssh-files.test.ts +1 -0
  212. package/src/__tests__/starter-task-flow.test.ts +6 -6
  213. package/src/__tests__/strip-memory-injections.test.ts +102 -14
  214. package/src/__tests__/subagent-call-site-routing.test.ts +2 -2
  215. package/src/__tests__/suggestion-routes.test.ts +3 -3
  216. package/src/__tests__/sync-message-contract.test.ts +19 -16
  217. package/src/__tests__/system-prompt.test.ts +54 -0
  218. package/src/__tests__/terminal-tools.test.ts +3 -24
  219. package/src/__tests__/thread-backfill.test.ts +4 -9
  220. package/src/__tests__/title-generate-pipeline.test.ts +1 -1
  221. package/src/__tests__/token-estimate-pipeline.test.ts +2 -4
  222. package/src/__tests__/tool-error-pipeline.test.ts +2 -2
  223. package/src/__tests__/tool-execute-pipeline.test.ts +1 -1
  224. package/src/__tests__/tool-preview-lifecycle.test.ts +13 -11
  225. package/src/__tests__/tool-result-truncate-pipeline.test.ts +9 -12
  226. package/src/__tests__/tool-result-truncation.test.ts +3 -1
  227. package/src/__tests__/tools-audio-read.test.ts +113 -0
  228. package/src/__tests__/turn-boundary-resolution.test.ts +44 -84
  229. package/src/__tests__/turn-events-store.test.ts +11 -7
  230. package/src/__tests__/voice-scoped-grant-consumer.test.ts +8 -6
  231. package/src/__tests__/voice-session-bridge.test.ts +13 -7
  232. package/src/acp/__tests__/prepare-agent-env.test.ts +143 -31
  233. package/src/acp/prepare-agent-env.ts +52 -11
  234. package/src/agent/compaction-circuit.ts +140 -0
  235. package/src/agent/loop.ts +409 -85
  236. package/src/api/README.md +19 -17
  237. package/src/api/constants/tool-execution.ts +21 -0
  238. package/src/api/events/assistant-activity-state.ts +75 -0
  239. package/src/api/events/assistant-outbound-attachment.ts +25 -27
  240. package/src/api/events/assistant-text-delta.ts +6 -8
  241. package/src/api/events/assistant-turn-start.ts +5 -7
  242. package/src/api/events/avatar-updated.ts +24 -0
  243. package/src/api/events/compaction-circuit-closed.ts +26 -0
  244. package/src/api/events/compaction-circuit-open.ts +28 -0
  245. package/src/api/events/confirmation-request.ts +114 -0
  246. package/src/api/events/contact-request.ts +33 -0
  247. package/src/api/events/conversation-error.ts +77 -0
  248. package/src/api/events/conversation-list-invalidated.ts +38 -0
  249. package/src/api/events/conversation-title-updated.ts +24 -0
  250. package/src/api/events/disk-pressure-status-changed.ts +61 -0
  251. package/src/api/events/document-comment-created.ts +24 -28
  252. package/src/api/events/document-comment-deleted.ts +6 -8
  253. package/src/api/events/document-comment-reopened.ts +6 -8
  254. package/src/api/events/document-comment-resolved.ts +8 -10
  255. package/src/api/events/document-editor-update.ts +27 -0
  256. package/src/api/events/error.ts +32 -0
  257. package/src/api/events/generation-cancelled.ts +4 -6
  258. package/src/api/events/generation-handoff.ts +13 -15
  259. package/src/api/events/home-feed-updated.ts +26 -0
  260. package/src/api/events/identity-changed.ts +32 -0
  261. package/src/api/events/interaction-resolved.ts +50 -0
  262. package/src/api/events/message-complete.ts +10 -12
  263. package/src/api/events/message-dequeued.ts +21 -0
  264. package/src/api/events/message-queued-deleted.ts +23 -0
  265. package/src/api/events/message-queued.ts +22 -0
  266. package/src/api/events/message-request-complete.ts +29 -0
  267. package/src/api/events/navigate-settings.ts +20 -0
  268. package/src/api/events/notification-intent.ts +33 -0
  269. package/src/api/events/open-url.ts +6 -8
  270. package/src/api/events/question-request.ts +67 -0
  271. package/src/api/events/relationship-state-updated.ts +4 -6
  272. package/src/api/events/secret-request.ts +42 -0
  273. package/src/api/events/subagent-event.ts +79 -0
  274. package/src/api/events/subagent-spawned.ts +40 -0
  275. package/src/api/events/subagent-status-changed.ts +65 -0
  276. package/src/api/events/sync-changed.ts +29 -0
  277. package/src/api/events/tool-result.ts +129 -0
  278. package/src/api/events/tool-use-start.ts +8 -10
  279. package/src/api/events/turn-profile-auto-routed.ts +28 -0
  280. package/src/api/events/ui-surface-complete.ts +30 -0
  281. package/src/api/events/ui-surface-dismiss.ts +22 -0
  282. package/src/api/events/ui-surface-show.ts +67 -0
  283. package/src/api/events/ui-surface-update.ts +26 -0
  284. package/src/api/events/usage-update.ts +34 -0
  285. package/src/api/events/user-message-echo.ts +35 -0
  286. package/src/api/index.ts +354 -0
  287. package/src/api/requests/dictation.ts +45 -0
  288. package/src/api/responses/disk-pressure-status.ts +26 -0
  289. package/src/api/responses/home.ts +217 -0
  290. package/src/api/responses/llm-context-response.ts +2 -0
  291. package/src/api/responses/memory-v3-selection-log.ts +50 -0
  292. package/src/api/responses/subagent-detail.ts +48 -0
  293. package/src/approvals/guardian-decision-primitive.ts +7 -15
  294. package/src/approvals/guardian-request-resolvers.ts +6 -9
  295. package/src/avatar/__tests__/avatar-manifest.test.ts +236 -0
  296. package/src/avatar/__tests__/avatar-store.test.ts +193 -0
  297. package/src/avatar/avatar-manifest.ts +195 -0
  298. package/src/avatar/avatar-store.ts +113 -0
  299. package/src/avatar/traits-png-sync.ts +8 -2
  300. package/src/background-wake/next-wake.test.ts +31 -1
  301. package/src/background-wake/next-wake.ts +4 -1
  302. package/src/calls/call-conversation-messages.ts +6 -4
  303. package/src/calls/guardian-action-sweep.ts +6 -4
  304. package/src/calls/relay-server.ts +12 -8
  305. package/src/calls/voice-session-bridge.ts +13 -27
  306. package/src/cli/commands/__tests__/memory-v3.test.ts +245 -0
  307. package/src/cli/commands/avatar.ts +17 -11
  308. package/src/cli/commands/conversations.ts +15 -1
  309. package/src/cli/commands/db/__tests__/repair.test.ts +540 -0
  310. package/src/cli/commands/db/__tests__/status.test.ts +253 -0
  311. package/src/cli/commands/db/format.ts +48 -0
  312. package/src/cli/commands/db/index.ts +29 -0
  313. package/src/cli/commands/db/repair-step-conversation-backfill.ts +345 -0
  314. package/src/cli/commands/db/repair-step-integrity.ts +146 -0
  315. package/src/cli/commands/db/repair-steps.ts +164 -0
  316. package/src/cli/commands/db/repair.ts +141 -0
  317. package/src/cli/commands/db/status.ts +366 -0
  318. package/src/cli/commands/memory-v3.ts +159 -445
  319. package/src/cli/lib/cli-colors.ts +24 -6
  320. package/src/cli/program.ts +4 -5
  321. package/src/config/__tests__/feature-flag-registry-guard.test.ts +2 -2
  322. package/src/config/assistant-feature-flags.ts +2 -2
  323. package/src/config/bundled-skills/app-builder/SKILL.md +14 -3
  324. package/src/config/bundled-skills/media-processing/services/reduce.ts +6 -9
  325. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +7 -2
  326. package/src/config/bundled-skills/schedule/SKILL.md +1 -1
  327. package/src/config/bundled-skills/schedule/TOOLS.json +8 -0
  328. package/src/config/call-site-defaults.ts +2 -7
  329. package/src/config/feature-flag-registry.json +25 -9
  330. package/src/config/schemas/__tests__/memory-v2.test.ts +1 -226
  331. package/src/config/schemas/call-site-catalog.ts +8 -15
  332. package/src/config/schemas/llm.ts +2 -3
  333. package/src/config/schemas/memory-lifecycle.ts +24 -0
  334. package/src/config/schemas/memory-v2.ts +0 -253
  335. package/src/config/schemas/memory-v3.ts +39 -0
  336. package/src/config/schemas/memory.ts +6 -1
  337. package/src/config/schemas/timeouts.ts +3 -1
  338. package/src/context/compactor.ts +54 -31
  339. package/src/context/token-estimator.ts +19 -0
  340. package/src/context/tool-result-truncation.ts +1 -43
  341. package/src/context/window-manager.ts +138 -20
  342. package/src/daemon/__tests__/conversation-surfaces-launch.test.ts +2 -2
  343. package/src/daemon/__tests__/web-search-status-text.test.ts +10 -6
  344. package/src/daemon/approval-generators.ts +4 -4
  345. package/src/daemon/config-watcher.ts +7 -1
  346. package/src/daemon/conversation-agent-loop-handlers.ts +225 -88
  347. package/src/daemon/conversation-agent-loop.ts +284 -584
  348. package/src/daemon/conversation-error.ts +7 -7
  349. package/src/daemon/conversation-history.ts +22 -6
  350. package/src/daemon/conversation-launch.ts +4 -8
  351. package/src/daemon/conversation-lifecycle.ts +10 -38
  352. package/src/daemon/conversation-messaging.ts +1 -3
  353. package/src/daemon/conversation-notifiers.ts +7 -5
  354. package/src/daemon/conversation-process.ts +100 -79
  355. package/src/daemon/conversation-runtime-assembly.ts +47 -21
  356. package/src/daemon/conversation-store.ts +6 -5
  357. package/src/daemon/conversation-surfaces.ts +55 -69
  358. package/src/daemon/conversation-tool-setup.ts +3 -0
  359. package/src/daemon/conversation.ts +91 -126
  360. package/src/daemon/daemon-skill-host.ts +2 -6
  361. package/src/daemon/disk-pressure-guard.ts +35 -29
  362. package/src/daemon/external-plugins-bootstrap.ts +46 -24
  363. package/src/daemon/first-greeting.ts +26 -4
  364. package/src/daemon/guardian-action-generators.ts +2 -2
  365. package/src/daemon/handlers/conversations.ts +6 -22
  366. package/src/daemon/handlers/shared.ts +4 -0
  367. package/src/daemon/handlers/skills.ts +15 -14
  368. package/src/daemon/host-app-control-proxy.ts +54 -1
  369. package/src/daemon/host-cu-proxy.ts +46 -22
  370. package/src/daemon/host-file-proxy.ts +25 -1
  371. package/src/daemon/host-proxy-preactivation.ts +25 -6
  372. package/src/daemon/lifecycle.ts +28 -55
  373. package/src/daemon/message-protocol.ts +2 -3
  374. package/src/daemon/message-provenance.ts +49 -0
  375. package/src/daemon/message-types/contacts.ts +3 -20
  376. package/src/daemon/message-types/conversations.ts +13 -111
  377. package/src/daemon/message-types/documents.ts +3 -9
  378. package/src/daemon/message-types/home.ts +4 -17
  379. package/src/daemon/message-types/integrations.ts +2 -6
  380. package/src/daemon/message-types/messages.ts +28 -343
  381. package/src/daemon/message-types/notifications.ts +2 -32
  382. package/src/daemon/message-types/settings.ts +3 -8
  383. package/src/daemon/message-types/skills.ts +2 -0
  384. package/src/daemon/message-types/surfaces.ts +2 -0
  385. package/src/daemon/message-types/sync.ts +12 -25
  386. package/src/daemon/message-types/workspace.ts +3 -11
  387. package/src/daemon/process-message.ts +49 -46
  388. package/src/daemon/server.ts +12 -0
  389. package/src/daemon/tool-side-effects.ts +10 -7
  390. package/src/daemon/trust-context.ts +13 -0
  391. package/src/daemon/wake-target-adapter.ts +11 -1
  392. package/src/heartbeat/__tests__/heartbeat-service.test.ts +3 -1
  393. package/src/heartbeat/heartbeat-run-store.ts +31 -0
  394. package/src/heartbeat/heartbeat-service.ts +16 -0
  395. package/src/home/feature-gate.ts +22 -0
  396. package/src/home/feed-types.ts +36 -221
  397. package/src/ipc/__tests__/email-ipc.test.ts +0 -9
  398. package/src/ipc/routes/__tests__/route-adapter.test.ts +244 -0
  399. package/src/ipc/routes/route-adapter.ts +45 -6
  400. package/src/ipc/skill-routes/__tests__/memory.test.ts +18 -9
  401. package/src/ipc/skill-routes/__tests__/providers.test.ts +10 -10
  402. package/src/ipc/skill-routes/__tests__/registries.test.ts +28 -18
  403. package/src/ipc/skill-routes/memory.ts +26 -13
  404. package/src/ipc/skill-routes/providers.ts +5 -6
  405. package/src/ipc/skill-routes/registries.ts +13 -61
  406. package/src/live-voice/__tests__/live-voice-archive.test.ts +24 -11
  407. package/src/memory/__tests__/conversation-queries.test.ts +192 -8
  408. package/src/memory/__tests__/db-maintenance.test.ts +128 -0
  409. package/src/memory/__tests__/jobs-store-job-classes.test.ts +5 -4
  410. package/src/memory/__tests__/memory-retrospective-job.test.ts +10 -6
  411. package/src/memory/__tests__/memory-v3-selections-migration.test.ts +103 -0
  412. package/src/memory/context-search/agent-runner.ts +2 -4
  413. package/src/memory/conversation-crud.ts +39 -8
  414. package/src/memory/conversation-queries.ts +78 -22
  415. package/src/memory/db-init.ts +8 -0
  416. package/src/memory/db-maintenance.ts +18 -2
  417. package/src/memory/graph/consolidation.ts +8 -11
  418. package/src/memory/graph/conversation-graph-memory.ts +41 -8
  419. package/src/memory/graph/extraction.ts +6 -9
  420. package/src/memory/graph/narrative.ts +2 -2
  421. package/src/memory/graph/pattern-scan.ts +2 -2
  422. package/src/memory/graph/retriever.ts +20 -26
  423. package/src/memory/graph/tools.ts +4 -4
  424. package/src/memory/job-handlers/conversation-starters.ts +32 -32
  425. package/src/memory/job-handlers/summarization.ts +1 -2
  426. package/src/memory/jobs-store.ts +3 -1
  427. package/src/memory/jobs-worker.ts +51 -39
  428. package/src/memory/llm-request-log-source-clickhouse.ts +5 -31
  429. package/src/memory/llm-request-log-source-local.ts +0 -11
  430. package/src/memory/llm-request-log-source.ts +9 -25
  431. package/src/memory/llm-request-log-store.ts +0 -41
  432. package/src/memory/llm-usage-store.ts +10 -0
  433. package/src/memory/memory-marker.ts +17 -0
  434. package/src/memory/memory-retrospective-job.ts +6 -2
  435. package/src/memory/memory-v2-activation-log-store.ts +1 -83
  436. package/src/memory/migrations/267-llm-usage-events-add-assistant-version.ts +46 -0
  437. package/src/memory/migrations/268-add-memory-v3-selections.ts +28 -0
  438. package/src/memory/migrations/269-schedule-script-timeout.ts +11 -0
  439. package/src/memory/migrations/270-messages-role-created-at-index.ts +18 -0
  440. package/src/memory/migrations/__tests__/267-llm-usage-events-add-assistant-version.test.ts +117 -0
  441. package/src/memory/migrations/index.ts +4 -0
  442. package/src/memory/schema/infrastructure.ts +11 -0
  443. package/src/memory/v2/__tests__/consolidation-job.test.ts +124 -0
  444. package/src/memory/v2/__tests__/migration.test.ts +11 -3
  445. package/src/memory/v2/__tests__/page-index.test.ts +37 -1
  446. package/src/memory/v2/__tests__/router.test.ts +14 -4
  447. package/src/memory/v2/__tests__/sweep-job.test.ts +6 -5
  448. package/src/memory/v2/backfill-jobs.ts +6 -0
  449. package/src/memory/v2/consolidation-job.ts +89 -9
  450. package/src/memory/v2/migration.ts +5 -3
  451. package/src/memory/v2/page-index.ts +11 -0
  452. package/src/memory/v2/router.ts +8 -11
  453. package/src/memory/v2/sweep-job.ts +8 -11
  454. package/src/memory/v2/types.ts +1 -0
  455. package/src/memory/v3/__tests__/assign.test.ts +242 -0
  456. package/src/memory/v3/__tests__/capabilities.test.ts +118 -0
  457. package/src/memory/v3/__tests__/core.test.ts +39 -0
  458. package/src/memory/v3/__tests__/fixtures/eval-turns.json +36 -0
  459. package/src/memory/v3/__tests__/fixtures/live-turns.json +37 -0
  460. package/src/memory/v3/__tests__/health.test.ts +203 -0
  461. package/src/memory/v3/__tests__/live-integration.test.ts +330 -0
  462. package/src/memory/v3/__tests__/maintain-job.test.ts +288 -0
  463. package/src/memory/v3/__tests__/needle.test.ts +107 -0
  464. package/src/memory/v3/__tests__/orchestrate.test.ts +400 -0
  465. package/src/memory/v3/__tests__/reconcile.test.ts +274 -0
  466. package/src/memory/v3/__tests__/render-injection.test.ts +61 -0
  467. package/src/memory/v3/__tests__/router.test.ts +260 -0
  468. package/src/memory/v3/__tests__/selection-log-store.test.ts +179 -0
  469. package/src/memory/v3/__tests__/selector.test.ts +404 -0
  470. package/src/memory/v3/__tests__/shadow-plugin.test.ts +414 -0
  471. package/src/memory/v3/__tests__/snapshot.test.ts +168 -0
  472. package/src/memory/v3/__tests__/tree.test.ts +192 -0
  473. package/src/memory/v3/__tests__/types.test.ts +54 -0
  474. package/src/memory/v3/__tests__/working-set-eviction.test.ts +106 -0
  475. package/src/memory/v3/__tests__/working-set-skeleton.test.ts +44 -0
  476. package/src/memory/v3/assign.ts +268 -0
  477. package/src/memory/v3/capabilities.ts +124 -0
  478. package/src/memory/v3/core.ts +26 -0
  479. package/src/memory/v3/data/README.md +84 -0
  480. package/src/memory/v3/data/assignments.json +5 -0
  481. package/src/memory/v3/data/core.json +1 -0
  482. package/src/memory/v3/data/leaves/domain-a/topic-x.md +9 -0
  483. package/src/memory/v3/data/leaves/domain-a/topic-y.md +9 -0
  484. package/src/memory/v3/data/leaves/domain-b/topic-z.md +9 -0
  485. package/src/memory/v3/health.ts +0 -0
  486. package/src/memory/v3/maintain-job.ts +314 -0
  487. package/src/memory/v3/needle.ts +115 -0
  488. package/src/memory/v3/orchestrate.ts +114 -0
  489. package/src/memory/v3/page-content.ts +34 -0
  490. package/src/memory/v3/provider-blocks.ts +16 -0
  491. package/src/memory/v3/reconcile.ts +523 -0
  492. package/src/memory/v3/render-injection.ts +32 -0
  493. package/src/memory/v3/router.ts +184 -0
  494. package/src/memory/v3/selection-log-store.ts +84 -0
  495. package/src/memory/v3/selector.ts +211 -0
  496. package/src/memory/v3/shadow-plugin.ts +379 -0
  497. package/src/memory/v3/snapshot.ts +209 -0
  498. package/src/memory/v3/tree.ts +174 -0
  499. package/src/memory/v3/types.ts +46 -60
  500. package/src/memory/v3/working-set.ts +88 -0
  501. package/src/messaging/providers/slack/render-transcript.test.ts +1 -1
  502. package/src/messaging/providers/slack/render-transcript.ts +2 -2
  503. package/src/messaging/style-analyzer.ts +8 -11
  504. package/src/notifications/conversation-pairing.ts +8 -6
  505. package/src/notifications/decision-engine.ts +10 -13
  506. package/src/notifications/preference-extractor.ts +11 -14
  507. package/src/permissions/prompter.ts +42 -36
  508. package/src/permissions/question-prompter.test.ts +35 -26
  509. package/src/permissions/question-prompter.ts +6 -10
  510. package/src/plugin-api/index.ts +2 -0
  511. package/src/plugin-api/types.ts +25 -3
  512. package/src/plugins/defaults/circuit-breaker/middlewares/circuitBreaker.ts +93 -0
  513. package/src/plugins/defaults/circuit-breaker/package.json +15 -0
  514. package/src/plugins/defaults/circuit-breaker/register.ts +39 -0
  515. package/src/plugins/defaults/compaction/middlewares/compaction.ts +25 -0
  516. package/src/plugins/defaults/compaction/package.json +15 -0
  517. package/src/plugins/defaults/compaction/register.ts +35 -0
  518. package/src/plugins/defaults/compaction/terminal.ts +73 -0
  519. package/src/plugins/defaults/empty-response/middlewares/emptyResponse.ts +22 -0
  520. package/src/plugins/defaults/empty-response/package.json +15 -0
  521. package/src/plugins/defaults/empty-response/register.ts +28 -0
  522. package/src/plugins/defaults/empty-response/terminal.ts +106 -0
  523. package/src/plugins/defaults/history-repair/hooks/user-prompt-submit.ts +35 -0
  524. package/src/plugins/defaults/history-repair/package.json +15 -0
  525. package/src/plugins/defaults/history-repair/register.ts +24 -0
  526. package/src/{daemon/history-repair.ts → plugins/defaults/history-repair/terminal.ts} +48 -35
  527. package/src/plugins/defaults/index.ts +29 -40
  528. package/src/plugins/defaults/injectors/package.json +15 -0
  529. package/src/plugins/defaults/{injectors.ts → injectors/register.ts} +14 -38
  530. package/src/plugins/defaults/llm-call/middlewares/llmCall.ts +17 -0
  531. package/src/plugins/defaults/llm-call/package.json +15 -0
  532. package/src/plugins/defaults/{llm-call.ts → llm-call/register.ts} +6 -38
  533. package/src/plugins/defaults/memory-retrieval/middlewares/memoryRetrieval.ts +17 -0
  534. package/src/plugins/defaults/memory-retrieval/package.json +15 -0
  535. package/src/plugins/defaults/{memory-retrieval.ts → memory-retrieval/register.ts} +10 -48
  536. package/src/plugins/defaults/{overflow-reduce.ts → overflow-reduce/middlewares/overflowReduce.ts} +18 -77
  537. package/src/plugins/defaults/overflow-reduce/package.json +15 -0
  538. package/src/plugins/defaults/overflow-reduce/register.ts +42 -0
  539. package/src/plugins/defaults/persistence/middlewares/persistence.ts +19 -0
  540. package/src/plugins/defaults/persistence/package.json +15 -0
  541. package/src/plugins/defaults/persistence/register.ts +38 -0
  542. package/src/plugins/defaults/persistence/terminal.ts +83 -0
  543. package/src/plugins/defaults/title-generate/package.json +15 -0
  544. package/src/plugins/defaults/title-generate/register.ts +35 -0
  545. package/src/plugins/defaults/title-generate/terminal.ts +31 -0
  546. package/src/plugins/defaults/token-estimate/middlewares/tokenEstimate.ts +23 -0
  547. package/src/plugins/defaults/token-estimate/package.json +15 -0
  548. package/src/plugins/defaults/token-estimate/register.ts +34 -0
  549. package/src/plugins/defaults/token-estimate/terminal.ts +40 -0
  550. package/src/plugins/defaults/tool-error/middlewares/toolError.ts +21 -0
  551. package/src/plugins/defaults/tool-error/package.json +15 -0
  552. package/src/plugins/defaults/tool-error/register.ts +35 -0
  553. package/src/plugins/defaults/tool-error/terminal.ts +47 -0
  554. package/src/plugins/defaults/tool-execute/middlewares/toolExecute.ts +23 -0
  555. package/src/plugins/defaults/tool-execute/package.json +15 -0
  556. package/src/plugins/defaults/{tool-execute.ts → tool-execute/register.ts} +8 -46
  557. package/src/plugins/defaults/tool-result-truncate/middlewares/toolResultTruncate.ts +23 -0
  558. package/src/plugins/defaults/tool-result-truncate/package.json +15 -0
  559. package/src/plugins/defaults/tool-result-truncate/register.ts +35 -0
  560. package/src/plugins/defaults/tool-result-truncate/terminal.ts +113 -0
  561. package/src/plugins/defaults/tool-result-truncate/types.ts +22 -0
  562. package/src/plugins/external-plugin-loader.ts +2 -2
  563. package/src/plugins/pipeline.ts +0 -12
  564. package/src/plugins/types.ts +51 -90
  565. package/src/plugins/user-loader.ts +4 -3
  566. package/src/proactive-artifact/aux-message-injector.ts +0 -1
  567. package/src/proactive-artifact/job.test.ts +20 -8
  568. package/src/proactive-artifact/job.ts +3 -1
  569. package/src/prompts/sections.ts +20 -7
  570. package/src/prompts/templates/BOOTSTRAP-CONTENT-AUTOMATION.md +2 -2
  571. package/src/prompts/templates/BOOTSTRAP.md +5 -1
  572. package/src/prompts/templates/system-sections.ts +6 -0
  573. package/src/providers/__tests__/retry-callsite.test.ts +25 -25
  574. package/src/providers/__tests__/satellite-connection-routing.test.ts +7 -21
  575. package/src/providers/anthropic/client.ts +24 -5
  576. package/src/providers/call-site-routing.ts +1 -9
  577. package/src/providers/gemini/client.ts +152 -34
  578. package/src/providers/gemini/inline-media.ts +74 -0
  579. package/src/providers/openai/__tests__/chat-completions-provider-reasoning.test.ts +0 -2
  580. package/src/providers/openai/chat-completions-provider.ts +1 -4
  581. package/src/providers/openai/responses-provider.ts +1 -4
  582. package/src/providers/openrouter/client.ts +1 -6
  583. package/src/providers/provider-send-message.ts +6 -6
  584. package/src/providers/ratelimit.ts +1 -9
  585. package/src/providers/retry.ts +0 -5
  586. package/src/providers/types.ts +11 -2
  587. package/src/providers/usage-tracking.ts +1 -9
  588. package/src/runtime/__tests__/agent-wake.test.ts +131 -26
  589. package/src/runtime/__tests__/background-job-runner.test.ts +1 -3
  590. package/src/runtime/agent-wake.ts +93 -18
  591. package/src/runtime/assistant-event-hub.ts +2 -2
  592. package/src/runtime/auth/__tests__/guard-tests.test.ts +75 -109
  593. package/src/runtime/auth/__tests__/route-policy.test.ts +153 -170
  594. package/src/runtime/auth/route-policy.ts +42 -1079
  595. package/src/runtime/background-job-runner.ts +1 -4
  596. package/src/runtime/btw-sidechain.ts +3 -1
  597. package/src/runtime/channel-approvals.ts +3 -14
  598. package/src/runtime/channel-invite-transport.ts +5 -6
  599. package/src/runtime/channel-readiness-service.ts +2 -5
  600. package/src/runtime/channel-retry-sweep.ts +12 -16
  601. package/src/runtime/conversation-stream-state.ts +294 -0
  602. package/src/runtime/http-router.ts +19 -22
  603. package/src/runtime/http-types.ts +12 -6
  604. package/src/runtime/invite-instruction-generator.ts +3 -3
  605. package/src/runtime/pending-interactions.ts +2 -2
  606. package/src/runtime/routes/__tests__/avatar-state-routes.test.ts +565 -0
  607. package/src/runtime/routes/__tests__/content-source-routes.test.ts +4 -4
  608. package/src/runtime/routes/__tests__/conversation-compaction-routes.test.ts +62 -32
  609. package/src/runtime/routes/__tests__/conversation-list-routes.test.ts +237 -0
  610. package/src/runtime/routes/__tests__/inference-provider-connection-routes.test.ts +13 -22
  611. package/src/runtime/routes/__tests__/memory-v2-simulate-route.test.ts +7 -2
  612. package/src/runtime/routes/__tests__/sanity-routes.test.ts +6 -6
  613. package/src/runtime/routes/__tests__/stt-routes.test.ts +3 -3
  614. package/src/runtime/routes/__tests__/suggest-trust-rule-routes.test.ts +5 -2
  615. package/src/runtime/routes/__tests__/tts-routes.test.ts +3 -3
  616. package/src/runtime/routes/acp-routes.test.ts +97 -75
  617. package/src/runtime/routes/acp-routes.ts +29 -6
  618. package/src/runtime/routes/app-management-routes.ts +97 -24
  619. package/src/runtime/routes/app-routes.ts +25 -5
  620. package/src/runtime/routes/approval-routes.ts +16 -4
  621. package/src/runtime/routes/attachment-routes.ts +25 -1
  622. package/src/runtime/routes/audio-routes.ts +1 -0
  623. package/src/runtime/routes/audit-routes.ts +5 -0
  624. package/src/runtime/routes/auth-routes.ts +5 -0
  625. package/src/runtime/routes/avatar-routes.ts +238 -59
  626. package/src/runtime/routes/background-tool-routes.ts +9 -0
  627. package/src/runtime/routes/background-wake-routes.ts +13 -3
  628. package/src/runtime/routes/backup-routes.ts +45 -0
  629. package/src/runtime/routes/bookmark-routes.ts +13 -0
  630. package/src/runtime/routes/brain-graph-routes.ts +9 -0
  631. package/src/runtime/routes/browser-routes.ts +5 -0
  632. package/src/runtime/routes/browser-tabs-routes.ts +5 -0
  633. package/src/runtime/routes/btw-routes.ts +5 -1
  634. package/src/runtime/routes/cache-routes.ts +13 -0
  635. package/src/runtime/routes/call-routes.ts +21 -10
  636. package/src/runtime/routes/channel-availability-routes.ts +5 -1
  637. package/src/runtime/routes/channel-readiness-routes.ts +37 -4
  638. package/src/runtime/routes/channel-route-definitions.ts +21 -0
  639. package/src/runtime/routes/channel-verification-routes.ts +21 -0
  640. package/src/runtime/routes/chatgpt-subscription-auth-routes.ts +9 -2
  641. package/src/runtime/routes/client-routes.ts +9 -0
  642. package/src/runtime/routes/consolidation-routes.ts +13 -5
  643. package/src/runtime/routes/contact-prompt-routes.ts +9 -0
  644. package/src/runtime/routes/contact-routes.ts +90 -23
  645. package/src/runtime/routes/content-source-routes.ts +5 -1
  646. package/src/runtime/routes/conversation-analysis-routes.ts +5 -1
  647. package/src/runtime/routes/conversation-attention-routes.ts +5 -0
  648. package/src/runtime/routes/conversation-cli-routes.ts +54 -7
  649. package/src/runtime/routes/conversation-compaction-routes.ts +54 -25
  650. package/src/runtime/routes/conversation-list-routes.ts +81 -12
  651. package/src/runtime/routes/conversation-management-routes.ts +57 -14
  652. package/src/runtime/routes/conversation-query-routes.ts +88 -41
  653. package/src/runtime/routes/conversation-routes.ts +74 -19
  654. package/src/runtime/routes/conversation-starter-routes.ts +22 -13
  655. package/src/runtime/routes/conversations-import-routes.ts +6 -1
  656. package/src/runtime/routes/credential-prompt-routes.ts +5 -0
  657. package/src/runtime/routes/credential-routes.ts +25 -6
  658. package/src/runtime/routes/debug-bash-routes.ts +5 -0
  659. package/src/runtime/routes/debug-routes.ts +11 -2
  660. package/src/runtime/routes/defer-routes.ts +13 -0
  661. package/src/runtime/routes/diagnostics-routes.ts +37 -46
  662. package/src/runtime/routes/disk-pressure-routes.ts +17 -31
  663. package/src/runtime/routes/document-comments-routes.ts +46 -27
  664. package/src/runtime/routes/documents-routes.ts +21 -10
  665. package/src/runtime/routes/domain-routes.ts +61 -28
  666. package/src/runtime/routes/email-routes.ts +33 -0
  667. package/src/runtime/routes/events-routes.ts +114 -9
  668. package/src/runtime/routes/filing-routes.ts +9 -4
  669. package/src/runtime/routes/gateway-log-routes.ts +5 -0
  670. package/src/runtime/routes/global-search-routes.ts +53 -50
  671. package/src/runtime/routes/group-routes.ts +21 -5
  672. package/src/runtime/routes/guardian-action-routes.ts +9 -0
  673. package/src/runtime/routes/guardian-approval-interception.ts +0 -31
  674. package/src/runtime/routes/heartbeat-routes.ts +25 -9
  675. package/src/runtime/routes/home-feed-routes.ts +23 -19
  676. package/src/runtime/routes/home-state-routes.ts +8 -40
  677. package/src/runtime/routes/host-app-control-routes.ts +5 -0
  678. package/src/runtime/routes/host-bash-routes.ts +5 -0
  679. package/src/runtime/routes/host-browser-routes.ts +13 -0
  680. package/src/runtime/routes/host-cu-routes.ts +5 -0
  681. package/src/runtime/routes/host-file-routes.ts +26 -6
  682. package/src/runtime/routes/host-transfer-routes.ts +13 -2
  683. package/src/runtime/routes/http-adapter.ts +1 -2
  684. package/src/runtime/routes/identity-intro-cache.ts +17 -6
  685. package/src/runtime/routes/identity-routes.ts +12 -2
  686. package/src/runtime/routes/image-generation-routes.ts +5 -0
  687. package/src/runtime/routes/inbound-message-handler.ts +15 -11
  688. package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +0 -12
  689. package/src/runtime/routes/inbound-stages/background-dispatch.ts +15 -19
  690. package/src/runtime/routes/inference-profile-session-routes.ts +13 -3
  691. package/src/runtime/routes/inference-provider-connection-routes.ts +21 -5
  692. package/src/runtime/routes/inference-send-routes.ts +11 -11
  693. package/src/runtime/routes/integrations/a2a.ts +30 -7
  694. package/src/runtime/routes/integrations/slack/channel.ts +19 -3
  695. package/src/runtime/routes/integrations/slack/share.ts +9 -2
  696. package/src/runtime/routes/integrations/telegram.ts +28 -9
  697. package/src/runtime/routes/integrations/twilio.ts +35 -7
  698. package/src/runtime/routes/integrations/vercel.ts +3 -3
  699. package/src/runtime/routes/internal-oauth-routes.ts +5 -0
  700. package/src/runtime/routes/internal-twilio-routes.ts +13 -0
  701. package/src/runtime/routes/llm-call-sites-routes.ts +39 -4
  702. package/src/runtime/routes/log-export-routes.ts +28 -10
  703. package/src/runtime/routes/mcp-auth-routes.ts +25 -0
  704. package/src/runtime/routes/memory-item-routes.ts +21 -10
  705. package/src/runtime/routes/memory-v2-routes.ts +90 -36
  706. package/src/runtime/routes/memory-v3-routes.ts +273 -407
  707. package/src/runtime/routes/migration-rollback-routes.ts +5 -1
  708. package/src/runtime/routes/migration-routes.ts +29 -0
  709. package/src/runtime/routes/notification-routes.ts +17 -1
  710. package/src/runtime/routes/oauth-apps.ts +33 -11
  711. package/src/runtime/routes/oauth-commands-routes.ts +37 -14
  712. package/src/runtime/routes/oauth-connect-routes.ts +9 -0
  713. package/src/runtime/routes/oauth-lifecycle-routes.ts +5 -1
  714. package/src/runtime/routes/oauth-providers.ts +35 -10
  715. package/src/runtime/routes/platform-routes.ts +21 -0
  716. package/src/runtime/routes/playground/__tests__/force-compact.test.ts +3 -2
  717. package/src/runtime/routes/playground/__tests__/inject-failures.test.ts +37 -16
  718. package/src/runtime/routes/playground/__tests__/reset-circuit.test.ts +7 -3
  719. package/src/runtime/routes/playground/__tests__/state.test.ts +10 -3
  720. package/src/runtime/routes/playground/force-compact.ts +1 -1
  721. package/src/runtime/routes/playground/helpers.ts +0 -1
  722. package/src/runtime/routes/playground/inject-failures.ts +13 -8
  723. package/src/runtime/routes/playground/reset-circuit.ts +14 -9
  724. package/src/runtime/routes/playground/seed-conversation.ts +1 -1
  725. package/src/runtime/routes/playground/seeded-conversations.ts +3 -3
  726. package/src/runtime/routes/playground/state.ts +4 -3
  727. package/src/runtime/routes/plugins-routes.ts +22 -19
  728. package/src/runtime/routes/profiler-routes.ts +17 -4
  729. package/src/runtime/routes/ps-routes.ts +5 -0
  730. package/src/runtime/routes/publish-routes.ts +13 -3
  731. package/src/runtime/routes/question-routes.ts +5 -0
  732. package/src/runtime/routes/recording-routes.ts +25 -12
  733. package/src/runtime/routes/rename-conversation-routes.ts +5 -0
  734. package/src/runtime/routes/sanity-routes.ts +9 -2
  735. package/src/runtime/routes/schedule-routes.ts +137 -47
  736. package/src/runtime/routes/secret-routes.ts +17 -4
  737. package/src/runtime/routes/sequence-routes.ts +33 -0
  738. package/src/runtime/routes/settings-routes.ts +65 -19
  739. package/src/runtime/routes/skills-routes.ts +133 -69
  740. package/src/runtime/routes/slack-channel-routes.ts +5 -0
  741. package/src/runtime/routes/stt-routes.ts +13 -6
  742. package/src/runtime/routes/subagents-routes.ts +24 -18
  743. package/src/runtime/routes/suggest-trust-rule-routes.ts +7 -2
  744. package/src/runtime/routes/surface-action-routes.ts +9 -0
  745. package/src/runtime/routes/surface-content-routes.ts +10 -2
  746. package/src/runtime/routes/task-routes.ts +37 -0
  747. package/src/runtime/routes/telemetry-routes.ts +9 -0
  748. package/src/runtime/routes/trace-event-routes.ts +42 -1
  749. package/src/runtime/routes/trust-rules-routes.ts +5 -0
  750. package/src/runtime/routes/tts-routes.ts +13 -6
  751. package/src/runtime/routes/types.ts +17 -8
  752. package/src/runtime/routes/ui-request-routes.ts +5 -0
  753. package/src/runtime/routes/upgrade-broadcast-routes.ts +5 -0
  754. package/src/runtime/routes/usage-routes.ts +71 -3
  755. package/src/runtime/routes/user-routes-cli.ts +9 -0
  756. package/src/runtime/routes/user-routes.ts +5 -1
  757. package/src/runtime/routes/wake-conversation-routes.ts +5 -0
  758. package/src/runtime/routes/watcher-routes.ts +21 -0
  759. package/src/runtime/routes/webhook-routes.ts +9 -0
  760. package/src/runtime/routes/wipe-conversation-routes.ts +5 -0
  761. package/src/runtime/routes/work-items-routes.ts +47 -19
  762. package/src/runtime/routes/workspace-commit-routes.ts +5 -0
  763. package/src/runtime/routes/workspace-routes.test.ts +42 -0
  764. package/src/runtime/routes/workspace-routes.ts +120 -9
  765. package/src/runtime/services/__tests__/analyze-conversation.test.ts +2 -4
  766. package/src/runtime/services/analyze-conversation.ts +3 -6
  767. package/src/runtime/services/conversation-serializer.ts +24 -2
  768. package/src/runtime/sync/resource-sync-events.ts +16 -2
  769. package/src/runtime/sync/sync-publisher.ts +2 -2
  770. package/src/schedule/run-script.ts +28 -3
  771. package/src/schedule/schedule-store.ts +8 -0
  772. package/src/schedule/scheduler.ts +3 -1
  773. package/src/signals/user-message.ts +5 -8
  774. package/src/skills/catalog-files.ts +4 -1
  775. package/src/skills/clawhub-files.ts +2 -0
  776. package/src/skills/skillssh-files.ts +2 -0
  777. package/src/subagent/manager.ts +3 -6
  778. package/src/telemetry/types.ts +26 -0
  779. package/src/telemetry/usage-telemetry-reporter.test.ts +138 -1
  780. package/src/telemetry/usage-telemetry-reporter.ts +31 -0
  781. package/src/tools/acp/spawn.test.ts +88 -38
  782. package/src/tools/apps/definitions.ts +8 -4
  783. package/src/tools/ask-question/ask-question-tool.test.ts +120 -105
  784. package/src/tools/ask-question/ask-question-tool.ts +85 -90
  785. package/src/tools/computer-use/definitions.ts +28 -24
  786. package/src/tools/credential-execution/make-authenticated-request.ts +56 -51
  787. package/src/tools/credential-execution/manage-secure-command-tool.ts +2 -2
  788. package/src/tools/credential-execution/run-authenticated-command.ts +82 -77
  789. package/src/tools/credentials/vault.ts +112 -111
  790. package/src/tools/execution-target.ts +1 -1
  791. package/src/tools/execution-timeout.ts +3 -4
  792. package/src/tools/filesystem/edit.ts +45 -42
  793. package/src/tools/filesystem/list.ts +33 -30
  794. package/src/tools/filesystem/read.ts +54 -35
  795. package/src/tools/filesystem/write.ts +34 -31
  796. package/src/tools/host-filesystem/edit.ts +44 -42
  797. package/src/tools/host-filesystem/read.ts +49 -35
  798. package/src/tools/host-filesystem/transfer.ts +121 -108
  799. package/src/tools/host-filesystem/write.ts +33 -31
  800. package/src/tools/host-terminal/host-shell.ts +50 -48
  801. package/src/tools/memory/register.ts +23 -24
  802. package/src/tools/network/web-fetch.ts +49 -46
  803. package/src/tools/network/web-search.ts +16 -13
  804. package/src/tools/registry.ts +39 -16
  805. package/src/tools/schedule/create.ts +11 -0
  806. package/src/tools/schedule/update.ts +16 -0
  807. package/src/tools/shared/filesystem/audio-read.ts +122 -0
  808. package/src/tools/shared/filesystem/image-read.ts +1 -1
  809. package/src/tools/skills/execute.ts +34 -31
  810. package/src/tools/skills/load.ts +29 -23
  811. package/src/tools/subagent/notify-parent.ts +35 -32
  812. package/src/tools/system/avatar-generator.ts +13 -22
  813. package/src/tools/system/request-permission.ts +30 -27
  814. package/src/tools/terminal/shell.ts +190 -61
  815. package/src/tools/tool-defaults.ts +20 -9
  816. package/src/tools/tool-manifest.ts +4 -4
  817. package/src/tools/types.ts +74 -23
  818. package/src/tools/ui-surface/definitions.ts +69 -9
  819. package/src/usage/types.ts +10 -0
  820. package/src/util/errors.ts +2 -2
  821. package/src/util/map-limit.ts +27 -0
  822. package/src/util/platform.ts +15 -12
  823. package/src/work-items/work-item-runner.ts +7 -2
  824. package/src/workspace/migrations/028-recover-conversations-from-disk-view.ts +7 -20
  825. package/src/workspace/migrations/092-backfill-v3-leaves.ts +169 -0
  826. package/src/workspace/migrations/093-backfill-leaf-ids.ts +144 -0
  827. package/src/workspace/migrations/094-seed-avatar-manifest.ts +155 -0
  828. package/src/workspace/migrations/__tests__/094-seed-avatar-manifest.test.ts +136 -0
  829. package/src/workspace/migrations/__tests__/backfill-leaf-ids.test.ts +175 -0
  830. package/src/workspace/migrations/__tests__/backfill-v3-leaves.test.ts +124 -0
  831. package/src/workspace/migrations/registry.ts +6 -0
  832. package/src/workspace/provider-commit-message-generator.ts +15 -17
  833. package/tsconfig.json +4 -1
  834. package/src/__tests__/history-repair-pipeline.test.ts +0 -396
  835. package/src/cli/commands/__tests__/memory-v3-render.test.ts +0 -340
  836. package/src/cli/commands/memory-v3-render.ts +0 -491
  837. package/src/daemon/message-types/disk-pressure.ts +0 -9
  838. package/src/email/feature-gate.ts +0 -23
  839. package/src/memory/v3/__tests__/coactivation-store.test.ts +0 -422
  840. package/src/memory/v3/__tests__/consolidation-job.test.ts +0 -466
  841. package/src/memory/v3/__tests__/coretrieval-seed.test.ts +0 -270
  842. package/src/memory/v3/__tests__/edge-learning-job.test.ts +0 -324
  843. package/src/memory/v3/__tests__/edges.test.ts +0 -706
  844. package/src/memory/v3/__tests__/filter.test.ts +0 -560
  845. package/src/memory/v3/__tests__/gate.test.ts +0 -637
  846. package/src/memory/v3/__tests__/index-composition.test.ts +0 -291
  847. package/src/memory/v3/__tests__/loop.test.ts +0 -775
  848. package/src/memory/v3/__tests__/retriever.test.ts +0 -226
  849. package/src/memory/v3/__tests__/scouts.test.ts +0 -489
  850. package/src/memory/v3/__tests__/shadow-diff.test.ts +0 -225
  851. package/src/memory/v3/__tests__/shadow-middleware.test.ts +0 -398
  852. package/src/memory/v3/__tests__/system-prompts.test.ts +0 -154
  853. package/src/memory/v3/__tests__/traversal.test.ts +0 -508
  854. package/src/memory/v3/__tests__/tree-index.test.ts +0 -280
  855. package/src/memory/v3/__tests__/tree-store.test.ts +0 -529
  856. package/src/memory/v3/__tests__/tree-walk.test.ts +0 -784
  857. package/src/memory/v3/__tests__/validate.test.ts +0 -277
  858. package/src/memory/v3/auto-edges.ts +0 -223
  859. package/src/memory/v3/coactivation-store.ts +0 -124
  860. package/src/memory/v3/consolidation-job.ts +0 -323
  861. package/src/memory/v3/coretrieval-seed.ts +0 -240
  862. package/src/memory/v3/edge-learning-job.ts +0 -160
  863. package/src/memory/v3/edges.ts +0 -286
  864. package/src/memory/v3/filter.ts +0 -286
  865. package/src/memory/v3/gate.ts +0 -349
  866. package/src/memory/v3/index-composition.ts +0 -126
  867. package/src/memory/v3/llm-capture.ts +0 -46
  868. package/src/memory/v3/loop.ts +0 -430
  869. package/src/memory/v3/maintenance.ts +0 -144
  870. package/src/memory/v3/prompt-context.ts +0 -33
  871. package/src/memory/v3/prompts/consolidation.ts +0 -458
  872. package/src/memory/v3/prompts/system-prompts.ts +0 -196
  873. package/src/memory/v3/retriever.ts +0 -33
  874. package/src/memory/v3/scouts.ts +0 -431
  875. package/src/memory/v3/shadow-diff.ts +0 -287
  876. package/src/memory/v3/shadow-middleware.ts +0 -347
  877. package/src/memory/v3/traversal.ts +0 -211
  878. package/src/memory/v3/tree-index.ts +0 -237
  879. package/src/memory/v3/tree-store.ts +0 -394
  880. package/src/memory/v3/tree-walk.ts +0 -356
  881. package/src/memory/v3/validate.ts +0 -323
  882. package/src/plugins/defaults/circuit-breaker.ts +0 -141
  883. package/src/plugins/defaults/compaction.ts +0 -141
  884. package/src/plugins/defaults/empty-response.ts +0 -124
  885. package/src/plugins/defaults/history-repair.ts +0 -83
  886. package/src/plugins/defaults/persistence.ts +0 -146
  887. package/src/plugins/defaults/title-generate.ts +0 -90
  888. package/src/plugins/defaults/token-estimate.ts +0 -101
  889. package/src/plugins/defaults/tool-error.ts +0 -119
  890. package/src/plugins/defaults/tool-result-truncate.ts +0 -84
  891. package/src/runtime/routes/__tests__/memory-v3-simulate-params.test.ts +0 -35
package/openapi.yaml CHANGED
@@ -1,9 +1,9 @@
1
1
  # Auto-generated by scripts/generate-openapi.ts — DO NOT EDIT
2
2
  # Regenerate: cd assistant && bun run generate:openapi
3
- openapi: 3.0.0
3
+ openapi: 3.1.0
4
4
  info:
5
5
  title: Vellum Assistant API
6
- version: 0.8.6
6
+ version: 0.8.7
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
@@ -1947,6 +1947,41 @@ paths:
1947
1947
  schema:
1948
1948
  type: string
1949
1949
  description: '"path" or "base64"'
1950
+ /v1/avatar/image:
1951
+ post:
1952
+ operationId: avatar_image_post
1953
+ summary: Upload avatar image
1954
+ description: Upload a base64-encoded image as the avatar; writes the PNG and clears character traits atomically.
1955
+ tags:
1956
+ - avatar
1957
+ responses:
1958
+ "200":
1959
+ description: Successful response
1960
+ content:
1961
+ application/json:
1962
+ schema:
1963
+ type: object
1964
+ properties:
1965
+ ok:
1966
+ type: boolean
1967
+ required:
1968
+ - ok
1969
+ additionalProperties: false
1970
+ requestBody:
1971
+ required: true
1972
+ content:
1973
+ application/json:
1974
+ schema:
1975
+ type: object
1976
+ properties:
1977
+ content:
1978
+ type: string
1979
+ encoding:
1980
+ type: string
1981
+ const: base64
1982
+ required:
1983
+ - content
1984
+ additionalProperties: false
1950
1985
  /v1/avatar/notify-updated:
1951
1986
  post:
1952
1987
  operationId: avatar_notifyupdated_post
@@ -2060,6 +2095,70 @@ paths:
2060
2095
  required:
2061
2096
  - imagePath
2062
2097
  additionalProperties: false
2098
+ /v1/avatar/state:
2099
+ get:
2100
+ operationId: avatar_state_get
2101
+ summary: Get avatar state
2102
+ description: Return the authoritative avatar render mode (character, image, or none).
2103
+ tags:
2104
+ - avatar
2105
+ responses:
2106
+ "200":
2107
+ description: Successful response
2108
+ content:
2109
+ application/json:
2110
+ schema:
2111
+ type: object
2112
+ properties:
2113
+ kind:
2114
+ type: string
2115
+ enum:
2116
+ - character
2117
+ - image
2118
+ - none
2119
+ traits:
2120
+ anyOf:
2121
+ - type: object
2122
+ properties:
2123
+ bodyShape:
2124
+ type: string
2125
+ eyeStyle:
2126
+ type: string
2127
+ color:
2128
+ type: string
2129
+ required:
2130
+ - bodyShape
2131
+ - eyeStyle
2132
+ - color
2133
+ additionalProperties: false
2134
+ - type: "null"
2135
+ source:
2136
+ anyOf:
2137
+ - type: string
2138
+ enum:
2139
+ - builder
2140
+ - upload
2141
+ - ai
2142
+ - type: "null"
2143
+ image:
2144
+ anyOf:
2145
+ - type: object
2146
+ properties:
2147
+ updatedAt:
2148
+ type: string
2149
+ etag:
2150
+ type: string
2151
+ required:
2152
+ - updatedAt
2153
+ - etag
2154
+ additionalProperties: false
2155
+ - type: "null"
2156
+ required:
2157
+ - kind
2158
+ - traits
2159
+ - source
2160
+ - image
2161
+ additionalProperties: false
2063
2162
  /v1/background-tools:
2064
2163
  get:
2065
2164
  operationId: backgroundtools_get
@@ -3790,7 +3889,69 @@ paths:
3790
3889
  type: boolean
3791
3890
  snapshots:
3792
3891
  type: array
3793
- items: {}
3892
+ items:
3893
+ type: object
3894
+ properties:
3895
+ channel:
3896
+ type: string
3897
+ ready:
3898
+ type: boolean
3899
+ setupStatus:
3900
+ anyOf:
3901
+ - type: string
3902
+ - type: "null"
3903
+ checkedAt:
3904
+ anyOf:
3905
+ - type: number
3906
+ - type: "null"
3907
+ stale:
3908
+ type: boolean
3909
+ reasons:
3910
+ type: array
3911
+ items:
3912
+ type: string
3913
+ localChecks:
3914
+ type: array
3915
+ items:
3916
+ type: object
3917
+ properties:
3918
+ name:
3919
+ type: string
3920
+ passed:
3921
+ type: boolean
3922
+ message:
3923
+ anyOf:
3924
+ - type: string
3925
+ - type: "null"
3926
+ required:
3927
+ - name
3928
+ - passed
3929
+ additionalProperties: false
3930
+ remoteChecks:
3931
+ type: array
3932
+ items:
3933
+ type: object
3934
+ properties:
3935
+ name:
3936
+ type: string
3937
+ passed:
3938
+ type: boolean
3939
+ message:
3940
+ anyOf:
3941
+ - type: string
3942
+ - type: "null"
3943
+ required:
3944
+ - name
3945
+ - passed
3946
+ additionalProperties: false
3947
+ channelHandle:
3948
+ anyOf:
3949
+ - type: string
3950
+ - type: "null"
3951
+ required:
3952
+ - channel
3953
+ - ready
3954
+ additionalProperties: false
3794
3955
  description: Channel readiness snapshots
3795
3956
  required:
3796
3957
  - success
@@ -3828,7 +3989,69 @@ paths:
3828
3989
  type: boolean
3829
3990
  snapshots:
3830
3991
  type: array
3831
- items: {}
3992
+ items:
3993
+ type: object
3994
+ properties:
3995
+ channel:
3996
+ type: string
3997
+ ready:
3998
+ type: boolean
3999
+ setupStatus:
4000
+ anyOf:
4001
+ - type: string
4002
+ - type: "null"
4003
+ checkedAt:
4004
+ anyOf:
4005
+ - type: number
4006
+ - type: "null"
4007
+ stale:
4008
+ type: boolean
4009
+ reasons:
4010
+ type: array
4011
+ items:
4012
+ type: string
4013
+ localChecks:
4014
+ type: array
4015
+ items:
4016
+ type: object
4017
+ properties:
4018
+ name:
4019
+ type: string
4020
+ passed:
4021
+ type: boolean
4022
+ message:
4023
+ anyOf:
4024
+ - type: string
4025
+ - type: "null"
4026
+ required:
4027
+ - name
4028
+ - passed
4029
+ additionalProperties: false
4030
+ remoteChecks:
4031
+ type: array
4032
+ items:
4033
+ type: object
4034
+ properties:
4035
+ name:
4036
+ type: string
4037
+ passed:
4038
+ type: boolean
4039
+ message:
4040
+ anyOf:
4041
+ - type: string
4042
+ - type: "null"
4043
+ required:
4044
+ - name
4045
+ - passed
4046
+ additionalProperties: false
4047
+ channelHandle:
4048
+ anyOf:
4049
+ - type: string
4050
+ - type: "null"
4051
+ required:
4052
+ - channel
4053
+ - ready
4054
+ additionalProperties: false
3832
4055
  description: Refreshed readiness snapshots
3833
4056
  required:
3834
4057
  - success
@@ -4002,6 +4225,49 @@ paths:
4002
4225
  responses:
4003
4226
  "200":
4004
4227
  description: Successful response
4228
+ content:
4229
+ application/json:
4230
+ schema:
4231
+ type: object
4232
+ properties:
4233
+ domains:
4234
+ type: array
4235
+ items:
4236
+ type: object
4237
+ properties:
4238
+ id:
4239
+ type: string
4240
+ displayName:
4241
+ type: string
4242
+ required:
4243
+ - id
4244
+ - displayName
4245
+ additionalProperties: false
4246
+ callSites:
4247
+ type: array
4248
+ items:
4249
+ type: object
4250
+ properties:
4251
+ id:
4252
+ type: string
4253
+ displayName:
4254
+ type: string
4255
+ description:
4256
+ type: string
4257
+ domain:
4258
+ type: string
4259
+ defaultProfile:
4260
+ type: string
4261
+ required:
4262
+ - id
4263
+ - displayName
4264
+ - description
4265
+ - domain
4266
+ additionalProperties: false
4267
+ required:
4268
+ - domains
4269
+ - callSites
4270
+ additionalProperties: false
4005
4271
  /v1/config/llm/profiles:
4006
4272
  get:
4007
4273
  operationId: config_llm_profiles_get
@@ -4015,6 +4281,23 @@ paths:
4015
4281
  responses:
4016
4282
  "200":
4017
4283
  description: Successful response
4284
+ content:
4285
+ application/json:
4286
+ schema:
4287
+ type: object
4288
+ properties:
4289
+ profiles:
4290
+ type: array
4291
+ items:
4292
+ type: string
4293
+ activeProfile:
4294
+ anyOf:
4295
+ - type: string
4296
+ - type: "null"
4297
+ required:
4298
+ - profiles
4299
+ - activeProfile
4300
+ additionalProperties: false
4018
4301
  /v1/config/llm/profiles/{name}:
4019
4302
  put:
4020
4303
  operationId: config_llm_profiles_by_name_put
@@ -4326,63 +4609,245 @@ paths:
4326
4609
  ok:
4327
4610
  type: boolean
4328
4611
  contact:
4329
- type: object
4330
- properties: {}
4331
- additionalProperties: {}
4332
4612
  description: Updated contact (if applicable)
4333
- required:
4334
- - ok
4335
- - contact
4336
- additionalProperties: false
4337
- parameters:
4338
- - name: contactChannelId
4339
- in: path
4340
- required: true
4341
- schema:
4342
- type: string
4343
- requestBody:
4344
- required: true
4345
- content:
4346
- application/json:
4347
- schema:
4348
- type: object
4349
- properties:
4350
- status:
4351
- type: string
4352
- description: Channel status
4353
- policy:
4354
- type: string
4355
- description: Channel policy
4356
- reason:
4357
- type: string
4358
- description: Reason for the change
4359
- required:
4360
- - status
4361
- - policy
4362
- - reason
4363
- additionalProperties: false
4364
- /v1/contacts:
4365
- get:
4366
- operationId: contacts_get
4367
- summary: List contacts
4368
- description: Return all contacts, optionally filtered by type or channel status.
4369
- tags:
4370
- - contacts
4371
- responses:
4372
- "200":
4373
- description: Successful response
4374
- content:
4375
- application/json:
4376
- schema:
4377
- type: object
4378
- properties:
4379
- ok:
4380
- type: boolean
4381
- contacts:
4382
- type: array
4383
- items: {}
4384
- description: Contact objects with channels and metadata
4385
- required:
4613
+ type: object
4614
+ properties:
4615
+ id:
4616
+ type: string
4617
+ displayName:
4618
+ type: string
4619
+ role:
4620
+ type: string
4621
+ notes:
4622
+ anyOf:
4623
+ - type: string
4624
+ - type: "null"
4625
+ contactType:
4626
+ anyOf:
4627
+ - type: string
4628
+ - type: "null"
4629
+ lastInteraction:
4630
+ anyOf:
4631
+ - type: number
4632
+ - type: "null"
4633
+ interactionCount:
4634
+ type: number
4635
+ channels:
4636
+ type: array
4637
+ items:
4638
+ type: object
4639
+ properties:
4640
+ id:
4641
+ type: string
4642
+ contactId:
4643
+ type: string
4644
+ type:
4645
+ type: string
4646
+ address:
4647
+ type: string
4648
+ isPrimary:
4649
+ type: boolean
4650
+ externalUserId:
4651
+ anyOf:
4652
+ - type: string
4653
+ - type: "null"
4654
+ status:
4655
+ type: string
4656
+ policy:
4657
+ type: string
4658
+ verifiedAt:
4659
+ anyOf:
4660
+ - type: number
4661
+ - type: "null"
4662
+ verifiedVia:
4663
+ anyOf:
4664
+ - type: string
4665
+ - type: "null"
4666
+ lastSeenAt:
4667
+ anyOf:
4668
+ - type: number
4669
+ - type: "null"
4670
+ interactionCount:
4671
+ type: number
4672
+ lastInteraction:
4673
+ anyOf:
4674
+ - type: number
4675
+ - type: "null"
4676
+ revokedReason:
4677
+ anyOf:
4678
+ - type: string
4679
+ - type: "null"
4680
+ blockedReason:
4681
+ anyOf:
4682
+ - type: string
4683
+ - type: "null"
4684
+ required:
4685
+ - id
4686
+ - contactId
4687
+ - type
4688
+ - address
4689
+ - isPrimary
4690
+ - externalUserId
4691
+ - status
4692
+ - policy
4693
+ - verifiedAt
4694
+ - verifiedVia
4695
+ - lastSeenAt
4696
+ - interactionCount
4697
+ - lastInteraction
4698
+ - revokedReason
4699
+ - blockedReason
4700
+ additionalProperties: false
4701
+ required:
4702
+ - id
4703
+ - displayName
4704
+ - role
4705
+ - interactionCount
4706
+ - channels
4707
+ additionalProperties: false
4708
+ required:
4709
+ - ok
4710
+ additionalProperties: false
4711
+ parameters:
4712
+ - name: contactChannelId
4713
+ in: path
4714
+ required: true
4715
+ schema:
4716
+ type: string
4717
+ requestBody:
4718
+ required: true
4719
+ content:
4720
+ application/json:
4721
+ schema:
4722
+ type: object
4723
+ properties:
4724
+ status:
4725
+ description: Channel status
4726
+ type: string
4727
+ policy:
4728
+ description: Channel policy
4729
+ type: string
4730
+ reason:
4731
+ description: Reason for the change
4732
+ type: string
4733
+ additionalProperties: false
4734
+ /v1/contacts:
4735
+ get:
4736
+ operationId: contacts_get
4737
+ summary: List contacts
4738
+ description: Return all contacts, optionally filtered by type or channel status.
4739
+ tags:
4740
+ - contacts
4741
+ responses:
4742
+ "200":
4743
+ description: Successful response
4744
+ content:
4745
+ application/json:
4746
+ schema:
4747
+ type: object
4748
+ properties:
4749
+ ok:
4750
+ type: boolean
4751
+ contacts:
4752
+ type: array
4753
+ items:
4754
+ type: object
4755
+ properties:
4756
+ id:
4757
+ type: string
4758
+ displayName:
4759
+ type: string
4760
+ role:
4761
+ type: string
4762
+ notes:
4763
+ anyOf:
4764
+ - type: string
4765
+ - type: "null"
4766
+ contactType:
4767
+ anyOf:
4768
+ - type: string
4769
+ - type: "null"
4770
+ lastInteraction:
4771
+ anyOf:
4772
+ - type: number
4773
+ - type: "null"
4774
+ interactionCount:
4775
+ type: number
4776
+ channels:
4777
+ type: array
4778
+ items:
4779
+ type: object
4780
+ properties:
4781
+ id:
4782
+ type: string
4783
+ contactId:
4784
+ type: string
4785
+ type:
4786
+ type: string
4787
+ address:
4788
+ type: string
4789
+ isPrimary:
4790
+ type: boolean
4791
+ externalUserId:
4792
+ anyOf:
4793
+ - type: string
4794
+ - type: "null"
4795
+ status:
4796
+ type: string
4797
+ policy:
4798
+ type: string
4799
+ verifiedAt:
4800
+ anyOf:
4801
+ - type: number
4802
+ - type: "null"
4803
+ verifiedVia:
4804
+ anyOf:
4805
+ - type: string
4806
+ - type: "null"
4807
+ lastSeenAt:
4808
+ anyOf:
4809
+ - type: number
4810
+ - type: "null"
4811
+ interactionCount:
4812
+ type: number
4813
+ lastInteraction:
4814
+ anyOf:
4815
+ - type: number
4816
+ - type: "null"
4817
+ revokedReason:
4818
+ anyOf:
4819
+ - type: string
4820
+ - type: "null"
4821
+ blockedReason:
4822
+ anyOf:
4823
+ - type: string
4824
+ - type: "null"
4825
+ required:
4826
+ - id
4827
+ - contactId
4828
+ - type
4829
+ - address
4830
+ - isPrimary
4831
+ - externalUserId
4832
+ - status
4833
+ - policy
4834
+ - verifiedAt
4835
+ - verifiedVia
4836
+ - lastSeenAt
4837
+ - interactionCount
4838
+ - lastInteraction
4839
+ - revokedReason
4840
+ - blockedReason
4841
+ additionalProperties: false
4842
+ required:
4843
+ - id
4844
+ - displayName
4845
+ - role
4846
+ - interactionCount
4847
+ - channels
4848
+ additionalProperties: false
4849
+ description: Contact objects with channels and metadata
4850
+ required:
4386
4851
  - ok
4387
4852
  - contacts
4388
4853
  additionalProperties: false
@@ -4442,18 +4907,122 @@ paths:
4442
4907
  type: boolean
4443
4908
  contact:
4444
4909
  type: object
4445
- properties: {}
4446
- additionalProperties: {}
4447
- description: Contact details
4910
+ properties:
4911
+ id:
4912
+ type: string
4913
+ displayName:
4914
+ type: string
4915
+ role:
4916
+ type: string
4917
+ notes:
4918
+ anyOf:
4919
+ - type: string
4920
+ - type: "null"
4921
+ contactType:
4922
+ anyOf:
4923
+ - type: string
4924
+ - type: "null"
4925
+ lastInteraction:
4926
+ anyOf:
4927
+ - type: number
4928
+ - type: "null"
4929
+ interactionCount:
4930
+ type: number
4931
+ channels:
4932
+ type: array
4933
+ items:
4934
+ type: object
4935
+ properties:
4936
+ id:
4937
+ type: string
4938
+ contactId:
4939
+ type: string
4940
+ type:
4941
+ type: string
4942
+ address:
4943
+ type: string
4944
+ isPrimary:
4945
+ type: boolean
4946
+ externalUserId:
4947
+ anyOf:
4948
+ - type: string
4949
+ - type: "null"
4950
+ status:
4951
+ type: string
4952
+ policy:
4953
+ type: string
4954
+ verifiedAt:
4955
+ anyOf:
4956
+ - type: number
4957
+ - type: "null"
4958
+ verifiedVia:
4959
+ anyOf:
4960
+ - type: string
4961
+ - type: "null"
4962
+ lastSeenAt:
4963
+ anyOf:
4964
+ - type: number
4965
+ - type: "null"
4966
+ interactionCount:
4967
+ type: number
4968
+ lastInteraction:
4969
+ anyOf:
4970
+ - type: number
4971
+ - type: "null"
4972
+ revokedReason:
4973
+ anyOf:
4974
+ - type: string
4975
+ - type: "null"
4976
+ blockedReason:
4977
+ anyOf:
4978
+ - type: string
4979
+ - type: "null"
4980
+ required:
4981
+ - id
4982
+ - contactId
4983
+ - type
4984
+ - address
4985
+ - isPrimary
4986
+ - externalUserId
4987
+ - status
4988
+ - policy
4989
+ - verifiedAt
4990
+ - verifiedVia
4991
+ - lastSeenAt
4992
+ - interactionCount
4993
+ - lastInteraction
4994
+ - revokedReason
4995
+ - blockedReason
4996
+ additionalProperties: false
4997
+ required:
4998
+ - id
4999
+ - displayName
5000
+ - role
5001
+ - interactionCount
5002
+ - channels
5003
+ additionalProperties: false
4448
5004
  assistantMetadata:
4449
- type: object
4450
- properties: {}
4451
- additionalProperties: {}
4452
5005
  description: Assistant-side metadata
5006
+ type: object
5007
+ properties:
5008
+ contactId:
5009
+ type: string
5010
+ species:
5011
+ type: string
5012
+ metadata:
5013
+ anyOf:
5014
+ - type: object
5015
+ properties: {}
5016
+ additionalProperties: {}
5017
+ - type: "null"
5018
+ required:
5019
+ - contactId
5020
+ - species
5021
+ - metadata
5022
+ additionalProperties: false
4453
5023
  required:
4454
5024
  - ok
4455
5025
  - contact
4456
- - assistantMetadata
4457
5026
  additionalProperties: false
4458
5027
  parameters:
4459
5028
  - name: id
@@ -4705,45 +5274,137 @@ paths:
4705
5274
  type: boolean
4706
5275
  contact:
4707
5276
  type: object
4708
- properties: {}
4709
- additionalProperties: {}
4710
- description: Merged contact
4711
- required:
4712
- - ok
4713
- - contact
4714
- additionalProperties: false
4715
- requestBody:
4716
- required: true
4717
- content:
4718
- application/json:
4719
- schema:
4720
- type: object
4721
- properties:
4722
- keepId:
4723
- type: string
4724
- description: ID of the contact to keep
4725
- mergeId:
4726
- type: string
4727
- description: ID of the contact to merge into the kept one
4728
- required:
4729
- - keepId
4730
- - mergeId
4731
- additionalProperties: false
4732
- /v1/contacts/prompt:
4733
- post:
4734
- operationId: contacts_prompt_post
4735
- summary: Prompt user to register a contact channel
4736
- description:
4737
- Broadcasts a contact_request to connected clients, waits for the user to submit an address via the gateway.
4738
- The gateway owns the contact write and notifies the daemon via resolve_contact_prompt IPC.
4739
- tags:
4740
- - contacts
4741
- responses:
4742
- "200":
4743
- description: Successful response
4744
- content:
4745
- application/json:
4746
- schema:
5277
+ properties:
5278
+ id:
5279
+ type: string
5280
+ displayName:
5281
+ type: string
5282
+ role:
5283
+ type: string
5284
+ notes:
5285
+ anyOf:
5286
+ - type: string
5287
+ - type: "null"
5288
+ contactType:
5289
+ anyOf:
5290
+ - type: string
5291
+ - type: "null"
5292
+ lastInteraction:
5293
+ anyOf:
5294
+ - type: number
5295
+ - type: "null"
5296
+ interactionCount:
5297
+ type: number
5298
+ channels:
5299
+ type: array
5300
+ items:
5301
+ type: object
5302
+ properties:
5303
+ id:
5304
+ type: string
5305
+ contactId:
5306
+ type: string
5307
+ type:
5308
+ type: string
5309
+ address:
5310
+ type: string
5311
+ isPrimary:
5312
+ type: boolean
5313
+ externalUserId:
5314
+ anyOf:
5315
+ - type: string
5316
+ - type: "null"
5317
+ status:
5318
+ type: string
5319
+ policy:
5320
+ type: string
5321
+ verifiedAt:
5322
+ anyOf:
5323
+ - type: number
5324
+ - type: "null"
5325
+ verifiedVia:
5326
+ anyOf:
5327
+ - type: string
5328
+ - type: "null"
5329
+ lastSeenAt:
5330
+ anyOf:
5331
+ - type: number
5332
+ - type: "null"
5333
+ interactionCount:
5334
+ type: number
5335
+ lastInteraction:
5336
+ anyOf:
5337
+ - type: number
5338
+ - type: "null"
5339
+ revokedReason:
5340
+ anyOf:
5341
+ - type: string
5342
+ - type: "null"
5343
+ blockedReason:
5344
+ anyOf:
5345
+ - type: string
5346
+ - type: "null"
5347
+ required:
5348
+ - id
5349
+ - contactId
5350
+ - type
5351
+ - address
5352
+ - isPrimary
5353
+ - externalUserId
5354
+ - status
5355
+ - policy
5356
+ - verifiedAt
5357
+ - verifiedVia
5358
+ - lastSeenAt
5359
+ - interactionCount
5360
+ - lastInteraction
5361
+ - revokedReason
5362
+ - blockedReason
5363
+ additionalProperties: false
5364
+ required:
5365
+ - id
5366
+ - displayName
5367
+ - role
5368
+ - interactionCount
5369
+ - channels
5370
+ additionalProperties: false
5371
+ description: Merged contact
5372
+ required:
5373
+ - ok
5374
+ - contact
5375
+ additionalProperties: false
5376
+ requestBody:
5377
+ required: true
5378
+ content:
5379
+ application/json:
5380
+ schema:
5381
+ type: object
5382
+ properties:
5383
+ keepId:
5384
+ type: string
5385
+ description: ID of the contact to keep
5386
+ mergeId:
5387
+ type: string
5388
+ description: ID of the contact to merge into the kept one
5389
+ required:
5390
+ - keepId
5391
+ - mergeId
5392
+ additionalProperties: false
5393
+ /v1/contacts/prompt:
5394
+ post:
5395
+ operationId: contacts_prompt_post
5396
+ summary: Prompt user to register a contact channel
5397
+ description:
5398
+ Broadcasts a contact_request to connected clients, waits for the user to submit an address via the gateway.
5399
+ The gateway owns the contact write and notifies the daemon via resolve_contact_prompt IPC.
5400
+ tags:
5401
+ - contacts
5402
+ responses:
5403
+ "200":
5404
+ description: Successful response
5405
+ content:
5406
+ application/json:
5407
+ schema:
4747
5408
  type: object
4748
5409
  properties:
4749
5410
  ok:
@@ -4805,8 +5466,100 @@ paths:
4805
5466
  type: array
4806
5467
  items:
4807
5468
  type: object
4808
- properties: {}
4809
- additionalProperties: {}
5469
+ properties:
5470
+ id:
5471
+ type: string
5472
+ displayName:
5473
+ type: string
5474
+ role:
5475
+ type: string
5476
+ notes:
5477
+ anyOf:
5478
+ - type: string
5479
+ - type: "null"
5480
+ contactType:
5481
+ anyOf:
5482
+ - type: string
5483
+ - type: "null"
5484
+ lastInteraction:
5485
+ anyOf:
5486
+ - type: number
5487
+ - type: "null"
5488
+ interactionCount:
5489
+ type: number
5490
+ channels:
5491
+ type: array
5492
+ items:
5493
+ type: object
5494
+ properties:
5495
+ id:
5496
+ type: string
5497
+ contactId:
5498
+ type: string
5499
+ type:
5500
+ type: string
5501
+ address:
5502
+ type: string
5503
+ isPrimary:
5504
+ type: boolean
5505
+ externalUserId:
5506
+ anyOf:
5507
+ - type: string
5508
+ - type: "null"
5509
+ status:
5510
+ type: string
5511
+ policy:
5512
+ type: string
5513
+ verifiedAt:
5514
+ anyOf:
5515
+ - type: number
5516
+ - type: "null"
5517
+ verifiedVia:
5518
+ anyOf:
5519
+ - type: string
5520
+ - type: "null"
5521
+ lastSeenAt:
5522
+ anyOf:
5523
+ - type: number
5524
+ - type: "null"
5525
+ interactionCount:
5526
+ type: number
5527
+ lastInteraction:
5528
+ anyOf:
5529
+ - type: number
5530
+ - type: "null"
5531
+ revokedReason:
5532
+ anyOf:
5533
+ - type: string
5534
+ - type: "null"
5535
+ blockedReason:
5536
+ anyOf:
5537
+ - type: string
5538
+ - type: "null"
5539
+ required:
5540
+ - id
5541
+ - contactId
5542
+ - type
5543
+ - address
5544
+ - isPrimary
5545
+ - externalUserId
5546
+ - status
5547
+ - policy
5548
+ - verifiedAt
5549
+ - verifiedVia
5550
+ - lastSeenAt
5551
+ - interactionCount
5552
+ - lastInteraction
5553
+ - revokedReason
5554
+ - blockedReason
5555
+ additionalProperties: false
5556
+ required:
5557
+ - id
5558
+ - displayName
5559
+ - role
5560
+ - interactionCount
5561
+ - channels
5562
+ additionalProperties: false
4810
5563
  requestBody:
4811
5564
  required: true
4812
5565
  content:
@@ -4861,7 +5614,30 @@ paths:
4861
5614
  properties:
4862
5615
  starters:
4863
5616
  type: array
4864
- items: {}
5617
+ items:
5618
+ type: object
5619
+ properties:
5620
+ id:
5621
+ type: string
5622
+ label:
5623
+ type: string
5624
+ prompt:
5625
+ type: string
5626
+ category:
5627
+ anyOf:
5628
+ - type: string
5629
+ - type: "null"
5630
+ batch:
5631
+ type: integer
5632
+ minimum: -9007199254740991
5633
+ maximum: 9007199254740991
5634
+ required:
5635
+ - id
5636
+ - label
5637
+ - prompt
5638
+ - category
5639
+ - batch
5640
+ additionalProperties: false
4865
5641
  description: Ordered list of starter chips
4866
5642
  total:
4867
5643
  type: integer
@@ -5118,6 +5894,8 @@ paths:
5118
5894
  type: number
5119
5895
  inferenceProfile:
5120
5896
  type: string
5897
+ isProcessing:
5898
+ type: boolean
5121
5899
  required:
5122
5900
  - id
5123
5901
  - title
@@ -5127,6 +5905,7 @@ paths:
5127
5905
  - conversationType
5128
5906
  - source
5129
5907
  - groupId
5908
+ - isProcessing
5130
5909
  additionalProperties: false
5131
5910
  nextOffset:
5132
5911
  type: number
@@ -5176,7 +5955,22 @@ paths:
5176
5955
  type: string
5177
5956
  enum:
5178
5957
  - background
5179
- description: Filter by conversation type. Pass "background" to list only background/scheduled conversations.
5958
+ - scheduled
5959
+ description:
5960
+ Filter by conversation type. Pass "background" to list background and scheduled conversations together (the
5961
+ back-compat umbrella), or "scheduled" to list only scheduled conversations.
5962
+ - name: archiveStatus
5963
+ in: query
5964
+ required: false
5965
+ schema:
5966
+ type: string
5967
+ enum:
5968
+ - active
5969
+ - archived
5970
+ - all
5971
+ description:
5972
+ Filter by archive state. Defaults to "active" (non-archived rows only). Pass "archived" to list only
5973
+ archived rows (for the Archive page) or "all" to include both.
5180
5974
  post:
5181
5975
  operationId: conversations_post
5182
5976
  summary: Create a conversation
@@ -5461,6 +6255,8 @@ paths:
5461
6255
  type: number
5462
6256
  inferenceProfile:
5463
6257
  type: string
6258
+ isProcessing:
6259
+ type: boolean
5464
6260
  required:
5465
6261
  - id
5466
6262
  - title
@@ -5470,6 +6266,7 @@ paths:
5470
6266
  - conversationType
5471
6267
  - source
5472
6268
  - groupId
6269
+ - isProcessing
5473
6270
  additionalProperties: false
5474
6271
  required:
5475
6272
  - conversation
@@ -5656,6 +6453,8 @@ paths:
5656
6453
  type: number
5657
6454
  inferenceProfile:
5658
6455
  type: string
6456
+ isProcessing:
6457
+ type: boolean
5659
6458
  required:
5660
6459
  - id
5661
6460
  - title
@@ -5665,6 +6464,7 @@ paths:
5665
6464
  - conversationType
5666
6465
  - source
5667
6466
  - groupId
6467
+ - isProcessing
5668
6468
  additionalProperties: false
5669
6469
  required:
5670
6470
  - conversation
@@ -5741,10 +6541,11 @@ paths:
5741
6541
  operationId: conversations_by_id_compaction_get
5742
6542
  summary: Get the compaction trail leading up to an LLM call
5743
6543
  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.
6544
+ Return the chronological list of compaction events that ran in the same agent turn as the call identified
6545
+ by `callId`. Turn bounds are walked from the `messages` table (real user messages — tool-result user messages
6546
+ are not boundaries). Projected from `llm_request_logs` rows where `call_site = "compactionAgent"`. When the
6547
+ conversation has no other messages around the selected call, every compaction strictly before the call's
6548
+ `createdAt` is in scope. Drives the Inspector's Compaction tab.
5748
6549
  tags:
5749
6550
  - conversations
5750
6551
  responses:
@@ -6220,8 +7021,8 @@ paths:
6220
7021
  operationId: conversations_cli_clear_post
6221
7022
  summary: Clear all conversations (CLI)
6222
7023
  description:
6223
- Tear down all active conversations and clear the database. The confirmation prompt is handled client-side
6224
- by the CLI.
7024
+ "Tear down all active conversations and clear the database. Requires X-Confirm-Destructive:
7025
+ clear-all-conversations."
6225
7026
  tags:
6226
7027
  - conversations
6227
7028
  responses:
@@ -6363,10 +7164,13 @@ paths:
6363
7164
  - type: "null"
6364
7165
  updatedAt:
6365
7166
  type: number
7167
+ isProcessing:
7168
+ type: boolean
6366
7169
  required:
6367
7170
  - id
6368
7171
  - title
6369
7172
  - updatedAt
7173
+ - isProcessing
6370
7174
  additionalProperties: false
6371
7175
  required:
6372
7176
  - conversations
@@ -6612,6 +7416,8 @@ paths:
6612
7416
  type: number
6613
7417
  inferenceProfile:
6614
7418
  type: string
7419
+ isProcessing:
7420
+ type: boolean
6615
7421
  required:
6616
7422
  - id
6617
7423
  - title
@@ -6621,6 +7427,7 @@ paths:
6621
7427
  - conversationType
6622
7428
  - source
6623
7429
  - groupId
7430
+ - isProcessing
6624
7431
  additionalProperties: false
6625
7432
  required:
6626
7433
  - conversation
@@ -6953,6 +7760,10 @@ paths:
6953
7760
  schema:
6954
7761
  type: object
6955
7762
  properties:
7763
+ messageId:
7764
+ anyOf:
7765
+ - type: string
7766
+ - type: "null"
6956
7767
  conversationKey:
6957
7768
  anyOf:
6958
7769
  - type: string
@@ -6963,34 +7774,419 @@ paths:
6963
7774
  - type: "null"
6964
7775
  conversationKind:
6965
7776
  type: string
6966
- enum:
6967
- - user
6968
- - background
6969
- - background_memory_consolidation
6970
- - scheduled
6971
7777
  conversationTotalEstimatedCostUsd:
6972
7778
  anyOf:
6973
7779
  - type: number
6974
7780
  - type: "null"
6975
7781
  logs:
6976
7782
  type: array
6977
- items: {}
7783
+ items:
7784
+ type: object
7785
+ properties:
7786
+ id:
7787
+ type: string
7788
+ createdAt:
7789
+ type: number
7790
+ requestPayload:
7791
+ type: "null"
7792
+ responsePayload:
7793
+ type: "null"
7794
+ provider:
7795
+ anyOf:
7796
+ - type: string
7797
+ - type: "null"
7798
+ summary:
7799
+ anyOf:
7800
+ - type: object
7801
+ properties:
7802
+ provider:
7803
+ anyOf:
7804
+ - type: string
7805
+ - type: "null"
7806
+ model:
7807
+ anyOf:
7808
+ - type: string
7809
+ - type: "null"
7810
+ status:
7811
+ anyOf:
7812
+ - type: string
7813
+ - type: "null"
7814
+ inputTokens:
7815
+ anyOf:
7816
+ - type: number
7817
+ - type: "null"
7818
+ outputTokens:
7819
+ anyOf:
7820
+ - type: number
7821
+ - type: "null"
7822
+ cacheCreationInputTokens:
7823
+ anyOf:
7824
+ - type: number
7825
+ - type: "null"
7826
+ cacheReadInputTokens:
7827
+ anyOf:
7828
+ - type: number
7829
+ - type: "null"
7830
+ stopReason:
7831
+ anyOf:
7832
+ - type: string
7833
+ - type: "null"
7834
+ requestMessageCount:
7835
+ anyOf:
7836
+ - type: number
7837
+ - type: "null"
7838
+ requestToolCount:
7839
+ anyOf:
7840
+ - type: number
7841
+ - type: "null"
7842
+ responseMessageCount:
7843
+ anyOf:
7844
+ - type: number
7845
+ - type: "null"
7846
+ responseToolCallCount:
7847
+ anyOf:
7848
+ - type: number
7849
+ - type: "null"
7850
+ responsePreview:
7851
+ anyOf:
7852
+ - type: string
7853
+ - type: "null"
7854
+ toolCallNames:
7855
+ anyOf:
7856
+ - type: array
7857
+ items:
7858
+ type: string
7859
+ - type: "null"
7860
+ estimatedCostUsd:
7861
+ anyOf:
7862
+ - type: number
7863
+ - type: "null"
7864
+ durationMs:
7865
+ anyOf:
7866
+ - type: number
7867
+ - type: "null"
7868
+ additionalProperties: false
7869
+ - type: "null"
7870
+ requestSections:
7871
+ anyOf:
7872
+ - type: array
7873
+ items:
7874
+ type: object
7875
+ properties:
7876
+ kind:
7877
+ type: string
7878
+ label:
7879
+ anyOf:
7880
+ - type: string
7881
+ - type: "null"
7882
+ role:
7883
+ anyOf:
7884
+ - type: string
7885
+ - type: "null"
7886
+ text:
7887
+ anyOf:
7888
+ - type: string
7889
+ - type: "null"
7890
+ toolName:
7891
+ anyOf:
7892
+ - type: string
7893
+ - type: "null"
7894
+ data: {}
7895
+ language:
7896
+ anyOf:
7897
+ - type: string
7898
+ - type: "null"
7899
+ required:
7900
+ - kind
7901
+ additionalProperties: false
7902
+ - type: "null"
7903
+ responseSections:
7904
+ anyOf:
7905
+ - type: array
7906
+ items:
7907
+ type: object
7908
+ properties:
7909
+ kind:
7910
+ type: string
7911
+ label:
7912
+ anyOf:
7913
+ - type: string
7914
+ - type: "null"
7915
+ role:
7916
+ anyOf:
7917
+ - type: string
7918
+ - type: "null"
7919
+ text:
7920
+ anyOf:
7921
+ - type: string
7922
+ - type: "null"
7923
+ toolName:
7924
+ anyOf:
7925
+ - type: string
7926
+ - type: "null"
7927
+ data: {}
7928
+ language:
7929
+ anyOf:
7930
+ - type: string
7931
+ - type: "null"
7932
+ required:
7933
+ - kind
7934
+ additionalProperties: false
7935
+ - type: "null"
7936
+ agentLoopExitReason:
7937
+ anyOf:
7938
+ - type: string
7939
+ - type: "null"
7940
+ callSite:
7941
+ anyOf:
7942
+ - type: string
7943
+ - type: "null"
7944
+ required:
7945
+ - id
7946
+ - createdAt
7947
+ - requestPayload
7948
+ - responsePayload
7949
+ additionalProperties: false
6978
7950
  memoryRecall:
6979
7951
  anyOf:
6980
7952
  - type: object
6981
- properties: {}
6982
- additionalProperties: {}
6983
- - type: "null"
6984
- memoryV2Activation:
6985
- anyOf:
6986
- - type: object
6987
- properties: {}
6988
- additionalProperties: {}
7953
+ properties:
7954
+ enabled:
7955
+ type: boolean
7956
+ degraded:
7957
+ type: boolean
7958
+ provider:
7959
+ anyOf:
7960
+ - type: string
7961
+ - type: "null"
7962
+ model:
7963
+ anyOf:
7964
+ - type: string
7965
+ - type: "null"
7966
+ degradation:
7967
+ anyOf:
7968
+ - type: object
7969
+ properties:
7970
+ reason:
7971
+ type: string
7972
+ semanticUnavailable:
7973
+ type: boolean
7974
+ fallbackSources:
7975
+ type: array
7976
+ items:
7977
+ type: string
7978
+ required:
7979
+ - reason
7980
+ - semanticUnavailable
7981
+ - fallbackSources
7982
+ additionalProperties: false
7983
+ - type: "null"
7984
+ semanticHits:
7985
+ anyOf:
7986
+ - type: number
7987
+ - type: "null"
7988
+ mergedCount:
7989
+ anyOf:
7990
+ - type: number
7991
+ - type: "null"
7992
+ selectedCount:
7993
+ anyOf:
7994
+ - type: number
7995
+ - type: "null"
7996
+ tier1Count:
7997
+ anyOf:
7998
+ - type: number
7999
+ - type: "null"
8000
+ tier2Count:
8001
+ anyOf:
8002
+ - type: number
8003
+ - type: "null"
8004
+ hybridSearchLatencyMs:
8005
+ anyOf:
8006
+ - type: number
8007
+ - type: "null"
8008
+ sparseVectorUsed:
8009
+ anyOf:
8010
+ - type: boolean
8011
+ - type: "null"
8012
+ injectedTokens:
8013
+ anyOf:
8014
+ - type: number
8015
+ - type: "null"
8016
+ latencyMs:
8017
+ anyOf:
8018
+ - type: number
8019
+ - type: "null"
8020
+ topCandidates:
8021
+ type: array
8022
+ items:
8023
+ type: object
8024
+ properties:
8025
+ nodeId:
8026
+ type: string
8027
+ score:
8028
+ type: number
8029
+ semanticSimilarity:
8030
+ type: number
8031
+ recencyBoost:
8032
+ type: number
8033
+ type:
8034
+ type: string
8035
+ required:
8036
+ - nodeId
8037
+ - score
8038
+ - semanticSimilarity
8039
+ - recencyBoost
8040
+ additionalProperties: false
8041
+ injectedText:
8042
+ anyOf:
8043
+ - type: string
8044
+ - type: "null"
8045
+ reason:
8046
+ anyOf:
8047
+ - type: string
8048
+ - type: "null"
8049
+ queryContext:
8050
+ anyOf:
8051
+ - type: string
8052
+ - type: "null"
8053
+ required:
8054
+ - enabled
8055
+ - degraded
8056
+ - provider
8057
+ - model
8058
+ - degradation
8059
+ - topCandidates
8060
+ - injectedText
8061
+ - reason
8062
+ - queryContext
8063
+ additionalProperties: false
8064
+ - type: "null"
8065
+ memoryV2Activation:
8066
+ anyOf:
8067
+ - type: object
8068
+ properties:
8069
+ turn:
8070
+ type: number
8071
+ mode:
8072
+ type: string
8073
+ concepts:
8074
+ type: array
8075
+ items:
8076
+ type: object
8077
+ properties:
8078
+ slug:
8079
+ type: string
8080
+ finalActivation:
8081
+ type: number
8082
+ ownActivation:
8083
+ type: number
8084
+ priorActivation:
8085
+ type: number
8086
+ simUser:
8087
+ type: number
8088
+ simAssistant:
8089
+ type: number
8090
+ simNow:
8091
+ type: number
8092
+ simUserRerankBoost:
8093
+ type: number
8094
+ simAssistantRerankBoost:
8095
+ type: number
8096
+ inRerankPool:
8097
+ type: boolean
8098
+ spreadContribution:
8099
+ type: number
8100
+ source:
8101
+ type: string
8102
+ status:
8103
+ type: string
8104
+ required:
8105
+ - slug
8106
+ - finalActivation
8107
+ - ownActivation
8108
+ - priorActivation
8109
+ - simUser
8110
+ - simAssistant
8111
+ - simNow
8112
+ - spreadContribution
8113
+ - source
8114
+ - status
8115
+ additionalProperties: false
8116
+ config:
8117
+ type: object
8118
+ properties:
8119
+ d:
8120
+ type: number
8121
+ c_user:
8122
+ type: number
8123
+ c_assistant:
8124
+ type: number
8125
+ c_now:
8126
+ type: number
8127
+ k:
8128
+ type: number
8129
+ hops:
8130
+ type: number
8131
+ top_k:
8132
+ type: number
8133
+ epsilon:
8134
+ type: number
8135
+ required:
8136
+ - d
8137
+ - c_user
8138
+ - c_assistant
8139
+ - c_now
8140
+ - k
8141
+ - hops
8142
+ - top_k
8143
+ - epsilon
8144
+ additionalProperties: false
8145
+ required:
8146
+ - turn
8147
+ - mode
8148
+ - concepts
8149
+ - config
8150
+ additionalProperties: false
8151
+ - type: "null"
8152
+ memoryV3Selection:
8153
+ anyOf:
8154
+ - type: object
8155
+ properties:
8156
+ turn:
8157
+ type: number
8158
+ live:
8159
+ type: boolean
8160
+ shadow:
8161
+ type: boolean
8162
+ selections:
8163
+ type: array
8164
+ items:
8165
+ type: object
8166
+ properties:
8167
+ slug:
8168
+ type: string
8169
+ source:
8170
+ type: string
8171
+ pinned:
8172
+ type: boolean
8173
+ required:
8174
+ - slug
8175
+ - source
8176
+ - pinned
8177
+ additionalProperties: false
8178
+ injectedText:
8179
+ type: string
8180
+ required:
8181
+ - turn
8182
+ - live
8183
+ - shadow
8184
+ - selections
8185
+ - injectedText
8186
+ additionalProperties: false
6989
8187
  - type: "null"
6990
8188
  required:
6991
- - conversationId
6992
8189
  - conversationKind
6993
- - conversationTotalEstimatedCostUsd
6994
8190
  - logs
6995
8191
  - memoryRecall
6996
8192
  - memoryV2Activation
@@ -7940,8 +9136,8 @@ paths:
7940
9136
  type: string
7941
9137
  description: "Detected mode: dictation, command, or action"
7942
9138
  actionPlan:
7943
- type: string
7944
9139
  description: Action plan (only when mode is action)
9140
+ type: string
7945
9141
  resolvedProfileId:
7946
9142
  type: string
7947
9143
  description: Resolved dictation profile ID
@@ -7951,7 +9147,6 @@ paths:
7951
9147
  required:
7952
9148
  - text
7953
9149
  - mode
7954
- - actionPlan
7955
9150
  - resolvedProfileId
7956
9151
  - profileSource
7957
9152
  additionalProperties: false
@@ -7967,7 +9162,10 @@ paths:
7967
9162
  description: Raw speech transcription
7968
9163
  context:
7969
9164
  type: object
7970
- properties: {}
9165
+ properties:
9166
+ cursorInTextField:
9167
+ description: Whether the cursor is in an editable text field when dictation started
9168
+ type: boolean
7971
9169
  additionalProperties: {}
7972
9170
  description: Dictation context (app name, window title, bundle ID, cursor state, selected text)
7973
9171
  profileId:
@@ -8415,7 +9613,68 @@ paths:
8415
9613
  properties:
8416
9614
  comments:
8417
9615
  type: array
8418
- items: {}
9616
+ items:
9617
+ type: object
9618
+ properties:
9619
+ id:
9620
+ type: string
9621
+ surfaceId:
9622
+ type: string
9623
+ conversationId:
9624
+ type: string
9625
+ author:
9626
+ type: string
9627
+ content:
9628
+ type: string
9629
+ anchorStart:
9630
+ anyOf:
9631
+ - type: number
9632
+ - type: "null"
9633
+ anchorEnd:
9634
+ anyOf:
9635
+ - type: number
9636
+ - type: "null"
9637
+ anchorText:
9638
+ anyOf:
9639
+ - type: string
9640
+ - type: "null"
9641
+ parentCommentId:
9642
+ anyOf:
9643
+ - type: string
9644
+ - type: "null"
9645
+ status:
9646
+ type: string
9647
+ enum:
9648
+ - open
9649
+ - resolved
9650
+ resolvedBy:
9651
+ anyOf:
9652
+ - type: string
9653
+ - type: "null"
9654
+ resolvedAt:
9655
+ anyOf:
9656
+ - type: number
9657
+ - type: "null"
9658
+ createdAt:
9659
+ type: number
9660
+ updatedAt:
9661
+ type: number
9662
+ required:
9663
+ - id
9664
+ - surfaceId
9665
+ - conversationId
9666
+ - author
9667
+ - content
9668
+ - anchorStart
9669
+ - anchorEnd
9670
+ - anchorText
9671
+ - parentCommentId
9672
+ - status
9673
+ - resolvedBy
9674
+ - resolvedAt
9675
+ - createdAt
9676
+ - updatedAt
9677
+ additionalProperties: false
8419
9678
  description: Comment records
8420
9679
  required:
8421
9680
  - comments
@@ -8460,8 +9719,35 @@ paths:
8460
9719
  type: string
8461
9720
  content:
8462
9721
  type: string
9722
+ anchorStart:
9723
+ anyOf:
9724
+ - type: number
9725
+ - type: "null"
9726
+ anchorEnd:
9727
+ anyOf:
9728
+ - type: number
9729
+ - type: "null"
9730
+ anchorText:
9731
+ anyOf:
9732
+ - type: string
9733
+ - type: "null"
9734
+ parentCommentId:
9735
+ anyOf:
9736
+ - type: string
9737
+ - type: "null"
8463
9738
  status:
8464
9739
  type: string
9740
+ enum:
9741
+ - open
9742
+ - resolved
9743
+ resolvedBy:
9744
+ anyOf:
9745
+ - type: string
9746
+ - type: "null"
9747
+ resolvedAt:
9748
+ anyOf:
9749
+ - type: number
9750
+ - type: "null"
8465
9751
  createdAt:
8466
9752
  type: number
8467
9753
  updatedAt:
@@ -8472,7 +9758,13 @@ paths:
8472
9758
  - conversationId
8473
9759
  - author
8474
9760
  - content
9761
+ - anchorStart
9762
+ - anchorEnd
9763
+ - anchorText
9764
+ - parentCommentId
8475
9765
  - status
9766
+ - resolvedBy
9767
+ - resolvedAt
8476
9768
  - createdAt
8477
9769
  - updatedAt
8478
9770
  additionalProperties: false
@@ -8575,17 +9867,59 @@ paths:
8575
9867
  type: string
8576
9868
  surfaceId:
8577
9869
  type: string
9870
+ conversationId:
9871
+ type: string
9872
+ author:
9873
+ type: string
8578
9874
  content:
8579
9875
  type: string
9876
+ anchorStart:
9877
+ anyOf:
9878
+ - type: number
9879
+ - type: "null"
9880
+ anchorEnd:
9881
+ anyOf:
9882
+ - type: number
9883
+ - type: "null"
9884
+ anchorText:
9885
+ anyOf:
9886
+ - type: string
9887
+ - type: "null"
9888
+ parentCommentId:
9889
+ anyOf:
9890
+ - type: string
9891
+ - type: "null"
8580
9892
  status:
8581
9893
  type: string
9894
+ enum:
9895
+ - open
9896
+ - resolved
9897
+ resolvedBy:
9898
+ anyOf:
9899
+ - type: string
9900
+ - type: "null"
9901
+ resolvedAt:
9902
+ anyOf:
9903
+ - type: number
9904
+ - type: "null"
9905
+ createdAt:
9906
+ type: number
8582
9907
  updatedAt:
8583
9908
  type: number
8584
9909
  required:
8585
9910
  - id
8586
9911
  - surfaceId
9912
+ - conversationId
9913
+ - author
8587
9914
  - content
9915
+ - anchorStart
9916
+ - anchorEnd
9917
+ - anchorText
9918
+ - parentCommentId
8588
9919
  - status
9920
+ - resolvedBy
9921
+ - resolvedAt
9922
+ - createdAt
8589
9923
  - updatedAt
8590
9924
  additionalProperties: false
8591
9925
  parameters:
@@ -9038,6 +10372,17 @@ paths:
9038
10372
  description:
9039
10373
  Scope to a single conversation by an external key (non-vellum channels) or the web idempotency key.
9040
10374
  Materializes a row on first use. Ignored when conversationId is also provided.
10375
+ - name: lastSeenSeq
10376
+ in: query
10377
+ required: false
10378
+ schema:
10379
+ type: string
10380
+ description:
10381
+ "Optional reconnect cursor: the highest per-conversation event seq the client has already applied. When set
10382
+ together with a conversation scope, the daemon replays any buffered events with seq > lastSeenSeq before
10383
+ going live. If the cursor is older than the ring buffer's oldest entry the connection simply goes live; the
10384
+ client is expected to detect the gap from the next event's seq and refetch via the messages API. Must be a
10385
+ non-negative integer."
9041
10386
  /v1/events/emit:
9042
10387
  post:
9043
10388
  operationId: events_emit_post
@@ -11059,6 +12404,12 @@ paths:
11059
12404
  imageData:
11060
12405
  type: string
11061
12406
  description: Optional base64-encoded image bytes for successful image reads
12407
+ audioData:
12408
+ type: string
12409
+ description: Optional base64-encoded audio bytes for successful audio reads
12410
+ audioMimeType:
12411
+ type: string
12412
+ description: MIME type for audioData (e.g. audio/mpeg)
11062
12413
  required:
11063
12414
  - requestId
11064
12415
  additionalProperties: false
@@ -11143,7 +12494,6 @@ paths:
11143
12494
  - emoji
11144
12495
  - home
11145
12496
  - version
11146
- - createdAt
11147
12497
  additionalProperties: false
11148
12498
  /v1/identity/intro:
11149
12499
  get:
@@ -12128,6 +13478,26 @@ paths:
12128
13478
  responses:
12129
13479
  "200":
12130
13480
  description: Successful response
13481
+ content:
13482
+ application/json:
13483
+ schema:
13484
+ type: object
13485
+ properties:
13486
+ success:
13487
+ type: boolean
13488
+ inviteId:
13489
+ type: string
13490
+ token:
13491
+ type: string
13492
+ expiresAt:
13493
+ type: number
13494
+ senderGatewayUrl:
13495
+ type: string
13496
+ error:
13497
+ type: string
13498
+ required:
13499
+ - success
13500
+ additionalProperties: false
12131
13501
  /v1/integrations/a2a/invite/accept:
12132
13502
  post:
12133
13503
  operationId: integrations_a2a_invite_accept_post
@@ -12269,6 +13639,23 @@ paths:
12269
13639
  responses:
12270
13640
  "200":
12271
13641
  description: Successful response
13642
+ requestBody:
13643
+ required: true
13644
+ content:
13645
+ application/json:
13646
+ schema:
13647
+ type: object
13648
+ properties:
13649
+ botToken:
13650
+ type: string
13651
+ description: Slack bot token
13652
+ appToken:
13653
+ type: string
13654
+ description: Slack app-level token
13655
+ required:
13656
+ - botToken
13657
+ - appToken
13658
+ additionalProperties: false
12272
13659
  /v1/integrations/telegram/commands:
12273
13660
  post:
12274
13661
  operationId: integrations_telegram_commands_post
@@ -12307,8 +13694,21 @@ paths:
12307
13694
  responses:
12308
13695
  "200":
12309
13696
  description: Successful response
12310
- /v1/integrations/telegram/setup:
12311
- post:
13697
+ requestBody:
13698
+ required: true
13699
+ content:
13700
+ application/json:
13701
+ schema:
13702
+ type: object
13703
+ properties:
13704
+ botToken:
13705
+ type: string
13706
+ description: Telegram bot token
13707
+ required:
13708
+ - botToken
13709
+ additionalProperties: false
13710
+ /v1/integrations/telegram/setup:
13711
+ post:
12312
13712
  operationId: integrations_telegram_setup_post
12313
13713
  summary: Setup Telegram
12314
13714
  description: "Composite: set config + register commands."
@@ -12346,6 +13746,23 @@ paths:
12346
13746
  responses:
12347
13747
  "200":
12348
13748
  description: Successful response
13749
+ requestBody:
13750
+ required: true
13751
+ content:
13752
+ application/json:
13753
+ schema:
13754
+ type: object
13755
+ properties:
13756
+ accountSid:
13757
+ type: string
13758
+ description: Twilio account SID
13759
+ authToken:
13760
+ type: string
13761
+ description: Twilio auth token
13762
+ required:
13763
+ - accountSid
13764
+ - authToken
13765
+ additionalProperties: false
12349
13766
  /v1/integrations/twilio/numbers:
12350
13767
  get:
12351
13768
  operationId: integrations_twilio_numbers_get
@@ -13162,6 +14579,16 @@ paths:
13162
14579
  responses:
13163
14580
  "200":
13164
14581
  description: Successful response
14582
+ content:
14583
+ application/json:
14584
+ schema:
14585
+ type: object
14586
+ properties:
14587
+ nowText:
14588
+ type: string
14589
+ required:
14590
+ - nowText
14591
+ additionalProperties: false
13165
14592
  /v1/memory/v2/reembed-skills:
13166
14593
  post:
13167
14594
  operationId: memory_v2_reembedskills_post
@@ -13193,6 +14620,16 @@ paths:
13193
14620
  responses:
13194
14621
  "200":
13195
14622
  description: Successful response
14623
+ content:
14624
+ application/json:
14625
+ schema:
14626
+ type: object
14627
+ properties:
14628
+ template:
14629
+ type: string
14630
+ required:
14631
+ - template
14632
+ additionalProperties: false
13196
14633
  /v1/memory/v2/simulate-router:
13197
14634
  post:
13198
14635
  operationId: memory_v2_simulaterouter_post
@@ -13207,6 +14644,89 @@ paths:
13207
14644
  responses:
13208
14645
  "200":
13209
14646
  description: Successful response
14647
+ content:
14648
+ application/json:
14649
+ schema:
14650
+ type: object
14651
+ properties:
14652
+ selectedSlugs:
14653
+ type: array
14654
+ items:
14655
+ type: string
14656
+ sourceBySlug:
14657
+ type: object
14658
+ propertyNames:
14659
+ type: string
14660
+ additionalProperties:
14661
+ type: string
14662
+ scores:
14663
+ type: object
14664
+ propertyNames:
14665
+ type: string
14666
+ additionalProperties:
14667
+ type: number
14668
+ failureReason:
14669
+ anyOf:
14670
+ - type: string
14671
+ - type: "null"
14672
+ effectiveConfig:
14673
+ type: object
14674
+ properties:
14675
+ tier1_size:
14676
+ anyOf:
14677
+ - type: number
14678
+ - type: "null"
14679
+ tier2_size:
14680
+ anyOf:
14681
+ - type: number
14682
+ - type: "null"
14683
+ batch_size:
14684
+ anyOf:
14685
+ - type: number
14686
+ - type: "null"
14687
+ max_page_ids:
14688
+ type: number
14689
+ required:
14690
+ - tier1_size
14691
+ - tier2_size
14692
+ - batch_size
14693
+ - max_page_ids
14694
+ additionalProperties: false
14695
+ overrides:
14696
+ type: object
14697
+ properties:
14698
+ tier1_size:
14699
+ anyOf:
14700
+ - type: number
14701
+ - type: "null"
14702
+ tier2_size:
14703
+ anyOf:
14704
+ - type: number
14705
+ - type: "null"
14706
+ batch_size:
14707
+ anyOf:
14708
+ - type: number
14709
+ - type: "null"
14710
+ additionalProperties: false
14711
+ totalCandidatePages:
14712
+ type: number
14713
+ profileOverride:
14714
+ anyOf:
14715
+ - type: string
14716
+ - type: "null"
14717
+ routerPromptOverridden:
14718
+ type: boolean
14719
+ required:
14720
+ - selectedSlugs
14721
+ - sourceBySlug
14722
+ - scores
14723
+ - failureReason
14724
+ - effectiveConfig
14725
+ - overrides
14726
+ - totalCandidatePages
14727
+ - profileOverride
14728
+ - routerPromptOverridden
14729
+ additionalProperties: false
13210
14730
  requestBody:
13211
14731
  required: true
13212
14732
  content:
@@ -13281,167 +14801,42 @@ paths:
13281
14801
  type: object
13282
14802
  properties: {}
13283
14803
  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:
14804
+ /v1/memory/v3/health:
13324
14805
  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.
14806
+ operationId: memory_v3_health_post
14807
+ summary: Print the v3 structural health report (read-only)
13334
14808
  tags:
13335
14809
  - memory
13336
14810
  responses:
13337
14811
  "200":
13338
14812
  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
13357
- /v1/memory/v3/simulate:
14813
+ /v1/memory/v3/rebuild-index:
13358
14814
  post:
13359
- operationId: memory_v3_simulate_post
13360
- summary: Dry-run the v3 retrieval loop against an ad-hoc query (read-only)
13361
- description:
13362
- Runs the v3 multi-lane bounded-descent retrieval loop read-only against a single synthetic turn built from
13363
- the supplied query plus the live (or supplied) NOW context. Returns the selected page slugs, per-lane
13364
- provenance, the full multi-pass descent trace, and accumulated cost. Optional passCap / lane-allowlist overrides
13365
- apply on top of live config. Invoked directly (not gated by memory.v3.enabled/shadow) so operators can probe v3
13366
- retrieval before flipping the flags; writes nothing (co-activation persistence is forced off), though each pass
13367
- still spends the loop's filter + gate LLM calls.
14815
+ operationId: memory_v3_rebuildindex_post
14816
+ summary: Invalidate the v3 lanes so the next turn rebuilds
13368
14817
  tags:
13369
14818
  - memory
13370
14819
  responses:
13371
14820
  "200":
13372
14821
  description: Successful response
13373
- requestBody:
13374
- required: true
13375
- content:
13376
- application/json:
13377
- schema:
13378
- type: object
13379
- properties:
13380
- query:
13381
- type: string
13382
- minLength: 1
13383
- nowText:
13384
- type: string
13385
- passCap:
13386
- type: integer
13387
- exclusiveMinimum: 0
13388
- maximum: 9007199254740991
13389
- lanes:
13390
- minItems: 1
13391
- type: array
13392
- items:
13393
- type: string
13394
- enum:
13395
- - hot
13396
- - sparse
13397
- - dense
13398
- - tree
13399
- - edges
13400
- required:
13401
- - query
13402
- additionalProperties: false
13403
- /v1/memory/v3/tree:
14822
+ /v1/memory/v3/reconcile:
13404
14823
  post:
13405
- operationId: memory_v3_tree_post
13406
- summary: Return a serializable view of the memory v3 tree DAG (read-only)
13407
- description:
13408
- Returns the v3 tree root id plus every node and its ordered child refs (page:/node:) as a JSON-serializable
13409
- projection of the in-memory TreeIndex. Read-only; the CLI uses it to print an indented tree with shared-DAG
13410
- re-entries marked.
14824
+ operationId: memory_v3_reconcile_post
14825
+ summary: v1 convergence/prune pass over page+core refs (no rename detection without a prior snapshot)
13411
14826
  tags:
13412
14827
  - memory
13413
14828
  responses:
13414
14829
  "200":
13415
14830
  description: Successful response
13416
- requestBody:
13417
- required: true
13418
- content:
13419
- application/json:
13420
- schema:
13421
- type: object
13422
- properties: {}
13423
- additionalProperties: false
13424
- /v1/memory/v3/validate:
14831
+ /v1/memory/v3/set-core:
13425
14832
  post:
13426
- operationId: memory_v3_validate_post
13427
- summary: Validate the memory v3 tree structure (read-only)
13428
- description:
13429
- Read-only structural validation of the hand-authored v3 tree DAG. Reports dangling child refs, orphan
13430
- pages, cycles, stale compositional indexes, and unknown edge targets. Writes nothing and runs no LLM — operators
13431
- dry-run it while the v2 → v3 migration is in flight.
14833
+ operationId: memory_v3_setcore_post
14834
+ summary: Add/remove always-on core leaves (validates + previews cost)
13432
14835
  tags:
13433
14836
  - memory
13434
14837
  responses:
13435
14838
  "200":
13436
14839
  description: Successful response
13437
- requestBody:
13438
- required: true
13439
- content:
13440
- application/json:
13441
- schema:
13442
- type: object
13443
- properties: {}
13444
- additionalProperties: false
13445
14840
  /v1/messages:
13446
14841
  get:
13447
14842
  operationId: messages_get
@@ -13562,44 +14957,439 @@ paths:
13562
14957
  type: object
13563
14958
  properties:
13564
14959
  messageId:
13565
- type: string
14960
+ anyOf:
14961
+ - type: string
14962
+ - type: "null"
14963
+ conversationKey:
14964
+ anyOf:
14965
+ - type: string
14966
+ - type: "null"
14967
+ conversationId:
14968
+ anyOf:
14969
+ - type: string
14970
+ - type: "null"
13566
14971
  conversationKind:
13567
14972
  type: string
13568
- enum:
13569
- - user
13570
- - background
13571
- - background_memory_consolidation
13572
- - scheduled
13573
14973
  conversationTotalEstimatedCostUsd:
13574
14974
  anyOf:
13575
14975
  - type: number
13576
14976
  - type: "null"
13577
14977
  logs:
13578
14978
  type: array
13579
- items: {}
14979
+ items:
14980
+ type: object
14981
+ properties:
14982
+ id:
14983
+ type: string
14984
+ createdAt:
14985
+ type: number
14986
+ requestPayload:
14987
+ type: "null"
14988
+ responsePayload:
14989
+ type: "null"
14990
+ provider:
14991
+ anyOf:
14992
+ - type: string
14993
+ - type: "null"
14994
+ summary:
14995
+ anyOf:
14996
+ - type: object
14997
+ properties:
14998
+ provider:
14999
+ anyOf:
15000
+ - type: string
15001
+ - type: "null"
15002
+ model:
15003
+ anyOf:
15004
+ - type: string
15005
+ - type: "null"
15006
+ status:
15007
+ anyOf:
15008
+ - type: string
15009
+ - type: "null"
15010
+ inputTokens:
15011
+ anyOf:
15012
+ - type: number
15013
+ - type: "null"
15014
+ outputTokens:
15015
+ anyOf:
15016
+ - type: number
15017
+ - type: "null"
15018
+ cacheCreationInputTokens:
15019
+ anyOf:
15020
+ - type: number
15021
+ - type: "null"
15022
+ cacheReadInputTokens:
15023
+ anyOf:
15024
+ - type: number
15025
+ - type: "null"
15026
+ stopReason:
15027
+ anyOf:
15028
+ - type: string
15029
+ - type: "null"
15030
+ requestMessageCount:
15031
+ anyOf:
15032
+ - type: number
15033
+ - type: "null"
15034
+ requestToolCount:
15035
+ anyOf:
15036
+ - type: number
15037
+ - type: "null"
15038
+ responseMessageCount:
15039
+ anyOf:
15040
+ - type: number
15041
+ - type: "null"
15042
+ responseToolCallCount:
15043
+ anyOf:
15044
+ - type: number
15045
+ - type: "null"
15046
+ responsePreview:
15047
+ anyOf:
15048
+ - type: string
15049
+ - type: "null"
15050
+ toolCallNames:
15051
+ anyOf:
15052
+ - type: array
15053
+ items:
15054
+ type: string
15055
+ - type: "null"
15056
+ estimatedCostUsd:
15057
+ anyOf:
15058
+ - type: number
15059
+ - type: "null"
15060
+ durationMs:
15061
+ anyOf:
15062
+ - type: number
15063
+ - type: "null"
15064
+ additionalProperties: false
15065
+ - type: "null"
15066
+ requestSections:
15067
+ anyOf:
15068
+ - type: array
15069
+ items:
15070
+ type: object
15071
+ properties:
15072
+ kind:
15073
+ type: string
15074
+ label:
15075
+ anyOf:
15076
+ - type: string
15077
+ - type: "null"
15078
+ role:
15079
+ anyOf:
15080
+ - type: string
15081
+ - type: "null"
15082
+ text:
15083
+ anyOf:
15084
+ - type: string
15085
+ - type: "null"
15086
+ toolName:
15087
+ anyOf:
15088
+ - type: string
15089
+ - type: "null"
15090
+ data: {}
15091
+ language:
15092
+ anyOf:
15093
+ - type: string
15094
+ - type: "null"
15095
+ required:
15096
+ - kind
15097
+ additionalProperties: false
15098
+ - type: "null"
15099
+ responseSections:
15100
+ anyOf:
15101
+ - type: array
15102
+ items:
15103
+ type: object
15104
+ properties:
15105
+ kind:
15106
+ type: string
15107
+ label:
15108
+ anyOf:
15109
+ - type: string
15110
+ - type: "null"
15111
+ role:
15112
+ anyOf:
15113
+ - type: string
15114
+ - type: "null"
15115
+ text:
15116
+ anyOf:
15117
+ - type: string
15118
+ - type: "null"
15119
+ toolName:
15120
+ anyOf:
15121
+ - type: string
15122
+ - type: "null"
15123
+ data: {}
15124
+ language:
15125
+ anyOf:
15126
+ - type: string
15127
+ - type: "null"
15128
+ required:
15129
+ - kind
15130
+ additionalProperties: false
15131
+ - type: "null"
15132
+ agentLoopExitReason:
15133
+ anyOf:
15134
+ - type: string
15135
+ - type: "null"
15136
+ callSite:
15137
+ anyOf:
15138
+ - type: string
15139
+ - type: "null"
15140
+ required:
15141
+ - id
15142
+ - createdAt
15143
+ - requestPayload
15144
+ - responsePayload
15145
+ additionalProperties: false
13580
15146
  memoryRecall:
13581
15147
  anyOf:
13582
15148
  - type: object
13583
- properties: {}
13584
- additionalProperties: {}
13585
- - type: "null"
13586
- memoryV2Activation:
13587
- anyOf:
13588
- - type: object
13589
- properties: {}
13590
- additionalProperties: {}
13591
- - type: "null"
13592
- required:
13593
- - messageId
13594
- - conversationKind
13595
- - conversationTotalEstimatedCostUsd
13596
- - logs
13597
- - memoryRecall
13598
- - memoryV2Activation
13599
- additionalProperties: false
13600
- parameters:
13601
- - name: id
13602
- in: path
15149
+ properties:
15150
+ enabled:
15151
+ type: boolean
15152
+ degraded:
15153
+ type: boolean
15154
+ provider:
15155
+ anyOf:
15156
+ - type: string
15157
+ - type: "null"
15158
+ model:
15159
+ anyOf:
15160
+ - type: string
15161
+ - type: "null"
15162
+ degradation:
15163
+ anyOf:
15164
+ - type: object
15165
+ properties:
15166
+ reason:
15167
+ type: string
15168
+ semanticUnavailable:
15169
+ type: boolean
15170
+ fallbackSources:
15171
+ type: array
15172
+ items:
15173
+ type: string
15174
+ required:
15175
+ - reason
15176
+ - semanticUnavailable
15177
+ - fallbackSources
15178
+ additionalProperties: false
15179
+ - type: "null"
15180
+ semanticHits:
15181
+ anyOf:
15182
+ - type: number
15183
+ - type: "null"
15184
+ mergedCount:
15185
+ anyOf:
15186
+ - type: number
15187
+ - type: "null"
15188
+ selectedCount:
15189
+ anyOf:
15190
+ - type: number
15191
+ - type: "null"
15192
+ tier1Count:
15193
+ anyOf:
15194
+ - type: number
15195
+ - type: "null"
15196
+ tier2Count:
15197
+ anyOf:
15198
+ - type: number
15199
+ - type: "null"
15200
+ hybridSearchLatencyMs:
15201
+ anyOf:
15202
+ - type: number
15203
+ - type: "null"
15204
+ sparseVectorUsed:
15205
+ anyOf:
15206
+ - type: boolean
15207
+ - type: "null"
15208
+ injectedTokens:
15209
+ anyOf:
15210
+ - type: number
15211
+ - type: "null"
15212
+ latencyMs:
15213
+ anyOf:
15214
+ - type: number
15215
+ - type: "null"
15216
+ topCandidates:
15217
+ type: array
15218
+ items:
15219
+ type: object
15220
+ properties:
15221
+ nodeId:
15222
+ type: string
15223
+ score:
15224
+ type: number
15225
+ semanticSimilarity:
15226
+ type: number
15227
+ recencyBoost:
15228
+ type: number
15229
+ type:
15230
+ type: string
15231
+ required:
15232
+ - nodeId
15233
+ - score
15234
+ - semanticSimilarity
15235
+ - recencyBoost
15236
+ additionalProperties: false
15237
+ injectedText:
15238
+ anyOf:
15239
+ - type: string
15240
+ - type: "null"
15241
+ reason:
15242
+ anyOf:
15243
+ - type: string
15244
+ - type: "null"
15245
+ queryContext:
15246
+ anyOf:
15247
+ - type: string
15248
+ - type: "null"
15249
+ required:
15250
+ - enabled
15251
+ - degraded
15252
+ - provider
15253
+ - model
15254
+ - degradation
15255
+ - topCandidates
15256
+ - injectedText
15257
+ - reason
15258
+ - queryContext
15259
+ additionalProperties: false
15260
+ - type: "null"
15261
+ memoryV2Activation:
15262
+ anyOf:
15263
+ - type: object
15264
+ properties:
15265
+ turn:
15266
+ type: number
15267
+ mode:
15268
+ type: string
15269
+ concepts:
15270
+ type: array
15271
+ items:
15272
+ type: object
15273
+ properties:
15274
+ slug:
15275
+ type: string
15276
+ finalActivation:
15277
+ type: number
15278
+ ownActivation:
15279
+ type: number
15280
+ priorActivation:
15281
+ type: number
15282
+ simUser:
15283
+ type: number
15284
+ simAssistant:
15285
+ type: number
15286
+ simNow:
15287
+ type: number
15288
+ simUserRerankBoost:
15289
+ type: number
15290
+ simAssistantRerankBoost:
15291
+ type: number
15292
+ inRerankPool:
15293
+ type: boolean
15294
+ spreadContribution:
15295
+ type: number
15296
+ source:
15297
+ type: string
15298
+ status:
15299
+ type: string
15300
+ required:
15301
+ - slug
15302
+ - finalActivation
15303
+ - ownActivation
15304
+ - priorActivation
15305
+ - simUser
15306
+ - simAssistant
15307
+ - simNow
15308
+ - spreadContribution
15309
+ - source
15310
+ - status
15311
+ additionalProperties: false
15312
+ config:
15313
+ type: object
15314
+ properties:
15315
+ d:
15316
+ type: number
15317
+ c_user:
15318
+ type: number
15319
+ c_assistant:
15320
+ type: number
15321
+ c_now:
15322
+ type: number
15323
+ k:
15324
+ type: number
15325
+ hops:
15326
+ type: number
15327
+ top_k:
15328
+ type: number
15329
+ epsilon:
15330
+ type: number
15331
+ required:
15332
+ - d
15333
+ - c_user
15334
+ - c_assistant
15335
+ - c_now
15336
+ - k
15337
+ - hops
15338
+ - top_k
15339
+ - epsilon
15340
+ additionalProperties: false
15341
+ required:
15342
+ - turn
15343
+ - mode
15344
+ - concepts
15345
+ - config
15346
+ additionalProperties: false
15347
+ - type: "null"
15348
+ memoryV3Selection:
15349
+ anyOf:
15350
+ - type: object
15351
+ properties:
15352
+ turn:
15353
+ type: number
15354
+ live:
15355
+ type: boolean
15356
+ shadow:
15357
+ type: boolean
15358
+ selections:
15359
+ type: array
15360
+ items:
15361
+ type: object
15362
+ properties:
15363
+ slug:
15364
+ type: string
15365
+ source:
15366
+ type: string
15367
+ pinned:
15368
+ type: boolean
15369
+ required:
15370
+ - slug
15371
+ - source
15372
+ - pinned
15373
+ additionalProperties: false
15374
+ injectedText:
15375
+ type: string
15376
+ required:
15377
+ - turn
15378
+ - live
15379
+ - shadow
15380
+ - selections
15381
+ - injectedText
15382
+ additionalProperties: false
15383
+ - type: "null"
15384
+ required:
15385
+ - conversationKind
15386
+ - logs
15387
+ - memoryRecall
15388
+ - memoryV2Activation
15389
+ additionalProperties: false
15390
+ parameters:
15391
+ - name: id
15392
+ in: path
13603
15393
  required: true
13604
15394
  schema:
13605
15395
  type: string
@@ -15650,7 +17440,115 @@ paths:
15650
17440
  properties:
15651
17441
  schedules:
15652
17442
  type: array
15653
- items: {}
17443
+ items:
17444
+ type: object
17445
+ properties:
17446
+ id:
17447
+ type: string
17448
+ name:
17449
+ type: string
17450
+ enabled:
17451
+ type: boolean
17452
+ syntax:
17453
+ type: string
17454
+ enum:
17455
+ - cron
17456
+ - rrule
17457
+ expression:
17458
+ anyOf:
17459
+ - type: string
17460
+ - type: "null"
17461
+ cronExpression:
17462
+ anyOf:
17463
+ - type: string
17464
+ - type: "null"
17465
+ timezone:
17466
+ anyOf:
17467
+ - type: string
17468
+ - type: "null"
17469
+ message:
17470
+ type: string
17471
+ script:
17472
+ anyOf:
17473
+ - type: string
17474
+ - type: "null"
17475
+ nextRunAt:
17476
+ type: number
17477
+ lastRunAt:
17478
+ anyOf:
17479
+ - type: number
17480
+ - type: "null"
17481
+ lastStatus:
17482
+ anyOf:
17483
+ - type: string
17484
+ - type: "null"
17485
+ retryCount:
17486
+ type: number
17487
+ maxRetries:
17488
+ type: number
17489
+ retryBackoffMs:
17490
+ type: number
17491
+ timeoutMs:
17492
+ anyOf:
17493
+ - type: number
17494
+ - type: "null"
17495
+ description:
17496
+ anyOf:
17497
+ - type: string
17498
+ - type: "null"
17499
+ mode:
17500
+ type: string
17501
+ enum:
17502
+ - notify
17503
+ - execute
17504
+ - script
17505
+ - wake
17506
+ status:
17507
+ type: string
17508
+ enum:
17509
+ - active
17510
+ - firing
17511
+ - fired
17512
+ - cancelled
17513
+ routingIntent:
17514
+ type: string
17515
+ enum:
17516
+ - single_channel
17517
+ - multi_channel
17518
+ - all_channels
17519
+ reuseConversation:
17520
+ type: boolean
17521
+ wakeConversationId:
17522
+ anyOf:
17523
+ - type: string
17524
+ - type: "null"
17525
+ isOneShot:
17526
+ type: boolean
17527
+ required:
17528
+ - id
17529
+ - name
17530
+ - enabled
17531
+ - syntax
17532
+ - expression
17533
+ - cronExpression
17534
+ - timezone
17535
+ - message
17536
+ - script
17537
+ - nextRunAt
17538
+ - lastRunAt
17539
+ - lastStatus
17540
+ - retryCount
17541
+ - maxRetries
17542
+ - retryBackoffMs
17543
+ - timeoutMs
17544
+ - description
17545
+ - mode
17546
+ - status
17547
+ - routingIntent
17548
+ - reuseConversation
17549
+ - wakeConversationId
17550
+ - isOneShot
17551
+ additionalProperties: false
15654
17552
  description: Schedule objects
15655
17553
  required:
15656
17554
  - schedules
@@ -15678,7 +17576,115 @@ paths:
15678
17576
  properties:
15679
17577
  schedules:
15680
17578
  type: array
15681
- items: {}
17579
+ items:
17580
+ type: object
17581
+ properties:
17582
+ id:
17583
+ type: string
17584
+ name:
17585
+ type: string
17586
+ enabled:
17587
+ type: boolean
17588
+ syntax:
17589
+ type: string
17590
+ enum:
17591
+ - cron
17592
+ - rrule
17593
+ expression:
17594
+ anyOf:
17595
+ - type: string
17596
+ - type: "null"
17597
+ cronExpression:
17598
+ anyOf:
17599
+ - type: string
17600
+ - type: "null"
17601
+ timezone:
17602
+ anyOf:
17603
+ - type: string
17604
+ - type: "null"
17605
+ message:
17606
+ type: string
17607
+ script:
17608
+ anyOf:
17609
+ - type: string
17610
+ - type: "null"
17611
+ nextRunAt:
17612
+ type: number
17613
+ lastRunAt:
17614
+ anyOf:
17615
+ - type: number
17616
+ - type: "null"
17617
+ lastStatus:
17618
+ anyOf:
17619
+ - type: string
17620
+ - type: "null"
17621
+ retryCount:
17622
+ type: number
17623
+ maxRetries:
17624
+ type: number
17625
+ retryBackoffMs:
17626
+ type: number
17627
+ timeoutMs:
17628
+ anyOf:
17629
+ - type: number
17630
+ - type: "null"
17631
+ description:
17632
+ anyOf:
17633
+ - type: string
17634
+ - type: "null"
17635
+ mode:
17636
+ type: string
17637
+ enum:
17638
+ - notify
17639
+ - execute
17640
+ - script
17641
+ - wake
17642
+ status:
17643
+ type: string
17644
+ enum:
17645
+ - active
17646
+ - firing
17647
+ - fired
17648
+ - cancelled
17649
+ routingIntent:
17650
+ type: string
17651
+ enum:
17652
+ - single_channel
17653
+ - multi_channel
17654
+ - all_channels
17655
+ reuseConversation:
17656
+ type: boolean
17657
+ wakeConversationId:
17658
+ anyOf:
17659
+ - type: string
17660
+ - type: "null"
17661
+ isOneShot:
17662
+ type: boolean
17663
+ required:
17664
+ - id
17665
+ - name
17666
+ - enabled
17667
+ - syntax
17668
+ - expression
17669
+ - cronExpression
17670
+ - timezone
17671
+ - message
17672
+ - script
17673
+ - nextRunAt
17674
+ - lastRunAt
17675
+ - lastStatus
17676
+ - retryCount
17677
+ - maxRetries
17678
+ - retryBackoffMs
17679
+ - timeoutMs
17680
+ - description
17681
+ - mode
17682
+ - status
17683
+ - routingIntent
17684
+ - reuseConversation
17685
+ - wakeConversationId
17686
+ - isOneShot
17687
+ additionalProperties: false
15682
17688
  description: Updated schedule list
15683
17689
  required:
15684
17690
  - schedules
@@ -15732,8 +17738,116 @@ paths:
15732
17738
  properties:
15733
17739
  schedules:
15734
17740
  type: array
15735
- items: {}
15736
- description: Updated schedule list
17741
+ items:
17742
+ type: object
17743
+ properties:
17744
+ id:
17745
+ type: string
17746
+ name:
17747
+ type: string
17748
+ enabled:
17749
+ type: boolean
17750
+ syntax:
17751
+ type: string
17752
+ enum:
17753
+ - cron
17754
+ - rrule
17755
+ expression:
17756
+ anyOf:
17757
+ - type: string
17758
+ - type: "null"
17759
+ cronExpression:
17760
+ anyOf:
17761
+ - type: string
17762
+ - type: "null"
17763
+ timezone:
17764
+ anyOf:
17765
+ - type: string
17766
+ - type: "null"
17767
+ message:
17768
+ type: string
17769
+ script:
17770
+ anyOf:
17771
+ - type: string
17772
+ - type: "null"
17773
+ nextRunAt:
17774
+ type: number
17775
+ lastRunAt:
17776
+ anyOf:
17777
+ - type: number
17778
+ - type: "null"
17779
+ lastStatus:
17780
+ anyOf:
17781
+ - type: string
17782
+ - type: "null"
17783
+ retryCount:
17784
+ type: number
17785
+ maxRetries:
17786
+ type: number
17787
+ retryBackoffMs:
17788
+ type: number
17789
+ timeoutMs:
17790
+ anyOf:
17791
+ - type: number
17792
+ - type: "null"
17793
+ description:
17794
+ anyOf:
17795
+ - type: string
17796
+ - type: "null"
17797
+ mode:
17798
+ type: string
17799
+ enum:
17800
+ - notify
17801
+ - execute
17802
+ - script
17803
+ - wake
17804
+ status:
17805
+ type: string
17806
+ enum:
17807
+ - active
17808
+ - firing
17809
+ - fired
17810
+ - cancelled
17811
+ routingIntent:
17812
+ type: string
17813
+ enum:
17814
+ - single_channel
17815
+ - multi_channel
17816
+ - all_channels
17817
+ reuseConversation:
17818
+ type: boolean
17819
+ wakeConversationId:
17820
+ anyOf:
17821
+ - type: string
17822
+ - type: "null"
17823
+ isOneShot:
17824
+ type: boolean
17825
+ required:
17826
+ - id
17827
+ - name
17828
+ - enabled
17829
+ - syntax
17830
+ - expression
17831
+ - cronExpression
17832
+ - timezone
17833
+ - message
17834
+ - script
17835
+ - nextRunAt
17836
+ - lastRunAt
17837
+ - lastStatus
17838
+ - retryCount
17839
+ - maxRetries
17840
+ - retryBackoffMs
17841
+ - timeoutMs
17842
+ - description
17843
+ - mode
17844
+ - status
17845
+ - routingIntent
17846
+ - reuseConversation
17847
+ - wakeConversationId
17848
+ - isOneShot
17849
+ additionalProperties: false
17850
+ description: Updated schedule list
15737
17851
  required:
15738
17852
  - schedules
15739
17853
  additionalProperties: false
@@ -15759,7 +17873,115 @@ paths:
15759
17873
  properties:
15760
17874
  schedules:
15761
17875
  type: array
15762
- items: {}
17876
+ items:
17877
+ type: object
17878
+ properties:
17879
+ id:
17880
+ type: string
17881
+ name:
17882
+ type: string
17883
+ enabled:
17884
+ type: boolean
17885
+ syntax:
17886
+ type: string
17887
+ enum:
17888
+ - cron
17889
+ - rrule
17890
+ expression:
17891
+ anyOf:
17892
+ - type: string
17893
+ - type: "null"
17894
+ cronExpression:
17895
+ anyOf:
17896
+ - type: string
17897
+ - type: "null"
17898
+ timezone:
17899
+ anyOf:
17900
+ - type: string
17901
+ - type: "null"
17902
+ message:
17903
+ type: string
17904
+ script:
17905
+ anyOf:
17906
+ - type: string
17907
+ - type: "null"
17908
+ nextRunAt:
17909
+ type: number
17910
+ lastRunAt:
17911
+ anyOf:
17912
+ - type: number
17913
+ - type: "null"
17914
+ lastStatus:
17915
+ anyOf:
17916
+ - type: string
17917
+ - type: "null"
17918
+ retryCount:
17919
+ type: number
17920
+ maxRetries:
17921
+ type: number
17922
+ retryBackoffMs:
17923
+ type: number
17924
+ timeoutMs:
17925
+ anyOf:
17926
+ - type: number
17927
+ - type: "null"
17928
+ description:
17929
+ anyOf:
17930
+ - type: string
17931
+ - type: "null"
17932
+ mode:
17933
+ type: string
17934
+ enum:
17935
+ - notify
17936
+ - execute
17937
+ - script
17938
+ - wake
17939
+ status:
17940
+ type: string
17941
+ enum:
17942
+ - active
17943
+ - firing
17944
+ - fired
17945
+ - cancelled
17946
+ routingIntent:
17947
+ type: string
17948
+ enum:
17949
+ - single_channel
17950
+ - multi_channel
17951
+ - all_channels
17952
+ reuseConversation:
17953
+ type: boolean
17954
+ wakeConversationId:
17955
+ anyOf:
17956
+ - type: string
17957
+ - type: "null"
17958
+ isOneShot:
17959
+ type: boolean
17960
+ required:
17961
+ - id
17962
+ - name
17963
+ - enabled
17964
+ - syntax
17965
+ - expression
17966
+ - cronExpression
17967
+ - timezone
17968
+ - message
17969
+ - script
17970
+ - nextRunAt
17971
+ - lastRunAt
17972
+ - lastStatus
17973
+ - retryCount
17974
+ - maxRetries
17975
+ - retryBackoffMs
17976
+ - timeoutMs
17977
+ - description
17978
+ - mode
17979
+ - status
17980
+ - routingIntent
17981
+ - reuseConversation
17982
+ - wakeConversationId
17983
+ - isOneShot
17984
+ additionalProperties: false
15763
17985
  description: Updated schedule list
15764
17986
  required:
15765
17987
  - schedules
@@ -15806,18 +18028,11 @@ paths:
15806
18028
  retryBackoffMs:
15807
18029
  type: number
15808
18030
  description: Retry backoff in milliseconds
15809
- required:
15810
- - name
15811
- - expression
15812
- - timezone
15813
- - message
15814
- - script
15815
- - mode
15816
- - routingIntent
15817
- - quiet
15818
- - reuseConversation
15819
- - maxRetries
15820
- - retryBackoffMs
18031
+ timeoutMs:
18032
+ anyOf:
18033
+ - type: number
18034
+ - type: "null"
18035
+ description: Script-mode execution timeout in ms; null = use default
15821
18036
  additionalProperties: false
15822
18037
  /v1/schedules/{id}/cancel:
15823
18038
  post:
@@ -15836,7 +18051,115 @@ paths:
15836
18051
  properties:
15837
18052
  schedules:
15838
18053
  type: array
15839
- items: {}
18054
+ items:
18055
+ type: object
18056
+ properties:
18057
+ id:
18058
+ type: string
18059
+ name:
18060
+ type: string
18061
+ enabled:
18062
+ type: boolean
18063
+ syntax:
18064
+ type: string
18065
+ enum:
18066
+ - cron
18067
+ - rrule
18068
+ expression:
18069
+ anyOf:
18070
+ - type: string
18071
+ - type: "null"
18072
+ cronExpression:
18073
+ anyOf:
18074
+ - type: string
18075
+ - type: "null"
18076
+ timezone:
18077
+ anyOf:
18078
+ - type: string
18079
+ - type: "null"
18080
+ message:
18081
+ type: string
18082
+ script:
18083
+ anyOf:
18084
+ - type: string
18085
+ - type: "null"
18086
+ nextRunAt:
18087
+ type: number
18088
+ lastRunAt:
18089
+ anyOf:
18090
+ - type: number
18091
+ - type: "null"
18092
+ lastStatus:
18093
+ anyOf:
18094
+ - type: string
18095
+ - type: "null"
18096
+ retryCount:
18097
+ type: number
18098
+ maxRetries:
18099
+ type: number
18100
+ retryBackoffMs:
18101
+ type: number
18102
+ timeoutMs:
18103
+ anyOf:
18104
+ - type: number
18105
+ - type: "null"
18106
+ description:
18107
+ anyOf:
18108
+ - type: string
18109
+ - type: "null"
18110
+ mode:
18111
+ type: string
18112
+ enum:
18113
+ - notify
18114
+ - execute
18115
+ - script
18116
+ - wake
18117
+ status:
18118
+ type: string
18119
+ enum:
18120
+ - active
18121
+ - firing
18122
+ - fired
18123
+ - cancelled
18124
+ routingIntent:
18125
+ type: string
18126
+ enum:
18127
+ - single_channel
18128
+ - multi_channel
18129
+ - all_channels
18130
+ reuseConversation:
18131
+ type: boolean
18132
+ wakeConversationId:
18133
+ anyOf:
18134
+ - type: string
18135
+ - type: "null"
18136
+ isOneShot:
18137
+ type: boolean
18138
+ required:
18139
+ - id
18140
+ - name
18141
+ - enabled
18142
+ - syntax
18143
+ - expression
18144
+ - cronExpression
18145
+ - timezone
18146
+ - message
18147
+ - script
18148
+ - nextRunAt
18149
+ - lastRunAt
18150
+ - lastStatus
18151
+ - retryCount
18152
+ - maxRetries
18153
+ - retryBackoffMs
18154
+ - timeoutMs
18155
+ - description
18156
+ - mode
18157
+ - status
18158
+ - routingIntent
18159
+ - reuseConversation
18160
+ - wakeConversationId
18161
+ - isOneShot
18162
+ additionalProperties: false
15840
18163
  description: Updated schedule list
15841
18164
  required:
15842
18165
  - schedules
@@ -15864,7 +18187,115 @@ paths:
15864
18187
  properties:
15865
18188
  schedules:
15866
18189
  type: array
15867
- items: {}
18190
+ items:
18191
+ type: object
18192
+ properties:
18193
+ id:
18194
+ type: string
18195
+ name:
18196
+ type: string
18197
+ enabled:
18198
+ type: boolean
18199
+ syntax:
18200
+ type: string
18201
+ enum:
18202
+ - cron
18203
+ - rrule
18204
+ expression:
18205
+ anyOf:
18206
+ - type: string
18207
+ - type: "null"
18208
+ cronExpression:
18209
+ anyOf:
18210
+ - type: string
18211
+ - type: "null"
18212
+ timezone:
18213
+ anyOf:
18214
+ - type: string
18215
+ - type: "null"
18216
+ message:
18217
+ type: string
18218
+ script:
18219
+ anyOf:
18220
+ - type: string
18221
+ - type: "null"
18222
+ nextRunAt:
18223
+ type: number
18224
+ lastRunAt:
18225
+ anyOf:
18226
+ - type: number
18227
+ - type: "null"
18228
+ lastStatus:
18229
+ anyOf:
18230
+ - type: string
18231
+ - type: "null"
18232
+ retryCount:
18233
+ type: number
18234
+ maxRetries:
18235
+ type: number
18236
+ retryBackoffMs:
18237
+ type: number
18238
+ timeoutMs:
18239
+ anyOf:
18240
+ - type: number
18241
+ - type: "null"
18242
+ description:
18243
+ anyOf:
18244
+ - type: string
18245
+ - type: "null"
18246
+ mode:
18247
+ type: string
18248
+ enum:
18249
+ - notify
18250
+ - execute
18251
+ - script
18252
+ - wake
18253
+ status:
18254
+ type: string
18255
+ enum:
18256
+ - active
18257
+ - firing
18258
+ - fired
18259
+ - cancelled
18260
+ routingIntent:
18261
+ type: string
18262
+ enum:
18263
+ - single_channel
18264
+ - multi_channel
18265
+ - all_channels
18266
+ reuseConversation:
18267
+ type: boolean
18268
+ wakeConversationId:
18269
+ anyOf:
18270
+ - type: string
18271
+ - type: "null"
18272
+ isOneShot:
18273
+ type: boolean
18274
+ required:
18275
+ - id
18276
+ - name
18277
+ - enabled
18278
+ - syntax
18279
+ - expression
18280
+ - cronExpression
18281
+ - timezone
18282
+ - message
18283
+ - script
18284
+ - nextRunAt
18285
+ - lastRunAt
18286
+ - lastStatus
18287
+ - retryCount
18288
+ - maxRetries
18289
+ - retryBackoffMs
18290
+ - timeoutMs
18291
+ - description
18292
+ - mode
18293
+ - status
18294
+ - routingIntent
18295
+ - reuseConversation
18296
+ - wakeConversationId
18297
+ - isOneShot
18298
+ additionalProperties: false
15868
18299
  description: Updated schedule list
15869
18300
  required:
15870
18301
  - schedules
@@ -15892,7 +18323,51 @@ paths:
15892
18323
  properties:
15893
18324
  runs:
15894
18325
  type: array
15895
- items: {}
18326
+ items:
18327
+ type: object
18328
+ properties:
18329
+ id:
18330
+ type: string
18331
+ jobId:
18332
+ type: string
18333
+ status:
18334
+ type: string
18335
+ startedAt:
18336
+ type: number
18337
+ finishedAt:
18338
+ anyOf:
18339
+ - type: number
18340
+ - type: "null"
18341
+ durationMs:
18342
+ anyOf:
18343
+ - type: number
18344
+ - type: "null"
18345
+ output:
18346
+ anyOf:
18347
+ - type: string
18348
+ - type: "null"
18349
+ error:
18350
+ anyOf:
18351
+ - type: string
18352
+ - type: "null"
18353
+ conversationId:
18354
+ anyOf:
18355
+ - type: string
18356
+ - type: "null"
18357
+ createdAt:
18358
+ type: number
18359
+ required:
18360
+ - id
18361
+ - jobId
18362
+ - status
18363
+ - startedAt
18364
+ - finishedAt
18365
+ - durationMs
18366
+ - output
18367
+ - error
18368
+ - conversationId
18369
+ - createdAt
18370
+ additionalProperties: false
15896
18371
  description: Schedule run objects
15897
18372
  required:
15898
18373
  - runs
@@ -15926,7 +18401,115 @@ paths:
15926
18401
  properties:
15927
18402
  schedules:
15928
18403
  type: array
15929
- items: {}
18404
+ items:
18405
+ type: object
18406
+ properties:
18407
+ id:
18408
+ type: string
18409
+ name:
18410
+ type: string
18411
+ enabled:
18412
+ type: boolean
18413
+ syntax:
18414
+ type: string
18415
+ enum:
18416
+ - cron
18417
+ - rrule
18418
+ expression:
18419
+ anyOf:
18420
+ - type: string
18421
+ - type: "null"
18422
+ cronExpression:
18423
+ anyOf:
18424
+ - type: string
18425
+ - type: "null"
18426
+ timezone:
18427
+ anyOf:
18428
+ - type: string
18429
+ - type: "null"
18430
+ message:
18431
+ type: string
18432
+ script:
18433
+ anyOf:
18434
+ - type: string
18435
+ - type: "null"
18436
+ nextRunAt:
18437
+ type: number
18438
+ lastRunAt:
18439
+ anyOf:
18440
+ - type: number
18441
+ - type: "null"
18442
+ lastStatus:
18443
+ anyOf:
18444
+ - type: string
18445
+ - type: "null"
18446
+ retryCount:
18447
+ type: number
18448
+ maxRetries:
18449
+ type: number
18450
+ retryBackoffMs:
18451
+ type: number
18452
+ timeoutMs:
18453
+ anyOf:
18454
+ - type: number
18455
+ - type: "null"
18456
+ description:
18457
+ anyOf:
18458
+ - type: string
18459
+ - type: "null"
18460
+ mode:
18461
+ type: string
18462
+ enum:
18463
+ - notify
18464
+ - execute
18465
+ - script
18466
+ - wake
18467
+ status:
18468
+ type: string
18469
+ enum:
18470
+ - active
18471
+ - firing
18472
+ - fired
18473
+ - cancelled
18474
+ routingIntent:
18475
+ type: string
18476
+ enum:
18477
+ - single_channel
18478
+ - multi_channel
18479
+ - all_channels
18480
+ reuseConversation:
18481
+ type: boolean
18482
+ wakeConversationId:
18483
+ anyOf:
18484
+ - type: string
18485
+ - type: "null"
18486
+ isOneShot:
18487
+ type: boolean
18488
+ required:
18489
+ - id
18490
+ - name
18491
+ - enabled
18492
+ - syntax
18493
+ - expression
18494
+ - cronExpression
18495
+ - timezone
18496
+ - message
18497
+ - script
18498
+ - nextRunAt
18499
+ - lastRunAt
18500
+ - lastStatus
18501
+ - retryCount
18502
+ - maxRetries
18503
+ - retryBackoffMs
18504
+ - timeoutMs
18505
+ - description
18506
+ - mode
18507
+ - status
18508
+ - routingIntent
18509
+ - reuseConversation
18510
+ - wakeConversationId
18511
+ - isOneShot
18512
+ additionalProperties: false
15930
18513
  description: Updated schedule list
15931
18514
  required:
15932
18515
  - schedules
@@ -15993,9 +18576,124 @@ paths:
15993
18576
  type: string
15994
18577
  results:
15995
18578
  type: object
15996
- properties: {}
15997
- additionalProperties: {}
15998
- description: Results grouped by category
18579
+ properties:
18580
+ conversations:
18581
+ type: array
18582
+ items:
18583
+ type: object
18584
+ properties:
18585
+ id:
18586
+ type: string
18587
+ title:
18588
+ anyOf:
18589
+ - type: string
18590
+ - type: "null"
18591
+ updatedAt:
18592
+ type: number
18593
+ excerpt:
18594
+ type: string
18595
+ matchCount:
18596
+ type: integer
18597
+ minimum: -9007199254740991
18598
+ maximum: 9007199254740991
18599
+ required:
18600
+ - id
18601
+ - title
18602
+ - updatedAt
18603
+ - excerpt
18604
+ - matchCount
18605
+ additionalProperties: false
18606
+ memories:
18607
+ type: array
18608
+ items:
18609
+ type: object
18610
+ properties:
18611
+ id:
18612
+ type: string
18613
+ kind:
18614
+ type: string
18615
+ text:
18616
+ type: string
18617
+ subject:
18618
+ anyOf:
18619
+ - type: string
18620
+ - type: "null"
18621
+ confidence:
18622
+ type: number
18623
+ updatedAt:
18624
+ type: number
18625
+ source:
18626
+ type: string
18627
+ enum:
18628
+ - lexical
18629
+ - semantic
18630
+ required:
18631
+ - id
18632
+ - kind
18633
+ - text
18634
+ - subject
18635
+ - confidence
18636
+ - updatedAt
18637
+ - source
18638
+ additionalProperties: false
18639
+ schedules:
18640
+ type: array
18641
+ items:
18642
+ type: object
18643
+ properties:
18644
+ id:
18645
+ type: string
18646
+ name:
18647
+ type: string
18648
+ expression:
18649
+ anyOf:
18650
+ - type: string
18651
+ - type: "null"
18652
+ message:
18653
+ type: string
18654
+ enabled:
18655
+ type: boolean
18656
+ nextRunAt:
18657
+ anyOf:
18658
+ - type: number
18659
+ - type: "null"
18660
+ required:
18661
+ - id
18662
+ - name
18663
+ - expression
18664
+ - message
18665
+ - enabled
18666
+ - nextRunAt
18667
+ additionalProperties: false
18668
+ contacts:
18669
+ type: array
18670
+ items:
18671
+ type: object
18672
+ properties:
18673
+ id:
18674
+ type: string
18675
+ displayName:
18676
+ type: string
18677
+ notes:
18678
+ anyOf:
18679
+ - type: string
18680
+ - type: "null"
18681
+ lastInteraction:
18682
+ anyOf:
18683
+ - type: number
18684
+ - type: "null"
18685
+ required:
18686
+ - id
18687
+ - displayName
18688
+ - notes
18689
+ - lastInteraction
18690
+ additionalProperties: false
18691
+ required:
18692
+ - conversations
18693
+ - memories
18694
+ - schedules
18695
+ - contacts
18696
+ additionalProperties: false
15999
18697
  required:
16000
18698
  - query
16001
18699
  - results
@@ -16508,6 +19206,17 @@ paths:
16508
19206
  - enabled
16509
19207
  - disabled
16510
19208
  - available
19209
+ category:
19210
+ type: string
19211
+ enum:
19212
+ - communication
19213
+ - productivity
19214
+ - development
19215
+ - media
19216
+ - automation
19217
+ - webSocial
19218
+ - knowledge
19219
+ - integration
16511
19220
  origin:
16512
19221
  type: string
16513
19222
  const: vellum
@@ -16517,6 +19226,7 @@ paths:
16517
19226
  - description
16518
19227
  - kind
16519
19228
  - status
19229
+ - category
16520
19230
  - origin
16521
19231
  additionalProperties: false
16522
19232
  - type: object
@@ -16541,6 +19251,17 @@ paths:
16541
19251
  - enabled
16542
19252
  - disabled
16543
19253
  - available
19254
+ category:
19255
+ type: string
19256
+ enum:
19257
+ - communication
19258
+ - productivity
19259
+ - development
19260
+ - media
19261
+ - automation
19262
+ - webSocial
19263
+ - knowledge
19264
+ - integration
16544
19265
  origin:
16545
19266
  type: string
16546
19267
  const: clawhub
@@ -16564,6 +19285,7 @@ paths:
16564
19285
  - description
16565
19286
  - kind
16566
19287
  - status
19288
+ - category
16567
19289
  - origin
16568
19290
  - slug
16569
19291
  - author
@@ -16594,6 +19316,17 @@ paths:
16594
19316
  - enabled
16595
19317
  - disabled
16596
19318
  - available
19319
+ category:
19320
+ type: string
19321
+ enum:
19322
+ - communication
19323
+ - productivity
19324
+ - development
19325
+ - media
19326
+ - automation
19327
+ - webSocial
19328
+ - knowledge
19329
+ - integration
16597
19330
  origin:
16598
19331
  type: string
16599
19332
  const: skillssh
@@ -16635,6 +19368,7 @@ paths:
16635
19368
  - description
16636
19369
  - kind
16637
19370
  - status
19371
+ - category
16638
19372
  - origin
16639
19373
  - slug
16640
19374
  - sourceRepo
@@ -16662,6 +19396,17 @@ paths:
16662
19396
  - enabled
16663
19397
  - disabled
16664
19398
  - available
19399
+ category:
19400
+ type: string
19401
+ enum:
19402
+ - communication
19403
+ - productivity
19404
+ - development
19405
+ - media
19406
+ - automation
19407
+ - webSocial
19408
+ - knowledge
19409
+ - integration
16665
19410
  origin:
16666
19411
  type: string
16667
19412
  const: custom
@@ -16671,6 +19416,7 @@ paths:
16671
19416
  - description
16672
19417
  - kind
16673
19418
  - status
19419
+ - category
16674
19420
  - origin
16675
19421
  additionalProperties: false
16676
19422
  description: Skill objects
@@ -16814,6 +19560,17 @@ paths:
16814
19560
  - enabled
16815
19561
  - disabled
16816
19562
  - available
19563
+ category:
19564
+ type: string
19565
+ enum:
19566
+ - communication
19567
+ - productivity
19568
+ - development
19569
+ - media
19570
+ - automation
19571
+ - webSocial
19572
+ - knowledge
19573
+ - integration
16817
19574
  origin:
16818
19575
  type: string
16819
19576
  const: vellum
@@ -16823,6 +19580,7 @@ paths:
16823
19580
  - description
16824
19581
  - kind
16825
19582
  - status
19583
+ - category
16826
19584
  - origin
16827
19585
  additionalProperties: false
16828
19586
  - type: object
@@ -16847,6 +19605,17 @@ paths:
16847
19605
  - enabled
16848
19606
  - disabled
16849
19607
  - available
19608
+ category:
19609
+ type: string
19610
+ enum:
19611
+ - communication
19612
+ - productivity
19613
+ - development
19614
+ - media
19615
+ - automation
19616
+ - webSocial
19617
+ - knowledge
19618
+ - integration
16850
19619
  origin:
16851
19620
  type: string
16852
19621
  const: clawhub
@@ -16924,6 +19693,7 @@ paths:
16924
19693
  - description
16925
19694
  - kind
16926
19695
  - status
19696
+ - category
16927
19697
  - origin
16928
19698
  - slug
16929
19699
  - author
@@ -16954,6 +19724,17 @@ paths:
16954
19724
  - enabled
16955
19725
  - disabled
16956
19726
  - available
19727
+ category:
19728
+ type: string
19729
+ enum:
19730
+ - communication
19731
+ - productivity
19732
+ - development
19733
+ - media
19734
+ - automation
19735
+ - webSocial
19736
+ - knowledge
19737
+ - integration
16957
19738
  origin:
16958
19739
  type: string
16959
19740
  const: skillssh
@@ -16995,6 +19776,7 @@ paths:
16995
19776
  - description
16996
19777
  - kind
16997
19778
  - status
19779
+ - category
16998
19780
  - origin
16999
19781
  - slug
17000
19782
  - sourceRepo
@@ -17022,6 +19804,17 @@ paths:
17022
19804
  - enabled
17023
19805
  - disabled
17024
19806
  - available
19807
+ category:
19808
+ type: string
19809
+ enum:
19810
+ - communication
19811
+ - productivity
19812
+ - development
19813
+ - media
19814
+ - automation
19815
+ - webSocial
19816
+ - knowledge
19817
+ - integration
17025
19818
  origin:
17026
19819
  type: string
17027
19820
  const: custom
@@ -17031,6 +19824,7 @@ paths:
17031
19824
  - description
17032
19825
  - kind
17033
19826
  - status
19827
+ - category
17034
19828
  - origin
17035
19829
  additionalProperties: false
17036
19830
  description: Skill detail object
@@ -17137,7 +19931,300 @@ paths:
17137
19931
  ok:
17138
19932
  type: boolean
17139
19933
  required:
17140
- - ok
19934
+ - ok
19935
+ additionalProperties: false
19936
+ parameters:
19937
+ - name: id
19938
+ in: path
19939
+ required: true
19940
+ schema:
19941
+ type: string
19942
+ /v1/skills/{id}/files:
19943
+ get:
19944
+ operationId: skills_by_id_files_get
19945
+ summary: Get skill files
19946
+ description: Return skill metadata and directory contents.
19947
+ tags:
19948
+ - skills
19949
+ responses:
19950
+ "200":
19951
+ description: Successful response
19952
+ content:
19953
+ application/json:
19954
+ schema:
19955
+ type: object
19956
+ properties:
19957
+ skill:
19958
+ oneOf:
19959
+ - type: object
19960
+ properties:
19961
+ id:
19962
+ type: string
19963
+ name:
19964
+ type: string
19965
+ description:
19966
+ type: string
19967
+ emoji:
19968
+ type: string
19969
+ kind:
19970
+ type: string
19971
+ enum:
19972
+ - bundled
19973
+ - installed
19974
+ - catalog
19975
+ status:
19976
+ type: string
19977
+ enum:
19978
+ - enabled
19979
+ - disabled
19980
+ - available
19981
+ category:
19982
+ type: string
19983
+ enum:
19984
+ - communication
19985
+ - productivity
19986
+ - development
19987
+ - media
19988
+ - automation
19989
+ - webSocial
19990
+ - knowledge
19991
+ - integration
19992
+ origin:
19993
+ type: string
19994
+ const: vellum
19995
+ required:
19996
+ - id
19997
+ - name
19998
+ - description
19999
+ - kind
20000
+ - status
20001
+ - category
20002
+ - origin
20003
+ additionalProperties: false
20004
+ - type: object
20005
+ properties:
20006
+ id:
20007
+ type: string
20008
+ name:
20009
+ type: string
20010
+ description:
20011
+ type: string
20012
+ emoji:
20013
+ type: string
20014
+ kind:
20015
+ type: string
20016
+ enum:
20017
+ - bundled
20018
+ - installed
20019
+ - catalog
20020
+ status:
20021
+ type: string
20022
+ enum:
20023
+ - enabled
20024
+ - disabled
20025
+ - available
20026
+ category:
20027
+ type: string
20028
+ enum:
20029
+ - communication
20030
+ - productivity
20031
+ - development
20032
+ - media
20033
+ - automation
20034
+ - webSocial
20035
+ - knowledge
20036
+ - integration
20037
+ origin:
20038
+ type: string
20039
+ const: clawhub
20040
+ slug:
20041
+ type: string
20042
+ author:
20043
+ type: string
20044
+ stars:
20045
+ type: number
20046
+ installs:
20047
+ type: number
20048
+ reports:
20049
+ type: number
20050
+ publishedAt:
20051
+ type: string
20052
+ version:
20053
+ type: string
20054
+ required:
20055
+ - id
20056
+ - name
20057
+ - description
20058
+ - kind
20059
+ - status
20060
+ - category
20061
+ - origin
20062
+ - slug
20063
+ - author
20064
+ - stars
20065
+ - installs
20066
+ - reports
20067
+ - version
20068
+ additionalProperties: false
20069
+ - type: object
20070
+ properties:
20071
+ id:
20072
+ type: string
20073
+ name:
20074
+ type: string
20075
+ description:
20076
+ type: string
20077
+ emoji:
20078
+ type: string
20079
+ kind:
20080
+ type: string
20081
+ enum:
20082
+ - bundled
20083
+ - installed
20084
+ - catalog
20085
+ status:
20086
+ type: string
20087
+ enum:
20088
+ - enabled
20089
+ - disabled
20090
+ - available
20091
+ category:
20092
+ type: string
20093
+ enum:
20094
+ - communication
20095
+ - productivity
20096
+ - development
20097
+ - media
20098
+ - automation
20099
+ - webSocial
20100
+ - knowledge
20101
+ - integration
20102
+ origin:
20103
+ type: string
20104
+ const: skillssh
20105
+ slug:
20106
+ type: string
20107
+ sourceRepo:
20108
+ type: string
20109
+ installs:
20110
+ type: number
20111
+ audit:
20112
+ type: object
20113
+ propertyNames:
20114
+ type: string
20115
+ additionalProperties:
20116
+ type: object
20117
+ properties:
20118
+ risk:
20119
+ type: string
20120
+ enum:
20121
+ - safe
20122
+ - low
20123
+ - medium
20124
+ - high
20125
+ - critical
20126
+ - unknown
20127
+ alerts:
20128
+ type: number
20129
+ score:
20130
+ type: number
20131
+ analyzedAt:
20132
+ type: string
20133
+ required:
20134
+ - risk
20135
+ - analyzedAt
20136
+ additionalProperties: false
20137
+ required:
20138
+ - id
20139
+ - name
20140
+ - description
20141
+ - kind
20142
+ - status
20143
+ - category
20144
+ - origin
20145
+ - slug
20146
+ - sourceRepo
20147
+ - installs
20148
+ additionalProperties: false
20149
+ - type: object
20150
+ properties:
20151
+ id:
20152
+ type: string
20153
+ name:
20154
+ type: string
20155
+ description:
20156
+ type: string
20157
+ emoji:
20158
+ type: string
20159
+ kind:
20160
+ type: string
20161
+ enum:
20162
+ - bundled
20163
+ - installed
20164
+ - catalog
20165
+ status:
20166
+ type: string
20167
+ enum:
20168
+ - enabled
20169
+ - disabled
20170
+ - available
20171
+ category:
20172
+ type: string
20173
+ enum:
20174
+ - communication
20175
+ - productivity
20176
+ - development
20177
+ - media
20178
+ - automation
20179
+ - webSocial
20180
+ - knowledge
20181
+ - integration
20182
+ origin:
20183
+ type: string
20184
+ const: custom
20185
+ required:
20186
+ - id
20187
+ - name
20188
+ - description
20189
+ - kind
20190
+ - status
20191
+ - category
20192
+ - origin
20193
+ additionalProperties: false
20194
+ description: Skill metadata
20195
+ files:
20196
+ type: array
20197
+ items:
20198
+ type: object
20199
+ properties:
20200
+ path:
20201
+ type: string
20202
+ name:
20203
+ type: string
20204
+ size:
20205
+ type: integer
20206
+ minimum: -9007199254740991
20207
+ maximum: 9007199254740991
20208
+ mimeType:
20209
+ type: string
20210
+ isBinary:
20211
+ type: boolean
20212
+ content:
20213
+ anyOf:
20214
+ - type: string
20215
+ - type: "null"
20216
+ required:
20217
+ - path
20218
+ - name
20219
+ - size
20220
+ - mimeType
20221
+ - isBinary
20222
+ - content
20223
+ additionalProperties: false
20224
+ description: Directory contents
20225
+ required:
20226
+ - skill
20227
+ - files
17141
20228
  additionalProperties: false
17142
20229
  parameters:
17143
20230
  - name: id
@@ -17145,22 +20232,6 @@ paths:
17145
20232
  required: true
17146
20233
  schema:
17147
20234
  type: string
17148
- /v1/skills/{id}/files:
17149
- get:
17150
- operationId: skills_by_id_files_get
17151
- summary: Get skill files
17152
- description: Return skill metadata and directory contents.
17153
- tags:
17154
- - skills
17155
- responses:
17156
- "200":
17157
- description: Successful response
17158
- parameters:
17159
- - name: id
17160
- in: path
17161
- required: true
17162
- schema:
17163
- type: string
17164
20235
  /v1/skills/{id}/files/content:
17165
20236
  get:
17166
20237
  operationId: skills_by_id_files_content_get
@@ -17419,6 +20490,17 @@ paths:
17419
20490
  - enabled
17420
20491
  - disabled
17421
20492
  - available
20493
+ category:
20494
+ type: string
20495
+ enum:
20496
+ - communication
20497
+ - productivity
20498
+ - development
20499
+ - media
20500
+ - automation
20501
+ - webSocial
20502
+ - knowledge
20503
+ - integration
17422
20504
  origin:
17423
20505
  type: string
17424
20506
  const: vellum
@@ -17428,6 +20510,7 @@ paths:
17428
20510
  - description
17429
20511
  - kind
17430
20512
  - status
20513
+ - category
17431
20514
  - origin
17432
20515
  additionalProperties: false
17433
20516
  - type: object
@@ -17452,6 +20535,17 @@ paths:
17452
20535
  - enabled
17453
20536
  - disabled
17454
20537
  - available
20538
+ category:
20539
+ type: string
20540
+ enum:
20541
+ - communication
20542
+ - productivity
20543
+ - development
20544
+ - media
20545
+ - automation
20546
+ - webSocial
20547
+ - knowledge
20548
+ - integration
17455
20549
  origin:
17456
20550
  type: string
17457
20551
  const: clawhub
@@ -17475,6 +20569,7 @@ paths:
17475
20569
  - description
17476
20570
  - kind
17477
20571
  - status
20572
+ - category
17478
20573
  - origin
17479
20574
  - slug
17480
20575
  - author
@@ -17505,6 +20600,17 @@ paths:
17505
20600
  - enabled
17506
20601
  - disabled
17507
20602
  - available
20603
+ category:
20604
+ type: string
20605
+ enum:
20606
+ - communication
20607
+ - productivity
20608
+ - development
20609
+ - media
20610
+ - automation
20611
+ - webSocial
20612
+ - knowledge
20613
+ - integration
17508
20614
  origin:
17509
20615
  type: string
17510
20616
  const: skillssh
@@ -17546,6 +20652,7 @@ paths:
17546
20652
  - description
17547
20653
  - kind
17548
20654
  - status
20655
+ - category
17549
20656
  - origin
17550
20657
  - slug
17551
20658
  - sourceRepo
@@ -17573,6 +20680,17 @@ paths:
17573
20680
  - enabled
17574
20681
  - disabled
17575
20682
  - available
20683
+ category:
20684
+ type: string
20685
+ enum:
20686
+ - communication
20687
+ - productivity
20688
+ - development
20689
+ - media
20690
+ - automation
20691
+ - webSocial
20692
+ - knowledge
20693
+ - integration
17576
20694
  origin:
17577
20695
  type: string
17578
20696
  const: custom
@@ -17582,6 +20700,7 @@ paths:
17582
20700
  - description
17583
20701
  - kind
17584
20702
  - status
20703
+ - category
17585
20704
  - origin
17586
20705
  additionalProperties: false
17587
20706
  description: Skill objects matching the search query
@@ -17769,6 +20888,15 @@ paths:
17769
20888
  type: string
17770
20889
  objective:
17771
20890
  type: string
20891
+ status:
20892
+ type: string
20893
+ enum:
20894
+ - pending
20895
+ - running
20896
+ - awaiting_input
20897
+ - completed
20898
+ - failed
20899
+ - aborted
17772
20900
  usage:
17773
20901
  type: object
17774
20902
  properties:
@@ -17785,11 +20913,25 @@ paths:
17785
20913
  additionalProperties: false
17786
20914
  events:
17787
20915
  type: array
17788
- items: {}
17789
- description: Subagent event objects
20916
+ items:
20917
+ type: object
20918
+ properties:
20919
+ type:
20920
+ type: string
20921
+ content:
20922
+ type: string
20923
+ toolName:
20924
+ type: string
20925
+ isError:
20926
+ type: boolean
20927
+ messageId:
20928
+ type: string
20929
+ required:
20930
+ - type
20931
+ - content
20932
+ additionalProperties: false
17790
20933
  required:
17791
20934
  - subagentId
17792
- - objective
17793
20935
  - events
17794
20936
  additionalProperties: false
17795
20937
  parameters:
@@ -18086,7 +21228,9 @@ paths:
18086
21228
  surfaceType:
18087
21229
  type: string
18088
21230
  title:
18089
- type: string
21231
+ anyOf:
21232
+ - type: string
21233
+ - type: "null"
18090
21234
  data:
18091
21235
  type: object
18092
21236
  properties: {}
@@ -18622,7 +21766,65 @@ paths:
18622
21766
  properties:
18623
21767
  events:
18624
21768
  type: array
18625
- items: {}
21769
+ items:
21770
+ type: object
21771
+ properties:
21772
+ eventId:
21773
+ type: string
21774
+ conversationId:
21775
+ type: string
21776
+ requestId:
21777
+ type: string
21778
+ timestampMs:
21779
+ type: number
21780
+ sequence:
21781
+ type: number
21782
+ kind:
21783
+ type: string
21784
+ enum:
21785
+ - request_received
21786
+ - request_queued
21787
+ - request_dequeued
21788
+ - llm_call_started
21789
+ - llm_call_finished
21790
+ - assistant_message
21791
+ - tool_started
21792
+ - tool_permission_requested
21793
+ - tool_permission_decided
21794
+ - tool_finished
21795
+ - tool_failed
21796
+ - generation_handoff
21797
+ - message_complete
21798
+ - generation_cancelled
21799
+ - request_error
21800
+ - tool_profiling_summary
21801
+ status:
21802
+ type: string
21803
+ enum:
21804
+ - info
21805
+ - success
21806
+ - warning
21807
+ - error
21808
+ summary:
21809
+ type: string
21810
+ attributes:
21811
+ type: object
21812
+ propertyNames:
21813
+ type: string
21814
+ additionalProperties:
21815
+ anyOf:
21816
+ - type: string
21817
+ - type: number
21818
+ - type: boolean
21819
+ - type: "null"
21820
+ required:
21821
+ - eventId
21822
+ - conversationId
21823
+ - timestampMs
21824
+ - sequence
21825
+ - kind
21826
+ - summary
21827
+ additionalProperties: false
18626
21828
  description: Trace event objects
18627
21829
  required:
18628
21830
  - events
@@ -19012,7 +22214,41 @@ paths:
19012
22214
  properties:
19013
22215
  breakdown:
19014
22216
  type: array
19015
- items: {}
22217
+ items:
22218
+ type: object
22219
+ properties:
22220
+ group:
22221
+ type: string
22222
+ groupId:
22223
+ anyOf:
22224
+ - type: string
22225
+ - type: "null"
22226
+ groupKey:
22227
+ anyOf:
22228
+ - type: string
22229
+ - type: "null"
22230
+ totalInputTokens:
22231
+ type: number
22232
+ totalOutputTokens:
22233
+ type: number
22234
+ totalCacheCreationTokens:
22235
+ type: number
22236
+ totalCacheReadTokens:
22237
+ type: number
22238
+ totalEstimatedCostUsd:
22239
+ type: number
22240
+ eventCount:
22241
+ type: number
22242
+ required:
22243
+ - group
22244
+ - groupId
22245
+ - totalInputTokens
22246
+ - totalOutputTokens
22247
+ - totalCacheCreationTokens
22248
+ - totalCacheReadTokens
22249
+ - totalEstimatedCostUsd
22250
+ - eventCount
22251
+ additionalProperties: false
19016
22252
  description: Grouped usage entries
19017
22253
  required:
19018
22254
  - breakdown
@@ -19053,7 +22289,31 @@ paths:
19053
22289
  properties:
19054
22290
  buckets:
19055
22291
  type: array
19056
- items: {}
22292
+ items:
22293
+ type: object
22294
+ properties:
22295
+ bucketId:
22296
+ type: string
22297
+ date:
22298
+ type: string
22299
+ displayLabel:
22300
+ type: string
22301
+ totalInputTokens:
22302
+ type: number
22303
+ totalOutputTokens:
22304
+ type: number
22305
+ totalEstimatedCostUsd:
22306
+ type: number
22307
+ eventCount:
22308
+ type: number
22309
+ required:
22310
+ - bucketId
22311
+ - date
22312
+ - totalInputTokens
22313
+ - totalOutputTokens
22314
+ - totalEstimatedCostUsd
22315
+ - eventCount
22316
+ additionalProperties: false
19057
22317
  description: Usage bucket objects
19058
22318
  required:
19059
22319
  - buckets
@@ -19105,7 +22365,61 @@ paths:
19105
22365
  properties:
19106
22366
  buckets:
19107
22367
  type: array
19108
- items: {}
22368
+ items:
22369
+ type: object
22370
+ properties:
22371
+ bucketId:
22372
+ type: string
22373
+ date:
22374
+ type: string
22375
+ displayLabel:
22376
+ type: string
22377
+ totalInputTokens:
22378
+ type: number
22379
+ totalOutputTokens:
22380
+ type: number
22381
+ totalEstimatedCostUsd:
22382
+ type: number
22383
+ eventCount:
22384
+ type: number
22385
+ groups:
22386
+ type: object
22387
+ propertyNames:
22388
+ type: string
22389
+ additionalProperties:
22390
+ type: object
22391
+ properties:
22392
+ group:
22393
+ type: string
22394
+ groupKey:
22395
+ anyOf:
22396
+ - type: string
22397
+ - type: "null"
22398
+ totalInputTokens:
22399
+ type: number
22400
+ totalOutputTokens:
22401
+ type: number
22402
+ totalEstimatedCostUsd:
22403
+ type: number
22404
+ eventCount:
22405
+ type: number
22406
+ required:
22407
+ - group
22408
+ - groupKey
22409
+ - totalInputTokens
22410
+ - totalOutputTokens
22411
+ - totalEstimatedCostUsd
22412
+ - eventCount
22413
+ additionalProperties: false
22414
+ required:
22415
+ - bucketId
22416
+ - date
22417
+ - totalInputTokens
22418
+ - totalOutputTokens
22419
+ - totalEstimatedCostUsd
22420
+ - eventCount
22421
+ - groups
22422
+ additionalProperties: false
19109
22423
  description: Grouped usage bucket objects
19110
22424
  required:
19111
22425
  - buckets
@@ -19156,6 +22470,37 @@ paths:
19156
22470
  responses:
19157
22471
  "200":
19158
22472
  description: Successful response
22473
+ content:
22474
+ application/json:
22475
+ schema:
22476
+ type: object
22477
+ properties:
22478
+ totalInputTokens:
22479
+ type: number
22480
+ totalOutputTokens:
22481
+ type: number
22482
+ totalCacheCreationTokens:
22483
+ type: number
22484
+ totalCacheReadTokens:
22485
+ type: number
22486
+ totalEstimatedCostUsd:
22487
+ type: number
22488
+ eventCount:
22489
+ type: number
22490
+ pricedEventCount:
22491
+ type: number
22492
+ unpricedEventCount:
22493
+ type: number
22494
+ required:
22495
+ - totalInputTokens
22496
+ - totalOutputTokens
22497
+ - totalCacheCreationTokens
22498
+ - totalCacheReadTokens
22499
+ - totalEstimatedCostUsd
22500
+ - eventCount
22501
+ - pricedEventCount
22502
+ - unpricedEventCount
22503
+ additionalProperties: false
19159
22504
  parameters:
19160
22505
  - name: from
19161
22506
  in: query
@@ -19904,7 +23249,36 @@ paths:
19904
23249
  type: string
19905
23250
  entries:
19906
23251
  type: array
19907
- items: {}
23252
+ items:
23253
+ type: object
23254
+ properties:
23255
+ name:
23256
+ type: string
23257
+ path:
23258
+ type: string
23259
+ type:
23260
+ type: string
23261
+ enum:
23262
+ - file
23263
+ - directory
23264
+ size:
23265
+ anyOf:
23266
+ - type: number
23267
+ - type: "null"
23268
+ mimeType:
23269
+ anyOf:
23270
+ - type: string
23271
+ - type: "null"
23272
+ modifiedAt:
23273
+ type: string
23274
+ required:
23275
+ - name
23276
+ - path
23277
+ - type
23278
+ - size
23279
+ - mimeType
23280
+ - modifiedAt
23281
+ additionalProperties: false
19908
23282
  description: Directory entry objects
19909
23283
  required:
19910
23284
  - path
@@ -19923,6 +23297,14 @@ paths:
19923
23297
  schema:
19924
23298
  type: string
19925
23299
  description: Include dotfiles (true/false)
23300
+ - name: includeDirSizes
23301
+ in: query
23302
+ required: false
23303
+ schema:
23304
+ type: string
23305
+ description:
23306
+ "Compute recursive byte size for each directory entry (true/false). Budget-bounded — large subtrees may
23307
+ return size: null."
19926
23308
  /v1/workspace/write:
19927
23309
  post:
19928
23310
  operationId: workspace_write_post