@getpaseo/server 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/.env.example +20 -0
  2. package/README.md +107 -0
  3. package/agent-prompt.md +339 -0
  4. package/dist/scripts/daemon-runner.js +32 -0
  5. package/dist/scripts/daemon-runner.js.map +1 -0
  6. package/dist/scripts/dev-runner.js +19 -0
  7. package/dist/scripts/dev-runner.js.map +1 -0
  8. package/dist/scripts/mcp-stdio-socket-bridge-cli.mjs +62 -0
  9. package/dist/scripts/supervisor.js +95 -0
  10. package/dist/scripts/supervisor.js.map +1 -0
  11. package/dist/server/client/daemon-client.d.ts +383 -0
  12. package/dist/server/client/daemon-client.d.ts.map +1 -0
  13. package/dist/server/client/daemon-client.js +2443 -0
  14. package/dist/server/client/daemon-client.js.map +1 -0
  15. package/dist/server/server/agent/activity-curator.d.ts +8 -0
  16. package/dist/server/server/agent/activity-curator.d.ts.map +1 -0
  17. package/dist/server/server/agent/activity-curator.js +228 -0
  18. package/dist/server/server/agent/activity-curator.js.map +1 -0
  19. package/dist/server/server/agent/agent-management-mcp.d.ts +34 -0
  20. package/dist/server/server/agent/agent-management-mcp.d.ts.map +1 -0
  21. package/dist/server/server/agent/agent-management-mcp.js +619 -0
  22. package/dist/server/server/agent/agent-management-mcp.js.map +1 -0
  23. package/dist/server/server/agent/agent-manager.d.ts +182 -0
  24. package/dist/server/server/agent/agent-manager.d.ts.map +1 -0
  25. package/dist/server/server/agent/agent-manager.js +1066 -0
  26. package/dist/server/server/agent/agent-manager.js.map +1 -0
  27. package/dist/server/server/agent/agent-metadata-generator.d.ts +29 -0
  28. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -0
  29. package/dist/server/server/agent/agent-metadata-generator.js +157 -0
  30. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -0
  31. package/dist/server/server/agent/agent-projections.d.ts +12 -0
  32. package/dist/server/server/agent/agent-projections.d.ts.map +1 -0
  33. package/dist/server/server/agent/agent-projections.js +238 -0
  34. package/dist/server/server/agent/agent-projections.js.map +1 -0
  35. package/dist/server/server/agent/agent-response-loop.d.ts +32 -0
  36. package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -0
  37. package/dist/server/server/agent/agent-response-loop.js +224 -0
  38. package/dist/server/server/agent/agent-response-loop.js.map +1 -0
  39. package/dist/server/server/agent/agent-sdk-types.d.ts +360 -0
  40. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -0
  41. package/dist/server/server/agent/agent-sdk-types.js +2 -0
  42. package/dist/server/server/agent/agent-sdk-types.js.map +1 -0
  43. package/dist/server/server/agent/agent-storage.d.ts +187 -0
  44. package/dist/server/server/agent/agent-storage.d.ts.map +1 -0
  45. package/dist/server/server/agent/agent-storage.js +328 -0
  46. package/dist/server/server/agent/agent-storage.js.map +1 -0
  47. package/dist/server/server/agent/audio-utils.d.ts +3 -0
  48. package/dist/server/server/agent/audio-utils.d.ts.map +1 -0
  49. package/dist/server/server/agent/audio-utils.js +19 -0
  50. package/dist/server/server/agent/audio-utils.js.map +1 -0
  51. package/dist/server/server/agent/dictation-debug.d.ts +13 -0
  52. package/dist/server/server/agent/dictation-debug.d.ts.map +1 -0
  53. package/dist/server/server/agent/dictation-debug.js +50 -0
  54. package/dist/server/server/agent/dictation-debug.js.map +1 -0
  55. package/dist/server/server/agent/llm-openai.d.ts +7 -0
  56. package/dist/server/server/agent/llm-openai.d.ts.map +1 -0
  57. package/dist/server/server/agent/llm-openai.js +8 -0
  58. package/dist/server/server/agent/llm-openai.js.map +1 -0
  59. package/dist/server/server/agent/mcp-server.d.ts +26 -0
  60. package/dist/server/server/agent/mcp-server.d.ts.map +1 -0
  61. package/dist/server/server/agent/mcp-server.js +762 -0
  62. package/dist/server/server/agent/mcp-server.js.map +1 -0
  63. package/dist/server/server/agent/model-resolver.d.ts +11 -0
  64. package/dist/server/server/agent/model-resolver.d.ts.map +1 -0
  65. package/dist/server/server/agent/model-resolver.js +21 -0
  66. package/dist/server/server/agent/model-resolver.js.map +1 -0
  67. package/dist/server/server/agent/orchestrator-instructions.d.ts +7 -0
  68. package/dist/server/server/agent/orchestrator-instructions.d.ts.map +1 -0
  69. package/dist/server/server/agent/orchestrator-instructions.js +51 -0
  70. package/dist/server/server/agent/orchestrator-instructions.js.map +1 -0
  71. package/dist/server/server/agent/orchestrator.d.ts +12 -0
  72. package/dist/server/server/agent/orchestrator.d.ts.map +1 -0
  73. package/dist/server/server/agent/orchestrator.js +12 -0
  74. package/dist/server/server/agent/orchestrator.js.map +1 -0
  75. package/dist/server/server/agent/pcm16-resampler.d.ts +14 -0
  76. package/dist/server/server/agent/pcm16-resampler.d.ts.map +1 -0
  77. package/dist/server/server/agent/pcm16-resampler.js +63 -0
  78. package/dist/server/server/agent/pcm16-resampler.js.map +1 -0
  79. package/dist/server/server/agent/provider-launch-config.d.ts +139 -0
  80. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -0
  81. package/dist/server/server/agent/provider-launch-config.js +83 -0
  82. package/dist/server/server/agent/provider-launch-config.js.map +1 -0
  83. package/dist/server/server/agent/provider-manifest.d.ts +20 -0
  84. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -0
  85. package/dist/server/server/agent/provider-manifest.js +97 -0
  86. package/dist/server/server/agent/provider-manifest.js.map +1 -0
  87. package/dist/server/server/agent/provider-registry.d.ts +18 -0
  88. package/dist/server/server/agent/provider-registry.d.ts.map +1 -0
  89. package/dist/server/server/agent/provider-registry.js +45 -0
  90. package/dist/server/server/agent/provider-registry.js.map +1 -0
  91. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts +3 -0
  92. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts.map +1 -0
  93. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js +42 -0
  94. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js.map +1 -0
  95. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts +16 -0
  96. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts.map +1 -0
  97. package/dist/server/server/agent/providers/claude/tool-call-mapper.js +73 -0
  98. package/dist/server/server/agent/providers/claude/tool-call-mapper.js.map +1 -0
  99. package/dist/server/server/agent/providers/claude-agent.d.ts +35 -0
  100. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -0
  101. package/dist/server/server/agent/providers/claude-agent.js +2056 -0
  102. package/dist/server/server/agent/providers/claude-agent.js.map +1 -0
  103. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts +13 -0
  104. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts.map +1 -0
  105. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js +67 -0
  106. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js.map +1 -0
  107. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts +15 -0
  108. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -0
  109. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +640 -0
  110. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -0
  111. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +34 -0
  112. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -0
  113. package/dist/server/server/agent/providers/codex-app-server-agent.js +2476 -0
  114. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -0
  115. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts +9 -0
  116. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts.map +1 -0
  117. package/dist/server/server/agent/providers/codex-rollout-timeline.js +486 -0
  118. package/dist/server/server/agent/providers/codex-rollout-timeline.js.map +1 -0
  119. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +3 -0
  120. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts.map +1 -0
  121. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +33 -0
  122. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js.map +1 -0
  123. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts +13 -0
  124. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts.map +1 -0
  125. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +75 -0
  126. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js.map +1 -0
  127. package/dist/server/server/agent/providers/opencode-agent.d.ts +37 -0
  128. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -0
  129. package/dist/server/server/agent/providers/opencode-agent.js +822 -0
  130. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -0
  131. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +1363 -0
  132. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -0
  133. package/dist/server/server/agent/providers/tool-call-detail-primitives.js +534 -0
  134. package/dist/server/server/agent/providers/tool-call-detail-primitives.js.map +1 -0
  135. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts +18 -0
  136. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts.map +1 -0
  137. package/dist/server/server/agent/providers/tool-call-mapper-utils.js +119 -0
  138. package/dist/server/server/agent/providers/tool-call-mapper-utils.js.map +1 -0
  139. package/dist/server/server/agent/recordings-debug.d.ts +3 -0
  140. package/dist/server/server/agent/recordings-debug.d.ts.map +1 -0
  141. package/dist/server/server/agent/recordings-debug.js +19 -0
  142. package/dist/server/server/agent/recordings-debug.js.map +1 -0
  143. package/dist/server/server/agent/stt-debug.d.ts +10 -0
  144. package/dist/server/server/agent/stt-debug.d.ts.map +1 -0
  145. package/dist/server/server/agent/stt-debug.js +33 -0
  146. package/dist/server/server/agent/stt-debug.js.map +1 -0
  147. package/dist/server/server/agent/stt-manager.d.ts +32 -0
  148. package/dist/server/server/agent/stt-manager.d.ts.map +1 -0
  149. package/dist/server/server/agent/stt-manager.js +231 -0
  150. package/dist/server/server/agent/stt-manager.js.map +1 -0
  151. package/dist/server/server/agent/system-prompt.d.ts +3 -0
  152. package/dist/server/server/agent/system-prompt.d.ts.map +1 -0
  153. package/dist/server/server/agent/system-prompt.js +19 -0
  154. package/dist/server/server/agent/system-prompt.js.map +1 -0
  155. package/dist/server/server/agent/tool-name-normalization.d.ts +7 -0
  156. package/dist/server/server/agent/tool-name-normalization.d.ts.map +1 -0
  157. package/dist/server/server/agent/tool-name-normalization.js +45 -0
  158. package/dist/server/server/agent/tool-name-normalization.js.map +1 -0
  159. package/dist/server/server/agent/tts-debug.d.ts +8 -0
  160. package/dist/server/server/agent/tts-debug.d.ts.map +1 -0
  161. package/dist/server/server/agent/tts-debug.js +24 -0
  162. package/dist/server/server/agent/tts-debug.js.map +1 -0
  163. package/dist/server/server/agent/tts-manager.d.ts +33 -0
  164. package/dist/server/server/agent/tts-manager.d.ts.map +1 -0
  165. package/dist/server/server/agent/tts-manager.js +261 -0
  166. package/dist/server/server/agent/tts-manager.js.map +1 -0
  167. package/dist/server/server/agent/wait-for-agent-tracker.d.ts +15 -0
  168. package/dist/server/server/agent/wait-for-agent-tracker.d.ts.map +1 -0
  169. package/dist/server/server/agent/wait-for-agent-tracker.js +53 -0
  170. package/dist/server/server/agent/wait-for-agent-tracker.js.map +1 -0
  171. package/dist/server/server/allowed-hosts.d.ts +13 -0
  172. package/dist/server/server/allowed-hosts.d.ts.map +1 -0
  173. package/dist/server/server/allowed-hosts.js +94 -0
  174. package/dist/server/server/allowed-hosts.js.map +1 -0
  175. package/dist/server/server/bootstrap.d.ts +49 -0
  176. package/dist/server/server/bootstrap.d.ts.map +1 -0
  177. package/dist/server/server/bootstrap.js +483 -0
  178. package/dist/server/server/bootstrap.js.map +1 -0
  179. package/dist/server/server/config.d.ts +13 -0
  180. package/dist/server/server/config.d.ts.map +1 -0
  181. package/dist/server/server/config.js +84 -0
  182. package/dist/server/server/config.js.map +1 -0
  183. package/dist/server/server/connection-offer.d.ts +19 -0
  184. package/dist/server/server/connection-offer.d.ts.map +1 -0
  185. package/dist/server/server/connection-offer.js +60 -0
  186. package/dist/server/server/connection-offer.js.map +1 -0
  187. package/dist/server/server/daemon-keypair.d.ts +8 -0
  188. package/dist/server/server/daemon-keypair.d.ts.map +1 -0
  189. package/dist/server/server/daemon-keypair.js +40 -0
  190. package/dist/server/server/daemon-keypair.js.map +1 -0
  191. package/dist/server/server/dictation/dictation-stream-manager.d.ts +76 -0
  192. package/dist/server/server/dictation/dictation-stream-manager.d.ts.map +1 -0
  193. package/dist/server/server/dictation/dictation-stream-manager.js +481 -0
  194. package/dist/server/server/dictation/dictation-stream-manager.js.map +1 -0
  195. package/dist/server/server/exports.d.ts +11 -0
  196. package/dist/server/server/exports.d.ts.map +1 -0
  197. package/dist/server/server/exports.js +11 -0
  198. package/dist/server/server/exports.js.map +1 -0
  199. package/dist/server/server/file-download/token-store.d.ts +25 -0
  200. package/dist/server/server/file-download/token-store.d.ts.map +1 -0
  201. package/dist/server/server/file-download/token-store.js +40 -0
  202. package/dist/server/server/file-download/token-store.js.map +1 -0
  203. package/dist/server/server/file-explorer/service.d.ts +41 -0
  204. package/dist/server/server/file-explorer/service.d.ts.map +1 -0
  205. package/dist/server/server/file-explorer/service.js +163 -0
  206. package/dist/server/server/file-explorer/service.js.map +1 -0
  207. package/dist/server/server/index.d.ts +2 -0
  208. package/dist/server/server/index.d.ts.map +1 -0
  209. package/dist/server/server/index.js +90 -0
  210. package/dist/server/server/index.js.map +1 -0
  211. package/dist/server/server/json-utils.d.ts +11 -0
  212. package/dist/server/server/json-utils.d.ts.map +1 -0
  213. package/dist/server/server/json-utils.js +45 -0
  214. package/dist/server/server/json-utils.js.map +1 -0
  215. package/dist/server/server/logger.d.ts +12 -0
  216. package/dist/server/server/logger.d.ts.map +1 -0
  217. package/dist/server/server/logger.js +29 -0
  218. package/dist/server/server/logger.js.map +1 -0
  219. package/dist/server/server/messages.d.ts +9 -0
  220. package/dist/server/server/messages.d.ts.map +1 -0
  221. package/dist/server/server/messages.js +29 -0
  222. package/dist/server/server/messages.js.map +1 -0
  223. package/dist/server/server/pairing-offer.d.ts +16 -0
  224. package/dist/server/server/pairing-offer.d.ts.map +1 -0
  225. package/dist/server/server/pairing-offer.js +45 -0
  226. package/dist/server/server/pairing-offer.js.map +1 -0
  227. package/dist/server/server/pairing-qr.d.ts +7 -0
  228. package/dist/server/server/pairing-qr.d.ts.map +1 -0
  229. package/dist/server/server/pairing-qr.js +45 -0
  230. package/dist/server/server/pairing-qr.js.map +1 -0
  231. package/dist/server/server/paseo-home.d.ts +2 -0
  232. package/dist/server/server/paseo-home.d.ts.map +1 -0
  233. package/dist/server/server/paseo-home.js +19 -0
  234. package/dist/server/server/paseo-home.js.map +1 -0
  235. package/dist/server/server/path-utils.d.ts +3 -0
  236. package/dist/server/server/path-utils.d.ts.map +1 -0
  237. package/dist/server/server/path-utils.js +20 -0
  238. package/dist/server/server/path-utils.js.map +1 -0
  239. package/dist/server/server/persisted-config.d.ts +500 -0
  240. package/dist/server/server/persisted-config.d.ts.map +1 -0
  241. package/dist/server/server/persisted-config.js +212 -0
  242. package/dist/server/server/persisted-config.js.map +1 -0
  243. package/dist/server/server/persistence-hooks.d.ts +24 -0
  244. package/dist/server/server/persistence-hooks.d.ts.map +1 -0
  245. package/dist/server/server/persistence-hooks.js +60 -0
  246. package/dist/server/server/persistence-hooks.js.map +1 -0
  247. package/dist/server/server/pid-lock.d.ts +19 -0
  248. package/dist/server/server/pid-lock.d.ts.map +1 -0
  249. package/dist/server/server/pid-lock.js +115 -0
  250. package/dist/server/server/pid-lock.js.map +1 -0
  251. package/dist/server/server/push/push-service.d.ts +21 -0
  252. package/dist/server/server/push/push-service.d.ts.map +1 -0
  253. package/dist/server/server/push/push-service.js +68 -0
  254. package/dist/server/server/push/push-service.js.map +1 -0
  255. package/dist/server/server/push/token-store.d.ts +18 -0
  256. package/dist/server/server/push/token-store.d.ts.map +1 -0
  257. package/dist/server/server/push/token-store.js +70 -0
  258. package/dist/server/server/push/token-store.js.map +1 -0
  259. package/dist/server/server/relay-transport.d.ts +22 -0
  260. package/dist/server/server/relay-transport.d.ts.map +1 -0
  261. package/dist/server/server/relay-transport.js +374 -0
  262. package/dist/server/server/relay-transport.js.map +1 -0
  263. package/dist/server/server/server-id.d.ts +17 -0
  264. package/dist/server/server/server-id.d.ts.map +1 -0
  265. package/dist/server/server/server-id.js +63 -0
  266. package/dist/server/server/server-id.js.map +1 -0
  267. package/dist/server/server/session.d.ts +360 -0
  268. package/dist/server/server/session.d.ts.map +1 -0
  269. package/dist/server/server/session.js +4615 -0
  270. package/dist/server/server/session.js.map +1 -0
  271. package/dist/server/server/speech/audio.d.ts +10 -0
  272. package/dist/server/server/speech/audio.d.ts.map +1 -0
  273. package/dist/server/server/speech/audio.js +101 -0
  274. package/dist/server/server/speech/audio.js.map +1 -0
  275. package/dist/server/server/speech/providers/local/config.d.ts +26 -0
  276. package/dist/server/server/speech/providers/local/config.d.ts.map +1 -0
  277. package/dist/server/server/speech/providers/local/config.js +93 -0
  278. package/dist/server/server/speech/providers/local/config.js.map +1 -0
  279. package/dist/server/server/speech/providers/local/models.d.ts +12 -0
  280. package/dist/server/server/speech/providers/local/models.d.ts.map +1 -0
  281. package/dist/server/server/speech/providers/local/models.js +18 -0
  282. package/dist/server/server/speech/providers/local/models.js.map +1 -0
  283. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts +24 -0
  284. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts.map +1 -0
  285. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js +422 -0
  286. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js.map +1 -0
  287. package/dist/server/server/speech/providers/local/runtime.d.ts +30 -0
  288. package/dist/server/server/speech/providers/local/runtime.d.ts.map +1 -0
  289. package/dist/server/server/speech/providers/local/runtime.js +254 -0
  290. package/dist/server/server/speech/providers/local/runtime.js.map +1 -0
  291. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts +117 -0
  292. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts.map +1 -0
  293. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js +166 -0
  294. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js.map +1 -0
  295. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts +17 -0
  296. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts.map +1 -0
  297. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +151 -0
  298. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js.map +1 -0
  299. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts +28 -0
  300. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts.map +1 -0
  301. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +68 -0
  302. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js.map +1 -0
  303. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.d.ts +37 -0
  304. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.d.ts.map +1 -0
  305. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js +79 -0
  306. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js.map +1 -0
  307. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.d.ts +7 -0
  308. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.d.ts.map +1 -0
  309. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.js +11 -0
  310. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.js.map +1 -0
  311. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts +7 -0
  312. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts.map +1 -0
  313. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js +44 -0
  314. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js.map +1 -0
  315. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts +28 -0
  316. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts.map +1 -0
  317. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +131 -0
  318. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js.map +1 -0
  319. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts +21 -0
  320. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts.map +1 -0
  321. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +132 -0
  322. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js.map +1 -0
  323. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.d.ts +23 -0
  324. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.d.ts.map +1 -0
  325. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js +112 -0
  326. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js.map +1 -0
  327. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.d.ts +23 -0
  328. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.d.ts.map +1 -0
  329. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js +140 -0
  330. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js.map +1 -0
  331. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts +21 -0
  332. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts.map +1 -0
  333. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js +95 -0
  334. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js.map +1 -0
  335. package/dist/server/server/speech/providers/openai/config.d.ts +22 -0
  336. package/dist/server/server/speech/providers/openai/config.d.ts.map +1 -0
  337. package/dist/server/server/speech/providers/openai/config.js +94 -0
  338. package/dist/server/server/speech/providers/openai/config.js.map +1 -0
  339. package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts +42 -0
  340. package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts.map +1 -0
  341. package/dist/server/server/speech/providers/openai/realtime-transcription-session.js +165 -0
  342. package/dist/server/server/speech/providers/openai/realtime-transcription-session.js.map +1 -0
  343. package/dist/server/server/speech/providers/openai/runtime.d.ts +27 -0
  344. package/dist/server/server/speech/providers/openai/runtime.d.ts.map +1 -0
  345. package/dist/server/server/speech/providers/openai/runtime.js +103 -0
  346. package/dist/server/server/speech/providers/openai/runtime.js.map +1 -0
  347. package/dist/server/server/speech/providers/openai/stt.d.ts +22 -0
  348. package/dist/server/server/speech/providers/openai/stt.d.ts.map +1 -0
  349. package/dist/server/server/speech/providers/openai/stt.js +208 -0
  350. package/dist/server/server/speech/providers/openai/stt.js.map +1 -0
  351. package/dist/server/server/speech/providers/openai/tts.d.ts +18 -0
  352. package/dist/server/server/speech/providers/openai/tts.d.ts.map +1 -0
  353. package/dist/server/server/speech/providers/openai/tts.js +46 -0
  354. package/dist/server/server/speech/providers/openai/tts.js.map +1 -0
  355. package/dist/server/server/speech/speech-config-resolver.d.ts +11 -0
  356. package/dist/server/server/speech/speech-config-resolver.d.ts.map +1 -0
  357. package/dist/server/server/speech/speech-config-resolver.js +64 -0
  358. package/dist/server/server/speech/speech-config-resolver.js.map +1 -0
  359. package/dist/server/server/speech/speech-provider.d.ts +59 -0
  360. package/dist/server/server/speech/speech-provider.d.ts.map +1 -0
  361. package/dist/server/server/speech/speech-provider.js +2 -0
  362. package/dist/server/server/speech/speech-provider.js.map +1 -0
  363. package/dist/server/server/speech/speech-runtime.d.ts +20 -0
  364. package/dist/server/server/speech/speech-runtime.d.ts.map +1 -0
  365. package/dist/server/server/speech/speech-runtime.js +119 -0
  366. package/dist/server/server/speech/speech-runtime.js.map +1 -0
  367. package/dist/server/server/speech/speech-types.d.ts +20 -0
  368. package/dist/server/server/speech/speech-types.d.ts.map +1 -0
  369. package/dist/server/server/speech/speech-types.js +7 -0
  370. package/dist/server/server/speech/speech-types.js.map +1 -0
  371. package/dist/server/server/terminal-mcp/index.d.ts +4 -0
  372. package/dist/server/server/terminal-mcp/index.d.ts.map +1 -0
  373. package/dist/server/server/terminal-mcp/index.js +3 -0
  374. package/dist/server/server/terminal-mcp/index.js.map +1 -0
  375. package/dist/server/server/terminal-mcp/server.d.ts +10 -0
  376. package/dist/server/server/terminal-mcp/server.d.ts.map +1 -0
  377. package/dist/server/server/terminal-mcp/server.js +217 -0
  378. package/dist/server/server/terminal-mcp/server.js.map +1 -0
  379. package/dist/server/server/terminal-mcp/terminal-manager.d.ts +123 -0
  380. package/dist/server/server/terminal-mcp/terminal-manager.d.ts.map +1 -0
  381. package/dist/server/server/terminal-mcp/terminal-manager.js +351 -0
  382. package/dist/server/server/terminal-mcp/terminal-manager.js.map +1 -0
  383. package/dist/server/server/terminal-mcp/tmux.d.ts +207 -0
  384. package/dist/server/server/terminal-mcp/tmux.d.ts.map +1 -0
  385. package/dist/server/server/terminal-mcp/tmux.js +924 -0
  386. package/dist/server/server/terminal-mcp/tmux.js.map +1 -0
  387. package/dist/server/server/types.d.ts +5 -0
  388. package/dist/server/server/types.d.ts.map +1 -0
  389. package/dist/server/server/types.js +3 -0
  390. package/dist/server/server/types.js.map +1 -0
  391. package/dist/server/server/utils/diff-highlighter.d.ts +52 -0
  392. package/dist/server/server/utils/diff-highlighter.d.ts.map +1 -0
  393. package/dist/server/server/utils/diff-highlighter.js +244 -0
  394. package/dist/server/server/utils/diff-highlighter.js.map +1 -0
  395. package/dist/server/server/utils/syntax-highlighter.d.ts +10 -0
  396. package/dist/server/server/utils/syntax-highlighter.d.ts.map +1 -0
  397. package/dist/server/server/utils/syntax-highlighter.js +141 -0
  398. package/dist/server/server/utils/syntax-highlighter.js.map +1 -0
  399. package/dist/server/server/voice-config.d.ts +14 -0
  400. package/dist/server/server/voice-config.d.ts.map +1 -0
  401. package/dist/server/server/voice-config.js +51 -0
  402. package/dist/server/server/voice-config.js.map +1 -0
  403. package/dist/server/server/voice-mcp-bridge-command.d.ts +17 -0
  404. package/dist/server/server/voice-mcp-bridge-command.d.ts.map +1 -0
  405. package/dist/server/server/voice-mcp-bridge-command.js +31 -0
  406. package/dist/server/server/voice-mcp-bridge-command.js.map +1 -0
  407. package/dist/server/server/voice-mcp-bridge.d.ts +18 -0
  408. package/dist/server/server/voice-mcp-bridge.d.ts.map +1 -0
  409. package/dist/server/server/voice-mcp-bridge.js +109 -0
  410. package/dist/server/server/voice-mcp-bridge.js.map +1 -0
  411. package/dist/server/server/voice-permission-policy.d.ts +4 -0
  412. package/dist/server/server/voice-permission-policy.d.ts.map +1 -0
  413. package/dist/server/server/voice-permission-policy.js +13 -0
  414. package/dist/server/server/voice-permission-policy.js.map +1 -0
  415. package/dist/server/server/voice-types.d.ts +17 -0
  416. package/dist/server/server/voice-types.d.ts.map +1 -0
  417. package/dist/server/server/voice-types.js +2 -0
  418. package/dist/server/server/voice-types.js.map +1 -0
  419. package/dist/server/server/websocket-server.d.ts +80 -0
  420. package/dist/server/server/websocket-server.d.ts.map +1 -0
  421. package/dist/server/server/websocket-server.js +447 -0
  422. package/dist/server/server/websocket-server.js.map +1 -0
  423. package/dist/server/shared/agent-lifecycle.d.ts +3 -0
  424. package/dist/server/shared/agent-lifecycle.d.ts.map +1 -0
  425. package/dist/server/shared/agent-lifecycle.js +8 -0
  426. package/dist/server/shared/agent-lifecycle.js.map +1 -0
  427. package/dist/server/shared/connection-offer.d.ts +62 -0
  428. package/dist/server/shared/connection-offer.d.ts.map +1 -0
  429. package/dist/server/shared/connection-offer.js +17 -0
  430. package/dist/server/shared/connection-offer.js.map +1 -0
  431. package/dist/server/shared/daemon-endpoints.d.ts +19 -0
  432. package/dist/server/shared/daemon-endpoints.d.ts.map +1 -0
  433. package/dist/server/shared/daemon-endpoints.js +98 -0
  434. package/dist/server/shared/daemon-endpoints.js.map +1 -0
  435. package/dist/server/shared/messages.d.ts +36729 -0
  436. package/dist/server/shared/messages.d.ts.map +1 -0
  437. package/dist/server/shared/messages.js +1666 -0
  438. package/dist/server/shared/messages.js.map +1 -0
  439. package/dist/server/shared/path-utils.d.ts +2 -0
  440. package/dist/server/shared/path-utils.d.ts.map +1 -0
  441. package/dist/server/shared/path-utils.js +16 -0
  442. package/dist/server/shared/path-utils.js.map +1 -0
  443. package/dist/server/shared/tool-call-display.d.ts +11 -0
  444. package/dist/server/shared/tool-call-display.d.ts.map +1 -0
  445. package/dist/server/shared/tool-call-display.js +82 -0
  446. package/dist/server/shared/tool-call-display.js.map +1 -0
  447. package/dist/server/terminal/terminal-manager.d.ts +14 -0
  448. package/dist/server/terminal/terminal-manager.d.ts.map +1 -0
  449. package/dist/server/terminal/terminal-manager.js +67 -0
  450. package/dist/server/terminal/terminal-manager.js.map +1 -0
  451. package/dist/server/terminal/terminal.d.ts +67 -0
  452. package/dist/server/terminal/terminal.d.ts.map +1 -0
  453. package/dist/server/terminal/terminal.js +190 -0
  454. package/dist/server/terminal/terminal.js.map +1 -0
  455. package/dist/server/utils/checkout-git.d.ts +138 -0
  456. package/dist/server/utils/checkout-git.d.ts.map +1 -0
  457. package/dist/server/utils/checkout-git.js +1079 -0
  458. package/dist/server/utils/checkout-git.js.map +1 -0
  459. package/dist/server/utils/path.d.ts +5 -0
  460. package/dist/server/utils/path.d.ts.map +1 -0
  461. package/dist/server/utils/path.js +15 -0
  462. package/dist/server/utils/path.js.map +1 -0
  463. package/dist/server/utils/project-icon.d.ts +39 -0
  464. package/dist/server/utils/project-icon.d.ts.map +1 -0
  465. package/dist/server/utils/project-icon.js +391 -0
  466. package/dist/server/utils/project-icon.js.map +1 -0
  467. package/dist/server/utils/worktree-metadata.d.ts +21 -0
  468. package/dist/server/utils/worktree-metadata.d.ts.map +1 -0
  469. package/dist/server/utils/worktree-metadata.js +74 -0
  470. package/dist/server/utils/worktree-metadata.js.map +1 -0
  471. package/dist/server/utils/worktree.d.ts +95 -0
  472. package/dist/server/utils/worktree.d.ts.map +1 -0
  473. package/dist/server/utils/worktree.js +568 -0
  474. package/dist/server/utils/worktree.js.map +1 -0
  475. package/package.json +108 -0
@@ -0,0 +1,1666 @@
1
+ import { z } from "zod";
2
+ import { AGENT_LIFECYCLE_STATUSES } from "./agent-lifecycle.js";
3
+ import { AgentProviderSchema } from "../server/agent/provider-manifest.js";
4
+ export const AgentStatusSchema = z.enum(AGENT_LIFECYCLE_STATUSES);
5
+ const AgentModeSchema = z.object({
6
+ id: z.string(),
7
+ label: z.string(),
8
+ description: z.string().optional(),
9
+ });
10
+ const AgentSelectOptionSchema = z.object({
11
+ id: z.string(),
12
+ label: z.string(),
13
+ description: z.string().optional(),
14
+ isDefault: z.boolean().optional(),
15
+ metadata: z.record(z.unknown()).optional(),
16
+ });
17
+ const AgentModelDefinitionSchema = z.object({
18
+ provider: AgentProviderSchema,
19
+ id: z.string(),
20
+ label: z.string(),
21
+ description: z.string().optional(),
22
+ isDefault: z.boolean().optional(),
23
+ metadata: z.record(z.unknown()).optional(),
24
+ thinkingOptions: z.array(AgentSelectOptionSchema).optional(),
25
+ defaultThinkingOptionId: z.string().optional(),
26
+ });
27
+ const AgentCapabilityFlagsSchema = z.object({
28
+ supportsStreaming: z.boolean(),
29
+ supportsSessionPersistence: z.boolean(),
30
+ supportsDynamicModes: z.boolean(),
31
+ supportsMcpServers: z.boolean(),
32
+ supportsReasoningStream: z.boolean(),
33
+ supportsToolInvocations: z.boolean(),
34
+ });
35
+ const AgentUsageSchema = z.object({
36
+ inputTokens: z.number().optional(),
37
+ cachedInputTokens: z.number().optional(),
38
+ outputTokens: z.number().optional(),
39
+ totalCostUsd: z.number().optional(),
40
+ });
41
+ const McpStdioServerConfigSchema = z.object({
42
+ type: z.literal("stdio"),
43
+ command: z.string(),
44
+ args: z.array(z.string()).optional(),
45
+ env: z.record(z.string()).optional(),
46
+ });
47
+ const McpHttpServerConfigSchema = z.object({
48
+ type: z.literal("http"),
49
+ url: z.string(),
50
+ headers: z.record(z.string()).optional(),
51
+ });
52
+ const McpSseServerConfigSchema = z.object({
53
+ type: z.literal("sse"),
54
+ url: z.string(),
55
+ headers: z.record(z.string()).optional(),
56
+ });
57
+ const McpServerConfigSchema = z.discriminatedUnion("type", [
58
+ McpStdioServerConfigSchema,
59
+ McpHttpServerConfigSchema,
60
+ McpSseServerConfigSchema,
61
+ ]);
62
+ const AgentSessionConfigSchema = z.object({
63
+ provider: AgentProviderSchema,
64
+ cwd: z.string(),
65
+ modeId: z.string().optional(),
66
+ model: z.string().optional(),
67
+ thinkingOptionId: z.string().optional(),
68
+ title: z
69
+ .string()
70
+ .trim()
71
+ .min(1)
72
+ .max(40)
73
+ .optional()
74
+ .nullable(),
75
+ approvalPolicy: z.string().optional(),
76
+ sandboxMode: z.string().optional(),
77
+ networkAccess: z.boolean().optional(),
78
+ webSearch: z.boolean().optional(),
79
+ extra: z
80
+ .object({
81
+ codex: z.record(z.unknown()).optional(),
82
+ claude: z.record(z.unknown()).optional(),
83
+ })
84
+ .partial()
85
+ .optional(),
86
+ systemPrompt: z.string().optional(),
87
+ mcpServers: z.record(McpServerConfigSchema).optional(),
88
+ });
89
+ const AgentPermissionUpdateSchema = z.record(z.unknown());
90
+ export const AgentPermissionResponseSchema = z.union([
91
+ z.object({
92
+ behavior: z.literal("allow"),
93
+ updatedInput: z.record(z.unknown()).optional(),
94
+ updatedPermissions: z.array(AgentPermissionUpdateSchema).optional(),
95
+ }),
96
+ z.object({
97
+ behavior: z.literal("deny"),
98
+ message: z.string().optional(),
99
+ interrupt: z.boolean().optional(),
100
+ }),
101
+ ]);
102
+ export const AgentPermissionRequestPayloadSchema = z.object({
103
+ id: z.string(),
104
+ provider: AgentProviderSchema,
105
+ name: z.string(),
106
+ kind: z.enum(["tool", "plan", "question", "mode", "other"]),
107
+ title: z.string().optional(),
108
+ description: z.string().optional(),
109
+ input: z.record(z.unknown()).optional(),
110
+ suggestions: z.array(AgentPermissionUpdateSchema).optional(),
111
+ metadata: z.record(z.unknown()).optional(),
112
+ });
113
+ const UnknownValueSchema = z.union([
114
+ z.null(),
115
+ z.boolean(),
116
+ z.number(),
117
+ z.string(),
118
+ z.array(z.unknown()),
119
+ z.object({}).passthrough(),
120
+ ]);
121
+ const NonNullUnknownSchema = z.union([
122
+ z.boolean(),
123
+ z.number(),
124
+ z.string(),
125
+ z.array(z.unknown()),
126
+ z.object({}).passthrough(),
127
+ ]);
128
+ const ToolCallDetailPayloadSchema = z.discriminatedUnion("type", [
129
+ z.object({
130
+ type: z.literal("shell"),
131
+ command: z.string(),
132
+ cwd: z.string().optional(),
133
+ output: z.string().optional(),
134
+ exitCode: z.number().nullable().optional(),
135
+ }),
136
+ z.object({
137
+ type: z.literal("read"),
138
+ filePath: z.string(),
139
+ content: z.string().optional(),
140
+ offset: z.number().optional(),
141
+ limit: z.number().optional(),
142
+ }),
143
+ z.object({
144
+ type: z.literal("edit"),
145
+ filePath: z.string(),
146
+ oldString: z.string().optional(),
147
+ newString: z.string().optional(),
148
+ unifiedDiff: z.string().optional(),
149
+ }),
150
+ z.object({
151
+ type: z.literal("write"),
152
+ filePath: z.string(),
153
+ content: z.string().optional(),
154
+ }),
155
+ z.object({
156
+ type: z.literal("search"),
157
+ query: z.string(),
158
+ }),
159
+ z.object({
160
+ type: z.literal("unknown"),
161
+ input: UnknownValueSchema,
162
+ output: UnknownValueSchema,
163
+ }),
164
+ ]);
165
+ const ToolCallBasePayloadSchema = z.object({
166
+ type: z.literal("tool_call"),
167
+ callId: z.string(),
168
+ name: z.string(),
169
+ detail: ToolCallDetailPayloadSchema,
170
+ metadata: z.record(z.unknown()).optional(),
171
+ }).strict();
172
+ const ToolCallRunningPayloadSchema = ToolCallBasePayloadSchema.extend({
173
+ status: z.literal("running"),
174
+ error: z.null(),
175
+ });
176
+ const ToolCallCompletedPayloadSchema = ToolCallBasePayloadSchema.extend({
177
+ status: z.literal("completed"),
178
+ error: z.null(),
179
+ });
180
+ const ToolCallFailedPayloadSchema = ToolCallBasePayloadSchema.extend({
181
+ status: z.literal("failed"),
182
+ error: NonNullUnknownSchema,
183
+ });
184
+ const ToolCallCanceledPayloadSchema = ToolCallBasePayloadSchema.extend({
185
+ status: z.literal("canceled"),
186
+ error: z.null(),
187
+ });
188
+ const ToolCallTimelineItemPayloadSchema = z.union([
189
+ ToolCallRunningPayloadSchema,
190
+ ToolCallCompletedPayloadSchema,
191
+ ToolCallFailedPayloadSchema,
192
+ ToolCallCanceledPayloadSchema,
193
+ ]);
194
+ export const AgentTimelineItemPayloadSchema = z.union([
195
+ z.object({
196
+ type: z.literal("user_message"),
197
+ text: z.string(),
198
+ messageId: z.string().optional(),
199
+ }),
200
+ z.object({
201
+ type: z.literal("assistant_message"),
202
+ text: z.string(),
203
+ }),
204
+ z.object({
205
+ type: z.literal("reasoning"),
206
+ text: z.string(),
207
+ }),
208
+ ToolCallTimelineItemPayloadSchema,
209
+ z.object({
210
+ type: z.literal("todo"),
211
+ items: z.array(z.object({
212
+ text: z.string(),
213
+ completed: z.boolean(),
214
+ })),
215
+ }),
216
+ z.object({
217
+ type: z.literal("error"),
218
+ message: z.string(),
219
+ }),
220
+ z.object({
221
+ type: z.literal("compaction"),
222
+ status: z.enum(["loading", "completed"]),
223
+ trigger: z.enum(["auto", "manual"]).optional(),
224
+ preTokens: z.number().optional(),
225
+ }),
226
+ ]);
227
+ export const AgentStreamEventPayloadSchema = z.discriminatedUnion("type", [
228
+ z.object({
229
+ type: z.literal("thread_started"),
230
+ sessionId: z.string(),
231
+ provider: AgentProviderSchema,
232
+ }),
233
+ z.object({
234
+ type: z.literal("turn_started"),
235
+ provider: AgentProviderSchema,
236
+ }),
237
+ z.object({
238
+ type: z.literal("turn_completed"),
239
+ provider: AgentProviderSchema,
240
+ usage: AgentUsageSchema.optional(),
241
+ }),
242
+ z.object({
243
+ type: z.literal("turn_failed"),
244
+ provider: AgentProviderSchema,
245
+ error: z.string(),
246
+ }),
247
+ z.object({
248
+ type: z.literal("turn_canceled"),
249
+ provider: AgentProviderSchema,
250
+ reason: z.string(),
251
+ }),
252
+ z.object({
253
+ type: z.literal("timeline"),
254
+ provider: AgentProviderSchema,
255
+ item: AgentTimelineItemPayloadSchema,
256
+ }),
257
+ z.object({
258
+ type: z.literal("permission_requested"),
259
+ provider: AgentProviderSchema,
260
+ request: AgentPermissionRequestPayloadSchema,
261
+ }),
262
+ z.object({
263
+ type: z.literal("permission_resolved"),
264
+ provider: AgentProviderSchema,
265
+ requestId: z.string(),
266
+ resolution: AgentPermissionResponseSchema,
267
+ }),
268
+ z.object({
269
+ type: z.literal("attention_required"),
270
+ provider: AgentProviderSchema,
271
+ reason: z.enum(["finished", "error", "permission"]),
272
+ timestamp: z.string(),
273
+ shouldNotify: z.boolean(),
274
+ }),
275
+ ]);
276
+ const AgentPersistenceHandleSchema = z
277
+ .object({
278
+ provider: AgentProviderSchema,
279
+ sessionId: z.string(),
280
+ nativeHandle: z.string().optional(),
281
+ metadata: z.record(z.unknown()).optional(),
282
+ })
283
+ .nullable();
284
+ const AgentRuntimeInfoSchema = z.object({
285
+ provider: AgentProviderSchema,
286
+ sessionId: z.string().nullable(),
287
+ model: z.string().nullable().optional(),
288
+ modeId: z.string().nullable().optional(),
289
+ extra: z.record(z.unknown()).optional(),
290
+ });
291
+ export const AgentSnapshotPayloadSchema = z.object({
292
+ id: z.string(),
293
+ provider: AgentProviderSchema,
294
+ cwd: z.string(),
295
+ model: z.string().nullable(),
296
+ thinkingOptionId: z.string().nullable().optional(),
297
+ createdAt: z.string(),
298
+ updatedAt: z.string(),
299
+ lastUserMessageAt: z.string().nullable(),
300
+ status: AgentStatusSchema,
301
+ capabilities: AgentCapabilityFlagsSchema,
302
+ currentModeId: z.string().nullable(),
303
+ availableModes: z.array(AgentModeSchema),
304
+ pendingPermissions: z.array(AgentPermissionRequestPayloadSchema),
305
+ persistence: AgentPersistenceHandleSchema.nullable(),
306
+ runtimeInfo: AgentRuntimeInfoSchema.optional(),
307
+ lastUsage: AgentUsageSchema.optional(),
308
+ lastError: z.string().optional(),
309
+ title: z.string().nullable(),
310
+ labels: z.record(z.string()).default({}),
311
+ requiresAttention: z.boolean().optional(),
312
+ attentionReason: z.enum(["finished", "error", "permission"]).nullable().optional(),
313
+ attentionTimestamp: z.string().nullable().optional(),
314
+ archivedAt: z.string().nullable().optional(),
315
+ });
316
+ // ============================================================================
317
+ // Session Inbound Messages (Session receives these)
318
+ // ============================================================================
319
+ export const VoiceAudioChunkMessageSchema = z.object({
320
+ type: z.literal("voice_audio_chunk"),
321
+ audio: z.string(), // base64 encoded
322
+ format: z.string(),
323
+ isLast: z.boolean(),
324
+ });
325
+ export const AbortRequestMessageSchema = z.object({
326
+ type: z.literal("abort_request"),
327
+ });
328
+ export const AudioPlayedMessageSchema = z.object({
329
+ type: z.literal("audio_played"),
330
+ id: z.string(),
331
+ });
332
+ export const RequestAgentListMessageSchema = z.object({
333
+ type: z.literal("request_agent_list"),
334
+ requestId: z.string(),
335
+ filter: z.object({
336
+ labels: z.record(z.string()).optional(),
337
+ }).optional(),
338
+ });
339
+ export const SubscribeAgentUpdatesMessageSchema = z.object({
340
+ type: z.literal("subscribe_agent_updates"),
341
+ subscriptionId: z.string(),
342
+ filter: z.object({
343
+ labels: z.record(z.string()).optional(),
344
+ agentId: z.string().optional(),
345
+ }).optional(),
346
+ });
347
+ export const UnsubscribeAgentUpdatesMessageSchema = z.object({
348
+ type: z.literal("unsubscribe_agent_updates"),
349
+ subscriptionId: z.string(),
350
+ });
351
+ export const DeleteAgentRequestMessageSchema = z.object({
352
+ type: z.literal("delete_agent_request"),
353
+ agentId: z.string(),
354
+ requestId: z.string(),
355
+ });
356
+ export const ArchiveAgentRequestMessageSchema = z.object({
357
+ type: z.literal("archive_agent_request"),
358
+ agentId: z.string(),
359
+ requestId: z.string(),
360
+ });
361
+ export const SetVoiceModeMessageSchema = z.object({
362
+ type: z.literal("set_voice_mode"),
363
+ enabled: z.boolean(),
364
+ agentId: z.string().optional(),
365
+ requestId: z.string().optional(),
366
+ });
367
+ export const SendAgentMessageSchema = z.object({
368
+ type: z.literal("send_agent_message"),
369
+ agentId: z.string(),
370
+ text: z.string(),
371
+ messageId: z.string().optional(), // Client-provided ID for deduplication
372
+ images: z.array(z.object({
373
+ data: z.string(), // base64 encoded image
374
+ mimeType: z.string(), // e.g., "image/jpeg", "image/png"
375
+ })).optional(),
376
+ });
377
+ // ============================================================================
378
+ // Agent RPCs (requestId-correlated)
379
+ // ============================================================================
380
+ export const FetchAgentsRequestMessageSchema = z.object({
381
+ type: z.literal("fetch_agents_request"),
382
+ requestId: z.string(),
383
+ filter: z
384
+ .object({
385
+ labels: z.record(z.string()).optional(),
386
+ })
387
+ .optional(),
388
+ });
389
+ export const FetchAgentsGroupedByProjectRequestMessageSchema = z.object({
390
+ type: z.literal("fetch_agents_grouped_by_project_request"),
391
+ requestId: z.string(),
392
+ filter: z
393
+ .object({
394
+ labels: z.record(z.string()).optional(),
395
+ })
396
+ .optional(),
397
+ });
398
+ export const FetchAgentRequestMessageSchema = z.object({
399
+ type: z.literal("fetch_agent_request"),
400
+ requestId: z.string(),
401
+ /** Accepts full ID, unique prefix, or exact full title (server resolves). */
402
+ agentId: z.string(),
403
+ });
404
+ export const SendAgentMessageRequestSchema = z.object({
405
+ type: z.literal("send_agent_message_request"),
406
+ requestId: z.string(),
407
+ /** Accepts full ID, unique prefix, or exact full title (server resolves). */
408
+ agentId: z.string(),
409
+ text: z.string(),
410
+ messageId: z.string().optional(), // Client-provided ID for deduplication
411
+ images: z
412
+ .array(z.object({
413
+ data: z.string(), // base64 encoded image
414
+ mimeType: z.string(), // e.g., "image/jpeg", "image/png"
415
+ }))
416
+ .optional(),
417
+ });
418
+ export const WaitForFinishRequestSchema = z.object({
419
+ type: z.literal("wait_for_finish_request"),
420
+ requestId: z.string(),
421
+ /** Accepts full ID, unique prefix, or exact full title (server resolves). */
422
+ agentId: z.string(),
423
+ timeoutMs: z.number().int().positive().optional(),
424
+ });
425
+ // ============================================================================
426
+ // Dictation Streaming (lossless, resumable)
427
+ // ============================================================================
428
+ export const DictationStreamStartMessageSchema = z.object({
429
+ type: z.literal("dictation_stream_start"),
430
+ dictationId: z.string(),
431
+ format: z.string(), // e.g. "audio/pcm;rate=16000;bits=16"
432
+ });
433
+ export const DictationStreamChunkMessageSchema = z.object({
434
+ type: z.literal("dictation_stream_chunk"),
435
+ dictationId: z.string(),
436
+ seq: z.number().int().nonnegative(),
437
+ audio: z.string(), // base64 encoded chunk
438
+ format: z.string(), // e.g. "audio/pcm;rate=16000;bits=16"
439
+ });
440
+ export const DictationStreamFinishMessageSchema = z.object({
441
+ type: z.literal("dictation_stream_finish"),
442
+ dictationId: z.string(),
443
+ finalSeq: z.number().int().nonnegative(),
444
+ });
445
+ export const DictationStreamCancelMessageSchema = z.object({
446
+ type: z.literal("dictation_stream_cancel"),
447
+ dictationId: z.string(),
448
+ });
449
+ const GitSetupOptionsSchema = z.object({
450
+ baseBranch: z.string().optional(),
451
+ createNewBranch: z.boolean().optional(),
452
+ newBranchName: z.string().optional(),
453
+ createWorktree: z.boolean().optional(),
454
+ worktreeSlug: z.string().optional(),
455
+ });
456
+ export const CreateAgentRequestMessageSchema = z.object({
457
+ type: z.literal("create_agent_request"),
458
+ config: AgentSessionConfigSchema,
459
+ worktreeName: z.string().optional(),
460
+ initialPrompt: z.string().optional(),
461
+ images: z.array(z.object({
462
+ data: z.string(), // base64 encoded image
463
+ mimeType: z.string(), // e.g., "image/jpeg", "image/png"
464
+ })).optional(),
465
+ git: GitSetupOptionsSchema.optional(),
466
+ labels: z.record(z.string()).default({}),
467
+ requestId: z.string(),
468
+ });
469
+ export const ListProviderModelsRequestMessageSchema = z.object({
470
+ type: z.literal("list_provider_models_request"),
471
+ provider: AgentProviderSchema,
472
+ cwd: z.string().optional(),
473
+ requestId: z.string(),
474
+ });
475
+ export const SpeechModelsListRequestSchema = z.object({
476
+ type: z.literal("speech_models_list_request"),
477
+ requestId: z.string(),
478
+ });
479
+ export const SpeechModelsDownloadRequestSchema = z.object({
480
+ type: z.literal("speech_models_download_request"),
481
+ modelIds: z.array(z.string()).optional(),
482
+ requestId: z.string(),
483
+ });
484
+ export const ResumeAgentRequestMessageSchema = z.object({
485
+ type: z.literal("resume_agent_request"),
486
+ handle: AgentPersistenceHandleSchema,
487
+ overrides: AgentSessionConfigSchema.partial().optional(),
488
+ requestId: z.string(),
489
+ });
490
+ export const RefreshAgentRequestMessageSchema = z.object({
491
+ type: z.literal("refresh_agent_request"),
492
+ agentId: z.string(),
493
+ requestId: z.string(),
494
+ });
495
+ export const CancelAgentRequestMessageSchema = z.object({
496
+ type: z.literal("cancel_agent_request"),
497
+ agentId: z.string(),
498
+ });
499
+ export const RestartServerRequestMessageSchema = z.object({
500
+ type: z.literal("restart_server_request"),
501
+ reason: z.string().optional(),
502
+ requestId: z.string(),
503
+ });
504
+ export const InitializeAgentRequestMessageSchema = z.object({
505
+ type: z.literal("initialize_agent_request"),
506
+ agentId: z.string(),
507
+ requestId: z.string(),
508
+ });
509
+ export const InitializeAgentResponseMessageSchema = z.object({
510
+ // Response shares the same type literal as the request for simple requestId matching
511
+ type: z.literal("initialize_agent_request"),
512
+ payload: z.object({
513
+ agentId: z.string(),
514
+ agentStatus: z.string().optional(),
515
+ timelineSize: z.number().optional(),
516
+ requestId: z.string(),
517
+ error: z.string().optional(),
518
+ }),
519
+ });
520
+ export const SetAgentModeRequestMessageSchema = z.object({
521
+ type: z.literal("set_agent_mode_request"),
522
+ agentId: z.string(),
523
+ modeId: z.string(),
524
+ requestId: z.string(),
525
+ });
526
+ export const SetAgentModeResponseMessageSchema = z.object({
527
+ type: z.literal("set_agent_mode_response"),
528
+ payload: z.object({
529
+ requestId: z.string(),
530
+ agentId: z.string(),
531
+ accepted: z.boolean(),
532
+ error: z.string().nullable(),
533
+ }),
534
+ });
535
+ export const SetAgentModelRequestMessageSchema = z.object({
536
+ type: z.literal("set_agent_model_request"),
537
+ agentId: z.string(),
538
+ modelId: z.string().nullable(),
539
+ requestId: z.string(),
540
+ });
541
+ export const SetAgentModelResponseMessageSchema = z.object({
542
+ type: z.literal("set_agent_model_response"),
543
+ payload: z.object({
544
+ requestId: z.string(),
545
+ agentId: z.string(),
546
+ accepted: z.boolean(),
547
+ error: z.string().nullable(),
548
+ }),
549
+ });
550
+ export const SetAgentThinkingRequestMessageSchema = z.object({
551
+ type: z.literal("set_agent_thinking_request"),
552
+ agentId: z.string(),
553
+ thinkingOptionId: z.string().nullable(),
554
+ requestId: z.string(),
555
+ });
556
+ export const SetAgentThinkingResponseMessageSchema = z.object({
557
+ type: z.literal("set_agent_thinking_response"),
558
+ payload: z.object({
559
+ requestId: z.string(),
560
+ agentId: z.string(),
561
+ accepted: z.boolean(),
562
+ error: z.string().nullable(),
563
+ }),
564
+ });
565
+ export const SetVoiceModeResponseMessageSchema = z.object({
566
+ type: z.literal("set_voice_mode_response"),
567
+ payload: z.object({
568
+ requestId: z.string(),
569
+ enabled: z.boolean(),
570
+ agentId: z.string().nullable(),
571
+ accepted: z.boolean(),
572
+ error: z.string().nullable(),
573
+ }),
574
+ });
575
+ export const AgentPermissionResponseMessageSchema = z.object({
576
+ type: z.literal("agent_permission_response"),
577
+ agentId: z.string(),
578
+ requestId: z.string(),
579
+ response: AgentPermissionResponseSchema,
580
+ });
581
+ export const GitDiffRequestSchema = z.object({
582
+ type: z.literal("git_diff_request"),
583
+ agentId: z.string(),
584
+ requestId: z.string(),
585
+ });
586
+ const CheckoutErrorCodeSchema = z.enum([
587
+ "NOT_GIT_REPO",
588
+ "NOT_ALLOWED",
589
+ "MERGE_CONFLICT",
590
+ "UNKNOWN",
591
+ ]);
592
+ const CheckoutErrorSchema = z.object({
593
+ code: CheckoutErrorCodeSchema,
594
+ message: z.string(),
595
+ });
596
+ const CheckoutDiffCompareSchema = z.object({
597
+ mode: z.enum(["uncommitted", "base"]),
598
+ baseRef: z.string().optional(),
599
+ });
600
+ export const CheckoutStatusRequestSchema = z.object({
601
+ type: z.literal("checkout_status_request"),
602
+ cwd: z.string(),
603
+ requestId: z.string(),
604
+ });
605
+ export const SubscribeCheckoutDiffRequestSchema = z.object({
606
+ type: z.literal("subscribe_checkout_diff_request"),
607
+ subscriptionId: z.string(),
608
+ cwd: z.string(),
609
+ compare: CheckoutDiffCompareSchema,
610
+ requestId: z.string(),
611
+ });
612
+ export const UnsubscribeCheckoutDiffRequestSchema = z.object({
613
+ type: z.literal("unsubscribe_checkout_diff_request"),
614
+ subscriptionId: z.string(),
615
+ });
616
+ export const CheckoutCommitRequestSchema = z.object({
617
+ type: z.literal("checkout_commit_request"),
618
+ cwd: z.string(),
619
+ message: z.string().optional(),
620
+ addAll: z.boolean().optional(),
621
+ requestId: z.string(),
622
+ });
623
+ export const CheckoutMergeRequestSchema = z.object({
624
+ type: z.literal("checkout_merge_request"),
625
+ cwd: z.string(),
626
+ baseRef: z.string().optional(),
627
+ strategy: z.enum(["merge", "squash"]).optional(),
628
+ requireCleanTarget: z.boolean().optional(),
629
+ requestId: z.string(),
630
+ });
631
+ export const CheckoutMergeFromBaseRequestSchema = z.object({
632
+ type: z.literal("checkout_merge_from_base_request"),
633
+ cwd: z.string(),
634
+ baseRef: z.string().optional(),
635
+ requireCleanTarget: z.boolean().optional(),
636
+ requestId: z.string(),
637
+ });
638
+ export const CheckoutPushRequestSchema = z.object({
639
+ type: z.literal("checkout_push_request"),
640
+ cwd: z.string(),
641
+ requestId: z.string(),
642
+ });
643
+ export const CheckoutPrCreateRequestSchema = z.object({
644
+ type: z.literal("checkout_pr_create_request"),
645
+ cwd: z.string(),
646
+ title: z.string().optional(),
647
+ body: z.string().optional(),
648
+ baseRef: z.string().optional(),
649
+ requestId: z.string(),
650
+ });
651
+ export const CheckoutPrStatusRequestSchema = z.object({
652
+ type: z.literal("checkout_pr_status_request"),
653
+ cwd: z.string(),
654
+ requestId: z.string(),
655
+ });
656
+ export const ValidateBranchRequestSchema = z.object({
657
+ type: z.literal("validate_branch_request"),
658
+ cwd: z.string(),
659
+ branchName: z.string(),
660
+ requestId: z.string(),
661
+ });
662
+ export const PaseoWorktreeListRequestSchema = z.object({
663
+ type: z.literal("paseo_worktree_list_request"),
664
+ cwd: z.string().optional(),
665
+ repoRoot: z.string().optional(),
666
+ requestId: z.string(),
667
+ });
668
+ export const PaseoWorktreeArchiveRequestSchema = z.object({
669
+ type: z.literal("paseo_worktree_archive_request"),
670
+ worktreePath: z.string().optional(),
671
+ repoRoot: z.string().optional(),
672
+ branchName: z.string().optional(),
673
+ requestId: z.string(),
674
+ });
675
+ // Highlighted diff token schema
676
+ // Note: style can be a compound class name (e.g., "heading meta") from the syntax highlighter
677
+ const HighlightTokenSchema = z.object({
678
+ text: z.string(),
679
+ style: z.string().nullable(),
680
+ });
681
+ const DiffLineSchema = z.object({
682
+ type: z.enum(["add", "remove", "context", "header"]),
683
+ content: z.string(),
684
+ tokens: z.array(HighlightTokenSchema).optional(),
685
+ });
686
+ const DiffHunkSchema = z.object({
687
+ oldStart: z.number(),
688
+ oldCount: z.number(),
689
+ newStart: z.number(),
690
+ newCount: z.number(),
691
+ lines: z.array(DiffLineSchema),
692
+ });
693
+ const ParsedDiffFileSchema = z.object({
694
+ path: z.string(),
695
+ isNew: z.boolean(),
696
+ isDeleted: z.boolean(),
697
+ additions: z.number(),
698
+ deletions: z.number(),
699
+ hunks: z.array(DiffHunkSchema),
700
+ status: z.enum(["ok", "too_large", "binary"]).optional(),
701
+ });
702
+ export const HighlightedDiffRequestSchema = z.object({
703
+ type: z.literal("highlighted_diff_request"),
704
+ agentId: z.string(),
705
+ requestId: z.string(),
706
+ });
707
+ const FileExplorerEntrySchema = z.object({
708
+ name: z.string(),
709
+ path: z.string(),
710
+ kind: z.enum(["file", "directory"]),
711
+ size: z.number(),
712
+ modifiedAt: z.string(),
713
+ });
714
+ const FileExplorerFileSchema = z.object({
715
+ path: z.string(),
716
+ kind: z.enum(["text", "image", "binary"]),
717
+ encoding: z.enum(["utf-8", "base64", "none"]),
718
+ content: z.string().optional(),
719
+ mimeType: z.string().optional(),
720
+ size: z.number(),
721
+ modifiedAt: z.string(),
722
+ });
723
+ const FileExplorerDirectorySchema = z.object({
724
+ path: z.string(),
725
+ entries: z.array(FileExplorerEntrySchema),
726
+ });
727
+ export const FileExplorerRequestSchema = z.object({
728
+ type: z.literal("file_explorer_request"),
729
+ agentId: z.string(),
730
+ path: z.string().optional(),
731
+ mode: z.enum(["list", "file"]),
732
+ requestId: z.string(),
733
+ });
734
+ export const ProjectIconRequestSchema = z.object({
735
+ type: z.literal("project_icon_request"),
736
+ cwd: z.string(),
737
+ requestId: z.string(),
738
+ });
739
+ export const FileDownloadTokenRequestSchema = z.object({
740
+ type: z.literal("file_download_token_request"),
741
+ agentId: z.string(),
742
+ path: z.string(),
743
+ requestId: z.string(),
744
+ });
745
+ export const ClearAgentAttentionMessageSchema = z.object({
746
+ type: z.literal("clear_agent_attention"),
747
+ agentId: z.union([z.string(), z.array(z.string())]),
748
+ });
749
+ export const ClientHeartbeatMessageSchema = z.object({
750
+ type: z.literal("client_heartbeat"),
751
+ deviceType: z.enum(["web", "mobile"]),
752
+ focusedAgentId: z.string().nullable(),
753
+ lastActivityAt: z.string(),
754
+ appVisible: z.boolean(),
755
+ appVisibilityChangedAt: z.string().optional(),
756
+ });
757
+ export const PingMessageSchema = z.object({
758
+ type: z.literal("ping"),
759
+ requestId: z.string(),
760
+ clientSentAt: z.number().int().optional(),
761
+ });
762
+ export const ListCommandsRequestSchema = z.object({
763
+ type: z.literal("list_commands_request"),
764
+ agentId: z.string(),
765
+ requestId: z.string(),
766
+ });
767
+ export const ExecuteCommandRequestSchema = z.object({
768
+ type: z.literal("execute_command_request"),
769
+ agentId: z.string(),
770
+ commandName: z.string(),
771
+ args: z.string().optional(),
772
+ requestId: z.string(),
773
+ });
774
+ export const RegisterPushTokenMessageSchema = z.object({
775
+ type: z.literal("register_push_token"),
776
+ token: z.string(),
777
+ });
778
+ // ============================================================================
779
+ // Terminal Messages
780
+ // ============================================================================
781
+ export const ListTerminalsRequestSchema = z.object({
782
+ type: z.literal("list_terminals_request"),
783
+ cwd: z.string(),
784
+ requestId: z.string(),
785
+ });
786
+ export const CreateTerminalRequestSchema = z.object({
787
+ type: z.literal("create_terminal_request"),
788
+ cwd: z.string(),
789
+ name: z.string().optional(),
790
+ requestId: z.string(),
791
+ });
792
+ export const SubscribeTerminalRequestSchema = z.object({
793
+ type: z.literal("subscribe_terminal_request"),
794
+ terminalId: z.string(),
795
+ requestId: z.string(),
796
+ });
797
+ export const UnsubscribeTerminalRequestSchema = z.object({
798
+ type: z.literal("unsubscribe_terminal_request"),
799
+ terminalId: z.string(),
800
+ });
801
+ const TerminalClientMessageSchema = z.discriminatedUnion("type", [
802
+ z.object({ type: z.literal("input"), data: z.string() }),
803
+ z.object({ type: z.literal("resize"), rows: z.number(), cols: z.number() }),
804
+ z.object({
805
+ type: z.literal("mouse"),
806
+ row: z.number(),
807
+ col: z.number(),
808
+ button: z.number(),
809
+ action: z.enum(["down", "up", "move"]),
810
+ }),
811
+ ]);
812
+ export const TerminalInputSchema = z.object({
813
+ type: z.literal("terminal_input"),
814
+ terminalId: z.string(),
815
+ message: TerminalClientMessageSchema,
816
+ });
817
+ export const KillTerminalRequestSchema = z.object({
818
+ type: z.literal("kill_terminal_request"),
819
+ terminalId: z.string(),
820
+ requestId: z.string(),
821
+ });
822
+ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
823
+ VoiceAudioChunkMessageSchema,
824
+ AbortRequestMessageSchema,
825
+ AudioPlayedMessageSchema,
826
+ FetchAgentsRequestMessageSchema,
827
+ FetchAgentsGroupedByProjectRequestMessageSchema,
828
+ FetchAgentRequestMessageSchema,
829
+ SubscribeAgentUpdatesMessageSchema,
830
+ UnsubscribeAgentUpdatesMessageSchema,
831
+ DeleteAgentRequestMessageSchema,
832
+ ArchiveAgentRequestMessageSchema,
833
+ SetVoiceModeMessageSchema,
834
+ SendAgentMessageRequestSchema,
835
+ WaitForFinishRequestSchema,
836
+ DictationStreamStartMessageSchema,
837
+ DictationStreamChunkMessageSchema,
838
+ DictationStreamFinishMessageSchema,
839
+ DictationStreamCancelMessageSchema,
840
+ CreateAgentRequestMessageSchema,
841
+ ListProviderModelsRequestMessageSchema,
842
+ SpeechModelsListRequestSchema,
843
+ SpeechModelsDownloadRequestSchema,
844
+ ResumeAgentRequestMessageSchema,
845
+ RefreshAgentRequestMessageSchema,
846
+ CancelAgentRequestMessageSchema,
847
+ RestartServerRequestMessageSchema,
848
+ InitializeAgentRequestMessageSchema,
849
+ SetAgentModeRequestMessageSchema,
850
+ SetAgentModelRequestMessageSchema,
851
+ SetAgentThinkingRequestMessageSchema,
852
+ AgentPermissionResponseMessageSchema,
853
+ GitDiffRequestSchema,
854
+ CheckoutStatusRequestSchema,
855
+ SubscribeCheckoutDiffRequestSchema,
856
+ UnsubscribeCheckoutDiffRequestSchema,
857
+ CheckoutCommitRequestSchema,
858
+ CheckoutMergeRequestSchema,
859
+ CheckoutMergeFromBaseRequestSchema,
860
+ CheckoutPushRequestSchema,
861
+ CheckoutPrCreateRequestSchema,
862
+ CheckoutPrStatusRequestSchema,
863
+ ValidateBranchRequestSchema,
864
+ PaseoWorktreeListRequestSchema,
865
+ PaseoWorktreeArchiveRequestSchema,
866
+ HighlightedDiffRequestSchema,
867
+ FileExplorerRequestSchema,
868
+ ProjectIconRequestSchema,
869
+ FileDownloadTokenRequestSchema,
870
+ ClearAgentAttentionMessageSchema,
871
+ ClientHeartbeatMessageSchema,
872
+ PingMessageSchema,
873
+ ListCommandsRequestSchema,
874
+ ExecuteCommandRequestSchema,
875
+ RegisterPushTokenMessageSchema,
876
+ ListTerminalsRequestSchema,
877
+ CreateTerminalRequestSchema,
878
+ SubscribeTerminalRequestSchema,
879
+ UnsubscribeTerminalRequestSchema,
880
+ TerminalInputSchema,
881
+ KillTerminalRequestSchema,
882
+ ]);
883
+ // ============================================================================
884
+ // Session Outbound Messages (Session emits these)
885
+ // ============================================================================
886
+ export const ActivityLogPayloadSchema = z.object({
887
+ id: z.string(),
888
+ timestamp: z.coerce.date(),
889
+ type: z.enum([
890
+ "transcript",
891
+ "assistant",
892
+ "tool_call",
893
+ "tool_result",
894
+ "error",
895
+ "system",
896
+ ]),
897
+ content: z.string(),
898
+ metadata: z.record(z.unknown()).optional(),
899
+ });
900
+ export const ActivityLogMessageSchema = z.object({
901
+ type: z.literal("activity_log"),
902
+ payload: ActivityLogPayloadSchema,
903
+ });
904
+ export const AssistantChunkMessageSchema = z.object({
905
+ type: z.literal("assistant_chunk"),
906
+ payload: z.object({
907
+ chunk: z.string(),
908
+ }),
909
+ });
910
+ export const AudioOutputMessageSchema = z.object({
911
+ type: z.literal("audio_output"),
912
+ payload: z.object({
913
+ audio: z.string(), // base64 encoded
914
+ format: z.string(),
915
+ id: z.string(),
916
+ isVoiceMode: z.boolean(), // Mode when audio was generated (for drift protection)
917
+ groupId: z.string().optional(), // Logical utterance id
918
+ chunkIndex: z.number().int().nonnegative().optional(),
919
+ isLastChunk: z.boolean().optional(),
920
+ }),
921
+ });
922
+ export const TranscriptionResultMessageSchema = z.object({
923
+ type: z.literal("transcription_result"),
924
+ payload: z.object({
925
+ text: z.string(),
926
+ language: z.string().optional(),
927
+ duration: z.number().optional(),
928
+ requestId: z.string(), // Echoed back from request for tracking
929
+ avgLogprob: z.number().optional(),
930
+ isLowConfidence: z.boolean().optional(),
931
+ byteLength: z.number().optional(),
932
+ format: z.string().optional(),
933
+ debugRecordingPath: z.string().optional(),
934
+ }),
935
+ });
936
+ export const DictationStreamAckMessageSchema = z.object({
937
+ type: z.literal("dictation_stream_ack"),
938
+ payload: z.object({
939
+ dictationId: z.string(),
940
+ ackSeq: z.number().int(),
941
+ }),
942
+ });
943
+ export const DictationStreamPartialMessageSchema = z.object({
944
+ type: z.literal("dictation_stream_partial"),
945
+ payload: z.object({
946
+ dictationId: z.string(),
947
+ text: z.string(),
948
+ }),
949
+ });
950
+ export const DictationStreamFinalMessageSchema = z.object({
951
+ type: z.literal("dictation_stream_final"),
952
+ payload: z.object({
953
+ dictationId: z.string(),
954
+ text: z.string(),
955
+ debugRecordingPath: z.string().optional(),
956
+ }),
957
+ });
958
+ export const DictationStreamErrorMessageSchema = z.object({
959
+ type: z.literal("dictation_stream_error"),
960
+ payload: z.object({
961
+ dictationId: z.string(),
962
+ error: z.string(),
963
+ retryable: z.boolean(),
964
+ debugRecordingPath: z.string().optional(),
965
+ }),
966
+ });
967
+ export const StatusMessageSchema = z.object({
968
+ type: z.literal("status"),
969
+ payload: z
970
+ .object({
971
+ status: z.string(),
972
+ })
973
+ .passthrough(), // Allow additional fields
974
+ });
975
+ export const PongMessageSchema = z.object({
976
+ type: z.literal("pong"),
977
+ payload: z.object({
978
+ requestId: z.string(),
979
+ clientSentAt: z.number().int().optional(),
980
+ serverReceivedAt: z.number().int(),
981
+ serverSentAt: z.number().int(),
982
+ }),
983
+ });
984
+ export const RpcErrorMessageSchema = z.object({
985
+ type: z.literal("rpc_error"),
986
+ payload: z.object({
987
+ requestId: z.string(),
988
+ requestType: z.string().optional(),
989
+ error: z.string(),
990
+ code: z.string().optional(),
991
+ }),
992
+ });
993
+ const AgentStatusWithRequestSchema = z.object({
994
+ agentId: z.string(),
995
+ requestId: z.string(),
996
+ });
997
+ const AgentStatusWithTimelineSchema = AgentStatusWithRequestSchema.extend({
998
+ timelineSize: z.number().optional(),
999
+ });
1000
+ export const AgentCreatedStatusPayloadSchema = z
1001
+ .object({
1002
+ status: z.literal("agent_created"),
1003
+ agent: AgentSnapshotPayloadSchema,
1004
+ })
1005
+ .extend(AgentStatusWithRequestSchema.shape);
1006
+ export const AgentCreateFailedStatusPayloadSchema = z.object({
1007
+ status: z.literal("agent_create_failed"),
1008
+ requestId: z.string(),
1009
+ error: z.string(),
1010
+ });
1011
+ export const AgentResumedStatusPayloadSchema = z
1012
+ .object({
1013
+ status: z.literal("agent_resumed"),
1014
+ agent: AgentSnapshotPayloadSchema,
1015
+ })
1016
+ .extend(AgentStatusWithTimelineSchema.shape);
1017
+ export const AgentRefreshedStatusPayloadSchema = z
1018
+ .object({
1019
+ status: z.literal("agent_refreshed"),
1020
+ })
1021
+ .extend(AgentStatusWithTimelineSchema.shape);
1022
+ export const RestartRequestedStatusPayloadSchema = z.object({
1023
+ status: z.literal("restart_requested"),
1024
+ clientId: z.string(),
1025
+ reason: z.string().optional(),
1026
+ requestId: z.string(),
1027
+ });
1028
+ export const KnownStatusPayloadSchema = z.discriminatedUnion("status", [
1029
+ AgentCreatedStatusPayloadSchema,
1030
+ AgentCreateFailedStatusPayloadSchema,
1031
+ AgentResumedStatusPayloadSchema,
1032
+ AgentRefreshedStatusPayloadSchema,
1033
+ RestartRequestedStatusPayloadSchema,
1034
+ ]);
1035
+ export const ArtifactMessageSchema = z.object({
1036
+ type: z.literal("artifact"),
1037
+ payload: z.object({
1038
+ type: z.enum(["markdown", "diff", "image", "code"]),
1039
+ id: z.string(),
1040
+ title: z.string(),
1041
+ content: z.string(),
1042
+ isBase64: z.boolean(),
1043
+ }),
1044
+ });
1045
+ export const ProjectCheckoutLiteNotGitPayloadSchema = z.object({
1046
+ cwd: z.string(),
1047
+ isGit: z.literal(false),
1048
+ currentBranch: z.null(),
1049
+ remoteUrl: z.null(),
1050
+ isPaseoOwnedWorktree: z.literal(false),
1051
+ mainRepoRoot: z.null(),
1052
+ });
1053
+ export const ProjectCheckoutLiteGitNonPaseoPayloadSchema = z.object({
1054
+ cwd: z.string(),
1055
+ isGit: z.literal(true),
1056
+ currentBranch: z.string().nullable(),
1057
+ remoteUrl: z.string().nullable(),
1058
+ isPaseoOwnedWorktree: z.literal(false),
1059
+ mainRepoRoot: z.null(),
1060
+ });
1061
+ export const ProjectCheckoutLiteGitPaseoPayloadSchema = z.object({
1062
+ cwd: z.string(),
1063
+ isGit: z.literal(true),
1064
+ currentBranch: z.string().nullable(),
1065
+ remoteUrl: z.string().nullable(),
1066
+ isPaseoOwnedWorktree: z.literal(true),
1067
+ mainRepoRoot: z.string(),
1068
+ });
1069
+ export const ProjectCheckoutLitePayloadSchema = z.union([
1070
+ ProjectCheckoutLiteNotGitPayloadSchema,
1071
+ ProjectCheckoutLiteGitNonPaseoPayloadSchema,
1072
+ ProjectCheckoutLiteGitPaseoPayloadSchema,
1073
+ ]);
1074
+ export const ProjectPlacementPayloadSchema = z.object({
1075
+ projectKey: z.string(),
1076
+ projectName: z.string(),
1077
+ checkout: ProjectCheckoutLitePayloadSchema,
1078
+ });
1079
+ export const AgentUpdateMessageSchema = z.object({
1080
+ type: z.literal("agent_update"),
1081
+ payload: z.discriminatedUnion("kind", [
1082
+ z.object({
1083
+ kind: z.literal("upsert"),
1084
+ agent: AgentSnapshotPayloadSchema,
1085
+ project: ProjectPlacementPayloadSchema,
1086
+ }),
1087
+ z.object({
1088
+ kind: z.literal("remove"),
1089
+ agentId: z.string(),
1090
+ }),
1091
+ ]),
1092
+ });
1093
+ export const AgentStreamMessageSchema = z.object({
1094
+ type: z.literal("agent_stream"),
1095
+ payload: z.object({
1096
+ agentId: z.string(),
1097
+ event: AgentStreamEventPayloadSchema,
1098
+ timestamp: z.string(),
1099
+ }),
1100
+ });
1101
+ export const AgentStreamSnapshotMessageSchema = z.object({
1102
+ type: z.literal("agent_stream_snapshot"),
1103
+ payload: z.object({
1104
+ agentId: z.string(),
1105
+ events: z.array(z.object({
1106
+ event: AgentStreamEventPayloadSchema,
1107
+ timestamp: z.string(),
1108
+ })),
1109
+ }),
1110
+ });
1111
+ export const AgentStatusMessageSchema = z.object({
1112
+ type: z.literal("agent_status"),
1113
+ payload: z.object({
1114
+ agentId: z.string(),
1115
+ status: z.string(),
1116
+ info: AgentSnapshotPayloadSchema,
1117
+ }),
1118
+ });
1119
+ export const AgentListMessageSchema = z.object({
1120
+ type: z.literal("agent_list"),
1121
+ payload: z.object({
1122
+ agents: z.array(AgentSnapshotPayloadSchema),
1123
+ }),
1124
+ });
1125
+ export const FetchAgentsResponseMessageSchema = z.object({
1126
+ type: z.literal("fetch_agents_response"),
1127
+ payload: z.object({
1128
+ requestId: z.string(),
1129
+ agents: z.array(AgentSnapshotPayloadSchema),
1130
+ }),
1131
+ });
1132
+ const ProjectGroupedAgentEntryPayloadSchema = z.object({
1133
+ agent: AgentSnapshotPayloadSchema,
1134
+ checkout: ProjectCheckoutLitePayloadSchema,
1135
+ });
1136
+ const ProjectGroupPayloadSchema = z.object({
1137
+ projectKey: z.string(),
1138
+ projectName: z.string(),
1139
+ agents: z.array(ProjectGroupedAgentEntryPayloadSchema),
1140
+ });
1141
+ export const FetchAgentsGroupedByProjectResponseMessageSchema = z.object({
1142
+ type: z.literal("fetch_agents_grouped_by_project_response"),
1143
+ payload: z.object({
1144
+ requestId: z.string(),
1145
+ groups: z.array(ProjectGroupPayloadSchema),
1146
+ }),
1147
+ });
1148
+ export const FetchAgentResponseMessageSchema = z.object({
1149
+ type: z.literal("fetch_agent_response"),
1150
+ payload: z.object({
1151
+ requestId: z.string(),
1152
+ agent: AgentSnapshotPayloadSchema.nullable(),
1153
+ error: z.string().nullable(),
1154
+ }),
1155
+ });
1156
+ export const SendAgentMessageResponseMessageSchema = z.object({
1157
+ type: z.literal("send_agent_message_response"),
1158
+ payload: z.object({
1159
+ requestId: z.string(),
1160
+ agentId: z.string(),
1161
+ accepted: z.boolean(),
1162
+ error: z.string().nullable(),
1163
+ }),
1164
+ });
1165
+ export const WaitForFinishResponseMessageSchema = z.object({
1166
+ type: z.literal("wait_for_finish_response"),
1167
+ payload: z.object({
1168
+ requestId: z.string(),
1169
+ status: z.enum(["idle", "error", "permission", "timeout"]),
1170
+ final: AgentSnapshotPayloadSchema.nullable(),
1171
+ error: z.string().nullable(),
1172
+ }),
1173
+ });
1174
+ export const AgentPermissionRequestMessageSchema = z.object({
1175
+ type: z.literal("agent_permission_request"),
1176
+ payload: z.object({
1177
+ agentId: z.string(),
1178
+ request: AgentPermissionRequestPayloadSchema,
1179
+ }),
1180
+ });
1181
+ export const AgentPermissionResolvedMessageSchema = z.object({
1182
+ type: z.literal("agent_permission_resolved"),
1183
+ payload: z.object({
1184
+ agentId: z.string(),
1185
+ requestId: z.string(),
1186
+ resolution: AgentPermissionResponseSchema,
1187
+ }),
1188
+ });
1189
+ export const AgentDeletedMessageSchema = z.object({
1190
+ type: z.literal("agent_deleted"),
1191
+ payload: z.object({
1192
+ agentId: z.string(),
1193
+ requestId: z.string(),
1194
+ }),
1195
+ });
1196
+ export const AgentArchivedMessageSchema = z.object({
1197
+ type: z.literal("agent_archived"),
1198
+ payload: z.object({
1199
+ agentId: z.string(),
1200
+ archivedAt: z.string(),
1201
+ requestId: z.string(),
1202
+ }),
1203
+ });
1204
+ export const GitDiffResponseSchema = z.object({
1205
+ type: z.literal("git_diff_response"),
1206
+ payload: z.object({
1207
+ agentId: z.string(),
1208
+ diff: z.string(),
1209
+ error: z.string().nullable(),
1210
+ requestId: z.string(),
1211
+ }),
1212
+ });
1213
+ const AheadBehindSchema = z.object({
1214
+ ahead: z.number(),
1215
+ behind: z.number(),
1216
+ });
1217
+ const CheckoutStatusCommonSchema = z.object({
1218
+ cwd: z.string(),
1219
+ error: CheckoutErrorSchema.nullable(),
1220
+ requestId: z.string(),
1221
+ });
1222
+ const CheckoutStatusNotGitSchema = CheckoutStatusCommonSchema.extend({
1223
+ isGit: z.literal(false),
1224
+ isPaseoOwnedWorktree: z.literal(false),
1225
+ repoRoot: z.null(),
1226
+ currentBranch: z.null(),
1227
+ isDirty: z.null(),
1228
+ baseRef: z.null(),
1229
+ aheadBehind: z.null(),
1230
+ aheadOfOrigin: z.null(),
1231
+ hasRemote: z.boolean(),
1232
+ remoteUrl: z.null(),
1233
+ });
1234
+ const CheckoutStatusGitNonPaseoSchema = CheckoutStatusCommonSchema.extend({
1235
+ isGit: z.literal(true),
1236
+ isPaseoOwnedWorktree: z.literal(false),
1237
+ repoRoot: z.string(),
1238
+ currentBranch: z.string().nullable(),
1239
+ isDirty: z.boolean(),
1240
+ baseRef: z.string().nullable(),
1241
+ aheadBehind: AheadBehindSchema.nullable(),
1242
+ aheadOfOrigin: z.number().nullable(),
1243
+ hasRemote: z.boolean(),
1244
+ remoteUrl: z.string().nullable(),
1245
+ });
1246
+ const CheckoutStatusGitPaseoSchema = CheckoutStatusCommonSchema.extend({
1247
+ isGit: z.literal(true),
1248
+ isPaseoOwnedWorktree: z.literal(true),
1249
+ repoRoot: z.string(),
1250
+ mainRepoRoot: z.string(),
1251
+ currentBranch: z.string().nullable(),
1252
+ isDirty: z.boolean(),
1253
+ baseRef: z.string(),
1254
+ aheadBehind: AheadBehindSchema.nullable(),
1255
+ aheadOfOrigin: z.number().nullable(),
1256
+ hasRemote: z.boolean(),
1257
+ remoteUrl: z.string().nullable(),
1258
+ });
1259
+ export const CheckoutStatusResponseSchema = z.object({
1260
+ type: z.literal("checkout_status_response"),
1261
+ payload: z.union([
1262
+ CheckoutStatusNotGitSchema,
1263
+ CheckoutStatusGitNonPaseoSchema,
1264
+ CheckoutStatusGitPaseoSchema,
1265
+ ]),
1266
+ });
1267
+ const CheckoutDiffSubscriptionPayloadSchema = z.object({
1268
+ subscriptionId: z.string(),
1269
+ cwd: z.string(),
1270
+ files: z.array(ParsedDiffFileSchema),
1271
+ error: CheckoutErrorSchema.nullable(),
1272
+ });
1273
+ export const SubscribeCheckoutDiffResponseSchema = z.object({
1274
+ type: z.literal("subscribe_checkout_diff_response"),
1275
+ payload: CheckoutDiffSubscriptionPayloadSchema.extend({
1276
+ requestId: z.string(),
1277
+ }),
1278
+ });
1279
+ export const CheckoutDiffUpdateSchema = z.object({
1280
+ type: z.literal("checkout_diff_update"),
1281
+ payload: CheckoutDiffSubscriptionPayloadSchema,
1282
+ });
1283
+ export const CheckoutCommitResponseSchema = z.object({
1284
+ type: z.literal("checkout_commit_response"),
1285
+ payload: z.object({
1286
+ cwd: z.string(),
1287
+ success: z.boolean(),
1288
+ error: CheckoutErrorSchema.nullable(),
1289
+ requestId: z.string(),
1290
+ }),
1291
+ });
1292
+ export const CheckoutMergeResponseSchema = z.object({
1293
+ type: z.literal("checkout_merge_response"),
1294
+ payload: z.object({
1295
+ cwd: z.string(),
1296
+ success: z.boolean(),
1297
+ error: CheckoutErrorSchema.nullable(),
1298
+ requestId: z.string(),
1299
+ }),
1300
+ });
1301
+ export const CheckoutMergeFromBaseResponseSchema = z.object({
1302
+ type: z.literal("checkout_merge_from_base_response"),
1303
+ payload: z.object({
1304
+ cwd: z.string(),
1305
+ success: z.boolean(),
1306
+ error: CheckoutErrorSchema.nullable(),
1307
+ requestId: z.string(),
1308
+ }),
1309
+ });
1310
+ export const CheckoutPushResponseSchema = z.object({
1311
+ type: z.literal("checkout_push_response"),
1312
+ payload: z.object({
1313
+ cwd: z.string(),
1314
+ success: z.boolean(),
1315
+ error: CheckoutErrorSchema.nullable(),
1316
+ requestId: z.string(),
1317
+ }),
1318
+ });
1319
+ export const CheckoutPrCreateResponseSchema = z.object({
1320
+ type: z.literal("checkout_pr_create_response"),
1321
+ payload: z.object({
1322
+ cwd: z.string(),
1323
+ url: z.string().nullable(),
1324
+ number: z.number().nullable(),
1325
+ error: CheckoutErrorSchema.nullable(),
1326
+ requestId: z.string(),
1327
+ }),
1328
+ });
1329
+ const CheckoutPrStatusSchema = z.object({
1330
+ url: z.string(),
1331
+ title: z.string(),
1332
+ state: z.string(),
1333
+ baseRefName: z.string(),
1334
+ headRefName: z.string(),
1335
+ });
1336
+ export const CheckoutPrStatusResponseSchema = z.object({
1337
+ type: z.literal("checkout_pr_status_response"),
1338
+ payload: z.object({
1339
+ cwd: z.string(),
1340
+ status: CheckoutPrStatusSchema.nullable(),
1341
+ error: CheckoutErrorSchema.nullable(),
1342
+ requestId: z.string(),
1343
+ }),
1344
+ });
1345
+ export const ValidateBranchResponseSchema = z.object({
1346
+ type: z.literal("validate_branch_response"),
1347
+ payload: z.object({
1348
+ exists: z.boolean(),
1349
+ resolvedRef: z.string().nullable(),
1350
+ isRemote: z.boolean(),
1351
+ error: z.string().nullable(),
1352
+ requestId: z.string(),
1353
+ }),
1354
+ });
1355
+ const PaseoWorktreeSchema = z.object({
1356
+ worktreePath: z.string(),
1357
+ branchName: z.string().nullable().optional(),
1358
+ head: z.string().nullable().optional(),
1359
+ });
1360
+ export const PaseoWorktreeListResponseSchema = z.object({
1361
+ type: z.literal("paseo_worktree_list_response"),
1362
+ payload: z.object({
1363
+ worktrees: z.array(PaseoWorktreeSchema),
1364
+ error: CheckoutErrorSchema.nullable(),
1365
+ requestId: z.string(),
1366
+ }),
1367
+ });
1368
+ export const PaseoWorktreeArchiveResponseSchema = z.object({
1369
+ type: z.literal("paseo_worktree_archive_response"),
1370
+ payload: z.object({
1371
+ success: z.boolean(),
1372
+ removedAgents: z.array(z.string()).optional(),
1373
+ error: CheckoutErrorSchema.nullable(),
1374
+ requestId: z.string(),
1375
+ }),
1376
+ });
1377
+ export const HighlightedDiffResponseSchema = z.object({
1378
+ type: z.literal("highlighted_diff_response"),
1379
+ payload: z.object({
1380
+ agentId: z.string(),
1381
+ files: z.array(ParsedDiffFileSchema),
1382
+ error: z.string().nullable(),
1383
+ requestId: z.string(),
1384
+ }),
1385
+ });
1386
+ export const FileExplorerResponseSchema = z.object({
1387
+ type: z.literal("file_explorer_response"),
1388
+ payload: z.object({
1389
+ agentId: z.string(),
1390
+ path: z.string(),
1391
+ mode: z.enum(["list", "file"]),
1392
+ directory: FileExplorerDirectorySchema.nullable(),
1393
+ file: FileExplorerFileSchema.nullable(),
1394
+ error: z.string().nullable(),
1395
+ requestId: z.string(),
1396
+ }),
1397
+ });
1398
+ const ProjectIconSchema = z.object({
1399
+ data: z.string(),
1400
+ mimeType: z.string(),
1401
+ });
1402
+ export const ProjectIconResponseSchema = z.object({
1403
+ type: z.literal("project_icon_response"),
1404
+ payload: z.object({
1405
+ cwd: z.string(),
1406
+ icon: ProjectIconSchema.nullable(),
1407
+ error: z.string().nullable(),
1408
+ requestId: z.string(),
1409
+ }),
1410
+ });
1411
+ export const FileDownloadTokenResponseSchema = z.object({
1412
+ type: z.literal("file_download_token_response"),
1413
+ payload: z.object({
1414
+ agentId: z.string(),
1415
+ path: z.string(),
1416
+ token: z.string().nullable(),
1417
+ fileName: z.string().nullable(),
1418
+ mimeType: z.string().nullable(),
1419
+ size: z.number().nullable(),
1420
+ error: z.string().nullable(),
1421
+ requestId: z.string(),
1422
+ }),
1423
+ });
1424
+ export const ListProviderModelsResponseMessageSchema = z.object({
1425
+ type: z.literal("list_provider_models_response"),
1426
+ payload: z.object({
1427
+ provider: AgentProviderSchema,
1428
+ models: z.array(AgentModelDefinitionSchema).optional(),
1429
+ error: z.string().nullable().optional(),
1430
+ fetchedAt: z.string(),
1431
+ requestId: z.string(),
1432
+ }),
1433
+ });
1434
+ export const SpeechModelsListResponseSchema = z.object({
1435
+ type: z.literal("speech_models_list_response"),
1436
+ payload: z.object({
1437
+ modelsDir: z.string(),
1438
+ models: z.array(z.object({
1439
+ id: z.string(),
1440
+ kind: z.string(),
1441
+ description: z.string(),
1442
+ modelDir: z.string(),
1443
+ isDownloaded: z.boolean(),
1444
+ missingFiles: z.array(z.string()).optional(),
1445
+ })),
1446
+ requestId: z.string(),
1447
+ }),
1448
+ });
1449
+ export const SpeechModelsDownloadResponseSchema = z.object({
1450
+ type: z.literal("speech_models_download_response"),
1451
+ payload: z.object({
1452
+ modelsDir: z.string(),
1453
+ downloadedModelIds: z.array(z.string()),
1454
+ error: z.string().nullable(),
1455
+ requestId: z.string(),
1456
+ }),
1457
+ });
1458
+ const AgentSlashCommandSchema = z.object({
1459
+ name: z.string(),
1460
+ description: z.string(),
1461
+ argumentHint: z.string(),
1462
+ });
1463
+ export const ListCommandsResponseSchema = z.object({
1464
+ type: z.literal("list_commands_response"),
1465
+ payload: z.object({
1466
+ agentId: z.string(),
1467
+ commands: z.array(AgentSlashCommandSchema),
1468
+ error: z.string().nullable(),
1469
+ requestId: z.string(),
1470
+ }),
1471
+ });
1472
+ const AgentCommandResultSchema = z.object({
1473
+ text: z.string(),
1474
+ timeline: z.array(AgentTimelineItemPayloadSchema),
1475
+ usage: AgentUsageSchema.optional(),
1476
+ });
1477
+ export const ExecuteCommandResponseSchema = z.object({
1478
+ type: z.literal("execute_command_response"),
1479
+ payload: z.object({
1480
+ agentId: z.string(),
1481
+ result: AgentCommandResultSchema.nullable(),
1482
+ error: z.string().nullable(),
1483
+ requestId: z.string(),
1484
+ }),
1485
+ });
1486
+ // ============================================================================
1487
+ // Terminal Outbound Messages
1488
+ // ============================================================================
1489
+ const TerminalInfoSchema = z.object({
1490
+ id: z.string(),
1491
+ name: z.string(),
1492
+ cwd: z.string(),
1493
+ });
1494
+ const TerminalCellSchema = z.object({
1495
+ char: z.string(),
1496
+ fg: z.number().optional(),
1497
+ bg: z.number().optional(),
1498
+ fgMode: z.number().optional(),
1499
+ bgMode: z.number().optional(),
1500
+ bold: z.boolean().optional(),
1501
+ italic: z.boolean().optional(),
1502
+ underline: z.boolean().optional(),
1503
+ });
1504
+ const TerminalStateSchema = z.object({
1505
+ rows: z.number(),
1506
+ cols: z.number(),
1507
+ grid: z.array(z.array(TerminalCellSchema)),
1508
+ scrollback: z.array(z.array(TerminalCellSchema)),
1509
+ cursor: z.object({ row: z.number(), col: z.number() }),
1510
+ });
1511
+ export const ListTerminalsResponseSchema = z.object({
1512
+ type: z.literal("list_terminals_response"),
1513
+ payload: z.object({
1514
+ cwd: z.string(),
1515
+ terminals: z.array(TerminalInfoSchema.omit({ cwd: true })),
1516
+ requestId: z.string(),
1517
+ }),
1518
+ });
1519
+ export const CreateTerminalResponseSchema = z.object({
1520
+ type: z.literal("create_terminal_response"),
1521
+ payload: z.object({
1522
+ terminal: TerminalInfoSchema.nullable(),
1523
+ error: z.string().nullable(),
1524
+ requestId: z.string(),
1525
+ }),
1526
+ });
1527
+ export const SubscribeTerminalResponseSchema = z.object({
1528
+ type: z.literal("subscribe_terminal_response"),
1529
+ payload: z.object({
1530
+ terminalId: z.string(),
1531
+ state: TerminalStateSchema.nullable(),
1532
+ error: z.string().nullable(),
1533
+ requestId: z.string(),
1534
+ }),
1535
+ });
1536
+ export const TerminalOutputSchema = z.object({
1537
+ type: z.literal("terminal_output"),
1538
+ payload: z.object({
1539
+ terminalId: z.string(),
1540
+ state: TerminalStateSchema,
1541
+ }),
1542
+ });
1543
+ export const KillTerminalResponseSchema = z.object({
1544
+ type: z.literal("kill_terminal_response"),
1545
+ payload: z.object({
1546
+ terminalId: z.string(),
1547
+ success: z.boolean(),
1548
+ requestId: z.string(),
1549
+ }),
1550
+ });
1551
+ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
1552
+ ActivityLogMessageSchema,
1553
+ AssistantChunkMessageSchema,
1554
+ AudioOutputMessageSchema,
1555
+ TranscriptionResultMessageSchema,
1556
+ DictationStreamAckMessageSchema,
1557
+ DictationStreamPartialMessageSchema,
1558
+ DictationStreamFinalMessageSchema,
1559
+ DictationStreamErrorMessageSchema,
1560
+ StatusMessageSchema,
1561
+ PongMessageSchema,
1562
+ RpcErrorMessageSchema,
1563
+ InitializeAgentResponseMessageSchema,
1564
+ ArtifactMessageSchema,
1565
+ AgentUpdateMessageSchema,
1566
+ AgentStreamMessageSchema,
1567
+ AgentStreamSnapshotMessageSchema,
1568
+ AgentStatusMessageSchema,
1569
+ FetchAgentsResponseMessageSchema,
1570
+ FetchAgentsGroupedByProjectResponseMessageSchema,
1571
+ FetchAgentResponseMessageSchema,
1572
+ SendAgentMessageResponseMessageSchema,
1573
+ SetVoiceModeResponseMessageSchema,
1574
+ SetAgentModeResponseMessageSchema,
1575
+ SetAgentModelResponseMessageSchema,
1576
+ SetAgentThinkingResponseMessageSchema,
1577
+ WaitForFinishResponseMessageSchema,
1578
+ AgentPermissionRequestMessageSchema,
1579
+ AgentPermissionResolvedMessageSchema,
1580
+ AgentDeletedMessageSchema,
1581
+ AgentArchivedMessageSchema,
1582
+ GitDiffResponseSchema,
1583
+ CheckoutStatusResponseSchema,
1584
+ SubscribeCheckoutDiffResponseSchema,
1585
+ CheckoutDiffUpdateSchema,
1586
+ CheckoutCommitResponseSchema,
1587
+ CheckoutMergeResponseSchema,
1588
+ CheckoutMergeFromBaseResponseSchema,
1589
+ CheckoutPushResponseSchema,
1590
+ CheckoutPrCreateResponseSchema,
1591
+ CheckoutPrStatusResponseSchema,
1592
+ ValidateBranchResponseSchema,
1593
+ PaseoWorktreeListResponseSchema,
1594
+ PaseoWorktreeArchiveResponseSchema,
1595
+ HighlightedDiffResponseSchema,
1596
+ FileExplorerResponseSchema,
1597
+ ProjectIconResponseSchema,
1598
+ FileDownloadTokenResponseSchema,
1599
+ ListProviderModelsResponseMessageSchema,
1600
+ SpeechModelsListResponseSchema,
1601
+ SpeechModelsDownloadResponseSchema,
1602
+ ListCommandsResponseSchema,
1603
+ ExecuteCommandResponseSchema,
1604
+ ListTerminalsResponseSchema,
1605
+ CreateTerminalResponseSchema,
1606
+ SubscribeTerminalResponseSchema,
1607
+ TerminalOutputSchema,
1608
+ KillTerminalResponseSchema,
1609
+ ]);
1610
+ // ============================================================================
1611
+ // WebSocket Level Messages (wraps session messages)
1612
+ // ============================================================================
1613
+ // WebSocket-only messages (not session messages)
1614
+ export const WSPingMessageSchema = z.object({
1615
+ type: z.literal("ping"),
1616
+ });
1617
+ export const WSPongMessageSchema = z.object({
1618
+ type: z.literal("pong"),
1619
+ });
1620
+ export const WSRecordingStateMessageSchema = z.object({
1621
+ type: z.literal("recording_state"),
1622
+ isRecording: z.boolean(),
1623
+ });
1624
+ // Wrapped session message
1625
+ export const WSSessionInboundSchema = z.object({
1626
+ type: z.literal("session"),
1627
+ message: SessionInboundMessageSchema,
1628
+ });
1629
+ export const WSSessionOutboundSchema = z.object({
1630
+ type: z.literal("session"),
1631
+ message: SessionOutboundMessageSchema,
1632
+ });
1633
+ // Complete WebSocket message schemas
1634
+ export const WSInboundMessageSchema = z.discriminatedUnion("type", [
1635
+ WSPingMessageSchema,
1636
+ WSRecordingStateMessageSchema,
1637
+ WSSessionInboundSchema,
1638
+ ]);
1639
+ export const WSOutboundMessageSchema = z.discriminatedUnion("type", [
1640
+ WSPongMessageSchema,
1641
+ WSSessionOutboundSchema,
1642
+ ]);
1643
+ // ============================================================================
1644
+ // Helper functions for message conversion
1645
+ // ============================================================================
1646
+ /**
1647
+ * Extract session message from WebSocket message
1648
+ * Returns null if message should be handled at WS level only
1649
+ */
1650
+ export function extractSessionMessage(wsMsg) {
1651
+ if (wsMsg.type === "session") {
1652
+ return wsMsg.message;
1653
+ }
1654
+ // Ping and recording_state are WS-level only
1655
+ return null;
1656
+ }
1657
+ /**
1658
+ * Wrap session message in WebSocket envelope
1659
+ */
1660
+ export function wrapSessionMessage(sessionMsg) {
1661
+ return {
1662
+ type: "session",
1663
+ message: sessionMsg,
1664
+ };
1665
+ }
1666
+ //# sourceMappingURL=messages.js.map