@vellumai/assistant 0.12.1-dev.202609141913.5e16607 → 0.12.1-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 (439) hide show
  1. package/AGENTS.md +0 -4
  2. package/ARCHITECTURE.md +12 -11
  3. package/docs/architecture/turn-actor.md +8 -15
  4. package/docs/guardian-request-flow.md +0 -16
  5. package/openapi.yaml +49 -291
  6. package/package.json +1 -1
  7. package/src/__tests__/always-loaded-tools-guard.test.ts +10 -18
  8. package/src/__tests__/app-compiler.test.ts +0 -6
  9. package/src/__tests__/app-control-tool-schemas.test.ts +2 -5
  10. package/src/__tests__/app-dir-path-guard.test.ts +3 -1
  11. package/src/__tests__/app-source-watcher.test.ts +218 -0
  12. package/src/{calls/__tests__ → __tests__}/call-controller.test.ts +82 -503
  13. package/src/__tests__/computer-use-skill-proxy-bridge.test.ts +2 -5
  14. package/src/__tests__/computer-use-tools.test.ts +5 -17
  15. package/src/__tests__/config-schema-cmd.test.ts +2 -2
  16. package/src/__tests__/config-schema.test.ts +29 -28
  17. package/src/__tests__/config-watcher-skill-reseed.test.ts +359 -0
  18. package/src/__tests__/config-watcher.test.ts +8 -23
  19. package/src/__tests__/connection-model-compat.test.ts +2 -2
  20. package/src/__tests__/conversation-key-store-disk-view.test.ts +1 -1
  21. package/src/__tests__/conversation-pairing.test.ts +0 -26
  22. package/src/__tests__/conversation-process-app-control-preactivation.test.ts +10 -4
  23. package/src/__tests__/conversation-queue.test.ts +207 -48
  24. package/src/__tests__/conversation-retry-discard.test.ts +1 -54
  25. package/src/__tests__/conversation-skill-tools.test.ts +0 -27
  26. package/src/__tests__/conversation-surfaces-app-control.test.ts +3 -8
  27. package/src/__tests__/conversation-surfaces-task-progress.test.ts +0 -67
  28. package/src/__tests__/conversation-title-service.test.ts +10 -14
  29. package/src/__tests__/conversation-tool-setup-app-refresh.test.ts +5 -3
  30. package/src/__tests__/conversation-tool-setup-attribution.test.ts +0 -51
  31. package/src/__tests__/credential-record-retire.test.ts +1 -171
  32. package/src/__tests__/credential-routes.test.ts +3 -212
  33. package/src/__tests__/credential-security-invariants.test.ts +2 -4
  34. package/src/__tests__/cu-unified-flow.test.ts +2 -8
  35. package/src/__tests__/document-sync-tags.test.ts +0 -25
  36. package/src/__tests__/drain-kick-guard.test.ts +2 -0
  37. package/src/__tests__/drain-requeue-on-contention.test.ts +6 -0
  38. package/src/__tests__/evict-conversations-for-reload.test.ts +1 -1
  39. package/src/__tests__/host-bash-proxy.test.ts +45 -26
  40. package/src/__tests__/host-browser-proxy.test.ts +17 -6
  41. package/src/__tests__/host-file-proxy-targeted.test.ts +0 -23
  42. package/src/__tests__/host-file-proxy.test.ts +23 -11
  43. package/src/__tests__/host-transfer-proxy-targeted.test.ts +9 -30
  44. package/src/__tests__/llm-catalog-parity.test.ts +0 -25
  45. package/src/__tests__/mcp-auth-routes.test.ts +9 -6
  46. package/src/__tests__/mcp-config-secret-boundary.test.ts +136 -78
  47. package/src/__tests__/mcp-health-check.test.ts +11 -8
  48. package/src/__tests__/mcp-list-plugin-servers.test.ts +10 -8
  49. package/src/{calls/__tests__ → __tests__}/media-stream-audio-transcode.test.ts +1 -1
  50. package/src/{calls/__tests__ → __tests__}/media-stream-output.test.ts +8 -37
  51. package/src/{calls/__tests__ → __tests__}/media-stream-parser.test.ts +1 -1
  52. package/src/{calls/__tests__ → __tests__}/media-stream-server-integration.test.ts +57 -150
  53. package/src/{calls/__tests__ → __tests__}/media-stream-stt-session.test.ts +5 -5
  54. package/src/{calls/__tests__ → __tests__}/media-turn-detector.test.ts +1 -1
  55. package/src/__tests__/messages-after-tiebreaker.test.ts +0 -91
  56. package/src/__tests__/messages-read-boundary-guard.test.ts +1 -1
  57. package/src/__tests__/messaging-send-tool.test.ts +548 -355
  58. package/src/__tests__/model-intents.test.ts +0 -3
  59. package/src/__tests__/notification-vellum-adapter.test.ts +2 -85
  60. package/src/__tests__/outlook-messaging-provider.test.ts +6 -6
  61. package/src/__tests__/platform-callback-registration.test.ts +16 -8
  62. package/src/__tests__/platform-client-verify-credential.test.ts +0 -2
  63. package/src/__tests__/plugin-import-boundary-guard.test.ts +0 -13
  64. package/src/__tests__/script-proxy-certs.test.ts +0 -35
  65. package/src/__tests__/skill-feature-flags-integration.test.ts +1 -1
  66. package/src/__tests__/skill-feature-flags.test.ts +2 -2
  67. package/src/__tests__/speaker-identification.test.ts +56 -0
  68. package/src/__tests__/subagent-tool-gate-mode.test.ts +3 -19
  69. package/src/__tests__/subagent-tools.test.ts +2 -3
  70. package/src/__tests__/telephony-tts-guard.test.ts +3 -38
  71. package/src/__tests__/vellum-self-knowledge-inline-command.test.ts +0 -4
  72. package/src/{calls/__tests__/voice-session-bridge-turn-flow.test.ts → __tests__/voice-session-bridge.test.ts} +12 -20
  73. package/src/__tests__/watch-retro-tool-availability.test.ts +17 -8
  74. package/src/__tests__/workspace-git-service.test.ts +0 -26
  75. package/src/acp/__tests__/agent-process.test.ts +4 -258
  76. package/src/acp/__tests__/auth-required.test.ts +0 -96
  77. package/src/acp/__tests__/client-handler.test.ts +2 -90
  78. package/src/acp/__tests__/session-manager-persistence.test.ts +1 -5
  79. package/src/acp/__tests__/session-manager-resume.test.ts +6 -270
  80. package/src/acp/__tests__/session-manager-usage.test.ts +2 -4
  81. package/src/acp/__tests__/session-manager.test.ts +4 -895
  82. package/src/acp/agent-process.test.ts +1 -4
  83. package/src/acp/agent-process.ts +9 -94
  84. package/src/acp/auth-required.ts +1 -50
  85. package/src/acp/auto-install.test.ts +7 -9
  86. package/src/acp/client-handler.ts +3 -16
  87. package/src/acp/resolve-agent.test.ts +6 -220
  88. package/src/acp/resolve-agent.ts +23 -88
  89. package/src/acp/session-manager.test.ts +3 -196
  90. package/src/acp/session-manager.ts +18 -441
  91. package/src/acp/types.ts +5 -50
  92. package/src/api/events/app-files-changed.ts +3 -4
  93. package/src/api/events/notification-intent.ts +0 -2
  94. package/src/api/index.ts +0 -6
  95. package/src/apps/app-store.ts +1 -1
  96. package/src/bundler/app-compiler.ts +0 -15
  97. package/src/calls/__tests__/voice-control-protocol.test.ts +25 -58
  98. package/src/calls/__tests__/voice-session-bridge.test.ts +1 -37
  99. package/src/calls/__tests__/voice-triage-escalate.test.ts +0 -105
  100. package/src/calls/call-constants.ts +4 -24
  101. package/src/calls/call-controller.ts +199 -499
  102. package/src/calls/call-transport.ts +0 -16
  103. package/src/calls/media-stream-output.ts +0 -32
  104. package/src/calls/media-stream-server.ts +30 -82
  105. package/src/calls/media-stream-stt-session.ts +0 -15
  106. package/src/calls/resolve-call-tts-provider.ts +2 -33
  107. package/src/calls/speaker-identification.ts +233 -0
  108. package/src/calls/tts-call-strategy.ts +5 -9
  109. package/src/calls/types.ts +0 -2
  110. package/src/calls/voice-control-protocol.ts +21 -53
  111. package/src/calls/voice-session-bridge.ts +46 -59
  112. package/src/calls/voice-triage-escalate.ts +56 -175
  113. package/src/cli/commands/apps.help.ts +13 -67
  114. package/src/cli/commands/apps.ts +0 -183
  115. package/src/cli/commands/bash.help.ts +13 -8
  116. package/src/cli/commands/bash.ts +25 -7
  117. package/src/cli/commands/channels/index.help.ts +2 -70
  118. package/src/cli/commands/channels/index.ts +3 -16
  119. package/src/cli/commands/credentials.help.ts +2 -6
  120. package/src/cli/commands/credentials.ts +2 -2
  121. package/src/cli/commands/mcp.help.ts +8 -8
  122. package/src/cli/commands/mcp.ts +1 -1
  123. package/src/cli/commands/roadmap.help.ts +1 -5
  124. package/src/cli/commands/roadmap.ts +1 -1
  125. package/src/cli/lib/bundled-marketplace.json +90 -103
  126. package/src/config/__tests__/default-profile-catalog.test.ts +0 -22
  127. package/src/config/__tests__/memory-retrospective-schema.test.ts +1 -15
  128. package/src/config/__tests__/platform-rehydration.test.ts +9 -99
  129. package/src/config/acp-defaults.test.ts +3 -13
  130. package/src/config/acp-defaults.ts +6 -23
  131. package/src/config/acp-schema.ts +2 -30
  132. package/src/config/bundled-skills/acp/SKILL.md +14 -22
  133. package/src/config/bundled-skills/acp/TOOLS.json +1 -5
  134. package/src/config/bundled-skills/app-builder/SKILL.md +9 -12
  135. package/src/config/bundled-skills/app-builder/references/CUSTOM_ROUTES.md +1 -1
  136. package/src/config/bundled-skills/messaging/SKILL.md +3 -3
  137. package/src/config/bundled-skills/messaging/TOOLS.json +3 -3
  138. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +139 -67
  139. package/src/config/bundled-skills/phone-calls/references/TRANSCRIPTS.md +1 -1
  140. package/src/config/bundled-skills/schedule/SKILL.md +4 -3
  141. package/src/config/bundled-skills/screen-annotation/SKILL.md +1 -8
  142. package/src/config/bundled-skills/screen-annotation/tools/screen-annotation.test.ts +1 -4
  143. package/src/config/bundled-skills/skill-management/TOOLS.json +2 -2
  144. package/src/config/default-profile-catalog.ts +1 -1
  145. package/src/config/env.ts +2 -2
  146. package/src/config/feature-flag-registry.json +12 -24
  147. package/src/config/loader.ts +0 -1
  148. package/src/config/memory-v3-gate.test.ts +0 -31
  149. package/src/config/memory-v3-gate.ts +16 -20
  150. package/src/config/platform-rehydration.ts +27 -11
  151. package/src/config/schema.ts +2 -2
  152. package/src/config/schemas/__tests__/live-voice.test.ts +158 -8
  153. package/src/config/schemas/calls.ts +28 -1
  154. package/src/config/schemas/live-voice.ts +173 -1
  155. package/src/config/schemas/mcp.ts +1 -1
  156. package/src/config/schemas/memory-retrospective.ts +0 -10
  157. package/src/config/schemas/services.ts +0 -8
  158. package/src/config/schemas/skills.ts +14 -0
  159. package/src/credential-execution/process-manager.test.ts +19 -18
  160. package/src/daemon/__tests__/conversation-tool-setup.test.ts +121 -66
  161. package/src/daemon/__tests__/plugin-mcp-reconcile.test.ts +1 -4
  162. package/src/daemon/app-source-watcher.ts +218 -0
  163. package/src/daemon/config-watcher.ts +194 -13
  164. package/src/daemon/conversation-process.ts +64 -35
  165. package/src/daemon/conversation-skill-tools.ts +31 -13
  166. package/src/daemon/conversation-store.ts +1 -1
  167. package/src/daemon/conversation-surfaces.ts +8 -10
  168. package/src/daemon/conversation-tool-setup.ts +43 -37
  169. package/src/daemon/conversation.ts +3 -0
  170. package/src/daemon/host-bash-proxy.ts +12 -8
  171. package/src/daemon/host-browser-proxy.ts +1 -15
  172. package/src/daemon/host-file-proxy.ts +10 -8
  173. package/src/daemon/host-transfer-proxy.ts +18 -14
  174. package/src/daemon/lifecycle.ts +5 -0
  175. package/src/daemon/mcp-reload-service.ts +5 -5
  176. package/src/daemon/message-types/sync.ts +0 -1
  177. package/src/daemon/orphan-reaper.ts +1 -1
  178. package/src/daemon/providers-setup.ts +1 -1
  179. package/src/daemon/shutdown-handlers.ts +9 -1
  180. package/src/daemon/skill-memory-refresh.ts +0 -64
  181. package/src/daemon/tool-side-effects.ts +18 -7
  182. package/src/home/__tests__/feed-writer.test.ts +0 -22
  183. package/src/home/feed-writer.ts +2 -11
  184. package/src/hooks/types.ts +0 -33
  185. package/src/inbound/platform-callback-registration.ts +5 -4
  186. package/src/live-voice/__tests__/live-voice-metrics.test.ts +3 -0
  187. package/src/live-voice/__tests__/live-voice-progress.test.ts +15 -15
  188. package/src/live-voice/__tests__/live-voice-vad.test.ts +2 -2
  189. package/src/{calls → live-voice}/__tests__/progress-narration.test.ts +4 -4
  190. package/src/{calls → live-voice}/__tests__/progress-phrases.test.ts +1 -1
  191. package/src/live-voice/__tests__/runtime-websocket-shell.test.ts +69 -13
  192. package/src/live-voice/live-voice-session.ts +693 -213
  193. package/src/{calls → live-voice}/progress-narration.ts +2 -2
  194. package/src/live-voice/protocol.ts +2 -0
  195. package/src/mcp/__tests__/effective-config.test.ts +2 -2
  196. package/src/mcp/effective-config.ts +3 -3
  197. package/src/mcp/mcp-header-store.ts +45 -29
  198. package/src/mcp/startup.ts +4 -8
  199. package/src/messaging/provider.ts +3 -10
  200. package/src/messaging/providers/callback-routing.ts +0 -18
  201. package/src/messaging/providers/channel-transport.ts +0 -56
  202. package/src/messaging/providers/discord/transport.ts +0 -17
  203. package/src/messaging/providers/slack/__tests__/adapter-token-routing.test.ts +17 -6
  204. package/src/messaging/providers/slack/adapter.ts +44 -7
  205. package/src/messaging/providers/slack/transport.ts +0 -16
  206. package/src/messaging/providers/telegram-bot/adapter.ts +48 -1
  207. package/src/messaging/providers/telegram-bot/client.ts +26 -0
  208. package/src/messaging/providers/telegram-bot/transport.ts +0 -20
  209. package/src/messaging/providers/whatsapp/adapter.ts +48 -1
  210. package/src/messaging/providers/whatsapp/client.ts +29 -0
  211. package/src/messaging/providers/whatsapp/transport.ts +0 -18
  212. package/src/monitoring/__tests__/workspace-git-heartbeat.test.ts +0 -8
  213. package/src/notifications/__tests__/assistant-reply-producer.test.ts +0 -55
  214. package/src/notifications/__tests__/guardian-feed-projection.test.ts +2 -158
  215. package/src/notifications/__tests__/home-feed-side-effect.test.ts +3 -153
  216. package/src/notifications/__tests__/schedule-result-producer.test.ts +3 -99
  217. package/src/notifications/adapters/macos.ts +0 -3
  218. package/src/notifications/assistant-reply-producer.ts +3 -8
  219. package/src/notifications/conversation-pairing.ts +16 -36
  220. package/src/notifications/delivered-post-record.ts +1 -11
  221. package/src/notifications/guardian-feed-projection.ts +5 -125
  222. package/src/notifications/home-feed-side-effect.ts +7 -55
  223. package/src/notifications/schedule-result-producer.ts +22 -66
  224. package/src/oauth/__tests__/seed-providers-managed.test.ts +0 -54
  225. package/src/oauth/byo-connection.test.ts +0 -45
  226. package/src/oauth/byo-connection.ts +6 -36
  227. package/src/oauth/connection-resolver.test.ts +0 -73
  228. package/src/oauth/connection-resolver.ts +2 -95
  229. package/src/oauth/seed-providers.ts +0 -165
  230. package/src/outbound-proxy/certs.ts +5 -3
  231. package/src/permissions/checker.test.ts +6 -11
  232. package/src/persistence/compaction-log-store-clickhouse.ts +3 -3
  233. package/src/persistence/conversation-crud.ts +63 -71
  234. package/src/persistence/conversation-lineage.ts +4 -12
  235. package/src/persistence/conversation-title-service.ts +26 -9
  236. package/src/persistence/llm-request-log-sink-clickhouse.ts +3 -3
  237. package/src/persistence/llm-request-log-source-clickhouse.ts +3 -3
  238. package/src/persistence/message-reads.ts +0 -30
  239. package/src/persistence/migrations/157-invite-contact-id.ts +6 -18
  240. package/src/persistence/schema/memory-core.ts +0 -5
  241. package/src/platform/client.test.ts +2 -4
  242. package/src/platform/client.ts +10 -2
  243. package/src/plugin-api/constants.ts +0 -2
  244. package/src/plugin-api/index.ts +0 -1
  245. package/src/plugin-api/types.ts +0 -2
  246. package/src/plugins/defaults/index.ts +0 -2
  247. package/src/plugins/defaults/memory/__tests__/memory-retrospective-accounting.test.ts +0 -46
  248. package/src/plugins/defaults/memory/__tests__/memory-retrospective-enqueue.test.ts +5 -9
  249. package/src/plugins/defaults/memory/__tests__/memory-retrospective-job.test.ts +10 -20
  250. package/src/plugins/defaults/memory/__tests__/memory-retrospective-state.test.ts +0 -219
  251. package/src/plugins/defaults/memory/__tests__/memory-retrospective-sweep.test.ts +0 -31
  252. package/src/plugins/defaults/memory/__tests__/memory-retrospective-trigger-check.test.ts +0 -63
  253. package/src/plugins/defaults/memory/__tests__/shutdown-hook.test.ts +0 -4
  254. package/src/plugins/defaults/memory/graph/capability-seed.ts +6 -4
  255. package/src/plugins/defaults/memory/hooks/init.ts +0 -10
  256. package/src/plugins/defaults/memory/hooks/shutdown.ts +0 -2
  257. package/src/plugins/defaults/memory/jobs-worker.ts +0 -13
  258. package/src/plugins/defaults/memory/memory-retrospective-accounting.ts +60 -34
  259. package/src/plugins/defaults/memory/memory-retrospective-enqueue.ts +5 -3
  260. package/src/plugins/defaults/memory/memory-retrospective-job.ts +3 -12
  261. package/src/plugins/defaults/memory/memory-retrospective-state.ts +71 -312
  262. package/src/plugins/defaults/memory/memory-retrospective-sweep.ts +1 -2
  263. package/src/plugins/defaults/memory/memory-retrospective-trigger-check.ts +3 -5
  264. package/src/plugins/defaults/memory/startup.ts +1 -6
  265. package/src/plugins/defaults/memory/substrate/__tests__/skill-content.test.ts +9 -7
  266. package/src/plugins/defaults/memory/substrate/skill-content.ts +2 -2
  267. package/src/plugins/defaults/memory/v3/__tests__/pool-select.test.ts +0 -89
  268. package/src/plugins/defaults/memory/worker.ts +0 -6
  269. package/src/plugins/mcp-servers.ts +75 -15
  270. package/src/providers/__tests__/connection-model-compat.test.ts +3 -3
  271. package/src/providers/gemini/client.ts +23 -9
  272. package/src/providers/inference/auth.ts +3 -2
  273. package/src/providers/inference/connection-availability.ts +8 -27
  274. package/src/providers/inference/resolve-auth.ts +4 -22
  275. package/src/providers/model-catalog.ts +0 -34
  276. package/src/providers/model-intents.ts +5 -10
  277. package/src/providers/openai/__tests__/chat-completions-provider-reasoning.test.ts +18 -146
  278. package/src/providers/openai/__tests__/tool-choice-mapping.test.ts +1 -83
  279. package/src/providers/openai/chat-completions-provider.ts +78 -192
  280. package/src/providers/openai/codex-models.ts +4 -0
  281. package/src/runtime/AGENTS.md +0 -2
  282. package/src/runtime/auth/same-actor.ts +3 -38
  283. package/src/runtime/http-server.ts +151 -160
  284. package/src/runtime/routes/__tests__/acp-routes.test.ts +4 -159
  285. package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +1 -108
  286. package/src/runtime/routes/__tests__/default-provider-routes.test.ts +2 -2
  287. package/src/runtime/routes/__tests__/mcp-add-default-risk.test.ts +12 -16
  288. package/src/runtime/routes/acp-routes.test.ts +0 -15
  289. package/src/runtime/routes/acp-routes.ts +9 -72
  290. package/src/runtime/routes/app-management-routes.ts +0 -73
  291. package/src/runtime/routes/app-routes.ts +1 -1
  292. package/src/runtime/routes/conversation-list-routes.ts +3 -14
  293. package/src/runtime/routes/conversation-query-routes.ts +0 -40
  294. package/src/runtime/routes/credential-routes.ts +10 -19
  295. package/src/runtime/routes/debug-bash-routes.ts +173 -0
  296. package/src/runtime/routes/diagnostics-routes.ts +3 -55
  297. package/src/runtime/routes/index.ts +2 -4
  298. package/src/runtime/routes/log-export-routes.ts +0 -2
  299. package/src/runtime/routes/mcp-auth-routes.ts +47 -39
  300. package/src/runtime/routes/migration-routes.ts +20 -6
  301. package/src/runtime/routes/platform-routes.ts +15 -18
  302. package/src/runtime/services/__tests__/conversation-serializer.test.ts +0 -28
  303. package/src/runtime/services/conversation-serializer.ts +3 -16
  304. package/src/runtime/sync/resource-sync-events.ts +1 -2
  305. package/src/schedule/worker.ts +1 -1
  306. package/src/security/ces-rpc-record-backend.ts +0 -7
  307. package/src/subagent/consult-context.ts +25 -12
  308. package/src/tools/acp/list-agents.test.ts +1 -3
  309. package/src/tools/acp/spawn.test.ts +11 -146
  310. package/src/tools/acp/spawn.ts +3 -21
  311. package/src/tools/acp/status.ts +3 -40
  312. package/src/tools/app-control/skill-proxy-bridge.ts +1 -2
  313. package/src/tools/capability-offer.test.ts +2 -22
  314. package/src/tools/capability-offer.ts +1 -16
  315. package/src/tools/computer-use/definitions.ts +2 -4
  316. package/src/tools/computer-use/skill-proxy-bridge.ts +1 -2
  317. package/src/tools/credentials/metadata-store.ts +0 -100
  318. package/src/tools/host-filesystem/edit.test.ts +1 -2
  319. package/src/tools/host-filesystem/edit.ts +2 -2
  320. package/src/tools/host-filesystem/read.test.ts +1 -2
  321. package/src/tools/host-filesystem/read.ts +2 -2
  322. package/src/tools/host-filesystem/transfer.test.ts +1 -2
  323. package/src/tools/host-filesystem/transfer.ts +2 -2
  324. package/src/tools/host-filesystem/write.test.ts +1 -2
  325. package/src/tools/host-filesystem/write.ts +2 -2
  326. package/src/tools/host-terminal/host-shell.test.ts +0 -16
  327. package/src/tools/host-terminal/host-shell.ts +20 -4
  328. package/src/tools/policy-context.ts +7 -6
  329. package/src/tools/subagent/spawn.ts +8 -5
  330. package/src/tools/watch/watch-retro-report.ts +8 -0
  331. package/src/util/__tests__/language-subtag.test.ts +1 -23
  332. package/src/util/fs-watcher-error.ts +36 -0
  333. package/src/util/language-subtag.ts +0 -16
  334. package/src/util/platform.ts +0 -8
  335. package/src/workspace/git-service.ts +54 -5
  336. package/src/workspace/migrations/registry.ts +0 -6
  337. package/scripts/smoke-desktop-window-theme.ts +0 -186
  338. package/src/__tests__/git-porcelain.test.ts +0 -47
  339. package/src/__tests__/helpers/set-workspace-mcp.ts +0 -11
  340. package/src/__tests__/message-deleted-hook-dispatch.test.ts +0 -119
  341. package/src/__tests__/resolve-app.test.ts +0 -135
  342. package/src/__tests__/service-account-token.test.ts +0 -247
  343. package/src/__tests__/source-fingerprint.test.ts +0 -184
  344. package/src/__tests__/workspace-migration-154-repair-retired-codex-gpt-5-4-model-ids.test.ts +0 -336
  345. package/src/acp/__tests__/helpers/acp-model-option.ts +0 -51
  346. package/src/acp/model-config.test.ts +0 -166
  347. package/src/acp/model-config.ts +0 -138
  348. package/src/api/events/acp-session-model-update.test.ts +0 -88
  349. package/src/api/events/acp-session-model-update.ts +0 -46
  350. package/src/apps/resolve-app.ts +0 -81
  351. package/src/apps/source-fingerprint.ts +0 -266
  352. package/src/calls/__tests__/barge-in-guard.test.ts +0 -81
  353. package/src/calls/__tests__/voice-leg-coordinator.test.ts +0 -229
  354. package/src/calls/__tests__/voice-progress-cadence.test.ts +0 -274
  355. package/src/calls/barge-in-guard.ts +0 -118
  356. package/src/calls/voice-leg-coordinator.ts +0 -189
  357. package/src/calls/voice-progress-cadence.ts +0 -423
  358. package/src/cli/commands/__tests__/apps.test.ts +0 -245
  359. package/src/cli/commands/__tests__/bash.test.ts +0 -53
  360. package/src/cli/commands/__tests__/roadmap.help.test.ts +0 -19
  361. package/src/cli/commands/channels/__tests__/send.test.ts +0 -218
  362. package/src/cli/commands/channels/send.ts +0 -128
  363. package/src/config/__tests__/platform-identity.test.ts +0 -255
  364. package/src/config/acp-agent-write.ts +0 -43
  365. package/src/config/acp-schema.test.ts +0 -81
  366. package/src/config/platform-identity.ts +0 -201
  367. package/src/config/schemas/__tests__/voice.test.ts +0 -148
  368. package/src/config/schemas/voice.ts +0 -150
  369. package/src/daemon/__tests__/skill-memory-refresh-mtime.test.ts +0 -133
  370. package/src/daemon/app-change-notify.ts +0 -45
  371. package/src/desktop/__tests__/fake-desktop.ts +0 -119
  372. package/src/desktop/desktop-chrome-policy.test.ts +0 -71
  373. package/src/desktop/desktop-chrome-policy.ts +0 -42
  374. package/src/desktop/desktop-dependencies.test.ts +0 -102
  375. package/src/desktop/desktop-dependencies.ts +0 -306
  376. package/src/desktop/desktop-feature.test.ts +0 -18
  377. package/src/desktop/desktop-feature.ts +0 -19
  378. package/src/desktop/desktop-panel-config.test.ts +0 -135
  379. package/src/desktop/desktop-panel-config.ts +0 -149
  380. package/src/desktop/desktop-session-manager.test.ts +0 -627
  381. package/src/desktop/desktop-session-manager.ts +0 -814
  382. package/src/desktop/desktop-stream-bridge.test.ts +0 -395
  383. package/src/desktop/desktop-stream-bridge.ts +0 -214
  384. package/src/desktop/desktop-wallpaper.test.ts +0 -191
  385. package/src/desktop/desktop-wallpaper.ts +0 -113
  386. package/src/desktop/desktop-window-theme.ts +0 -170
  387. package/src/i18n/AGENTS.md +0 -22
  388. package/src/i18n/__tests__/i18n.test.ts +0 -108
  389. package/src/i18n/index.ts +0 -16
  390. package/src/i18n/locales.ts +0 -93
  391. package/src/i18n/messages.ts +0 -61
  392. package/src/i18n/title.ts +0 -25
  393. package/src/mcp/__tests__/workspace-mcp-config.test.ts +0 -135
  394. package/src/mcp/spec-schema.ts +0 -111
  395. package/src/mcp/workspace-mcp-config.ts +0 -188
  396. package/src/messaging/providers/__tests__/proactive-address.test.ts +0 -95
  397. package/src/persistence/conversation-title-placeholders.ts +0 -23
  398. package/src/persistence/message-cursor.ts +0 -78
  399. package/src/persistence/migrations/__tests__/157-invite-contact-id.test.ts +0 -149
  400. package/src/plugins/defaults/memory/__tests__/memory-retrospective-cursor-backfill.test.ts +0 -118
  401. package/src/plugins/defaults/memory/__tests__/memory-retrospective-cursor-preserve.test.ts +0 -83
  402. package/src/plugins/defaults/memory/hooks/message-deleted.ts +0 -21
  403. package/src/plugins/defaults/memory/memory-retrospective-cursor-backfill.ts +0 -126
  404. package/src/plugins/defaults/memory/memory-retrospective-cursor-preserve.ts +0 -79
  405. package/src/plugins/defaults/memory/memory-retrospective-cursor.ts +0 -28
  406. package/src/plugins/defaults/memory/skill-md-mtime-poll.ts +0 -9
  407. package/src/providers/gemini-thought-signature.test.ts +0 -63
  408. package/src/providers/gemini-thought-signature.ts +0 -44
  409. package/src/providers/inference/service-account-token.ts +0 -248
  410. package/src/providers/openai/__tests__/chat-completions-provider-thought-signature.test.ts +0 -613
  411. package/src/providers/openai/__tests__/google-thought-signature.test.ts +0 -235
  412. package/src/providers/openai/google-thought-signature.ts +0 -320
  413. package/src/runtime/__tests__/channel-send.test.ts +0 -443
  414. package/src/runtime/__tests__/desktop-stream-upgrade.test.ts +0 -89
  415. package/src/runtime/__tests__/live-voice-upgrade.test.ts +0 -58
  416. package/src/runtime/__tests__/runtime-ws-test-utils.ts +0 -72
  417. package/src/runtime/__tests__/watch-stream-upgrade.test.ts +0 -59
  418. package/src/runtime/channel-send.ts +0 -316
  419. package/src/runtime/routes/__tests__/apps-refresh-route.test.ts +0 -205
  420. package/src/runtime/routes/__tests__/channel-send-routes.test.ts +0 -127
  421. package/src/runtime/routes/__tests__/dictation-cleanup-guard.test.ts +0 -107
  422. package/src/runtime/routes/channel-send-routes.ts +0 -85
  423. package/src/runtime/routes/desktop-setup-routes.test.ts +0 -74
  424. package/src/runtime/routes/desktop-setup-routes.ts +0 -35
  425. package/src/security/__tests__/ces-http-record-backend.test.ts +0 -137
  426. package/src/security/ces-http-record-backend.ts +0 -120
  427. package/src/skills/__tests__/workspace-skill-md-signature.test.ts +0 -60
  428. package/src/skills/workspace-skill-md-signature.ts +0 -50
  429. package/src/tools/acp/status.test.ts +0 -94
  430. package/src/tools/terminal/__tests__/sanitized-bash.test.ts +0 -57
  431. package/src/tools/terminal/sanitized-bash.ts +0 -105
  432. package/src/util/ca-bundle.ts +0 -13
  433. package/src/workspace/git-porcelain.ts +0 -66
  434. package/src/workspace/migrations/154-repair-retired-codex-gpt-5-4-model-ids.ts +0 -258
  435. package/src/workspace/migrations/155-move-front-model-config-to-voice.ts +0 -78
  436. package/src/workspace/migrations/156-extract-workspace-mcp-json.ts +0 -214
  437. package/src/workspace/migrations/__tests__/155-move-front-model-config-to-voice.test.ts +0 -102
  438. package/src/workspace/migrations/__tests__/156-extract-workspace-mcp-json.test.ts +0 -199
  439. /package/src/{calls → live-voice}/progress-phrases.ts +0 -0
@@ -12,15 +12,6 @@
12
12
  import { tmpdir } from "node:os";
13
13
  import { afterAll, beforeEach, describe, expect, mock, test } from "bun:test";
14
14
 
15
- import type { SessionConfigOption } from "@agentclientprotocol/sdk";
16
-
17
- import {
18
- MODEL_OPTION_MODELS,
19
- modelOption,
20
- modelOptionWithoutCurrent,
21
- nonModelOption,
22
- } from "./helpers/acp-model-option.js";
23
-
24
15
  // ---------------------------------------------------------------------------
25
16
  // Fake AcpAgentProcess with scriptable capabilities and history replay.
26
17
  // ---------------------------------------------------------------------------
@@ -40,24 +31,6 @@ let promptThrowsSync = false;
40
31
  * the resume has not yet settled.
41
32
  */
42
33
  let resumeSessionGate: Promise<void> | null = null;
43
- /** Config options session/resume and session/load report back. */
44
- let resumeConfigOptions: SessionConfigOption[] = [];
45
- /**
46
- * One `config_option_update` per entry, announced during session/load's
47
- * replay, the way an adapter reports what the reattached session moved
48
- * through before the load resolves.
49
- */
50
- let replayConfigOptionUpdates: SessionConfigOption[][] = [];
51
- /** When set, setConfigOption rejects with it (the adapter refusing a pin). */
52
- let setConfigOptionError: Error | null = null;
53
- /** When set, setConfigOption answers with this instead of the moved selector. */
54
- let setConfigOptionResult: SessionConfigOption[] | null = null;
55
- /** Every `setConfigOption` the manager dispatched during a resume. */
56
- const setConfigOptionCalls: Array<{
57
- sessionId: string;
58
- configId: string;
59
- value: string | boolean;
60
- }> = [];
61
34
  const fakeInstances: FakeAcpAgentProcess[] = [];
62
35
 
63
36
  class FakeAcpAgentProcess {
@@ -94,63 +67,24 @@ class FakeAcpAgentProcess {
94
67
  return fakeCaps.resume;
95
68
  }
96
69
 
97
- async createSession(
98
- _cwd: string,
99
- ): Promise<{ sessionId: string; configOptions: SessionConfigOption[] }> {
100
- return { sessionId: "proto-new", configOptions: [] };
70
+ async createSession(_cwd: string): Promise<string> {
71
+ return "proto-new";
101
72
  }
102
73
 
103
- async loadSession(
104
- sessionId: string,
105
- cwd: string,
106
- ): Promise<{ configOptions: SessionConfigOption[] }> {
74
+ async loadSession(sessionId: string, cwd: string): Promise<void> {
107
75
  this.loadSessionCalls.push({ sessionId, cwd });
108
76
  // Replay history through the client handler before resolving, exactly
109
77
  // as a real agent does per the ACP spec for session/load.
110
78
  for (const text of replayChunks) {
111
79
  await this.emitChunk(text);
112
80
  }
113
- for (const configOptions of replayConfigOptionUpdates) {
114
- await this.emitConfigOptions(configOptions);
115
- }
116
- return { configOptions: resumeConfigOptions };
117
81
  }
118
82
 
119
- async resumeSession(
120
- sessionId: string,
121
- cwd: string,
122
- ): Promise<{ configOptions: SessionConfigOption[] }> {
83
+ async resumeSession(sessionId: string, cwd: string): Promise<void> {
123
84
  if (resumeSessionGate) {
124
85
  await resumeSessionGate;
125
86
  }
126
87
  this.resumeSessionCalls.push({ sessionId, cwd });
127
- return { configOptions: resumeConfigOptions };
128
- }
129
-
130
- /** Answers the way an adapter does: the selector now sits on `value`. */
131
- async setConfigOption(
132
- sessionId: string,
133
- configId: string,
134
- value: string | boolean,
135
- ): Promise<SessionConfigOption[]> {
136
- setConfigOptionCalls.push({ sessionId, configId, value });
137
- if (setConfigOptionError) {
138
- throw setConfigOptionError;
139
- }
140
- if (setConfigOptionResult) {
141
- return setConfigOptionResult;
142
- }
143
- return typeof value === "string"
144
- ? [modelOption(value)]
145
- : resumeConfigOptions;
146
- }
147
-
148
- /** Drives a config_option_update through the real client handler. */
149
- async emitConfigOptions(configOptions: SessionConfigOption[]): Promise<void> {
150
- await this.clientFactory(this).sessionUpdate({
151
- sessionId: "proto-old",
152
- update: { sessionUpdate: "config_option_update", configOptions },
153
- });
154
88
  }
155
89
 
156
90
  /** Drives an agent_message_chunk through the real client handler. */
@@ -240,7 +174,7 @@ mock.module("../prepare-agent-env.js", () => ({
240
174
  type ResolveResult =
241
175
  | {
242
176
  ok: true;
243
- agent: { command: string; args: string[]; model?: string };
177
+ agent: { command: string; args: string[] };
244
178
  }
245
179
  | { ok: false; reason: "binary_not_found"; hint: string; command: string };
246
180
  let resolveImpl: (id: string) => ResolveResult = () => ({
@@ -278,7 +212,6 @@ import type { AssistantEvent } from "../../api/index.js";
278
212
  import { getSqlite } from "../../persistence/db-connection.js";
279
213
  import { initializeDb } from "../../persistence/db-init.js";
280
214
  import type { AcpSessionState } from "../types.js";
281
- import { AcpConfigOptionRefusedError } from "../types.js";
282
215
  import {
283
216
  clearHistory,
284
217
  insertHistoryRow,
@@ -331,11 +264,6 @@ beforeEach(() => {
331
264
  prepareAgentEnvGate = null;
332
265
  prepareAgentEnvCommands = [];
333
266
  resumeSessionGate = null;
334
- resumeConfigOptions = [];
335
- replayConfigOptionUpdates = [];
336
- setConfigOptionError = null;
337
- setConfigOptionResult = null;
338
- setConfigOptionCalls.length = 0;
339
267
  resolveImpl = () => ({
340
268
  ok: true,
341
269
  agent: { command: "claude-agent-acp", args: [] },
@@ -582,7 +510,7 @@ describe("AcpSessionManager.resumeFromHistory", () => {
582
510
  expect(args).toEqual([
583
511
  "add",
584
512
  "--global",
585
- "@agentclientprotocol/claude-agent-acp@0.75.1",
513
+ "@agentclientprotocol/claude-agent-acp",
586
514
  ]);
587
515
  const { cwd, env } = options as { cwd?: string; env?: NodeJS.ProcessEnv };
588
516
  expect(cwd).toBeDefined();
@@ -783,198 +711,6 @@ describe("AcpSessionManager.resumeFromHistory", () => {
783
711
  expect(row.cost_currency).toBe("USD");
784
712
  });
785
713
 
786
- test("a resume with no configured model leaves the adapter on its own", async () => {
787
- fakeCaps.resume = true;
788
- resumeConfigOptions = [modelOption("default")];
789
- insertHistoryRow({ id: "resume-model-1" });
790
-
791
- const manager = new AcpSessionManager(4);
792
- await manager.resumeFromHistory("resume-model-1", () => {});
793
-
794
- expect(setConfigOptionCalls).toEqual([]);
795
- expect((manager.getStatus("resume-model-1") as AcpSessionState).model).toBe(
796
- "default",
797
- );
798
- });
799
-
800
- test("a resume keeps the model the adapter restored from the session", async () => {
801
- fakeCaps.resume = true;
802
- // The bundled Claude profile names opus, but the reattached session was
803
- // running on sonnet and the adapter reports it back.
804
- resolveImpl = () => ({
805
- ok: true,
806
- agent: { command: "claude-agent-acp", args: [], model: "opus" },
807
- });
808
- resumeConfigOptions = [modelOption("sonnet")];
809
- insertHistoryRow({ id: "resume-model-2" });
810
-
811
- const manager = new AcpSessionManager(4);
812
- const sent: AssistantEvent[] = [];
813
- await manager.resumeFromHistory("resume-model-2", (msg) => sent.push(msg));
814
-
815
- expect(setConfigOptionCalls).toEqual([]);
816
- const state = manager.getStatus("resume-model-2") as AcpSessionState;
817
- expect(state.model).toBe("sonnet");
818
- expect(sent.map((m) => m.type)).toEqual([
819
- "acp_session_spawned",
820
- "acp_session_model_update",
821
- ]);
822
- expect(sent.filter((m) => m.type === "acp_session_model_update")).toEqual([
823
- {
824
- type: "acp_session_model_update",
825
- acpSessionId: "resume-model-2",
826
- modelRevisionEpoch: state.modelRevisionEpoch!,
827
- modelRevision: 1,
828
- model: "sonnet",
829
- availableModels: MODEL_OPTION_MODELS,
830
- },
831
- ]);
832
- });
833
-
834
- test("a model named only by the load replay keeps the session off the re-pin", async () => {
835
- fakeCaps.loadSession = true;
836
- // The selector reaches the manager only through the replayed
837
- // notification: the load itself answers with no config options at all.
838
- replayConfigOptionUpdates = [[modelOption("sonnet")]];
839
- resumeConfigOptions = [];
840
- resolveImpl = () => ({
841
- ok: true,
842
- agent: { command: "claude-agent-acp", args: [], model: "opus" },
843
- });
844
- insertHistoryRow({ id: "resume-replay-only" });
845
-
846
- const manager = new AcpSessionManager(4);
847
- const sent: AssistantEvent[] = [];
848
- await manager.resumeFromHistory("resume-replay-only", (msg) =>
849
- sent.push(msg),
850
- );
851
-
852
- // The replay is the adapter reporting what the session came back on, so
853
- // the per-agent default has nothing to put right.
854
- expect(setConfigOptionCalls).toEqual([]);
855
- expect(
856
- (manager.getStatus("resume-replay-only") as AcpSessionState).model,
857
- ).toBe("sonnet");
858
- const modelEvents = sent.filter(
859
- (m) => m.type === "acp_session_model_update",
860
- );
861
- expect(modelEvents.map((m) => m.model)).toEqual(["sonnet", "sonnet"]);
862
- expect(modelEvents[1]).toMatchObject({
863
- acpSessionId: "resume-replay-only",
864
- availableModels: MODEL_OPTION_MODELS,
865
- });
866
- });
867
-
868
- test("a re-pin answered without the selector withdraws the picker the replay announced", async () => {
869
- fakeCaps.loadSession = true;
870
- // The replay puts the selector in front of clients before the re-pin
871
- // runs, so the answer that drops it has something to correct. It names no
872
- // model, which is what leaves the ladder something to apply.
873
- replayConfigOptionUpdates = [[modelOptionWithoutCurrent()]];
874
- resumeConfigOptions = [];
875
- setConfigOptionResult = [nonModelOption()];
876
- resolveImpl = () => ({
877
- ok: true,
878
- agent: { command: "claude-agent-acp", args: [], model: "opus" },
879
- });
880
- insertHistoryRow({
881
- id: "resume-selector-gone",
882
- eventLogJson: JSON.stringify([PERSISTED_EVENT]),
883
- });
884
-
885
- const manager = new AcpSessionManager(4);
886
- const sent: AssistantEvent[] = [];
887
- await manager.resumeFromHistory("resume-selector-gone", (msg) =>
888
- sent.push(msg),
889
- );
890
-
891
- const state = manager.getStatus("resume-selector-gone") as AcpSessionState;
892
- expect(state.model).toBeUndefined();
893
- expect(state.availableModels).toEqual([]);
894
- expect(sent.filter((m) => m.type === "acp_session_model_update")).toEqual([
895
- {
896
- type: "acp_session_model_update",
897
- acpSessionId: "resume-selector-gone",
898
- modelRevisionEpoch: state.modelRevisionEpoch!,
899
- modelRevision: 1,
900
- availableModels: MODEL_OPTION_MODELS,
901
- },
902
- {
903
- type: "acp_session_model_update",
904
- acpSessionId: "resume-selector-gone",
905
- modelRevisionEpoch: state.modelRevisionEpoch!,
906
- modelRevision: 2,
907
- availableModels: [],
908
- },
909
- ]);
910
- });
911
-
912
- test("a re-pin the connection cannot carry tears the resume down", async () => {
913
- fakeCaps.resume = true;
914
- resumeConfigOptions = [modelOptionWithoutCurrent()];
915
- setConfigOptionError = new Error("ACP connection closed");
916
- resolveImpl = () => ({
917
- ok: true,
918
- agent: { command: "claude-agent-acp", args: [], model: "opus" },
919
- });
920
- insertHistoryRow({
921
- id: "resume-pin-transport",
922
- eventLogJson: JSON.stringify([PERSISTED_EVENT]),
923
- });
924
-
925
- const manager = new AcpSessionManager(4);
926
- const sent: AssistantEvent[] = [];
927
- await expect(
928
- manager.resumeFromHistory("resume-pin-transport", (msg) =>
929
- sent.push(msg),
930
- ),
931
- ).rejects.toThrow("ACP connection closed");
932
-
933
- expect(sent.filter((m) => m.type === "acp_session_model_update")).toEqual(
934
- [],
935
- );
936
- expect(manager.getStatus()).toEqual([]);
937
- });
938
-
939
- test("a resume the adapter refuses to re-pin runs on the adapter's model", async () => {
940
- fakeCaps.resume = true;
941
- resumeConfigOptions = [modelOptionWithoutCurrent()];
942
- setConfigOptionError = new AcpConfigOptionRefusedError(
943
- "Invalid value for config option model: opus",
944
- );
945
- resolveImpl = () => ({
946
- ok: true,
947
- agent: { command: "claude-agent-acp", args: [], model: "opus" },
948
- });
949
- insertHistoryRow({
950
- id: "resume-refused-model",
951
- eventLogJson: JSON.stringify([PERSISTED_EVENT]),
952
- });
953
-
954
- const manager = new AcpSessionManager(4);
955
- const sent: AssistantEvent[] = [];
956
- await manager.resumeFromHistory("resume-refused-model", (msg) =>
957
- sent.push(msg),
958
- );
959
-
960
- // State and the published event name the model the run is really on, which
961
- // is whatever the adapter reported, never the one it refused.
962
- expect(
963
- (manager.getStatus("resume-refused-model") as AcpSessionState).model,
964
- ).toBeUndefined();
965
- expect(sent.filter((m) => m.type === "acp_session_model_update")).toEqual([
966
- {
967
- type: "acp_session_model_update",
968
- acpSessionId: "resume-refused-model",
969
- modelRevisionEpoch: (
970
- manager.getStatus("resume-refused-model") as AcpSessionState
971
- ).modelRevisionEpoch!,
972
- modelRevision: 1,
973
- availableModels: MODEL_OPTION_MODELS,
974
- },
975
- ]);
976
- });
977
-
978
714
  test("concurrent resumes of the same id: one wins, the loser fails cleanly without leaking a process", async () => {
979
715
  fakeCaps.resume = true;
980
716
  insertHistoryRow({ id: "race-1" });
@@ -28,10 +28,8 @@ mock.module("../agent-process.js", () => ({
28
28
  }
29
29
  spawn(_cwd: string): void {}
30
30
  async initialize(): Promise<void> {}
31
- async createSession(
32
- _cwd: string,
33
- ): Promise<{ sessionId: string; configOptions: [] }> {
34
- return { sessionId: `proto-${this.agentId}`, configOptions: [] };
31
+ async createSession(_cwd: string): Promise<string> {
32
+ return `proto-${this.agentId}`;
35
33
  }
36
34
  async prompt(): Promise<{ stopReason: string }> {
37
35
  return new Promise(() => {});