@getpaseo/server 0.1.69 → 0.1.71

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 (360) hide show
  1. package/dist/server/client/daemon-client-runtime-metrics.js.map +1 -1
  2. package/dist/server/client/daemon-client-websocket-transport.js.map +1 -1
  3. package/dist/server/client/daemon-client.d.ts +57 -4
  4. package/dist/server/client/daemon-client.d.ts.map +1 -1
  5. package/dist/server/client/daemon-client.js +78 -3
  6. package/dist/server/client/daemon-client.js.map +1 -1
  7. package/dist/server/server/agent/agent-manager.d.ts +25 -4
  8. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  9. package/dist/server/server/agent/agent-manager.js +231 -26
  10. package/dist/server/server/agent/agent-manager.js.map +1 -1
  11. package/dist/server/server/agent/agent-metadata-generator.d.ts +2 -0
  12. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
  13. package/dist/server/server/agent/agent-metadata-generator.js +16 -7
  14. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  15. package/dist/server/server/agent/agent-projections.d.ts +6 -2
  16. package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
  17. package/dist/server/server/agent/agent-projections.js +32 -0
  18. package/dist/server/server/agent/agent-projections.js.map +1 -1
  19. package/dist/server/server/agent/agent-prompt.d.ts +72 -0
  20. package/dist/server/server/agent/agent-prompt.d.ts.map +1 -0
  21. package/dist/server/server/agent/agent-prompt.js +169 -0
  22. package/dist/server/server/agent/agent-prompt.js.map +1 -0
  23. package/dist/server/server/agent/agent-response-loop.js.map +1 -1
  24. package/dist/server/server/agent/agent-sdk-types.d.ts +27 -2
  25. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  26. package/dist/server/server/agent/agent-stream-coalescer.d.ts +1 -1
  27. package/dist/server/server/agent/agent-stream-coalescer.d.ts.map +1 -1
  28. package/dist/server/server/agent/agent-timeline-store.js +1 -1
  29. package/dist/server/server/agent/agent-timeline-store.js.map +1 -1
  30. package/dist/server/server/agent/create-agent-mode.d.ts +16 -0
  31. package/dist/server/server/agent/create-agent-mode.d.ts.map +1 -0
  32. package/dist/server/server/agent/create-agent-mode.js +26 -0
  33. package/dist/server/server/agent/create-agent-mode.js.map +1 -0
  34. package/dist/server/server/agent/import-sessions.d.ts +33 -0
  35. package/dist/server/server/agent/import-sessions.d.ts.map +1 -0
  36. package/dist/server/server/agent/import-sessions.js +107 -0
  37. package/dist/server/server/agent/import-sessions.js.map +1 -0
  38. package/dist/server/server/agent/mcp-server.d.ts +1 -1
  39. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  40. package/dist/server/server/agent/mcp-server.js +61 -14
  41. package/dist/server/server/agent/mcp-server.js.map +1 -1
  42. package/dist/server/server/agent/mcp-shared.d.ts +1 -43
  43. package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
  44. package/dist/server/server/agent/mcp-shared.js +0 -138
  45. package/dist/server/server/agent/mcp-shared.js.map +1 -1
  46. package/dist/server/server/agent/pcm16-resampler.js.map +1 -1
  47. package/dist/server/server/agent/prompt-attachments.d.ts.map +1 -1
  48. package/dist/server/server/agent/prompt-attachments.js +2 -0
  49. package/dist/server/server/agent/prompt-attachments.js.map +1 -1
  50. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  51. package/dist/server/server/agent/provider-manifest.d.ts +4 -1
  52. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  53. package/dist/server/server/agent/provider-manifest.js +11 -0
  54. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  55. package/dist/server/server/agent/provider-registry.d.ts +7 -0
  56. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  57. package/dist/server/server/agent/provider-registry.js +13 -3
  58. package/dist/server/server/agent/provider-registry.js.map +1 -1
  59. package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
  60. package/dist/server/server/agent/providers/acp-agent.d.ts +2 -1
  61. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
  62. package/dist/server/server/agent/providers/acp-agent.js +35 -17
  63. package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
  64. package/dist/server/server/agent/providers/{claude-agent.d.ts → claude/agent.d.ts} +9 -6
  65. package/dist/server/server/agent/providers/claude/agent.d.ts.map +1 -0
  66. package/dist/server/server/agent/providers/{claude-agent.js → claude/agent.js} +185 -152
  67. package/dist/server/server/agent/providers/claude/agent.js.map +1 -0
  68. package/dist/server/server/agent/providers/claude/{claude-models.d.ts → models.d.ts} +1 -1
  69. package/dist/server/server/agent/providers/claude/models.d.ts.map +1 -0
  70. package/dist/server/server/agent/providers/claude/{claude-models.js → models.js} +8 -1
  71. package/dist/server/server/agent/providers/claude/models.js.map +1 -0
  72. package/dist/server/server/agent/providers/claude/query.d.ts +14 -0
  73. package/dist/server/server/agent/providers/claude/query.d.ts.map +1 -0
  74. package/dist/server/server/agent/providers/claude/query.js +84 -0
  75. package/dist/server/server/agent/providers/claude/query.js.map +1 -0
  76. package/dist/server/server/agent/providers/claude/tool-call-mapper.js.map +1 -1
  77. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +19 -3
  78. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  79. package/dist/server/server/agent/providers/codex-app-server-agent.js +447 -93
  80. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  81. package/dist/server/server/agent/providers/diagnostic-utils.d.ts.map +1 -1
  82. package/dist/server/server/agent/providers/diagnostic-utils.js +4 -0
  83. package/dist/server/server/agent/providers/diagnostic-utils.js.map +1 -1
  84. package/dist/server/server/agent/providers/generic-acp-agent.d.ts +1 -1
  85. package/dist/server/server/agent/providers/generic-acp-agent.d.ts.map +1 -1
  86. package/dist/server/server/agent/providers/generic-acp-agent.js +0 -3
  87. package/dist/server/server/agent/providers/generic-acp-agent.js.map +1 -1
  88. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts.map +1 -1
  89. package/dist/server/server/agent/providers/mock-load-test-agent.js +6 -2
  90. package/dist/server/server/agent/providers/mock-load-test-agent.js.map +1 -1
  91. package/dist/server/server/agent/providers/opencode-agent.d.ts +3 -2
  92. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  93. package/dist/server/server/agent/providers/opencode-agent.js +204 -31
  94. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  95. package/dist/server/server/agent/providers/provider-image-output.d.ts +20 -0
  96. package/dist/server/server/agent/providers/provider-image-output.d.ts.map +1 -0
  97. package/dist/server/server/agent/providers/provider-image-output.js +51 -0
  98. package/dist/server/server/agent/providers/provider-image-output.js.map +1 -0
  99. package/dist/server/server/agent/providers/provider-runner.d.ts +3 -3
  100. package/dist/server/server/agent/providers/provider-runner.d.ts.map +1 -1
  101. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js.map +1 -1
  102. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +7 -7
  103. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  104. package/dist/server/server/agent/providers/tool-call-detail-primitives.js +12 -18
  105. package/dist/server/server/agent/providers/tool-call-detail-primitives.js.map +1 -1
  106. package/dist/server/server/agent/stt-manager.d.ts +1 -0
  107. package/dist/server/server/agent/stt-manager.d.ts.map +1 -1
  108. package/dist/server/server/agent/stt-manager.js +3 -0
  109. package/dist/server/server/agent/stt-manager.js.map +1 -1
  110. package/dist/server/server/agent/tool-name-normalization.js.map +1 -1
  111. package/dist/server/server/agent/tts-manager.js.map +1 -1
  112. package/dist/server/server/bootstrap.d.ts +1 -0
  113. package/dist/server/server/bootstrap.d.ts.map +1 -1
  114. package/dist/server/server/bootstrap.js +3 -1
  115. package/dist/server/server/bootstrap.js.map +1 -1
  116. package/dist/server/server/chat/chat-mentions.d.ts +24 -8
  117. package/dist/server/server/chat/chat-mentions.d.ts.map +1 -1
  118. package/dist/server/server/chat/chat-mentions.js +77 -35
  119. package/dist/server/server/chat/chat-mentions.js.map +1 -1
  120. package/dist/server/server/chat/chat-service.d.ts +4 -0
  121. package/dist/server/server/chat/chat-service.d.ts.map +1 -1
  122. package/dist/server/server/chat/chat-service.js +9 -0
  123. package/dist/server/server/chat/chat-service.js.map +1 -1
  124. package/dist/server/server/config.d.ts +1 -0
  125. package/dist/server/server/config.d.ts.map +1 -1
  126. package/dist/server/server/config.js +7 -1
  127. package/dist/server/server/config.js.map +1 -1
  128. package/dist/server/server/connection-offer.d.ts +1 -0
  129. package/dist/server/server/connection-offer.d.ts.map +1 -1
  130. package/dist/server/server/daemon-config-store.d.ts.map +1 -1
  131. package/dist/server/server/daemon-config-store.js +2 -6
  132. package/dist/server/server/daemon-config-store.js.map +1 -1
  133. package/dist/server/server/daemon-keypair.d.ts.map +1 -1
  134. package/dist/server/server/daemon-keypair.js +4 -2
  135. package/dist/server/server/daemon-keypair.js.map +1 -1
  136. package/dist/server/server/daemon-worker.js +3 -0
  137. package/dist/server/server/daemon-worker.js.map +1 -1
  138. package/dist/server/server/editor-targets.js.map +1 -1
  139. package/dist/server/server/exports.d.ts +1 -0
  140. package/dist/server/server/exports.d.ts.map +1 -1
  141. package/dist/server/server/exports.js +1 -0
  142. package/dist/server/server/exports.js.map +1 -1
  143. package/dist/server/server/json-utils.js.map +1 -1
  144. package/dist/server/server/logger.js.map +1 -1
  145. package/dist/server/server/loop/rpc-schemas.d.ts +68 -0
  146. package/dist/server/server/loop/rpc-schemas.d.ts.map +1 -1
  147. package/dist/server/server/loop/rpc-schemas.js +4 -0
  148. package/dist/server/server/loop/rpc-schemas.js.map +1 -1
  149. package/dist/server/server/loop-service.d.ts +8 -0
  150. package/dist/server/server/loop-service.d.ts.map +1 -1
  151. package/dist/server/server/loop-service.js +11 -2
  152. package/dist/server/server/loop-service.js.map +1 -1
  153. package/dist/server/server/package-version.d.ts +12 -0
  154. package/dist/server/server/package-version.d.ts.map +1 -1
  155. package/dist/server/server/package-version.js +13 -1
  156. package/dist/server/server/package-version.js.map +1 -1
  157. package/dist/server/server/pairing-offer.d.ts +1 -0
  158. package/dist/server/server/pairing-offer.d.ts.map +1 -1
  159. package/dist/server/server/pairing-offer.js +2 -1
  160. package/dist/server/server/pairing-offer.js.map +1 -1
  161. package/dist/server/server/pairing-qr.js +1 -1
  162. package/dist/server/server/pairing-qr.js.map +1 -1
  163. package/dist/server/server/paseo-env.d.ts +7 -3
  164. package/dist/server/server/paseo-env.d.ts.map +1 -1
  165. package/dist/server/server/paseo-env.js +16 -33
  166. package/dist/server/server/paseo-env.js.map +1 -1
  167. package/dist/server/server/paseo-home.js +2 -2
  168. package/dist/server/server/paseo-home.js.map +1 -1
  169. package/dist/server/server/persisted-config.d.ts +9 -0
  170. package/dist/server/server/persisted-config.d.ts.map +1 -1
  171. package/dist/server/server/persisted-config.js +6 -4
  172. package/dist/server/server/persisted-config.js.map +1 -1
  173. package/dist/server/server/persistence-hooks.js.map +1 -1
  174. package/dist/server/server/pid-lock.d.ts +21 -4
  175. package/dist/server/server/pid-lock.d.ts.map +1 -1
  176. package/dist/server/server/pid-lock.js +30 -8
  177. package/dist/server/server/pid-lock.js.map +1 -1
  178. package/dist/server/server/private-files.d.ts +7 -0
  179. package/dist/server/server/private-files.d.ts.map +1 -0
  180. package/dist/server/server/private-files.js +42 -0
  181. package/dist/server/server/private-files.js.map +1 -0
  182. package/dist/server/server/push/token-store.d.ts.map +1 -1
  183. package/dist/server/server/push/token-store.js +4 -6
  184. package/dist/server/server/push/token-store.js.map +1 -1
  185. package/dist/server/server/relay-transport.d.ts +2 -1
  186. package/dist/server/server/relay-transport.d.ts.map +1 -1
  187. package/dist/server/server/relay-transport.js +8 -5
  188. package/dist/server/server/relay-transport.js.map +1 -1
  189. package/dist/server/server/schedule/rpc-schemas.d.ts +1136 -0
  190. package/dist/server/server/schedule/rpc-schemas.d.ts.map +1 -1
  191. package/dist/server/server/schedule/rpc-schemas.js +39 -0
  192. package/dist/server/server/schedule/rpc-schemas.js.map +1 -1
  193. package/dist/server/server/schedule/service.d.ts +4 -2
  194. package/dist/server/server/schedule/service.d.ts.map +1 -1
  195. package/dist/server/server/schedule/service.js +106 -16
  196. package/dist/server/server/schedule/service.js.map +1 -1
  197. package/dist/server/server/schedule/types.d.ts +16 -0
  198. package/dist/server/server/schedule/types.d.ts.map +1 -1
  199. package/dist/server/server/script-health-monitor.js.map +1 -1
  200. package/dist/server/server/server-id.d.ts.map +1 -1
  201. package/dist/server/server/server-id.js +8 -3
  202. package/dist/server/server/server-id.js.map +1 -1
  203. package/dist/server/server/session.d.ts +5 -4
  204. package/dist/server/server/session.d.ts.map +1 -1
  205. package/dist/server/server/session.js +318 -149
  206. package/dist/server/server/session.js.map +1 -1
  207. package/dist/server/server/speech/audio.js.map +1 -1
  208. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts.map +1 -1
  209. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js +52 -52
  210. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js.map +1 -1
  211. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts.map +1 -1
  212. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js +9 -3
  213. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js.map +1 -1
  214. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts.map +1 -1
  215. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +12 -10
  216. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js.map +1 -1
  217. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js +2 -2
  218. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js.map +1 -1
  219. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js +1 -1
  220. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js.map +1 -1
  221. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js.map +1 -1
  222. package/dist/server/server/voice/voice-turn-controller.d.ts +16 -13
  223. package/dist/server/server/voice/voice-turn-controller.d.ts.map +1 -1
  224. package/dist/server/server/voice/voice-turn-controller.js +303 -71
  225. package/dist/server/server/voice/voice-turn-controller.js.map +1 -1
  226. package/dist/server/server/voice-config.js +1 -1
  227. package/dist/server/server/voice-config.js.map +1 -1
  228. package/dist/server/server/websocket-server.js.map +1 -1
  229. package/dist/server/server/workspace-directory.d.ts.map +1 -1
  230. package/dist/server/server/workspace-directory.js +4 -2
  231. package/dist/server/server/workspace-directory.js.map +1 -1
  232. package/dist/server/server/workspace-git-metadata.d.ts.map +1 -1
  233. package/dist/server/server/workspace-git-metadata.js +12 -5
  234. package/dist/server/server/workspace-git-metadata.js.map +1 -1
  235. package/dist/server/server/workspace-git-service.d.ts +4 -1
  236. package/dist/server/server/workspace-git-service.d.ts.map +1 -1
  237. package/dist/server/server/workspace-git-service.js +50 -2
  238. package/dist/server/server/workspace-git-service.js.map +1 -1
  239. package/dist/server/server/workspace-registry-model.d.ts.map +1 -1
  240. package/dist/server/server/workspace-registry-model.js +10 -3
  241. package/dist/server/server/workspace-registry-model.js.map +1 -1
  242. package/dist/server/server/worktree-branch-name-generator.d.ts +2 -0
  243. package/dist/server/server/worktree-branch-name-generator.d.ts.map +1 -1
  244. package/dist/server/server/worktree-branch-name-generator.js +18 -11
  245. package/dist/server/server/worktree-branch-name-generator.js.map +1 -1
  246. package/dist/server/server/worktree-session.js +1 -1
  247. package/dist/server/server/worktree-session.js.map +1 -1
  248. package/dist/server/services/github-service.d.ts +13 -0
  249. package/dist/server/services/github-service.d.ts.map +1 -1
  250. package/dist/server/services/github-service.js +21 -4
  251. package/dist/server/services/github-service.js.map +1 -1
  252. package/dist/server/shared/agent-labels.d.ts +2 -0
  253. package/dist/server/shared/agent-labels.d.ts.map +1 -0
  254. package/dist/server/shared/agent-labels.js +2 -0
  255. package/dist/server/shared/agent-labels.js.map +1 -0
  256. package/dist/server/shared/connection-offer.d.ts +10 -0
  257. package/dist/server/shared/connection-offer.d.ts.map +1 -1
  258. package/dist/server/shared/connection-offer.js +1 -0
  259. package/dist/server/shared/connection-offer.js.map +1 -1
  260. package/dist/server/shared/daemon-endpoints.d.ts +4 -0
  261. package/dist/server/shared/daemon-endpoints.d.ts.map +1 -1
  262. package/dist/server/shared/daemon-endpoints.js +6 -1
  263. package/dist/server/shared/daemon-endpoints.js.map +1 -1
  264. package/dist/server/shared/error-utils.d.ts +11 -0
  265. package/dist/server/shared/error-utils.d.ts.map +1 -0
  266. package/dist/server/shared/error-utils.js +27 -0
  267. package/dist/server/shared/error-utils.js.map +1 -0
  268. package/dist/server/shared/importable-providers.d.ts +7 -0
  269. package/dist/server/shared/importable-providers.d.ts.map +1 -0
  270. package/dist/server/shared/importable-providers.js +7 -0
  271. package/dist/server/shared/importable-providers.js.map +1 -0
  272. package/dist/server/shared/messages.d.ts +12753 -2085
  273. package/dist/server/shared/messages.d.ts.map +1 -1
  274. package/dist/server/shared/messages.js +61 -5
  275. package/dist/server/shared/messages.js.map +1 -1
  276. package/dist/server/shared/tool-call-display.d.ts.map +1 -1
  277. package/dist/server/shared/tool-call-display.js +2 -0
  278. package/dist/server/shared/tool-call-display.js.map +1 -1
  279. package/dist/server/terminal/terminal-manager.d.ts +2 -1
  280. package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
  281. package/dist/server/terminal/terminal-manager.js +2 -1
  282. package/dist/server/terminal/terminal-manager.js.map +1 -1
  283. package/dist/server/terminal/terminal-output-coalescer.js.map +1 -1
  284. package/dist/server/terminal/terminal-session-controller.d.ts.map +1 -1
  285. package/dist/server/terminal/terminal-session-controller.js +2 -0
  286. package/dist/server/terminal/terminal-session-controller.js.map +1 -1
  287. package/dist/server/terminal/terminal.d.ts +1 -1
  288. package/dist/server/terminal/terminal.d.ts.map +1 -1
  289. package/dist/server/terminal/terminal.js +53 -8
  290. package/dist/server/terminal/terminal.js.map +1 -1
  291. package/dist/server/terminal/worker-terminal-manager.js.map +1 -1
  292. package/dist/server/utils/build-metadata-prompt.d.ts +14 -0
  293. package/dist/server/utils/build-metadata-prompt.d.ts.map +1 -0
  294. package/dist/server/utils/build-metadata-prompt.js +28 -0
  295. package/dist/server/utils/build-metadata-prompt.js.map +1 -0
  296. package/dist/server/utils/checkout-git.d.ts +2 -1
  297. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  298. package/dist/server/utils/checkout-git.js +67 -11
  299. package/dist/server/utils/checkout-git.js.map +1 -1
  300. package/dist/server/utils/directory-suggestions.js.map +1 -1
  301. package/dist/server/utils/executable.d.ts +2 -1
  302. package/dist/server/utils/executable.d.ts.map +1 -1
  303. package/dist/server/utils/executable.js +50 -51
  304. package/dist/server/utils/executable.js.map +1 -1
  305. package/dist/server/utils/paseo-config-file.d.ts +1 -1
  306. package/dist/server/utils/paseo-config-file.d.ts.map +1 -1
  307. package/dist/server/utils/paseo-config-schema.d.ts +625 -0
  308. package/dist/server/utils/paseo-config-schema.d.ts.map +1 -1
  309. package/dist/server/utils/paseo-config-schema.js +17 -0
  310. package/dist/server/utils/paseo-config-schema.js.map +1 -1
  311. package/dist/server/utils/spawn.d.ts +2 -0
  312. package/dist/server/utils/spawn.d.ts.map +1 -1
  313. package/dist/server/utils/spawn.js +2 -1
  314. package/dist/server/utils/spawn.js.map +1 -1
  315. package/dist/server/utils/tree-kill.d.ts +18 -0
  316. package/dist/server/utils/tree-kill.d.ts.map +1 -0
  317. package/dist/server/utils/{process-tree.js → tree-kill.js} +14 -33
  318. package/dist/server/utils/tree-kill.js.map +1 -0
  319. package/dist/server/utils/worktree.js.map +1 -1
  320. package/dist/server/utils/wrap-user-instructions.d.ts +2 -0
  321. package/dist/server/utils/wrap-user-instructions.d.ts.map +1 -0
  322. package/dist/server/utils/wrap-user-instructions.js +13 -0
  323. package/dist/server/utils/wrap-user-instructions.js.map +1 -0
  324. package/dist/src/server/agent/provider-launch-config.js.map +1 -1
  325. package/dist/src/server/agent/provider-manifest.js +11 -0
  326. package/dist/src/server/agent/provider-manifest.js.map +1 -1
  327. package/dist/src/server/loop/rpc-schemas.js +4 -0
  328. package/dist/src/server/loop/rpc-schemas.js.map +1 -1
  329. package/dist/src/server/paseo-env.js +16 -33
  330. package/dist/src/server/paseo-env.js.map +1 -1
  331. package/dist/src/server/paseo-home.js +2 -2
  332. package/dist/src/server/paseo-home.js.map +1 -1
  333. package/dist/src/server/persisted-config.js +6 -4
  334. package/dist/src/server/persisted-config.js.map +1 -1
  335. package/dist/src/server/pid-lock.js +30 -8
  336. package/dist/src/server/pid-lock.js.map +1 -1
  337. package/dist/src/server/private-files.js +42 -0
  338. package/dist/src/server/private-files.js.map +1 -0
  339. package/dist/src/server/schedule/rpc-schemas.js +39 -0
  340. package/dist/src/server/schedule/rpc-schemas.js.map +1 -1
  341. package/dist/src/shared/messages.js +61 -5
  342. package/dist/src/shared/messages.js.map +1 -1
  343. package/dist/src/utils/executable.js +50 -51
  344. package/dist/src/utils/executable.js.map +1 -1
  345. package/dist/src/utils/paseo-config-schema.js +17 -0
  346. package/dist/src/utils/paseo-config-schema.js.map +1 -1
  347. package/dist/src/utils/spawn.js +2 -1
  348. package/dist/src/utils/spawn.js.map +1 -1
  349. package/package.json +5 -4
  350. package/dist/server/server/agent/providers/claude/claude-models.d.ts.map +0 -1
  351. package/dist/server/server/agent/providers/claude/claude-models.js.map +0 -1
  352. package/dist/server/server/agent/providers/claude-agent.d.ts.map +0 -1
  353. package/dist/server/server/agent/providers/claude-agent.js.map +0 -1
  354. package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.d.ts +0 -16
  355. package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.d.ts.map +0 -1
  356. package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.js +0 -35
  357. package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.js.map +0 -1
  358. package/dist/server/utils/process-tree.d.ts +0 -25
  359. package/dist/server/utils/process-tree.d.ts.map +0 -1
  360. package/dist/server/utils/process-tree.js.map +0 -1
@@ -2,16 +2,55 @@ import { randomUUID } from "node:crypto";
2
2
  import { resolve } from "node:path";
3
3
  import { stat } from "node:fs/promises";
4
4
  import { AGENT_LIFECYCLE_STATUSES, } from "../../shared/agent-lifecycle.js";
5
+ import { PARENT_AGENT_ID_LABEL } from "../../shared/agent-labels.js";
5
6
  import { z } from "zod";
6
7
  import { InMemoryAgentTimelineStore, } from "./agent-timeline-store.js";
7
8
  import { AGENT_STREAM_COALESCE_DEFAULT_WINDOW_MS, AgentStreamCoalescer, } from "./agent-stream-coalescer.js";
8
9
  import { ForegroundRunState } from "./foreground-run-state.js";
9
10
  import { getAgentProviderDefinition } from "./provider-manifest.js";
11
+ import { IMPORTABLE_PROVIDERS } from "./provider-registry.js";
10
12
  const RELOAD_SESSION_CLOSE_TIMEOUT_MS = 3000;
11
13
  const INTERRUPT_SESSION_TIMEOUT_MS = 2000;
14
+ const STORED_AGENT_CAPABILITIES = {
15
+ supportsStreaming: false,
16
+ supportsSessionPersistence: true,
17
+ supportsDynamicModes: false,
18
+ supportsMcpServers: false,
19
+ supportsReasoningStream: false,
20
+ supportsToolInvocations: true,
21
+ };
12
22
  function formatProviderList(providers) {
13
23
  return providers.length > 0 ? providers.join(", ") : "none";
14
24
  }
25
+ function buildStoredAgentConfig(record) {
26
+ const config = {
27
+ provider: record.provider,
28
+ cwd: record.cwd,
29
+ };
30
+ if (!record.config) {
31
+ return config;
32
+ }
33
+ if (record.config.title != null)
34
+ config.title = record.config.title;
35
+ if (record.config.modeId != null)
36
+ config.modeId = record.config.modeId;
37
+ if (record.config.model != null)
38
+ config.model = record.config.model;
39
+ if (record.config.thinkingOptionId != null) {
40
+ config.thinkingOptionId = record.config.thinkingOptionId;
41
+ }
42
+ if (record.config.featureValues != null) {
43
+ config.featureValues = record.config.featureValues;
44
+ }
45
+ if (record.config.extra != null)
46
+ config.extra = record.config.extra;
47
+ if (record.config.systemPrompt != null) {
48
+ config.systemPrompt = record.config.systemPrompt;
49
+ }
50
+ if (record.config.mcpServers != null)
51
+ config.mcpServers = record.config.mcpServers;
52
+ return config;
53
+ }
15
54
  export { AGENT_LIFECYCLE_STATUSES };
16
55
  function resolveInitialAttention(input) {
17
56
  if (input == null || !input.requiresAttention) {
@@ -99,6 +138,7 @@ export class AgentManager {
99
138
  constructor(options) {
100
139
  this.clients = new Map();
101
140
  this.providerEnabled = new Map();
141
+ this.providerDerivedFromId = new Map();
102
142
  this.agents = new Map();
103
143
  this.timelineStore = new InMemoryAgentTimelineStore();
104
144
  this.agentsAwaitingInitialSnapshotPersist = new Set();
@@ -137,6 +177,7 @@ export class AgentManager {
137
177
  for (const [provider, definition] of Object.entries(input.providerDefinitions)) {
138
178
  if (definition) {
139
179
  this.providerEnabled.set(provider, definition.enabled);
180
+ this.providerDerivedFromId.set(provider, definition.derivedFromProviderId ?? null);
140
181
  }
141
182
  }
142
183
  for (const [provider, client] of Object.entries(input.clients)) {
@@ -239,18 +280,15 @@ export class AgentManager {
239
280
  .filter((agent) => !agent.internal)
240
281
  .map((agent) => Object.assign({}, agent));
241
282
  }
242
- async listPersistedAgents(options) {
243
- if (options?.provider) {
244
- const client = this.requireClient(options.provider);
245
- if (!client.listPersistedAgents) {
246
- return [];
247
- }
248
- return client.listPersistedAgents({ limit: options.limit });
249
- }
250
- const providerEntries = Array.from(this.clients.entries()).filter(([, client]) => !!client.listPersistedAgents);
283
+ async listImportablePersistedAgents(options) {
284
+ const providerEntries = Array.from(this.clients.entries()).filter(([provider, client]) => !!client.listPersistedAgents &&
285
+ this.isProviderImportable(provider, options?.providerFilter));
251
286
  const descriptorLists = await Promise.all(providerEntries.map(async ([provider, client]) => {
252
287
  try {
253
- return await client.listPersistedAgents({ limit: options?.limit });
288
+ return await client.listPersistedAgents({
289
+ limit: options?.limit,
290
+ cwd: options?.cwd,
291
+ });
254
292
  }
255
293
  catch (error) {
256
294
  this.logger.warn({ err: error, provider }, "Failed to list persisted agents for provider");
@@ -263,6 +301,21 @@ export class AgentManager {
263
301
  .sort((a, b) => b.lastActivityAt.getTime() - a.lastActivityAt.getTime())
264
302
  .slice(0, limit);
265
303
  }
304
+ isProviderImportable(provider, providerFilter) {
305
+ if (!IMPORTABLE_PROVIDERS.includes(provider)) {
306
+ return false;
307
+ }
308
+ if (this.providerEnabled.get(provider) === false) {
309
+ return false;
310
+ }
311
+ if (this.providerDerivedFromId.get(provider) != null) {
312
+ return false;
313
+ }
314
+ if (providerFilter && !providerFilter.has(provider)) {
315
+ return false;
316
+ }
317
+ return true;
318
+ }
266
319
  async findPersistedAgent(provider, sessionId) {
267
320
  const client = this.requireClient(provider);
268
321
  if (!client.listPersistedAgents) {
@@ -408,26 +461,38 @@ export class AgentManager {
408
461
  provider: handle.provider,
409
462
  };
410
463
  const normalizedConfig = await this.normalizeConfig(mergedConfig);
411
- const resumeOverrides = normalizedConfig.model !== mergedConfig.model
412
- ? { ...overrides, model: normalizedConfig.model }
413
- : overrides;
464
+ const resumeOverrides = { ...overrides };
465
+ let hasResumeOverrides = overrides !== undefined;
466
+ if (normalizedConfig.model !== mergedConfig.model) {
467
+ resumeOverrides.model = normalizedConfig.model;
468
+ hasResumeOverrides = true;
469
+ }
470
+ if (normalizedConfig.modeId !== mergedConfig.modeId) {
471
+ resumeOverrides.modeId = normalizedConfig.modeId;
472
+ hasResumeOverrides = true;
473
+ }
414
474
  const launchContext = this.buildLaunchContext(resolvedAgentId);
415
475
  const client = this.requireClient(handle.provider);
416
476
  const available = await client.isAvailable();
417
477
  if (!available) {
418
478
  throw new Error(`Provider '${handle.provider}' is not available. Please ensure the CLI is installed.`);
419
479
  }
420
- const session = await client.resumeSession(handle, resumeOverrides, launchContext);
480
+ const session = await client.resumeSession(handle, hasResumeOverrides ? resumeOverrides : undefined, launchContext);
421
481
  return this.registerSession(session, normalizedConfig, resolvedAgentId, options);
422
482
  }
423
- // Hot-reload an active agent session with config overrides while preserving
424
- // in-memory timeline state.
425
- async reloadAgentSession(agentId, overrides) {
483
+ // Hot-reload an active agent session with config overrides. By default the
484
+ // in-memory timeline is preserved (used for voice-mode toggles and similar
485
+ // config swaps). When `rehydrateFromDisk` is set, the timeline is wiped so a
486
+ // new epoch is minted and provider history is re-streamed — this is what the
487
+ // user-facing "Reload agent" action wants when the on-disk session was
488
+ // mutated outside Paseo.
489
+ async reloadAgentSession(agentId, overrides, options) {
426
490
  let existing = this.requireSessionAgent(agentId);
427
491
  if (this.hasInFlightRun(agentId)) {
428
492
  await this.cancelAgentRun(agentId);
429
493
  existing = this.requireSessionAgent(agentId);
430
494
  }
495
+ const rehydrateFromDisk = options?.rehydrateFromDisk ?? false;
431
496
  const preservedHistoryPrimed = existing.historyPrimed;
432
497
  const preservedLastUsage = existing.lastUsage;
433
498
  const preservedLastError = existing.lastError;
@@ -454,13 +519,20 @@ export class AgentManager {
454
519
  }
455
520
  this.foregroundRuns.clearAgent(agentId, existing);
456
521
  await this.closeReloadedSession(existing.session, agentId);
522
+ if (rehydrateFromDisk) {
523
+ // Wipe both durable and in-memory timeline so registerSession mints a
524
+ // new epoch and hydrateTimelineFromProvider re-streams the freshly read
525
+ // provider history into an empty timeline.
526
+ await this.deleteCommittedTimeline(agentId);
527
+ this.timelineStore.delete(agentId);
528
+ }
457
529
  // Preserve existing labels and timeline during reload.
458
530
  return this.registerSession(session, normalizedConfig, agentId, {
459
531
  labels: existing.labels,
460
532
  createdAt: existing.createdAt,
461
533
  updatedAt: existing.updatedAt,
462
534
  lastUserMessageAt: existing.lastUserMessageAt,
463
- historyPrimed: preservedHistoryPrimed,
535
+ historyPrimed: rehydrateFromDisk ? false : preservedHistoryPrimed,
464
536
  lastUsage: preservedLastUsage,
465
537
  lastError: preservedLastError,
466
538
  attention: preservedAttention,
@@ -539,22 +611,99 @@ export class AgentManager {
539
611
  if (!stored) {
540
612
  throw new Error(`Agent ${agentId} not found in storage after snapshot`);
541
613
  }
614
+ const { archivedAt } = await this.markRecordArchived(stored);
615
+ await this.closeAgent(agentId);
616
+ await this.cascadeArchiveChildren(agentId);
617
+ return { archivedAt };
618
+ }
619
+ // Children created via the MCP `create_agent` tool carry the parent-agent-id
620
+ // label pointing back at the caller. Archiving the parent cascades to those
621
+ // children so subagent fleets don't outlive their orchestrator. Handoff agents
622
+ // launched the same way are caught by this cascade — see docs/agent-lifecycle.md
623
+ // for the accepted limitation.
624
+ async cascadeArchiveChildren(parentAgentId) {
625
+ const registry = this.registry;
626
+ if (!registry) {
627
+ return;
628
+ }
629
+ const records = await registry.list();
630
+ for (const record of records) {
631
+ if (record.archivedAt) {
632
+ continue;
633
+ }
634
+ if (record.labels?.[PARENT_AGENT_ID_LABEL] !== parentAgentId) {
635
+ continue;
636
+ }
637
+ if (this.agents.has(record.id)) {
638
+ await this.archiveAgent(record.id);
639
+ }
640
+ else {
641
+ await this.markRecordArchived(record);
642
+ await this.cascadeArchiveChildren(record.id);
643
+ }
644
+ }
645
+ }
646
+ async markRecordArchived(record) {
647
+ const registry = this.requireRegistry();
542
648
  const archivedAt = new Date().toISOString();
543
- const normalizedStatus = stored.lastStatus === "running" || stored.lastStatus === "initializing"
649
+ const normalizedStatus = record.lastStatus === "running" || record.lastStatus === "initializing"
544
650
  ? "idle"
545
- : stored.lastStatus;
546
- await this.registry.upsert({
547
- ...stored,
651
+ : record.lastStatus;
652
+ const archivedRecord = {
653
+ ...record,
548
654
  archivedAt,
549
655
  updatedAt: archivedAt,
550
656
  lastStatus: normalizedStatus,
551
657
  requiresAttention: false,
552
658
  attentionReason: null,
553
659
  attentionTimestamp: null,
660
+ };
661
+ await registry.upsert(archivedRecord);
662
+ await this.archiveNativeSessionBestEffort(record.provider, record.persistence);
663
+ if (this.agents.has(record.id)) {
664
+ this.notifyAgentState(record.id);
665
+ }
666
+ else if (!archivedRecord.internal) {
667
+ this.dispatchArchivedStoredAgent(archivedRecord);
668
+ }
669
+ return archivedRecord;
670
+ }
671
+ dispatchArchivedStoredAgent(record) {
672
+ const updatedAt = new Date(record.updatedAt);
673
+ this.dispatch({
674
+ type: "agent_state",
675
+ agent: {
676
+ id: record.id,
677
+ provider: record.provider,
678
+ cwd: record.cwd,
679
+ session: null,
680
+ capabilities: STORED_AGENT_CAPABILITIES,
681
+ config: buildStoredAgentConfig(record),
682
+ runtimeInfo: undefined,
683
+ lifecycle: "closed",
684
+ createdAt: new Date(record.createdAt),
685
+ updatedAt,
686
+ availableModes: [],
687
+ features: record.features,
688
+ currentModeId: record.lastModeId ?? null,
689
+ pendingPermissions: new Map(),
690
+ bufferedPermissionResolutions: new Map(),
691
+ inFlightPermissionResponses: new Set(),
692
+ pendingReplacement: false,
693
+ activeForegroundTurnId: null,
694
+ foregroundTurnWaiters: new Set(),
695
+ finalizedForegroundTurnIds: new Set(),
696
+ unsubscribeSession: null,
697
+ persistence: record.persistence ?? null,
698
+ historyPrimed: true,
699
+ lastUserMessageAt: record.lastUserMessageAt ? new Date(record.lastUserMessageAt) : null,
700
+ lastUsage: undefined,
701
+ lastError: record.lastError ?? undefined,
702
+ attention: { requiresAttention: false },
703
+ internal: record.internal,
704
+ labels: record.labels,
705
+ },
554
706
  });
555
- this.notifyAgentState(agentId);
556
- await this.closeAgent(agentId);
557
- return { archivedAt };
558
707
  }
559
708
  async setAgentMode(agentId, modeId) {
560
709
  const agent = this.requireSessionAgent(agentId);
@@ -671,6 +820,7 @@ export class AgentManager {
671
820
  attentionTimestamp: null,
672
821
  };
673
822
  await registry.upsert(nextRecord);
823
+ await this.archiveNativeSessionBestEffort(record.provider, record.persistence);
674
824
  return nextRecord;
675
825
  }
676
826
  async unarchiveSnapshot(agentId) {
@@ -754,6 +904,48 @@ export class AgentManager {
754
904
  canceled,
755
905
  };
756
906
  }
907
+ /**
908
+ * Try to run a prompt out-of-band — i.e. without allocating a foreground turn
909
+ * and without canceling any active turn. Returns true when the session
910
+ * accepted the prompt as a side-effect command (e.g. /goal pause). Events
911
+ * emitted by the handler flow through dispatchStream so they persist and
912
+ * broadcast like normal timeline events.
913
+ */
914
+ tryRunOutOfBand(agentId, prompt) {
915
+ const agent = this.requireSessionAgent(agentId);
916
+ const handler = agent.session.tryHandleOutOfBand?.(prompt);
917
+ if (!handler) {
918
+ return false;
919
+ }
920
+ const dispatch = (event) => {
921
+ // Persist timeline items so they show up in fetchAgentTimeline; broadcast
922
+ // for live subscribers. Other event types are broadcast only.
923
+ if (event.type === "timeline") {
924
+ this.touchUpdatedAt(agent);
925
+ const row = this.recordTimeline(agent.id, event.item);
926
+ this.dispatchStream(agent.id, event, {
927
+ seq: row.seq,
928
+ epoch: this.timelineStore.getEpoch(agent.id),
929
+ });
930
+ return;
931
+ }
932
+ this.dispatchStream(agent.id, event);
933
+ };
934
+ void (async () => {
935
+ try {
936
+ await handler.run({ emit: dispatch });
937
+ }
938
+ catch (error) {
939
+ const text = error instanceof Error ? error.message : "Out-of-band command failed";
940
+ dispatch({
941
+ type: "timeline",
942
+ provider: agent.provider,
943
+ item: { type: "assistant_message", text: `[Error] ${text}` },
944
+ });
945
+ }
946
+ })();
947
+ return true;
948
+ }
757
949
  recordUserMessage(agentId, text, options) {
758
950
  const agent = this.requireAgent(agentId);
759
951
  const normalizedMessageId = normalizeMessageId(options?.messageId);
@@ -1104,7 +1296,7 @@ export class AgentManager {
1104
1296
  // activeForegroundTurnId, settles waiters, and unblocks the streamForwarder.
1105
1297
  if (foregroundTurnId && agent.activeForegroundTurnId === foregroundTurnId) {
1106
1298
  this.logger.warn({ agentId, foregroundTurnId }, "cancelAgentRun: foreground turn still active after timeout, force-canceling");
1107
- this.dispatchSessionEvent(agent, {
1299
+ void this.dispatchSessionEvent(agent, {
1108
1300
  type: "turn_canceled",
1109
1301
  provider: agent.provider,
1110
1302
  reason: "interrupted",
@@ -2198,6 +2390,19 @@ export class AgentManager {
2198
2390
  }
2199
2391
  return client;
2200
2392
  }
2393
+ async archiveNativeSessionBestEffort(provider, persistence) {
2394
+ if (!persistence)
2395
+ return;
2396
+ const client = this.clients.get(provider);
2397
+ if (!client?.archiveNativeSession)
2398
+ return;
2399
+ try {
2400
+ await client.archiveNativeSession(persistence);
2401
+ }
2402
+ catch (error) {
2403
+ this.logger.warn({ error, provider, sessionId: persistence.sessionId }, "Failed to archive native session (best-effort)");
2404
+ }
2405
+ }
2201
2406
  requireAgent(id) {
2202
2407
  const normalizedId = validateAgentId(id, "requireAgent");
2203
2408
  const agent = this.agents.get(normalizedId);