@getpaseo/server 0.1.30 → 0.1.32

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 (498) hide show
  1. package/dist/scripts/daemon-runner.js +1 -1
  2. package/dist/scripts/daemon-runner.js.map +1 -1
  3. package/dist/scripts/dev-runner.js +1 -1
  4. package/dist/scripts/dev-runner.js.map +1 -1
  5. package/dist/server/client/daemon-client-relay-e2ee-transport.d.ts.map +1 -1
  6. package/dist/server/client/daemon-client-relay-e2ee-transport.js.map +1 -1
  7. package/dist/server/client/daemon-client-websocket-transport.d.ts.map +1 -1
  8. package/dist/server/client/daemon-client-websocket-transport.js.map +1 -1
  9. package/dist/server/client/daemon-client.d.ts +108 -103
  10. package/dist/server/client/daemon-client.d.ts.map +1 -1
  11. package/dist/server/client/daemon-client.js +417 -407
  12. package/dist/server/client/daemon-client.js.map +1 -1
  13. package/dist/server/server/agent/activity-curator.d.ts.map +1 -1
  14. package/dist/server/server/agent/activity-curator.js +5 -4
  15. package/dist/server/server/agent/activity-curator.js.map +1 -1
  16. package/dist/server/server/agent/agent-management-mcp.d.ts.map +1 -1
  17. package/dist/server/server/agent/agent-management-mcp.js +13 -17
  18. package/dist/server/server/agent/agent-management-mcp.js.map +1 -1
  19. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  20. package/dist/server/server/agent/agent-manager.js +26 -26
  21. package/dist/server/server/agent/agent-manager.js.map +1 -1
  22. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
  23. package/dist/server/server/agent/agent-metadata-generator.js +1 -3
  24. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  25. package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
  26. package/dist/server/server/agent/agent-projections.js +4 -12
  27. package/dist/server/server/agent/agent-projections.js.map +1 -1
  28. package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -1
  29. package/dist/server/server/agent/agent-response-loop.js +6 -6
  30. package/dist/server/server/agent/agent-response-loop.js.map +1 -1
  31. package/dist/server/server/agent/agent-sdk-types.d.ts +23 -0
  32. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  33. package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
  34. package/dist/server/server/agent/agent-storage.d.ts.map +1 -1
  35. package/dist/server/server/agent/agent-storage.js +2 -4
  36. package/dist/server/server/agent/agent-storage.js.map +1 -1
  37. package/dist/server/server/agent/dictation-debug.d.ts.map +1 -1
  38. package/dist/server/server/agent/dictation-debug.js.map +1 -1
  39. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  40. package/dist/server/server/agent/mcp-server.js +19 -27
  41. package/dist/server/server/agent/mcp-server.js.map +1 -1
  42. package/dist/server/server/agent/pcm16-resampler.d.ts.map +1 -1
  43. package/dist/server/server/agent/pcm16-resampler.js.map +1 -1
  44. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
  45. package/dist/server/server/agent/provider-launch-config.js +4 -2
  46. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  47. package/dist/server/server/agent/provider-manifest.d.ts +2 -2
  48. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  49. package/dist/server/server/agent/provider-manifest.js +63 -9
  50. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  51. package/dist/server/server/agent/provider-registry.d.ts +2 -2
  52. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  53. package/dist/server/server/agent/provider-registry.js +1 -1
  54. package/dist/server/server/agent/provider-registry.js.map +1 -1
  55. package/dist/server/server/agent/providers/claude/model-catalog.js +10 -10
  56. package/dist/server/server/agent/providers/claude/model-catalog.js.map +1 -1
  57. package/dist/server/server/agent/providers/claude/partial-json.d.ts.map +1 -1
  58. package/dist/server/server/agent/providers/claude/partial-json.js +4 -4
  59. package/dist/server/server/agent/providers/claude/partial-json.js.map +1 -1
  60. package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts +20 -0
  61. package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts.map +1 -0
  62. package/dist/server/server/agent/providers/claude/sidechain-tracker.js +230 -0
  63. package/dist/server/server/agent/providers/claude/sidechain-tracker.js.map +1 -0
  64. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +11 -0
  65. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts.map +1 -1
  66. package/dist/server/server/agent/providers/claude/task-notification-tool-call.js +37 -20
  67. package/dist/server/server/agent/providers/claude/task-notification-tool-call.js.map +1 -1
  68. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts.map +1 -1
  69. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js +21 -11
  70. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js.map +1 -1
  71. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts.map +1 -1
  72. package/dist/server/server/agent/providers/claude/tool-call-mapper.js +23 -11
  73. package/dist/server/server/agent/providers/claude/tool-call-mapper.js.map +1 -1
  74. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  75. package/dist/server/server/agent/providers/claude-agent.js +486 -1134
  76. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  77. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts.map +1 -1
  78. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js +2 -2
  79. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js.map +1 -1
  80. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -1
  81. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +14 -11
  82. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -1
  83. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  84. package/dist/server/server/agent/providers/codex-app-server-agent.js +347 -163
  85. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  86. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts.map +1 -1
  87. package/dist/server/server/agent/providers/codex-rollout-timeline.js +21 -32
  88. package/dist/server/server/agent/providers/codex-rollout-timeline.js.map +1 -1
  89. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts.map +1 -1
  90. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +2 -2
  91. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js.map +1 -1
  92. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts.map +1 -1
  93. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +2 -9
  94. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js.map +1 -1
  95. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  96. package/dist/server/server/agent/providers/opencode-agent.js +5 -5
  97. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  98. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +277 -1
  99. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  100. package/dist/server/server/agent/providers/tool-call-detail-primitives.js +149 -15
  101. package/dist/server/server/agent/providers/tool-call-detail-primitives.js.map +1 -1
  102. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts.map +1 -1
  103. package/dist/server/server/agent/providers/tool-call-mapper-utils.js +1 -3
  104. package/dist/server/server/agent/providers/tool-call-mapper-utils.js.map +1 -1
  105. package/dist/server/server/agent/stt-manager.d.ts.map +1 -1
  106. package/dist/server/server/agent/stt-manager.js +1 -2
  107. package/dist/server/server/agent/stt-manager.js.map +1 -1
  108. package/dist/server/server/agent/system-prompt.js +5 -5
  109. package/dist/server/server/agent/timeline-projection.d.ts.map +1 -1
  110. package/dist/server/server/agent/timeline-projection.js.map +1 -1
  111. package/dist/server/server/agent/tts-manager.d.ts.map +1 -1
  112. package/dist/server/server/agent/tts-manager.js +27 -9
  113. package/dist/server/server/agent/tts-manager.js.map +1 -1
  114. package/dist/server/server/agent/wait-for-agent-tracker.d.ts.map +1 -1
  115. package/dist/server/server/agent/wait-for-agent-tracker.js.map +1 -1
  116. package/dist/server/server/agent-attention-policy.d.ts.map +1 -1
  117. package/dist/server/server/agent-attention-policy.js.map +1 -1
  118. package/dist/server/server/allowed-hosts.d.ts.map +1 -1
  119. package/dist/server/server/allowed-hosts.js.map +1 -1
  120. package/dist/server/server/bootstrap.d.ts.map +1 -1
  121. package/dist/server/server/bootstrap.js +46 -5
  122. package/dist/server/server/bootstrap.js.map +1 -1
  123. package/dist/server/server/config.d.ts.map +1 -1
  124. package/dist/server/server/config.js +4 -11
  125. package/dist/server/server/config.js.map +1 -1
  126. package/dist/server/server/connection-offer.d.ts +1 -1
  127. package/dist/server/server/connection-offer.d.ts.map +1 -1
  128. package/dist/server/server/connection-offer.js +2 -3
  129. package/dist/server/server/connection-offer.js.map +1 -1
  130. package/dist/server/server/daemon-version.d.ts.map +1 -1
  131. package/dist/server/server/daemon-version.js +1 -1
  132. package/dist/server/server/daemon-version.js.map +1 -1
  133. package/dist/server/server/dictation/dictation-stream-manager.d.ts.map +1 -1
  134. package/dist/server/server/dictation/dictation-stream-manager.js +4 -1
  135. package/dist/server/server/dictation/dictation-stream-manager.js.map +1 -1
  136. package/dist/server/server/exports.d.ts +1 -1
  137. package/dist/server/server/exports.d.ts.map +1 -1
  138. package/dist/server/server/exports.js +1 -1
  139. package/dist/server/server/exports.js.map +1 -1
  140. package/dist/server/server/file-explorer/service.d.ts +1 -1
  141. package/dist/server/server/file-explorer/service.d.ts.map +1 -1
  142. package/dist/server/server/file-explorer/service.js +5 -8
  143. package/dist/server/server/file-explorer/service.js.map +1 -1
  144. package/dist/server/server/index.js +1 -1
  145. package/dist/server/server/index.js.map +1 -1
  146. package/dist/server/server/logger.d.ts.map +1 -1
  147. package/dist/server/server/logger.js.map +1 -1
  148. package/dist/server/server/messages.d.ts.map +1 -1
  149. package/dist/server/server/messages.js.map +1 -1
  150. package/dist/server/server/package-version.d.ts.map +1 -1
  151. package/dist/server/server/package-version.js +1 -2
  152. package/dist/server/server/package-version.js.map +1 -1
  153. package/dist/server/server/persisted-config.d.ts.map +1 -1
  154. package/dist/server/server/persisted-config.js.map +1 -1
  155. package/dist/server/server/persistence-hooks.d.ts.map +1 -1
  156. package/dist/server/server/persistence-hooks.js.map +1 -1
  157. package/dist/server/server/pid-lock.d.ts.map +1 -1
  158. package/dist/server/server/pid-lock.js.map +1 -1
  159. package/dist/server/server/push/push-service.d.ts.map +1 -1
  160. package/dist/server/server/push/push-service.js.map +1 -1
  161. package/dist/server/server/relay-transport.d.ts.map +1 -1
  162. package/dist/server/server/relay-transport.js +6 -2
  163. package/dist/server/server/relay-transport.js.map +1 -1
  164. package/dist/server/server/session.d.ts +49 -37
  165. package/dist/server/server/session.d.ts.map +1 -1
  166. package/dist/server/server/session.js +1234 -998
  167. package/dist/server/server/session.js.map +1 -1
  168. package/dist/server/server/speech/audio.d.ts.map +1 -1
  169. package/dist/server/server/speech/audio.js.map +1 -1
  170. package/dist/server/server/speech/providers/local/config.d.ts.map +1 -1
  171. package/dist/server/server/speech/providers/local/config.js +5 -14
  172. package/dist/server/server/speech/providers/local/config.js.map +1 -1
  173. package/dist/server/server/speech/providers/local/models.d.ts.map +1 -1
  174. package/dist/server/server/speech/providers/local/models.js +1 -1
  175. package/dist/server/server/speech/providers/local/models.js.map +1 -1
  176. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts.map +1 -1
  177. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js +21 -7
  178. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js.map +1 -1
  179. package/dist/server/server/speech/providers/local/runtime.d.ts.map +1 -1
  180. package/dist/server/server/speech/providers/local/runtime.js +1 -23
  181. package/dist/server/server/speech/providers/local/runtime.js.map +1 -1
  182. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts.map +1 -1
  183. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js.map +1 -1
  184. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts.map +1 -1
  185. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js.map +1 -1
  186. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts.map +1 -1
  187. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +9 -4
  188. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js.map +1 -1
  189. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.d.ts.map +1 -1
  190. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js +7 -2
  191. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js.map +1 -1
  192. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts.map +1 -1
  193. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +5 -1
  194. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js.map +1 -1
  195. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts.map +1 -1
  196. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +2 -4
  197. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js.map +1 -1
  198. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.d.ts.map +1 -1
  199. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js +1 -3
  200. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js.map +1 -1
  201. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.d.ts.map +1 -1
  202. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js +2 -4
  203. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js.map +1 -1
  204. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts.map +1 -1
  205. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js +4 -1
  206. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js.map +1 -1
  207. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.d.ts.map +1 -1
  208. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.js +1 -1
  209. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.js.map +1 -1
  210. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.d.ts.map +1 -1
  211. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.js.map +1 -1
  212. package/dist/server/server/speech/providers/openai/config.d.ts.map +1 -1
  213. package/dist/server/server/speech/providers/openai/config.js +5 -24
  214. package/dist/server/server/speech/providers/openai/config.js.map +1 -1
  215. package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts.map +1 -1
  216. package/dist/server/server/speech/providers/openai/realtime-transcription-session.js +6 -3
  217. package/dist/server/server/speech/providers/openai/realtime-transcription-session.js.map +1 -1
  218. package/dist/server/server/speech/providers/openai/runtime.d.ts.map +1 -1
  219. package/dist/server/server/speech/providers/openai/runtime.js +2 -6
  220. package/dist/server/server/speech/providers/openai/runtime.js.map +1 -1
  221. package/dist/server/server/speech/providers/openai/stt.d.ts.map +1 -1
  222. package/dist/server/server/speech/providers/openai/stt.js +1 -3
  223. package/dist/server/server/speech/providers/openai/stt.js.map +1 -1
  224. package/dist/server/server/speech/providers/openai/tts.d.ts.map +1 -1
  225. package/dist/server/server/speech/providers/openai/tts.js.map +1 -1
  226. package/dist/server/server/speech/speech-config-resolver.d.ts.map +1 -1
  227. package/dist/server/server/speech/speech-config-resolver.js +3 -7
  228. package/dist/server/server/speech/speech-config-resolver.js.map +1 -1
  229. package/dist/server/server/speech/speech-provider.d.ts.map +1 -1
  230. package/dist/server/server/speech/speech-runtime.d.ts.map +1 -1
  231. package/dist/server/server/speech/speech-runtime.js.map +1 -1
  232. package/dist/server/server/speech/turn-detection-provider.d.ts.map +1 -1
  233. package/dist/server/server/terminal-mcp/server.d.ts.map +1 -1
  234. package/dist/server/server/terminal-mcp/server.js +3 -11
  235. package/dist/server/server/terminal-mcp/server.js.map +1 -1
  236. package/dist/server/server/terminal-mcp/terminal-manager.d.ts.map +1 -1
  237. package/dist/server/server/terminal-mcp/terminal-manager.js +2 -14
  238. package/dist/server/server/terminal-mcp/terminal-manager.js.map +1 -1
  239. package/dist/server/server/terminal-mcp/tmux.d.ts +1 -1
  240. package/dist/server/server/terminal-mcp/tmux.d.ts.map +1 -1
  241. package/dist/server/server/terminal-mcp/tmux.js +20 -123
  242. package/dist/server/server/terminal-mcp/tmux.js.map +1 -1
  243. package/dist/server/server/utils/diff-highlighter.d.ts +11 -3
  244. package/dist/server/server/utils/diff-highlighter.d.ts.map +1 -1
  245. package/dist/server/server/utils/diff-highlighter.js +49 -36
  246. package/dist/server/server/utils/diff-highlighter.js.map +1 -1
  247. package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.d.ts.map +1 -1
  248. package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.js.map +1 -1
  249. package/dist/server/server/voice/voice-turn-controller.d.ts.map +1 -1
  250. package/dist/server/server/voice/voice-turn-controller.js +1 -3
  251. package/dist/server/server/voice/voice-turn-controller.js.map +1 -1
  252. package/dist/server/server/voice-config.d.ts.map +1 -1
  253. package/dist/server/server/voice-config.js.map +1 -1
  254. package/dist/server/server/voice-mcp-bridge.d.ts.map +1 -1
  255. package/dist/server/server/voice-mcp-bridge.js.map +1 -1
  256. package/dist/server/server/websocket-server.d.ts +1 -0
  257. package/dist/server/server/websocket-server.d.ts.map +1 -1
  258. package/dist/server/server/websocket-server.js +20 -22
  259. package/dist/server/server/websocket-server.js.map +1 -1
  260. package/dist/server/server/workspace-registry-bootstrap.d.ts +3 -3
  261. package/dist/server/server/workspace-registry-bootstrap.d.ts.map +1 -1
  262. package/dist/server/server/workspace-registry-bootstrap.js +6 -6
  263. package/dist/server/server/workspace-registry-bootstrap.js.map +1 -1
  264. package/dist/server/server/workspace-registry-model.d.ts +14 -3
  265. package/dist/server/server/workspace-registry-model.d.ts.map +1 -1
  266. package/dist/server/server/workspace-registry-model.js +40 -15
  267. package/dist/server/server/workspace-registry-model.js.map +1 -1
  268. package/dist/server/server/workspace-registry.d.ts +5 -5
  269. package/dist/server/server/workspace-registry.d.ts.map +1 -1
  270. package/dist/server/server/workspace-registry.js +16 -13
  271. package/dist/server/server/workspace-registry.js.map +1 -1
  272. package/dist/server/server/worktree-bootstrap.d.ts.map +1 -1
  273. package/dist/server/server/worktree-bootstrap.js +17 -6
  274. package/dist/server/server/worktree-bootstrap.js.map +1 -1
  275. package/dist/server/shared/agent-attention-notification.d.ts.map +1 -1
  276. package/dist/server/shared/agent-attention-notification.js.map +1 -1
  277. package/dist/server/shared/agent-lifecycle.d.ts.map +1 -1
  278. package/dist/server/shared/daemon-endpoints.d.ts +1 -0
  279. package/dist/server/shared/daemon-endpoints.d.ts.map +1 -1
  280. package/dist/server/shared/daemon-endpoints.js +11 -2
  281. package/dist/server/shared/daemon-endpoints.js.map +1 -1
  282. package/dist/server/shared/messages.d.ts +1228 -2982
  283. package/dist/server/shared/messages.d.ts.map +1 -1
  284. package/dist/server/shared/messages.js +330 -302
  285. package/dist/server/shared/messages.js.map +1 -1
  286. package/dist/server/shared/terminal-stream-protocol.d.ts +36 -0
  287. package/dist/server/shared/terminal-stream-protocol.d.ts.map +1 -0
  288. package/dist/server/shared/terminal-stream-protocol.js +99 -0
  289. package/dist/server/shared/terminal-stream-protocol.js.map +1 -0
  290. package/dist/server/shared/tool-call-display.d.ts.map +1 -1
  291. package/dist/server/shared/tool-call-display.js +6 -3
  292. package/dist/server/shared/tool-call-display.js.map +1 -1
  293. package/dist/server/terminal/terminal.d.ts +5 -48
  294. package/dist/server/terminal/terminal.d.ts.map +1 -1
  295. package/dist/server/terminal/terminal.js +44 -98
  296. package/dist/server/terminal/terminal.js.map +1 -1
  297. package/dist/server/utils/checkout-git.d.ts +1 -0
  298. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  299. package/dist/server/utils/checkout-git.js +111 -120
  300. package/dist/server/utils/checkout-git.js.map +1 -1
  301. package/dist/server/utils/directory-suggestions.d.ts +1 -1
  302. package/dist/server/utils/directory-suggestions.d.ts.map +1 -1
  303. package/dist/server/utils/directory-suggestions.js +40 -40
  304. package/dist/server/utils/directory-suggestions.js.map +1 -1
  305. package/dist/server/utils/project-icon.d.ts.map +1 -1
  306. package/dist/server/utils/project-icon.js +2 -11
  307. package/dist/server/utils/project-icon.js.map +1 -1
  308. package/dist/server/utils/worktree.d.ts +2 -0
  309. package/dist/server/utils/worktree.d.ts.map +1 -1
  310. package/dist/server/utils/worktree.js +22 -19
  311. package/dist/server/utils/worktree.js.map +1 -1
  312. package/dist/src/server/agent/activity-curator.js +5 -4
  313. package/dist/src/server/agent/activity-curator.js.map +1 -1
  314. package/dist/src/server/agent/agent-manager.js +26 -26
  315. package/dist/src/server/agent/agent-manager.js.map +1 -1
  316. package/dist/src/server/agent/agent-metadata-generator.js +1 -3
  317. package/dist/src/server/agent/agent-metadata-generator.js.map +1 -1
  318. package/dist/src/server/agent/agent-projections.js +4 -12
  319. package/dist/src/server/agent/agent-projections.js.map +1 -1
  320. package/dist/src/server/agent/agent-response-loop.js +6 -6
  321. package/dist/src/server/agent/agent-response-loop.js.map +1 -1
  322. package/dist/src/server/agent/agent-sdk-types.js.map +1 -1
  323. package/dist/src/server/agent/agent-storage.js +2 -4
  324. package/dist/src/server/agent/agent-storage.js.map +1 -1
  325. package/dist/src/server/agent/dictation-debug.js.map +1 -1
  326. package/dist/src/server/agent/mcp-server.js +19 -27
  327. package/dist/src/server/agent/mcp-server.js.map +1 -1
  328. package/dist/src/server/agent/pcm16-resampler.js.map +1 -1
  329. package/dist/src/server/agent/provider-launch-config.js +4 -2
  330. package/dist/src/server/agent/provider-launch-config.js.map +1 -1
  331. package/dist/src/server/agent/provider-manifest.js +63 -9
  332. package/dist/src/server/agent/provider-manifest.js.map +1 -1
  333. package/dist/src/server/agent/provider-registry.js +1 -1
  334. package/dist/src/server/agent/provider-registry.js.map +1 -1
  335. package/dist/src/server/agent/providers/claude/model-catalog.js +10 -10
  336. package/dist/src/server/agent/providers/claude/model-catalog.js.map +1 -1
  337. package/dist/src/server/agent/providers/claude/partial-json.js +4 -4
  338. package/dist/src/server/agent/providers/claude/partial-json.js.map +1 -1
  339. package/dist/src/server/agent/providers/claude/sidechain-tracker.js +230 -0
  340. package/dist/src/server/agent/providers/claude/sidechain-tracker.js.map +1 -0
  341. package/dist/src/server/agent/providers/claude/task-notification-tool-call.js +37 -20
  342. package/dist/src/server/agent/providers/claude/task-notification-tool-call.js.map +1 -1
  343. package/dist/src/server/agent/providers/claude/tool-call-detail-parser.js +21 -11
  344. package/dist/src/server/agent/providers/claude/tool-call-detail-parser.js.map +1 -1
  345. package/dist/src/server/agent/providers/claude/tool-call-mapper.js +23 -11
  346. package/dist/src/server/agent/providers/claude/tool-call-mapper.js.map +1 -1
  347. package/dist/src/server/agent/providers/claude-agent.js +486 -1134
  348. package/dist/src/server/agent/providers/claude-agent.js.map +1 -1
  349. package/dist/src/server/agent/providers/codex/tool-call-detail-parser.js +2 -2
  350. package/dist/src/server/agent/providers/codex/tool-call-detail-parser.js.map +1 -1
  351. package/dist/src/server/agent/providers/codex/tool-call-mapper.js +14 -11
  352. package/dist/src/server/agent/providers/codex/tool-call-mapper.js.map +1 -1
  353. package/dist/src/server/agent/providers/codex-app-server-agent.js +347 -163
  354. package/dist/src/server/agent/providers/codex-app-server-agent.js.map +1 -1
  355. package/dist/src/server/agent/providers/codex-rollout-timeline.js +21 -32
  356. package/dist/src/server/agent/providers/codex-rollout-timeline.js.map +1 -1
  357. package/dist/src/server/agent/providers/opencode/tool-call-detail-parser.js +2 -2
  358. package/dist/src/server/agent/providers/opencode/tool-call-detail-parser.js.map +1 -1
  359. package/dist/src/server/agent/providers/opencode/tool-call-mapper.js +2 -9
  360. package/dist/src/server/agent/providers/opencode/tool-call-mapper.js.map +1 -1
  361. package/dist/src/server/agent/providers/opencode-agent.js +5 -5
  362. package/dist/src/server/agent/providers/opencode-agent.js.map +1 -1
  363. package/dist/src/server/agent/providers/tool-call-detail-primitives.js +149 -15
  364. package/dist/src/server/agent/providers/tool-call-detail-primitives.js.map +1 -1
  365. package/dist/src/server/agent/providers/tool-call-mapper-utils.js +1 -3
  366. package/dist/src/server/agent/providers/tool-call-mapper-utils.js.map +1 -1
  367. package/dist/src/server/agent/stt-manager.js +1 -2
  368. package/dist/src/server/agent/stt-manager.js.map +1 -1
  369. package/dist/src/server/agent/timeline-projection.js.map +1 -1
  370. package/dist/src/server/agent/tts-manager.js +27 -9
  371. package/dist/src/server/agent/tts-manager.js.map +1 -1
  372. package/dist/src/server/agent/wait-for-agent-tracker.js.map +1 -1
  373. package/dist/src/server/agent-attention-policy.js.map +1 -1
  374. package/dist/src/server/allowed-hosts.js.map +1 -1
  375. package/dist/src/server/bootstrap.js +46 -5
  376. package/dist/src/server/bootstrap.js.map +1 -1
  377. package/dist/src/server/config.js +4 -11
  378. package/dist/src/server/config.js.map +1 -1
  379. package/dist/src/server/connection-offer.js +2 -3
  380. package/dist/src/server/connection-offer.js.map +1 -1
  381. package/dist/src/server/daemon-version.js +1 -1
  382. package/dist/src/server/daemon-version.js.map +1 -1
  383. package/dist/src/server/dictation/dictation-stream-manager.js +4 -1
  384. package/dist/src/server/dictation/dictation-stream-manager.js.map +1 -1
  385. package/dist/src/server/file-explorer/service.js +5 -8
  386. package/dist/src/server/file-explorer/service.js.map +1 -1
  387. package/dist/src/server/messages.js.map +1 -1
  388. package/dist/src/server/package-version.js +1 -2
  389. package/dist/src/server/package-version.js.map +1 -1
  390. package/dist/src/server/pairing-offer.js +45 -0
  391. package/dist/src/server/pairing-offer.js.map +1 -0
  392. package/dist/src/server/pairing-qr.js +45 -0
  393. package/dist/src/server/pairing-qr.js.map +1 -0
  394. package/dist/src/server/persisted-config.js.map +1 -1
  395. package/dist/src/server/persistence-hooks.js.map +1 -1
  396. package/dist/src/server/pid-lock.js.map +1 -1
  397. package/dist/src/server/push/push-service.js.map +1 -1
  398. package/dist/src/server/relay-transport.js +6 -2
  399. package/dist/src/server/relay-transport.js.map +1 -1
  400. package/dist/src/server/session.js +1234 -998
  401. package/dist/src/server/session.js.map +1 -1
  402. package/dist/src/server/speech/audio.js.map +1 -1
  403. package/dist/src/server/speech/providers/local/config.js +5 -14
  404. package/dist/src/server/speech/providers/local/config.js.map +1 -1
  405. package/dist/src/server/speech/providers/local/models.js +1 -1
  406. package/dist/src/server/speech/providers/local/models.js.map +1 -1
  407. package/dist/src/server/speech/providers/local/pocket/pocket-tts-onnx.js +21 -7
  408. package/dist/src/server/speech/providers/local/pocket/pocket-tts-onnx.js.map +1 -1
  409. package/dist/src/server/speech/providers/local/runtime.js +1 -23
  410. package/dist/src/server/speech/providers/local/runtime.js.map +1 -1
  411. package/dist/src/server/speech/providers/local/sherpa/model-catalog.js.map +1 -1
  412. package/dist/src/server/speech/providers/local/sherpa/model-downloader.js.map +1 -1
  413. package/dist/src/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +9 -4
  414. package/dist/src/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js.map +1 -1
  415. package/dist/src/server/speech/providers/local/sherpa/sherpa-online-recognizer.js +7 -2
  416. package/dist/src/server/speech/providers/local/sherpa/sherpa-online-recognizer.js.map +1 -1
  417. package/dist/src/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +5 -1
  418. package/dist/src/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js.map +1 -1
  419. package/dist/src/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +2 -4
  420. package/dist/src/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js.map +1 -1
  421. package/dist/src/server/speech/providers/local/sherpa/sherpa-realtime-session.js +1 -3
  422. package/dist/src/server/speech/providers/local/sherpa/sherpa-realtime-session.js.map +1 -1
  423. package/dist/src/server/speech/providers/local/sherpa/sherpa-stt.js +2 -4
  424. package/dist/src/server/speech/providers/local/sherpa/sherpa-stt.js.map +1 -1
  425. package/dist/src/server/speech/providers/local/sherpa/sherpa-tts.js +4 -1
  426. package/dist/src/server/speech/providers/local/sherpa/sherpa-tts.js.map +1 -1
  427. package/dist/src/server/speech/providers/local/sherpa/silero-vad-provider.js +1 -1
  428. package/dist/src/server/speech/providers/local/sherpa/silero-vad-provider.js.map +1 -1
  429. package/dist/src/server/speech/providers/local/sherpa/silero-vad-session.js.map +1 -1
  430. package/dist/src/server/speech/providers/openai/config.js +5 -24
  431. package/dist/src/server/speech/providers/openai/config.js.map +1 -1
  432. package/dist/src/server/speech/providers/openai/realtime-transcription-session.js +6 -3
  433. package/dist/src/server/speech/providers/openai/realtime-transcription-session.js.map +1 -1
  434. package/dist/src/server/speech/providers/openai/runtime.js +2 -6
  435. package/dist/src/server/speech/providers/openai/runtime.js.map +1 -1
  436. package/dist/src/server/speech/providers/openai/stt.js +1 -3
  437. package/dist/src/server/speech/providers/openai/stt.js.map +1 -1
  438. package/dist/src/server/speech/providers/openai/tts.js.map +1 -1
  439. package/dist/src/server/speech/speech-config-resolver.js +3 -7
  440. package/dist/src/server/speech/speech-config-resolver.js.map +1 -1
  441. package/dist/src/server/speech/speech-runtime.js.map +1 -1
  442. package/dist/src/server/utils/diff-highlighter.js +49 -36
  443. package/dist/src/server/utils/diff-highlighter.js.map +1 -1
  444. package/dist/src/server/voice/fixed-duration-pcm-ring-buffer.js.map +1 -1
  445. package/dist/src/server/voice/voice-turn-controller.js +1 -3
  446. package/dist/src/server/voice/voice-turn-controller.js.map +1 -1
  447. package/dist/src/server/voice-config.js.map +1 -1
  448. package/dist/src/server/voice-mcp-bridge.js.map +1 -1
  449. package/dist/src/server/websocket-server.js +20 -22
  450. package/dist/src/server/websocket-server.js.map +1 -1
  451. package/dist/src/server/workspace-registry-bootstrap.js +6 -6
  452. package/dist/src/server/workspace-registry-bootstrap.js.map +1 -1
  453. package/dist/src/server/workspace-registry-model.js +40 -15
  454. package/dist/src/server/workspace-registry-model.js.map +1 -1
  455. package/dist/src/server/workspace-registry.js +16 -13
  456. package/dist/src/server/workspace-registry.js.map +1 -1
  457. package/dist/src/server/worktree-bootstrap.js +17 -6
  458. package/dist/src/server/worktree-bootstrap.js.map +1 -1
  459. package/dist/src/shared/agent-attention-notification.js.map +1 -1
  460. package/dist/src/shared/daemon-endpoints.js +11 -2
  461. package/dist/src/shared/daemon-endpoints.js.map +1 -1
  462. package/dist/src/shared/messages.js +330 -302
  463. package/dist/src/shared/messages.js.map +1 -1
  464. package/dist/src/shared/terminal-stream-protocol.js +99 -0
  465. package/dist/src/shared/terminal-stream-protocol.js.map +1 -0
  466. package/dist/src/shared/tool-call-display.js +6 -3
  467. package/dist/src/shared/tool-call-display.js.map +1 -1
  468. package/dist/src/terminal/terminal.js +44 -98
  469. package/dist/src/terminal/terminal.js.map +1 -1
  470. package/dist/src/utils/checkout-git.js +111 -120
  471. package/dist/src/utils/checkout-git.js.map +1 -1
  472. package/dist/src/utils/directory-suggestions.js +40 -40
  473. package/dist/src/utils/directory-suggestions.js.map +1 -1
  474. package/dist/src/utils/project-icon.js +2 -11
  475. package/dist/src/utils/project-icon.js.map +1 -1
  476. package/dist/src/utils/worktree.js +22 -19
  477. package/dist/src/utils/worktree.js.map +1 -1
  478. package/package.json +3 -11
  479. package/dist/server/client/daemon-client-terminal-stream-manager.d.ts +0 -43
  480. package/dist/server/client/daemon-client-terminal-stream-manager.d.ts.map +0 -1
  481. package/dist/server/client/daemon-client-terminal-stream-manager.js +0 -134
  482. package/dist/server/client/daemon-client-terminal-stream-manager.js.map +0 -1
  483. package/dist/server/server/utils/syntax-highlighter.d.ts +0 -10
  484. package/dist/server/server/utils/syntax-highlighter.d.ts.map +0 -1
  485. package/dist/server/server/utils/syntax-highlighter.js +0 -145
  486. package/dist/server/server/utils/syntax-highlighter.js.map +0 -1
  487. package/dist/server/shared/binary-mux.d.ts +0 -31
  488. package/dist/server/shared/binary-mux.d.ts.map +0 -1
  489. package/dist/server/shared/binary-mux.js +0 -114
  490. package/dist/server/shared/binary-mux.js.map +0 -1
  491. package/dist/server/shared/terminal-key-input.d.ts +0 -9
  492. package/dist/server/shared/terminal-key-input.d.ts.map +0 -1
  493. package/dist/server/shared/terminal-key-input.js +0 -132
  494. package/dist/server/shared/terminal-key-input.js.map +0 -1
  495. package/dist/src/server/utils/syntax-highlighter.js +0 -145
  496. package/dist/src/server/utils/syntax-highlighter.js.map +0 -1
  497. package/dist/src/shared/binary-mux.js +0 -114
  498. package/dist/src/shared/binary-mux.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import { z } from 'zod';
2
- import { AGENT_LIFECYCLE_STATUSES } from './agent-lifecycle.js';
3
- import { MAX_EXPLICIT_AGENT_TITLE_CHARS } from '../server/agent/agent-title-limits.js';
4
- import { AgentProviderSchema } from '../server/agent/provider-manifest.js';
5
- import { TOOL_CALL_ICON_NAMES } from '../server/agent/agent-sdk-types.js';
1
+ import { z } from "zod";
2
+ import { AGENT_LIFECYCLE_STATUSES } from "./agent-lifecycle.js";
3
+ import { MAX_EXPLICIT_AGENT_TITLE_CHARS } from "../server/agent/agent-title-limits.js";
4
+ import { AgentProviderSchema } from "../server/agent/provider-manifest.js";
5
+ import { TOOL_CALL_ICON_NAMES } from "../server/agent/agent-sdk-types.js";
6
6
  export const AgentStatusSchema = z.enum(AGENT_LIFECYCLE_STATUSES);
7
7
  const AgentModeSchema = z.object({
8
8
  id: z.string(),
@@ -41,22 +41,22 @@ const AgentUsageSchema = z.object({
41
41
  totalCostUsd: z.number().optional(),
42
42
  });
43
43
  const McpStdioServerConfigSchema = z.object({
44
- type: z.literal('stdio'),
44
+ type: z.literal("stdio"),
45
45
  command: z.string(),
46
46
  args: z.array(z.string()).optional(),
47
47
  env: z.record(z.string()).optional(),
48
48
  });
49
49
  const McpHttpServerConfigSchema = z.object({
50
- type: z.literal('http'),
50
+ type: z.literal("http"),
51
51
  url: z.string(),
52
52
  headers: z.record(z.string()).optional(),
53
53
  });
54
54
  const McpSseServerConfigSchema = z.object({
55
- type: z.literal('sse'),
55
+ type: z.literal("sse"),
56
56
  url: z.string(),
57
57
  headers: z.record(z.string()).optional(),
58
58
  });
59
- const McpServerConfigSchema = z.discriminatedUnion('type', [
59
+ const McpServerConfigSchema = z.discriminatedUnion("type", [
60
60
  McpStdioServerConfigSchema,
61
61
  McpHttpServerConfigSchema,
62
62
  McpSseServerConfigSchema,
@@ -85,12 +85,12 @@ const AgentSessionConfigSchema = z.object({
85
85
  const AgentPermissionUpdateSchema = z.record(z.unknown());
86
86
  export const AgentPermissionResponseSchema = z.union([
87
87
  z.object({
88
- behavior: z.literal('allow'),
88
+ behavior: z.literal("allow"),
89
89
  updatedInput: z.record(z.unknown()).optional(),
90
90
  updatedPermissions: z.array(AgentPermissionUpdateSchema).optional(),
91
91
  }),
92
92
  z.object({
93
- behavior: z.literal('deny'),
93
+ behavior: z.literal("deny"),
94
94
  message: z.string().optional(),
95
95
  interrupt: z.boolean().optional(),
96
96
  }),
@@ -99,7 +99,7 @@ export const AgentPermissionRequestPayloadSchema = z.object({
99
99
  id: z.string(),
100
100
  provider: AgentProviderSchema,
101
101
  name: z.string(),
102
- kind: z.enum(['tool', 'plan', 'question', 'mode', 'other']),
102
+ kind: z.enum(["tool", "plan", "question", "mode", "other"]),
103
103
  title: z.string().optional(),
104
104
  description: z.string().optional(),
105
105
  input: z.record(z.unknown()).optional(),
@@ -121,39 +121,65 @@ const NonNullUnknownSchema = z.union([
121
121
  z.array(z.unknown()),
122
122
  z.object({}).passthrough(),
123
123
  ]);
124
- const ToolCallDetailPayloadSchema = z.discriminatedUnion('type', [
124
+ const ToolCallDetailPayloadSchema = z.discriminatedUnion("type", [
125
125
  z.object({
126
- type: z.literal('shell'),
126
+ type: z.literal("shell"),
127
127
  command: z.string(),
128
128
  cwd: z.string().optional(),
129
129
  output: z.string().optional(),
130
130
  exitCode: z.number().nullable().optional(),
131
131
  }),
132
132
  z.object({
133
- type: z.literal('read'),
133
+ type: z.literal("read"),
134
134
  filePath: z.string(),
135
135
  content: z.string().optional(),
136
136
  offset: z.number().optional(),
137
137
  limit: z.number().optional(),
138
138
  }),
139
139
  z.object({
140
- type: z.literal('edit'),
140
+ type: z.literal("edit"),
141
141
  filePath: z.string(),
142
142
  oldString: z.string().optional(),
143
143
  newString: z.string().optional(),
144
144
  unifiedDiff: z.string().optional(),
145
145
  }),
146
146
  z.object({
147
- type: z.literal('write'),
147
+ type: z.literal("write"),
148
148
  filePath: z.string(),
149
149
  content: z.string().optional(),
150
150
  }),
151
151
  z.object({
152
- type: z.literal('search'),
152
+ type: z.literal("search"),
153
153
  query: z.string(),
154
+ toolName: z.enum(["search", "grep", "glob", "web_search"]).optional(),
155
+ content: z.string().optional(),
156
+ filePaths: z.array(z.string()).optional(),
157
+ webResults: z
158
+ .array(z.object({
159
+ title: z.string(),
160
+ url: z.string(),
161
+ }))
162
+ .optional(),
163
+ annotations: z.array(z.string()).optional(),
164
+ numFiles: z.number().optional(),
165
+ numMatches: z.number().optional(),
166
+ durationMs: z.number().optional(),
167
+ durationSeconds: z.number().optional(),
168
+ truncated: z.boolean().optional(),
169
+ mode: z.enum(["content", "files_with_matches", "count"]).optional(),
170
+ }),
171
+ z.object({
172
+ type: z.literal("fetch"),
173
+ url: z.string(),
174
+ prompt: z.string().optional(),
175
+ result: z.string().optional(),
176
+ code: z.number().optional(),
177
+ codeText: z.string().optional(),
178
+ bytes: z.number().optional(),
179
+ durationMs: z.number().optional(),
154
180
  }),
155
181
  z.object({
156
- type: z.literal('worktree_setup'),
182
+ type: z.literal("worktree_setup"),
157
183
  worktreePath: z.string(),
158
184
  branchName: z.string(),
159
185
  log: z.string(),
@@ -161,14 +187,14 @@ const ToolCallDetailPayloadSchema = z.discriminatedUnion('type', [
161
187
  index: z.number().int().positive(),
162
188
  command: z.string(),
163
189
  cwd: z.string(),
164
- status: z.enum(['running', 'completed', 'failed']),
190
+ status: z.enum(["running", "completed", "failed"]),
165
191
  exitCode: z.number().nullable(),
166
192
  durationMs: z.number().nonnegative().optional(),
167
193
  })),
168
194
  truncated: z.boolean().optional(),
169
195
  }),
170
196
  z.object({
171
- type: z.literal('sub_agent'),
197
+ type: z.literal("sub_agent"),
172
198
  subAgentType: z.string().optional(),
173
199
  description: z.string().optional(),
174
200
  log: z.string(),
@@ -179,20 +205,20 @@ const ToolCallDetailPayloadSchema = z.discriminatedUnion('type', [
179
205
  })),
180
206
  }),
181
207
  z.object({
182
- type: z.literal('plain_text'),
208
+ type: z.literal("plain_text"),
183
209
  label: z.string().optional(),
184
210
  text: z.string().optional(),
185
211
  icon: z.enum(TOOL_CALL_ICON_NAMES).optional(),
186
212
  }),
187
213
  z.object({
188
- type: z.literal('unknown'),
214
+ type: z.literal("unknown"),
189
215
  input: UnknownValueSchema,
190
216
  output: UnknownValueSchema,
191
217
  }),
192
218
  ]);
193
219
  const ToolCallBasePayloadSchema = z
194
220
  .object({
195
- type: z.literal('tool_call'),
221
+ type: z.literal("tool_call"),
196
222
  callId: z.string(),
197
223
  name: z.string(),
198
224
  detail: ToolCallDetailPayloadSchema,
@@ -200,19 +226,19 @@ const ToolCallBasePayloadSchema = z
200
226
  })
201
227
  .strict();
202
228
  const ToolCallRunningPayloadSchema = ToolCallBasePayloadSchema.extend({
203
- status: z.literal('running'),
229
+ status: z.literal("running"),
204
230
  error: z.null(),
205
231
  });
206
232
  const ToolCallCompletedPayloadSchema = ToolCallBasePayloadSchema.extend({
207
- status: z.literal('completed'),
233
+ status: z.literal("completed"),
208
234
  error: z.null(),
209
235
  });
210
236
  const ToolCallFailedPayloadSchema = ToolCallBasePayloadSchema.extend({
211
- status: z.literal('failed'),
237
+ status: z.literal("failed"),
212
238
  error: NonNullUnknownSchema,
213
239
  });
214
240
  const ToolCallCanceledPayloadSchema = ToolCallBasePayloadSchema.extend({
215
- status: z.literal('canceled'),
241
+ status: z.literal("canceled"),
216
242
  error: z.null(),
217
243
  });
218
244
  const ToolCallTimelineItemPayloadSchema = z.union([
@@ -223,84 +249,84 @@ const ToolCallTimelineItemPayloadSchema = z.union([
223
249
  ]);
224
250
  export const AgentTimelineItemPayloadSchema = z.union([
225
251
  z.object({
226
- type: z.literal('user_message'),
252
+ type: z.literal("user_message"),
227
253
  text: z.string(),
228
254
  messageId: z.string().optional(),
229
255
  }),
230
256
  z.object({
231
- type: z.literal('assistant_message'),
257
+ type: z.literal("assistant_message"),
232
258
  text: z.string(),
233
259
  }),
234
260
  z.object({
235
- type: z.literal('reasoning'),
261
+ type: z.literal("reasoning"),
236
262
  text: z.string(),
237
263
  }),
238
264
  ToolCallTimelineItemPayloadSchema,
239
265
  z.object({
240
- type: z.literal('todo'),
266
+ type: z.literal("todo"),
241
267
  items: z.array(z.object({
242
268
  text: z.string(),
243
269
  completed: z.boolean(),
244
270
  })),
245
271
  }),
246
272
  z.object({
247
- type: z.literal('error'),
273
+ type: z.literal("error"),
248
274
  message: z.string(),
249
275
  }),
250
276
  z.object({
251
- type: z.literal('compaction'),
252
- status: z.enum(['loading', 'completed']),
253
- trigger: z.enum(['auto', 'manual']).optional(),
277
+ type: z.literal("compaction"),
278
+ status: z.enum(["loading", "completed"]),
279
+ trigger: z.enum(["auto", "manual"]).optional(),
254
280
  preTokens: z.number().optional(),
255
281
  }),
256
282
  ]);
257
- export const AgentStreamEventPayloadSchema = z.discriminatedUnion('type', [
283
+ export const AgentStreamEventPayloadSchema = z.discriminatedUnion("type", [
258
284
  z.object({
259
- type: z.literal('thread_started'),
285
+ type: z.literal("thread_started"),
260
286
  sessionId: z.string(),
261
287
  provider: AgentProviderSchema,
262
288
  }),
263
289
  z.object({
264
- type: z.literal('turn_started'),
290
+ type: z.literal("turn_started"),
265
291
  provider: AgentProviderSchema,
266
292
  }),
267
293
  z.object({
268
- type: z.literal('turn_completed'),
294
+ type: z.literal("turn_completed"),
269
295
  provider: AgentProviderSchema,
270
296
  usage: AgentUsageSchema.optional(),
271
297
  }),
272
298
  z.object({
273
- type: z.literal('turn_failed'),
299
+ type: z.literal("turn_failed"),
274
300
  provider: AgentProviderSchema,
275
301
  error: z.string(),
276
302
  code: z.string().optional(),
277
303
  diagnostic: z.string().optional(),
278
304
  }),
279
305
  z.object({
280
- type: z.literal('turn_canceled'),
306
+ type: z.literal("turn_canceled"),
281
307
  provider: AgentProviderSchema,
282
308
  reason: z.string(),
283
309
  }),
284
310
  z.object({
285
- type: z.literal('timeline'),
311
+ type: z.literal("timeline"),
286
312
  provider: AgentProviderSchema,
287
313
  item: AgentTimelineItemPayloadSchema,
288
314
  }),
289
315
  z.object({
290
- type: z.literal('permission_requested'),
316
+ type: z.literal("permission_requested"),
291
317
  provider: AgentProviderSchema,
292
318
  request: AgentPermissionRequestPayloadSchema,
293
319
  }),
294
320
  z.object({
295
- type: z.literal('permission_resolved'),
321
+ type: z.literal("permission_resolved"),
296
322
  provider: AgentProviderSchema,
297
323
  requestId: z.string(),
298
324
  resolution: AgentPermissionResponseSchema,
299
325
  }),
300
326
  z.object({
301
- type: z.literal('attention_required'),
327
+ type: z.literal("attention_required"),
302
328
  provider: AgentProviderSchema,
303
- reason: z.enum(['finished', 'error', 'permission']),
329
+ reason: z.enum(["finished", "error", "permission"]),
304
330
  timestamp: z.string(),
305
331
  shouldNotify: z.boolean(),
306
332
  notification: z
@@ -310,7 +336,7 @@ export const AgentStreamEventPayloadSchema = z.discriminatedUnion('type', [
310
336
  data: z.object({
311
337
  serverId: z.string(),
312
338
  agentId: z.string(),
313
- reason: z.enum(['finished', 'error', 'permission']),
339
+ reason: z.enum(["finished", "error", "permission"]),
314
340
  }),
315
341
  })
316
342
  .optional(),
@@ -354,7 +380,7 @@ export const AgentSnapshotPayloadSchema = z.object({
354
380
  title: z.string().nullable(),
355
381
  labels: z.record(z.string()).default({}),
356
382
  requiresAttention: z.boolean().optional(),
357
- attentionReason: z.enum(['finished', 'error', 'permission']).nullable().optional(),
383
+ attentionReason: z.enum(["finished", "error", "permission"]).nullable().optional(),
358
384
  attentionTimestamp: z.string().nullable().optional(),
359
385
  archivedAt: z.string().nullable().optional(),
360
386
  });
@@ -362,16 +388,16 @@ export const AgentSnapshotPayloadSchema = z.object({
362
388
  // Session Inbound Messages (Session receives these)
363
389
  // ============================================================================
364
390
  export const VoiceAudioChunkMessageSchema = z.object({
365
- type: z.literal('voice_audio_chunk'),
391
+ type: z.literal("voice_audio_chunk"),
366
392
  audio: z.string(), // base64 encoded
367
393
  format: z.string(),
368
394
  isLast: z.boolean(),
369
395
  });
370
396
  export const AbortRequestMessageSchema = z.object({
371
- type: z.literal('abort_request'),
397
+ type: z.literal("abort_request"),
372
398
  });
373
399
  export const AudioPlayedMessageSchema = z.object({
374
- type: z.literal('audio_played'),
400
+ type: z.literal("audio_played"),
375
401
  id: z.string(),
376
402
  });
377
403
  const AgentDirectoryFilterSchema = z.object({
@@ -383,30 +409,30 @@ const AgentDirectoryFilterSchema = z.object({
383
409
  thinkingOptionId: z.string().nullable().optional(),
384
410
  });
385
411
  export const DeleteAgentRequestMessageSchema = z.object({
386
- type: z.literal('delete_agent_request'),
412
+ type: z.literal("delete_agent_request"),
387
413
  agentId: z.string(),
388
414
  requestId: z.string(),
389
415
  });
390
416
  export const ArchiveAgentRequestMessageSchema = z.object({
391
- type: z.literal('archive_agent_request'),
417
+ type: z.literal("archive_agent_request"),
392
418
  agentId: z.string(),
393
419
  requestId: z.string(),
394
420
  });
395
421
  export const UpdateAgentRequestMessageSchema = z.object({
396
- type: z.literal('update_agent_request'),
422
+ type: z.literal("update_agent_request"),
397
423
  agentId: z.string(),
398
424
  name: z.string().optional(),
399
425
  labels: z.record(z.string()).optional(),
400
426
  requestId: z.string(),
401
427
  });
402
428
  export const SetVoiceModeMessageSchema = z.object({
403
- type: z.literal('set_voice_mode'),
429
+ type: z.literal("set_voice_mode"),
404
430
  enabled: z.boolean(),
405
431
  agentId: z.string().optional(),
406
432
  requestId: z.string().optional(),
407
433
  });
408
434
  export const SendAgentMessageSchema = z.object({
409
- type: z.literal('send_agent_message'),
435
+ type: z.literal("send_agent_message"),
410
436
  agentId: z.string(),
411
437
  text: z.string(),
412
438
  messageId: z.string().optional(), // Client-provided ID for deduplication
@@ -421,13 +447,13 @@ export const SendAgentMessageSchema = z.object({
421
447
  // Agent RPCs (requestId-correlated)
422
448
  // ============================================================================
423
449
  export const FetchAgentsRequestMessageSchema = z.object({
424
- type: z.literal('fetch_agents_request'),
450
+ type: z.literal("fetch_agents_request"),
425
451
  requestId: z.string(),
426
452
  filter: AgentDirectoryFilterSchema.optional(),
427
453
  sort: z
428
454
  .array(z.object({
429
- key: z.enum(['status_priority', 'created_at', 'updated_at', 'title']),
430
- direction: z.enum(['asc', 'desc']),
455
+ key: z.enum(["status_priority", "created_at", "updated_at", "title"]),
456
+ direction: z.enum(["asc", "desc"]),
431
457
  }))
432
458
  .optional(),
433
459
  page: z
@@ -443,14 +469,14 @@ export const FetchAgentsRequestMessageSchema = z.object({
443
469
  .optional(),
444
470
  });
445
471
  const WorkspaceStateBucketSchema = z.enum([
446
- 'needs_input',
447
- 'failed',
448
- 'running',
449
- 'attention',
450
- 'done',
472
+ "needs_input",
473
+ "failed",
474
+ "running",
475
+ "attention",
476
+ "done",
451
477
  ]);
452
478
  export const FetchWorkspacesRequestMessageSchema = z.object({
453
- type: z.literal('fetch_workspaces_request'),
479
+ type: z.literal("fetch_workspaces_request"),
454
480
  requestId: z.string(),
455
481
  filter: z
456
482
  .object({
@@ -461,8 +487,8 @@ export const FetchWorkspacesRequestMessageSchema = z.object({
461
487
  .optional(),
462
488
  sort: z
463
489
  .array(z.object({
464
- key: z.enum(['status_priority', 'activity_at', 'name', 'project_id']),
465
- direction: z.enum(['asc', 'desc']),
490
+ key: z.enum(["status_priority", "activity_at", "name", "project_id"]),
491
+ direction: z.enum(["asc", "desc"]),
466
492
  }))
467
493
  .optional(),
468
494
  page: z
@@ -478,13 +504,13 @@ export const FetchWorkspacesRequestMessageSchema = z.object({
478
504
  .optional(),
479
505
  });
480
506
  export const FetchAgentRequestMessageSchema = z.object({
481
- type: z.literal('fetch_agent_request'),
507
+ type: z.literal("fetch_agent_request"),
482
508
  requestId: z.string(),
483
509
  /** Accepts full ID, unique prefix, or exact full title (server resolves). */
484
510
  agentId: z.string(),
485
511
  });
486
512
  export const SendAgentMessageRequestSchema = z.object({
487
- type: z.literal('send_agent_message_request'),
513
+ type: z.literal("send_agent_message_request"),
488
514
  requestId: z.string(),
489
515
  /** Accepts full ID, unique prefix, or exact full title (server resolves). */
490
516
  agentId: z.string(),
@@ -498,7 +524,7 @@ export const SendAgentMessageRequestSchema = z.object({
498
524
  .optional(),
499
525
  });
500
526
  export const WaitForFinishRequestSchema = z.object({
501
- type: z.literal('wait_for_finish_request'),
527
+ type: z.literal("wait_for_finish_request"),
502
528
  requestId: z.string(),
503
529
  /** Accepts full ID, unique prefix, or exact full title (server resolves). */
504
530
  agentId: z.string(),
@@ -508,24 +534,24 @@ export const WaitForFinishRequestSchema = z.object({
508
534
  // Dictation Streaming (lossless, resumable)
509
535
  // ============================================================================
510
536
  export const DictationStreamStartMessageSchema = z.object({
511
- type: z.literal('dictation_stream_start'),
537
+ type: z.literal("dictation_stream_start"),
512
538
  dictationId: z.string(),
513
539
  format: z.string(), // e.g. "audio/pcm;rate=16000;bits=16"
514
540
  });
515
541
  export const DictationStreamChunkMessageSchema = z.object({
516
- type: z.literal('dictation_stream_chunk'),
542
+ type: z.literal("dictation_stream_chunk"),
517
543
  dictationId: z.string(),
518
544
  seq: z.number().int().nonnegative(),
519
545
  audio: z.string(), // base64 encoded chunk
520
546
  format: z.string(), // e.g. "audio/pcm;rate=16000;bits=16"
521
547
  });
522
548
  export const DictationStreamFinishMessageSchema = z.object({
523
- type: z.literal('dictation_stream_finish'),
549
+ type: z.literal("dictation_stream_finish"),
524
550
  dictationId: z.string(),
525
551
  finalSeq: z.number().int().nonnegative(),
526
552
  });
527
553
  export const DictationStreamCancelMessageSchema = z.object({
528
- type: z.literal('dictation_stream_cancel'),
554
+ type: z.literal("dictation_stream_cancel"),
529
555
  dictationId: z.string(),
530
556
  });
531
557
  const GitSetupOptionsSchema = z.object({
@@ -536,7 +562,7 @@ const GitSetupOptionsSchema = z.object({
536
562
  worktreeSlug: z.string().optional(),
537
563
  });
538
564
  export const CreateAgentRequestMessageSchema = z.object({
539
- type: z.literal('create_agent_request'),
565
+ type: z.literal("create_agent_request"),
540
566
  config: AgentSessionConfigSchema,
541
567
  worktreeName: z.string().optional(),
542
568
  initialPrompt: z.string().optional(),
@@ -553,46 +579,46 @@ export const CreateAgentRequestMessageSchema = z.object({
553
579
  requestId: z.string(),
554
580
  });
555
581
  export const ListProviderModelsRequestMessageSchema = z.object({
556
- type: z.literal('list_provider_models_request'),
582
+ type: z.literal("list_provider_models_request"),
557
583
  provider: AgentProviderSchema,
558
584
  cwd: z.string().optional(),
559
585
  requestId: z.string(),
560
586
  });
561
587
  export const ListAvailableProvidersRequestMessageSchema = z.object({
562
- type: z.literal('list_available_providers_request'),
588
+ type: z.literal("list_available_providers_request"),
563
589
  requestId: z.string(),
564
590
  });
565
591
  export const SpeechModelsListRequestSchema = z.object({
566
- type: z.literal('speech_models_list_request'),
592
+ type: z.literal("speech_models_list_request"),
567
593
  requestId: z.string(),
568
594
  });
569
595
  export const SpeechModelsDownloadRequestSchema = z.object({
570
- type: z.literal('speech_models_download_request'),
596
+ type: z.literal("speech_models_download_request"),
571
597
  modelIds: z.array(z.string()).optional(),
572
598
  requestId: z.string(),
573
599
  });
574
600
  export const ResumeAgentRequestMessageSchema = z.object({
575
- type: z.literal('resume_agent_request'),
601
+ type: z.literal("resume_agent_request"),
576
602
  handle: AgentPersistenceHandleSchema,
577
603
  overrides: AgentSessionConfigSchema.partial().optional(),
578
604
  requestId: z.string(),
579
605
  });
580
606
  export const RefreshAgentRequestMessageSchema = z.object({
581
- type: z.literal('refresh_agent_request'),
607
+ type: z.literal("refresh_agent_request"),
582
608
  agentId: z.string(),
583
609
  requestId: z.string(),
584
610
  });
585
611
  export const CancelAgentRequestMessageSchema = z.object({
586
- type: z.literal('cancel_agent_request'),
612
+ type: z.literal("cancel_agent_request"),
587
613
  agentId: z.string(),
588
614
  });
589
615
  export const RestartServerRequestMessageSchema = z.object({
590
- type: z.literal('restart_server_request'),
616
+ type: z.literal("restart_server_request"),
591
617
  reason: z.string().optional(),
592
618
  requestId: z.string(),
593
619
  });
594
620
  export const ShutdownServerRequestMessageSchema = z.object({
595
- type: z.literal('shutdown_server_request'),
621
+ type: z.literal("shutdown_server_request"),
596
622
  requestId: z.string(),
597
623
  });
598
624
  export const AgentTimelineCursorSchema = z.object({
@@ -600,24 +626,24 @@ export const AgentTimelineCursorSchema = z.object({
600
626
  seq: z.number().int().nonnegative(),
601
627
  });
602
628
  export const FetchAgentTimelineRequestMessageSchema = z.object({
603
- type: z.literal('fetch_agent_timeline_request'),
629
+ type: z.literal("fetch_agent_timeline_request"),
604
630
  agentId: z.string(),
605
631
  requestId: z.string(),
606
- direction: z.enum(['tail', 'before', 'after']).optional(),
632
+ direction: z.enum(["tail", "before", "after"]).optional(),
607
633
  cursor: AgentTimelineCursorSchema.optional(),
608
634
  // 0 means "all matching rows for this query window".
609
635
  limit: z.number().int().nonnegative().optional(),
610
636
  // Default should be projected for app timeline loading.
611
- projection: z.enum(['projected', 'canonical']).optional(),
637
+ projection: z.enum(["projected", "canonical"]).optional(),
612
638
  });
613
639
  export const SetAgentModeRequestMessageSchema = z.object({
614
- type: z.literal('set_agent_mode_request'),
640
+ type: z.literal("set_agent_mode_request"),
615
641
  agentId: z.string(),
616
642
  modeId: z.string(),
617
643
  requestId: z.string(),
618
644
  });
619
645
  export const SetAgentModeResponseMessageSchema = z.object({
620
- type: z.literal('set_agent_mode_response'),
646
+ type: z.literal("set_agent_mode_response"),
621
647
  payload: z.object({
622
648
  requestId: z.string(),
623
649
  agentId: z.string(),
@@ -626,13 +652,13 @@ export const SetAgentModeResponseMessageSchema = z.object({
626
652
  }),
627
653
  });
628
654
  export const SetAgentModelRequestMessageSchema = z.object({
629
- type: z.literal('set_agent_model_request'),
655
+ type: z.literal("set_agent_model_request"),
630
656
  agentId: z.string(),
631
657
  modelId: z.string().nullable(),
632
658
  requestId: z.string(),
633
659
  });
634
660
  export const SetAgentModelResponseMessageSchema = z.object({
635
- type: z.literal('set_agent_model_response'),
661
+ type: z.literal("set_agent_model_response"),
636
662
  payload: z.object({
637
663
  requestId: z.string(),
638
664
  agentId: z.string(),
@@ -641,13 +667,13 @@ export const SetAgentModelResponseMessageSchema = z.object({
641
667
  }),
642
668
  });
643
669
  export const SetAgentThinkingRequestMessageSchema = z.object({
644
- type: z.literal('set_agent_thinking_request'),
670
+ type: z.literal("set_agent_thinking_request"),
645
671
  agentId: z.string(),
646
672
  thinkingOptionId: z.string().nullable(),
647
673
  requestId: z.string(),
648
674
  });
649
675
  export const SetAgentThinkingResponseMessageSchema = z.object({
650
- type: z.literal('set_agent_thinking_response'),
676
+ type: z.literal("set_agent_thinking_response"),
651
677
  payload: z.object({
652
678
  requestId: z.string(),
653
679
  agentId: z.string(),
@@ -656,7 +682,7 @@ export const SetAgentThinkingResponseMessageSchema = z.object({
656
682
  }),
657
683
  });
658
684
  export const UpdateAgentResponseMessageSchema = z.object({
659
- type: z.literal('update_agent_response'),
685
+ type: z.literal("update_agent_response"),
660
686
  payload: z.object({
661
687
  requestId: z.string(),
662
688
  agentId: z.string(),
@@ -665,7 +691,7 @@ export const UpdateAgentResponseMessageSchema = z.object({
665
691
  }),
666
692
  });
667
693
  export const SetVoiceModeResponseMessageSchema = z.object({
668
- type: z.literal('set_voice_mode_response'),
694
+ type: z.literal("set_voice_mode_response"),
669
695
  payload: z.object({
670
696
  requestId: z.string(),
671
697
  enabled: z.boolean(),
@@ -678,65 +704,70 @@ export const SetVoiceModeResponseMessageSchema = z.object({
678
704
  }),
679
705
  });
680
706
  export const AgentPermissionResponseMessageSchema = z.object({
681
- type: z.literal('agent_permission_response'),
707
+ type: z.literal("agent_permission_response"),
682
708
  agentId: z.string(),
683
709
  requestId: z.string(),
684
710
  response: AgentPermissionResponseSchema,
685
711
  });
686
- const CheckoutErrorCodeSchema = z.enum(['NOT_GIT_REPO', 'NOT_ALLOWED', 'MERGE_CONFLICT', 'UNKNOWN']);
712
+ const CheckoutErrorCodeSchema = z.enum([
713
+ "NOT_GIT_REPO",
714
+ "NOT_ALLOWED",
715
+ "MERGE_CONFLICT",
716
+ "UNKNOWN",
717
+ ]);
687
718
  const CheckoutErrorSchema = z.object({
688
719
  code: CheckoutErrorCodeSchema,
689
720
  message: z.string(),
690
721
  });
691
722
  const CheckoutDiffCompareSchema = z.object({
692
- mode: z.enum(['uncommitted', 'base']),
723
+ mode: z.enum(["uncommitted", "base"]),
693
724
  baseRef: z.string().optional(),
694
725
  });
695
726
  export const CheckoutStatusRequestSchema = z.object({
696
- type: z.literal('checkout_status_request'),
727
+ type: z.literal("checkout_status_request"),
697
728
  cwd: z.string(),
698
729
  requestId: z.string(),
699
730
  });
700
731
  export const SubscribeCheckoutDiffRequestSchema = z.object({
701
- type: z.literal('subscribe_checkout_diff_request'),
732
+ type: z.literal("subscribe_checkout_diff_request"),
702
733
  subscriptionId: z.string(),
703
734
  cwd: z.string(),
704
735
  compare: CheckoutDiffCompareSchema,
705
736
  requestId: z.string(),
706
737
  });
707
738
  export const UnsubscribeCheckoutDiffRequestSchema = z.object({
708
- type: z.literal('unsubscribe_checkout_diff_request'),
739
+ type: z.literal("unsubscribe_checkout_diff_request"),
709
740
  subscriptionId: z.string(),
710
741
  });
711
742
  export const CheckoutCommitRequestSchema = z.object({
712
- type: z.literal('checkout_commit_request'),
743
+ type: z.literal("checkout_commit_request"),
713
744
  cwd: z.string(),
714
745
  message: z.string().optional(),
715
746
  addAll: z.boolean().optional(),
716
747
  requestId: z.string(),
717
748
  });
718
749
  export const CheckoutMergeRequestSchema = z.object({
719
- type: z.literal('checkout_merge_request'),
750
+ type: z.literal("checkout_merge_request"),
720
751
  cwd: z.string(),
721
752
  baseRef: z.string().optional(),
722
- strategy: z.enum(['merge', 'squash']).optional(),
753
+ strategy: z.enum(["merge", "squash"]).optional(),
723
754
  requireCleanTarget: z.boolean().optional(),
724
755
  requestId: z.string(),
725
756
  });
726
757
  export const CheckoutMergeFromBaseRequestSchema = z.object({
727
- type: z.literal('checkout_merge_from_base_request'),
758
+ type: z.literal("checkout_merge_from_base_request"),
728
759
  cwd: z.string(),
729
760
  baseRef: z.string().optional(),
730
761
  requireCleanTarget: z.boolean().optional(),
731
762
  requestId: z.string(),
732
763
  });
733
764
  export const CheckoutPushRequestSchema = z.object({
734
- type: z.literal('checkout_push_request'),
765
+ type: z.literal("checkout_push_request"),
735
766
  cwd: z.string(),
736
767
  requestId: z.string(),
737
768
  });
738
769
  export const CheckoutPrCreateRequestSchema = z.object({
739
- type: z.literal('checkout_pr_create_request'),
770
+ type: z.literal("checkout_pr_create_request"),
740
771
  cwd: z.string(),
741
772
  title: z.string().optional(),
742
773
  body: z.string().optional(),
@@ -744,25 +775,25 @@ export const CheckoutPrCreateRequestSchema = z.object({
744
775
  requestId: z.string(),
745
776
  });
746
777
  export const CheckoutPrStatusRequestSchema = z.object({
747
- type: z.literal('checkout_pr_status_request'),
778
+ type: z.literal("checkout_pr_status_request"),
748
779
  cwd: z.string(),
749
780
  requestId: z.string(),
750
781
  });
751
782
  export const ValidateBranchRequestSchema = z.object({
752
- type: z.literal('validate_branch_request'),
783
+ type: z.literal("validate_branch_request"),
753
784
  cwd: z.string(),
754
785
  branchName: z.string(),
755
786
  requestId: z.string(),
756
787
  });
757
788
  export const BranchSuggestionsRequestSchema = z.object({
758
- type: z.literal('branch_suggestions_request'),
789
+ type: z.literal("branch_suggestions_request"),
759
790
  cwd: z.string(),
760
791
  query: z.string().optional(),
761
792
  limit: z.number().int().min(1).max(200).optional(),
762
793
  requestId: z.string(),
763
794
  });
764
795
  export const DirectorySuggestionsRequestSchema = z.object({
765
- type: z.literal('directory_suggestions_request'),
796
+ type: z.literal("directory_suggestions_request"),
766
797
  query: z.string(),
767
798
  cwd: z.string().optional(),
768
799
  includeFiles: z.boolean().optional(),
@@ -771,25 +802,31 @@ export const DirectorySuggestionsRequestSchema = z.object({
771
802
  requestId: z.string(),
772
803
  });
773
804
  export const PaseoWorktreeListRequestSchema = z.object({
774
- type: z.literal('paseo_worktree_list_request'),
805
+ type: z.literal("paseo_worktree_list_request"),
775
806
  cwd: z.string().optional(),
776
807
  repoRoot: z.string().optional(),
777
808
  requestId: z.string(),
778
809
  });
779
810
  export const PaseoWorktreeArchiveRequestSchema = z.object({
780
- type: z.literal('paseo_worktree_archive_request'),
811
+ type: z.literal("paseo_worktree_archive_request"),
781
812
  worktreePath: z.string().optional(),
782
813
  repoRoot: z.string().optional(),
783
814
  branchName: z.string().optional(),
784
815
  requestId: z.string(),
785
816
  });
817
+ export const CreatePaseoWorktreeRequestSchema = z.object({
818
+ type: z.literal("create_paseo_worktree_request"),
819
+ cwd: z.string(),
820
+ worktreeSlug: z.string().optional(),
821
+ requestId: z.string(),
822
+ });
786
823
  export const OpenProjectRequestSchema = z.object({
787
- type: z.literal('open_project_request'),
824
+ type: z.literal("open_project_request"),
788
825
  cwd: z.string(),
789
826
  requestId: z.string(),
790
827
  });
791
828
  export const ArchiveWorkspaceRequestSchema = z.object({
792
- type: z.literal('archive_workspace_request'),
829
+ type: z.literal("archive_workspace_request"),
793
830
  workspaceId: z.string(),
794
831
  requestId: z.string(),
795
832
  });
@@ -800,7 +837,7 @@ const HighlightTokenSchema = z.object({
800
837
  style: z.string().nullable(),
801
838
  });
802
839
  const DiffLineSchema = z.object({
803
- type: z.enum(['add', 'remove', 'context', 'header']),
840
+ type: z.enum(["add", "remove", "context", "header"]),
804
841
  content: z.string(),
805
842
  tokens: z.array(HighlightTokenSchema).optional(),
806
843
  });
@@ -818,19 +855,19 @@ const ParsedDiffFileSchema = z.object({
818
855
  additions: z.number(),
819
856
  deletions: z.number(),
820
857
  hunks: z.array(DiffHunkSchema),
821
- status: z.enum(['ok', 'too_large', 'binary']).optional(),
858
+ status: z.enum(["ok", "too_large", "binary"]).optional(),
822
859
  });
823
860
  const FileExplorerEntrySchema = z.object({
824
861
  name: z.string(),
825
862
  path: z.string(),
826
- kind: z.enum(['file', 'directory']),
863
+ kind: z.enum(["file", "directory"]),
827
864
  size: z.number(),
828
865
  modifiedAt: z.string(),
829
866
  });
830
867
  const FileExplorerFileSchema = z.object({
831
868
  path: z.string(),
832
- kind: z.enum(['text', 'image', 'binary']),
833
- encoding: z.enum(['utf-8', 'base64', 'none']),
869
+ kind: z.enum(["text", "image", "binary"]),
870
+ encoding: z.enum(["utf-8", "base64", "none"]),
834
871
  content: z.string().optional(),
835
872
  mimeType: z.string().optional(),
836
873
  size: z.number(),
@@ -841,37 +878,37 @@ const FileExplorerDirectorySchema = z.object({
841
878
  entries: z.array(FileExplorerEntrySchema),
842
879
  });
843
880
  export const FileExplorerRequestSchema = z.object({
844
- type: z.literal('file_explorer_request'),
881
+ type: z.literal("file_explorer_request"),
845
882
  cwd: z.string(),
846
883
  path: z.string().optional(),
847
- mode: z.enum(['list', 'file']),
884
+ mode: z.enum(["list", "file"]),
848
885
  requestId: z.string(),
849
886
  });
850
887
  export const ProjectIconRequestSchema = z.object({
851
- type: z.literal('project_icon_request'),
888
+ type: z.literal("project_icon_request"),
852
889
  cwd: z.string(),
853
890
  requestId: z.string(),
854
891
  });
855
892
  export const FileDownloadTokenRequestSchema = z.object({
856
- type: z.literal('file_download_token_request'),
893
+ type: z.literal("file_download_token_request"),
857
894
  cwd: z.string(),
858
895
  path: z.string(),
859
896
  requestId: z.string(),
860
897
  });
861
898
  export const ClearAgentAttentionMessageSchema = z.object({
862
- type: z.literal('clear_agent_attention'),
899
+ type: z.literal("clear_agent_attention"),
863
900
  agentId: z.union([z.string(), z.array(z.string())]),
864
901
  });
865
902
  export const ClientHeartbeatMessageSchema = z.object({
866
- type: z.literal('client_heartbeat'),
867
- deviceType: z.enum(['web', 'mobile']),
903
+ type: z.literal("client_heartbeat"),
904
+ deviceType: z.enum(["web", "mobile"]),
868
905
  focusedAgentId: z.string().nullable(),
869
906
  lastActivityAt: z.string(),
870
907
  appVisible: z.boolean(),
871
908
  appVisibilityChangedAt: z.string().optional(),
872
909
  });
873
910
  export const PingMessageSchema = z.object({
874
- type: z.literal('ping'),
911
+ type: z.literal("ping"),
875
912
  requestId: z.string(),
876
913
  clientSentAt: z.number().int().optional(),
877
914
  });
@@ -883,81 +920,68 @@ const ListCommandsDraftConfigSchema = z.object({
883
920
  thinkingOptionId: z.string().optional(),
884
921
  });
885
922
  export const ListCommandsRequestSchema = z.object({
886
- type: z.literal('list_commands_request'),
923
+ type: z.literal("list_commands_request"),
887
924
  agentId: z.string(),
888
925
  draftConfig: ListCommandsDraftConfigSchema.optional(),
889
926
  requestId: z.string(),
890
927
  });
891
928
  export const RegisterPushTokenMessageSchema = z.object({
892
- type: z.literal('register_push_token'),
929
+ type: z.literal("register_push_token"),
893
930
  token: z.string(),
894
931
  });
895
932
  // ============================================================================
896
933
  // Terminal Messages
897
934
  // ============================================================================
898
935
  export const ListTerminalsRequestSchema = z.object({
899
- type: z.literal('list_terminals_request'),
936
+ type: z.literal("list_terminals_request"),
900
937
  cwd: z.string(),
901
938
  requestId: z.string(),
902
939
  });
903
940
  export const SubscribeTerminalsRequestSchema = z.object({
904
- type: z.literal('subscribe_terminals_request'),
941
+ type: z.literal("subscribe_terminals_request"),
905
942
  cwd: z.string(),
906
943
  });
907
944
  export const UnsubscribeTerminalsRequestSchema = z.object({
908
- type: z.literal('unsubscribe_terminals_request'),
945
+ type: z.literal("unsubscribe_terminals_request"),
909
946
  cwd: z.string(),
910
947
  });
911
948
  export const CreateTerminalRequestSchema = z.object({
912
- type: z.literal('create_terminal_request'),
949
+ type: z.literal("create_terminal_request"),
913
950
  cwd: z.string(),
914
951
  name: z.string().optional(),
915
952
  requestId: z.string(),
916
953
  });
917
954
  export const SubscribeTerminalRequestSchema = z.object({
918
- type: z.literal('subscribe_terminal_request'),
955
+ type: z.literal("subscribe_terminal_request"),
919
956
  terminalId: z.string(),
920
957
  requestId: z.string(),
921
958
  });
922
959
  export const UnsubscribeTerminalRequestSchema = z.object({
923
- type: z.literal('unsubscribe_terminal_request'),
960
+ type: z.literal("unsubscribe_terminal_request"),
924
961
  terminalId: z.string(),
925
962
  });
926
- const TerminalClientMessageSchema = z.discriminatedUnion('type', [
927
- z.object({ type: z.literal('input'), data: z.string() }),
928
- z.object({ type: z.literal('resize'), rows: z.number(), cols: z.number() }),
963
+ const TerminalClientMessageSchema = z.discriminatedUnion("type", [
964
+ z.object({ type: z.literal("input"), data: z.string() }),
965
+ z.object({ type: z.literal("resize"), rows: z.number(), cols: z.number() }),
929
966
  z.object({
930
- type: z.literal('mouse'),
967
+ type: z.literal("mouse"),
931
968
  row: z.number(),
932
969
  col: z.number(),
933
970
  button: z.number(),
934
- action: z.enum(['down', 'up', 'move']),
971
+ action: z.enum(["down", "up", "move"]),
935
972
  }),
936
973
  ]);
937
974
  export const TerminalInputSchema = z.object({
938
- type: z.literal('terminal_input'),
975
+ type: z.literal("terminal_input"),
939
976
  terminalId: z.string(),
940
977
  message: TerminalClientMessageSchema,
941
978
  });
942
979
  export const KillTerminalRequestSchema = z.object({
943
- type: z.literal('kill_terminal_request'),
980
+ type: z.literal("kill_terminal_request"),
944
981
  terminalId: z.string(),
945
982
  requestId: z.string(),
946
983
  });
947
- export const AttachTerminalStreamRequestSchema = z.object({
948
- type: z.literal('attach_terminal_stream_request'),
949
- terminalId: z.string(),
950
- resumeOffset: z.number().int().nonnegative().optional(),
951
- rows: z.number().int().positive().optional(),
952
- cols: z.number().int().positive().optional(),
953
- requestId: z.string(),
954
- });
955
- export const DetachTerminalStreamRequestSchema = z.object({
956
- type: z.literal('detach_terminal_stream_request'),
957
- streamId: z.number().int().nonnegative(),
958
- requestId: z.string(),
959
- });
960
- export const SessionInboundMessageSchema = z.discriminatedUnion('type', [
984
+ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
961
985
  VoiceAudioChunkMessageSchema,
962
986
  AbortRequestMessageSchema,
963
987
  AudioPlayedMessageSchema,
@@ -1003,6 +1027,7 @@ export const SessionInboundMessageSchema = z.discriminatedUnion('type', [
1003
1027
  DirectorySuggestionsRequestSchema,
1004
1028
  PaseoWorktreeListRequestSchema,
1005
1029
  PaseoWorktreeArchiveRequestSchema,
1030
+ CreatePaseoWorktreeRequestSchema,
1006
1031
  OpenProjectRequestSchema,
1007
1032
  ArchiveWorkspaceRequestSchema,
1008
1033
  FileExplorerRequestSchema,
@@ -1021,8 +1046,6 @@ export const SessionInboundMessageSchema = z.discriminatedUnion('type', [
1021
1046
  UnsubscribeTerminalRequestSchema,
1022
1047
  TerminalInputSchema,
1023
1048
  KillTerminalRequestSchema,
1024
- AttachTerminalStreamRequestSchema,
1025
- DetachTerminalStreamRequestSchema,
1026
1049
  ]);
1027
1050
  // ============================================================================
1028
1051
  // Session Outbound Messages (Session emits these)
@@ -1030,22 +1053,22 @@ export const SessionInboundMessageSchema = z.discriminatedUnion('type', [
1030
1053
  export const ActivityLogPayloadSchema = z.object({
1031
1054
  id: z.string(),
1032
1055
  timestamp: z.coerce.date(),
1033
- type: z.enum(['transcript', 'assistant', 'tool_call', 'tool_result', 'error', 'system']),
1056
+ type: z.enum(["transcript", "assistant", "tool_call", "tool_result", "error", "system"]),
1034
1057
  content: z.string(),
1035
1058
  metadata: z.record(z.unknown()).optional(),
1036
1059
  });
1037
1060
  export const ActivityLogMessageSchema = z.object({
1038
- type: z.literal('activity_log'),
1061
+ type: z.literal("activity_log"),
1039
1062
  payload: ActivityLogPayloadSchema,
1040
1063
  });
1041
1064
  export const AssistantChunkMessageSchema = z.object({
1042
- type: z.literal('assistant_chunk'),
1065
+ type: z.literal("assistant_chunk"),
1043
1066
  payload: z.object({
1044
1067
  chunk: z.string(),
1045
1068
  }),
1046
1069
  });
1047
1070
  export const AudioOutputMessageSchema = z.object({
1048
- type: z.literal('audio_output'),
1071
+ type: z.literal("audio_output"),
1049
1072
  payload: z.object({
1050
1073
  audio: z.string(), // base64 encoded
1051
1074
  format: z.string(),
@@ -1057,7 +1080,7 @@ export const AudioOutputMessageSchema = z.object({
1057
1080
  }),
1058
1081
  });
1059
1082
  export const TranscriptionResultMessageSchema = z.object({
1060
- type: z.literal('transcription_result'),
1083
+ type: z.literal("transcription_result"),
1061
1084
  payload: z.object({
1062
1085
  text: z.string(),
1063
1086
  language: z.string().optional(),
@@ -1071,34 +1094,34 @@ export const TranscriptionResultMessageSchema = z.object({
1071
1094
  }),
1072
1095
  });
1073
1096
  export const VoiceInputStateMessageSchema = z.object({
1074
- type: z.literal('voice_input_state'),
1097
+ type: z.literal("voice_input_state"),
1075
1098
  payload: z.object({
1076
1099
  isSpeaking: z.boolean(),
1077
1100
  }),
1078
1101
  });
1079
1102
  export const DictationStreamAckMessageSchema = z.object({
1080
- type: z.literal('dictation_stream_ack'),
1103
+ type: z.literal("dictation_stream_ack"),
1081
1104
  payload: z.object({
1082
1105
  dictationId: z.string(),
1083
1106
  ackSeq: z.number().int(),
1084
1107
  }),
1085
1108
  });
1086
1109
  export const DictationStreamFinishAcceptedMessageSchema = z.object({
1087
- type: z.literal('dictation_stream_finish_accepted'),
1110
+ type: z.literal("dictation_stream_finish_accepted"),
1088
1111
  payload: z.object({
1089
1112
  dictationId: z.string(),
1090
1113
  timeoutMs: z.number().int().positive(),
1091
1114
  }),
1092
1115
  });
1093
1116
  export const DictationStreamPartialMessageSchema = z.object({
1094
- type: z.literal('dictation_stream_partial'),
1117
+ type: z.literal("dictation_stream_partial"),
1095
1118
  payload: z.object({
1096
1119
  dictationId: z.string(),
1097
1120
  text: z.string(),
1098
1121
  }),
1099
1122
  });
1100
1123
  export const DictationStreamFinalMessageSchema = z.object({
1101
- type: z.literal('dictation_stream_final'),
1124
+ type: z.literal("dictation_stream_final"),
1102
1125
  payload: z.object({
1103
1126
  dictationId: z.string(),
1104
1127
  text: z.string(),
@@ -1106,7 +1129,7 @@ export const DictationStreamFinalMessageSchema = z.object({
1106
1129
  }),
1107
1130
  });
1108
1131
  export const DictationStreamErrorMessageSchema = z.object({
1109
- type: z.literal('dictation_stream_error'),
1132
+ type: z.literal("dictation_stream_error"),
1110
1133
  payload: z.object({
1111
1134
  dictationId: z.string(),
1112
1135
  error: z.string(),
@@ -1130,14 +1153,14 @@ export const ServerCapabilitiesSchema = z
1130
1153
  })
1131
1154
  .passthrough();
1132
1155
  const ServerInfoHostnameSchema = z.unknown().transform((value) => {
1133
- if (typeof value !== 'string') {
1156
+ if (typeof value !== "string") {
1134
1157
  return null;
1135
1158
  }
1136
1159
  const trimmed = value.trim();
1137
1160
  return trimmed.length > 0 ? trimmed : null;
1138
1161
  });
1139
1162
  const ServerInfoVersionSchema = z.unknown().transform((value) => {
1140
- if (typeof value !== 'string') {
1163
+ if (typeof value !== "string") {
1141
1164
  return null;
1142
1165
  }
1143
1166
  const trimmed = value.trim();
@@ -1158,7 +1181,7 @@ const ServerCapabilitiesFromUnknownSchema = z
1158
1181
  });
1159
1182
  export const ServerInfoStatusPayloadSchema = z
1160
1183
  .object({
1161
- status: z.literal('server_info'),
1184
+ status: z.literal("server_info"),
1162
1185
  serverId: z.string().trim().min(1),
1163
1186
  hostname: ServerInfoHostnameSchema.optional(),
1164
1187
  version: ServerInfoVersionSchema.optional(),
@@ -1171,7 +1194,7 @@ export const ServerInfoStatusPayloadSchema = z
1171
1194
  version: payload.version ?? null,
1172
1195
  }));
1173
1196
  export const StatusMessageSchema = z.object({
1174
- type: z.literal('status'),
1197
+ type: z.literal("status"),
1175
1198
  payload: z
1176
1199
  .object({
1177
1200
  status: z.string(),
@@ -1179,7 +1202,7 @@ export const StatusMessageSchema = z.object({
1179
1202
  .passthrough(), // Allow additional fields
1180
1203
  });
1181
1204
  export const PongMessageSchema = z.object({
1182
- type: z.literal('pong'),
1205
+ type: z.literal("pong"),
1183
1206
  payload: z.object({
1184
1207
  requestId: z.string(),
1185
1208
  clientSentAt: z.number().int().optional(),
@@ -1188,7 +1211,7 @@ export const PongMessageSchema = z.object({
1188
1211
  }),
1189
1212
  });
1190
1213
  export const RpcErrorMessageSchema = z.object({
1191
- type: z.literal('rpc_error'),
1214
+ type: z.literal("rpc_error"),
1192
1215
  payload: z.object({
1193
1216
  requestId: z.string(),
1194
1217
  requestType: z.string().optional(),
@@ -1205,38 +1228,38 @@ const AgentStatusWithTimelineSchema = AgentStatusWithRequestSchema.extend({
1205
1228
  });
1206
1229
  export const AgentCreatedStatusPayloadSchema = z
1207
1230
  .object({
1208
- status: z.literal('agent_created'),
1231
+ status: z.literal("agent_created"),
1209
1232
  agent: AgentSnapshotPayloadSchema,
1210
1233
  })
1211
1234
  .extend(AgentStatusWithRequestSchema.shape);
1212
1235
  export const AgentCreateFailedStatusPayloadSchema = z.object({
1213
- status: z.literal('agent_create_failed'),
1236
+ status: z.literal("agent_create_failed"),
1214
1237
  requestId: z.string(),
1215
1238
  error: z.string(),
1216
1239
  });
1217
1240
  export const AgentResumedStatusPayloadSchema = z
1218
1241
  .object({
1219
- status: z.literal('agent_resumed'),
1242
+ status: z.literal("agent_resumed"),
1220
1243
  agent: AgentSnapshotPayloadSchema,
1221
1244
  })
1222
1245
  .extend(AgentStatusWithTimelineSchema.shape);
1223
1246
  export const AgentRefreshedStatusPayloadSchema = z
1224
1247
  .object({
1225
- status: z.literal('agent_refreshed'),
1248
+ status: z.literal("agent_refreshed"),
1226
1249
  })
1227
1250
  .extend(AgentStatusWithTimelineSchema.shape);
1228
1251
  export const RestartRequestedStatusPayloadSchema = z.object({
1229
- status: z.literal('restart_requested'),
1252
+ status: z.literal("restart_requested"),
1230
1253
  clientId: z.string(),
1231
1254
  reason: z.string().optional(),
1232
1255
  requestId: z.string(),
1233
1256
  });
1234
1257
  export const ShutdownRequestedStatusPayloadSchema = z.object({
1235
- status: z.literal('shutdown_requested'),
1258
+ status: z.literal("shutdown_requested"),
1236
1259
  clientId: z.string(),
1237
1260
  requestId: z.string(),
1238
1261
  });
1239
- export const KnownStatusPayloadSchema = z.discriminatedUnion('status', [
1262
+ export const KnownStatusPayloadSchema = z.discriminatedUnion("status", [
1240
1263
  AgentCreatedStatusPayloadSchema,
1241
1264
  AgentCreateFailedStatusPayloadSchema,
1242
1265
  AgentResumedStatusPayloadSchema,
@@ -1245,9 +1268,9 @@ export const KnownStatusPayloadSchema = z.discriminatedUnion('status', [
1245
1268
  RestartRequestedStatusPayloadSchema,
1246
1269
  ]);
1247
1270
  export const ArtifactMessageSchema = z.object({
1248
- type: z.literal('artifact'),
1271
+ type: z.literal("artifact"),
1249
1272
  payload: z.object({
1250
- type: z.enum(['markdown', 'diff', 'image', 'code']),
1273
+ type: z.enum(["markdown", "diff", "image", "code"]),
1251
1274
  id: z.string(),
1252
1275
  title: z.string(),
1253
1276
  content: z.string(),
@@ -1293,32 +1316,35 @@ export const WorkspaceDescriptorPayloadSchema = z.object({
1293
1316
  projectId: z.string(),
1294
1317
  projectDisplayName: z.string(),
1295
1318
  projectRootPath: z.string(),
1296
- projectKind: z.enum(['git', 'non_git']),
1297
- workspaceKind: z.enum(['local_checkout', 'worktree', 'directory']),
1319
+ projectKind: z.enum(["git", "non_git"]),
1320
+ workspaceKind: z.enum(["local_checkout", "worktree", "directory"]),
1298
1321
  name: z.string(),
1299
1322
  status: WorkspaceStateBucketSchema,
1300
1323
  activityAt: z.string().nullable(),
1301
- diffStat: z.object({
1324
+ diffStat: z
1325
+ .object({
1302
1326
  additions: z.number(),
1303
1327
  deletions: z.number(),
1304
- }).nullable().optional(),
1328
+ })
1329
+ .nullable()
1330
+ .optional(),
1305
1331
  });
1306
1332
  export const AgentUpdateMessageSchema = z.object({
1307
- type: z.literal('agent_update'),
1308
- payload: z.discriminatedUnion('kind', [
1333
+ type: z.literal("agent_update"),
1334
+ payload: z.discriminatedUnion("kind", [
1309
1335
  z.object({
1310
- kind: z.literal('upsert'),
1336
+ kind: z.literal("upsert"),
1311
1337
  agent: AgentSnapshotPayloadSchema,
1312
1338
  project: ProjectPlacementPayloadSchema,
1313
1339
  }),
1314
1340
  z.object({
1315
- kind: z.literal('remove'),
1341
+ kind: z.literal("remove"),
1316
1342
  agentId: z.string(),
1317
1343
  }),
1318
1344
  ]),
1319
1345
  });
1320
1346
  export const AgentStreamMessageSchema = z.object({
1321
- type: z.literal('agent_stream'),
1347
+ type: z.literal("agent_stream"),
1322
1348
  payload: z.object({
1323
1349
  agentId: z.string(),
1324
1350
  event: AgentStreamEventPayloadSchema,
@@ -1329,7 +1355,7 @@ export const AgentStreamMessageSchema = z.object({
1329
1355
  }),
1330
1356
  });
1331
1357
  export const AgentStatusMessageSchema = z.object({
1332
- type: z.literal('agent_status'),
1358
+ type: z.literal("agent_status"),
1333
1359
  payload: z.object({
1334
1360
  agentId: z.string(),
1335
1361
  status: z.string(),
@@ -1337,13 +1363,13 @@ export const AgentStatusMessageSchema = z.object({
1337
1363
  }),
1338
1364
  });
1339
1365
  export const AgentListMessageSchema = z.object({
1340
- type: z.literal('agent_list'),
1366
+ type: z.literal("agent_list"),
1341
1367
  payload: z.object({
1342
1368
  agents: z.array(AgentSnapshotPayloadSchema),
1343
1369
  }),
1344
1370
  });
1345
1371
  export const FetchAgentsResponseMessageSchema = z.object({
1346
- type: z.literal('fetch_agents_response'),
1372
+ type: z.literal("fetch_agents_response"),
1347
1373
  payload: z.object({
1348
1374
  requestId: z.string(),
1349
1375
  subscriptionId: z.string().nullable().optional(),
@@ -1359,7 +1385,7 @@ export const FetchAgentsResponseMessageSchema = z.object({
1359
1385
  }),
1360
1386
  });
1361
1387
  export const FetchWorkspacesResponseMessageSchema = z.object({
1362
- type: z.literal('fetch_workspaces_response'),
1388
+ type: z.literal("fetch_workspaces_response"),
1363
1389
  payload: z.object({
1364
1390
  requestId: z.string(),
1365
1391
  subscriptionId: z.string().nullable().optional(),
@@ -1372,20 +1398,20 @@ export const FetchWorkspacesResponseMessageSchema = z.object({
1372
1398
  }),
1373
1399
  });
1374
1400
  export const WorkspaceUpdateMessageSchema = z.object({
1375
- type: z.literal('workspace_update'),
1376
- payload: z.discriminatedUnion('kind', [
1401
+ type: z.literal("workspace_update"),
1402
+ payload: z.discriminatedUnion("kind", [
1377
1403
  z.object({
1378
- kind: z.literal('upsert'),
1404
+ kind: z.literal("upsert"),
1379
1405
  workspace: WorkspaceDescriptorPayloadSchema,
1380
1406
  }),
1381
1407
  z.object({
1382
- kind: z.literal('remove'),
1408
+ kind: z.literal("remove"),
1383
1409
  id: z.string(),
1384
1410
  }),
1385
1411
  ]),
1386
1412
  });
1387
1413
  export const OpenProjectResponseMessageSchema = z.object({
1388
- type: z.literal('open_project_response'),
1414
+ type: z.literal("open_project_response"),
1389
1415
  payload: z.object({
1390
1416
  requestId: z.string(),
1391
1417
  workspace: WorkspaceDescriptorPayloadSchema.nullable(),
@@ -1393,7 +1419,7 @@ export const OpenProjectResponseMessageSchema = z.object({
1393
1419
  }),
1394
1420
  });
1395
1421
  export const ArchiveWorkspaceResponseMessageSchema = z.object({
1396
- type: z.literal('archive_workspace_response'),
1422
+ type: z.literal("archive_workspace_response"),
1397
1423
  payload: z.object({
1398
1424
  requestId: z.string(),
1399
1425
  workspaceId: z.string(),
@@ -1402,7 +1428,7 @@ export const ArchiveWorkspaceResponseMessageSchema = z.object({
1402
1428
  }),
1403
1429
  });
1404
1430
  export const FetchAgentResponseMessageSchema = z.object({
1405
- type: z.literal('fetch_agent_response'),
1431
+ type: z.literal("fetch_agent_response"),
1406
1432
  payload: z.object({
1407
1433
  requestId: z.string(),
1408
1434
  agent: AgentSnapshotPayloadSchema.nullable(),
@@ -1421,16 +1447,16 @@ export const AgentTimelineEntryPayloadSchema = z.object({
1421
1447
  seqStart: z.number().int().nonnegative(),
1422
1448
  seqEnd: z.number().int().nonnegative(),
1423
1449
  sourceSeqRanges: z.array(AgentTimelineSeqRangeSchema),
1424
- collapsed: z.array(z.enum(['assistant_merge', 'tool_lifecycle'])),
1450
+ collapsed: z.array(z.enum(["assistant_merge", "tool_lifecycle"])),
1425
1451
  });
1426
1452
  export const FetchAgentTimelineResponseMessageSchema = z.object({
1427
- type: z.literal('fetch_agent_timeline_response'),
1453
+ type: z.literal("fetch_agent_timeline_response"),
1428
1454
  payload: z.object({
1429
1455
  requestId: z.string(),
1430
1456
  agentId: z.string(),
1431
1457
  agent: AgentSnapshotPayloadSchema.nullable(),
1432
- direction: z.enum(['tail', 'before', 'after']),
1433
- projection: z.enum(['projected', 'canonical']),
1458
+ direction: z.enum(["tail", "before", "after"]),
1459
+ projection: z.enum(["projected", "canonical"]),
1434
1460
  epoch: z.string(),
1435
1461
  reset: z.boolean(),
1436
1462
  staleCursor: z.boolean(),
@@ -1449,7 +1475,7 @@ export const FetchAgentTimelineResponseMessageSchema = z.object({
1449
1475
  }),
1450
1476
  });
1451
1477
  export const SendAgentMessageResponseMessageSchema = z.object({
1452
- type: z.literal('send_agent_message_response'),
1478
+ type: z.literal("send_agent_message_response"),
1453
1479
  payload: z.object({
1454
1480
  requestId: z.string(),
1455
1481
  agentId: z.string(),
@@ -1458,24 +1484,24 @@ export const SendAgentMessageResponseMessageSchema = z.object({
1458
1484
  }),
1459
1485
  });
1460
1486
  export const WaitForFinishResponseMessageSchema = z.object({
1461
- type: z.literal('wait_for_finish_response'),
1487
+ type: z.literal("wait_for_finish_response"),
1462
1488
  payload: z.object({
1463
1489
  requestId: z.string(),
1464
- status: z.enum(['idle', 'error', 'permission', 'timeout']),
1490
+ status: z.enum(["idle", "error", "permission", "timeout"]),
1465
1491
  final: AgentSnapshotPayloadSchema.nullable(),
1466
1492
  error: z.string().nullable(),
1467
1493
  lastMessage: z.string().nullable(),
1468
1494
  }),
1469
1495
  });
1470
1496
  export const AgentPermissionRequestMessageSchema = z.object({
1471
- type: z.literal('agent_permission_request'),
1497
+ type: z.literal("agent_permission_request"),
1472
1498
  payload: z.object({
1473
1499
  agentId: z.string(),
1474
1500
  request: AgentPermissionRequestPayloadSchema,
1475
1501
  }),
1476
1502
  });
1477
1503
  export const AgentPermissionResolvedMessageSchema = z.object({
1478
- type: z.literal('agent_permission_resolved'),
1504
+ type: z.literal("agent_permission_resolved"),
1479
1505
  payload: z.object({
1480
1506
  agentId: z.string(),
1481
1507
  requestId: z.string(),
@@ -1483,14 +1509,14 @@ export const AgentPermissionResolvedMessageSchema = z.object({
1483
1509
  }),
1484
1510
  });
1485
1511
  export const AgentDeletedMessageSchema = z.object({
1486
- type: z.literal('agent_deleted'),
1512
+ type: z.literal("agent_deleted"),
1487
1513
  payload: z.object({
1488
1514
  agentId: z.string(),
1489
1515
  requestId: z.string(),
1490
1516
  }),
1491
1517
  });
1492
1518
  export const AgentArchivedMessageSchema = z.object({
1493
- type: z.literal('agent_archived'),
1519
+ type: z.literal("agent_archived"),
1494
1520
  payload: z.object({
1495
1521
  agentId: z.string(),
1496
1522
  archivedAt: z.string(),
@@ -1547,7 +1573,7 @@ const CheckoutStatusGitPaseoSchema = CheckoutStatusCommonSchema.extend({
1547
1573
  remoteUrl: z.string().nullable(),
1548
1574
  });
1549
1575
  export const CheckoutStatusResponseSchema = z.object({
1550
- type: z.literal('checkout_status_response'),
1576
+ type: z.literal("checkout_status_response"),
1551
1577
  payload: z.union([
1552
1578
  CheckoutStatusNotGitSchema,
1553
1579
  CheckoutStatusGitNonPaseoSchema,
@@ -1561,17 +1587,17 @@ const CheckoutDiffSubscriptionPayloadSchema = z.object({
1561
1587
  error: CheckoutErrorSchema.nullable(),
1562
1588
  });
1563
1589
  export const SubscribeCheckoutDiffResponseSchema = z.object({
1564
- type: z.literal('subscribe_checkout_diff_response'),
1590
+ type: z.literal("subscribe_checkout_diff_response"),
1565
1591
  payload: CheckoutDiffSubscriptionPayloadSchema.extend({
1566
1592
  requestId: z.string(),
1567
1593
  }),
1568
1594
  });
1569
1595
  export const CheckoutDiffUpdateSchema = z.object({
1570
- type: z.literal('checkout_diff_update'),
1596
+ type: z.literal("checkout_diff_update"),
1571
1597
  payload: CheckoutDiffSubscriptionPayloadSchema,
1572
1598
  });
1573
1599
  export const CheckoutCommitResponseSchema = z.object({
1574
- type: z.literal('checkout_commit_response'),
1600
+ type: z.literal("checkout_commit_response"),
1575
1601
  payload: z.object({
1576
1602
  cwd: z.string(),
1577
1603
  success: z.boolean(),
@@ -1580,7 +1606,7 @@ export const CheckoutCommitResponseSchema = z.object({
1580
1606
  }),
1581
1607
  });
1582
1608
  export const CheckoutMergeResponseSchema = z.object({
1583
- type: z.literal('checkout_merge_response'),
1609
+ type: z.literal("checkout_merge_response"),
1584
1610
  payload: z.object({
1585
1611
  cwd: z.string(),
1586
1612
  success: z.boolean(),
@@ -1589,7 +1615,7 @@ export const CheckoutMergeResponseSchema = z.object({
1589
1615
  }),
1590
1616
  });
1591
1617
  export const CheckoutMergeFromBaseResponseSchema = z.object({
1592
- type: z.literal('checkout_merge_from_base_response'),
1618
+ type: z.literal("checkout_merge_from_base_response"),
1593
1619
  payload: z.object({
1594
1620
  cwd: z.string(),
1595
1621
  success: z.boolean(),
@@ -1598,7 +1624,7 @@ export const CheckoutMergeFromBaseResponseSchema = z.object({
1598
1624
  }),
1599
1625
  });
1600
1626
  export const CheckoutPushResponseSchema = z.object({
1601
- type: z.literal('checkout_push_response'),
1627
+ type: z.literal("checkout_push_response"),
1602
1628
  payload: z.object({
1603
1629
  cwd: z.string(),
1604
1630
  success: z.boolean(),
@@ -1607,7 +1633,7 @@ export const CheckoutPushResponseSchema = z.object({
1607
1633
  }),
1608
1634
  });
1609
1635
  export const CheckoutPrCreateResponseSchema = z.object({
1610
- type: z.literal('checkout_pr_create_response'),
1636
+ type: z.literal("checkout_pr_create_response"),
1611
1637
  payload: z.object({
1612
1638
  cwd: z.string(),
1613
1639
  url: z.string().nullable(),
@@ -1625,7 +1651,7 @@ const CheckoutPrStatusSchema = z.object({
1625
1651
  isMerged: z.boolean(),
1626
1652
  });
1627
1653
  export const CheckoutPrStatusResponseSchema = z.object({
1628
- type: z.literal('checkout_pr_status_response'),
1654
+ type: z.literal("checkout_pr_status_response"),
1629
1655
  payload: z.object({
1630
1656
  cwd: z.string(),
1631
1657
  status: CheckoutPrStatusSchema.nullable(),
@@ -1635,7 +1661,7 @@ export const CheckoutPrStatusResponseSchema = z.object({
1635
1661
  }),
1636
1662
  });
1637
1663
  export const ValidateBranchResponseSchema = z.object({
1638
- type: z.literal('validate_branch_response'),
1664
+ type: z.literal("validate_branch_response"),
1639
1665
  payload: z.object({
1640
1666
  exists: z.boolean(),
1641
1667
  resolvedRef: z.string().nullable(),
@@ -1645,7 +1671,7 @@ export const ValidateBranchResponseSchema = z.object({
1645
1671
  }),
1646
1672
  });
1647
1673
  export const BranchSuggestionsResponseSchema = z.object({
1648
- type: z.literal('branch_suggestions_response'),
1674
+ type: z.literal("branch_suggestions_response"),
1649
1675
  payload: z.object({
1650
1676
  branches: z.array(z.string()),
1651
1677
  error: z.string().nullable(),
@@ -1653,13 +1679,13 @@ export const BranchSuggestionsResponseSchema = z.object({
1653
1679
  }),
1654
1680
  });
1655
1681
  export const DirectorySuggestionsResponseSchema = z.object({
1656
- type: z.literal('directory_suggestions_response'),
1682
+ type: z.literal("directory_suggestions_response"),
1657
1683
  payload: z.object({
1658
1684
  directories: z.array(z.string()),
1659
1685
  entries: z
1660
1686
  .array(z.object({
1661
1687
  path: z.string(),
1662
- kind: z.enum(['file', 'directory']),
1688
+ kind: z.enum(["file", "directory"]),
1663
1689
  }))
1664
1690
  .optional()
1665
1691
  .default([]),
@@ -1674,7 +1700,7 @@ const PaseoWorktreeSchema = z.object({
1674
1700
  head: z.string().nullable().optional(),
1675
1701
  });
1676
1702
  export const PaseoWorktreeListResponseSchema = z.object({
1677
- type: z.literal('paseo_worktree_list_response'),
1703
+ type: z.literal("paseo_worktree_list_response"),
1678
1704
  payload: z.object({
1679
1705
  worktrees: z.array(PaseoWorktreeSchema),
1680
1706
  error: CheckoutErrorSchema.nullable(),
@@ -1682,7 +1708,7 @@ export const PaseoWorktreeListResponseSchema = z.object({
1682
1708
  }),
1683
1709
  });
1684
1710
  export const PaseoWorktreeArchiveResponseSchema = z.object({
1685
- type: z.literal('paseo_worktree_archive_response'),
1711
+ type: z.literal("paseo_worktree_archive_response"),
1686
1712
  payload: z.object({
1687
1713
  success: z.boolean(),
1688
1714
  removedAgents: z.array(z.string()).optional(),
@@ -1690,12 +1716,21 @@ export const PaseoWorktreeArchiveResponseSchema = z.object({
1690
1716
  requestId: z.string(),
1691
1717
  }),
1692
1718
  });
1719
+ export const CreatePaseoWorktreeResponseSchema = z.object({
1720
+ type: z.literal("create_paseo_worktree_response"),
1721
+ payload: z.object({
1722
+ workspace: WorkspaceDescriptorPayloadSchema.nullable(),
1723
+ error: z.string().nullable(),
1724
+ setupTerminalId: z.string().nullable(),
1725
+ requestId: z.string(),
1726
+ }),
1727
+ });
1693
1728
  export const FileExplorerResponseSchema = z.object({
1694
- type: z.literal('file_explorer_response'),
1729
+ type: z.literal("file_explorer_response"),
1695
1730
  payload: z.object({
1696
1731
  cwd: z.string(),
1697
1732
  path: z.string(),
1698
- mode: z.enum(['list', 'file']),
1733
+ mode: z.enum(["list", "file"]),
1699
1734
  directory: FileExplorerDirectorySchema.nullable(),
1700
1735
  file: FileExplorerFileSchema.nullable(),
1701
1736
  error: z.string().nullable(),
@@ -1707,7 +1742,7 @@ const ProjectIconSchema = z.object({
1707
1742
  mimeType: z.string(),
1708
1743
  });
1709
1744
  export const ProjectIconResponseSchema = z.object({
1710
- type: z.literal('project_icon_response'),
1745
+ type: z.literal("project_icon_response"),
1711
1746
  payload: z.object({
1712
1747
  cwd: z.string(),
1713
1748
  icon: ProjectIconSchema.nullable(),
@@ -1716,7 +1751,7 @@ export const ProjectIconResponseSchema = z.object({
1716
1751
  }),
1717
1752
  });
1718
1753
  export const FileDownloadTokenResponseSchema = z.object({
1719
- type: z.literal('file_download_token_response'),
1754
+ type: z.literal("file_download_token_response"),
1720
1755
  payload: z.object({
1721
1756
  cwd: z.string(),
1722
1757
  path: z.string(),
@@ -1729,7 +1764,7 @@ export const FileDownloadTokenResponseSchema = z.object({
1729
1764
  }),
1730
1765
  });
1731
1766
  export const ListProviderModelsResponseMessageSchema = z.object({
1732
- type: z.literal('list_provider_models_response'),
1767
+ type: z.literal("list_provider_models_response"),
1733
1768
  payload: z.object({
1734
1769
  provider: AgentProviderSchema,
1735
1770
  models: z.array(AgentModelDefinitionSchema).optional(),
@@ -1744,7 +1779,7 @@ const ProviderAvailabilitySchema = z.object({
1744
1779
  error: z.string().nullable().optional(),
1745
1780
  });
1746
1781
  export const ListAvailableProvidersResponseSchema = z.object({
1747
- type: z.literal('list_available_providers_response'),
1782
+ type: z.literal("list_available_providers_response"),
1748
1783
  payload: z.object({
1749
1784
  providers: z.array(ProviderAvailabilitySchema),
1750
1785
  error: z.string().nullable().optional(),
@@ -1753,7 +1788,7 @@ export const ListAvailableProvidersResponseSchema = z.object({
1753
1788
  }),
1754
1789
  });
1755
1790
  export const SpeechModelsListResponseSchema = z.object({
1756
- type: z.literal('speech_models_list_response'),
1791
+ type: z.literal("speech_models_list_response"),
1757
1792
  payload: z.object({
1758
1793
  modelsDir: z.string(),
1759
1794
  models: z.array(z.object({
@@ -1768,7 +1803,7 @@ export const SpeechModelsListResponseSchema = z.object({
1768
1803
  }),
1769
1804
  });
1770
1805
  export const SpeechModelsDownloadResponseSchema = z.object({
1771
- type: z.literal('speech_models_download_response'),
1806
+ type: z.literal("speech_models_download_response"),
1772
1807
  payload: z.object({
1773
1808
  modelsDir: z.string(),
1774
1809
  downloadedModelIds: z.array(z.string()),
@@ -1782,7 +1817,7 @@ const AgentSlashCommandSchema = z.object({
1782
1817
  argumentHint: z.string(),
1783
1818
  });
1784
1819
  export const ListCommandsResponseSchema = z.object({
1785
- type: z.literal('list_commands_response'),
1820
+ type: z.literal("list_commands_response"),
1786
1821
  payload: z.object({
1787
1822
  agentId: z.string(),
1788
1823
  commands: z.array(AgentSlashCommandSchema),
@@ -1798,7 +1833,8 @@ const TerminalInfoSchema = z.object({
1798
1833
  name: z.string(),
1799
1834
  cwd: z.string(),
1800
1835
  });
1801
- const TerminalCellSchema = z.object({
1836
+ export const TerminalCellSchema = z
1837
+ .object({
1802
1838
  char: z.string(),
1803
1839
  fg: z.number().optional(),
1804
1840
  bg: z.number().optional(),
@@ -1807,16 +1843,32 @@ const TerminalCellSchema = z.object({
1807
1843
  bold: z.boolean().optional(),
1808
1844
  italic: z.boolean().optional(),
1809
1845
  underline: z.boolean().optional(),
1810
- });
1811
- const TerminalStateSchema = z.object({
1846
+ dim: z.boolean().optional(),
1847
+ inverse: z.boolean().optional(),
1848
+ strikethrough: z.boolean().optional(),
1849
+ })
1850
+ .strict();
1851
+ export const TerminalCursorStyleSchema = z.enum(["block", "underline", "bar"]);
1852
+ export const TerminalCursorSchema = z
1853
+ .object({
1854
+ row: z.number(),
1855
+ col: z.number(),
1856
+ hidden: z.boolean().optional(),
1857
+ style: TerminalCursorStyleSchema.optional(),
1858
+ blink: z.boolean().optional(),
1859
+ })
1860
+ .strict();
1861
+ export const TerminalStateSchema = z
1862
+ .object({
1812
1863
  rows: z.number(),
1813
1864
  cols: z.number(),
1814
1865
  grid: z.array(z.array(TerminalCellSchema)),
1815
1866
  scrollback: z.array(z.array(TerminalCellSchema)),
1816
- cursor: z.object({ row: z.number(), col: z.number() }),
1817
- });
1867
+ cursor: TerminalCursorSchema,
1868
+ })
1869
+ .strict();
1818
1870
  export const ListTerminalsResponseSchema = z.object({
1819
- type: z.literal('list_terminals_response'),
1871
+ type: z.literal("list_terminals_response"),
1820
1872
  payload: z.object({
1821
1873
  cwd: z.string(),
1822
1874
  terminals: z.array(TerminalInfoSchema.omit({ cwd: true })),
@@ -1824,14 +1876,14 @@ export const ListTerminalsResponseSchema = z.object({
1824
1876
  }),
1825
1877
  });
1826
1878
  export const TerminalsChangedSchema = z.object({
1827
- type: z.literal('terminals_changed'),
1879
+ type: z.literal("terminals_changed"),
1828
1880
  payload: z.object({
1829
1881
  cwd: z.string(),
1830
1882
  terminals: z.array(TerminalInfoSchema.omit({ cwd: true })),
1831
1883
  }),
1832
1884
  });
1833
1885
  export const CreateTerminalResponseSchema = z.object({
1834
- type: z.literal('create_terminal_response'),
1886
+ type: z.literal("create_terminal_response"),
1835
1887
  payload: z.object({
1836
1888
  terminal: TerminalInfoSchema.nullable(),
1837
1889
  error: z.string().nullable(),
@@ -1839,58 +1891,36 @@ export const CreateTerminalResponseSchema = z.object({
1839
1891
  }),
1840
1892
  });
1841
1893
  export const SubscribeTerminalResponseSchema = z.object({
1842
- type: z.literal('subscribe_terminal_response'),
1843
- payload: z.object({
1844
- terminalId: z.string(),
1845
- state: TerminalStateSchema.nullable(),
1846
- error: z.string().nullable(),
1847
- requestId: z.string(),
1848
- }),
1849
- });
1850
- export const TerminalOutputSchema = z.object({
1851
- type: z.literal('terminal_output'),
1852
- payload: z.object({
1853
- terminalId: z.string(),
1854
- state: TerminalStateSchema,
1855
- }),
1894
+ type: z.literal("subscribe_terminal_response"),
1895
+ payload: z.union([
1896
+ z.object({
1897
+ terminalId: z.string(),
1898
+ slot: z.number().int().min(0).max(255),
1899
+ error: z.null(),
1900
+ requestId: z.string(),
1901
+ }),
1902
+ z.object({
1903
+ terminalId: z.string(),
1904
+ error: z.string(),
1905
+ requestId: z.string(),
1906
+ }),
1907
+ ]),
1856
1908
  });
1857
1909
  export const KillTerminalResponseSchema = z.object({
1858
- type: z.literal('kill_terminal_response'),
1859
- payload: z.object({
1860
- terminalId: z.string(),
1861
- success: z.boolean(),
1862
- requestId: z.string(),
1863
- }),
1864
- });
1865
- export const AttachTerminalStreamResponseSchema = z.object({
1866
- type: z.literal('attach_terminal_stream_response'),
1910
+ type: z.literal("kill_terminal_response"),
1867
1911
  payload: z.object({
1868
1912
  terminalId: z.string(),
1869
- streamId: z.number().int().nonnegative().nullable(),
1870
- replayedFrom: z.number().int().nonnegative(),
1871
- currentOffset: z.number().int().nonnegative(),
1872
- earliestAvailableOffset: z.number().int().nonnegative(),
1873
- reset: z.boolean(),
1874
- error: z.string().nullable(),
1875
- requestId: z.string(),
1876
- }),
1877
- });
1878
- export const DetachTerminalStreamResponseSchema = z.object({
1879
- type: z.literal('detach_terminal_stream_response'),
1880
- payload: z.object({
1881
- streamId: z.number().int().nonnegative(),
1882
1913
  success: z.boolean(),
1883
1914
  requestId: z.string(),
1884
1915
  }),
1885
1916
  });
1886
1917
  export const TerminalStreamExitSchema = z.object({
1887
- type: z.literal('terminal_stream_exit'),
1918
+ type: z.literal("terminal_stream_exit"),
1888
1919
  payload: z.object({
1889
- streamId: z.number().int().nonnegative(),
1890
1920
  terminalId: z.string(),
1891
1921
  }),
1892
1922
  });
1893
- export const SessionOutboundMessageSchema = z.discriminatedUnion('type', [
1923
+ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
1894
1924
  ActivityLogMessageSchema,
1895
1925
  AssistantChunkMessageSchema,
1896
1926
  AudioOutputMessageSchema,
@@ -1940,6 +1970,7 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion('type', [
1940
1970
  DirectorySuggestionsResponseSchema,
1941
1971
  PaseoWorktreeListResponseSchema,
1942
1972
  PaseoWorktreeArchiveResponseSchema,
1973
+ CreatePaseoWorktreeResponseSchema,
1943
1974
  FileExplorerResponseSchema,
1944
1975
  ProjectIconResponseSchema,
1945
1976
  FileDownloadTokenResponseSchema,
@@ -1952,10 +1983,7 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion('type', [
1952
1983
  TerminalsChangedSchema,
1953
1984
  CreateTerminalResponseSchema,
1954
1985
  SubscribeTerminalResponseSchema,
1955
- TerminalOutputSchema,
1956
1986
  KillTerminalResponseSchema,
1957
- AttachTerminalStreamResponseSchema,
1958
- DetachTerminalStreamResponseSchema,
1959
1987
  TerminalStreamExitSchema,
1960
1988
  ]);
1961
1989
  // ============================================================================
@@ -1963,15 +1991,15 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion('type', [
1963
1991
  // ============================================================================
1964
1992
  // WebSocket-only messages (not session messages)
1965
1993
  export const WSPingMessageSchema = z.object({
1966
- type: z.literal('ping'),
1994
+ type: z.literal("ping"),
1967
1995
  });
1968
1996
  export const WSPongMessageSchema = z.object({
1969
- type: z.literal('pong'),
1997
+ type: z.literal("pong"),
1970
1998
  });
1971
1999
  export const WSHelloMessageSchema = z.object({
1972
- type: z.literal('hello'),
2000
+ type: z.literal("hello"),
1973
2001
  clientId: z.string().min(1),
1974
- clientType: z.enum(['mobile', 'browser', 'cli', 'mcp']),
2002
+ clientType: z.enum(["mobile", "browser", "cli", "mcp"]),
1975
2003
  protocolVersion: z.number().int(),
1976
2004
  capabilities: z
1977
2005
  .object({
@@ -1982,26 +2010,26 @@ export const WSHelloMessageSchema = z.object({
1982
2010
  .optional(),
1983
2011
  });
1984
2012
  export const WSRecordingStateMessageSchema = z.object({
1985
- type: z.literal('recording_state'),
2013
+ type: z.literal("recording_state"),
1986
2014
  isRecording: z.boolean(),
1987
2015
  });
1988
2016
  // Wrapped session message
1989
2017
  export const WSSessionInboundSchema = z.object({
1990
- type: z.literal('session'),
2018
+ type: z.literal("session"),
1991
2019
  message: SessionInboundMessageSchema,
1992
2020
  });
1993
2021
  export const WSSessionOutboundSchema = z.object({
1994
- type: z.literal('session'),
2022
+ type: z.literal("session"),
1995
2023
  message: SessionOutboundMessageSchema,
1996
2024
  });
1997
2025
  // Complete WebSocket message schemas
1998
- export const WSInboundMessageSchema = z.discriminatedUnion('type', [
2026
+ export const WSInboundMessageSchema = z.discriminatedUnion("type", [
1999
2027
  WSPingMessageSchema,
2000
2028
  WSHelloMessageSchema,
2001
2029
  WSRecordingStateMessageSchema,
2002
2030
  WSSessionInboundSchema,
2003
2031
  ]);
2004
- export const WSOutboundMessageSchema = z.discriminatedUnion('type', [
2032
+ export const WSOutboundMessageSchema = z.discriminatedUnion("type", [
2005
2033
  WSPongMessageSchema,
2006
2034
  WSSessionOutboundSchema,
2007
2035
  ]);
@@ -2013,7 +2041,7 @@ export const WSOutboundMessageSchema = z.discriminatedUnion('type', [
2013
2041
  * Returns null if message should be handled at WS level only
2014
2042
  */
2015
2043
  export function extractSessionMessage(wsMsg) {
2016
- if (wsMsg.type === 'session') {
2044
+ if (wsMsg.type === "session") {
2017
2045
  return wsMsg.message;
2018
2046
  }
2019
2047
  // Ping and recording_state are WS-level only
@@ -2024,7 +2052,7 @@ export function extractSessionMessage(wsMsg) {
2024
2052
  */
2025
2053
  export function wrapSessionMessage(sessionMsg) {
2026
2054
  return {
2027
- type: 'session',
2055
+ type: "session",
2028
2056
  message: sessionMsg,
2029
2057
  };
2030
2058
  }