@vellumai/assistant 0.11.6 → 0.11.7-staging.2

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 (478) hide show
  1. package/ARCHITECTURE.md +31 -19
  2. package/Dockerfile +1 -0
  3. package/docs/architecture/security.md +3 -3
  4. package/docs/flux-turn-detection-spike.md +8 -7
  5. package/docs/runbook-trusted-contacts.md +14 -0
  6. package/docs/stt-provider-onboarding.md +8 -4
  7. package/knip.json +1 -0
  8. package/node_modules/@vellumai/avatar-manifest/package.json +18 -0
  9. package/node_modules/@vellumai/avatar-manifest/src/__tests__/manifest.test.ts +173 -0
  10. package/node_modules/@vellumai/avatar-manifest/src/__tests__/read.test.ts +114 -0
  11. package/node_modules/@vellumai/avatar-manifest/src/index.ts +29 -0
  12. package/node_modules/@vellumai/avatar-manifest/src/layout.ts +18 -0
  13. package/node_modules/@vellumai/avatar-manifest/src/manifest.ts +156 -0
  14. package/node_modules/@vellumai/avatar-manifest/src/read.ts +109 -0
  15. package/node_modules/@vellumai/avatar-manifest/tsconfig.json +20 -0
  16. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/__tests__/ingress.test.ts +37 -0
  17. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/__tests__/remote-web-pairing.test.ts +389 -0
  18. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/ingress.ts +22 -0
  19. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/remote-web-pairing.ts +508 -18
  20. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/rpc.ts +174 -0
  21. package/node_modules/@vellumai/ces-client/src/http-credentials.ts +161 -0
  22. package/node_modules/@vellumai/ces-client/src/index.ts +1 -0
  23. package/node_modules/@vellumai/environments/package.json +2 -1
  24. package/node_modules/@vellumai/environments/src/shell.test.ts +56 -0
  25. package/node_modules/@vellumai/environments/src/shell.ts +65 -0
  26. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/__tests__/ingress.test.ts +37 -0
  27. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/__tests__/remote-web-pairing.test.ts +389 -0
  28. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/ingress.ts +22 -0
  29. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/remote-web-pairing.ts +508 -18
  30. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/rpc.ts +174 -0
  31. package/node_modules/@vellumai/gateway-client/src/__tests__/contact-read-contracts.test.ts +32 -0
  32. package/node_modules/@vellumai/gateway-client/src/__tests__/gateway-client.test.ts +1 -0
  33. package/node_modules/@vellumai/gateway-client/src/__tests__/inbound-event-kind.test.ts +82 -0
  34. package/node_modules/@vellumai/gateway-client/src/__tests__/plugin-admission-denied-contract.test.ts +56 -0
  35. package/node_modules/@vellumai/gateway-client/src/__tests__/trust-verdict-contract.test.ts +18 -0
  36. package/node_modules/@vellumai/gateway-client/src/admission-policy-contract.ts +5 -11
  37. package/node_modules/@vellumai/gateway-client/src/channel-permission-contract.ts +3 -1
  38. package/node_modules/@vellumai/gateway-client/src/gateway-ipc-contracts.ts +9 -0
  39. package/node_modules/@vellumai/gateway-client/src/inbound-contract.ts +4 -0
  40. package/node_modules/@vellumai/gateway-client/src/inbound-event-kind.ts +75 -0
  41. package/node_modules/@vellumai/gateway-client/src/index.ts +17 -0
  42. package/node_modules/@vellumai/gateway-client/src/outbound-contract.ts +8 -0
  43. package/node_modules/@vellumai/gateway-client/src/plugin-admission-denied-contract.ts +47 -0
  44. package/node_modules/@vellumai/gateway-client/src/trust-verdict-contract.ts +11 -0
  45. package/node_modules/@vellumai/service-contracts/src/__tests__/ingress.test.ts +37 -0
  46. package/node_modules/@vellumai/service-contracts/src/__tests__/remote-web-pairing.test.ts +389 -0
  47. package/node_modules/@vellumai/service-contracts/src/ingress.ts +22 -0
  48. package/node_modules/@vellumai/service-contracts/src/remote-web-pairing.ts +508 -18
  49. package/node_modules/@vellumai/service-contracts/src/rpc.ts +174 -0
  50. package/openapi.yaml +419 -55
  51. package/package.json +4 -1
  52. package/scripts/sync-llm-catalog.ts +6 -0
  53. package/src/__tests__/approval-card-edit-inbound-handoff.test.ts +199 -0
  54. package/src/__tests__/approval-card-edit.test.ts +153 -0
  55. package/src/__tests__/attachments-store-heic-normalize.test.ts +1 -1
  56. package/src/__tests__/available-skills.test.ts +54 -0
  57. package/src/__tests__/avatar-identity-sync.test.ts +5 -1
  58. package/src/__tests__/catalog-install-normalize.test.ts +9 -1
  59. package/src/__tests__/channel-policy.test.ts +1 -3
  60. package/src/__tests__/channel-readiness-discord.test.ts +9 -70
  61. package/src/__tests__/compactor-call-site-logging.test.ts +61 -0
  62. package/src/__tests__/config-loader-backfill.test.ts +69 -0
  63. package/src/__tests__/config-schema.test.ts +2 -3
  64. package/src/__tests__/conversation-agent-loop.test.ts +238 -0
  65. package/src/__tests__/conversation-attachments.test.ts +0 -1
  66. package/src/__tests__/conversation-error.test.ts +44 -0
  67. package/src/__tests__/conversation-evictor.test.ts +19 -0
  68. package/src/__tests__/conversation-fork-referential.test.ts +73 -63
  69. package/src/__tests__/conversation-fork-retrospective.test.ts +99 -74
  70. package/src/__tests__/conversation-runtime-assembly.test.ts +23 -0
  71. package/src/__tests__/conversation-slash.test.ts +9 -0
  72. package/src/__tests__/conversation-title-service.test.ts +97 -0
  73. package/src/__tests__/conversation-tool-setup-attribution.test.ts +16 -0
  74. package/src/__tests__/credential-broker-server-use.test.ts +0 -218
  75. package/src/__tests__/credential-broker.test.ts +43 -420
  76. package/src/__tests__/credential-record-write-through.test.ts +78 -0
  77. package/src/__tests__/credential-routes.test.ts +17 -1
  78. package/src/__tests__/credential-security-invariants.test.ts +8 -9
  79. package/src/__tests__/default-profile-catalog-fallback.test.ts +289 -0
  80. package/src/__tests__/delete-propagation.test.ts +92 -2
  81. package/src/__tests__/discord-callback-round-trip.test.ts +93 -0
  82. package/src/__tests__/discord-channel-config.test.ts +237 -0
  83. package/src/__tests__/edit-propagation.test.ts +42 -2
  84. package/src/__tests__/evict-conversations-for-reload.test.ts +51 -1
  85. package/src/__tests__/fallback-breaker.test.ts +1335 -0
  86. package/src/__tests__/gateway-threshold-reader-mock.ts +6 -0
  87. package/src/__tests__/guardian-card-withdrawal.test.ts +30 -0
  88. package/src/__tests__/handlers-user-message-approval-consumption.test.ts +0 -2
  89. package/src/__tests__/image-conversion.test.ts +38 -4
  90. package/src/__tests__/install-skill-routing.test.ts +25 -0
  91. package/src/__tests__/llm-catalog-parity.test.ts +4 -0
  92. package/src/__tests__/llm-resolver.test.ts +74 -0
  93. package/src/__tests__/llm-schema-fallback-profile.test.ts +359 -0
  94. package/src/__tests__/managed-fallback-dispatch.test.ts +430 -0
  95. package/src/__tests__/managed-profile-guard.test.ts +28 -0
  96. package/src/__tests__/managed-speech-defaults.test.ts +196 -1
  97. package/src/__tests__/mcp-cli.test.ts +23 -1
  98. package/src/__tests__/mcp-tool-annotations-risk.test.ts +43 -34
  99. package/src/__tests__/media-stream-stt-session.test.ts +2 -0
  100. package/src/__tests__/notification-decision-fallback.test.ts +106 -0
  101. package/src/__tests__/notification-discord-adapter.test.ts +162 -0
  102. package/src/__tests__/oauth-connect-orchestrator.test.ts +95 -0
  103. package/src/__tests__/persist-unsendable-image-downscale.test.ts +6 -8
  104. package/src/__tests__/persist-unsendable-image.test.ts +3 -3
  105. package/src/__tests__/platform.test.ts +19 -1
  106. package/src/__tests__/plugin-import-boundary-guard.test.ts +5 -1
  107. package/src/__tests__/provider-catalog-visibility.test.ts +17 -0
  108. package/src/__tests__/provider-platform-proxy-integration.test.ts +8 -1
  109. package/src/__tests__/provider-usage-tracking.test.ts +56 -0
  110. package/src/__tests__/require-fresh-approval.test.ts +5 -2
  111. package/src/__tests__/retry-fallback-escalation.test.ts +1093 -0
  112. package/src/__tests__/schedule-retry.test.ts +183 -4
  113. package/src/__tests__/scheduler-reuse-conversation.test.ts +6 -6
  114. package/src/__tests__/secret-routes-platform-proxy.test.ts +55 -0
  115. package/src/__tests__/skill-load-tool.test.ts +34 -0
  116. package/src/__tests__/skill-tool-factory.test.ts +6 -1
  117. package/src/__tests__/skill-tool-manifest.test.ts +20 -0
  118. package/src/__tests__/skills.test.ts +25 -0
  119. package/src/__tests__/subagent-manager-notify.test.ts +38 -0
  120. package/src/__tests__/terminal-tools.test.ts +2 -0
  121. package/src/__tests__/tool-approval-handler.test.ts +146 -2
  122. package/src/__tests__/tool-approval-seed-content-blocks.test.ts +108 -2
  123. package/src/__tests__/tool-audit.test.ts +111 -40
  124. package/src/__tests__/tool-executor-lifecycle-events.test.ts +228 -18
  125. package/src/__tests__/ui-shape-teaching.test.ts +1 -1
  126. package/src/__tests__/verification-control-plane-policy.test.ts +6 -2
  127. package/src/__tests__/voice-config-update.test.ts +43 -0
  128. package/src/__tests__/workspace-migration-147-rename-colliding-backup-profile-names.test.ts +480 -0
  129. package/src/__tests__/workspace-migration-148-strip-unsupported-fallback-profiles.test.ts +167 -0
  130. package/src/__tests__/workspace-migration-149-repoint-backup-profile-selections.test.ts +144 -0
  131. package/src/agent/loop.ts +31 -2
  132. package/src/approvals/guardian-card-withdrawal.ts +22 -0
  133. package/src/avatar/__tests__/ensure-raster.test.ts +291 -0
  134. package/src/avatar/avatar-manifest.ts +48 -100
  135. package/src/avatar/avatar-store.ts +7 -7
  136. package/src/avatar/ensure-raster.ts +146 -0
  137. package/src/avatar/resvg-lazy.test.ts +0 -1
  138. package/src/avatar/traits-png-sync.ts +9 -10
  139. package/src/background-wake/wake-intent-hooks.test.ts +0 -1
  140. package/src/backup/__tests__/paths.test.ts +6 -2
  141. package/src/backup/paths.ts +6 -4
  142. package/src/bundler/app-compiler.ts +2 -2
  143. package/src/bundler/compiler-tools.test.ts +36 -0
  144. package/src/bundler/compiler-tools.ts +54 -18
  145. package/src/calls/__tests__/telephony-synthesis-language.test.ts +81 -0
  146. package/src/calls/__tests__/voice-session-bridge.test.ts +57 -0
  147. package/src/calls/media-stream-stt-session.ts +2 -1
  148. package/src/calls/telephony-synthesis-language.ts +13 -5
  149. package/src/calls/voice-session-bridge.ts +19 -4
  150. package/src/channels/config.ts +23 -12
  151. package/src/cli/AGENTS.md +3 -1
  152. package/src/cli/commands/backup.help.ts +10 -13
  153. package/src/cli/commands/contacts.help.ts +16 -4
  154. package/src/cli/commands/contacts.ts +5 -1
  155. package/src/cli/commands/credentials.help.ts +1 -1
  156. package/src/cli/commands/inference-providers.ts +18 -53
  157. package/src/cli/commands/mcp.help.ts +6 -5
  158. package/src/cli/commands/mcp.ts +1 -1
  159. package/src/cli/commands/memory/memory-retrospective.ts +1 -0
  160. package/src/cli/commands/stt.help.ts +2 -2
  161. package/src/config/__tests__/backup-schema.test.ts +1 -1
  162. package/src/config/__tests__/default-profile-catalog.test.ts +83 -2
  163. package/src/config/__tests__/loader-sparse-array-cleanup.test.ts +1 -1
  164. package/src/config/__tests__/memory-retrospective-schema.test.ts +12 -15
  165. package/src/config/bundled-skills/computer-use/SKILL.md +6 -6
  166. package/src/config/bundled-skills/computer-use/TOOLS.json +9 -6
  167. package/src/config/bundled-skills/media-processing/services/audio-transcribe.ts +3 -1
  168. package/src/config/bundled-skills/media-processing/services/preprocess.ts +1 -1
  169. package/src/config/bundled-skills/phone-calls/SKILL.md +1 -1
  170. package/src/config/bundled-skills/phone-calls/references/CONFIG.md +16 -15
  171. package/src/config/bundled-skills/phone-calls/references/TROUBLESHOOTING.md +2 -1
  172. package/src/config/bundled-skills/settings/TOOLS.json +11 -5
  173. package/src/config/bundled-skills/settings/tools/open-system-settings.test.ts +85 -0
  174. package/src/config/bundled-skills/settings/tools/open-system-settings.ts +33 -8
  175. package/src/config/bundled-skills/settings/tools/voice-config-update.ts +54 -3
  176. package/src/config/bundled-skills/transcribe/tools/transcribe-media.ts +1 -1
  177. package/src/config/default-profile-catalog.ts +195 -10
  178. package/src/config/default-profile-names.ts +41 -0
  179. package/src/config/feature-flag-registry.json +34 -2
  180. package/src/config/inference-profile-validation.ts +11 -2
  181. package/src/config/llm-resolver.ts +25 -0
  182. package/src/config/loader.ts +3 -0
  183. package/src/config/managed-speech-defaults.ts +160 -10
  184. package/src/config/schema.ts +2 -0
  185. package/src/config/schemas/__tests__/live-voice.test.ts +7 -6
  186. package/src/config/schemas/__tests__/stt.test.ts +94 -0
  187. package/src/config/schemas/backup.ts +1 -1
  188. package/src/config/schemas/channels.ts +32 -0
  189. package/src/config/schemas/live-voice.ts +13 -4
  190. package/src/config/schemas/llm.ts +263 -15
  191. package/src/config/schemas/mcp.ts +10 -2
  192. package/src/config/schemas/memory-retrospective.ts +1 -19
  193. package/src/config/schemas/services.ts +24 -0
  194. package/src/config/schemas/stt.ts +128 -5
  195. package/src/config/seed-inference-profiles.ts +32 -3
  196. package/src/config/skill-state.ts +5 -0
  197. package/src/config/skills.ts +21 -0
  198. package/src/contacts/notify-contacts-changed.ts +5 -2
  199. package/src/context/compactor.ts +74 -1
  200. package/src/daemon/__tests__/conversation-tool-setup.test.ts +138 -1
  201. package/src/daemon/config-watcher.ts +2 -1
  202. package/src/daemon/conversation-agent-loop-handlers.ts +27 -0
  203. package/src/daemon/conversation-agent-loop.ts +86 -10
  204. package/src/daemon/conversation-error.ts +25 -0
  205. package/src/daemon/conversation-evictor.ts +2 -4
  206. package/src/daemon/conversation-runtime-assembly.ts +19 -7
  207. package/src/daemon/conversation-skill-tools.ts +5 -1
  208. package/src/daemon/conversation-slash.ts +2 -2
  209. package/src/daemon/conversation-store.ts +8 -1
  210. package/src/daemon/conversation-tool-setup.ts +37 -0
  211. package/src/daemon/conversation.ts +0 -4
  212. package/src/daemon/handlers/channel-config-result.ts +30 -0
  213. package/src/daemon/handlers/config-discord-channel.ts +301 -0
  214. package/src/daemon/handlers/config-ingress.ts +9 -0
  215. package/src/daemon/handlers/config-slack-channel.ts +13 -15
  216. package/src/daemon/handlers/config-telegram.ts +2 -5
  217. package/src/daemon/handlers/conversations.ts +0 -2
  218. package/src/daemon/handlers/skills.ts +25 -7
  219. package/src/daemon/lifecycle.ts +3 -1
  220. package/src/daemon/message-types/messages.ts +0 -2
  221. package/src/daemon/tool-setup-types.ts +5 -3
  222. package/src/daemon/trust-context-types.test.ts +33 -0
  223. package/src/heartbeat/__tests__/heartbeat-service.test.ts +0 -1
  224. package/src/live-voice/__tests__/live-voice-flux-turn-end.test.ts +58 -4
  225. package/src/live-voice/__tests__/live-voice-managed-speech-fallback.test.ts +8 -3
  226. package/src/live-voice/__tests__/live-voice-session-manager.test.ts +73 -11
  227. package/src/live-voice/__tests__/live-voice-session-preflight.test.ts +148 -2
  228. package/src/live-voice/__tests__/live-voice-session-telemetry.test.ts +64 -0
  229. package/src/live-voice/__tests__/live-voice-stt.test.ts +3 -0
  230. package/src/live-voice/__tests__/live-voice-text-turn.test.ts +391 -0
  231. package/src/live-voice/__tests__/protocol.test.ts +224 -0
  232. package/src/live-voice/live-voice-credential-preflight.ts +5 -1
  233. package/src/live-voice/live-voice-session-manager.ts +39 -2
  234. package/src/live-voice/live-voice-session.ts +224 -9
  235. package/src/live-voice/protocol.ts +187 -1
  236. package/src/messaging/providers/discord/api.ts +2 -1
  237. package/src/messaging/providers/discord/withdraw.ts +62 -0
  238. package/src/messaging/read-provider-metadata.ts +32 -0
  239. package/src/monitoring/__tests__/file-descriptors.test.ts +32 -0
  240. package/src/monitoring/__tests__/process-memory.test.ts +34 -1
  241. package/src/monitoring/db-integrity-sample.ts +1 -0
  242. package/src/monitoring/file-descriptors.ts +39 -6
  243. package/src/monitoring/process-memory.ts +37 -5
  244. package/src/monitoring/resource-sampler.ts +25 -8
  245. package/src/notifications/__tests__/activity-failed-dedupe.test.ts +161 -0
  246. package/src/notifications/__tests__/background-failure-signal.test.ts +107 -0
  247. package/src/notifications/__tests__/connected-channels.test.ts +12 -0
  248. package/src/notifications/__tests__/copy-composer.test.ts +83 -0
  249. package/src/notifications/__tests__/destination-resolver.test.ts +38 -0
  250. package/src/notifications/activity-failed-dedupe.ts +95 -0
  251. package/src/notifications/adapters/discord.ts +132 -0
  252. package/src/notifications/adapters/shared.ts +16 -0
  253. package/src/notifications/adapters/slack.ts +6 -1
  254. package/src/notifications/adapters/telegram.ts +5 -8
  255. package/src/notifications/approval-card-data.ts +94 -1
  256. package/src/notifications/background-failure-signal.ts +116 -0
  257. package/src/notifications/broadcaster.ts +3 -9
  258. package/src/notifications/copy-composer.ts +41 -8
  259. package/src/notifications/decision-engine.ts +55 -0
  260. package/src/notifications/destination-resolver.ts +45 -5
  261. package/src/notifications/emit-signal.ts +19 -5
  262. package/src/notifications/guardian-question-mode.ts +57 -0
  263. package/src/notifications/types.ts +2 -8
  264. package/src/oauth/__tests__/seed-providers-managed.test.ts +18 -0
  265. package/src/oauth/connect-orchestrator.ts +16 -0
  266. package/src/oauth/seed-providers.ts +262 -0
  267. package/src/permissions/checker.test.ts +21 -0
  268. package/src/permissions/checker.ts +6 -0
  269. package/src/permissions/gateway-threshold-reader.test.ts +184 -0
  270. package/src/permissions/gateway-threshold-reader.ts +144 -10
  271. package/src/permissions/prompter.ts +0 -6
  272. package/src/permissions/types.ts +5 -4
  273. package/src/persistence/__tests__/bulk-write-gate.test.ts +0 -38
  274. package/src/persistence/bulk-write-gate.ts +9 -10
  275. package/src/persistence/conversation-crud.ts +88 -134
  276. package/src/persistence/conversation-title-service.ts +43 -29
  277. package/src/persistence/embeddings/embedding-local.ts +14 -85
  278. package/src/persistence/embeddings/embedding-runtime-manager.ts +1 -0
  279. package/src/persistence/lifecycle-events-store.test.ts +50 -0
  280. package/src/persistence/lifecycle-events-store.ts +75 -5
  281. package/src/platform/platform-patch-queue.test.ts +368 -0
  282. package/src/platform/platform-patch-queue.ts +190 -0
  283. package/src/platform/sync-avatar.test.ts +527 -0
  284. package/src/platform/sync-avatar.ts +209 -0
  285. package/src/platform/sync-identity.test.ts +75 -0
  286. package/src/platform/sync-identity.ts +17 -110
  287. package/src/plugin-api/model-profiles.test.ts +2 -2
  288. package/src/plugin-api/model-profiles.ts +7 -7
  289. package/src/plugin-api/transcription-session.ts +1 -1
  290. package/src/plugins/defaults/compaction/window-manager.ts +4 -0
  291. package/src/plugins/defaults/image-recovery/recover.ts +2 -2
  292. package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +133 -34
  293. package/src/plugins/defaults/memory/__tests__/memory-retrospective-prompt.test.ts +21 -31
  294. package/src/plugins/defaults/memory/__tests__/memory-retrospective-provider-path.test.ts +13 -9
  295. package/src/plugins/defaults/memory/__tests__/memory-retrospective-wake-chain.test.ts +31 -4
  296. package/src/plugins/defaults/memory/memory-retrospective-constants.ts +0 -11
  297. package/src/plugins/defaults/memory/memory-retrospective-fork-boundary.ts +27 -13
  298. package/src/plugins/defaults/memory/memory-retrospective-job.ts +183 -113
  299. package/src/plugins/defaults/memory/memory-retrospective-prompt.ts +13 -13
  300. package/src/plugins/defaults/memory/src/memory-v2-routes.ts +2 -2
  301. package/src/plugins/defaults/memory/substrate/__tests__/consolidation-job.test.ts +1 -1
  302. package/src/plugins/defaults/memory/substrate/consolidation-job.ts +4 -2
  303. package/src/plugins/defaults/memory/substrate/sweep-job.ts +9 -42
  304. package/src/plugins/defaults/memory/v2/rerank-local.ts +1 -0
  305. package/src/plugins/defaults/memory/worker.ts +7 -0
  306. package/src/providers/__tests__/provider-secret-catalog.test.ts +1 -0
  307. package/src/providers/__tests__/retry-callsite.test.ts +55 -0
  308. package/src/providers/__tests__/vellum-connection-routing.test.ts +21 -3
  309. package/src/providers/connection-resolution.ts +2 -17
  310. package/src/providers/fallback-breaker.ts +389 -0
  311. package/src/providers/inference/__tests__/adapter-factory-opencode.test.ts +92 -0
  312. package/src/providers/inference/__tests__/base-url-route-validation.test.ts +16 -0
  313. package/src/providers/inference/__tests__/base-url-security.test.ts +12 -0
  314. package/src/providers/inference/adapter-factory.ts +246 -3
  315. package/src/providers/inference/auth.ts +15 -14
  316. package/src/providers/inference/chatgpt-subscription-auth.ts +70 -0
  317. package/src/providers/inference/chatgpt-subscription-credentials.ts +84 -0
  318. package/src/providers/inference/resolve-auth.ts +1 -1
  319. package/src/providers/media-resolve.ts +2 -3
  320. package/src/providers/model-catalog.ts +100 -0
  321. package/src/providers/openai/__tests__/api-error-normalization.test.ts +22 -0
  322. package/src/providers/openai/__tests__/chat-template-flatten.test.ts +198 -0
  323. package/src/providers/openai/api-error-normalization.ts +13 -0
  324. package/src/providers/openai/chat-completions-provider.ts +84 -0
  325. package/src/providers/opencode/client.test.ts +150 -0
  326. package/src/providers/opencode/client.ts +61 -0
  327. package/src/providers/platform-proxy/constants.ts +5 -0
  328. package/src/providers/provider-resolvability.ts +20 -0
  329. package/src/providers/provider-secret-catalog.ts +3 -2
  330. package/src/providers/retry.ts +956 -68
  331. package/src/providers/speech-to-text/__tests__/deepgram-flux-frames.test.ts +42 -0
  332. package/src/providers/speech-to-text/__tests__/deepgram-flux-realtime.test.ts +136 -0
  333. package/src/providers/speech-to-text/__tests__/provider-catalog.test.ts +120 -0
  334. package/src/providers/speech-to-text/__tests__/resolve.test.ts +316 -12
  335. package/src/providers/speech-to-text/deepgram-flux-frames.ts +83 -3
  336. package/src/providers/speech-to-text/deepgram-flux-realtime.ts +132 -4
  337. package/src/providers/speech-to-text/provider-catalog.ts +191 -3
  338. package/src/providers/speech-to-text/resolve.ts +132 -24
  339. package/src/providers/speech-to-text/vellum-managed-flux-realtime.ts +296 -0
  340. package/src/providers/types.ts +39 -0
  341. package/src/providers/usage-tracking.ts +12 -1
  342. package/src/providers/vellum/client.ts +29 -0
  343. package/src/providers/vellum-model-routing.test.ts +2 -0
  344. package/src/providers/vellum-model-routing.ts +3 -3
  345. package/src/runtime/AGENTS.md +1 -2
  346. package/src/runtime/__tests__/agent-wake.test.ts +105 -3
  347. package/src/runtime/__tests__/background-job-runner.test.ts +89 -3
  348. package/src/runtime/agent-wake.ts +44 -5
  349. package/src/runtime/background-job-runner.ts +68 -50
  350. package/src/runtime/channel-readiness-service.ts +0 -39
  351. package/src/runtime/http-server.ts +12 -4
  352. package/src/runtime/routes/__tests__/avatar-state-routes.test.ts +18 -18
  353. package/src/runtime/routes/__tests__/backup-routes.test.ts +9 -5
  354. package/src/runtime/routes/__tests__/chatgpt-subscription-auth-routes.test.ts +372 -0
  355. package/src/runtime/routes/__tests__/contact-routes.test.ts +7 -0
  356. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +96 -0
  357. package/src/runtime/routes/__tests__/inference-profiles-routes.test.ts +37 -0
  358. package/src/runtime/routes/__tests__/ingress-status-routes.test.ts +2 -1
  359. package/src/runtime/routes/__tests__/mcp-add-default-risk.test.ts +87 -0
  360. package/src/runtime/routes/acp-claude-auth-routes.ts +25 -54
  361. package/src/runtime/routes/approval-routes.ts +0 -12
  362. package/src/runtime/routes/avatar-routes.ts +17 -30
  363. package/src/runtime/routes/backup-routes.ts +2 -2
  364. package/src/runtime/routes/chatgpt-subscription-auth-routes.ts +296 -113
  365. package/src/runtime/routes/contact-prompt-routes.ts +65 -6
  366. package/src/runtime/routes/contact-routes.ts +20 -15
  367. package/src/runtime/routes/conversation-query-routes.ts +98 -10
  368. package/src/runtime/routes/conversation-routes.ts +2 -2
  369. package/src/runtime/routes/credential-routes.ts +2 -1
  370. package/src/runtime/routes/guardian-approval-interception.ts +12 -9
  371. package/src/runtime/routes/inbound-message-handler.ts +47 -48
  372. package/src/runtime/routes/inbound-stages/acl-enforcement.ts +18 -13
  373. package/src/runtime/routes/inbound-stages/admission-policy.ts +2 -2
  374. package/src/runtime/routes/inbound-stages/edit-intercept.ts +20 -2
  375. package/src/runtime/routes/inbound-stages/reaction-intercept.ts +9 -8
  376. package/src/runtime/routes/inbound-stages/transcribe-audio.ts +1 -1
  377. package/src/runtime/routes/index.ts +2 -0
  378. package/src/runtime/routes/inference-profile-session-handler.ts +2 -2
  379. package/src/runtime/routes/inference-profiles-routes.ts +12 -7
  380. package/src/runtime/routes/inference-provider-connection-routes.ts +2 -2
  381. package/src/runtime/routes/inference-send-routes.ts +2 -2
  382. package/src/runtime/routes/ingress-status-routes.ts +2 -2
  383. package/src/runtime/routes/integrations/discord.ts +119 -0
  384. package/src/runtime/routes/llm-call-sites-routes.ts +2 -2
  385. package/src/runtime/routes/mcp-auth-routes.ts +12 -6
  386. package/src/runtime/routes/migration-routes.ts +3 -1
  387. package/src/runtime/routes/oauth-pending-flows.ts +136 -0
  388. package/src/runtime/routes/secret-routes.ts +7 -0
  389. package/src/runtime/routes/stt-routes.ts +38 -6
  390. package/src/runtime/routes/wake-conversation-routes.ts +8 -1
  391. package/src/runtime/routes/watch-routes.ts +9 -5
  392. package/src/runtime/sync/resource-sync-events.ts +2 -0
  393. package/src/runtime/trust-verdict-consumer.ts +3 -3
  394. package/src/schedule/__tests__/worker-feature-flags.test.ts +58 -0
  395. package/src/schedule/retry-policy.ts +8 -8
  396. package/src/schedule/run-script.ts +14 -23
  397. package/src/schedule/schedule-recovery.ts +0 -1
  398. package/src/schedule/scheduler.ts +89 -51
  399. package/src/schedule/worker.ts +57 -0
  400. package/src/security/__tests__/openai-device-auth.test.ts +355 -0
  401. package/src/security/ces-rpc-record-backend.ts +123 -0
  402. package/src/security/oauth2.ts +7 -0
  403. package/src/security/openai-device-auth.ts +364 -0
  404. package/src/security/secure-keys.ts +15 -0
  405. package/src/skills/available-skills.ts +10 -1
  406. package/src/skills/catalog-install.ts +19 -1
  407. package/src/skills/inline-command-runner.ts +6 -2
  408. package/src/skills/platform-compatibility.test.ts +49 -0
  409. package/src/skills/platform-compatibility.ts +65 -0
  410. package/src/skills/tool-manifest.ts +20 -0
  411. package/src/stt/__tests__/roles.test.ts +152 -0
  412. package/src/stt/daemon-batch-transcriber.ts +4 -1
  413. package/src/stt/roles.ts +180 -0
  414. package/src/stt/stt-stream-session.ts +3 -2
  415. package/src/stt/types.ts +33 -3
  416. package/src/subagent/manager.ts +12 -0
  417. package/src/telemetry/__tests__/live-voice-funnel.test.ts +34 -0
  418. package/src/telemetry/live-voice-funnel.ts +12 -2
  419. package/src/telemetry/telemetry-wire.generated.ts +6 -0
  420. package/src/telemetry/tool-audit.ts +83 -30
  421. package/src/telemetry/tool-executed-events-store.test.ts +0 -1
  422. package/src/telemetry/turn-outcome.ts +75 -4
  423. package/src/tools/client-os.ts +115 -0
  424. package/src/tools/computer-use/definitions.ts +11 -7
  425. package/src/tools/computer-use/skill-proxy-bridge.ts +2 -2
  426. package/src/tools/credentials/broker-types.ts +0 -71
  427. package/src/tools/credentials/broker.ts +6 -201
  428. package/src/tools/credentials/metadata-store.ts +65 -16
  429. package/src/tools/credentials/store.ts +2 -0
  430. package/src/tools/executor.ts +2 -8
  431. package/src/tools/host-shell.test.ts +75 -0
  432. package/src/tools/host-shell.ts +24 -0
  433. package/src/tools/host-terminal/host-shell.ts +15 -44
  434. package/src/tools/mcp/mcp-tool-factory.ts +44 -9
  435. package/src/tools/permission-checker.ts +73 -21
  436. package/src/tools/policy-context.ts +1 -0
  437. package/src/tools/shared/filesystem/image-read.ts +1 -1
  438. package/src/tools/skills/find-similar-skills.ts +10 -2
  439. package/src/tools/skills/load.ts +41 -6
  440. package/src/tools/skills/sandbox-runner.ts +8 -16
  441. package/src/tools/skills/skill-tool-factory.ts +1 -0
  442. package/src/tools/terminal/__tests__/safe-env.test.ts +64 -1
  443. package/src/tools/terminal/safe-env.ts +39 -9
  444. package/src/tools/terminal/shell.ts +12 -31
  445. package/src/tools/tool-approval-handler.ts +64 -10
  446. package/src/tools/tool-types.ts +10 -0
  447. package/src/tools/types.ts +19 -3
  448. package/src/tools/ui-surface/surface-shape-docs.ts +4 -3
  449. package/src/tools/workflows/manage-workflows.ts +2 -2
  450. package/src/tools/workflows/run-workflow.test.ts +2 -1
  451. package/src/util/__tests__/file-use.test.ts +61 -0
  452. package/src/util/__tests__/process-table.test.ts +66 -0
  453. package/src/util/__tests__/process-tree.test.ts +46 -0
  454. package/src/util/errors.ts +1 -0
  455. package/src/util/file-use.ts +91 -0
  456. package/src/util/host-process.test.ts +17 -0
  457. package/src/util/host-process.ts +75 -0
  458. package/src/util/image-conversion.ts +39 -7
  459. package/src/util/platform.ts +32 -13
  460. package/src/util/process-table.ts +249 -0
  461. package/src/util/process-tree.ts +85 -129
  462. package/src/util/provider-error-patterns.ts +20 -0
  463. package/src/util/spawn.ts +9 -2
  464. package/src/watch/__tests__/watch-retro.test.ts +48 -1
  465. package/src/watch/watch-retro.ts +46 -4
  466. package/src/workspace/git-service.ts +4 -14
  467. package/src/workspace/migrations/147-rename-colliding-backup-profile-names.ts +360 -0
  468. package/src/workspace/migrations/148-strip-unsupported-fallback-profiles.ts +117 -0
  469. package/src/workspace/migrations/149-repoint-backup-profile-selections.ts +204 -0
  470. package/src/workspace/migrations/150-stt-flux-provider-to-model-family.ts +139 -0
  471. package/src/workspace/migrations/__tests__/150-stt-flux-provider-to-model-family.test.ts +160 -0
  472. package/src/workspace/migrations/registry.ts +8 -0
  473. package/src/__tests__/permission-types.test.ts +0 -17
  474. package/src/channels/gateway-discord-admission.ts +0 -32
  475. package/src/persistence/fork-message-copy.ts +0 -239
  476. package/src/plugins/defaults/memory/__tests__/fork-message-copy.test.ts +0 -221
  477. package/src/security/__tests__/oauth2-device-code.test.ts +0 -431
  478. package/src/security/oauth2-device-code.ts +0 -312
package/openapi.yaml CHANGED
@@ -3,7 +3,7 @@
3
3
  openapi: 3.1.0
4
4
  info:
5
5
  title: Vellum Assistant API
6
- version: 0.11.6
6
+ version: 0.11.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
@@ -2766,8 +2766,8 @@ paths:
2766
2766
  operationId: backup_destinations_get
2767
2767
  summary: List configured offsite backup destinations
2768
2768
  description:
2769
- Returns the current offsite destinations array, materializing the iCloud Drive default when no explicit
2770
- array is configured.
2769
+ Returns the current offsite destinations array. When no explicit array is configured, macOS materializes
2770
+ its encrypted iCloud Drive default while Windows and Linux return no implicit destination.
2771
2771
  tags:
2772
2772
  - backups
2773
2773
  responses:
@@ -2799,8 +2799,8 @@ paths:
2799
2799
  operationId: backup_destinations_add_post
2800
2800
  summary: Add an offsite backup destination
2801
2801
  description:
2802
- Appends a new destination. Materializes the iCloud default first if destinations is currently null. Errors
2803
- if the path already exists.
2802
+ Appends a new destination. Materializes the platform default first if destinations is currently null.
2803
+ Errors if the path already exists.
2804
2804
  tags:
2805
2805
  - backups
2806
2806
  requestBody:
@@ -4190,6 +4190,14 @@ paths:
4190
4190
  type: string
4191
4191
  content:
4192
4192
  type: string
4193
+ eventKind:
4194
+ type: string
4195
+ enum:
4196
+ - message
4197
+ - edit
4198
+ - delete
4199
+ - reaction
4200
+ - button
4193
4201
  isEdit:
4194
4202
  type: boolean
4195
4203
  callbackQueryId:
@@ -4342,6 +4350,15 @@ paths:
4342
4350
  - type: "null"
4343
4351
  memberDisplayName:
4344
4352
  type: string
4353
+ autoApproveThreshold:
4354
+ anyOf:
4355
+ - type: string
4356
+ enum:
4357
+ - none
4358
+ - low
4359
+ - medium
4360
+ - high
4361
+ - type: "null"
4345
4362
  interactionCount:
4346
4363
  type: number
4347
4364
  hasInterceptableVerificationSession:
@@ -5223,6 +5240,10 @@ paths:
5223
5240
  required:
5224
5241
  - profile
5225
5242
  - weight
5243
+ fallbackProfile:
5244
+ readOnly: true
5245
+ type: string
5246
+ minLength: 1
5226
5247
  responses:
5227
5248
  "200":
5228
5249
  description: Successful response
@@ -5320,12 +5341,6 @@ paths:
5320
5341
  decision:
5321
5342
  type: string
5322
5343
  description: "One of: allow, deny"
5323
- selectedPattern:
5324
- type: string
5325
- description: Allowlist pattern for persistent decisions
5326
- selectedScope:
5327
- type: string
5328
- description: Scope for persistent decisions
5329
5344
  required:
5330
5345
  - requestId
5331
5346
  - decision
@@ -5524,6 +5539,38 @@ paths:
5524
5539
  - runs
5525
5540
  - nextCursor
5526
5541
  additionalProperties: false
5542
+ /v1/contact_prompt_flags:
5543
+ post:
5544
+ operationId: contact_prompt_flags_post
5545
+ summary: Read flags for a pending contact prompt
5546
+ description: Returns whether the pending prompt asked the gateway to mark the submitted channel verified.
5547
+ tags:
5548
+ - contacts
5549
+ requestBody:
5550
+ required: true
5551
+ content:
5552
+ application/json:
5553
+ schema:
5554
+ type: object
5555
+ properties:
5556
+ requestId:
5557
+ type: string
5558
+ description: The pending contact_request id.
5559
+ required:
5560
+ - requestId
5561
+ responses:
5562
+ "200":
5563
+ description: Successful response
5564
+ content:
5565
+ application/json:
5566
+ schema:
5567
+ type: object
5568
+ properties:
5569
+ verify:
5570
+ type: boolean
5571
+ required:
5572
+ - verify
5573
+ additionalProperties: false
5527
5574
  /v1/contact-channels/{contactChannelId}:
5528
5575
  patch:
5529
5576
  operationId: contactchannels_by_contactChannelId_patch
@@ -5593,6 +5640,15 @@ paths:
5593
5640
  anyOf:
5594
5641
  - type: number
5595
5642
  - type: "null"
5643
+ autoApproveThreshold:
5644
+ anyOf:
5645
+ - type: string
5646
+ enum:
5647
+ - none
5648
+ - low
5649
+ - medium
5650
+ - high
5651
+ - type: "null"
5596
5652
  createdAt:
5597
5653
  type: number
5598
5654
  updatedAt:
@@ -5757,6 +5813,15 @@ paths:
5757
5813
  anyOf:
5758
5814
  - type: number
5759
5815
  - type: "null"
5816
+ autoApproveThreshold:
5817
+ anyOf:
5818
+ - type: string
5819
+ enum:
5820
+ - none
5821
+ - low
5822
+ - medium
5823
+ - high
5824
+ - type: "null"
5760
5825
  createdAt:
5761
5826
  type: number
5762
5827
  updatedAt:
@@ -5890,6 +5955,15 @@ paths:
5890
5955
  anyOf:
5891
5956
  - type: number
5892
5957
  - type: "null"
5958
+ autoApproveThreshold:
5959
+ anyOf:
5960
+ - type: string
5961
+ enum:
5962
+ - none
5963
+ - low
5964
+ - medium
5965
+ - high
5966
+ - type: "null"
5893
5967
  createdAt:
5894
5968
  type: number
5895
5969
  updatedAt:
@@ -6294,6 +6368,15 @@ paths:
6294
6368
  anyOf:
6295
6369
  - type: number
6296
6370
  - type: "null"
6371
+ autoApproveThreshold:
6372
+ anyOf:
6373
+ - type: string
6374
+ enum:
6375
+ - none
6376
+ - low
6377
+ - medium
6378
+ - high
6379
+ - type: "null"
6297
6380
  createdAt:
6298
6381
  type: number
6299
6382
  updatedAt:
@@ -6412,6 +6495,9 @@ paths:
6412
6495
  - guardian
6413
6496
  - trusted-contact
6414
6497
  - unknown
6498
+ verify:
6499
+ description: When true, submitting the address also marks the channel verified. Same attest as Contacts Verify me.
6500
+ type: boolean
6415
6501
  responses:
6416
6502
  "200":
6417
6503
  description: Successful response
@@ -6493,6 +6579,15 @@ paths:
6493
6579
  anyOf:
6494
6580
  - type: number
6495
6581
  - type: "null"
6582
+ autoApproveThreshold:
6583
+ anyOf:
6584
+ - type: string
6585
+ enum:
6586
+ - none
6587
+ - low
6588
+ - medium
6589
+ - high
6590
+ - type: "null"
6496
6591
  createdAt:
6497
6592
  type: number
6498
6593
  updatedAt:
@@ -14830,6 +14925,110 @@ paths:
14830
14925
  required:
14831
14926
  - ok
14832
14927
  additionalProperties: false
14928
+ /v1/inference/chatgpt-subscription/device-auth:
14929
+ post:
14930
+ operationId: inference_chatgptsubscription_deviceauth_post
14931
+ summary: Start ChatGPT subscription device-code sign-in
14932
+ description:
14933
+ Mint a short user code the user types at OpenAI's device page, and start a background poll that stores the
14934
+ tokens and upserts the provider connection once the sign-in is approved. Returns immediately; poll
14935
+ `.../device-auth/status/{state}` for the outcome. The account must have device-code authorization for Codex
14936
+ enabled in its ChatGPT security settings.
14937
+ tags:
14938
+ - inference
14939
+ responses:
14940
+ "200":
14941
+ description: Successful response
14942
+ content:
14943
+ application/json:
14944
+ schema:
14945
+ type: object
14946
+ properties:
14947
+ state:
14948
+ type: string
14949
+ user_code:
14950
+ type: string
14951
+ verification_url:
14952
+ type: string
14953
+ expires_at:
14954
+ type: string
14955
+ interval_seconds:
14956
+ type: number
14957
+ required:
14958
+ - state
14959
+ - user_code
14960
+ - verification_url
14961
+ - expires_at
14962
+ - interval_seconds
14963
+ additionalProperties: false
14964
+ /v1/inference/chatgpt-subscription/device-auth/{state}:
14965
+ delete:
14966
+ operationId: inference_chatgptsubscription_deviceauth_by_state_delete
14967
+ summary: Cancel a ChatGPT subscription device-code sign-in
14968
+ description:
14969
+ Stop the background poll for a device-code sign-in the user walked away from, and mark the flow `error`
14970
+ with code `aborted`. A flow that already settled is left as it is. 404s an unknown state.
14971
+ tags:
14972
+ - inference
14973
+ parameters:
14974
+ - name: state
14975
+ in: path
14976
+ required: true
14977
+ schema:
14978
+ type: string
14979
+ responses:
14980
+ "200":
14981
+ description: Successful response
14982
+ content:
14983
+ application/json:
14984
+ schema:
14985
+ type: object
14986
+ properties:
14987
+ cancelled:
14988
+ type: boolean
14989
+ required:
14990
+ - cancelled
14991
+ additionalProperties: false
14992
+ "404":
14993
+ description: No active device sign-in for the given state
14994
+ /v1/inference/chatgpt-subscription/device-auth/status/{state}:
14995
+ get:
14996
+ operationId: inference_chatgptsubscription_deviceauth_status_by_state_get
14997
+ summary: Poll ChatGPT subscription device-code sign-in status
14998
+ description:
14999
+ Returns the current status of an in-flight device-code sign-in (pending/connected/error) so the client
15000
+ knows when the tokens have landed. A failure carries OpenAI's error code in `error_code`.
15001
+ tags:
15002
+ - inference
15003
+ parameters:
15004
+ - name: state
15005
+ in: path
15006
+ required: true
15007
+ schema:
15008
+ type: string
15009
+ responses:
15010
+ "200":
15011
+ description: Successful response
15012
+ content:
15013
+ application/json:
15014
+ schema:
15015
+ type: object
15016
+ properties:
15017
+ status:
15018
+ type: string
15019
+ enum:
15020
+ - pending
15021
+ - connected
15022
+ - error
15023
+ error:
15024
+ type: string
15025
+ error_code:
15026
+ type: string
15027
+ required:
15028
+ - status
15029
+ additionalProperties: false
15030
+ "404":
15031
+ description: No active device sign-in for the given state
14833
15032
  /v1/inference/models:
14834
15033
  get:
14835
15034
  operationId: inference_models_get
@@ -14847,7 +15046,7 @@ paths:
14847
15046
  type: string
14848
15047
  description:
14849
15048
  "Filter by provider id. One of: anthropic, openai, gemini, ollama, fireworks, together, openrouter,
14850
- vercel-ai-gateway, litellm, openai-compatible, minimax, atlascloud, baseten, poolside"
15049
+ vercel-ai-gateway, litellm, opencode, openai-compatible, minimax, atlascloud, baseten, poolside, vellum"
14851
15050
  responses:
14852
15051
  "200":
14853
15052
  description: Successful response
@@ -14988,8 +15187,8 @@ paths:
14988
15187
  description: Profile not found
14989
15188
  "409":
14990
15189
  description:
14991
- Profile is still referenced by activeProfile, advisorProfile, a call site, a default-tier override, or a
14992
- mix arm
15190
+ Profile is still referenced by activeProfile, advisorProfile, a call site, a default-tier override, a mix
15191
+ arm, or another profile's fallbackProfile
14993
15192
  get:
14994
15193
  operationId: inference_profiles_by_name_get
14995
15194
  summary: Get an effective inference profile
@@ -15119,7 +15318,8 @@ paths:
15119
15318
  type: string
15120
15319
  description:
15121
15320
  "Filter by provider. One of: anthropic, openai, gemini, ollama, fireworks, together, openrouter,
15122
- vercel-ai-gateway, litellm, openai-compatible, minimax, atlascloud, baseten, poolside, vellum, chatgpt"
15321
+ vercel-ai-gateway, litellm, opencode, openai-compatible, minimax, atlascloud, baseten, poolside, vellum,
15322
+ chatgpt"
15123
15323
  responses:
15124
15324
  "200":
15125
15325
  description: Successful response
@@ -15589,6 +15789,129 @@ paths:
15589
15789
  required:
15590
15790
  - success
15591
15791
  additionalProperties: false
15792
+ /v1/integrations/discord/config:
15793
+ delete:
15794
+ operationId: integrations_discord_config_delete
15795
+ summary: Clear Discord config
15796
+ description:
15797
+ Clear the stored Discord bot token, which disconnects the bot on the gateway's next watcher tick. Room
15798
+ choices are left alone.
15799
+ tags:
15800
+ - integrations
15801
+ responses:
15802
+ "200":
15803
+ description: Successful response
15804
+ content:
15805
+ application/json:
15806
+ schema:
15807
+ type: object
15808
+ properties:
15809
+ success:
15810
+ type: boolean
15811
+ hasBotToken:
15812
+ type: boolean
15813
+ connected:
15814
+ type: boolean
15815
+ error:
15816
+ type: string
15817
+ botUserId:
15818
+ type: string
15819
+ botUsername:
15820
+ type: string
15821
+ applicationId:
15822
+ type: string
15823
+ inviteUrl:
15824
+ type: string
15825
+ required:
15826
+ - success
15827
+ - hasBotToken
15828
+ - connected
15829
+ additionalProperties: false
15830
+ get:
15831
+ operationId: integrations_discord_config_get
15832
+ summary: Get Discord config
15833
+ description: Check whether a Discord bot token is configured.
15834
+ tags:
15835
+ - integrations
15836
+ responses:
15837
+ "200":
15838
+ description: Successful response
15839
+ content:
15840
+ application/json:
15841
+ schema:
15842
+ type: object
15843
+ properties:
15844
+ success:
15845
+ type: boolean
15846
+ hasBotToken:
15847
+ type: boolean
15848
+ connected:
15849
+ type: boolean
15850
+ error:
15851
+ type: string
15852
+ botUserId:
15853
+ type: string
15854
+ botUsername:
15855
+ type: string
15856
+ applicationId:
15857
+ type: string
15858
+ inviteUrl:
15859
+ type: string
15860
+ required:
15861
+ - success
15862
+ - hasBotToken
15863
+ - connected
15864
+ additionalProperties: false
15865
+ post:
15866
+ operationId: integrations_discord_config_post
15867
+ summary: Set Discord config
15868
+ description:
15869
+ "Validate a Discord bot token and store it. Storing it is what connects the bot: the gateway's Discord
15870
+ client is credential-gated and starts on the watcher's next tick."
15871
+ tags:
15872
+ - integrations
15873
+ requestBody:
15874
+ required: true
15875
+ content:
15876
+ application/json:
15877
+ schema:
15878
+ type: object
15879
+ properties:
15880
+ botToken:
15881
+ type: string
15882
+ minLength: 1
15883
+ description: Discord bot token
15884
+ required:
15885
+ - botToken
15886
+ responses:
15887
+ "200":
15888
+ description: Successful response
15889
+ content:
15890
+ application/json:
15891
+ schema:
15892
+ type: object
15893
+ properties:
15894
+ success:
15895
+ type: boolean
15896
+ hasBotToken:
15897
+ type: boolean
15898
+ connected:
15899
+ type: boolean
15900
+ error:
15901
+ type: string
15902
+ botUserId:
15903
+ type: string
15904
+ botUsername:
15905
+ type: string
15906
+ applicationId:
15907
+ type: string
15908
+ inviteUrl:
15909
+ type: string
15910
+ required:
15911
+ - success
15912
+ - hasBotToken
15913
+ - connected
15914
+ additionalProperties: false
15592
15915
  /v1/integrations/ingress/config:
15593
15916
  get:
15594
15917
  operationId: integrations_ingress_config_get
@@ -15748,12 +16071,14 @@ paths:
15748
16071
  type: boolean
15749
16072
  hasBotToken:
15750
16073
  type: boolean
16074
+ connected:
16075
+ type: boolean
16076
+ error:
16077
+ type: string
15751
16078
  hasAppToken:
15752
16079
  type: boolean
15753
16080
  hasUserToken:
15754
16081
  type: boolean
15755
- connected:
15756
- type: boolean
15757
16082
  teamId:
15758
16083
  type: string
15759
16084
  teamName:
@@ -15769,16 +16094,14 @@ paths:
15769
16094
  enum:
15770
16095
  - mention_only
15771
16096
  - mention_then_thread
15772
- error:
15773
- type: string
15774
16097
  warning:
15775
16098
  type: string
15776
16099
  required:
15777
16100
  - success
15778
16101
  - hasBotToken
16102
+ - connected
15779
16103
  - hasAppToken
15780
16104
  - hasUserToken
15781
- - connected
15782
16105
  - threadMode
15783
16106
  additionalProperties: false
15784
16107
  get:
@@ -15799,12 +16122,14 @@ paths:
15799
16122
  type: boolean
15800
16123
  hasBotToken:
15801
16124
  type: boolean
16125
+ connected:
16126
+ type: boolean
16127
+ error:
16128
+ type: string
15802
16129
  hasAppToken:
15803
16130
  type: boolean
15804
16131
  hasUserToken:
15805
16132
  type: boolean
15806
- connected:
15807
- type: boolean
15808
16133
  teamId:
15809
16134
  type: string
15810
16135
  teamName:
@@ -15820,16 +16145,14 @@ paths:
15820
16145
  enum:
15821
16146
  - mention_only
15822
16147
  - mention_then_thread
15823
- error:
15824
- type: string
15825
16148
  warning:
15826
16149
  type: string
15827
16150
  required:
15828
16151
  - success
15829
16152
  - hasBotToken
16153
+ - connected
15830
16154
  - hasAppToken
15831
16155
  - hasUserToken
15832
- - connected
15833
16156
  - threadMode
15834
16157
  additionalProperties: false
15835
16158
  patch:
@@ -15863,12 +16186,14 @@ paths:
15863
16186
  type: boolean
15864
16187
  hasBotToken:
15865
16188
  type: boolean
16189
+ connected:
16190
+ type: boolean
16191
+ error:
16192
+ type: string
15866
16193
  hasAppToken:
15867
16194
  type: boolean
15868
16195
  hasUserToken:
15869
16196
  type: boolean
15870
- connected:
15871
- type: boolean
15872
16197
  teamId:
15873
16198
  type: string
15874
16199
  teamName:
@@ -15884,16 +16209,14 @@ paths:
15884
16209
  enum:
15885
16210
  - mention_only
15886
16211
  - mention_then_thread
15887
- error:
15888
- type: string
15889
16212
  warning:
15890
16213
  type: string
15891
16214
  required:
15892
16215
  - success
15893
16216
  - hasBotToken
16217
+ - connected
15894
16218
  - hasAppToken
15895
16219
  - hasUserToken
15896
- - connected
15897
16220
  - threadMode
15898
16221
  additionalProperties: false
15899
16222
  post:
@@ -15930,12 +16253,14 @@ paths:
15930
16253
  type: boolean
15931
16254
  hasBotToken:
15932
16255
  type: boolean
16256
+ connected:
16257
+ type: boolean
16258
+ error:
16259
+ type: string
15933
16260
  hasAppToken:
15934
16261
  type: boolean
15935
16262
  hasUserToken:
15936
16263
  type: boolean
15937
- connected:
15938
- type: boolean
15939
16264
  teamId:
15940
16265
  type: string
15941
16266
  teamName:
@@ -15951,16 +16276,14 @@ paths:
15951
16276
  enum:
15952
16277
  - mention_only
15953
16278
  - mention_then_thread
15954
- error:
15955
- type: string
15956
16279
  warning:
15957
16280
  type: string
15958
16281
  required:
15959
16282
  - success
15960
16283
  - hasBotToken
16284
+ - connected
15961
16285
  - hasAppToken
15962
16286
  - hasUserToken
15963
- - connected
15964
16287
  - threadMode
15965
16288
  additionalProperties: false
15966
16289
  /v1/integrations/telegram/commands:
@@ -15982,18 +16305,18 @@ paths:
15982
16305
  type: boolean
15983
16306
  hasBotToken:
15984
16307
  type: boolean
16308
+ connected:
16309
+ type: boolean
16310
+ error:
16311
+ type: string
15985
16312
  botId:
15986
16313
  type: string
15987
16314
  botUsername:
15988
16315
  type: string
15989
- connected:
15990
- type: boolean
15991
16316
  hasWebhookSecret:
15992
16317
  type: boolean
15993
16318
  lastError:
15994
16319
  type: string
15995
- error:
15996
- type: string
15997
16320
  commandsRegistered:
15998
16321
  type: array
15999
16322
  items:
@@ -16025,18 +16348,18 @@ paths:
16025
16348
  type: boolean
16026
16349
  hasBotToken:
16027
16350
  type: boolean
16351
+ connected:
16352
+ type: boolean
16353
+ error:
16354
+ type: string
16028
16355
  botId:
16029
16356
  type: string
16030
16357
  botUsername:
16031
16358
  type: string
16032
- connected:
16033
- type: boolean
16034
16359
  hasWebhookSecret:
16035
16360
  type: boolean
16036
16361
  lastError:
16037
16362
  type: string
16038
- error:
16039
- type: string
16040
16363
  commandsRegistered:
16041
16364
  type: array
16042
16365
  items:
@@ -16067,18 +16390,18 @@ paths:
16067
16390
  type: boolean
16068
16391
  hasBotToken:
16069
16392
  type: boolean
16393
+ connected:
16394
+ type: boolean
16395
+ error:
16396
+ type: string
16070
16397
  botId:
16071
16398
  type: string
16072
16399
  botUsername:
16073
16400
  type: string
16074
- connected:
16075
- type: boolean
16076
16401
  hasWebhookSecret:
16077
16402
  type: boolean
16078
16403
  lastError:
16079
16404
  type: string
16080
- error:
16081
- type: string
16082
16405
  commandsRegistered:
16083
16406
  type: array
16084
16407
  items:
@@ -16121,18 +16444,18 @@ paths:
16121
16444
  type: boolean
16122
16445
  hasBotToken:
16123
16446
  type: boolean
16447
+ connected:
16448
+ type: boolean
16449
+ error:
16450
+ type: string
16124
16451
  botId:
16125
16452
  type: string
16126
16453
  botUsername:
16127
16454
  type: string
16128
- connected:
16129
- type: boolean
16130
16455
  hasWebhookSecret:
16131
16456
  type: boolean
16132
16457
  lastError:
16133
16458
  type: string
16134
- error:
16135
- type: string
16136
16459
  commandsRegistered:
16137
16460
  type: array
16138
16461
  items:
@@ -16164,18 +16487,18 @@ paths:
16164
16487
  type: boolean
16165
16488
  hasBotToken:
16166
16489
  type: boolean
16490
+ connected:
16491
+ type: boolean
16492
+ error:
16493
+ type: string
16167
16494
  botId:
16168
16495
  type: string
16169
16496
  botUsername:
16170
16497
  type: string
16171
- connected:
16172
- type: boolean
16173
16498
  hasWebhookSecret:
16174
16499
  type: boolean
16175
16500
  lastError:
16176
16501
  type: string
16177
- error:
16178
- type: string
16179
16502
  commandsRegistered:
16180
16503
  type: array
16181
16504
  items:
@@ -31044,6 +31367,16 @@ paths:
31044
31367
  enum:
31045
31368
  - manual
31046
31369
  - auto
31370
+ modelFamilies:
31371
+ type: array
31372
+ items:
31373
+ type: string
31374
+ baseModelFamily:
31375
+ type: string
31376
+ turnDetectionLanguages:
31377
+ type: array
31378
+ items:
31379
+ type: string
31047
31380
  credentialsGuide:
31048
31381
  type: string
31049
31382
  required:
@@ -31662,6 +31995,26 @@ paths:
31662
31995
  type: string
31663
31996
  minLength: 1
31664
31997
  maxLength: 64
31998
+ tool_name:
31999
+ type: string
32000
+ minLength: 1
32001
+ maxLength: 255
32002
+ risk_level:
32003
+ type: string
32004
+ minLength: 1
32005
+ maxLength: 32
32006
+ risk_threshold:
32007
+ type: string
32008
+ minLength: 1
32009
+ maxLength: 32
32010
+ surface:
32011
+ type: string
32012
+ minLength: 1
32013
+ maxLength: 64
32014
+ conversation_id:
32015
+ type: string
32016
+ minLength: 1
32017
+ maxLength: 128
31665
32018
  required:
31666
32019
  - event_name
31667
32020
  description:
@@ -34758,6 +35111,12 @@ components:
34758
35111
  - profile
34759
35112
  - weight
34760
35113
  - type: "null"
35114
+ fallbackProfile:
35115
+ anyOf:
35116
+ - readOnly: true
35117
+ type: string
35118
+ minLength: 1
35119
+ - type: "null"
34761
35120
  additionalProperties: {}
34762
35121
  ProfileStatus:
34763
35122
  type: string
@@ -34942,6 +35301,7 @@ components:
34942
35301
  - openrouter
34943
35302
  - vercel-ai-gateway
34944
35303
  - litellm
35304
+ - opencode
34945
35305
  - openai-compatible
34946
35306
  - minimax
34947
35307
  - atlascloud
@@ -35529,6 +35889,10 @@ components:
35529
35889
  - profile
35530
35890
  - weight
35531
35891
  additionalProperties: false
35892
+ fallbackProfile:
35893
+ readOnly: true
35894
+ type: string
35895
+ minLength: 1
35532
35896
  supportsVision:
35533
35897
  type: boolean
35534
35898
  invariant: