@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-stream-coalescer.d.ts","sourceRoot":"","sources":["../../../../src/server/agent/agent-stream-coalescer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE/F,eAAO,MAAM,uCAAuC,MAAM,CAAC;AAE3D,KAAK,mBAAmB,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAC7D,KAAK,uBAAuB,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAEjE,KAAK,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAC;AAK7F,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,YAAY,EAAE,OAAO,YAAY,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,0BAA0B,CAAC;IACnC,OAAO,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACvD,CAAC;AA+CF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,OAAO,EAAE,2BAA2B;IAMhD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO;IAwBzD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI/B,QAAQ,IAAI,IAAI;IAMhB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAStC,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,WAAW;IA0CnB,OAAO,CAAC,eAAe;CAsBxB"}
@@ -0,0 +1,166 @@
1
+ export const AGENT_STREAM_COALESCE_DEFAULT_WINDOW_MS = 200;
2
+ function isCoalescableTimelineEvent(event) {
3
+ return (event.type === "timeline" &&
4
+ (event.item.type === "assistant_message" ||
5
+ event.item.type === "reasoning" ||
6
+ event.item.type === "tool_call"));
7
+ }
8
+ function isTextTimelineItem(item) {
9
+ return item.type === "assistant_message" || item.type === "reasoning";
10
+ }
11
+ function isTerminalToolCall(item) {
12
+ return (item.type === "tool_call" &&
13
+ (item.status === "completed" || item.status === "failed" || item.status === "canceled"));
14
+ }
15
+ export class AgentStreamCoalescer {
16
+ constructor(options) {
17
+ this.buffers = new Map();
18
+ this.windowMs = options.windowMs ?? AGENT_STREAM_COALESCE_DEFAULT_WINDOW_MS;
19
+ this.timers = options.timers;
20
+ this.onFlush = options.onFlush;
21
+ }
22
+ handle(agentId, event) {
23
+ if (!isCoalescableTimelineEvent(event)) {
24
+ return false;
25
+ }
26
+ if (isTextTimelineItem(event.item) && event.item.text === "") {
27
+ return true;
28
+ }
29
+ const buffer = this.getOrCreateBuffer(agentId);
30
+ this.appendToBuffer(buffer, event);
31
+ if (isTerminalToolCall(event.item)) {
32
+ this.flushBuffer(agentId);
33
+ return true;
34
+ }
35
+ if (!buffer.timer) {
36
+ this.scheduleFlush(buffer);
37
+ }
38
+ return true;
39
+ }
40
+ flushFor(agentId) {
41
+ this.flushBuffer(agentId);
42
+ }
43
+ flushAll() {
44
+ for (const agentId of Array.from(this.buffers.keys())) {
45
+ this.flushBuffer(agentId);
46
+ }
47
+ }
48
+ flushAndDiscard(agentId) {
49
+ this.flushBuffer(agentId);
50
+ const buffer = this.buffers.get(agentId);
51
+ if (buffer) {
52
+ this.clearTimer(buffer);
53
+ this.buffers.delete(agentId);
54
+ }
55
+ }
56
+ getOrCreateBuffer(agentId) {
57
+ const existing = this.buffers.get(agentId);
58
+ if (existing) {
59
+ return existing;
60
+ }
61
+ const buffer = {
62
+ agentId,
63
+ entries: [],
64
+ toolCallEntryIndexes: new Map(),
65
+ timer: null,
66
+ flushing: false,
67
+ };
68
+ this.buffers.set(agentId, buffer);
69
+ return buffer;
70
+ }
71
+ appendToBuffer(buffer, event) {
72
+ if (isTextTimelineItem(event.item)) {
73
+ buffer.entries.push({
74
+ kind: "text",
75
+ item: event.item,
76
+ text: event.item.text,
77
+ provider: event.provider,
78
+ ...(event.turnId !== undefined ? { turnId: event.turnId } : {}),
79
+ });
80
+ return;
81
+ }
82
+ const existingIndex = buffer.toolCallEntryIndexes.get(event.item.callId);
83
+ const entry = {
84
+ kind: "tool_call",
85
+ item: event.item,
86
+ provider: event.provider,
87
+ ...(event.turnId !== undefined ? { turnId: event.turnId } : {}),
88
+ };
89
+ if (existingIndex !== undefined) {
90
+ buffer.entries[existingIndex] = entry;
91
+ return;
92
+ }
93
+ buffer.toolCallEntryIndexes.set(event.item.callId, buffer.entries.length);
94
+ buffer.entries.push(entry);
95
+ }
96
+ scheduleFlush(buffer) {
97
+ const timer = this.timers.setTimeout(() => {
98
+ this.flushBuffer(buffer.agentId, buffer);
99
+ }, this.windowMs);
100
+ timer.unref?.();
101
+ buffer.timer = timer;
102
+ }
103
+ clearTimer(buffer) {
104
+ if (!buffer.timer) {
105
+ return;
106
+ }
107
+ this.timers.clearTimeout(buffer.timer);
108
+ buffer.timer = null;
109
+ }
110
+ flushBuffer(agentId, expectedBuffer) {
111
+ const buffer = this.buffers.get(agentId);
112
+ if (!buffer) {
113
+ return;
114
+ }
115
+ if (expectedBuffer && buffer !== expectedBuffer) {
116
+ return;
117
+ }
118
+ if (buffer.flushing) {
119
+ return;
120
+ }
121
+ this.clearTimer(buffer);
122
+ if (buffer.entries.length === 0) {
123
+ return;
124
+ }
125
+ const entries = buffer.entries;
126
+ buffer.entries = [];
127
+ buffer.toolCallEntryIndexes.clear();
128
+ buffer.flushing = true;
129
+ try {
130
+ for (const entry of this.collapseEntries(entries)) {
131
+ this.onFlush({
132
+ agentId,
133
+ item: entry.kind === "text"
134
+ ? {
135
+ ...entry.item,
136
+ text: entry.text,
137
+ }
138
+ : entry.item,
139
+ provider: entry.provider,
140
+ ...(entry.turnId !== undefined ? { turnId: entry.turnId } : {}),
141
+ });
142
+ }
143
+ }
144
+ finally {
145
+ buffer.flushing = false;
146
+ }
147
+ }
148
+ collapseEntries(entries) {
149
+ const collapsed = [];
150
+ for (const entry of entries) {
151
+ const previous = collapsed.at(-1);
152
+ if (previous &&
153
+ previous.kind === "text" &&
154
+ entry.kind === "text" &&
155
+ previous.item.type === entry.item.type &&
156
+ previous.provider === entry.provider &&
157
+ previous.turnId === entry.turnId) {
158
+ previous.text += entry.text;
159
+ continue;
160
+ }
161
+ collapsed.push({ ...entry });
162
+ }
163
+ return collapsed;
164
+ }
165
+ }
166
+ //# sourceMappingURL=agent-stream-coalescer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-stream-coalescer.js","sourceRoot":"","sources":["../../../../src/server/agent/agent-stream-coalescer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { AgentTimelineItem } from "./agent-sdk-types.js";
2
+ export type AgentTimelineRow = {
3
+ seq: number;
4
+ timestamp: string;
5
+ item: AgentTimelineItem;
6
+ };
7
+ export type AgentTimelineCursor = {
8
+ epoch: string;
9
+ seq: number;
10
+ };
11
+ export type AgentTimelineFetchDirection = "tail" | "before" | "after";
12
+ export type AgentTimelineFetchOptions = {
13
+ direction?: AgentTimelineFetchDirection;
14
+ cursor?: AgentTimelineCursor;
15
+ /**
16
+ * Number of canonical rows to return.
17
+ * - undefined: store default
18
+ * - 0: all rows in the selected window
19
+ */
20
+ limit?: number;
21
+ };
22
+ export type AgentTimelineWindow = {
23
+ minSeq: number;
24
+ maxSeq: number;
25
+ nextSeq: number;
26
+ };
27
+ export type AgentTimelineFetchResult = {
28
+ epoch: string;
29
+ direction: AgentTimelineFetchDirection;
30
+ reset: boolean;
31
+ staleCursor: boolean;
32
+ gap: boolean;
33
+ window: AgentTimelineWindow;
34
+ hasOlder: boolean;
35
+ hasNewer: boolean;
36
+ rows: AgentTimelineRow[];
37
+ };
38
+ export interface AgentTimelineStore {
39
+ appendCommitted(agentId: string, item: AgentTimelineItem, options?: {
40
+ timestamp?: string;
41
+ }): Promise<AgentTimelineRow>;
42
+ fetchCommitted(agentId: string, options?: AgentTimelineFetchOptions): Promise<AgentTimelineFetchResult>;
43
+ getLatestCommittedSeq(agentId: string): Promise<number>;
44
+ getCommittedRows(agentId: string): Promise<AgentTimelineRow[]>;
45
+ getLastItem(agentId: string): Promise<AgentTimelineItem | null>;
46
+ getLastAssistantMessage(agentId: string): Promise<string | null>;
47
+ hasCommittedUserMessage(agentId: string, options: {
48
+ messageId: string;
49
+ text: string;
50
+ }): Promise<boolean>;
51
+ deleteAgent(agentId: string): Promise<void>;
52
+ bulkInsert(agentId: string, rows: readonly AgentTimelineRow[]): Promise<void>;
53
+ }
54
+ //# sourceMappingURL=agent-timeline-store-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-timeline-store-types.d.ts","sourceRoot":"","sources":["../../../../src/server/agent/agent-timeline-store-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtE,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,CAAC,EAAE,2BAA2B,CAAC;IACxC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,2BAA2B,CAAC;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,gBAAgB,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,eAAe,CACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7B,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACrC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAChE,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjE,uBAAuB,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agent-timeline-store-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-timeline-store-types.js","sourceRoot":"","sources":["../../../../src/server/agent/agent-timeline-store-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import type { AgentTimelineItem } from "./agent-sdk-types.js";
2
+ import type { AgentTimelineFetchOptions, AgentTimelineFetchResult, AgentTimelineRow } from "./agent-timeline-store-types.js";
3
+ export type SeedAgentTimelineOptions = {
4
+ items?: readonly AgentTimelineItem[];
5
+ rows?: readonly AgentTimelineRow[];
6
+ epoch?: string;
7
+ nextSeq?: number;
8
+ timestamp?: string;
9
+ };
10
+ export declare class InMemoryAgentTimelineStore {
11
+ private readonly states;
12
+ has(agentId: string): boolean;
13
+ initialize(agentId: string, options?: SeedAgentTimelineOptions): void;
14
+ delete(agentId: string): void;
15
+ getItems(agentId: string): AgentTimelineItem[];
16
+ getRows(agentId: string): AgentTimelineRow[];
17
+ getEpoch(agentId: string): string;
18
+ fetch(agentId: string, options?: AgentTimelineFetchOptions): AgentTimelineFetchResult;
19
+ append(agentId: string, item: AgentTimelineItem, options?: {
20
+ timestamp?: string;
21
+ }): AgentTimelineRow;
22
+ getLastItem(agentId: string): AgentTimelineItem | null;
23
+ getLastAssistantMessage(agentId: string): string | null;
24
+ getCanonicalUserMessagesById(agentId: string): Map<string, string>;
25
+ hasCommittedUserMessage(agentId: string, options: {
26
+ messageId: string;
27
+ text: string;
28
+ }): boolean;
29
+ private requireState;
30
+ private buildRowsFromItems;
31
+ }
32
+ //# sourceMappingURL=agent-timeline-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-timeline-store.d.ts","sourceRoot":"","sources":["../../../../src/server/agent/agent-timeline-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrC,IAAI,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAsBF,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAEhE,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI;IAarE,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI7B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAI9C,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAI5C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIjC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,wBAAwB;IAuIrF,MAAM,CACJ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,gBAAgB;IAYnB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAKtD,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAqBvD,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAclE,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAe/F,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,kBAAkB;CAgB3B"}
@@ -0,0 +1,245 @@
1
+ import { randomUUID } from "node:crypto";
2
+ const DEFAULT_TIMELINE_FETCH_LIMIT = 200;
3
+ function cloneRow(row) {
4
+ return { ...row };
5
+ }
6
+ function normalizeTimelineMessageId(messageId) {
7
+ if (typeof messageId !== "string") {
8
+ return undefined;
9
+ }
10
+ const normalized = messageId.trim();
11
+ return normalized.length > 0 ? normalized : undefined;
12
+ }
13
+ export class InMemoryAgentTimelineStore {
14
+ constructor() {
15
+ this.states = new Map();
16
+ }
17
+ has(agentId) {
18
+ return this.states.has(agentId);
19
+ }
20
+ initialize(agentId, options) {
21
+ const timestamp = options?.timestamp ?? new Date().toISOString();
22
+ const rows = options?.rows?.length
23
+ ? options.rows.map(cloneRow)
24
+ : this.buildRowsFromItems(options?.items ?? [], options?.nextSeq ?? 1, timestamp);
25
+ const nextSeq = options?.nextSeq ?? (rows.length ? rows[rows.length - 1].seq + 1 : 1);
26
+ this.states.set(agentId, {
27
+ epoch: options?.epoch ?? randomUUID(),
28
+ rows,
29
+ nextSeq,
30
+ });
31
+ }
32
+ delete(agentId) {
33
+ this.states.delete(agentId);
34
+ }
35
+ getItems(agentId) {
36
+ return this.requireState(agentId).rows.map((row) => row.item);
37
+ }
38
+ getRows(agentId) {
39
+ return this.requireState(agentId).rows.map(cloneRow);
40
+ }
41
+ getEpoch(agentId) {
42
+ return this.requireState(agentId).epoch;
43
+ }
44
+ fetch(agentId, options) {
45
+ const state = this.requireState(agentId);
46
+ const direction = options?.direction ?? "tail";
47
+ const requestedLimit = options?.limit;
48
+ const limit = requestedLimit === undefined
49
+ ? DEFAULT_TIMELINE_FETCH_LIMIT
50
+ : Math.max(0, Math.floor(requestedLimit));
51
+ const cursor = options?.cursor;
52
+ const minSeq = state.rows.length ? state.rows[0].seq : 0;
53
+ const maxSeq = state.rows.length ? state.rows[state.rows.length - 1].seq : 0;
54
+ const selectAll = limit === 0;
55
+ const window = {
56
+ minSeq,
57
+ maxSeq,
58
+ nextSeq: state.nextSeq,
59
+ };
60
+ if (cursor && typeof cursor.epoch === "string" && cursor.epoch !== state.epoch) {
61
+ return {
62
+ epoch: state.epoch,
63
+ direction,
64
+ reset: true,
65
+ staleCursor: true,
66
+ gap: false,
67
+ window,
68
+ hasOlder: false,
69
+ hasNewer: false,
70
+ rows: state.rows.map(cloneRow),
71
+ };
72
+ }
73
+ const cloneRows = (items) => items.map(cloneRow);
74
+ if (direction === "after" && cursor && state.rows.length > 0 && cursor.seq < minSeq - 1) {
75
+ return {
76
+ epoch: state.epoch,
77
+ direction,
78
+ reset: true,
79
+ staleCursor: false,
80
+ gap: true,
81
+ window,
82
+ hasOlder: false,
83
+ hasNewer: false,
84
+ rows: cloneRows(state.rows),
85
+ };
86
+ }
87
+ if (state.rows.length === 0) {
88
+ return {
89
+ epoch: state.epoch,
90
+ direction,
91
+ reset: false,
92
+ staleCursor: false,
93
+ gap: false,
94
+ window,
95
+ hasOlder: false,
96
+ hasNewer: false,
97
+ rows: [],
98
+ };
99
+ }
100
+ if (direction === "tail") {
101
+ const selected = selectAll || limit >= state.rows.length
102
+ ? state.rows
103
+ : state.rows.slice(state.rows.length - limit);
104
+ return {
105
+ epoch: state.epoch,
106
+ direction,
107
+ reset: false,
108
+ staleCursor: false,
109
+ gap: false,
110
+ window,
111
+ hasOlder: selected.length > 0 && selected[0].seq > minSeq,
112
+ hasNewer: false,
113
+ rows: cloneRows(selected),
114
+ };
115
+ }
116
+ if (direction === "after") {
117
+ const baseSeq = cursor?.seq ?? 0;
118
+ const startIdx = state.rows.findIndex((row) => row.seq > baseSeq);
119
+ if (startIdx < 0) {
120
+ return {
121
+ epoch: state.epoch,
122
+ direction,
123
+ reset: false,
124
+ staleCursor: false,
125
+ gap: false,
126
+ window,
127
+ hasOlder: baseSeq >= minSeq,
128
+ hasNewer: false,
129
+ rows: [],
130
+ };
131
+ }
132
+ const selected = selectAll
133
+ ? state.rows.slice(startIdx)
134
+ : state.rows.slice(startIdx, startIdx + limit);
135
+ const lastSelected = selected[selected.length - 1];
136
+ return {
137
+ epoch: state.epoch,
138
+ direction,
139
+ reset: false,
140
+ staleCursor: false,
141
+ gap: false,
142
+ window,
143
+ hasOlder: selected[0].seq > minSeq,
144
+ hasNewer: Boolean(lastSelected && lastSelected.seq < maxSeq),
145
+ rows: cloneRows(selected),
146
+ };
147
+ }
148
+ const beforeSeq = cursor?.seq ?? state.nextSeq;
149
+ const endExclusive = state.rows.findIndex((row) => row.seq >= beforeSeq);
150
+ const boundedRows = endExclusive < 0 ? state.rows : state.rows.slice(0, endExclusive);
151
+ const selected = selectAll || limit >= boundedRows.length
152
+ ? boundedRows
153
+ : boundedRows.slice(boundedRows.length - limit);
154
+ return {
155
+ epoch: state.epoch,
156
+ direction,
157
+ reset: false,
158
+ staleCursor: false,
159
+ gap: false,
160
+ window,
161
+ hasOlder: selected.length > 0 && selected[0].seq > minSeq,
162
+ hasNewer: endExclusive >= 0,
163
+ rows: cloneRows(selected),
164
+ };
165
+ }
166
+ append(agentId, item, options) {
167
+ const state = this.requireState(agentId);
168
+ const row = {
169
+ seq: state.nextSeq,
170
+ timestamp: options?.timestamp ?? new Date().toISOString(),
171
+ item,
172
+ };
173
+ state.nextSeq += 1;
174
+ state.rows.push(row);
175
+ return cloneRow(row);
176
+ }
177
+ getLastItem(agentId) {
178
+ const state = this.requireState(agentId);
179
+ return state.rows[state.rows.length - 1]?.item ?? null;
180
+ }
181
+ getLastAssistantMessage(agentId) {
182
+ const rows = this.requireState(agentId).rows;
183
+ const chunks = [];
184
+ for (let i = rows.length - 1; i >= 0; i -= 1) {
185
+ const item = rows[i].item;
186
+ if (item.type !== "assistant_message") {
187
+ if (chunks.length > 0) {
188
+ break;
189
+ }
190
+ continue;
191
+ }
192
+ chunks.push(item.text);
193
+ }
194
+ if (chunks.length === 0) {
195
+ return null;
196
+ }
197
+ return chunks.reverse().join("");
198
+ }
199
+ getCanonicalUserMessagesById(agentId) {
200
+ const entries = this.requireState(agentId).rows.flatMap((row) => {
201
+ if (row.item.type !== "user_message") {
202
+ return [];
203
+ }
204
+ const messageId = normalizeTimelineMessageId(row.item.messageId);
205
+ if (!messageId) {
206
+ return [];
207
+ }
208
+ return [[messageId, row.item.text]];
209
+ });
210
+ return new Map(entries);
211
+ }
212
+ hasCommittedUserMessage(agentId, options) {
213
+ const messageId = normalizeTimelineMessageId(options.messageId);
214
+ if (!messageId) {
215
+ return false;
216
+ }
217
+ return this.requireState(agentId).rows.some((row) => {
218
+ if (row.item.type !== "user_message") {
219
+ return false;
220
+ }
221
+ const rowMessageId = normalizeTimelineMessageId(row.item.messageId);
222
+ return rowMessageId === messageId && row.item.text === options.text;
223
+ });
224
+ }
225
+ requireState(agentId) {
226
+ const state = this.states.get(agentId);
227
+ if (!state) {
228
+ throw new Error(`Unknown agent '${agentId}'`);
229
+ }
230
+ return state;
231
+ }
232
+ buildRowsFromItems(items, startSeq, timestamp) {
233
+ let nextSeq = startSeq;
234
+ return items.map((item) => {
235
+ const row = {
236
+ seq: nextSeq,
237
+ timestamp,
238
+ item,
239
+ };
240
+ nextSeq += 1;
241
+ return row;
242
+ });
243
+ }
244
+ }
245
+ //# sourceMappingURL=agent-timeline-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-timeline-store.js","sourceRoot":"","sources":["../../../../src/server/agent/agent-timeline-store.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,28 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { Logger } from "pino";
3
3
  import type { AgentProvider } from "./agent-sdk-types.js";
4
4
  import type { AgentManager } from "./agent-manager.js";
5
- import { AgentStorage } from "./agent-storage.js";
5
+ import type { AgentStorage } from "./agent-storage.js";
6
+ import { type ArchivePaseoWorktreeDependencies } from "../paseo-worktree-archive-service.js";
6
7
  import type { VoiceCallerContext, VoiceSpeakHandler } from "../voice-types.js";
7
8
  import type { TerminalManager } from "../../terminal/terminal-manager.js";
8
9
  import type { ScheduleService } from "../schedule/service.js";
9
10
  import type { ProviderDefinition } from "./provider-registry.js";
11
+ import type { GitHubService } from "../../services/github-service.js";
12
+ import type { WorkspaceGitService } from "../workspace-git-service.js";
13
+ import type { CreatePaseoWorktreeFn } from "../paseo-worktree-service.js";
10
14
  export interface AgentMcpServerOptions {
11
15
  agentManager: AgentManager;
12
16
  agentStorage: AgentStorage;
13
17
  terminalManager?: TerminalManager | null;
18
+ getDaemonTcpPort?: () => number | null;
14
19
  scheduleService?: ScheduleService | null;
15
20
  providerRegistry?: Record<AgentProvider, ProviderDefinition> | null;
21
+ github?: GitHubService;
22
+ workspaceGitService?: Pick<WorkspaceGitService, "getSnapshot" | "listWorktrees">;
23
+ archiveWorkspaceRecord?: ArchivePaseoWorktreeDependencies["archiveWorkspaceRecord"];
24
+ emitWorkspaceUpdatesForCwds?: ArchivePaseoWorktreeDependencies["emitWorkspaceUpdatesForCwds"];
25
+ emitSessionMessage?: ArchivePaseoWorktreeDependencies["emit"];
26
+ createPaseoWorktree?: CreatePaseoWorktreeFn;
16
27
  paseoHome?: string;
17
28
  /**
18
29
  * ID of the agent that is connecting to this MCP server.
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../../../src/server/agent/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,oBAAoB,CAAC;AAQ3E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlD,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAG1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAkBjE,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAAG,IAAI,CAAC;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,iBAAiB,GAAG,IAAI,CAAC;IAC1E,oBAAoB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,kBAAkB,GAAG,IAAI,CAAC;IAC5E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AA8GD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CAu/C7F"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../../../src/server/agent/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,oBAAoB,CAAC;AAc3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOvD,OAAO,EAGL,KAAK,gCAAgC,EACtC,MAAM,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAG1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAiBjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EACV,qBAAqB,EAGtB,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAAG,IAAI,CAAC;IACpE,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,mBAAmB,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,eAAe,CAAC,CAAC;IACjF,sBAAsB,CAAC,EAAE,gCAAgC,CAAC,wBAAwB,CAAC,CAAC;IACpF,2BAA2B,CAAC,EAAE,gCAAgC,CAAC,6BAA6B,CAAC,CAAC;IAC9F,kBAAkB,CAAC,EAAE,gCAAgC,CAAC,MAAM,CAAC,CAAC;IAC9D,mBAAmB,CAAC,EAAE,qBAAqB,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,iBAAiB,GAAG,IAAI,CAAC;IAC1E,oBAAoB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,kBAAkB,GAAG,IAAI,CAAC;IAC5E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AA4KD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CAwoD7F"}