@ck123pm/paseo-server 0.1.80

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 (1077) hide show
  1. package/.env.example +23 -0
  2. package/README.md +111 -0
  3. package/dist/scripts/dev-runner.js +49 -0
  4. package/dist/scripts/dev-runner.js.map +1 -0
  5. package/dist/scripts/mcp-stdio-socket-bridge-cli.mjs +62 -0
  6. package/dist/scripts/supervisor-entrypoint.js +126 -0
  7. package/dist/scripts/supervisor-entrypoint.js.map +1 -0
  8. package/dist/scripts/supervisor-log-config.js +31 -0
  9. package/dist/scripts/supervisor-log-config.js.map +1 -0
  10. package/dist/scripts/supervisor.js +213 -0
  11. package/dist/scripts/supervisor.js.map +1 -0
  12. package/dist/server/client/daemon-client-relay-e2ee-transport.d.ts +8 -0
  13. package/dist/server/client/daemon-client-relay-e2ee-transport.d.ts.map +1 -0
  14. package/dist/server/client/daemon-client-relay-e2ee-transport.js +161 -0
  15. package/dist/server/client/daemon-client-relay-e2ee-transport.js.map +1 -0
  16. package/dist/server/client/daemon-client-runtime-metrics.d.ts +39 -0
  17. package/dist/server/client/daemon-client-runtime-metrics.d.ts.map +1 -0
  18. package/dist/server/client/daemon-client-runtime-metrics.js +173 -0
  19. package/dist/server/client/daemon-client-runtime-metrics.js.map +1 -0
  20. package/dist/server/client/daemon-client-transport-types.d.ts +36 -0
  21. package/dist/server/client/daemon-client-transport-types.d.ts.map +1 -0
  22. package/dist/server/client/daemon-client-transport-types.js +2 -0
  23. package/dist/server/client/daemon-client-transport-types.js.map +1 -0
  24. package/dist/server/client/daemon-client-transport-utils.d.ts +9 -0
  25. package/dist/server/client/daemon-client-transport-utils.d.ts.map +1 -0
  26. package/dist/server/client/daemon-client-transport-utils.js +121 -0
  27. package/dist/server/client/daemon-client-transport-utils.js.map +1 -0
  28. package/dist/server/client/daemon-client-transport.d.ts +5 -0
  29. package/dist/server/client/daemon-client-transport.d.ts.map +1 -0
  30. package/dist/server/client/daemon-client-transport.js +4 -0
  31. package/dist/server/client/daemon-client-transport.js.map +1 -0
  32. package/dist/server/client/daemon-client-websocket-transport.d.ts +8 -0
  33. package/dist/server/client/daemon-client-websocket-transport.d.ts.map +1 -0
  34. package/dist/server/client/daemon-client-websocket-transport.js +120 -0
  35. package/dist/server/client/daemon-client-websocket-transport.js.map +1 -0
  36. package/dist/server/client/daemon-client.d.ts +862 -0
  37. package/dist/server/client/daemon-client.d.ts.map +1 -0
  38. package/dist/server/client/daemon-client.js +3376 -0
  39. package/dist/server/client/daemon-client.js.map +1 -0
  40. package/dist/server/client/terminal-stream-router.d.ts +24 -0
  41. package/dist/server/client/terminal-stream-router.d.ts.map +1 -0
  42. package/dist/server/client/terminal-stream-router.js +100 -0
  43. package/dist/server/client/terminal-stream-router.js.map +1 -0
  44. package/dist/server/server/agent/activity-curator.d.ts +11 -0
  45. package/dist/server/server/agent/activity-curator.d.ts.map +1 -0
  46. package/dist/server/server/agent/activity-curator.js +150 -0
  47. package/dist/server/server/agent/activity-curator.js.map +1 -0
  48. package/dist/server/server/agent/agent-archive.d.ts +11 -0
  49. package/dist/server/server/agent/agent-archive.d.ts.map +1 -0
  50. package/dist/server/server/agent/agent-archive.js +16 -0
  51. package/dist/server/server/agent/agent-archive.js.map +1 -0
  52. package/dist/server/server/agent/agent-loading.d.ts +12 -0
  53. package/dist/server/server/agent/agent-loading.d.ts.map +1 -0
  54. package/dist/server/server/agent/agent-loading.js +51 -0
  55. package/dist/server/server/agent/agent-loading.js.map +1 -0
  56. package/dist/server/server/agent/agent-manager.d.ts +342 -0
  57. package/dist/server/server/agent/agent-manager.d.ts.map +1 -0
  58. package/dist/server/server/agent/agent-manager.js +2572 -0
  59. package/dist/server/server/agent/agent-manager.js.map +1 -0
  60. package/dist/server/server/agent/agent-metadata-generator.d.ts +27 -0
  61. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -0
  62. package/dist/server/server/agent/agent-metadata-generator.js +104 -0
  63. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -0
  64. package/dist/server/server/agent/agent-projections.d.ts +24 -0
  65. package/dist/server/server/agent/agent-projections.d.ts.map +1 -0
  66. package/dist/server/server/agent/agent-projections.js +406 -0
  67. package/dist/server/server/agent/agent-projections.js.map +1 -0
  68. package/dist/server/server/agent/agent-prompt.d.ts +72 -0
  69. package/dist/server/server/agent/agent-prompt.d.ts.map +1 -0
  70. package/dist/server/server/agent/agent-prompt.js +196 -0
  71. package/dist/server/server/agent/agent-prompt.js.map +1 -0
  72. package/dist/server/server/agent/agent-response-loop.d.ts +62 -0
  73. package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -0
  74. package/dist/server/server/agent/agent-response-loop.js +321 -0
  75. package/dist/server/server/agent/agent-response-loop.js.map +1 -0
  76. package/dist/server/server/agent/agent-sdk-types.d.ts +540 -0
  77. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -0
  78. package/dist/server/server/agent/agent-sdk-types.js +22 -0
  79. package/dist/server/server/agent/agent-sdk-types.js.map +1 -0
  80. package/dist/server/server/agent/agent-storage.d.ts +346 -0
  81. package/dist/server/server/agent/agent-storage.d.ts.map +1 -0
  82. package/dist/server/server/agent/agent-storage.js +340 -0
  83. package/dist/server/server/agent/agent-storage.js.map +1 -0
  84. package/dist/server/server/agent/agent-stream-coalescer.d.ts +41 -0
  85. package/dist/server/server/agent/agent-stream-coalescer.d.ts.map +1 -0
  86. package/dist/server/server/agent/agent-stream-coalescer.js +166 -0
  87. package/dist/server/server/agent/agent-stream-coalescer.js.map +1 -0
  88. package/dist/server/server/agent/agent-timeline-store-types.d.ts +54 -0
  89. package/dist/server/server/agent/agent-timeline-store-types.d.ts.map +1 -0
  90. package/dist/server/server/agent/agent-timeline-store-types.js +2 -0
  91. package/dist/server/server/agent/agent-timeline-store-types.js.map +1 -0
  92. package/dist/server/server/agent/agent-timeline-store.d.ts +32 -0
  93. package/dist/server/server/agent/agent-timeline-store.d.ts.map +1 -0
  94. package/dist/server/server/agent/agent-timeline-store.js +263 -0
  95. package/dist/server/server/agent/agent-timeline-store.js.map +1 -0
  96. package/dist/server/server/agent/agent-title-limits.d.ts +3 -0
  97. package/dist/server/server/agent/agent-title-limits.d.ts.map +1 -0
  98. package/dist/server/server/agent/agent-title-limits.js +3 -0
  99. package/dist/server/server/agent/agent-title-limits.js.map +1 -0
  100. package/dist/server/server/agent/audio-utils.d.ts +3 -0
  101. package/dist/server/server/agent/audio-utils.d.ts.map +1 -0
  102. package/dist/server/server/agent/audio-utils.js +19 -0
  103. package/dist/server/server/agent/audio-utils.js.map +1 -0
  104. package/dist/server/server/agent/create-agent-mode.d.ts +16 -0
  105. package/dist/server/server/agent/create-agent-mode.d.ts.map +1 -0
  106. package/dist/server/server/agent/create-agent-mode.js +26 -0
  107. package/dist/server/server/agent/create-agent-mode.js.map +1 -0
  108. package/dist/server/server/agent/create-agent-title.d.ts +8 -0
  109. package/dist/server/server/agent/create-agent-title.d.ts.map +1 -0
  110. package/dist/server/server/agent/create-agent-title.js +29 -0
  111. package/dist/server/server/agent/create-agent-title.js.map +1 -0
  112. package/dist/server/server/agent/dictation-debug.d.ts +13 -0
  113. package/dist/server/server/agent/dictation-debug.d.ts.map +1 -0
  114. package/dist/server/server/agent/dictation-debug.js +50 -0
  115. package/dist/server/server/agent/dictation-debug.js.map +1 -0
  116. package/dist/server/server/agent/foreground-run-state.d.ts +50 -0
  117. package/dist/server/server/agent/foreground-run-state.d.ts.map +1 -0
  118. package/dist/server/server/agent/foreground-run-state.js +160 -0
  119. package/dist/server/server/agent/foreground-run-state.js.map +1 -0
  120. package/dist/server/server/agent/import-sessions.d.ts +52 -0
  121. package/dist/server/server/agent/import-sessions.d.ts.map +1 -0
  122. package/dist/server/server/agent/import-sessions.js +212 -0
  123. package/dist/server/server/agent/import-sessions.js.map +1 -0
  124. package/dist/server/server/agent/mcp-server.d.ts +46 -0
  125. package/dist/server/server/agent/mcp-server.d.ts.map +1 -0
  126. package/dist/server/server/agent/mcp-server.js +1962 -0
  127. package/dist/server/server/agent/mcp-server.js.map +1 -0
  128. package/dist/server/server/agent/mcp-shared.d.ts +316 -0
  129. package/dist/server/server/agent/mcp-shared.d.ts.map +1 -0
  130. package/dist/server/server/agent/mcp-shared.js +194 -0
  131. package/dist/server/server/agent/mcp-shared.js.map +1 -0
  132. package/dist/server/server/agent/model-resolver.d.ts +11 -0
  133. package/dist/server/server/agent/model-resolver.d.ts.map +1 -0
  134. package/dist/server/server/agent/model-resolver.js +27 -0
  135. package/dist/server/server/agent/model-resolver.js.map +1 -0
  136. package/dist/server/server/agent/pcm16-resampler.d.ts +14 -0
  137. package/dist/server/server/agent/pcm16-resampler.d.ts.map +1 -0
  138. package/dist/server/server/agent/pcm16-resampler.js +63 -0
  139. package/dist/server/server/agent/pcm16-resampler.js.map +1 -0
  140. package/dist/server/server/agent/prompt-attachments.d.ts +7 -0
  141. package/dist/server/server/agent/prompt-attachments.d.ts.map +1 -0
  142. package/dist/server/server/agent/prompt-attachments.js +72 -0
  143. package/dist/server/server/agent/prompt-attachments.js.map +1 -0
  144. package/dist/server/server/agent/provider-history-timestamps.d.ts +2 -0
  145. package/dist/server/server/agent/provider-history-timestamps.d.ts.map +1 -0
  146. package/dist/server/server/agent/provider-history-timestamps.js +16 -0
  147. package/dist/server/server/agent/provider-history-timestamps.js.map +1 -0
  148. package/dist/server/server/agent/provider-launch-config.d.ts +368 -0
  149. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -0
  150. package/dist/server/server/agent/provider-launch-config.js +190 -0
  151. package/dist/server/server/agent/provider-launch-config.js.map +1 -0
  152. package/dist/server/server/agent/provider-manifest.d.ts +33 -0
  153. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -0
  154. package/dist/server/server/agent/provider-manifest.js +211 -0
  155. package/dist/server/server/agent/provider-manifest.js.map +1 -0
  156. package/dist/server/server/agent/provider-registry.d.ts +33 -0
  157. package/dist/server/server/agent/provider-registry.d.ts.map +1 -0
  158. package/dist/server/server/agent/provider-registry.js +396 -0
  159. package/dist/server/server/agent/provider-registry.js.map +1 -0
  160. package/dist/server/server/agent/provider-snapshot-manager.d.ts +49 -0
  161. package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -0
  162. package/dist/server/server/agent/provider-snapshot-manager.js +348 -0
  163. package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -0
  164. package/dist/server/server/agent/providers/acp-agent.d.ts +286 -0
  165. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -0
  166. package/dist/server/server/agent/providers/acp-agent.js +2070 -0
  167. package/dist/server/server/agent/providers/acp-agent.js.map +1 -0
  168. package/dist/server/server/agent/providers/claude/agent.d.ts +60 -0
  169. package/dist/server/server/agent/providers/claude/agent.d.ts.map +1 -0
  170. package/dist/server/server/agent/providers/claude/agent.js +3815 -0
  171. package/dist/server/server/agent/providers/claude/agent.js.map +1 -0
  172. package/dist/server/server/agent/providers/claude/models.d.ts +10 -0
  173. package/dist/server/server/agent/providers/claude/models.d.ts.map +1 -0
  174. package/dist/server/server/agent/providers/claude/models.js +170 -0
  175. package/dist/server/server/agent/providers/claude/models.js.map +1 -0
  176. package/dist/server/server/agent/providers/claude/partial-json.d.ts +5 -0
  177. package/dist/server/server/agent/providers/claude/partial-json.d.ts.map +1 -0
  178. package/dist/server/server/agent/providers/claude/partial-json.js +306 -0
  179. package/dist/server/server/agent/providers/claude/partial-json.js.map +1 -0
  180. package/dist/server/server/agent/providers/claude/project-dir.d.ts +5 -0
  181. package/dist/server/server/agent/providers/claude/project-dir.d.ts.map +1 -0
  182. package/dist/server/server/agent/providers/claude/project-dir.js +40 -0
  183. package/dist/server/server/agent/providers/claude/project-dir.js.map +1 -0
  184. package/dist/server/server/agent/providers/claude/query.d.ts +14 -0
  185. package/dist/server/server/agent/providers/claude/query.d.ts.map +1 -0
  186. package/dist/server/server/agent/providers/claude/query.js +84 -0
  187. package/dist/server/server/agent/providers/claude/query.js.map +1 -0
  188. package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts +22 -0
  189. package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts.map +1 -0
  190. package/dist/server/server/agent/providers/claude/sidechain-tracker.js +232 -0
  191. package/dist/server/server/agent/providers/claude/sidechain-tracker.js.map +1 -0
  192. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +55 -0
  193. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts.map +1 -0
  194. package/dist/server/server/agent/providers/claude/task-notification-tool-call.js +272 -0
  195. package/dist/server/server/agent/providers/claude/task-notification-tool-call.js.map +1 -0
  196. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts +3 -0
  197. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts.map +1 -0
  198. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js +130 -0
  199. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js.map +1 -0
  200. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts +16 -0
  201. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts.map +1 -0
  202. package/dist/server/server/agent/providers/claude/tool-call-mapper.js +129 -0
  203. package/dist/server/server/agent/providers/claude/tool-call-mapper.js.map +1 -0
  204. package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +32 -0
  205. package/dist/server/server/agent/providers/codex/app-server-transport.d.ts.map +1 -0
  206. package/dist/server/server/agent/providers/codex/app-server-transport.js +214 -0
  207. package/dist/server/server/agent/providers/codex/app-server-transport.js.map +1 -0
  208. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.d.ts +31 -0
  209. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.d.ts.map +1 -0
  210. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.js +172 -0
  211. package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.js.map +1 -0
  212. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts +12 -0
  213. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts.map +1 -0
  214. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js +104 -0
  215. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js.map +1 -0
  216. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts +15 -0
  217. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -0
  218. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +791 -0
  219. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -0
  220. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +307 -0
  221. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -0
  222. package/dist/server/server/agent/providers/codex-app-server-agent.js +4364 -0
  223. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -0
  224. package/dist/server/server/agent/providers/codex-feature-definitions.d.ts +11 -0
  225. package/dist/server/server/agent/providers/codex-feature-definitions.d.ts.map +1 -0
  226. package/dist/server/server/agent/providers/codex-feature-definitions.js +45 -0
  227. package/dist/server/server/agent/providers/codex-feature-definitions.js.map +1 -0
  228. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts +9 -0
  229. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts.map +1 -0
  230. package/dist/server/server/agent/providers/codex-rollout-timeline.js +555 -0
  231. package/dist/server/server/agent/providers/codex-rollout-timeline.js.map +1 -0
  232. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts +25 -0
  233. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts.map +1 -0
  234. package/dist/server/server/agent/providers/copilot-acp-agent.js +203 -0
  235. package/dist/server/server/agent/providers/copilot-acp-agent.js.map +1 -0
  236. package/dist/server/server/agent/providers/cursor-acp-agent.d.ts +21 -0
  237. package/dist/server/server/agent/providers/cursor-acp-agent.d.ts.map +1 -0
  238. package/dist/server/server/agent/providers/cursor-acp-agent.js +95 -0
  239. package/dist/server/server/agent/providers/cursor-acp-agent.js.map +1 -0
  240. package/dist/server/server/agent/providers/diagnostic-utils.d.ts +17 -0
  241. package/dist/server/server/agent/providers/diagnostic-utils.d.ts.map +1 -0
  242. package/dist/server/server/agent/providers/diagnostic-utils.js +127 -0
  243. package/dist/server/server/agent/providers/diagnostic-utils.js.map +1 -0
  244. package/dist/server/server/agent/providers/generic-acp-agent.d.ts +33 -0
  245. package/dist/server/server/agent/providers/generic-acp-agent.d.ts.map +1 -0
  246. package/dist/server/server/agent/providers/generic-acp-agent.js +234 -0
  247. package/dist/server/server/agent/providers/generic-acp-agent.js.map +1 -0
  248. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +68 -0
  249. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts.map +1 -0
  250. package/dist/server/server/agent/providers/mock-load-test-agent.js +770 -0
  251. package/dist/server/server/agent/providers/mock-load-test-agent.js.map +1 -0
  252. package/dist/server/server/agent/providers/opencode/runtime.d.ts +27 -0
  253. package/dist/server/server/agent/providers/opencode/runtime.d.ts.map +1 -0
  254. package/dist/server/server/agent/providers/opencode/runtime.js +5 -0
  255. package/dist/server/server/agent/providers/opencode/runtime.js.map +1 -0
  256. package/dist/server/server/agent/providers/opencode/server-manager.d.ts +55 -0
  257. package/dist/server/server/agent/providers/opencode/server-manager.d.ts.map +1 -0
  258. package/dist/server/server/agent/providers/opencode/server-manager.js +256 -0
  259. package/dist/server/server/agent/providers/opencode/server-manager.js.map +1 -0
  260. package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +22 -0
  261. package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts.map +1 -0
  262. package/dist/server/server/agent/providers/opencode/test-server-manager.js +28 -0
  263. package/dist/server/server/agent/providers/opencode/test-server-manager.js.map +1 -0
  264. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts +83 -0
  265. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts.map +1 -0
  266. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js +225 -0
  267. package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js.map +1 -0
  268. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +3 -0
  269. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts.map +1 -0
  270. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +131 -0
  271. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js.map +1 -0
  272. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts +13 -0
  273. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts.map +1 -0
  274. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +53 -0
  275. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js.map +1 -0
  276. package/dist/server/server/agent/providers/opencode-agent.d.ts +231 -0
  277. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -0
  278. package/dist/server/server/agent/providers/opencode-agent.js +2443 -0
  279. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -0
  280. package/dist/server/server/agent/providers/pi/agent.d.ts +84 -0
  281. package/dist/server/server/agent/providers/pi/agent.d.ts.map +1 -0
  282. package/dist/server/server/agent/providers/pi/agent.js +828 -0
  283. package/dist/server/server/agent/providers/pi/agent.js.map +1 -0
  284. package/dist/server/server/agent/providers/pi/cli-runtime.d.ts +18 -0
  285. package/dist/server/server/agent/providers/pi/cli-runtime.d.ts.map +1 -0
  286. package/dist/server/server/agent/providers/pi/cli-runtime.js +211 -0
  287. package/dist/server/server/agent/providers/pi/cli-runtime.js.map +1 -0
  288. package/dist/server/server/agent/providers/pi/history-mapper.d.ts +5 -0
  289. package/dist/server/server/agent/providers/pi/history-mapper.d.ts.map +1 -0
  290. package/dist/server/server/agent/providers/pi/history-mapper.js +139 -0
  291. package/dist/server/server/agent/providers/pi/history-mapper.js.map +1 -0
  292. package/dist/server/server/agent/providers/pi/rpc-types.d.ts +185 -0
  293. package/dist/server/server/agent/providers/pi/rpc-types.d.ts.map +1 -0
  294. package/dist/server/server/agent/providers/pi/rpc-types.js +2 -0
  295. package/dist/server/server/agent/providers/pi/rpc-types.js.map +1 -0
  296. package/dist/server/server/agent/providers/pi/runtime.d.ts +47 -0
  297. package/dist/server/server/agent/providers/pi/runtime.d.ts.map +1 -0
  298. package/dist/server/server/agent/providers/pi/runtime.js +47 -0
  299. package/dist/server/server/agent/providers/pi/runtime.js.map +1 -0
  300. package/dist/server/server/agent/providers/pi/session-descriptor.d.ts +10 -0
  301. package/dist/server/server/agent/providers/pi/session-descriptor.d.ts.map +1 -0
  302. package/dist/server/server/agent/providers/pi/session-descriptor.js +300 -0
  303. package/dist/server/server/agent/providers/pi/session-descriptor.js.map +1 -0
  304. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts +52 -0
  305. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts.map +1 -0
  306. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js +109 -0
  307. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js.map +1 -0
  308. package/dist/server/server/agent/providers/pi/tool-call-mapper.d.ts +112 -0
  309. package/dist/server/server/agent/providers/pi/tool-call-mapper.d.ts.map +1 -0
  310. package/dist/server/server/agent/providers/pi/tool-call-mapper.js +284 -0
  311. package/dist/server/server/agent/providers/pi/tool-call-mapper.js.map +1 -0
  312. package/dist/server/server/agent/providers/provider-image-output.d.ts +20 -0
  313. package/dist/server/server/agent/providers/provider-image-output.d.ts.map +1 -0
  314. package/dist/server/server/agent/providers/provider-image-output.js +51 -0
  315. package/dist/server/server/agent/providers/provider-image-output.js.map +1 -0
  316. package/dist/server/server/agent/providers/provider-runner.d.ts +27 -0
  317. package/dist/server/server/agent/providers/provider-runner.d.ts.map +1 -0
  318. package/dist/server/server/agent/providers/provider-runner.js +81 -0
  319. package/dist/server/server/agent/providers/provider-runner.js.map +1 -0
  320. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.d.ts +3 -0
  321. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.d.ts.map +1 -0
  322. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js +60 -0
  323. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js.map +1 -0
  324. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +1751 -0
  325. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -0
  326. package/dist/server/server/agent/providers/tool-call-detail-primitives.js +709 -0
  327. package/dist/server/server/agent/providers/tool-call-detail-primitives.js.map +1 -0
  328. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts +20 -0
  329. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts.map +1 -0
  330. package/dist/server/server/agent/providers/tool-call-mapper-utils.js +146 -0
  331. package/dist/server/server/agent/providers/tool-call-mapper-utils.js.map +1 -0
  332. package/dist/server/server/agent/recordings-debug.d.ts +3 -0
  333. package/dist/server/server/agent/recordings-debug.d.ts.map +1 -0
  334. package/dist/server/server/agent/recordings-debug.js +19 -0
  335. package/dist/server/server/agent/recordings-debug.js.map +1 -0
  336. package/dist/server/server/agent/stt-debug.d.ts +10 -0
  337. package/dist/server/server/agent/stt-debug.d.ts.map +1 -0
  338. package/dist/server/server/agent/stt-debug.js +33 -0
  339. package/dist/server/server/agent/stt-debug.js.map +1 -0
  340. package/dist/server/server/agent/stt-manager.d.ts +38 -0
  341. package/dist/server/server/agent/stt-manager.d.ts.map +1 -0
  342. package/dist/server/server/agent/stt-manager.js +246 -0
  343. package/dist/server/server/agent/stt-manager.js.map +1 -0
  344. package/dist/server/server/agent/system-prompt.d.ts +2 -0
  345. package/dist/server/server/agent/system-prompt.d.ts.map +1 -0
  346. package/dist/server/server/agent/system-prompt.js +8 -0
  347. package/dist/server/server/agent/system-prompt.js.map +1 -0
  348. package/dist/server/server/agent/timeline-append.d.ts +10 -0
  349. package/dist/server/server/agent/timeline-append.d.ts.map +1 -0
  350. package/dist/server/server/agent/timeline-append.js +27 -0
  351. package/dist/server/server/agent/timeline-append.js.map +1 -0
  352. package/dist/server/server/agent/timeline-projection.d.ts +55 -0
  353. package/dist/server/server/agent/timeline-projection.d.ts.map +1 -0
  354. package/dist/server/server/agent/timeline-projection.js +279 -0
  355. package/dist/server/server/agent/timeline-projection.js.map +1 -0
  356. package/dist/server/server/agent/tool-name-normalization.d.ts +9 -0
  357. package/dist/server/server/agent/tool-name-normalization.d.ts.map +1 -0
  358. package/dist/server/server/agent/tool-name-normalization.js +82 -0
  359. package/dist/server/server/agent/tool-name-normalization.js.map +1 -0
  360. package/dist/server/server/agent/tts-debug.d.ts +8 -0
  361. package/dist/server/server/agent/tts-debug.d.ts.map +1 -0
  362. package/dist/server/server/agent/tts-debug.js +24 -0
  363. package/dist/server/server/agent/tts-debug.js.map +1 -0
  364. package/dist/server/server/agent/tts-manager.d.ts +41 -0
  365. package/dist/server/server/agent/tts-manager.d.ts.map +1 -0
  366. package/dist/server/server/agent/tts-manager.js +375 -0
  367. package/dist/server/server/agent/tts-manager.js.map +1 -0
  368. package/dist/server/server/agent/wait-for-agent-tracker.d.ts +15 -0
  369. package/dist/server/server/agent/wait-for-agent-tracker.d.ts.map +1 -0
  370. package/dist/server/server/agent/wait-for-agent-tracker.js +53 -0
  371. package/dist/server/server/agent/wait-for-agent-tracker.js.map +1 -0
  372. package/dist/server/server/agent-attention-policy.d.ts +20 -0
  373. package/dist/server/server/agent-attention-policy.d.ts.map +1 -0
  374. package/dist/server/server/agent-attention-policy.js +24 -0
  375. package/dist/server/server/agent-attention-policy.js.map +1 -0
  376. package/dist/server/server/auth.d.ts +25 -0
  377. package/dist/server/server/auth.d.ts.map +1 -0
  378. package/dist/server/server/auth.js +93 -0
  379. package/dist/server/server/auth.js.map +1 -0
  380. package/dist/server/server/auto-archive-on-merge/archive-if-safe.d.ts +40 -0
  381. package/dist/server/server/auto-archive-on-merge/archive-if-safe.d.ts.map +1 -0
  382. package/dist/server/server/auto-archive-on-merge/archive-if-safe.js +80 -0
  383. package/dist/server/server/auto-archive-on-merge/archive-if-safe.js.map +1 -0
  384. package/dist/server/server/auto-archive-on-merge/index.d.ts +8 -0
  385. package/dist/server/server/auto-archive-on-merge/index.d.ts.map +1 -0
  386. package/dist/server/server/auto-archive-on-merge/index.js +15 -0
  387. package/dist/server/server/auto-archive-on-merge/index.js.map +1 -0
  388. package/dist/server/server/bootstrap.d.ts +98 -0
  389. package/dist/server/server/bootstrap.d.ts.map +1 -0
  390. package/dist/server/server/bootstrap.js +800 -0
  391. package/dist/server/server/bootstrap.js.map +1 -0
  392. package/dist/server/server/chat/chat-mentions.d.ts +47 -0
  393. package/dist/server/server/chat/chat-mentions.d.ts.map +1 -0
  394. package/dist/server/server/chat/chat-mentions.js +113 -0
  395. package/dist/server/server/chat/chat-mentions.js.map +1 -0
  396. package/dist/server/server/chat/chat-rpc-schemas.d.ts +728 -0
  397. package/dist/server/server/chat/chat-rpc-schemas.d.ts.map +1 -0
  398. package/dist/server/server/chat/chat-rpc-schemas.js +103 -0
  399. package/dist/server/server/chat/chat-rpc-schemas.js.map +1 -0
  400. package/dist/server/server/chat/chat-service.d.ts +78 -0
  401. package/dist/server/server/chat/chat-service.d.ts.map +1 -0
  402. package/dist/server/server/chat/chat-service.js +339 -0
  403. package/dist/server/server/chat/chat-service.js.map +1 -0
  404. package/dist/server/server/chat/chat-types.d.ts +75 -0
  405. package/dist/server/server/chat/chat-types.d.ts.map +1 -0
  406. package/dist/server/server/chat/chat-types.js +22 -0
  407. package/dist/server/server/chat/chat-types.js.map +1 -0
  408. package/dist/server/server/checkout/status-projection.d.ts +19 -0
  409. package/dist/server/server/checkout/status-projection.d.ts.map +1 -0
  410. package/dist/server/server/checkout/status-projection.js +102 -0
  411. package/dist/server/server/checkout/status-projection.js.map +1 -0
  412. package/dist/server/server/checkout-diff-manager.d.ts +41 -0
  413. package/dist/server/server/checkout-diff-manager.d.ts.map +1 -0
  414. package/dist/server/server/checkout-diff-manager.js +189 -0
  415. package/dist/server/server/checkout-diff-manager.js.map +1 -0
  416. package/dist/server/server/checkout-git-utils.d.ts +11 -0
  417. package/dist/server/server/checkout-git-utils.d.ts.map +1 -0
  418. package/dist/server/server/checkout-git-utils.js +34 -0
  419. package/dist/server/server/checkout-git-utils.js.map +1 -0
  420. package/dist/server/server/client-message-id.d.ts +3 -0
  421. package/dist/server/server/client-message-id.d.ts.map +1 -0
  422. package/dist/server/server/client-message-id.js +12 -0
  423. package/dist/server/server/client-message-id.js.map +1 -0
  424. package/dist/server/server/config.d.ts +23 -0
  425. package/dist/server/server/config.d.ts.map +1 -0
  426. package/dist/server/server/config.js +233 -0
  427. package/dist/server/server/config.js.map +1 -0
  428. package/dist/server/server/connection-offer.d.ts +20 -0
  429. package/dist/server/server/connection-offer.d.ts.map +1 -0
  430. package/dist/server/server/connection-offer.js +59 -0
  431. package/dist/server/server/connection-offer.js.map +1 -0
  432. package/dist/server/server/daemon-config-store.d.ts +25 -0
  433. package/dist/server/server/daemon-config-store.d.ts.map +1 -0
  434. package/dist/server/server/daemon-config-store.js +138 -0
  435. package/dist/server/server/daemon-config-store.js.map +1 -0
  436. package/dist/server/server/daemon-keypair.d.ts +8 -0
  437. package/dist/server/server/daemon-keypair.d.ts.map +1 -0
  438. package/dist/server/server/daemon-keypair.js +42 -0
  439. package/dist/server/server/daemon-keypair.js.map +1 -0
  440. package/dist/server/server/daemon-version.d.ts +5 -0
  441. package/dist/server/server/daemon-version.d.ts.map +1 -0
  442. package/dist/server/server/daemon-version.js +22 -0
  443. package/dist/server/server/daemon-version.js.map +1 -0
  444. package/dist/server/server/daemon-worker.d.ts +2 -0
  445. package/dist/server/server/daemon-worker.d.ts.map +1 -0
  446. package/dist/server/server/daemon-worker.js +155 -0
  447. package/dist/server/server/daemon-worker.js.map +1 -0
  448. package/dist/server/server/dictation/dictation-stream-manager.d.ts +87 -0
  449. package/dist/server/server/dictation/dictation-stream-manager.d.ts.map +1 -0
  450. package/dist/server/server/dictation/dictation-stream-manager.js +572 -0
  451. package/dist/server/server/dictation/dictation-stream-manager.js.map +1 -0
  452. package/dist/server/server/editor-targets.d.ts +18 -0
  453. package/dist/server/server/editor-targets.d.ts.map +1 -0
  454. package/dist/server/server/editor-targets.js +109 -0
  455. package/dist/server/server/editor-targets.js.map +1 -0
  456. package/dist/server/server/exports.d.ts +26 -0
  457. package/dist/server/server/exports.d.ts.map +1 -0
  458. package/dist/server/server/exports.js +25 -0
  459. package/dist/server/server/exports.js.map +1 -0
  460. package/dist/server/server/file-download/token-store.d.ts +24 -0
  461. package/dist/server/server/file-download/token-store.d.ts.map +1 -0
  462. package/dist/server/server/file-download/token-store.js +40 -0
  463. package/dist/server/server/file-download/token-store.js.map +1 -0
  464. package/dist/server/server/file-explorer/service.d.ts +51 -0
  465. package/dist/server/server/file-explorer/service.d.ts.map +1 -0
  466. package/dist/server/server/file-explorer/service.js +246 -0
  467. package/dist/server/server/file-explorer/service.js.map +1 -0
  468. package/dist/server/server/hostnames.d.ts +13 -0
  469. package/dist/server/server/hostnames.d.ts.map +1 -0
  470. package/dist/server/server/hostnames.js +94 -0
  471. package/dist/server/server/hostnames.js.map +1 -0
  472. package/dist/server/server/json-utils.d.ts +11 -0
  473. package/dist/server/server/json-utils.d.ts.map +1 -0
  474. package/dist/server/server/json-utils.js +45 -0
  475. package/dist/server/server/json-utils.js.map +1 -0
  476. package/dist/server/server/logger.d.ts +29 -0
  477. package/dist/server/server/logger.d.ts.map +1 -0
  478. package/dist/server/server/logger.js +125 -0
  479. package/dist/server/server/logger.js.map +1 -0
  480. package/dist/server/server/loop/rpc-schemas.d.ts +3005 -0
  481. package/dist/server/server/loop/rpc-schemas.d.ts.map +1 -0
  482. package/dist/server/server/loop/rpc-schemas.js +163 -0
  483. package/dist/server/server/loop/rpc-schemas.js.map +1 -0
  484. package/dist/server/server/loop-service.d.ts +529 -0
  485. package/dist/server/server/loop-service.d.ts.map +1 -0
  486. package/dist/server/server/loop-service.js +751 -0
  487. package/dist/server/server/loop-service.js.map +1 -0
  488. package/dist/server/server/messages.d.ts +9 -0
  489. package/dist/server/server/messages.d.ts.map +1 -0
  490. package/dist/server/server/messages.js +29 -0
  491. package/dist/server/server/messages.js.map +1 -0
  492. package/dist/server/server/package-version.d.ts +25 -0
  493. package/dist/server/server/package-version.d.ts.map +1 -0
  494. package/dist/server/server/package-version.js +60 -0
  495. package/dist/server/server/package-version.js.map +1 -0
  496. package/dist/server/server/pagination/cursor.d.ts +16 -0
  497. package/dist/server/server/pagination/cursor.d.ts.map +1 -0
  498. package/dist/server/server/pagination/cursor.js +62 -0
  499. package/dist/server/server/pagination/cursor.js.map +1 -0
  500. package/dist/server/server/pagination/sortable-pager.d.ts +24 -0
  501. package/dist/server/server/pagination/sortable-pager.d.ts.map +1 -0
  502. package/dist/server/server/pagination/sortable-pager.js +68 -0
  503. package/dist/server/server/pagination/sortable-pager.js.map +1 -0
  504. package/dist/server/server/pairing-offer.d.ts +18 -0
  505. package/dist/server/server/pairing-offer.d.ts.map +1 -0
  506. package/dist/server/server/pairing-offer.js +47 -0
  507. package/dist/server/server/pairing-offer.js.map +1 -0
  508. package/dist/server/server/pairing-qr.d.ts +7 -0
  509. package/dist/server/server/pairing-qr.d.ts.map +1 -0
  510. package/dist/server/server/pairing-qr.js +45 -0
  511. package/dist/server/server/pairing-qr.js.map +1 -0
  512. package/dist/server/server/paseo-env.d.ts +13 -0
  513. package/dist/server/server/paseo-env.d.ts.map +1 -0
  514. package/dist/server/server/paseo-env.js +53 -0
  515. package/dist/server/server/paseo-env.js.map +1 -0
  516. package/dist/server/server/paseo-home.d.ts +2 -0
  517. package/dist/server/server/paseo-home.d.ts.map +1 -0
  518. package/dist/server/server/paseo-home.js +19 -0
  519. package/dist/server/server/paseo-home.js.map +1 -0
  520. package/dist/server/server/paseo-worktree-archive-service.d.ts +43 -0
  521. package/dist/server/server/paseo-worktree-archive-service.d.ts.map +1 -0
  522. package/dist/server/server/paseo-worktree-archive-service.js +145 -0
  523. package/dist/server/server/paseo-worktree-archive-service.js.map +1 -0
  524. package/dist/server/server/paseo-worktree-service.d.ts +43 -0
  525. package/dist/server/server/paseo-worktree-service.d.ts.map +1 -0
  526. package/dist/server/server/paseo-worktree-service.js +218 -0
  527. package/dist/server/server/paseo-worktree-service.js.map +1 -0
  528. package/dist/server/server/path-utils.d.ts +4 -0
  529. package/dist/server/server/path-utils.d.ts.map +1 -0
  530. package/dist/server/server/path-utils.js +29 -0
  531. package/dist/server/server/path-utils.js.map +1 -0
  532. package/dist/server/server/persisted-config.d.ts +1056 -0
  533. package/dist/server/server/persisted-config.d.ts.map +1 -0
  534. package/dist/server/server/persisted-config.js +398 -0
  535. package/dist/server/server/persisted-config.js.map +1 -0
  536. package/dist/server/server/persistence-hooks.d.ts +33 -0
  537. package/dist/server/server/persistence-hooks.d.ts.map +1 -0
  538. package/dist/server/server/persistence-hooks.js +99 -0
  539. package/dist/server/server/persistence-hooks.js.map +1 -0
  540. package/dist/server/server/pid-lock.d.ts +46 -0
  541. package/dist/server/server/pid-lock.d.ts.map +1 -0
  542. package/dist/server/server/pid-lock.js +170 -0
  543. package/dist/server/server/pid-lock.js.map +1 -0
  544. package/dist/server/server/private-files.d.ts +7 -0
  545. package/dist/server/server/private-files.d.ts.map +1 -0
  546. package/dist/server/server/private-files.js +42 -0
  547. package/dist/server/server/private-files.js.map +1 -0
  548. package/dist/server/server/push/notifications.d.ts +9 -0
  549. package/dist/server/server/push/notifications.d.ts.map +1 -0
  550. package/dist/server/server/push/notifications.js +15 -0
  551. package/dist/server/server/push/notifications.js.map +1 -0
  552. package/dist/server/server/push/push-service.d.ts +20 -0
  553. package/dist/server/server/push/push-service.d.ts.map +1 -0
  554. package/dist/server/server/push/push-service.js +66 -0
  555. package/dist/server/server/push/push-service.js.map +1 -0
  556. package/dist/server/server/push/token-store.d.ts +18 -0
  557. package/dist/server/server/push/token-store.d.ts.map +1 -0
  558. package/dist/server/server/push/token-store.js +68 -0
  559. package/dist/server/server/push/token-store.js.map +1 -0
  560. package/dist/server/server/relay-transport.d.ts +31 -0
  561. package/dist/server/server/relay-transport.d.ts.map +1 -0
  562. package/dist/server/server/relay-transport.js +514 -0
  563. package/dist/server/server/relay-transport.js.map +1 -0
  564. package/dist/server/server/resolve-worktree-creation-intent.d.ts +29 -0
  565. package/dist/server/server/resolve-worktree-creation-intent.d.ts.map +1 -0
  566. package/dist/server/server/resolve-worktree-creation-intent.js +119 -0
  567. package/dist/server/server/resolve-worktree-creation-intent.js.map +1 -0
  568. package/dist/server/server/schedule/cron.d.ts +4 -0
  569. package/dist/server/server/schedule/cron.d.ts.map +1 -0
  570. package/dist/server/server/schedule/cron.js +103 -0
  571. package/dist/server/server/schedule/cron.js.map +1 -0
  572. package/dist/server/server/schedule/rpc-schemas.d.ts +3909 -0
  573. package/dist/server/server/schedule/rpc-schemas.d.ts.map +1 -0
  574. package/dist/server/server/schedule/rpc-schemas.js +151 -0
  575. package/dist/server/server/schedule/rpc-schemas.js.map +1 -0
  576. package/dist/server/server/schedule/service.d.ts +40 -0
  577. package/dist/server/server/schedule/service.d.ts.map +1 -0
  578. package/dist/server/server/schedule/service.js +476 -0
  579. package/dist/server/server/schedule/service.js.map +1 -0
  580. package/dist/server/server/schedule/store.d.ts +13 -0
  581. package/dist/server/server/schedule/store.d.ts.map +1 -0
  582. package/dist/server/server/schedule/store.js +56 -0
  583. package/dist/server/server/schedule/store.js.map +1 -0
  584. package/dist/server/server/schedule/types.d.ts +726 -0
  585. package/dist/server/server/schedule/types.d.ts.map +1 -0
  586. package/dist/server/server/schedule/types.js +73 -0
  587. package/dist/server/server/schedule/types.js.map +1 -0
  588. package/dist/server/server/script-health-monitor.d.ts +39 -0
  589. package/dist/server/server/script-health-monitor.d.ts.map +1 -0
  590. package/dist/server/server/script-health-monitor.js +159 -0
  591. package/dist/server/server/script-health-monitor.js.map +1 -0
  592. package/dist/server/server/script-proxy.d.ts +40 -0
  593. package/dist/server/server/script-proxy.d.ts.map +1 -0
  594. package/dist/server/server/script-proxy.js +245 -0
  595. package/dist/server/server/script-proxy.js.map +1 -0
  596. package/dist/server/server/script-route-branch-handler.d.ts +10 -0
  597. package/dist/server/server/script-route-branch-handler.d.ts.map +1 -0
  598. package/dist/server/server/script-route-branch-handler.js +45 -0
  599. package/dist/server/server/script-route-branch-handler.js.map +1 -0
  600. package/dist/server/server/script-status-projection.d.ts +34 -0
  601. package/dist/server/server/script-status-projection.d.ts.map +1 -0
  602. package/dist/server/server/script-status-projection.js +152 -0
  603. package/dist/server/server/script-status-projection.js.map +1 -0
  604. package/dist/server/server/server-id.d.ts +17 -0
  605. package/dist/server/server/server-id.d.ts.map +1 -0
  606. package/dist/server/server/server-id.js +68 -0
  607. package/dist/server/server/server-id.js.map +1 -0
  608. package/dist/server/server/session.d.ts +586 -0
  609. package/dist/server/server/session.d.ts.map +1 -0
  610. package/dist/server/server/session.js +7072 -0
  611. package/dist/server/server/session.js.map +1 -0
  612. package/dist/server/server/speech/audio.d.ts +10 -0
  613. package/dist/server/server/speech/audio.d.ts.map +1 -0
  614. package/dist/server/server/speech/audio.js +101 -0
  615. package/dist/server/server/speech/audio.js.map +1 -0
  616. package/dist/server/server/speech/provider-resolver.d.ts +3 -0
  617. package/dist/server/server/speech/provider-resolver.d.ts.map +1 -0
  618. package/dist/server/server/speech/provider-resolver.js +7 -0
  619. package/dist/server/server/speech/provider-resolver.js.map +1 -0
  620. package/dist/server/server/speech/providers/local/config.d.ts +30 -0
  621. package/dist/server/server/speech/providers/local/config.d.ts.map +1 -0
  622. package/dist/server/server/speech/providers/local/config.js +134 -0
  623. package/dist/server/server/speech/providers/local/config.js.map +1 -0
  624. package/dist/server/server/speech/providers/local/models.d.ts +11 -0
  625. package/dist/server/server/speech/providers/local/models.d.ts.map +1 -0
  626. package/dist/server/server/speech/providers/local/models.js +17 -0
  627. package/dist/server/server/speech/providers/local/models.js.map +1 -0
  628. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts +24 -0
  629. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts.map +1 -0
  630. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js +459 -0
  631. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js.map +1 -0
  632. package/dist/server/server/speech/providers/local/runtime.d.ts +31 -0
  633. package/dist/server/server/speech/providers/local/runtime.d.ts.map +1 -0
  634. package/dist/server/server/speech/providers/local/runtime.js +278 -0
  635. package/dist/server/server/speech/providers/local/runtime.js.map +1 -0
  636. package/dist/server/server/speech/providers/local/sherpa/assets/silero_vad.onnx +0 -0
  637. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts +117 -0
  638. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts.map +1 -0
  639. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js +169 -0
  640. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js.map +1 -0
  641. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts +15 -0
  642. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts.map +1 -0
  643. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +167 -0
  644. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js.map +1 -0
  645. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts +49 -0
  646. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts.map +1 -0
  647. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +73 -0
  648. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js.map +1 -0
  649. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.d.ts +56 -0
  650. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.d.ts.map +1 -0
  651. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js +91 -0
  652. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js.map +1 -0
  653. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.d.ts +7 -0
  654. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.d.ts.map +1 -0
  655. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.js +11 -0
  656. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.js.map +1 -0
  657. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts +9 -0
  658. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts.map +1 -0
  659. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js +107 -0
  660. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js.map +1 -0
  661. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts +28 -0
  662. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts.map +1 -0
  663. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +137 -0
  664. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js.map +1 -0
  665. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts +21 -0
  666. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts.map +1 -0
  667. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +133 -0
  668. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js.map +1 -0
  669. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.d.ts +23 -0
  670. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.d.ts.map +1 -0
  671. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js +116 -0
  672. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js.map +1 -0
  673. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.d.ts +18 -0
  674. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.d.ts.map +1 -0
  675. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
  676. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.js.map +1 -0
  677. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.d.ts +23 -0
  678. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.d.ts.map +1 -0
  679. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js +141 -0
  680. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js.map +1 -0
  681. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts +21 -0
  682. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts.map +1 -0
  683. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js +115 -0
  684. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js.map +1 -0
  685. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.d.ts +19 -0
  686. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.d.ts.map +1 -0
  687. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.js +49 -0
  688. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.js.map +1 -0
  689. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.d.ts +38 -0
  690. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.d.ts.map +1 -0
  691. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.js +176 -0
  692. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.js.map +1 -0
  693. package/dist/server/server/speech/providers/openai/config.d.ts +22 -0
  694. package/dist/server/server/speech/providers/openai/config.d.ts.map +1 -0
  695. package/dist/server/server/speech/providers/openai/config.js +107 -0
  696. package/dist/server/server/speech/providers/openai/config.js.map +1 -0
  697. package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts +42 -0
  698. package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts.map +1 -0
  699. package/dist/server/server/speech/providers/openai/realtime-transcription-session.js +168 -0
  700. package/dist/server/server/speech/providers/openai/realtime-transcription-session.js.map +1 -0
  701. package/dist/server/server/speech/providers/openai/runtime.d.ts +29 -0
  702. package/dist/server/server/speech/providers/openai/runtime.d.ts.map +1 -0
  703. package/dist/server/server/speech/providers/openai/runtime.js +117 -0
  704. package/dist/server/server/speech/providers/openai/runtime.js.map +1 -0
  705. package/dist/server/server/speech/providers/openai/stt.d.ts +22 -0
  706. package/dist/server/server/speech/providers/openai/stt.d.ts.map +1 -0
  707. package/dist/server/server/speech/providers/openai/stt.js +207 -0
  708. package/dist/server/server/speech/providers/openai/stt.js.map +1 -0
  709. package/dist/server/server/speech/providers/openai/tts.d.ts +18 -0
  710. package/dist/server/server/speech/providers/openai/tts.d.ts.map +1 -0
  711. package/dist/server/server/speech/providers/openai/tts.js +47 -0
  712. package/dist/server/server/speech/providers/openai/tts.js.map +1 -0
  713. package/dist/server/server/speech/speech-config-resolver.d.ts +11 -0
  714. package/dist/server/server/speech/speech-config-resolver.d.ts.map +1 -0
  715. package/dist/server/server/speech/speech-config-resolver.js +132 -0
  716. package/dist/server/server/speech/speech-config-resolver.js.map +1 -0
  717. package/dist/server/server/speech/speech-provider.d.ts +59 -0
  718. package/dist/server/server/speech/speech-provider.d.ts.map +1 -0
  719. package/dist/server/server/speech/speech-provider.js +2 -0
  720. package/dist/server/server/speech/speech-provider.js.map +1 -0
  721. package/dist/server/server/speech/speech-runtime.d.ts +45 -0
  722. package/dist/server/server/speech/speech-runtime.d.ts.map +1 -0
  723. package/dist/server/server/speech/speech-runtime.js +562 -0
  724. package/dist/server/server/speech/speech-runtime.js.map +1 -0
  725. package/dist/server/server/speech/speech-types.d.ts +24 -0
  726. package/dist/server/server/speech/speech-types.d.ts.map +1 -0
  727. package/dist/server/server/speech/speech-types.js +8 -0
  728. package/dist/server/server/speech/speech-types.js.map +1 -0
  729. package/dist/server/server/speech/turn-detection-provider.d.ts +23 -0
  730. package/dist/server/server/speech/turn-detection-provider.d.ts.map +1 -0
  731. package/dist/server/server/speech/turn-detection-provider.js +2 -0
  732. package/dist/server/server/speech/turn-detection-provider.js.map +1 -0
  733. package/dist/server/server/utils/diff-highlighter.d.ts +57 -0
  734. package/dist/server/server/utils/diff-highlighter.d.ts.map +1 -0
  735. package/dist/server/server/utils/diff-highlighter.js +279 -0
  736. package/dist/server/server/utils/diff-highlighter.js.map +1 -0
  737. package/dist/server/server/voice/voice-turn-controller.d.ts +38 -0
  738. package/dist/server/server/voice/voice-turn-controller.d.ts.map +1 -0
  739. package/dist/server/server/voice/voice-turn-controller.js +393 -0
  740. package/dist/server/server/voice/voice-turn-controller.js.map +1 -0
  741. package/dist/server/server/voice-config.d.ts +15 -0
  742. package/dist/server/server/voice-config.d.ts.map +1 -0
  743. package/dist/server/server/voice-config.js +54 -0
  744. package/dist/server/server/voice-config.js.map +1 -0
  745. package/dist/server/server/voice-permission-policy.d.ts +4 -0
  746. package/dist/server/server/voice-permission-policy.d.ts.map +1 -0
  747. package/dist/server/server/voice-permission-policy.js +13 -0
  748. package/dist/server/server/voice-permission-policy.js.map +1 -0
  749. package/dist/server/server/voice-types.d.ts +12 -0
  750. package/dist/server/server/voice-types.d.ts.map +1 -0
  751. package/dist/server/server/voice-types.js +2 -0
  752. package/dist/server/server/voice-types.js.map +1 -0
  753. package/dist/server/server/websocket/runtime-metrics.d.ts +71 -0
  754. package/dist/server/server/websocket/runtime-metrics.d.ts.map +1 -0
  755. package/dist/server/server/websocket/runtime-metrics.js +148 -0
  756. package/dist/server/server/websocket/runtime-metrics.js.map +1 -0
  757. package/dist/server/server/websocket-server.d.ts +153 -0
  758. package/dist/server/server/websocket-server.d.ts.map +1 -0
  759. package/dist/server/server/websocket-server.js +1300 -0
  760. package/dist/server/server/websocket-server.js.map +1 -0
  761. package/dist/server/server/workspace-archive-service.d.ts +8 -0
  762. package/dist/server/server/workspace-archive-service.d.ts.map +1 -0
  763. package/dist/server/server/workspace-archive-service.js +17 -0
  764. package/dist/server/server/workspace-archive-service.js.map +1 -0
  765. package/dist/server/server/workspace-directory.d.ts +67 -0
  766. package/dist/server/server/workspace-directory.d.ts.map +1 -0
  767. package/dist/server/server/workspace-directory.js +214 -0
  768. package/dist/server/server/workspace-directory.js.map +1 -0
  769. package/dist/server/server/workspace-git-metadata.d.ts +24 -0
  770. package/dist/server/server/workspace-git-metadata.d.ts.map +1 -0
  771. package/dist/server/server/workspace-git-metadata.js +55 -0
  772. package/dist/server/server/workspace-git-metadata.js.map +1 -0
  773. package/dist/server/server/workspace-git-service.d.ts +257 -0
  774. package/dist/server/server/workspace-git-service.d.ts.map +1 -0
  775. package/dist/server/server/workspace-git-service.js +1277 -0
  776. package/dist/server/server/workspace-git-service.js.map +1 -0
  777. package/dist/server/server/workspace-reconciliation-service.d.ts +58 -0
  778. package/dist/server/server/workspace-reconciliation-service.d.ts.map +1 -0
  779. package/dist/server/server/workspace-reconciliation-service.js +274 -0
  780. package/dist/server/server/workspace-reconciliation-service.js.map +1 -0
  781. package/dist/server/server/workspace-registry-bootstrap.d.ts +13 -0
  782. package/dist/server/server/workspace-registry-bootstrap.d.ts.map +1 -0
  783. package/dist/server/server/workspace-registry-bootstrap.js +108 -0
  784. package/dist/server/server/workspace-registry-bootstrap.js.map +1 -0
  785. package/dist/server/server/workspace-registry-model.d.ts +55 -0
  786. package/dist/server/server/workspace-registry-model.d.ts.map +1 -0
  787. package/dist/server/server/workspace-registry-model.js +191 -0
  788. package/dist/server/server/workspace-registry-model.js.map +1 -0
  789. package/dist/server/server/workspace-registry.d.ts +135 -0
  790. package/dist/server/server/workspace-registry.d.ts.map +1 -0
  791. package/dist/server/server/workspace-registry.js +162 -0
  792. package/dist/server/server/workspace-registry.js.map +1 -0
  793. package/dist/server/server/workspace-script-runtime-store.d.ts +28 -0
  794. package/dist/server/server/workspace-script-runtime-store.d.ts.map +1 -0
  795. package/dist/server/server/workspace-script-runtime-store.js +78 -0
  796. package/dist/server/server/workspace-script-runtime-store.js.map +1 -0
  797. package/dist/server/server/workspace-service-env.d.ts +17 -0
  798. package/dist/server/server/workspace-service-env.d.ts.map +1 -0
  799. package/dist/server/server/workspace-service-env.js +80 -0
  800. package/dist/server/server/workspace-service-env.js.map +1 -0
  801. package/dist/server/server/workspace-service-port-registry.d.ts +19 -0
  802. package/dist/server/server/workspace-service-port-registry.d.ts.map +1 -0
  803. package/dist/server/server/workspace-service-port-registry.js +59 -0
  804. package/dist/server/server/workspace-service-port-registry.js.map +1 -0
  805. package/dist/server/server/worktree-bootstrap.d.ts +74 -0
  806. package/dist/server/server/worktree-bootstrap.d.ts.map +1 -0
  807. package/dist/server/server/worktree-bootstrap.js +716 -0
  808. package/dist/server/server/worktree-bootstrap.js.map +1 -0
  809. package/dist/server/server/worktree-branch-name-generator.d.ts +21 -0
  810. package/dist/server/server/worktree-branch-name-generator.d.ts.map +1 -0
  811. package/dist/server/server/worktree-branch-name-generator.js +59 -0
  812. package/dist/server/server/worktree-branch-name-generator.js.map +1 -0
  813. package/dist/server/server/worktree-core.d.ts +29 -0
  814. package/dist/server/server/worktree-core.d.ts.map +1 -0
  815. package/dist/server/server/worktree-core.js +99 -0
  816. package/dist/server/server/worktree-core.js.map +1 -0
  817. package/dist/server/server/worktree-errors.d.ts +12 -0
  818. package/dist/server/server/worktree-errors.d.ts.map +1 -0
  819. package/dist/server/server/worktree-errors.js +28 -0
  820. package/dist/server/server/worktree-errors.js.map +1 -0
  821. package/dist/server/server/worktree-session.d.ts +149 -0
  822. package/dist/server/server/worktree-session.d.ts.map +1 -0
  823. package/dist/server/server/worktree-session.js +464 -0
  824. package/dist/server/server/worktree-session.js.map +1 -0
  825. package/dist/server/services/github-service.d.ts +279 -0
  826. package/dist/server/services/github-service.d.ts.map +1 -0
  827. package/dist/server/services/github-service.js +1666 -0
  828. package/dist/server/services/github-service.js.map +1 -0
  829. package/dist/server/shared/agent-attention-notification.d.ts +41 -0
  830. package/dist/server/shared/agent-attention-notification.d.ts.map +1 -0
  831. package/dist/server/shared/agent-attention-notification.js +140 -0
  832. package/dist/server/shared/agent-attention-notification.js.map +1 -0
  833. package/dist/server/shared/agent-labels.d.ts +2 -0
  834. package/dist/server/shared/agent-labels.d.ts.map +1 -0
  835. package/dist/server/shared/agent-labels.js +2 -0
  836. package/dist/server/shared/agent-labels.js.map +1 -0
  837. package/dist/server/shared/agent-lifecycle.d.ts +3 -0
  838. package/dist/server/shared/agent-lifecycle.d.ts.map +1 -0
  839. package/dist/server/shared/agent-lifecycle.js +8 -0
  840. package/dist/server/shared/agent-lifecycle.js.map +1 -0
  841. package/dist/server/shared/agent-state-bucket.d.ts +13 -0
  842. package/dist/server/shared/agent-state-bucket.d.ts.map +1 -0
  843. package/dist/server/shared/agent-state-bucket.js +41 -0
  844. package/dist/server/shared/agent-state-bucket.js.map +1 -0
  845. package/dist/server/shared/binary-frames/file-transfer.d.ts +56 -0
  846. package/dist/server/shared/binary-frames/file-transfer.d.ts.map +1 -0
  847. package/dist/server/shared/binary-frames/file-transfer.js +108 -0
  848. package/dist/server/shared/binary-frames/file-transfer.js.map +1 -0
  849. package/dist/server/shared/binary-frames/index.d.ts +3 -0
  850. package/dist/server/shared/binary-frames/index.d.ts.map +1 -0
  851. package/dist/server/shared/binary-frames/index.js +3 -0
  852. package/dist/server/shared/binary-frames/index.js.map +1 -0
  853. package/dist/server/shared/binary-frames/terminal.d.ts +36 -0
  854. package/dist/server/shared/binary-frames/terminal.d.ts.map +1 -0
  855. package/dist/server/shared/binary-frames/terminal.js +99 -0
  856. package/dist/server/shared/binary-frames/terminal.js.map +1 -0
  857. package/dist/server/shared/client-capabilities.d.ts +5 -0
  858. package/dist/server/shared/client-capabilities.d.ts.map +1 -0
  859. package/dist/server/shared/client-capabilities.js +4 -0
  860. package/dist/server/shared/client-capabilities.js.map +1 -0
  861. package/dist/server/shared/connection-offer.d.ts +80 -0
  862. package/dist/server/shared/connection-offer.d.ts.map +1 -0
  863. package/dist/server/shared/connection-offer.js +53 -0
  864. package/dist/server/shared/connection-offer.js.map +1 -0
  865. package/dist/server/shared/daemon-endpoints.d.ts +47 -0
  866. package/dist/server/shared/daemon-endpoints.d.ts.map +1 -0
  867. package/dist/server/shared/daemon-endpoints.js +201 -0
  868. package/dist/server/shared/daemon-endpoints.js.map +1 -0
  869. package/dist/server/shared/error-utils.d.ts +11 -0
  870. package/dist/server/shared/error-utils.d.ts.map +1 -0
  871. package/dist/server/shared/error-utils.js +27 -0
  872. package/dist/server/shared/error-utils.js.map +1 -0
  873. package/dist/server/shared/git-remote.d.ts +16 -0
  874. package/dist/server/shared/git-remote.d.ts.map +1 -0
  875. package/dist/server/shared/git-remote.js +72 -0
  876. package/dist/server/shared/git-remote.js.map +1 -0
  877. package/dist/server/shared/host-connection-schema.d.ts +23 -0
  878. package/dist/server/shared/host-connection-schema.d.ts.map +1 -0
  879. package/dist/server/shared/host-connection-schema.js +9 -0
  880. package/dist/server/shared/host-connection-schema.js.map +1 -0
  881. package/dist/server/shared/importable-providers.d.ts +7 -0
  882. package/dist/server/shared/importable-providers.d.ts.map +1 -0
  883. package/dist/server/shared/importable-providers.js +7 -0
  884. package/dist/server/shared/importable-providers.js.map +1 -0
  885. package/dist/server/shared/literal-union.d.ts +2 -0
  886. package/dist/server/shared/literal-union.d.ts.map +1 -0
  887. package/dist/server/shared/literal-union.js +2 -0
  888. package/dist/server/shared/literal-union.js.map +1 -0
  889. package/dist/server/shared/messages.d.ts +140180 -0
  890. package/dist/server/shared/messages.d.ts.map +1 -0
  891. package/dist/server/shared/messages.js +3259 -0
  892. package/dist/server/shared/messages.js.map +1 -0
  893. package/dist/server/shared/path-utils.d.ts +2 -0
  894. package/dist/server/shared/path-utils.d.ts.map +1 -0
  895. package/dist/server/shared/path-utils.js +16 -0
  896. package/dist/server/shared/path-utils.js.map +1 -0
  897. package/dist/server/shared/terminal-input-mode.d.ts +26 -0
  898. package/dist/server/shared/terminal-input-mode.d.ts.map +1 -0
  899. package/dist/server/shared/terminal-input-mode.js +151 -0
  900. package/dist/server/shared/terminal-input-mode.js.map +1 -0
  901. package/dist/server/shared/tool-call-display.d.ts +11 -0
  902. package/dist/server/shared/tool-call-display.d.ts.map +1 -0
  903. package/dist/server/shared/tool-call-display.js +135 -0
  904. package/dist/server/shared/tool-call-display.js.map +1 -0
  905. package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -0
  906. package/dist/server/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  907. package/dist/server/terminal/terminal-capture.d.ts +12 -0
  908. package/dist/server/terminal/terminal-capture.d.ts.map +1 -0
  909. package/dist/server/terminal/terminal-capture.js +43 -0
  910. package/dist/server/terminal/terminal-capture.js.map +1 -0
  911. package/dist/server/terminal/terminal-manager-factory.d.ts +3 -0
  912. package/dist/server/terminal/terminal-manager-factory.d.ts.map +1 -0
  913. package/dist/server/terminal/terminal-manager-factory.js +5 -0
  914. package/dist/server/terminal/terminal-manager-factory.js.map +1 -0
  915. package/dist/server/terminal/terminal-manager.d.ts +47 -0
  916. package/dist/server/terminal/terminal-manager.d.ts.map +1 -0
  917. package/dist/server/terminal/terminal-manager.js +183 -0
  918. package/dist/server/terminal/terminal-manager.js.map +1 -0
  919. package/dist/server/terminal/terminal-output-coalescer.d.ts +30 -0
  920. package/dist/server/terminal/terminal-output-coalescer.d.ts.map +1 -0
  921. package/dist/server/terminal/terminal-output-coalescer.js +55 -0
  922. package/dist/server/terminal/terminal-output-coalescer.js.map +1 -0
  923. package/dist/server/terminal/terminal-session-controller.d.ts +64 -0
  924. package/dist/server/terminal/terminal-session-controller.d.ts.map +1 -0
  925. package/dist/server/terminal/terminal-session-controller.js +653 -0
  926. package/dist/server/terminal/terminal-session-controller.js.map +1 -0
  927. package/dist/server/terminal/terminal-ts-loader.mjs +20 -0
  928. package/dist/server/terminal/terminal-worker-process.d.ts +2 -0
  929. package/dist/server/terminal/terminal-worker-process.d.ts.map +1 -0
  930. package/dist/server/terminal/terminal-worker-process.js +221 -0
  931. package/dist/server/terminal/terminal-worker-process.js.map +1 -0
  932. package/dist/server/terminal/terminal-worker-protocol.d.ts +113 -0
  933. package/dist/server/terminal/terminal-worker-protocol.d.ts.map +1 -0
  934. package/dist/server/terminal/terminal-worker-protocol.js +2 -0
  935. package/dist/server/terminal/terminal-worker-protocol.js.map +1 -0
  936. package/dist/server/terminal/terminal.d.ts +99 -0
  937. package/dist/server/terminal/terminal.d.ts.map +1 -0
  938. package/dist/server/terminal/terminal.js +877 -0
  939. package/dist/server/terminal/terminal.js.map +1 -0
  940. package/dist/server/terminal/worker-terminal-manager.d.ts +19 -0
  941. package/dist/server/terminal/worker-terminal-manager.d.ts.map +1 -0
  942. package/dist/server/terminal/worker-terminal-manager.js +492 -0
  943. package/dist/server/terminal/worker-terminal-manager.js.map +1 -0
  944. package/dist/server/utils/branch-slug.d.ts +14 -0
  945. package/dist/server/utils/branch-slug.d.ts.map +1 -0
  946. package/dist/server/utils/branch-slug.js +49 -0
  947. package/dist/server/utils/branch-slug.js.map +1 -0
  948. package/dist/server/utils/build-metadata-prompt.d.ts +14 -0
  949. package/dist/server/utils/build-metadata-prompt.d.ts.map +1 -0
  950. package/dist/server/utils/build-metadata-prompt.js +28 -0
  951. package/dist/server/utils/build-metadata-prompt.js.map +1 -0
  952. package/dist/server/utils/checkout-git.d.ts +213 -0
  953. package/dist/server/utils/checkout-git.d.ts.map +1 -0
  954. package/dist/server/utils/checkout-git.js +1885 -0
  955. package/dist/server/utils/checkout-git.js.map +1 -0
  956. package/dist/server/utils/directory-suggestions.d.ts +26 -0
  957. package/dist/server/utils/directory-suggestions.d.ts.map +1 -0
  958. package/dist/server/utils/directory-suggestions.js +732 -0
  959. package/dist/server/utils/directory-suggestions.js.map +1 -0
  960. package/dist/server/utils/executable.d.ts +10 -0
  961. package/dist/server/utils/executable.d.ts.map +1 -0
  962. package/dist/server/utils/executable.js +116 -0
  963. package/dist/server/utils/executable.js.map +1 -0
  964. package/dist/server/utils/git-rev-parse-path.d.ts +3 -0
  965. package/dist/server/utils/git-rev-parse-path.d.ts.map +1 -0
  966. package/dist/server/utils/git-rev-parse-path.js +21 -0
  967. package/dist/server/utils/git-rev-parse-path.js.map +1 -0
  968. package/dist/server/utils/github-remote.d.ts +9 -0
  969. package/dist/server/utils/github-remote.d.ts.map +1 -0
  970. package/dist/server/utils/github-remote.js +62 -0
  971. package/dist/server/utils/github-remote.js.map +1 -0
  972. package/dist/server/utils/paseo-config-file.d.ts +30 -0
  973. package/dist/server/utils/paseo-config-file.d.ts.map +1 -0
  974. package/dist/server/utils/paseo-config-file.js +90 -0
  975. package/dist/server/utils/paseo-config-file.js.map +1 -0
  976. package/dist/server/utils/paseo-config-schema.d.ts +915 -0
  977. package/dist/server/utils/paseo-config-schema.d.ts.map +1 -0
  978. package/dist/server/utils/paseo-config-schema.js +77 -0
  979. package/dist/server/utils/paseo-config-schema.js.map +1 -0
  980. package/dist/server/utils/path.d.ts +16 -0
  981. package/dist/server/utils/path.d.ts.map +1 -0
  982. package/dist/server/utils/path.js +110 -0
  983. package/dist/server/utils/path.js.map +1 -0
  984. package/dist/server/utils/project-icon.d.ts +39 -0
  985. package/dist/server/utils/project-icon.d.ts.map +1 -0
  986. package/dist/server/utils/project-icon.js +364 -0
  987. package/dist/server/utils/project-icon.js.map +1 -0
  988. package/dist/server/utils/promise-timeout.d.ts +9 -0
  989. package/dist/server/utils/promise-timeout.d.ts.map +1 -0
  990. package/dist/server/utils/promise-timeout.js +25 -0
  991. package/dist/server/utils/promise-timeout.js.map +1 -0
  992. package/dist/server/utils/run-git-command.d.ts +20 -0
  993. package/dist/server/utils/run-git-command.d.ts.map +1 -0
  994. package/dist/server/utils/run-git-command.js +146 -0
  995. package/dist/server/utils/run-git-command.js.map +1 -0
  996. package/dist/server/utils/script-hostname.d.ts +8 -0
  997. package/dist/server/utils/script-hostname.d.ts.map +1 -0
  998. package/dist/server/utils/script-hostname.js +14 -0
  999. package/dist/server/utils/script-hostname.js.map +1 -0
  1000. package/dist/server/utils/spawn.d.ts +33 -0
  1001. package/dist/server/utils/spawn.d.ts.map +1 -0
  1002. package/dist/server/utils/spawn.js +71 -0
  1003. package/dist/server/utils/spawn.js.map +1 -0
  1004. package/dist/server/utils/string-command-shell.d.ts +10 -0
  1005. package/dist/server/utils/string-command-shell.d.ts.map +1 -0
  1006. package/dist/server/utils/string-command-shell.js +21 -0
  1007. package/dist/server/utils/string-command-shell.js.map +1 -0
  1008. package/dist/server/utils/tree-kill.d.ts +18 -0
  1009. package/dist/server/utils/tree-kill.d.ts.map +1 -0
  1010. package/dist/server/utils/tree-kill.js +77 -0
  1011. package/dist/server/utils/tree-kill.js.map +1 -0
  1012. package/dist/server/utils/windows-command.d.ts +15 -0
  1013. package/dist/server/utils/windows-command.d.ts.map +1 -0
  1014. package/dist/server/utils/windows-command.js +41 -0
  1015. package/dist/server/utils/windows-command.js.map +1 -0
  1016. package/dist/server/utils/worktree-metadata.d.ts +91 -0
  1017. package/dist/server/utils/worktree-metadata.d.ts.map +1 -0
  1018. package/dist/server/utils/worktree-metadata.js +174 -0
  1019. package/dist/server/utils/worktree-metadata.js.map +1 -0
  1020. package/dist/server/utils/worktree.d.ts +195 -0
  1021. package/dist/server/utils/worktree.d.ts.map +1 -0
  1022. package/dist/server/utils/worktree.js +1004 -0
  1023. package/dist/server/utils/worktree.js.map +1 -0
  1024. package/dist/server/utils/wrap-user-instructions.d.ts +2 -0
  1025. package/dist/server/utils/wrap-user-instructions.d.ts.map +1 -0
  1026. package/dist/server/utils/wrap-user-instructions.js +13 -0
  1027. package/dist/server/utils/wrap-user-instructions.js.map +1 -0
  1028. package/dist/src/server/agent/agent-sdk-types.js +22 -0
  1029. package/dist/src/server/agent/agent-sdk-types.js.map +1 -0
  1030. package/dist/src/server/agent/agent-title-limits.js +3 -0
  1031. package/dist/src/server/agent/agent-title-limits.js.map +1 -0
  1032. package/dist/src/server/agent/provider-launch-config.js +190 -0
  1033. package/dist/src/server/agent/provider-launch-config.js.map +1 -0
  1034. package/dist/src/server/agent/provider-manifest.js +211 -0
  1035. package/dist/src/server/agent/provider-manifest.js.map +1 -0
  1036. package/dist/src/server/chat/chat-rpc-schemas.js +103 -0
  1037. package/dist/src/server/chat/chat-rpc-schemas.js.map +1 -0
  1038. package/dist/src/server/chat/chat-types.js +22 -0
  1039. package/dist/src/server/chat/chat-types.js.map +1 -0
  1040. package/dist/src/server/loop/rpc-schemas.js +163 -0
  1041. package/dist/src/server/loop/rpc-schemas.js.map +1 -0
  1042. package/dist/src/server/paseo-env.js +53 -0
  1043. package/dist/src/server/paseo-env.js.map +1 -0
  1044. package/dist/src/server/paseo-home.js +19 -0
  1045. package/dist/src/server/paseo-home.js.map +1 -0
  1046. package/dist/src/server/persisted-config.js +398 -0
  1047. package/dist/src/server/persisted-config.js.map +1 -0
  1048. package/dist/src/server/pid-lock.js +170 -0
  1049. package/dist/src/server/pid-lock.js.map +1 -0
  1050. package/dist/src/server/private-files.js +42 -0
  1051. package/dist/src/server/private-files.js.map +1 -0
  1052. package/dist/src/server/schedule/rpc-schemas.js +151 -0
  1053. package/dist/src/server/schedule/rpc-schemas.js.map +1 -0
  1054. package/dist/src/server/schedule/types.js +73 -0
  1055. package/dist/src/server/schedule/types.js.map +1 -0
  1056. package/dist/src/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
  1057. package/dist/src/server/speech/providers/local/sherpa/sherpa-runtime-env.js.map +1 -0
  1058. package/dist/src/shared/agent-lifecycle.js +8 -0
  1059. package/dist/src/shared/agent-lifecycle.js.map +1 -0
  1060. package/dist/src/shared/client-capabilities.js +4 -0
  1061. package/dist/src/shared/client-capabilities.js.map +1 -0
  1062. package/dist/src/shared/literal-union.js +2 -0
  1063. package/dist/src/shared/literal-union.js.map +1 -0
  1064. package/dist/src/shared/messages.js +3259 -0
  1065. package/dist/src/shared/messages.js.map +1 -0
  1066. package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -0
  1067. package/dist/src/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  1068. package/dist/src/utils/executable.js +116 -0
  1069. package/dist/src/utils/executable.js.map +1 -0
  1070. package/dist/src/utils/paseo-config-schema.js +77 -0
  1071. package/dist/src/utils/paseo-config-schema.js.map +1 -0
  1072. package/dist/src/utils/spawn.js +71 -0
  1073. package/dist/src/utils/spawn.js.map +1 -0
  1074. package/dist/src/utils/windows-command.js +41 -0
  1075. package/dist/src/utils/windows-command.js.map +1 -0
  1076. package/package.json +115 -0
  1077. package/src/server/speech/providers/local/sherpa/assets/silero_vad.onnx +0 -0
@@ -0,0 +1,1962 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { z } from "zod";
3
+ import { ensureValidJson } from "../json-utils.js";
4
+ import { AgentFeatureSchema, AgentPermissionRequestPayloadSchema, AgentListItemPayloadSchema, AgentPermissionResponseSchema, AgentSnapshotPayloadSchema, } from "../messages.js";
5
+ import { buildStoredAgentPayload, toAgentListItemPayload, toAgentPayload, } from "./agent-projections.js";
6
+ import { curateAgentActivity } from "./activity-curator.js";
7
+ import { selectItemsByProjectedLimit } from "./timeline-projection.js";
8
+ import { ensureAgentLoaded } from "./agent-loading.js";
9
+ import { isStoredAgentProviderAvailable } from "../persistence-hooks.js";
10
+ import { appendTimelineItemIfAgentKnown, emitLiveTimelineItemIfAgentKnown, } from "./timeline-append.js";
11
+ import { getPaseoWorktreesRoot } from "../../utils/worktree.js";
12
+ import { archivePaseoWorktree, killTerminalsUnderPath, } from "../paseo-worktree-archive-service.js";
13
+ import { WaitForAgentTracker } from "./wait-for-agent-tracker.js";
14
+ import { scheduleAgentMetadataGeneration } from "./agent-metadata-generator.js";
15
+ import { expandUserPath, isSameOrDescendantPath, resolvePathFromBase } from "../path-utils.js";
16
+ import { PARENT_AGENT_ID_LABEL } from "../../shared/agent-labels.js";
17
+ import { ScheduleRunSchema, ScheduleSummarySchema, StoredScheduleSchema, } from "../schedule/types.js";
18
+ import { getAgentProviderDefinition } from "./provider-manifest.js";
19
+ import { resolveAndValidateCreateAgentMode } from "./create-agent-mode.js";
20
+ import { resolveSnapshotCwd } from "./provider-snapshot-manager.js";
21
+ import { AgentModelSchema, AgentProviderEnum, AgentStatusEnum, ProviderModeSchema, ProviderSummarySchema, parseDurationString, resolveRequiredProviderModel, sanitizePermissionRequest, serializeSnapshotWithMetadata, toScheduleSummary, waitForAgentWithTimeout, } from "./mcp-shared.js";
22
+ import { sendPromptToAgent, setupFinishNotification, startAgentRun } from "./agent-prompt.js";
23
+ import { toWorktreeRequestError } from "../worktree-errors.js";
24
+ import { join } from "node:path";
25
+ const CLAUDE_TO_CODEX_MODE = {
26
+ plan: "read-only",
27
+ default: "auto",
28
+ acceptEdits: "auto",
29
+ bypassPermissions: "full-access",
30
+ };
31
+ const CODEX_TO_CLAUDE_MODE = {
32
+ "read-only": "plan",
33
+ auto: "default",
34
+ "full-access": "bypassPermissions",
35
+ };
36
+ function mapModeAcrossProviders(sourceMode, sourceProvider, targetProvider) {
37
+ if (sourceProvider === targetProvider) {
38
+ return sourceMode;
39
+ }
40
+ if (sourceProvider === "claude" && targetProvider === "codex") {
41
+ const mapped = CLAUDE_TO_CODEX_MODE[sourceMode];
42
+ if (mapped) {
43
+ return mapped;
44
+ }
45
+ return "auto";
46
+ }
47
+ if (sourceProvider === "codex" && targetProvider === "claude") {
48
+ const mapped = CODEX_TO_CLAUDE_MODE[sourceMode];
49
+ if (mapped) {
50
+ return mapped;
51
+ }
52
+ return "default";
53
+ }
54
+ return sourceMode;
55
+ }
56
+ function addModelVisibleStructuredContent(result) {
57
+ if (result.structuredContent === undefined || result.content.length > 0) {
58
+ return result;
59
+ }
60
+ return {
61
+ ...result,
62
+ content: [
63
+ {
64
+ type: "text",
65
+ text: formatStructuredContentForModel(result.structuredContent),
66
+ },
67
+ ],
68
+ };
69
+ }
70
+ function formatStructuredContentForModel(structuredContent) {
71
+ if (!structuredContent ||
72
+ typeof structuredContent !== "object" ||
73
+ Array.isArray(structuredContent)) {
74
+ return JSON.stringify(structuredContent, null, 2);
75
+ }
76
+ const record = structuredContent;
77
+ const summary = [];
78
+ for (const [key, value] of Object.entries(record)) {
79
+ if (!Array.isArray(value)) {
80
+ continue;
81
+ }
82
+ summary.push(`${key}_count=${value.length}`);
83
+ const ids = value
84
+ .map((item) => item && typeof item === "object" && !Array.isArray(item)
85
+ ? item.id
86
+ : null)
87
+ .filter((id) => typeof id === "string" && id.length > 0);
88
+ if (ids.length === value.length && ids.length > 0) {
89
+ summary.push(`${key}_ids=${ids.join(",")}`);
90
+ }
91
+ }
92
+ const json = JSON.stringify(structuredContent, null, 2);
93
+ return summary.length > 0 ? `${summary.join("\n")}\n\n${json}` : json;
94
+ }
95
+ function parseTimestamp(value) {
96
+ if (!value) {
97
+ return 0;
98
+ }
99
+ const parsed = Date.parse(value);
100
+ return Number.isNaN(parsed) ? 0 : parsed;
101
+ }
102
+ function resolveAgentListActivityTime(agent) {
103
+ return Math.max(parseTimestamp(agent.updatedAt), parseTimestamp(agent.lastUserMessageAt), parseTimestamp(agent.attentionTimestamp), parseTimestamp(agent.archivedAt), parseTimestamp(agent.createdAt));
104
+ }
105
+ function resolveRegisteredProviderIds(agentManager, providerRegistry) {
106
+ return providerRegistry ? Object.keys(providerRegistry) : agentManager.getRegisteredProviderIds();
107
+ }
108
+ async function resolveProviderSummary(provider, logger) {
109
+ const base = {
110
+ id: provider.id,
111
+ label: provider.label,
112
+ description: provider.description,
113
+ modes: provider.modes,
114
+ };
115
+ if (!provider.enabled) {
116
+ return { ...base, enabled: false, status: "unavailable" };
117
+ }
118
+ try {
119
+ const available = await provider.createClient(logger).isAvailable();
120
+ return { ...base, enabled: true, status: available ? "available" : "unavailable" };
121
+ }
122
+ catch (availabilityError) {
123
+ return {
124
+ ...base,
125
+ enabled: true,
126
+ status: "unavailable",
127
+ error: availabilityError instanceof Error ? availabilityError.message : String(availabilityError),
128
+ };
129
+ }
130
+ }
131
+ function compareAgentListItems(a, b) {
132
+ const attentionDelta = Number(b.requiresAttention ?? false) - Number(a.requiresAttention ?? false);
133
+ if (attentionDelta !== 0) {
134
+ return attentionDelta;
135
+ }
136
+ const statusOrder = {
137
+ running: 0,
138
+ initializing: 1,
139
+ idle: 2,
140
+ error: 3,
141
+ closed: 4,
142
+ };
143
+ const statusDelta = (statusOrder[a.status] ?? 999) - (statusOrder[b.status] ?? 999);
144
+ if (statusDelta !== 0) {
145
+ return statusDelta;
146
+ }
147
+ return resolveAgentListActivityTime(b) - resolveAgentListActivityTime(a);
148
+ }
149
+ function resolveScheduleProviderAndModel(params) {
150
+ const providerInput = params.provider?.trim() || params.defaultProvider;
151
+ const slashIndex = providerInput.indexOf("/");
152
+ if (slashIndex === -1) {
153
+ return { provider: providerInput };
154
+ }
155
+ const provider = providerInput.slice(0, slashIndex).trim();
156
+ const model = providerInput.slice(slashIndex + 1).trim();
157
+ if (!provider || !model) {
158
+ throw new Error("provider must be <provider> or <provider>/<model>");
159
+ }
160
+ return {
161
+ provider: provider,
162
+ model,
163
+ };
164
+ }
165
+ function resolveScheduleUpdateProviderAndModel(params) {
166
+ const providerInput = params.provider?.trim();
167
+ const modelInput = typeof params.model === "string" ? params.model.trim() : params.model;
168
+ if (params.model !== undefined && modelInput === "") {
169
+ throw new Error("model cannot be empty");
170
+ }
171
+ if (!providerInput) {
172
+ return params.model !== undefined ? { model: modelInput } : {};
173
+ }
174
+ const slashIndex = providerInput.indexOf("/");
175
+ if (slashIndex === -1) {
176
+ return {
177
+ provider: providerInput,
178
+ ...(params.model !== undefined ? { model: modelInput } : {}),
179
+ };
180
+ }
181
+ const provider = providerInput.slice(0, slashIndex).trim();
182
+ const modelFromProvider = providerInput.slice(slashIndex + 1).trim();
183
+ if (!provider || !modelFromProvider) {
184
+ throw new Error("provider must be <provider> or <provider>/<model>");
185
+ }
186
+ if (params.model === null) {
187
+ throw new Error("provider specifies a model but model is null");
188
+ }
189
+ if (typeof modelInput === "string" && modelInput !== modelFromProvider) {
190
+ throw new Error("Conflicting model values provided");
191
+ }
192
+ return {
193
+ provider,
194
+ model: modelInput ?? modelFromProvider,
195
+ };
196
+ }
197
+ function resolveScheduleUpdateCadence(input) {
198
+ if (input.every !== undefined && input.cron !== undefined) {
199
+ throw new Error("Specify at most one of every or cron");
200
+ }
201
+ if (input.every !== undefined) {
202
+ return { type: "every", everyMs: parseDurationString(input.every) };
203
+ }
204
+ if (input.cron !== undefined) {
205
+ return { type: "cron", expression: input.cron.trim() };
206
+ }
207
+ return undefined;
208
+ }
209
+ function resolveScheduleUpdateExpiresAt(input) {
210
+ if (input.expiresIn !== undefined && input.clearExpires) {
211
+ throw new Error("Specify at most one of expiresIn or clearExpires");
212
+ }
213
+ if (input.expiresIn !== undefined) {
214
+ return new Date(Date.now() + parseDurationString(input.expiresIn)).toISOString();
215
+ }
216
+ if (input.clearExpires) {
217
+ return null;
218
+ }
219
+ return undefined;
220
+ }
221
+ function buildScheduleUpdateInput(input) {
222
+ const cadence = resolveScheduleUpdateCadence(input);
223
+ const expiresAt = resolveScheduleUpdateExpiresAt(input);
224
+ const providerModelPatch = resolveScheduleUpdateProviderAndModel({
225
+ provider: input.provider,
226
+ model: input.model,
227
+ });
228
+ const newAgentConfig = {
229
+ ...(providerModelPatch.provider !== undefined ? { provider: providerModelPatch.provider } : {}),
230
+ ...(providerModelPatch.model !== undefined ? { model: providerModelPatch.model } : {}),
231
+ ...(input.mode !== undefined ? { modeId: input.mode } : {}),
232
+ ...(input.cwd !== undefined ? { cwd: input.cwd } : {}),
233
+ };
234
+ return {
235
+ id: input.id,
236
+ ...(input.name !== undefined ? { name: input.name } : {}),
237
+ ...(input.prompt !== undefined ? { prompt: input.prompt } : {}),
238
+ ...(cadence !== undefined ? { cadence } : {}),
239
+ ...(input.maxRuns !== undefined ? { maxRuns: input.maxRuns } : {}),
240
+ ...(expiresAt !== undefined ? { expiresAt } : {}),
241
+ ...(Object.keys(newAgentConfig).length > 0 ? { newAgentConfig } : {}),
242
+ };
243
+ }
244
+ function resolveChildAgentCwd(params) {
245
+ const lockedCwd = params.lockedCwd?.trim();
246
+ if (lockedCwd) {
247
+ return expandUserPath(lockedCwd);
248
+ }
249
+ const requestedCwd = params.requestedCwd?.trim();
250
+ if (!requestedCwd || !params.allowCustomCwd) {
251
+ return params.parentCwd;
252
+ }
253
+ return resolvePathFromBase(params.parentCwd, requestedCwd);
254
+ }
255
+ const TerminalSummarySchema = z.object({
256
+ id: z.string(),
257
+ name: z.string(),
258
+ cwd: z.string(),
259
+ });
260
+ const WorktreeSummarySchema = z.object({
261
+ path: z.string(),
262
+ createdAt: z.string(),
263
+ branchName: z.string().optional(),
264
+ head: z.string().optional(),
265
+ });
266
+ function resolveTerminalKeyToken(key, literal) {
267
+ if (literal) {
268
+ return key;
269
+ }
270
+ switch (key) {
271
+ case "Enter":
272
+ return "\r";
273
+ case "Tab":
274
+ return "\t";
275
+ case "Escape":
276
+ return "\u001b";
277
+ case "Space":
278
+ return " ";
279
+ case "BSpace":
280
+ return "\u007f";
281
+ case "C-c":
282
+ return "\u0003";
283
+ case "C-d":
284
+ return "\u0004";
285
+ case "C-z":
286
+ return "\u001a";
287
+ case "C-l":
288
+ return "\u000c";
289
+ case "C-a":
290
+ return "\u0001";
291
+ case "C-e":
292
+ return "\u0005";
293
+ default:
294
+ return key;
295
+ }
296
+ }
297
+ export async function createAgentMcpServer(options) {
298
+ const { agentManager, agentStorage, terminalManager, scheduleService, providerRegistry, callerAgentId, resolveSpeakHandler, resolveCallerContext, logger, } = options;
299
+ const childLogger = logger.child({ module: "agent", component: "mcp-server" });
300
+ const waitTracker = new WaitForAgentTracker(logger);
301
+ const callerContext = callerAgentId ? (resolveCallerContext?.(callerAgentId) ?? null) : null;
302
+ const server = new McpServer({
303
+ name: "agent-mcp",
304
+ version: "2.0.0",
305
+ });
306
+ const registerRawTool = server.registerTool.bind(server);
307
+ const registerTool = (name, config, handler) => registerRawTool(name, config, (async (args, extra) => addModelVisibleStructuredContent(await handler(args, extra))));
308
+ const resolveCallerAgent = () => {
309
+ if (!callerAgentId) {
310
+ return null;
311
+ }
312
+ const parentAgent = agentManager.getAgent(callerAgentId);
313
+ if (!parentAgent) {
314
+ throw new Error(`Parent agent ${callerAgentId} not found`);
315
+ }
316
+ return parentAgent;
317
+ };
318
+ const resolveScopedCwd = (requestedCwd, opts) => {
319
+ const callerAgent = resolveCallerAgent();
320
+ if (callerAgent) {
321
+ return resolveChildAgentCwd({
322
+ parentCwd: callerAgent.cwd,
323
+ requestedCwd,
324
+ lockedCwd: callerContext?.lockedCwd,
325
+ allowCustomCwd: callerContext?.allowCustomCwd ?? true,
326
+ });
327
+ }
328
+ const trimmedCwd = requestedCwd?.trim();
329
+ if (!trimmedCwd) {
330
+ if (opts?.required) {
331
+ throw new Error("cwd is required");
332
+ }
333
+ throw new Error("cwd is required when no caller agent is available");
334
+ }
335
+ return expandUserPath(trimmedCwd);
336
+ };
337
+ const buildCallerAgentScheduleConfigExtras = (callerAgent) => {
338
+ return {
339
+ ...(callerAgent.config.thinkingOptionId
340
+ ? { thinkingOptionId: callerAgent.config.thinkingOptionId }
341
+ : {}),
342
+ ...(callerAgent.config.approvalPolicy
343
+ ? { approvalPolicy: callerAgent.config.approvalPolicy }
344
+ : {}),
345
+ ...(callerAgent.config.sandboxMode ? { sandboxMode: callerAgent.config.sandboxMode } : {}),
346
+ ...(typeof callerAgent.config.networkAccess === "boolean"
347
+ ? { networkAccess: callerAgent.config.networkAccess }
348
+ : {}),
349
+ ...(typeof callerAgent.config.webSearch === "boolean"
350
+ ? { webSearch: callerAgent.config.webSearch }
351
+ : {}),
352
+ ...(callerAgent.config.title ? { title: callerAgent.config.title } : {}),
353
+ ...(callerAgent.config.extra ? { extra: callerAgent.config.extra } : {}),
354
+ ...(callerAgent.config.systemPrompt ? { systemPrompt: callerAgent.config.systemPrompt } : {}),
355
+ ...(callerAgent.config.mcpServers ? { mcpServers: callerAgent.config.mcpServers } : {}),
356
+ };
357
+ };
358
+ const buildCallerAgentScheduleConfig = (callerAgent, params) => {
359
+ const hasProviderOverride = params?.provider !== undefined;
360
+ const resolvedProviderModel = hasProviderOverride
361
+ ? resolveScheduleProviderAndModel({
362
+ provider: params?.provider,
363
+ defaultProvider: callerAgent.provider,
364
+ })
365
+ : null;
366
+ const resolvedProvider = resolvedProviderModel?.provider ?? callerAgent.provider;
367
+ let resolvedModel;
368
+ if (resolvedProviderModel?.model) {
369
+ resolvedModel = resolvedProviderModel.model;
370
+ }
371
+ else if (!hasProviderOverride && callerAgent.config.model) {
372
+ resolvedModel = callerAgent.config.model;
373
+ }
374
+ return {
375
+ provider: resolvedProvider,
376
+ cwd: params?.cwd?.trim() ? expandUserPath(params.cwd) : callerAgent.cwd,
377
+ ...(callerAgent.currentModeId
378
+ ? {
379
+ modeId: mapModeAcrossProviders(callerAgent.currentModeId, callerAgent.provider, resolvedProvider),
380
+ }
381
+ : {}),
382
+ ...(resolvedModel ? { model: resolvedModel } : {}),
383
+ ...buildCallerAgentScheduleConfigExtras(callerAgent),
384
+ };
385
+ };
386
+ const resolveNewAgentScheduleTarget = (params) => {
387
+ if (!params?.provider?.trim()) {
388
+ throw new Error("provider is required when target is new-agent");
389
+ }
390
+ const callerAgent = resolveCallerAgent();
391
+ if (callerAgent) {
392
+ return {
393
+ type: "new-agent",
394
+ config: buildCallerAgentScheduleConfig(callerAgent, params),
395
+ };
396
+ }
397
+ const resolvedProviderModel = resolveScheduleProviderAndModel({
398
+ provider: params?.provider,
399
+ defaultProvider: params.provider,
400
+ });
401
+ return {
402
+ type: "new-agent",
403
+ config: {
404
+ provider: resolvedProviderModel.provider,
405
+ cwd: params?.cwd?.trim() ? expandUserPath(params.cwd) : process.cwd(),
406
+ ...(resolvedProviderModel.model ? { model: resolvedProviderModel.model } : {}),
407
+ },
408
+ };
409
+ };
410
+ const ProviderModelInputSchema = AgentProviderEnum.trim()
411
+ .refine((value) => value.includes("/"), {
412
+ message: "provider must be provider/model, for example codex/gpt-5.4",
413
+ })
414
+ .refine((value) => {
415
+ try {
416
+ resolveRequiredProviderModel(value);
417
+ return true;
418
+ }
419
+ catch {
420
+ return false;
421
+ }
422
+ }, { message: "provider must be provider/model, for example codex/gpt-5.4" });
423
+ const ProviderOrProviderModelInputSchema = AgentProviderEnum.trim()
424
+ .min(1, "provider is required")
425
+ .refine((value) => {
426
+ if (!value.includes("/")) {
427
+ return true;
428
+ }
429
+ try {
430
+ resolveRequiredProviderModel(value);
431
+ return true;
432
+ }
433
+ catch {
434
+ return false;
435
+ }
436
+ }, { message: "provider must be provider or provider/model, for example codex/gpt-5.4" });
437
+ const CreateAgentSettingsInputSchema = z
438
+ .object({
439
+ modeId: z.string().optional().describe("Session mode to configure before the first run."),
440
+ thinkingOptionId: z.string().optional().describe("Thinking option ID."),
441
+ features: z
442
+ .record(z.unknown())
443
+ .optional()
444
+ .describe("Provider-specific feature values, for example { fast_mode: true } for Codex."),
445
+ })
446
+ .strict();
447
+ const UpdateAgentSettingsInputSchema = z
448
+ .object({
449
+ modeId: z.string().optional().describe("Session mode ID."),
450
+ model: z.string().nullable().optional().describe("Model ID. Pass null to clear."),
451
+ thinkingOptionId: z
452
+ .string()
453
+ .nullable()
454
+ .optional()
455
+ .describe("Thinking option ID. Pass null to clear."),
456
+ features: z
457
+ .record(z.unknown())
458
+ .optional()
459
+ .describe("Provider-specific feature values, for example { fast_mode: true } for Codex."),
460
+ })
461
+ .strict();
462
+ const InspectProviderSettingsInputSchema = z
463
+ .object({
464
+ modeId: z.string().optional().describe("Draft session mode ID."),
465
+ model: z.string().optional().describe("Draft model ID."),
466
+ thinkingOptionId: z.string().optional().describe("Draft thinking option ID."),
467
+ features: z.record(z.unknown()).optional().describe("Draft provider feature values."),
468
+ })
469
+ .strict();
470
+ const agentToAgentInputSchema = {
471
+ cwd: z
472
+ .string()
473
+ .optional()
474
+ .describe("Optional working directory. Defaults to the caller agent working directory."),
475
+ title: z
476
+ .string()
477
+ .trim()
478
+ .min(1, "Title is required")
479
+ .max(60, "Title must be 60 characters or fewer")
480
+ .describe("Short descriptive title (<= 60 chars) summarizing the agent's focus."),
481
+ provider: ProviderModelInputSchema.describe("Required provider/model pair, for example codex/gpt-5.4."),
482
+ labels: z.record(z.string(), z.string()).optional().describe("Labels to set on the agent"),
483
+ settings: CreateAgentSettingsInputSchema.optional().describe("Initial runtime settings for the new agent."),
484
+ initialPrompt: z
485
+ .string()
486
+ .trim()
487
+ .min(1, "initialPrompt is required")
488
+ .describe("Required first task to run immediately after creation."),
489
+ background: z
490
+ .boolean()
491
+ .optional()
492
+ .default(false)
493
+ .describe("Run agent in background. If false (default), waits for completion or permission request. If true, returns immediately."),
494
+ notifyOnFinish: z
495
+ .boolean()
496
+ .optional()
497
+ .default(false)
498
+ .describe("Send a notification prompt to the caller agent when this agent finishes, errors, or needs permission. Requires a caller agent context."),
499
+ };
500
+ const topLevelInputSchema = {
501
+ cwd: z
502
+ .string()
503
+ .describe("Required working directory for the agent (absolute, relative, or ~)."),
504
+ title: z
505
+ .string()
506
+ .trim()
507
+ .min(1, "Title is required")
508
+ .max(60, "Title must be 60 characters or fewer")
509
+ .describe("Short descriptive title (<= 60 chars) summarizing the agent's focus."),
510
+ provider: ProviderModelInputSchema.describe("Required provider/model pair, for example codex/gpt-5.4."),
511
+ labels: z.record(z.string(), z.string()).optional().describe("Labels to set on the agent"),
512
+ settings: CreateAgentSettingsInputSchema.optional().describe("Initial runtime settings for the new agent."),
513
+ initialPrompt: z
514
+ .string()
515
+ .trim()
516
+ .min(1, "initialPrompt is required")
517
+ .describe("Required first task to run immediately after creation."),
518
+ worktreeName: z
519
+ .string()
520
+ .optional()
521
+ .describe("Optional git worktree branch name (lowercase alphanumerics + hyphen)."),
522
+ baseBranch: z
523
+ .string()
524
+ .optional()
525
+ .describe("Required when worktreeName is set: the base branch to diff/merge against."),
526
+ refName: z.string().min(1).optional().describe("Optional source ref for worktree creation."),
527
+ action: z
528
+ .enum(["branch-off", "checkout"])
529
+ .optional()
530
+ .describe("Optional worktree creation action."),
531
+ githubPrNumber: z
532
+ .number()
533
+ .int()
534
+ .positive()
535
+ .optional()
536
+ .describe("Optional GitHub pull request number to checkout."),
537
+ background: z
538
+ .boolean()
539
+ .optional()
540
+ .default(false)
541
+ .describe("Run agent in background. If false (default), waits for completion or permission request. If true, returns immediately."),
542
+ notifyOnFinish: z
543
+ .boolean()
544
+ .optional()
545
+ .default(false)
546
+ .describe("Send a notification prompt to the caller agent when this agent finishes, errors, or needs permission. Requires a caller agent context."),
547
+ };
548
+ const createAgentInputSchema = callerAgentId ? agentToAgentInputSchema : topLevelInputSchema;
549
+ const agentToAgentCreateAgentArgsSchema = z.object(agentToAgentInputSchema).strict();
550
+ const topLevelCreateAgentArgsSchema = z.object(topLevelInputSchema).strict();
551
+ const inspectProviderInputSchema = {
552
+ provider: ProviderOrProviderModelInputSchema.describe("Provider ID, optionally with a model ID (for example codex or codex/gpt-5.4)."),
553
+ cwd: z
554
+ .string()
555
+ .optional()
556
+ .describe("Working directory used to resolve provider feature availability."),
557
+ settings: InspectProviderSettingsInputSchema.optional().describe("Draft provider settings used to compute available features."),
558
+ };
559
+ if (options.voiceOnly || options.enableVoiceTools || callerContext?.enableVoiceTools) {
560
+ registerTool("speak", {
561
+ title: "Speak",
562
+ description: "Speak text to the user via daemon-managed voice output. Blocks until playback completes.",
563
+ inputSchema: {
564
+ text: z
565
+ .string()
566
+ .trim()
567
+ .min(1, "text is required")
568
+ .max(4000, "text must be 4000 characters or fewer"),
569
+ },
570
+ outputSchema: {
571
+ ok: z.boolean(),
572
+ },
573
+ }, async (args, context) => {
574
+ if (!callerAgentId) {
575
+ throw new Error("speak is only available to agent-scoped MCP sessions");
576
+ }
577
+ const handler = resolveSpeakHandler?.(callerAgentId) ?? null;
578
+ if (!handler) {
579
+ throw new Error(`No speak handler registered for caller agent '${callerAgentId}'`);
580
+ }
581
+ await handler({
582
+ text: args.text,
583
+ callerAgentId,
584
+ signal: context?.signal,
585
+ });
586
+ return {
587
+ content: [],
588
+ structuredContent: ensureValidJson({ ok: true }),
589
+ };
590
+ });
591
+ }
592
+ if (options.voiceOnly) {
593
+ return server;
594
+ }
595
+ const getProviderModes = (provider) => {
596
+ const fromRegistry = providerRegistry?.[provider];
597
+ if (fromRegistry) {
598
+ return fromRegistry.modes;
599
+ }
600
+ try {
601
+ return getAgentProviderDefinition(provider).modes;
602
+ }
603
+ catch {
604
+ return undefined;
605
+ }
606
+ };
607
+ const getAvailableModeIds = (provider) => {
608
+ return getProviderModes(provider)?.map((mode) => mode.id);
609
+ };
610
+ const getUnattendedModeId = (provider) => {
611
+ return getProviderModes(provider)?.find((mode) => mode.isUnattended)?.id;
612
+ };
613
+ const isParentInUnattendedMode = (provider, modeId) => {
614
+ if (modeId === null)
615
+ return false;
616
+ const modes = getProviderModes(provider);
617
+ if (!modes)
618
+ return false;
619
+ return modes.some((mode) => mode.id === modeId && mode.isUnattended === true);
620
+ };
621
+ const resolveCallerCreateAgentArgs = (args, parentAgentId) => {
622
+ const callerArgs = agentToAgentCreateAgentArgsSchema.parse(args);
623
+ const resolvedProviderModel = resolveRequiredProviderModel(callerArgs.provider);
624
+ const parentAgent = agentManager.getAgent(parentAgentId);
625
+ if (!parentAgent) {
626
+ throw new Error(`Parent agent ${parentAgentId} not found`);
627
+ }
628
+ const provider = resolvedProviderModel.provider;
629
+ const settings = callerArgs.settings;
630
+ const resolvedCwd = resolveChildAgentCwd({
631
+ parentCwd: parentAgent.cwd,
632
+ requestedCwd: callerArgs.cwd,
633
+ lockedCwd: callerContext?.lockedCwd,
634
+ allowCustomCwd: callerContext?.allowCustomCwd ?? true,
635
+ });
636
+ const resolvedMode = resolveAndValidateCreateAgentMode({
637
+ requestedMode: settings?.modeId,
638
+ targetProvider: provider,
639
+ parent: {
640
+ provider: parentAgent.provider,
641
+ modeId: parentAgent.currentModeId,
642
+ isUnattended: isParentInUnattendedMode(parentAgent.provider, parentAgent.currentModeId),
643
+ },
644
+ availableModes: getAvailableModeIds(provider),
645
+ targetUnattendedMode: getUnattendedModeId(provider),
646
+ });
647
+ return {
648
+ provider,
649
+ initialPrompt: callerArgs.initialPrompt,
650
+ background: callerArgs.background ?? false,
651
+ normalizedTitle: callerArgs.title.trim(),
652
+ model: resolvedProviderModel.model,
653
+ thinkingOptionId: settings?.thinkingOptionId,
654
+ features: settings?.features,
655
+ labels: callerArgs.labels,
656
+ notifyOnFinish: callerArgs.notifyOnFinish ?? false,
657
+ resolvedCwd,
658
+ resolvedMode,
659
+ setupContinuation: undefined,
660
+ };
661
+ };
662
+ const resolveTopLevelCreateAgentArgs = async (args) => {
663
+ const topLevelArgs = topLevelCreateAgentArgsSchema.parse(args);
664
+ const resolvedProviderModel = resolveRequiredProviderModel(topLevelArgs.provider);
665
+ const { cwd, settings, worktreeName, baseBranch, refName, action, githubPrNumber } = topLevelArgs;
666
+ const resolvedMode = resolveAndValidateCreateAgentMode({
667
+ requestedMode: settings?.modeId,
668
+ targetProvider: resolvedProviderModel.provider,
669
+ parent: null,
670
+ availableModes: getAvailableModeIds(resolvedProviderModel.provider),
671
+ targetUnattendedMode: getUnattendedModeId(resolvedProviderModel.provider),
672
+ });
673
+ let resolvedCwd = expandUserPath(cwd);
674
+ let setupContinuation;
675
+ const shouldCreateWorktree = Boolean(worktreeName || refName || action || githubPrNumber);
676
+ if (shouldCreateWorktree) {
677
+ if (worktreeName && !baseBranch && !refName && !action && githubPrNumber === undefined) {
678
+ throw new Error("baseBranch is required when creating a worktree");
679
+ }
680
+ const createdWorktree = await createMcpWorktree({
681
+ input: {
682
+ cwd: resolvedCwd,
683
+ worktreeSlug: worktreeName,
684
+ refName,
685
+ action,
686
+ githubPrNumber,
687
+ ...(topLevelArgs.initialPrompt
688
+ ? { firstAgentContext: { prompt: topLevelArgs.initialPrompt } }
689
+ : {}),
690
+ runSetup: false,
691
+ paseoHome: options.paseoHome,
692
+ },
693
+ createPaseoWorktree: options.createPaseoWorktree,
694
+ resolveDefaultBranch: baseBranch ? async () => baseBranch : undefined,
695
+ setupContinuation: {
696
+ kind: "agent",
697
+ terminalManager: terminalManager ?? null,
698
+ appendTimelineItem: ({ agentId, item }) => appendTimelineItemIfAgentKnown({
699
+ agentManager,
700
+ agentId,
701
+ item,
702
+ }),
703
+ emitLiveTimelineItem: ({ agentId, item }) => emitLiveTimelineItemIfAgentKnown({
704
+ agentManager,
705
+ agentId,
706
+ item,
707
+ }),
708
+ logger: childLogger,
709
+ },
710
+ });
711
+ resolvedCwd = createdWorktree.worktree.worktreePath;
712
+ setupContinuation = createdWorktree.setupContinuation;
713
+ }
714
+ return {
715
+ provider: resolvedProviderModel.provider,
716
+ initialPrompt: topLevelArgs.initialPrompt,
717
+ background: topLevelArgs.background ?? false,
718
+ normalizedTitle: topLevelArgs.title.trim(),
719
+ model: resolvedProviderModel.model,
720
+ thinkingOptionId: settings?.thinkingOptionId,
721
+ features: settings?.features,
722
+ labels: topLevelArgs.labels,
723
+ notifyOnFinish: topLevelArgs.notifyOnFinish ?? false,
724
+ resolvedCwd,
725
+ resolvedMode,
726
+ setupContinuation,
727
+ };
728
+ };
729
+ registerTool("create_agent", {
730
+ title: "Create agent",
731
+ description: "Create an agent tied to a working directory. Requires provider/model, for example codex/gpt-5.4. Do not guess; call list_providers and list_models first if uncertain. Optionally run an initial prompt immediately or create a git worktree for the agent.",
732
+ inputSchema: createAgentInputSchema,
733
+ outputSchema: {
734
+ agentId: z.string(),
735
+ type: AgentProviderEnum,
736
+ status: AgentStatusEnum,
737
+ cwd: z.string(),
738
+ currentModeId: z.string().nullable(),
739
+ availableModes: z.array(z.object({
740
+ id: z.string(),
741
+ label: z.string(),
742
+ description: z.string().nullable().optional(),
743
+ })),
744
+ lastMessage: z.string().nullable().optional(),
745
+ permission: AgentPermissionRequestPayloadSchema.nullable().optional(),
746
+ },
747
+ }, async (args) => {
748
+ const resolved = callerAgentId
749
+ ? resolveCallerCreateAgentArgs(args, callerAgentId)
750
+ : await resolveTopLevelCreateAgentArgs(args);
751
+ const { provider, initialPrompt, background, normalizedTitle, model, thinkingOptionId, features, labels, notifyOnFinish, resolvedCwd, resolvedMode, setupContinuation, } = resolved;
752
+ const childAgentDefaultLabels = callerContext?.childAgentDefaultLabels;
753
+ const mergedLabels = {
754
+ ...(callerAgentId ? { [PARENT_AGENT_ID_LABEL]: callerAgentId } : {}),
755
+ ...childAgentDefaultLabels,
756
+ ...labels,
757
+ };
758
+ const snapshot = await agentManager.createAgent({
759
+ provider,
760
+ cwd: resolvedCwd,
761
+ modeId: resolvedMode,
762
+ title: normalizedTitle ?? undefined,
763
+ model,
764
+ thinkingOptionId,
765
+ featureValues: features,
766
+ }, undefined, Object.keys(mergedLabels).length > 0 ? { labels: mergedLabels } : undefined);
767
+ setupContinuation?.startAfterAgentCreate({
768
+ agentId: snapshot.id,
769
+ });
770
+ const trimmedPrompt = initialPrompt.trim();
771
+ scheduleAgentMetadataGeneration({
772
+ agentManager,
773
+ agentId: snapshot.id,
774
+ cwd: snapshot.cwd,
775
+ workspaceGitService: options.workspaceGitService,
776
+ initialPrompt: trimmedPrompt,
777
+ explicitTitle: snapshot.config.title,
778
+ paseoHome: options.paseoHome,
779
+ logger: childLogger,
780
+ });
781
+ try {
782
+ agentManager.recordUserMessage(snapshot.id, trimmedPrompt, {
783
+ emitState: false,
784
+ });
785
+ }
786
+ catch (error) {
787
+ childLogger.error({ err: error, agentId: snapshot.id }, "Failed to record initial prompt");
788
+ }
789
+ try {
790
+ startAgentRun(agentManager, snapshot.id, trimmedPrompt, childLogger);
791
+ if (notifyOnFinish && callerAgentId) {
792
+ setupFinishNotification({
793
+ agentManager,
794
+ agentStorage,
795
+ childAgentId: snapshot.id,
796
+ callerAgentId,
797
+ logger: childLogger,
798
+ });
799
+ }
800
+ // If not running in background, wait for completion
801
+ if (!background) {
802
+ const result = await waitForAgentWithTimeout(agentManager, snapshot.id, {
803
+ waitForActive: true,
804
+ });
805
+ const responseData = {
806
+ agentId: snapshot.id,
807
+ type: provider,
808
+ status: result.status,
809
+ cwd: snapshot.cwd,
810
+ currentModeId: snapshot.currentModeId,
811
+ availableModes: snapshot.availableModes,
812
+ lastMessage: result.lastMessage,
813
+ permission: sanitizePermissionRequest(result.permission),
814
+ };
815
+ const validJson = ensureValidJson(responseData);
816
+ const response = {
817
+ content: [],
818
+ structuredContent: validJson,
819
+ };
820
+ return response;
821
+ }
822
+ }
823
+ catch (error) {
824
+ childLogger.error({ err: error, agentId: snapshot.id }, "Failed to run initial prompt");
825
+ }
826
+ // Return immediately if background=true
827
+ const response = {
828
+ content: [],
829
+ structuredContent: ensureValidJson({
830
+ agentId: snapshot.id,
831
+ type: provider,
832
+ status: snapshot.lifecycle,
833
+ cwd: snapshot.cwd,
834
+ currentModeId: snapshot.currentModeId,
835
+ availableModes: snapshot.availableModes,
836
+ lastMessage: null,
837
+ permission: null,
838
+ }),
839
+ };
840
+ return response;
841
+ });
842
+ registerTool("wait_for_agent", {
843
+ title: "Wait for agent",
844
+ description: "Block until the agent requests permission or the current run completes. Returns the pending permission (if any) and recent activity summary.",
845
+ inputSchema: {
846
+ agentId: z.string().describe("Agent identifier returned by the create_agent tool"),
847
+ },
848
+ outputSchema: {
849
+ agentId: z.string(),
850
+ status: AgentStatusEnum,
851
+ permission: AgentPermissionRequestPayloadSchema.nullable(),
852
+ lastMessage: z.string().nullable(),
853
+ },
854
+ }, async ({ agentId }, { signal }) => {
855
+ const abortController = new AbortController();
856
+ const cleanupFns = [];
857
+ const cleanup = () => {
858
+ while (cleanupFns.length) {
859
+ const fn = cleanupFns.pop();
860
+ try {
861
+ fn?.();
862
+ }
863
+ catch {
864
+ // ignore cleanup errors
865
+ }
866
+ }
867
+ };
868
+ const forwardExternalAbort = () => {
869
+ if (!abortController.signal.aborted) {
870
+ const reason = signal?.reason ?? new Error("wait_for_agent aborted");
871
+ abortController.abort(reason);
872
+ }
873
+ };
874
+ if (signal) {
875
+ if (signal.aborted) {
876
+ forwardExternalAbort();
877
+ }
878
+ else {
879
+ signal.addEventListener("abort", forwardExternalAbort, { once: true });
880
+ cleanupFns.push(() => signal.removeEventListener("abort", forwardExternalAbort));
881
+ }
882
+ }
883
+ const unregister = waitTracker.register(agentId, (reason) => {
884
+ if (!abortController.signal.aborted) {
885
+ abortController.abort(new Error(reason ?? "wait_for_agent cancelled"));
886
+ }
887
+ });
888
+ cleanupFns.push(unregister);
889
+ try {
890
+ const result = await waitForAgentWithTimeout(agentManager, agentId, {
891
+ signal: abortController.signal,
892
+ });
893
+ const validJson = ensureValidJson({
894
+ agentId,
895
+ status: result.status,
896
+ permission: sanitizePermissionRequest(result.permission),
897
+ lastMessage: result.lastMessage,
898
+ });
899
+ const response = {
900
+ content: [],
901
+ structuredContent: validJson,
902
+ };
903
+ return response;
904
+ }
905
+ finally {
906
+ cleanup();
907
+ }
908
+ });
909
+ registerTool("send_agent_prompt", {
910
+ title: "Send agent prompt",
911
+ description: "Send a task to a running agent. Returns immediately after the agent begins processing.",
912
+ inputSchema: {
913
+ agentId: z.string(),
914
+ prompt: z.string(),
915
+ sessionMode: z
916
+ .string()
917
+ .optional()
918
+ .describe("Optional mode to set before running the prompt."),
919
+ background: z
920
+ .boolean()
921
+ .optional()
922
+ .default(false)
923
+ .describe("Run agent in background. If false (default), waits for completion or permission request. If true, returns immediately."),
924
+ notifyOnFinish: z
925
+ .boolean()
926
+ .optional()
927
+ .default(false)
928
+ .describe("Send a notification prompt to the caller agent when this agent finishes, errors, or needs permission."),
929
+ },
930
+ outputSchema: {
931
+ success: z.boolean(),
932
+ status: AgentStatusEnum,
933
+ lastMessage: z.string().nullable().optional(),
934
+ permission: AgentPermissionRequestPayloadSchema.nullable().optional(),
935
+ },
936
+ }, async ({ agentId, prompt, sessionMode, background = false, notifyOnFinish = false }) => {
937
+ if (agentManager.hasInFlightRun(agentId)) {
938
+ waitTracker.cancel(agentId, "Agent run interrupted by new prompt");
939
+ }
940
+ await sendPromptToAgent({
941
+ agentManager,
942
+ agentStorage,
943
+ agentId,
944
+ userMessageText: prompt,
945
+ prompt,
946
+ sessionMode,
947
+ logger: childLogger,
948
+ });
949
+ if (notifyOnFinish && callerAgentId) {
950
+ setupFinishNotification({
951
+ agentManager,
952
+ agentStorage,
953
+ childAgentId: agentId,
954
+ callerAgentId,
955
+ logger: childLogger,
956
+ });
957
+ }
958
+ // If not running in background, wait for completion
959
+ if (!background) {
960
+ const result = await waitForAgentWithTimeout(agentManager, agentId, {
961
+ waitForActive: true,
962
+ });
963
+ const responseData = {
964
+ success: true,
965
+ status: result.status,
966
+ lastMessage: result.lastMessage,
967
+ permission: sanitizePermissionRequest(result.permission),
968
+ };
969
+ const validJson = ensureValidJson(responseData);
970
+ const response = {
971
+ content: [],
972
+ structuredContent: validJson,
973
+ };
974
+ return response;
975
+ }
976
+ // Return immediately if background=true
977
+ // Re-fetch snapshot since the state may have changed
978
+ const currentSnapshot = agentManager.getAgent(agentId);
979
+ const responseData = {
980
+ success: true,
981
+ status: currentSnapshot?.lifecycle ?? "idle",
982
+ lastMessage: null,
983
+ permission: null,
984
+ };
985
+ const validJson = ensureValidJson(responseData);
986
+ const response = {
987
+ content: [],
988
+ structuredContent: validJson,
989
+ };
990
+ return response;
991
+ });
992
+ registerTool("get_agent_status", {
993
+ title: "Get agent status",
994
+ description: "Return the latest snapshot for an agent, including lifecycle state, capabilities, and pending permissions.",
995
+ inputSchema: {
996
+ agentId: z.string(),
997
+ },
998
+ outputSchema: {
999
+ status: AgentStatusEnum,
1000
+ snapshot: AgentSnapshotPayloadSchema,
1001
+ },
1002
+ }, async ({ agentId }) => {
1003
+ const snapshot = agentManager.getAgent(agentId);
1004
+ if (snapshot) {
1005
+ const structuredSnapshot = await serializeSnapshotWithMetadata(agentStorage, snapshot, childLogger);
1006
+ return {
1007
+ content: [],
1008
+ structuredContent: ensureValidJson({
1009
+ status: snapshot.lifecycle,
1010
+ snapshot: structuredSnapshot,
1011
+ }),
1012
+ };
1013
+ }
1014
+ const record = await agentStorage.get(agentId);
1015
+ if (!record || record.internal) {
1016
+ throw new Error(`Agent ${agentId} not found`);
1017
+ }
1018
+ const structuredSnapshot = buildStoredAgentPayload(record, resolveRegisteredProviderIds(agentManager, providerRegistry));
1019
+ return {
1020
+ content: [],
1021
+ structuredContent: ensureValidJson({
1022
+ status: structuredSnapshot.status,
1023
+ snapshot: structuredSnapshot,
1024
+ }),
1025
+ };
1026
+ });
1027
+ registerTool("list_agents", {
1028
+ title: "List agents",
1029
+ description: "List recent agents as compact metadata.",
1030
+ inputSchema: {
1031
+ includeArchived: z.boolean().optional().default(false),
1032
+ cwd: z.string().optional(),
1033
+ sinceHours: z
1034
+ .number()
1035
+ .int()
1036
+ .positive()
1037
+ .max(24 * 30)
1038
+ .optional()
1039
+ .default(48),
1040
+ statuses: z.array(AgentStatusEnum).optional(),
1041
+ limit: z.number().int().positive().max(200).optional().default(50),
1042
+ },
1043
+ outputSchema: {
1044
+ agents: z.array(AgentListItemPayloadSchema),
1045
+ },
1046
+ }, async ({ includeArchived = false, cwd, sinceHours = 48, statuses, limit = 50 }) => {
1047
+ const callerCwd = callerAgentId ? resolveCallerAgent()?.cwd : undefined;
1048
+ const requestedCwd = cwd?.trim() ? expandUserPath(cwd) : callerCwd;
1049
+ const statusFilter = statuses && statuses.length > 0 ? new Set(statuses) : null;
1050
+ const sinceMs = Date.now() - sinceHours * 60 * 60 * 1000;
1051
+ const liveSnapshots = agentManager.listAgents();
1052
+ const liveAgents = await Promise.all(liveSnapshots.map((snapshot) => serializeSnapshotWithMetadata(agentStorage, snapshot, childLogger)));
1053
+ const liveIds = new Set(liveSnapshots.map((snapshot) => snapshot.id));
1054
+ const storedRecords = await agentStorage.list();
1055
+ const registeredProviderIds = resolveRegisteredProviderIds(agentManager, providerRegistry);
1056
+ const storedAgents = storedRecords
1057
+ .filter((record) => !record.internal && !liveIds.has(record.id))
1058
+ .filter((record) => includeArchived || !record.archivedAt)
1059
+ .filter((record) => includeArchived || isStoredAgentProviderAvailable(record, registeredProviderIds))
1060
+ .map((record) => buildStoredAgentPayload(record, registeredProviderIds));
1061
+ const agents = [...liveAgents, ...storedAgents]
1062
+ .map(toAgentListItemPayload)
1063
+ .filter((agent) => !requestedCwd || isSameOrDescendantPath(requestedCwd, agent.cwd))
1064
+ .filter((agent) => !statusFilter || statusFilter.has(agent.status))
1065
+ .filter((agent) => !agent.archivedAt || resolveAgentListActivityTime(agent) >= sinceMs)
1066
+ .sort(compareAgentListItems)
1067
+ .slice(0, limit);
1068
+ return {
1069
+ content: [],
1070
+ structuredContent: ensureValidJson({ agents }),
1071
+ };
1072
+ });
1073
+ registerTool("cancel_agent", {
1074
+ title: "Cancel agent run",
1075
+ description: "Abort the agent's current run but keep the agent alive for future tasks.",
1076
+ inputSchema: {
1077
+ agentId: z.string(),
1078
+ },
1079
+ outputSchema: {
1080
+ success: z.boolean(),
1081
+ },
1082
+ }, async ({ agentId }) => {
1083
+ const success = await agentManager.cancelAgentRun(agentId);
1084
+ if (success) {
1085
+ waitTracker.cancel(agentId, "Agent run cancelled");
1086
+ }
1087
+ return {
1088
+ content: [],
1089
+ structuredContent: ensureValidJson({ success }),
1090
+ };
1091
+ });
1092
+ registerTool("archive_agent", {
1093
+ title: "Archive agent",
1094
+ description: "Archive an agent (soft-delete). The agent is interrupted if running and removed from the active list.",
1095
+ inputSchema: {
1096
+ agentId: z.string(),
1097
+ },
1098
+ outputSchema: {
1099
+ success: z.boolean(),
1100
+ },
1101
+ }, async ({ agentId }) => {
1102
+ await agentManager.archiveAgent(agentId);
1103
+ waitTracker.cancel(agentId, "Agent archived");
1104
+ return {
1105
+ content: [],
1106
+ structuredContent: ensureValidJson({ success: true }),
1107
+ };
1108
+ });
1109
+ registerTool("kill_agent", {
1110
+ title: "Kill agent",
1111
+ description: "Terminate an agent session permanently.",
1112
+ inputSchema: {
1113
+ agentId: z.string(),
1114
+ },
1115
+ outputSchema: {
1116
+ success: z.boolean(),
1117
+ },
1118
+ }, async ({ agentId }) => {
1119
+ await agentManager.closeAgent(agentId);
1120
+ waitTracker.cancel(agentId, "Agent terminated");
1121
+ return {
1122
+ content: [],
1123
+ structuredContent: ensureValidJson({ success: true }),
1124
+ };
1125
+ });
1126
+ registerTool("update_agent", {
1127
+ title: "Update agent",
1128
+ description: "Update an agent name, labels, and/or runtime settings.",
1129
+ inputSchema: {
1130
+ agentId: z.string(),
1131
+ name: z.string().optional(),
1132
+ labels: z.record(z.string(), z.string()).optional().describe("Labels to set on the agent"),
1133
+ settings: UpdateAgentSettingsInputSchema.optional().describe("Runtime settings to apply to the agent."),
1134
+ },
1135
+ outputSchema: {
1136
+ success: z.boolean(),
1137
+ },
1138
+ }, async ({ agentId, name, labels, settings }) => {
1139
+ if (settings?.modeId !== undefined) {
1140
+ await agentManager.setAgentMode(agentId, settings.modeId);
1141
+ }
1142
+ if (settings?.model !== undefined) {
1143
+ await agentManager.setAgentModel(agentId, settings.model);
1144
+ }
1145
+ if (settings?.thinkingOptionId !== undefined) {
1146
+ await agentManager.setAgentThinkingOption(agentId, settings.thinkingOptionId);
1147
+ }
1148
+ if (settings?.features) {
1149
+ for (const [featureId, value] of Object.entries(settings.features)) {
1150
+ await agentManager.setAgentFeature(agentId, featureId, value);
1151
+ }
1152
+ }
1153
+ const trimmedName = name?.trim();
1154
+ if (trimmedName) {
1155
+ const record = await agentStorage.get(agentId);
1156
+ if (!record) {
1157
+ throw new Error(`Agent ${agentId} not found`);
1158
+ }
1159
+ await agentStorage.upsert({
1160
+ ...record,
1161
+ title: trimmedName,
1162
+ updatedAt: new Date().toISOString(),
1163
+ });
1164
+ agentManager.notifyAgentState(agentId);
1165
+ }
1166
+ if (labels) {
1167
+ await agentManager.setLabels(agentId, labels);
1168
+ }
1169
+ return {
1170
+ content: [],
1171
+ structuredContent: ensureValidJson({ success: true }),
1172
+ };
1173
+ });
1174
+ registerTool("list_terminals", {
1175
+ title: "List terminals",
1176
+ description: "List terminals for a working directory or across all working directories.",
1177
+ inputSchema: {
1178
+ cwd: z
1179
+ .string()
1180
+ .optional()
1181
+ .describe("Optional working directory. Defaults to the caller agent cwd."),
1182
+ all: z.boolean().optional().describe("List terminals across all working directories."),
1183
+ },
1184
+ outputSchema: {
1185
+ terminals: z.array(TerminalSummarySchema),
1186
+ },
1187
+ }, async ({ cwd, all }) => {
1188
+ if (!terminalManager) {
1189
+ throw new Error("Terminal manager is not configured");
1190
+ }
1191
+ const terminals = all
1192
+ ? (await Promise.all(terminalManager.listDirectories().map(async (directory) => (await terminalManager.getTerminals(directory)).map((terminal) => ({
1193
+ id: terminal.id,
1194
+ name: terminal.name,
1195
+ cwd: terminal.cwd,
1196
+ }))))).flat()
1197
+ : (await terminalManager.getTerminals(resolveScopedCwd(cwd, { required: true }))).map((terminal) => ({
1198
+ id: terminal.id,
1199
+ name: terminal.name,
1200
+ cwd: terminal.cwd,
1201
+ }));
1202
+ return {
1203
+ content: [],
1204
+ structuredContent: ensureValidJson({ terminals }),
1205
+ };
1206
+ });
1207
+ registerTool("create_terminal", {
1208
+ title: "Create terminal",
1209
+ description: "Create a terminal session for a working directory.",
1210
+ inputSchema: {
1211
+ cwd: z
1212
+ .string()
1213
+ .optional()
1214
+ .describe("Optional working directory. Defaults to the caller agent cwd."),
1215
+ name: z.string().optional().describe("Optional terminal name."),
1216
+ },
1217
+ outputSchema: TerminalSummarySchema.shape,
1218
+ }, async ({ cwd, name }) => {
1219
+ if (!terminalManager) {
1220
+ throw new Error("Terminal manager is not configured");
1221
+ }
1222
+ const terminal = await terminalManager.createTerminal({
1223
+ cwd: resolveScopedCwd(cwd, { required: true }),
1224
+ ...(name?.trim() ? { name: name.trim() } : {}),
1225
+ });
1226
+ return {
1227
+ content: [],
1228
+ structuredContent: ensureValidJson({
1229
+ id: terminal.id,
1230
+ name: terminal.name,
1231
+ cwd: terminal.cwd,
1232
+ }),
1233
+ };
1234
+ });
1235
+ registerTool("kill_terminal", {
1236
+ title: "Kill terminal",
1237
+ description: "Kill an existing terminal session.",
1238
+ inputSchema: {
1239
+ terminalId: z.string(),
1240
+ },
1241
+ outputSchema: {
1242
+ success: z.boolean(),
1243
+ },
1244
+ }, async ({ terminalId }) => {
1245
+ if (!terminalManager) {
1246
+ throw new Error("Terminal manager is not configured");
1247
+ }
1248
+ const terminal = terminalManager.getTerminal(terminalId);
1249
+ if (!terminal) {
1250
+ throw new Error(`Terminal ${terminalId} not found`);
1251
+ }
1252
+ terminal.kill();
1253
+ return {
1254
+ content: [],
1255
+ structuredContent: ensureValidJson({ success: true }),
1256
+ };
1257
+ });
1258
+ registerTool("capture_terminal", {
1259
+ title: "Capture terminal",
1260
+ description: "Capture plain-text terminal output lines from a terminal session.",
1261
+ inputSchema: {
1262
+ terminalId: z.string(),
1263
+ start: z.number().optional(),
1264
+ end: z.number().optional(),
1265
+ scrollback: z.boolean().optional(),
1266
+ stripAnsi: z.boolean().optional().default(true),
1267
+ },
1268
+ outputSchema: {
1269
+ terminalId: z.string(),
1270
+ lines: z.array(z.string()),
1271
+ totalLines: z.number().int().nonnegative(),
1272
+ },
1273
+ }, async ({ terminalId, start, end, scrollback, stripAnsi = true }) => {
1274
+ if (!terminalManager) {
1275
+ throw new Error("Terminal manager is not configured");
1276
+ }
1277
+ if (!terminalManager.getTerminal(terminalId)) {
1278
+ throw new Error(`Terminal ${terminalId} not found`);
1279
+ }
1280
+ const capture = await terminalManager.captureTerminal(terminalId, {
1281
+ start: scrollback ? 0 : start,
1282
+ end,
1283
+ stripAnsi,
1284
+ });
1285
+ return {
1286
+ content: [],
1287
+ structuredContent: ensureValidJson({
1288
+ terminalId,
1289
+ lines: capture.lines,
1290
+ totalLines: capture.totalLines,
1291
+ }),
1292
+ };
1293
+ });
1294
+ registerTool("send_terminal_keys", {
1295
+ title: "Send terminal keys",
1296
+ description: "Send literal text or special key tokens to a terminal session.",
1297
+ inputSchema: {
1298
+ terminalId: z.string(),
1299
+ keys: z.string(),
1300
+ literal: z.boolean().optional(),
1301
+ },
1302
+ outputSchema: {
1303
+ success: z.boolean(),
1304
+ },
1305
+ }, async ({ terminalId, keys, literal = false }) => {
1306
+ if (!terminalManager) {
1307
+ throw new Error("Terminal manager is not configured");
1308
+ }
1309
+ const terminal = terminalManager.getTerminal(terminalId);
1310
+ if (!terminal) {
1311
+ throw new Error(`Terminal ${terminalId} not found`);
1312
+ }
1313
+ terminal.send({
1314
+ type: "input",
1315
+ data: resolveTerminalKeyToken(keys, literal),
1316
+ });
1317
+ return {
1318
+ content: [],
1319
+ structuredContent: ensureValidJson({ success: true }),
1320
+ };
1321
+ });
1322
+ registerTool("create_schedule", {
1323
+ title: "Create schedule",
1324
+ description: "Create a recurring schedule that runs on an agent or a new agent.",
1325
+ inputSchema: {
1326
+ prompt: z.string().trim().min(1, "prompt is required"),
1327
+ every: z.string().optional(),
1328
+ cron: z.string().optional(),
1329
+ name: z.string().optional(),
1330
+ target: z.enum(["self", "new-agent"]).optional(),
1331
+ provider: AgentProviderEnum.optional().describe("Provider, or provider/model (for example: codex or codex/gpt-5.4)."),
1332
+ cwd: z.string().optional(),
1333
+ maxRuns: z.number().int().positive().optional(),
1334
+ expiresIn: z.string().optional(),
1335
+ },
1336
+ outputSchema: ScheduleSummarySchema.shape,
1337
+ }, async ({ prompt, every, cron, name, target, provider, cwd, maxRuns, expiresIn }) => {
1338
+ if (!scheduleService) {
1339
+ throw new Error("Schedule service is not configured");
1340
+ }
1341
+ const cadenceCount = Number(every !== undefined) + Number(cron !== undefined);
1342
+ if (cadenceCount !== 1) {
1343
+ throw new Error("Specify exactly one of every or cron");
1344
+ }
1345
+ const scheduleTarget = target === "self"
1346
+ ? (() => {
1347
+ const callerAgent = resolveCallerAgent();
1348
+ if (!callerAgentId || !callerAgent) {
1349
+ throw new Error("target=self requires a caller agent");
1350
+ }
1351
+ const trimmedCwd = cwd?.trim();
1352
+ if (trimmedCwd && expandUserPath(trimmedCwd) !== callerAgent.cwd) {
1353
+ throw new Error("cwd can only differ from the caller agent when target=new-agent");
1354
+ }
1355
+ if (provider !== undefined) {
1356
+ const resolved = resolveScheduleProviderAndModel({
1357
+ provider,
1358
+ defaultProvider: callerAgent.provider,
1359
+ });
1360
+ if (resolved.provider !== callerAgent.provider ||
1361
+ (resolved.model !== undefined && resolved.model !== callerAgent.config.model)) {
1362
+ throw new Error("provider can only differ from the caller agent when target=new-agent");
1363
+ }
1364
+ }
1365
+ return { type: "agent", agentId: callerAgentId };
1366
+ })()
1367
+ : (() => {
1368
+ return resolveNewAgentScheduleTarget({ provider, cwd });
1369
+ })();
1370
+ const schedule = await scheduleService.create({
1371
+ prompt: prompt.trim(),
1372
+ cadence: every
1373
+ ? { type: "every", everyMs: parseDurationString(every) }
1374
+ : { type: "cron", expression: cron.trim() },
1375
+ target: scheduleTarget,
1376
+ ...(name?.trim() ? { name: name.trim() } : {}),
1377
+ ...(maxRuns === undefined ? {} : { maxRuns }),
1378
+ ...(expiresIn === undefined
1379
+ ? {}
1380
+ : { expiresAt: new Date(Date.now() + parseDurationString(expiresIn)).toISOString() }),
1381
+ });
1382
+ return {
1383
+ content: [],
1384
+ structuredContent: ensureValidJson(toScheduleSummary(schedule)),
1385
+ };
1386
+ });
1387
+ registerTool("list_schedules", {
1388
+ title: "List schedules",
1389
+ description: "List all schedules managed by the daemon.",
1390
+ inputSchema: {},
1391
+ outputSchema: {
1392
+ schedules: z.array(ScheduleSummarySchema),
1393
+ },
1394
+ }, async () => {
1395
+ if (!scheduleService) {
1396
+ throw new Error("Schedule service is not configured");
1397
+ }
1398
+ const schedules = (await scheduleService.list()).map((schedule) => toScheduleSummary(schedule));
1399
+ return {
1400
+ content: [],
1401
+ structuredContent: ensureValidJson({ schedules }),
1402
+ };
1403
+ });
1404
+ registerTool("inspect_schedule", {
1405
+ title: "Inspect schedule",
1406
+ description: "Inspect a schedule and its run history.",
1407
+ inputSchema: {
1408
+ id: z.string(),
1409
+ },
1410
+ outputSchema: StoredScheduleSchema.shape,
1411
+ }, async ({ id }) => {
1412
+ if (!scheduleService) {
1413
+ throw new Error("Schedule service is not configured");
1414
+ }
1415
+ const schedule = await scheduleService.inspect(id);
1416
+ return {
1417
+ content: [],
1418
+ structuredContent: ensureValidJson(schedule),
1419
+ };
1420
+ });
1421
+ registerTool("pause_schedule", {
1422
+ title: "Pause schedule",
1423
+ description: "Pause an active schedule.",
1424
+ inputSchema: {
1425
+ id: z.string(),
1426
+ },
1427
+ outputSchema: {
1428
+ success: z.boolean(),
1429
+ },
1430
+ }, async ({ id }) => {
1431
+ if (!scheduleService) {
1432
+ throw new Error("Schedule service is not configured");
1433
+ }
1434
+ await scheduleService.pause(id);
1435
+ return {
1436
+ content: [],
1437
+ structuredContent: ensureValidJson({ success: true }),
1438
+ };
1439
+ });
1440
+ registerTool("resume_schedule", {
1441
+ title: "Resume schedule",
1442
+ description: "Resume a paused schedule.",
1443
+ inputSchema: {
1444
+ id: z.string(),
1445
+ },
1446
+ outputSchema: {
1447
+ success: z.boolean(),
1448
+ },
1449
+ }, async ({ id }) => {
1450
+ if (!scheduleService) {
1451
+ throw new Error("Schedule service is not configured");
1452
+ }
1453
+ await scheduleService.resume(id);
1454
+ return {
1455
+ content: [],
1456
+ structuredContent: ensureValidJson({ success: true }),
1457
+ };
1458
+ });
1459
+ registerTool("delete_schedule", {
1460
+ title: "Delete schedule",
1461
+ description: "Delete a schedule permanently.",
1462
+ inputSchema: {
1463
+ id: z.string(),
1464
+ },
1465
+ outputSchema: {
1466
+ success: z.boolean(),
1467
+ },
1468
+ }, async ({ id }) => {
1469
+ if (!scheduleService) {
1470
+ throw new Error("Schedule service is not configured");
1471
+ }
1472
+ await scheduleService.delete(id);
1473
+ return {
1474
+ content: [],
1475
+ structuredContent: ensureValidJson({ success: true }),
1476
+ };
1477
+ });
1478
+ registerTool("update_schedule", {
1479
+ title: "Update schedule",
1480
+ description: "Update an existing schedule. Only provided fields are changed; omitted fields remain unchanged.",
1481
+ inputSchema: {
1482
+ id: z.string(),
1483
+ every: z.string().optional().describe("New interval duration string (e.g. 5m, 1h)."),
1484
+ cron: z.string().optional().describe("New cron expression."),
1485
+ name: z.string().nullable().optional().describe("New name (null to clear)."),
1486
+ prompt: z.string().trim().min(1).optional().describe("New prompt text."),
1487
+ maxRuns: z
1488
+ .number()
1489
+ .int()
1490
+ .positive()
1491
+ .nullable()
1492
+ .optional()
1493
+ .describe("New max runs limit (null to clear)."),
1494
+ provider: z
1495
+ .string()
1496
+ .trim()
1497
+ .min(1)
1498
+ .optional()
1499
+ .describe("New provider for new-agent target."),
1500
+ model: z
1501
+ .string()
1502
+ .trim()
1503
+ .min(1)
1504
+ .nullable()
1505
+ .optional()
1506
+ .describe("New model for new-agent target (null to clear)."),
1507
+ mode: z
1508
+ .string()
1509
+ .trim()
1510
+ .min(1)
1511
+ .nullable()
1512
+ .optional()
1513
+ .describe("New mode for new-agent target (null to clear)."),
1514
+ cwd: z.string().trim().min(1).optional().describe("New cwd for new-agent target."),
1515
+ expiresIn: z
1516
+ .string()
1517
+ .optional()
1518
+ .describe("New relative expiry duration (for example: 1h, 2d)."),
1519
+ clearExpires: z.boolean().optional().describe("Clear any schedule expiry."),
1520
+ },
1521
+ outputSchema: StoredScheduleSchema.shape,
1522
+ }, async (input) => {
1523
+ if (!scheduleService) {
1524
+ throw new Error("Schedule service is not configured");
1525
+ }
1526
+ const schedule = await scheduleService.update(buildScheduleUpdateInput(input));
1527
+ return {
1528
+ content: [],
1529
+ structuredContent: ensureValidJson(schedule),
1530
+ };
1531
+ });
1532
+ registerTool("schedule_logs", {
1533
+ title: "Schedule logs",
1534
+ description: "Get the run history (logs) for a schedule.",
1535
+ inputSchema: {
1536
+ id: z.string(),
1537
+ },
1538
+ outputSchema: {
1539
+ runs: z.array(ScheduleRunSchema),
1540
+ },
1541
+ }, async ({ id }) => {
1542
+ if (!scheduleService) {
1543
+ throw new Error("Schedule service is not configured");
1544
+ }
1545
+ const runs = await scheduleService.logs(id);
1546
+ return {
1547
+ content: [],
1548
+ structuredContent: ensureValidJson({ runs }),
1549
+ };
1550
+ });
1551
+ registerTool("list_providers", {
1552
+ title: "List providers",
1553
+ description: "List configured agent providers, availability, and their modes.",
1554
+ inputSchema: {},
1555
+ outputSchema: {
1556
+ providers: z.array(ProviderSummarySchema),
1557
+ },
1558
+ }, async () => {
1559
+ const providers = await Promise.all(Object.values(providerRegistry ?? {}).map((provider) => resolveProviderSummary(provider, childLogger)));
1560
+ return {
1561
+ content: [],
1562
+ structuredContent: ensureValidJson({ providers }),
1563
+ };
1564
+ });
1565
+ registerTool("list_models", {
1566
+ title: "List models",
1567
+ description: "List models for an agent provider.",
1568
+ inputSchema: {
1569
+ provider: AgentProviderEnum,
1570
+ },
1571
+ outputSchema: {
1572
+ provider: z.string(),
1573
+ models: z.array(AgentModelSchema),
1574
+ },
1575
+ }, async ({ provider }) => {
1576
+ if (!providerRegistry) {
1577
+ throw new Error("Provider registry is not configured");
1578
+ }
1579
+ const definition = providerRegistry[provider];
1580
+ if (!definition) {
1581
+ throw new Error(`Provider ${provider} is not configured`);
1582
+ }
1583
+ if (!definition.enabled) {
1584
+ throw new Error(`Provider '${provider}' is disabled`);
1585
+ }
1586
+ const models = await definition.fetchModels({ cwd: resolveSnapshotCwd(), force: false });
1587
+ return {
1588
+ content: [],
1589
+ structuredContent: ensureValidJson({
1590
+ provider,
1591
+ models,
1592
+ }),
1593
+ };
1594
+ });
1595
+ registerTool("inspect_provider", {
1596
+ title: "Inspect provider",
1597
+ description: "Inspect compact provider capabilities for orchestration, including modes and draft feature settings. Use list_models for the full model list.",
1598
+ inputSchema: inspectProviderInputSchema,
1599
+ outputSchema: {
1600
+ provider: AgentProviderEnum,
1601
+ label: z.string().nullable().optional(),
1602
+ description: z.string().nullable().optional(),
1603
+ enabled: z.boolean(),
1604
+ status: z.string(),
1605
+ modes: z.array(ProviderModeSchema).nullish(),
1606
+ selectedModel: z.string().nullable(),
1607
+ features: z.array(AgentFeatureSchema),
1608
+ },
1609
+ }, async ({ provider, cwd, settings }) => {
1610
+ const resolvedProviderModel = resolveScheduleProviderAndModel({
1611
+ provider,
1612
+ defaultProvider: provider,
1613
+ });
1614
+ const providerId = resolvedProviderModel.provider;
1615
+ if (!providerRegistry) {
1616
+ throw new Error("Provider registry is not configured");
1617
+ }
1618
+ const definition = providerRegistry[providerId];
1619
+ if (!definition) {
1620
+ throw new Error(`Provider ${providerId} is not configured`);
1621
+ }
1622
+ const summary = await resolveProviderSummary(definition, childLogger);
1623
+ if (!definition.enabled) {
1624
+ throw new Error(`Provider '${providerId}' is disabled`);
1625
+ }
1626
+ if (summary.status !== "available") {
1627
+ throw new Error(summary.error ?? `Provider '${providerId}' is unavailable`);
1628
+ }
1629
+ const resolvedCwd = resolveScopedCwd(cwd, { required: true });
1630
+ const selectedModel = settings?.model ?? resolvedProviderModel.model;
1631
+ const features = await agentManager.listDraftFeatures({
1632
+ provider: providerId,
1633
+ cwd: resolvedCwd,
1634
+ ...(settings?.modeId ? { modeId: settings.modeId } : {}),
1635
+ ...(selectedModel ? { model: selectedModel } : {}),
1636
+ ...(settings?.thinkingOptionId ? { thinkingOptionId: settings.thinkingOptionId } : {}),
1637
+ ...(settings?.features ? { featureValues: settings.features } : {}),
1638
+ });
1639
+ return {
1640
+ content: [],
1641
+ structuredContent: ensureValidJson({
1642
+ provider: providerId,
1643
+ label: summary.label,
1644
+ description: summary.description,
1645
+ enabled: summary.enabled,
1646
+ status: summary.status,
1647
+ modes: summary.modes,
1648
+ selectedModel: selectedModel ?? null,
1649
+ features,
1650
+ }),
1651
+ };
1652
+ });
1653
+ registerTool("list_worktrees", {
1654
+ title: "List worktrees",
1655
+ description: "List Paseo-managed git worktrees for a repository.",
1656
+ inputSchema: {
1657
+ cwd: z
1658
+ .string()
1659
+ .optional()
1660
+ .describe("Optional repository cwd. Defaults to the caller agent cwd."),
1661
+ },
1662
+ outputSchema: {
1663
+ worktrees: z.array(WorktreeSummarySchema),
1664
+ },
1665
+ }, async ({ cwd }) => {
1666
+ const resolvedCwd = resolveScopedCwd(cwd, { required: true });
1667
+ if (!options.workspaceGitService) {
1668
+ throw new Error("WorkspaceGitService is required to list worktrees");
1669
+ }
1670
+ const worktrees = await options.workspaceGitService.listWorktrees(resolvedCwd, {
1671
+ reason: "mcp:list-worktrees",
1672
+ });
1673
+ return {
1674
+ content: [],
1675
+ structuredContent: ensureValidJson({ worktrees }),
1676
+ };
1677
+ });
1678
+ registerTool("create_worktree", {
1679
+ title: "Create worktree",
1680
+ description: "Create a Paseo-managed git worktree. Branch off a new branch, check out an existing branch, or check out a GitHub PR.",
1681
+ inputSchema: {
1682
+ cwd: z.string().optional().describe("Repository directory. Defaults to the agent's cwd."),
1683
+ target: z
1684
+ .discriminatedUnion("mode", [
1685
+ z
1686
+ .object({
1687
+ mode: z.literal("branch-off"),
1688
+ newBranch: z.string().min(1).describe("Name for the new branch."),
1689
+ base: z
1690
+ .string()
1691
+ .min(1)
1692
+ .optional()
1693
+ .describe("Base ref. Defaults to the repo's default branch."),
1694
+ })
1695
+ .describe("Create a new branch off a base."),
1696
+ z
1697
+ .object({
1698
+ mode: z.literal("checkout-branch"),
1699
+ branch: z.string().min(1).describe("Existing branch to check out."),
1700
+ })
1701
+ .describe("Check out an existing branch."),
1702
+ z
1703
+ .object({
1704
+ mode: z.literal("checkout-pr"),
1705
+ prNumber: z.number().int().positive().describe("Pull request number."),
1706
+ })
1707
+ .describe("Check out a GitHub pull request."),
1708
+ ])
1709
+ .describe("What the worktree should contain."),
1710
+ },
1711
+ outputSchema: {
1712
+ branchName: z.string(),
1713
+ worktreePath: z.string(),
1714
+ },
1715
+ }, async ({ cwd, target }) => {
1716
+ const repoRoot = resolveScopedCwd(cwd, { required: true });
1717
+ const mcpInput = mcpCreateWorktreeInput(repoRoot, target, options.paseoHome);
1718
+ const createdWorktree = await createMcpWorktree({
1719
+ input: mcpInput.input,
1720
+ createPaseoWorktree: options.createPaseoWorktree,
1721
+ resolveDefaultBranch: mcpInput.resolveDefaultBranch,
1722
+ });
1723
+ const { worktree } = createdWorktree;
1724
+ await options.workspaceGitService?.listWorktrees?.(repoRoot, {
1725
+ force: true,
1726
+ reason: "mcp:create-worktree",
1727
+ });
1728
+ return {
1729
+ content: [],
1730
+ structuredContent: ensureValidJson({
1731
+ branchName: worktree.branchName,
1732
+ worktreePath: worktree.worktreePath,
1733
+ }),
1734
+ };
1735
+ });
1736
+ registerTool("archive_worktree", {
1737
+ title: "Archive worktree",
1738
+ description: "Delete a Paseo-managed git worktree.",
1739
+ inputSchema: {
1740
+ cwd: z
1741
+ .string()
1742
+ .optional()
1743
+ .describe("Optional repository cwd. Defaults to the caller agent cwd."),
1744
+ worktreePath: z.string().optional(),
1745
+ worktreeSlug: z.string().optional(),
1746
+ },
1747
+ outputSchema: {
1748
+ success: z.boolean(),
1749
+ },
1750
+ }, async ({ cwd, worktreePath, worktreeSlug }) => {
1751
+ const resolvedCwd = resolveScopedCwd(cwd, { required: true });
1752
+ if (!worktreePath && !worktreeSlug) {
1753
+ throw new Error("worktreePath or worktreeSlug is required");
1754
+ }
1755
+ if (!options.github) {
1756
+ throw new Error("GitHub service is required to archive worktrees");
1757
+ }
1758
+ if (!options.workspaceGitService) {
1759
+ throw new Error("WorkspaceGitService is required to archive worktrees");
1760
+ }
1761
+ if (!options.archiveWorkspaceRecord) {
1762
+ throw new Error("Workspace registry archiver is required to archive worktrees");
1763
+ }
1764
+ if (!options.emitWorkspaceUpdatesForWorkspaceIds) {
1765
+ throw new Error("Workspace update emitter is required to archive worktrees");
1766
+ }
1767
+ if (!options.markWorkspaceArchiving) {
1768
+ throw new Error("Workspace archiving marker is required to archive worktrees");
1769
+ }
1770
+ if (!options.clearWorkspaceArchiving) {
1771
+ throw new Error("Workspace archiving clearer is required to archive worktrees");
1772
+ }
1773
+ if (!options.emitSessionMessage) {
1774
+ throw new Error("Session message emitter is required to archive worktrees");
1775
+ }
1776
+ const repoRoot = await options.workspaceGitService.resolveRepoRoot(resolvedCwd);
1777
+ const targetPath = worktreePath ??
1778
+ join(await getPaseoWorktreesRoot(repoRoot, options.paseoHome), worktreeSlug);
1779
+ await archivePaseoWorktree({
1780
+ paseoHome: options.paseoHome,
1781
+ github: options.github,
1782
+ workspaceGitService: options.workspaceGitService,
1783
+ agentManager,
1784
+ agentStorage,
1785
+ archiveWorkspaceRecord: options.archiveWorkspaceRecord,
1786
+ emit: options.emitSessionMessage,
1787
+ emitWorkspaceUpdatesForWorkspaceIds: options.emitWorkspaceUpdatesForWorkspaceIds,
1788
+ markWorkspaceArchiving: options.markWorkspaceArchiving,
1789
+ clearWorkspaceArchiving: options.clearWorkspaceArchiving,
1790
+ isPathWithinRoot: isSameOrDescendantPath,
1791
+ killTerminalsUnderPath: (rootPath) => killTerminalsUnderPath({
1792
+ terminalManager: terminalManager ?? null,
1793
+ isPathWithinRoot: isSameOrDescendantPath,
1794
+ killTrackedTerminal: () => { },
1795
+ sessionLogger: childLogger,
1796
+ }, rootPath),
1797
+ sessionLogger: childLogger,
1798
+ }, {
1799
+ targetPath,
1800
+ repoRoot,
1801
+ requestId: "mcp:archive_worktree",
1802
+ });
1803
+ await options.workspaceGitService.listWorktrees(repoRoot, {
1804
+ force: true,
1805
+ reason: "mcp:archive-worktree",
1806
+ });
1807
+ return {
1808
+ content: [],
1809
+ structuredContent: ensureValidJson({ success: true }),
1810
+ };
1811
+ });
1812
+ registerTool("get_agent_activity", {
1813
+ title: "Get agent activity",
1814
+ description: "Return recent agent timeline entries as a curated summary.",
1815
+ inputSchema: {
1816
+ agentId: z.string(),
1817
+ limit: z
1818
+ .number()
1819
+ .optional()
1820
+ .describe("Optional limit for number of activities to include (most recent first)."),
1821
+ },
1822
+ outputSchema: {
1823
+ agentId: z.string(),
1824
+ updateCount: z.number(),
1825
+ currentModeId: z.string().nullable(),
1826
+ content: z.string(),
1827
+ },
1828
+ }, async ({ agentId, limit }) => {
1829
+ await ensureAgentLoaded(agentId, {
1830
+ agentManager,
1831
+ agentStorage,
1832
+ logger: childLogger,
1833
+ });
1834
+ const timeline = agentManager.getTimeline(agentId);
1835
+ const snapshot = agentManager.getAgent(agentId);
1836
+ const selection = selectItemsByProjectedLimit({
1837
+ items: timeline,
1838
+ direction: "tail",
1839
+ limit: limit ?? 0,
1840
+ });
1841
+ const curatedContent = curateAgentActivity(selection.items);
1842
+ const { totalProjected, shownProjected } = selection;
1843
+ const noun = totalProjected === 1 ? "activity" : "activities";
1844
+ const countHeader = limit && shownProjected < totalProjected
1845
+ ? `Showing ${shownProjected} of ${totalProjected} ${noun} (limited to ${limit})`
1846
+ : `Showing all ${totalProjected} ${noun}`;
1847
+ const contentWithCount = `${countHeader}\n\n${curatedContent}`;
1848
+ return {
1849
+ content: [],
1850
+ structuredContent: ensureValidJson({
1851
+ agentId,
1852
+ updateCount: timeline.length,
1853
+ currentModeId: snapshot?.currentModeId ?? null,
1854
+ content: contentWithCount,
1855
+ }),
1856
+ };
1857
+ });
1858
+ registerTool("set_agent_mode", {
1859
+ title: "Set agent session mode",
1860
+ description: "Switch the agent's session mode (plan, bypassPermissions, read-only, auto, etc.).",
1861
+ inputSchema: {
1862
+ agentId: z.string(),
1863
+ modeId: z.string(),
1864
+ },
1865
+ outputSchema: {
1866
+ success: z.boolean(),
1867
+ newMode: z.string(),
1868
+ },
1869
+ }, async ({ agentId, modeId }) => {
1870
+ await agentManager.setAgentMode(agentId, modeId);
1871
+ return {
1872
+ content: [],
1873
+ structuredContent: ensureValidJson({ success: true, newMode: modeId }),
1874
+ };
1875
+ });
1876
+ registerTool("list_pending_permissions", {
1877
+ title: "List pending permissions",
1878
+ description: "Return all pending permission requests across all agents with the normalized payloads.",
1879
+ inputSchema: {},
1880
+ outputSchema: {
1881
+ permissions: z.array(z.object({
1882
+ agentId: z.string(),
1883
+ status: AgentStatusEnum,
1884
+ request: AgentPermissionRequestPayloadSchema,
1885
+ })),
1886
+ },
1887
+ }, async () => {
1888
+ const permissions = agentManager.listAgents().flatMap((agent) => {
1889
+ const payload = toAgentPayload(agent);
1890
+ return payload.pendingPermissions.map((request) => ({
1891
+ agentId: agent.id,
1892
+ status: payload.status,
1893
+ request,
1894
+ }));
1895
+ });
1896
+ return {
1897
+ content: [],
1898
+ structuredContent: ensureValidJson({ permissions }),
1899
+ };
1900
+ });
1901
+ registerTool("respond_to_permission", {
1902
+ title: "Respond to permission",
1903
+ description: "Approve or deny a pending permission request with an AgentManager-compatible response payload.",
1904
+ inputSchema: {
1905
+ agentId: z.string(),
1906
+ requestId: z.string(),
1907
+ response: AgentPermissionResponseSchema,
1908
+ },
1909
+ outputSchema: {
1910
+ success: z.boolean(),
1911
+ },
1912
+ }, async ({ agentId, requestId, response }) => {
1913
+ await agentManager.respondToPermission(agentId, requestId, response);
1914
+ return {
1915
+ content: [],
1916
+ structuredContent: ensureValidJson({ success: true }),
1917
+ };
1918
+ });
1919
+ return server;
1920
+ }
1921
+ function mcpCreateWorktreeInput(repoRoot, target, paseoHome) {
1922
+ const base = { cwd: repoRoot, runSetup: false, paseoHome };
1923
+ switch (target.mode) {
1924
+ case "branch-off":
1925
+ return {
1926
+ input: {
1927
+ ...base,
1928
+ worktreeSlug: target.newBranch,
1929
+ action: "branch-off",
1930
+ ...(target.base ? { refName: target.base } : {}),
1931
+ },
1932
+ };
1933
+ case "checkout-branch":
1934
+ return {
1935
+ input: { ...base, action: "checkout", refName: target.branch },
1936
+ };
1937
+ case "checkout-pr":
1938
+ return {
1939
+ input: { ...base, action: "checkout", githubPrNumber: target.prNumber },
1940
+ };
1941
+ default:
1942
+ throw new Error("unreachable");
1943
+ }
1944
+ }
1945
+ async function createMcpWorktree(options) {
1946
+ try {
1947
+ if (!options.createPaseoWorktree) {
1948
+ throw new Error("Paseo worktree service is not configured");
1949
+ }
1950
+ const result = await options.createPaseoWorktree(options.input, {
1951
+ ...(options.resolveDefaultBranch
1952
+ ? { resolveDefaultBranch: options.resolveDefaultBranch }
1953
+ : {}),
1954
+ ...(options.setupContinuation ? { setupContinuation: options.setupContinuation } : {}),
1955
+ });
1956
+ return result;
1957
+ }
1958
+ catch (error) {
1959
+ throw toWorktreeRequestError(error);
1960
+ }
1961
+ }
1962
+ //# sourceMappingURL=mcp-server.js.map