@getpaseo/server 0.1.58 → 0.1.60

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 (276) hide show
  1. package/dist/scripts/dev-runner.js +26 -7
  2. package/dist/scripts/dev-runner.js.map +1 -1
  3. package/dist/server/client/daemon-client-runtime-metrics.d.ts +39 -0
  4. package/dist/server/client/daemon-client-runtime-metrics.d.ts.map +1 -0
  5. package/dist/server/client/daemon-client-runtime-metrics.js +173 -0
  6. package/dist/server/client/daemon-client-runtime-metrics.js.map +1 -0
  7. package/dist/server/client/daemon-client.d.ts +58 -9
  8. package/dist/server/client/daemon-client.d.ts.map +1 -1
  9. package/dist/server/client/daemon-client.js +151 -10
  10. package/dist/server/client/daemon-client.js.map +1 -1
  11. package/dist/server/server/agent/agent-manager.d.ts +55 -48
  12. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  13. package/dist/server/server/agent/agent-manager.js +541 -331
  14. package/dist/server/server/agent/agent-manager.js.map +1 -1
  15. package/dist/server/server/agent/agent-metadata-generator.d.ts +3 -2
  16. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
  17. package/dist/server/server/agent/agent-metadata-generator.js +31 -16
  18. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  19. package/dist/server/server/agent/agent-projections.d.ts +2 -1
  20. package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
  21. package/dist/server/server/agent/agent-projections.js +29 -1
  22. package/dist/server/server/agent/agent-projections.js.map +1 -1
  23. package/dist/server/server/agent/agent-sdk-types.d.ts +9 -5
  24. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  25. package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
  26. package/dist/server/server/agent/agent-storage.d.ts +76 -69
  27. package/dist/server/server/agent/agent-storage.d.ts.map +1 -1
  28. package/dist/server/server/agent/agent-storage.js +13 -6
  29. package/dist/server/server/agent/agent-storage.js.map +1 -1
  30. package/dist/server/server/agent/agent-stream-coalescer.d.ts +41 -0
  31. package/dist/server/server/agent/agent-stream-coalescer.d.ts.map +1 -0
  32. package/dist/server/server/agent/agent-stream-coalescer.js +166 -0
  33. package/dist/server/server/agent/agent-stream-coalescer.js.map +1 -0
  34. package/dist/server/server/agent/agent-timeline-store-types.d.ts +54 -0
  35. package/dist/server/server/agent/agent-timeline-store-types.d.ts.map +1 -0
  36. package/dist/server/server/agent/agent-timeline-store-types.js +2 -0
  37. package/dist/server/server/agent/agent-timeline-store-types.js.map +1 -0
  38. package/dist/server/server/agent/agent-timeline-store.d.ts +32 -0
  39. package/dist/server/server/agent/agent-timeline-store.d.ts.map +1 -0
  40. package/dist/server/server/agent/agent-timeline-store.js +245 -0
  41. package/dist/server/server/agent/agent-timeline-store.js.map +1 -0
  42. package/dist/server/server/agent/mcp-server.d.ts +12 -1
  43. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  44. package/dist/server/server/agent/mcp-server.js +276 -65
  45. package/dist/server/server/agent/mcp-server.js.map +1 -1
  46. package/dist/server/server/agent/mcp-shared.d.ts +196 -152
  47. package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
  48. package/dist/server/server/agent/mcp-shared.js +40 -42
  49. package/dist/server/server/agent/mcp-shared.js.map +1 -1
  50. package/dist/server/server/agent/model-resolver.d.ts.map +1 -1
  51. package/dist/server/server/agent/model-resolver.js +3 -1
  52. package/dist/server/server/agent/model-resolver.js.map +1 -1
  53. package/dist/server/server/agent/prompt-attachments.d.ts +6 -0
  54. package/dist/server/server/agent/prompt-attachments.d.ts.map +1 -0
  55. package/dist/server/server/agent/prompt-attachments.js +31 -0
  56. package/dist/server/server/agent/prompt-attachments.js.map +1 -0
  57. package/dist/server/server/agent/provider-launch-config.d.ts +12 -10
  58. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
  59. package/dist/server/server/agent/provider-launch-config.js +34 -0
  60. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  61. package/dist/server/server/agent/provider-manifest.d.ts +1 -0
  62. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  63. package/dist/server/server/agent/provider-manifest.js +22 -1
  64. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  65. package/dist/server/server/agent/provider-registry.d.ts +5 -2
  66. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  67. package/dist/server/server/agent/provider-registry.js +20 -9
  68. package/dist/server/server/agent/provider-registry.js.map +1 -1
  69. package/dist/server/server/agent/provider-snapshot-manager.d.ts +17 -5
  70. package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -1
  71. package/dist/server/server/agent/provider-snapshot-manager.js +150 -61
  72. package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
  73. package/dist/server/server/agent/providers/acp-agent.d.ts +8 -4
  74. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
  75. package/dist/server/server/agent/providers/acp-agent.js +73 -8
  76. package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
  77. package/dist/server/server/agent/providers/claude/claude-models.d.ts.map +1 -1
  78. package/dist/server/server/agent/providers/claude/claude-models.js +21 -0
  79. package/dist/server/server/agent/providers/claude/claude-models.js.map +1 -1
  80. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +2 -2
  81. package/dist/server/server/agent/providers/claude-agent.d.ts +1 -1
  82. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  83. package/dist/server/server/agent/providers/claude-agent.js +15 -8
  84. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  85. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +37 -4
  86. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  87. package/dist/server/server/agent/providers/codex-app-server-agent.js +61 -31
  88. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  89. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts.map +1 -1
  90. package/dist/server/server/agent/providers/copilot-acp-agent.js +3 -2
  91. package/dist/server/server/agent/providers/copilot-acp-agent.js.map +1 -1
  92. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +64 -0
  93. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts.map +1 -0
  94. package/dist/server/server/agent/providers/mock-load-test-agent.js +585 -0
  95. package/dist/server/server/agent/providers/mock-load-test-agent.js.map +1 -0
  96. package/dist/server/server/agent/providers/opencode-agent.d.ts +19 -4
  97. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  98. package/dist/server/server/agent/providers/opencode-agent.js +227 -118
  99. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  100. package/dist/server/server/agent/providers/pi-direct-agent.d.ts +69 -0
  101. package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -0
  102. package/dist/server/server/agent/providers/pi-direct-agent.js +1177 -0
  103. package/dist/server/server/agent/providers/pi-direct-agent.js.map +1 -0
  104. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +7 -4
  105. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  106. package/dist/server/server/agent-attention-policy.d.ts +13 -13
  107. package/dist/server/server/agent-attention-policy.d.ts.map +1 -1
  108. package/dist/server/server/agent-attention-policy.js +20 -36
  109. package/dist/server/server/agent-attention-policy.js.map +1 -1
  110. package/dist/server/server/bootstrap.d.ts +6 -0
  111. package/dist/server/server/bootstrap.d.ts.map +1 -1
  112. package/dist/server/server/bootstrap.js +113 -11
  113. package/dist/server/server/bootstrap.js.map +1 -1
  114. package/dist/server/server/chat/chat-rpc-schemas.d.ts +44 -44
  115. package/dist/server/server/chat/chat-types.d.ts +6 -6
  116. package/dist/server/server/checkout-diff-manager.d.ts +0 -1
  117. package/dist/server/server/checkout-diff-manager.d.ts.map +1 -1
  118. package/dist/server/server/checkout-diff-manager.js +6 -4
  119. package/dist/server/server/checkout-diff-manager.js.map +1 -1
  120. package/dist/server/server/config.d.ts.map +1 -1
  121. package/dist/server/server/config.js +1 -0
  122. package/dist/server/server/config.js.map +1 -1
  123. package/dist/server/server/file-explorer/service.d.ts.map +1 -1
  124. package/dist/server/server/file-explorer/service.js +2 -1
  125. package/dist/server/server/file-explorer/service.js.map +1 -1
  126. package/dist/server/server/loop/rpc-schemas.d.ts +392 -392
  127. package/dist/server/server/loop-service.d.ts +52 -52
  128. package/dist/server/server/paseo-worktree-archive-service.d.ts +41 -0
  129. package/dist/server/server/paseo-worktree-archive-service.d.ts.map +1 -0
  130. package/dist/server/server/paseo-worktree-archive-service.js +137 -0
  131. package/dist/server/server/paseo-worktree-archive-service.js.map +1 -0
  132. package/dist/server/server/paseo-worktree-service.d.ts +24 -0
  133. package/dist/server/server/paseo-worktree-service.d.ts.map +1 -0
  134. package/dist/server/server/paseo-worktree-service.js +94 -0
  135. package/dist/server/server/paseo-worktree-service.js.map +1 -0
  136. package/dist/server/server/path-utils.d.ts +1 -0
  137. package/dist/server/server/path-utils.d.ts.map +1 -1
  138. package/dist/server/server/path-utils.js +9 -0
  139. package/dist/server/server/path-utils.js.map +1 -1
  140. package/dist/server/server/persisted-config.d.ts +73 -73
  141. package/dist/server/server/persistence-hooks.d.ts.map +1 -1
  142. package/dist/server/server/persistence-hooks.js +3 -0
  143. package/dist/server/server/persistence-hooks.js.map +1 -1
  144. package/dist/server/server/resolve-worktree-creation-intent.d.ts +30 -0
  145. package/dist/server/server/resolve-worktree-creation-intent.d.ts.map +1 -0
  146. package/dist/server/server/resolve-worktree-creation-intent.js +163 -0
  147. package/dist/server/server/resolve-worktree-creation-intent.js.map +1 -0
  148. package/dist/server/server/schedule/rpc-schemas.d.ts +192 -192
  149. package/dist/server/server/schedule/service.d.ts +1 -1
  150. package/dist/server/server/schedule/service.d.ts.map +1 -1
  151. package/dist/server/server/schedule/types.d.ts +44 -44
  152. package/dist/server/server/script-health-monitor.d.ts +39 -0
  153. package/dist/server/server/script-health-monitor.d.ts.map +1 -0
  154. package/dist/server/server/script-health-monitor.js +158 -0
  155. package/dist/server/server/script-health-monitor.js.map +1 -0
  156. package/dist/server/server/script-proxy.d.ts +40 -0
  157. package/dist/server/server/script-proxy.d.ts.map +1 -0
  158. package/dist/server/server/script-proxy.js +245 -0
  159. package/dist/server/server/script-proxy.js.map +1 -0
  160. package/dist/server/server/script-route-branch-handler.d.ts +10 -0
  161. package/dist/server/server/script-route-branch-handler.d.ts.map +1 -0
  162. package/dist/server/server/script-route-branch-handler.js +45 -0
  163. package/dist/server/server/script-route-branch-handler.js.map +1 -0
  164. package/dist/server/server/script-status-projection.d.ts +29 -0
  165. package/dist/server/server/script-status-projection.d.ts.map +1 -0
  166. package/dist/server/server/script-status-projection.js +133 -0
  167. package/dist/server/server/script-status-projection.js.map +1 -0
  168. package/dist/server/server/session.d.ts +77 -13
  169. package/dist/server/server/session.d.ts.map +1 -1
  170. package/dist/server/server/session.js +1290 -548
  171. package/dist/server/server/session.js.map +1 -1
  172. package/dist/server/server/websocket-server.d.ts +27 -3
  173. package/dist/server/server/websocket-server.d.ts.map +1 -1
  174. package/dist/server/server/websocket-server.js +112 -29
  175. package/dist/server/server/websocket-server.js.map +1 -1
  176. package/dist/server/server/workspace-archive-service.d.ts +8 -0
  177. package/dist/server/server/workspace-archive-service.d.ts.map +1 -0
  178. package/dist/server/server/workspace-archive-service.js +17 -0
  179. package/dist/server/server/workspace-archive-service.js.map +1 -0
  180. package/dist/server/server/workspace-git-metadata.d.ts +24 -0
  181. package/dist/server/server/workspace-git-metadata.d.ts.map +1 -0
  182. package/dist/server/server/workspace-git-metadata.js +78 -0
  183. package/dist/server/server/workspace-git-metadata.js.map +1 -0
  184. package/dist/server/server/workspace-git-service.d.ts +104 -5
  185. package/dist/server/server/workspace-git-service.d.ts.map +1 -1
  186. package/dist/server/server/workspace-git-service.js +442 -56
  187. package/dist/server/server/workspace-git-service.js.map +1 -1
  188. package/dist/server/server/workspace-reconciliation-service.d.ts +54 -0
  189. package/dist/server/server/workspace-reconciliation-service.d.ts.map +1 -0
  190. package/dist/server/server/workspace-reconciliation-service.js +176 -0
  191. package/dist/server/server/workspace-reconciliation-service.js.map +1 -0
  192. package/dist/server/server/workspace-registry-bootstrap.d.ts.map +1 -1
  193. package/dist/server/server/workspace-registry-bootstrap.js +4 -3
  194. package/dist/server/server/workspace-registry-bootstrap.js.map +1 -1
  195. package/dist/server/server/workspace-registry.d.ts +8 -8
  196. package/dist/server/server/workspace-registry.test-helpers.d.ts +37 -0
  197. package/dist/server/server/workspace-registry.test-helpers.d.ts.map +1 -0
  198. package/dist/server/server/workspace-registry.test-helpers.js +121 -0
  199. package/dist/server/server/workspace-registry.test-helpers.js.map +1 -0
  200. package/dist/server/server/workspace-script-runtime-store.d.ts +28 -0
  201. package/dist/server/server/workspace-script-runtime-store.d.ts.map +1 -0
  202. package/dist/server/server/workspace-script-runtime-store.js +78 -0
  203. package/dist/server/server/workspace-script-runtime-store.js.map +1 -0
  204. package/dist/server/server/workspace-service-env.d.ts +17 -0
  205. package/dist/server/server/workspace-service-env.d.ts.map +1 -0
  206. package/dist/server/server/workspace-service-env.js +80 -0
  207. package/dist/server/server/workspace-service-env.js.map +1 -0
  208. package/dist/server/server/workspace-service-port-registry.d.ts +19 -0
  209. package/dist/server/server/workspace-service-port-registry.d.ts.map +1 -0
  210. package/dist/server/server/workspace-service-port-registry.js +59 -0
  211. package/dist/server/server/workspace-service-port-registry.js.map +1 -0
  212. package/dist/server/server/worktree-bootstrap.d.ts +55 -10
  213. package/dist/server/server/worktree-bootstrap.d.ts.map +1 -1
  214. package/dist/server/server/worktree-bootstrap.js +290 -112
  215. package/dist/server/server/worktree-bootstrap.js.map +1 -1
  216. package/dist/server/server/worktree-core.d.ts +25 -0
  217. package/dist/server/server/worktree-core.d.ts.map +1 -0
  218. package/dist/server/server/worktree-core.js +75 -0
  219. package/dist/server/server/worktree-core.js.map +1 -0
  220. package/dist/server/server/worktree-errors.d.ts +12 -0
  221. package/dist/server/server/worktree-errors.d.ts.map +1 -0
  222. package/dist/server/server/worktree-errors.js +31 -0
  223. package/dist/server/server/worktree-errors.js.map +1 -0
  224. package/dist/server/server/worktree-session.d.ts +56 -70
  225. package/dist/server/server/worktree-session.d.ts.map +1 -1
  226. package/dist/server/server/worktree-session.js +176 -251
  227. package/dist/server/server/worktree-session.js.map +1 -1
  228. package/dist/server/services/github-service.d.ts +225 -0
  229. package/dist/server/services/github-service.d.ts.map +1 -0
  230. package/dist/server/services/github-service.js +1381 -0
  231. package/dist/server/services/github-service.js.map +1 -0
  232. package/dist/server/shared/messages.d.ts +29408 -12268
  233. package/dist/server/shared/messages.d.ts.map +1 -1
  234. package/dist/server/shared/messages.js +391 -65
  235. package/dist/server/shared/messages.js.map +1 -1
  236. package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -0
  237. package/dist/server/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  238. package/dist/server/terminal/terminal-manager.d.ts +9 -0
  239. package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
  240. package/dist/server/terminal/terminal-manager.js +27 -0
  241. package/dist/server/terminal/terminal-manager.js.map +1 -1
  242. package/dist/server/terminal/terminal-output-coalescer.d.ts +30 -0
  243. package/dist/server/terminal/terminal-output-coalescer.d.ts.map +1 -0
  244. package/dist/server/terminal/terminal-output-coalescer.js +55 -0
  245. package/dist/server/terminal/terminal-output-coalescer.js.map +1 -0
  246. package/dist/server/terminal/terminal.d.ts +32 -1
  247. package/dist/server/terminal/terminal.d.ts.map +1 -1
  248. package/dist/server/terminal/terminal.js +397 -17
  249. package/dist/server/terminal/terminal.js.map +1 -1
  250. package/dist/server/utils/checkout-git.d.ts +63 -10
  251. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  252. package/dist/server/utils/checkout-git.js +321 -229
  253. package/dist/server/utils/checkout-git.js.map +1 -1
  254. package/dist/server/utils/promise-timeout.d.ts +9 -0
  255. package/dist/server/utils/promise-timeout.d.ts.map +1 -0
  256. package/dist/server/utils/promise-timeout.js +25 -0
  257. package/dist/server/utils/promise-timeout.js.map +1 -0
  258. package/dist/server/utils/script-hostname.d.ts +8 -0
  259. package/dist/server/utils/script-hostname.d.ts.map +1 -0
  260. package/dist/server/utils/script-hostname.js +14 -0
  261. package/dist/server/utils/script-hostname.js.map +1 -0
  262. package/dist/server/utils/string-command-shell.d.ts +10 -0
  263. package/dist/server/utils/string-command-shell.d.ts.map +1 -0
  264. package/dist/server/utils/string-command-shell.js +21 -0
  265. package/dist/server/utils/string-command-shell.js.map +1 -0
  266. package/dist/server/utils/worktree.d.ts +54 -7
  267. package/dist/server/utils/worktree.d.ts.map +1 -1
  268. package/dist/server/utils/worktree.js +434 -129
  269. package/dist/server/utils/worktree.js.map +1 -1
  270. package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -0
  271. package/dist/src/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  272. package/package.json +11 -14
  273. package/dist/server/server/agent/providers/pi-acp-agent.d.ts +0 -28
  274. package/dist/server/server/agent/providers/pi-acp-agent.d.ts.map +0 -1
  275. package/dist/server/server/agent/providers/pi-acp-agent.js +0 -302
  276. package/dist/server/server/agent/providers/pi-acp-agent.js.map +0 -1
@@ -198,7 +198,25 @@ const NonNullUnknownSchema = z.union([
198
198
  z.array(z.unknown()),
199
199
  z.object({}).passthrough(),
200
200
  ]);
201
+ const WorktreeSetupCommandSnapshotSchema = z.object({
202
+ index: z.number().int().positive(),
203
+ command: z.string(),
204
+ cwd: z.string(),
205
+ log: z.string().optional().default(""),
206
+ status: z.enum(["running", "completed", "failed"]),
207
+ exitCode: z.number().nullable(),
208
+ durationMs: z.number().nonnegative().optional(),
209
+ });
210
+ const WorktreeSetupDetailPayloadSchema = z.object({
211
+ type: z.literal("worktree_setup"),
212
+ worktreePath: z.string(),
213
+ branchName: z.string(),
214
+ log: z.string(),
215
+ commands: z.array(WorktreeSetupCommandSnapshotSchema),
216
+ truncated: z.boolean().optional(),
217
+ });
201
218
  const ToolCallDetailPayloadSchema = z.discriminatedUnion("type", [
219
+ WorktreeSetupDetailPayloadSchema,
202
220
  z.object({
203
221
  type: z.literal("shell"),
204
222
  command: z.string(),
@@ -255,21 +273,6 @@ const ToolCallDetailPayloadSchema = z.discriminatedUnion("type", [
255
273
  bytes: z.number().optional(),
256
274
  durationMs: z.number().optional(),
257
275
  }),
258
- z.object({
259
- type: z.literal("worktree_setup"),
260
- worktreePath: z.string(),
261
- branchName: z.string(),
262
- log: z.string(),
263
- commands: z.array(z.object({
264
- index: z.number().int().positive(),
265
- command: z.string(),
266
- cwd: z.string(),
267
- status: z.enum(["running", "completed", "failed"]),
268
- exitCode: z.number().nullable(),
269
- durationMs: z.number().nonnegative().optional(),
270
- })),
271
- truncated: z.boolean().optional(),
272
- }),
273
276
  z.object({
274
277
  type: z.literal("sub_agent"),
275
278
  subAgentType: z.string().optional(),
@@ -303,7 +306,7 @@ const ToolCallBasePayloadSchema = z
303
306
  callId: z.string(),
304
307
  name: z.string(),
305
308
  detail: ToolCallDetailPayloadSchema,
306
- metadata: z.record(z.unknown()).optional(),
309
+ metadata: z.record(z.string(), z.unknown()).optional(),
307
310
  })
308
311
  .strict();
309
312
  const ToolCallRunningPayloadSchema = ToolCallBasePayloadSchema.extend({
@@ -428,7 +431,7 @@ const AgentPersistenceHandleSchema = z
428
431
  provider: AgentProviderSchema,
429
432
  sessionId: z.string(),
430
433
  nativeHandle: z.string().optional(),
431
- metadata: z.record(z.unknown()).optional(),
434
+ metadata: z.record(z.string(), z.unknown()).optional(),
432
435
  })
433
436
  .nullable();
434
437
  const AgentRuntimeInfoSchema = z.object({
@@ -437,7 +440,7 @@ const AgentRuntimeInfoSchema = z.object({
437
440
  model: z.string().nullable().optional(),
438
441
  thinkingOptionId: z.string().nullable().optional(),
439
442
  modeId: z.string().nullable().optional(),
440
- extra: z.record(z.unknown()).optional(),
443
+ extra: z.record(z.string(), z.unknown()).optional(),
441
444
  });
442
445
  export const AgentSnapshotPayloadSchema = z.object({
443
446
  id: z.string(),
@@ -460,12 +463,31 @@ export const AgentSnapshotPayloadSchema = z.object({
460
463
  lastUsage: AgentUsageSchema.optional(),
461
464
  lastError: z.string().optional(),
462
465
  title: z.string().nullable(),
463
- labels: z.record(z.string()).default({}),
466
+ labels: z.record(z.string(), z.string()).default({}),
464
467
  requiresAttention: z.boolean().optional(),
465
468
  attentionReason: z.enum(["finished", "error", "permission"]).nullable().optional(),
466
469
  attentionTimestamp: z.string().nullable().optional(),
467
470
  archivedAt: z.string().nullable().optional(),
468
471
  });
472
+ export const AgentListItemPayloadSchema = z.object({
473
+ id: z.string(),
474
+ shortId: z.string(),
475
+ title: z.string().nullable(),
476
+ provider: AgentProviderSchema,
477
+ model: z.string().nullable(),
478
+ thinkingOptionId: z.string().nullable().optional(),
479
+ effectiveThinkingOptionId: z.string().nullable().optional(),
480
+ status: AgentStatusSchema,
481
+ cwd: z.string(),
482
+ createdAt: z.string(),
483
+ updatedAt: z.string(),
484
+ lastUserMessageAt: z.string().nullable(),
485
+ archivedAt: z.string().nullable().optional(),
486
+ requiresAttention: z.boolean().optional(),
487
+ attentionReason: z.enum(["finished", "error", "permission"]).nullable().optional(),
488
+ attentionTimestamp: z.string().nullable().optional(),
489
+ labels: z.record(z.string(), z.string()).default({}),
490
+ });
469
491
  // ============================================================================
470
492
  // Session Inbound Messages (Session receives these)
471
493
  // ============================================================================
@@ -519,17 +541,53 @@ export const SetVoiceModeMessageSchema = z.object({
519
541
  agentId: z.string().optional(),
520
542
  requestId: z.string().optional(),
521
543
  });
544
+ export const GitHubPrAttachmentSchema = z.object({
545
+ type: z.literal("github_pr"),
546
+ mimeType: z.literal("application/github-pr"),
547
+ number: z.number().int().positive(),
548
+ title: z.string(),
549
+ url: z.string(),
550
+ body: z.string().nullable().optional(),
551
+ baseRefName: z.string().nullable().optional(),
552
+ headRefName: z.string().nullable().optional(),
553
+ });
554
+ export const GitHubIssueAttachmentSchema = z.object({
555
+ type: z.literal("github_issue"),
556
+ mimeType: z.literal("application/github-issue"),
557
+ number: z.number().int().positive(),
558
+ title: z.string(),
559
+ url: z.string(),
560
+ body: z.string().nullable().optional(),
561
+ });
562
+ export const AgentAttachmentSchema = z.discriminatedUnion("type", [
563
+ GitHubPrAttachmentSchema,
564
+ GitHubIssueAttachmentSchema,
565
+ ]);
566
+ function normalizeAgentAttachments(input) {
567
+ if (!Array.isArray(input)) {
568
+ return [];
569
+ }
570
+ const normalized = [];
571
+ for (const item of input) {
572
+ const parsed = AgentAttachmentSchema.safeParse(item);
573
+ if (parsed.success) {
574
+ normalized.push(parsed.data);
575
+ }
576
+ }
577
+ return normalized;
578
+ }
579
+ const AgentAttachmentsSchema = z.unknown().transform(normalizeAgentAttachments).optional();
580
+ const ImageAttachmentSchema = z.object({
581
+ data: z.string(), // base64 encoded image
582
+ mimeType: z.string(), // e.g., "image/jpeg", "image/png"
583
+ });
522
584
  export const SendAgentMessageSchema = z.object({
523
585
  type: z.literal("send_agent_message"),
524
586
  agentId: z.string(),
525
587
  text: z.string(),
526
588
  messageId: z.string().optional(), // Client-provided ID for deduplication
527
- images: z
528
- .array(z.object({
529
- data: z.string(), // base64 encoded image
530
- mimeType: z.string(), // e.g., "image/jpeg", "image/png"
531
- }))
532
- .optional(),
589
+ images: z.array(ImageAttachmentSchema).optional(),
590
+ attachments: AgentAttachmentsSchema,
533
591
  });
534
592
  // ============================================================================
535
593
  // Agent RPCs (requestId-correlated)
@@ -537,6 +595,7 @@ export const SendAgentMessageSchema = z.object({
537
595
  export const FetchAgentsRequestMessageSchema = z.object({
538
596
  type: z.literal("fetch_agents_request"),
539
597
  requestId: z.string(),
598
+ scope: z.enum(["active"]).optional(),
540
599
  filter: AgentDirectoryFilterSchema.optional(),
541
600
  sort: z
542
601
  .array(z.object({
@@ -591,6 +650,23 @@ export const FetchWorkspacesRequestMessageSchema = z.object({
591
650
  })
592
651
  .optional(),
593
652
  });
653
+ export const FetchAgentHistoryRequestMessageSchema = z.object({
654
+ type: z.literal("fetch_agent_history_request"),
655
+ requestId: z.string(),
656
+ filter: AgentDirectoryFilterSchema.optional(),
657
+ sort: z
658
+ .array(z.object({
659
+ key: z.enum(["status_priority", "created_at", "updated_at", "title"]),
660
+ direction: z.enum(["asc", "desc"]),
661
+ }))
662
+ .optional(),
663
+ page: z
664
+ .object({
665
+ limit: z.number().int().positive().max(200),
666
+ cursor: z.string().min(1).optional(),
667
+ })
668
+ .optional(),
669
+ });
594
670
  export const FetchAgentRequestMessageSchema = z.object({
595
671
  type: z.literal("fetch_agent_request"),
596
672
  requestId: z.string(),
@@ -604,12 +680,8 @@ export const SendAgentMessageRequestSchema = z.object({
604
680
  agentId: z.string(),
605
681
  text: z.string(),
606
682
  messageId: z.string().optional(), // Client-provided ID for deduplication
607
- images: z
608
- .array(z.object({
609
- data: z.string(), // base64 encoded image
610
- mimeType: z.string(), // e.g., "image/jpeg", "image/png"
611
- }))
612
- .optional(),
683
+ images: z.array(ImageAttachmentSchema).optional(),
684
+ attachments: AgentAttachmentsSchema,
613
685
  });
614
686
  export const WaitForFinishRequestSchema = z.object({
615
687
  type: z.literal("wait_for_finish_request"),
@@ -657,20 +729,20 @@ const GitSetupOptionsSchema = z.object({
657
729
  newBranchName: z.string().optional(),
658
730
  createWorktree: z.boolean().optional(),
659
731
  worktreeSlug: z.string().optional(),
732
+ refName: z.string().min(1).optional(),
733
+ action: z.enum(["branch-off", "checkout"]).optional(),
734
+ githubPrNumber: z.number().int().positive().optional(),
660
735
  });
661
736
  export const CreateAgentRequestMessageSchema = z.object({
662
737
  type: z.literal("create_agent_request"),
663
738
  config: AgentSessionConfigSchema,
739
+ workspaceId: z.string().optional(),
664
740
  worktreeName: z.string().optional(),
665
741
  initialPrompt: z.string().optional(),
666
742
  clientMessageId: z.string().optional(),
667
743
  outputSchema: z.record(z.unknown()).optional(),
668
- images: z
669
- .array(z.object({
670
- data: z.string(), // base64 encoded image
671
- mimeType: z.string(), // e.g., "image/jpeg", "image/png"
672
- }))
673
- .optional(),
744
+ images: z.array(ImageAttachmentSchema).optional(),
745
+ attachments: AgentAttachmentsSchema,
674
746
  git: GitSetupOptionsSchema.optional(),
675
747
  labels: z.record(z.string()).default({}),
676
748
  requestId: z.string(),
@@ -912,6 +984,14 @@ export const CheckoutPrStatusRequestSchema = z.object({
912
984
  cwd: z.string(),
913
985
  requestId: z.string(),
914
986
  });
987
+ export const PullRequestTimelineRequestSchema = z.object({
988
+ type: z.literal("pull_request_timeline_request"),
989
+ cwd: z.string(),
990
+ prNumber: z.number(),
991
+ repoOwner: z.string(),
992
+ repoName: z.string(),
993
+ requestId: z.string(),
994
+ });
915
995
  export const ValidateBranchRequestSchema = z.object({
916
996
  type: z.literal("validate_branch_request"),
917
997
  cwd: z.string(),
@@ -952,6 +1032,27 @@ export const BranchSuggestionsRequestSchema = z.object({
952
1032
  limit: z.number().int().min(1).max(200).optional(),
953
1033
  requestId: z.string(),
954
1034
  });
1035
+ export const GitHubSearchItemSchema = z.object({
1036
+ kind: z.enum(["issue", "pr"]),
1037
+ number: z.number(),
1038
+ title: z.string(),
1039
+ url: z.string(),
1040
+ state: z.string(),
1041
+ body: z.string().nullable(),
1042
+ labels: z.array(z.string()),
1043
+ baseRefName: z.string().nullable().optional(),
1044
+ headRefName: z.string().nullable().optional(),
1045
+ updatedAt: z.string().optional(),
1046
+ });
1047
+ export const GitHubSearchKindSchema = z.enum(["github-issue", "github-pr"]);
1048
+ export const GitHubSearchRequestSchema = z.object({
1049
+ type: z.literal("github_search_request"),
1050
+ cwd: z.string(),
1051
+ query: z.string(),
1052
+ limit: z.number().int().min(1).max(50).optional(),
1053
+ kinds: z.array(GitHubSearchKindSchema).optional(),
1054
+ requestId: z.string(),
1055
+ });
955
1056
  export const DirectorySuggestionsRequestSchema = z.object({
956
1057
  type: z.literal("directory_suggestions_request"),
957
1058
  query: z.string(),
@@ -978,6 +1079,15 @@ export const CreatePaseoWorktreeRequestSchema = z.object({
978
1079
  type: z.literal("create_paseo_worktree_request"),
979
1080
  cwd: z.string(),
980
1081
  worktreeSlug: z.string().optional(),
1082
+ attachments: AgentAttachmentsSchema,
1083
+ refName: z.string().min(1).optional(),
1084
+ action: z.enum(["branch-off", "checkout"]).optional(),
1085
+ githubPrNumber: z.number().int().positive().optional(),
1086
+ requestId: z.string(),
1087
+ });
1088
+ export const WorkspaceSetupStatusRequestSchema = z.object({
1089
+ type: z.literal("workspace_setup_status_request"),
1090
+ workspaceId: z.string(),
981
1091
  requestId: z.string(),
982
1092
  });
983
1093
  // TODO(2026-07): Remove once most clients are on >=0.1.50 and support arbitrary editor ids.
@@ -1151,6 +1261,15 @@ export const CreateTerminalRequestSchema = z.object({
1151
1261
  type: z.literal("create_terminal_request"),
1152
1262
  cwd: z.string(),
1153
1263
  name: z.string().optional(),
1264
+ agentId: z.string().optional(),
1265
+ command: z.string().optional(),
1266
+ args: z.array(z.string()).optional(),
1267
+ requestId: z.string(),
1268
+ });
1269
+ export const StartWorkspaceScriptRequestSchema = z.object({
1270
+ type: z.literal("start_workspace_script_request"),
1271
+ workspaceId: z.string(),
1272
+ scriptName: z.string(),
1154
1273
  requestId: z.string(),
1155
1274
  });
1156
1275
  export const SubscribeTerminalRequestSchema = z.object({
@@ -1196,6 +1315,7 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
1196
1315
  AbortRequestMessageSchema,
1197
1316
  AudioPlayedMessageSchema,
1198
1317
  FetchAgentsRequestMessageSchema,
1318
+ FetchAgentHistoryRequestMessageSchema,
1199
1319
  FetchWorkspacesRequestMessageSchema,
1200
1320
  FetchAgentRequestMessageSchema,
1201
1321
  DeleteAgentRequestMessageSchema,
@@ -1240,16 +1360,19 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
1240
1360
  CheckoutPushRequestSchema,
1241
1361
  CheckoutPrCreateRequestSchema,
1242
1362
  CheckoutPrStatusRequestSchema,
1363
+ PullRequestTimelineRequestSchema,
1243
1364
  CheckoutSwitchBranchRequestSchema,
1244
1365
  StashSaveRequestSchema,
1245
1366
  StashPopRequestSchema,
1246
1367
  StashListRequestSchema,
1247
1368
  ValidateBranchRequestSchema,
1248
1369
  BranchSuggestionsRequestSchema,
1370
+ GitHubSearchRequestSchema,
1249
1371
  DirectorySuggestionsRequestSchema,
1250
1372
  PaseoWorktreeListRequestSchema,
1251
1373
  PaseoWorktreeArchiveRequestSchema,
1252
1374
  CreatePaseoWorktreeRequestSchema,
1375
+ WorkspaceSetupStatusRequestSchema,
1253
1376
  ListAvailableEditorsRequestSchema,
1254
1377
  OpenInEditorRequestSchema,
1255
1378
  OpenProjectRequestSchema,
@@ -1266,6 +1389,7 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
1266
1389
  SubscribeTerminalsRequestSchema,
1267
1390
  UnsubscribeTerminalsRequestSchema,
1268
1391
  CreateTerminalRequestSchema,
1392
+ StartWorkspaceScriptRequestSchema,
1269
1393
  SubscribeTerminalRequestSchema,
1270
1394
  UnsubscribeTerminalRequestSchema,
1271
1395
  TerminalInputSchema,
@@ -1486,6 +1610,7 @@ export const AgentCreateFailedStatusPayloadSchema = z.object({
1486
1610
  status: z.literal("agent_create_failed"),
1487
1611
  requestId: z.string(),
1488
1612
  error: z.string(),
1613
+ errorCode: z.string().optional(),
1489
1614
  });
1490
1615
  export const AgentResumedStatusPayloadSchema = z
1491
1616
  .object({
@@ -1586,6 +1711,19 @@ export const ProjectPlacementPayloadSchema = z.object({
1586
1711
  projectName: z.string(),
1587
1712
  checkout: ProjectCheckoutLitePayloadSchema,
1588
1713
  });
1714
+ export const WorkspaceScriptLifecycleSchema = z.enum(["running", "stopped"]);
1715
+ export const WorkspaceScriptHealthSchema = z.enum(["healthy", "unhealthy"]);
1716
+ export const WorkspaceScriptPayloadSchema = z.object({
1717
+ scriptName: z.string(),
1718
+ type: z.enum(["script", "service"]).optional().default("service"),
1719
+ hostname: z.string(),
1720
+ port: z.number().int().positive().nullable(),
1721
+ proxyUrl: z.string().nullable().optional().default(null),
1722
+ lifecycle: WorkspaceScriptLifecycleSchema,
1723
+ health: WorkspaceScriptHealthSchema.nullable(),
1724
+ exitCode: z.number().nullable().optional().default(null),
1725
+ terminalId: z.string().nullable().optional().default(null),
1726
+ });
1589
1727
  const WorkspaceGitRuntimePayloadSchema = z
1590
1728
  .object({
1591
1729
  currentBranch: z.string().nullable().optional(),
@@ -1628,13 +1766,16 @@ const WorkspaceGitHubRuntimePayloadSchema = z
1628
1766
  })
1629
1767
  .optional()
1630
1768
  .nullable();
1631
- export const WorkspaceDescriptorPayloadSchema = z.object({
1769
+ export const WorkspaceDescriptorPayloadSchema = z
1770
+ .object({
1632
1771
  id: z.string(),
1633
1772
  projectId: z.string(),
1634
1773
  projectDisplayName: z.string(),
1635
1774
  projectRootPath: z.string(),
1636
- projectKind: z.enum(["git", "non_git"]),
1637
- workspaceKind: z.enum(["local_checkout", "worktree", "directory"]),
1775
+ workspaceDirectory: z.string().optional(),
1776
+ projectKind: z.enum(["git", "non_git", "directory"]),
1777
+ // COMPAT(workspaces): keep legacy directory workspace kind parseable.
1778
+ workspaceKind: z.enum(["directory", "local_checkout", "checkout", "worktree"]),
1638
1779
  name: z.string(),
1639
1780
  status: WorkspaceStateBucketSchema,
1640
1781
  activityAt: z.string().nullable(),
@@ -1645,16 +1786,21 @@ export const WorkspaceDescriptorPayloadSchema = z.object({
1645
1786
  })
1646
1787
  .nullable()
1647
1788
  .optional(),
1789
+ scripts: z.array(WorkspaceScriptPayloadSchema).default([]),
1648
1790
  gitRuntime: WorkspaceGitRuntimePayloadSchema,
1649
1791
  githubRuntime: WorkspaceGitHubRuntimePayloadSchema,
1650
- });
1792
+ })
1793
+ .transform((workspace) => ({
1794
+ ...workspace,
1795
+ workspaceDirectory: workspace.workspaceDirectory ?? workspace.projectRootPath,
1796
+ }));
1651
1797
  export const AgentUpdateMessageSchema = z.object({
1652
1798
  type: z.literal("agent_update"),
1653
1799
  payload: z.discriminatedUnion("kind", [
1654
1800
  z.object({
1655
1801
  kind: z.literal("upsert"),
1656
1802
  agent: AgentSnapshotPayloadSchema,
1657
- project: ProjectPlacementPayloadSchema,
1803
+ project: ProjectPlacementPayloadSchema.nullable().optional(),
1658
1804
  }),
1659
1805
  z.object({
1660
1806
  kind: z.literal("remove"),
@@ -1687,20 +1833,30 @@ export const AgentListMessageSchema = z.object({
1687
1833
  agents: z.array(AgentSnapshotPayloadSchema),
1688
1834
  }),
1689
1835
  });
1836
+ const AgentDirectoryResponseEntrySchema = z.object({
1837
+ agent: AgentSnapshotPayloadSchema,
1838
+ project: ProjectPlacementPayloadSchema,
1839
+ });
1840
+ const AgentDirectoryPageInfoSchema = z.object({
1841
+ nextCursor: z.string().nullable(),
1842
+ prevCursor: z.string().nullable(),
1843
+ hasMore: z.boolean(),
1844
+ });
1690
1845
  export const FetchAgentsResponseMessageSchema = z.object({
1691
1846
  type: z.literal("fetch_agents_response"),
1692
1847
  payload: z.object({
1693
1848
  requestId: z.string(),
1694
1849
  subscriptionId: z.string().nullable().optional(),
1695
- entries: z.array(z.object({
1696
- agent: AgentSnapshotPayloadSchema,
1697
- project: ProjectPlacementPayloadSchema,
1698
- })),
1699
- pageInfo: z.object({
1700
- nextCursor: z.string().nullable(),
1701
- prevCursor: z.string().nullable(),
1702
- hasMore: z.boolean(),
1703
- }),
1850
+ entries: z.array(AgentDirectoryResponseEntrySchema),
1851
+ pageInfo: AgentDirectoryPageInfoSchema,
1852
+ }),
1853
+ });
1854
+ export const FetchAgentHistoryResponseMessageSchema = z.object({
1855
+ type: z.literal("fetch_agent_history_response"),
1856
+ payload: z.object({
1857
+ requestId: z.string(),
1858
+ entries: z.array(AgentDirectoryResponseEntrySchema),
1859
+ pageInfo: AgentDirectoryPageInfoSchema,
1704
1860
  }),
1705
1861
  });
1706
1862
  export const FetchWorkspacesResponseMessageSchema = z.object({
@@ -1729,6 +1885,35 @@ export const WorkspaceUpdateMessageSchema = z.object({
1729
1885
  }),
1730
1886
  ]),
1731
1887
  });
1888
+ export const ScriptStatusUpdateMessageSchema = z.object({
1889
+ type: z.literal("script_status_update"),
1890
+ payload: z.object({
1891
+ workspaceId: z.string(),
1892
+ scripts: z.array(WorkspaceScriptPayloadSchema),
1893
+ }),
1894
+ });
1895
+ export const WorkspaceSetupProgressMessageSchema = z.object({
1896
+ type: z.literal("workspace_setup_progress"),
1897
+ payload: z.object({
1898
+ workspaceId: z.string(),
1899
+ status: z.enum(["running", "completed", "failed"]),
1900
+ detail: WorktreeSetupDetailPayloadSchema,
1901
+ error: z.string().nullable(),
1902
+ }),
1903
+ });
1904
+ export const WorkspaceSetupSnapshotSchema = z.object({
1905
+ status: z.enum(["running", "completed", "failed"]),
1906
+ detail: WorktreeSetupDetailPayloadSchema,
1907
+ error: z.string().nullable(),
1908
+ });
1909
+ export const WorkspaceSetupStatusResponseMessageSchema = z.object({
1910
+ type: z.literal("workspace_setup_status_response"),
1911
+ payload: z.object({
1912
+ requestId: z.string(),
1913
+ workspaceId: z.string(),
1914
+ snapshot: WorkspaceSetupSnapshotSchema.nullable(),
1915
+ }),
1916
+ });
1732
1917
  export const OpenProjectResponseMessageSchema = z.object({
1733
1918
  type: z.literal("open_project_response"),
1734
1919
  payload: z.object({
@@ -1737,6 +1922,16 @@ export const OpenProjectResponseMessageSchema = z.object({
1737
1922
  error: z.string().nullable(),
1738
1923
  }),
1739
1924
  });
1925
+ export const StartWorkspaceScriptResponseMessageSchema = z.object({
1926
+ type: z.literal("start_workspace_script_response"),
1927
+ payload: z.object({
1928
+ requestId: z.string(),
1929
+ workspaceId: z.string(),
1930
+ scriptName: z.string(),
1931
+ terminalId: z.string().nullable(),
1932
+ error: z.string().nullable(),
1933
+ }),
1934
+ });
1740
1935
  export const ListAvailableEditorsResponseMessageSchema = z.object({
1741
1936
  type: z.literal("list_available_editors_response"),
1742
1937
  payload: z.object({
@@ -1964,6 +2159,50 @@ export const CheckoutStatusResponseSchema = z.object({
1964
2159
  CheckoutStatusGitPaseoSchema,
1965
2160
  ]),
1966
2161
  });
2162
+ export const CheckoutPrStatusSchema = z.object({
2163
+ number: z.number().optional(),
2164
+ url: z.string(),
2165
+ title: z.string(),
2166
+ state: z.string(),
2167
+ baseRefName: z.string(),
2168
+ headRefName: z.string(),
2169
+ isMerged: z.boolean(),
2170
+ isDraft: z.boolean().optional().default(false),
2171
+ checks: z
2172
+ .array(z.object({
2173
+ name: z.string(),
2174
+ status: z.string(),
2175
+ url: z.string().nullable(),
2176
+ workflow: z.string().optional(),
2177
+ duration: z.string().optional(),
2178
+ }))
2179
+ .optional()
2180
+ .default([]),
2181
+ checksStatus: z.string().optional(),
2182
+ reviewDecision: z.string().nullable().optional(),
2183
+ repoOwner: z.string().optional(),
2184
+ repoName: z.string().optional(),
2185
+ });
2186
+ const CheckoutPrStatusPayloadSchema = z.object({
2187
+ cwd: z.string(),
2188
+ status: CheckoutPrStatusSchema.nullable(),
2189
+ githubFeaturesEnabled: z.boolean(),
2190
+ error: CheckoutErrorSchema.nullable(),
2191
+ requestId: z.string(),
2192
+ });
2193
+ const CheckoutStatusUpdateMetadataSchema = z.object({
2194
+ prStatus: CheckoutPrStatusPayloadSchema.optional(),
2195
+ });
2196
+ export const CheckoutStatusUpdateSchema = z.object({
2197
+ type: z.literal("checkout_status_update"),
2198
+ payload: z
2199
+ .union([
2200
+ CheckoutStatusNotGitSchema,
2201
+ CheckoutStatusGitNonPaseoSchema,
2202
+ CheckoutStatusGitPaseoSchema,
2203
+ ])
2204
+ .and(CheckoutStatusUpdateMetadataSchema),
2205
+ });
1967
2206
  const CheckoutDiffSubscriptionPayloadSchema = z.object({
1968
2207
  subscriptionId: z.string(),
1969
2208
  cwd: z.string(),
@@ -2035,23 +2274,81 @@ export const CheckoutPrCreateResponseSchema = z.object({
2035
2274
  requestId: z.string(),
2036
2275
  }),
2037
2276
  });
2038
- const CheckoutPrStatusSchema = z.object({
2039
- url: z.string(),
2040
- title: z.string(),
2041
- state: z.string(),
2042
- baseRefName: z.string(),
2043
- headRefName: z.string(),
2044
- isMerged: z.boolean(),
2045
- });
2046
2277
  export const CheckoutPrStatusResponseSchema = z.object({
2047
2278
  type: z.literal("checkout_pr_status_response"),
2048
- payload: z.object({
2049
- cwd: z.string(),
2050
- status: CheckoutPrStatusSchema.nullable(),
2051
- githubFeaturesEnabled: z.boolean(),
2052
- error: CheckoutErrorSchema.nullable(),
2053
- requestId: z.string(),
2279
+ payload: CheckoutPrStatusPayloadSchema,
2280
+ });
2281
+ const PullRequestTimelineKnownErrorSchema = z.discriminatedUnion("kind", [
2282
+ z.object({
2283
+ kind: z.literal("not_found"),
2284
+ message: z.string().optional().default(""),
2054
2285
  }),
2286
+ z.object({
2287
+ kind: z.literal("forbidden"),
2288
+ message: z.string().optional().default(""),
2289
+ }),
2290
+ z.object({
2291
+ kind: z.literal("unknown"),
2292
+ message: z.string().optional().default(""),
2293
+ }),
2294
+ ]);
2295
+ const PullRequestTimelineErrorSchema = z.preprocess((value) => {
2296
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
2297
+ return { kind: "unknown", message: "" };
2298
+ }
2299
+ const error = value;
2300
+ if (error.kind === "not_found" || error.kind === "forbidden" || error.kind === "unknown") {
2301
+ return error;
2302
+ }
2303
+ return { ...error, kind: "unknown" };
2304
+ }, PullRequestTimelineKnownErrorSchema);
2305
+ const PullRequestTimelineReviewItemSchema = z.object({
2306
+ id: z.string().optional().default(""),
2307
+ kind: z.literal("review"),
2308
+ author: z.string().optional().default("unknown"),
2309
+ body: z.string().optional().default(""),
2310
+ createdAt: z.number().optional().default(0),
2311
+ url: z.string().optional().default(""),
2312
+ reviewState: z
2313
+ .enum(["approved", "changes_requested", "commented"])
2314
+ .optional()
2315
+ .default("commented"),
2316
+ });
2317
+ const PullRequestTimelineCommentItemSchema = z.object({
2318
+ id: z.string().optional().default(""),
2319
+ kind: z.literal("comment"),
2320
+ author: z.string().optional().default("unknown"),
2321
+ body: z.string().optional().default(""),
2322
+ createdAt: z.number().optional().default(0),
2323
+ url: z.string().optional().default(""),
2324
+ });
2325
+ export const PullRequestTimelineItemSchema = z.preprocess((value) => {
2326
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
2327
+ return value;
2328
+ }
2329
+ const item = value;
2330
+ if (item.kind === "review" || item.kind === "comment") {
2331
+ return item;
2332
+ }
2333
+ return { ...item, kind: "comment" };
2334
+ }, z.discriminatedUnion("kind", [
2335
+ PullRequestTimelineReviewItemSchema,
2336
+ PullRequestTimelineCommentItemSchema,
2337
+ ]));
2338
+ export const PullRequestTimelineResponseSchema = z.object({
2339
+ type: z.literal("pull_request_timeline_response"),
2340
+ payload: z
2341
+ .object({
2342
+ cwd: z.string().optional().default(""),
2343
+ prNumber: z.number().nullable().optional().default(null),
2344
+ items: z.array(PullRequestTimelineItemSchema).optional().default([]),
2345
+ truncated: z.boolean().optional().default(false),
2346
+ error: PullRequestTimelineErrorSchema.nullable().optional().default(null),
2347
+ requestId: z.string().optional().default(""),
2348
+ githubFeaturesEnabled: z.boolean().optional().default(true),
2349
+ })
2350
+ .optional()
2351
+ .default({}),
2055
2352
  });
2056
2353
  export const CheckoutSwitchBranchResponseSchema = z.object({
2057
2354
  type: z.literal("checkout_switch_branch_response"),
@@ -2059,6 +2356,7 @@ export const CheckoutSwitchBranchResponseSchema = z.object({
2059
2356
  cwd: z.string(),
2060
2357
  success: z.boolean(),
2061
2358
  branch: z.string(),
2359
+ source: z.enum(["local", "remote"]).optional(),
2062
2360
  error: CheckoutErrorSchema.nullable(),
2063
2361
  requestId: z.string(),
2064
2362
  }),
@@ -2110,6 +2408,23 @@ export const BranchSuggestionsResponseSchema = z.object({
2110
2408
  type: z.literal("branch_suggestions_response"),
2111
2409
  payload: z.object({
2112
2410
  branches: z.array(z.string()),
2411
+ branchDetails: z
2412
+ .array(z.object({
2413
+ name: z.string(),
2414
+ committerDate: z.number(),
2415
+ hasLocal: z.boolean().optional(),
2416
+ hasRemote: z.boolean().optional(),
2417
+ }))
2418
+ .optional(),
2419
+ error: z.string().nullable(),
2420
+ requestId: z.string(),
2421
+ }),
2422
+ });
2423
+ export const GitHubSearchResponseSchema = z.object({
2424
+ type: z.literal("github_search_response"),
2425
+ payload: z.object({
2426
+ items: z.array(GitHubSearchItemSchema),
2427
+ githubFeaturesEnabled: z.boolean(),
2113
2428
  error: z.string().nullable(),
2114
2429
  requestId: z.string(),
2115
2430
  }),
@@ -2157,6 +2472,7 @@ export const CreatePaseoWorktreeResponseSchema = z.object({
2157
2472
  payload: z.object({
2158
2473
  workspace: WorkspaceDescriptorPayloadSchema.nullable(),
2159
2474
  error: z.string().nullable(),
2475
+ errorCode: z.string().optional(),
2160
2476
  setupTerminalId: z.string().nullable(),
2161
2477
  requestId: z.string(),
2162
2478
  }),
@@ -2299,6 +2615,7 @@ const TerminalInfoSchema = z.object({
2299
2615
  id: z.string(),
2300
2616
  name: z.string(),
2301
2617
  cwd: z.string(),
2618
+ title: z.string().optional(),
2302
2619
  });
2303
2620
  export const TerminalCellSchema = z
2304
2621
  .object({
@@ -2332,6 +2649,7 @@ export const TerminalStateSchema = z
2332
2649
  grid: z.array(z.array(TerminalCellSchema)),
2333
2650
  scrollback: z.array(z.array(TerminalCellSchema)),
2334
2651
  cursor: TerminalCursorSchema,
2652
+ title: z.string().optional(),
2335
2653
  })
2336
2654
  .strict();
2337
2655
  export const ListTerminalsResponseSchema = z.object({
@@ -2413,11 +2731,16 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
2413
2731
  ArtifactMessageSchema,
2414
2732
  AgentUpdateMessageSchema,
2415
2733
  WorkspaceUpdateMessageSchema,
2734
+ ScriptStatusUpdateMessageSchema,
2735
+ WorkspaceSetupProgressMessageSchema,
2736
+ WorkspaceSetupStatusResponseMessageSchema,
2416
2737
  AgentStreamMessageSchema,
2417
2738
  AgentStatusMessageSchema,
2418
2739
  FetchAgentsResponseMessageSchema,
2740
+ FetchAgentHistoryResponseMessageSchema,
2419
2741
  FetchWorkspacesResponseMessageSchema,
2420
2742
  OpenProjectResponseMessageSchema,
2743
+ StartWorkspaceScriptResponseMessageSchema,
2421
2744
  ListAvailableEditorsResponseMessageSchema,
2422
2745
  OpenInEditorResponseMessageSchema,
2423
2746
  ArchiveWorkspaceResponseMessageSchema,
@@ -2441,6 +2764,7 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
2441
2764
  AgentArchivedMessageSchema,
2442
2765
  CloseItemsResponseSchema,
2443
2766
  CheckoutStatusResponseSchema,
2767
+ CheckoutStatusUpdateSchema,
2444
2768
  SubscribeCheckoutDiffResponseSchema,
2445
2769
  CheckoutDiffUpdateSchema,
2446
2770
  CheckoutCommitResponseSchema,
@@ -2450,12 +2774,14 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
2450
2774
  CheckoutPushResponseSchema,
2451
2775
  CheckoutPrCreateResponseSchema,
2452
2776
  CheckoutPrStatusResponseSchema,
2777
+ PullRequestTimelineResponseSchema,
2453
2778
  CheckoutSwitchBranchResponseSchema,
2454
2779
  StashSaveResponseSchema,
2455
2780
  StashPopResponseSchema,
2456
2781
  StashListResponseSchema,
2457
2782
  ValidateBranchResponseSchema,
2458
2783
  BranchSuggestionsResponseSchema,
2784
+ GitHubSearchResponseSchema,
2459
2785
  DirectorySuggestionsResponseSchema,
2460
2786
  PaseoWorktreeListResponseSchema,
2461
2787
  PaseoWorktreeArchiveResponseSchema,