@camerontaylor/paseo-server 0.8.0-fork.1

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 (928) hide show
  1. package/.env.example +31 -0
  2. package/README.md +111 -0
  3. package/dist/scripts/dev-runner.js +37 -0
  4. package/dist/scripts/mcp-stdio-socket-bridge-cli.mjs +62 -0
  5. package/dist/scripts/supervisor-entrypoint.js +160 -0
  6. package/dist/scripts/supervisor-log-config.js +31 -0
  7. package/dist/scripts/supervisor.js +313 -0
  8. package/dist/server/executable-resolution/executable-resolution.d.ts +10 -0
  9. package/dist/server/executable-resolution/executable-resolution.js +121 -0
  10. package/dist/server/executable-resolution/windows.d.ts +18 -0
  11. package/dist/server/executable-resolution/windows.js +65 -0
  12. package/dist/server/server/agent/activity-curator.d.ts +40 -0
  13. package/dist/server/server/agent/activity-curator.js +243 -0
  14. package/dist/server/server/agent/agent-archive.d.ts +11 -0
  15. package/dist/server/server/agent/agent-archive.js +16 -0
  16. package/dist/server/server/agent/agent-configuration-validator.d.ts +18 -0
  17. package/dist/server/server/agent/agent-configuration-validator.js +42 -0
  18. package/dist/server/server/agent/agent-loading.d.ts +17 -0
  19. package/dist/server/server/agent/agent-loading.js +88 -0
  20. package/dist/server/server/agent/agent-manager.d.ts +555 -0
  21. package/dist/server/server/agent/agent-manager.js +3930 -0
  22. package/dist/server/server/agent/agent-owner.d.ts +12 -0
  23. package/dist/server/server/agent/agent-owner.js +12 -0
  24. package/dist/server/server/agent/agent-projections.d.ts +26 -0
  25. package/dist/server/server/agent/agent-projections.js +414 -0
  26. package/dist/server/server/agent/agent-prompt.d.ts +91 -0
  27. package/dist/server/server/agent/agent-prompt.js +359 -0
  28. package/dist/server/server/agent/agent-response-loop.d.ts +72 -0
  29. package/dist/server/server/agent/agent-response-loop.js +336 -0
  30. package/dist/server/server/agent/agent-run-state.d.ts +76 -0
  31. package/dist/server/server/agent/agent-run-state.js +212 -0
  32. package/dist/server/server/agent/agent-sdk-types.d.ts +742 -0
  33. package/dist/server/server/agent/agent-sdk-types.js +25 -0
  34. package/dist/server/server/agent/agent-storage.d.ts +148 -0
  35. package/dist/server/server/agent/agent-storage.js +401 -0
  36. package/dist/server/server/agent/agent-stream-coalescer.d.ts +43 -0
  37. package/dist/server/server/agent/agent-stream-coalescer.js +187 -0
  38. package/dist/server/server/agent/agent-timeline-content.d.ts +6 -0
  39. package/dist/server/server/agent/agent-timeline-content.js +62 -0
  40. package/dist/server/server/agent/agent-timeline-store-types.d.ts +54 -0
  41. package/dist/server/server/agent/agent-timeline-store-types.js +2 -0
  42. package/dist/server/server/agent/agent-timeline-store.d.ts +31 -0
  43. package/dist/server/server/agent/agent-timeline-store.js +249 -0
  44. package/dist/server/server/agent/audio-utils.d.ts +3 -0
  45. package/dist/server/server/agent/audio-utils.js +19 -0
  46. package/dist/server/server/agent/create-agent/create.d.ts +102 -0
  47. package/dist/server/server/agent/create-agent/create.js +362 -0
  48. package/dist/server/server/agent/create-agent/intent.d.ts +25 -0
  49. package/dist/server/server/agent/create-agent/intent.js +30 -0
  50. package/dist/server/server/agent/create-agent-lifecycle-dispatch.d.ts +65 -0
  51. package/dist/server/server/agent/create-agent-lifecycle-dispatch.js +166 -0
  52. package/dist/server/server/agent/create-agent-mode.d.ts +13 -0
  53. package/dist/server/server/agent/create-agent-mode.js +65 -0
  54. package/dist/server/server/agent/create-agent-title.d.ts +10 -0
  55. package/dist/server/server/agent/create-agent-title.js +34 -0
  56. package/dist/server/server/agent/dictation-debug.d.ts +13 -0
  57. package/dist/server/server/agent/dictation-debug.js +50 -0
  58. package/dist/server/server/agent/import-sessions.d.ts +57 -0
  59. package/dist/server/server/agent/import-sessions.js +240 -0
  60. package/dist/server/server/agent/lifecycle-command.d.ts +73 -0
  61. package/dist/server/server/agent/lifecycle-command.js +99 -0
  62. package/dist/server/server/agent/mcp-server.d.ts +5 -0
  63. package/dist/server/server/agent/mcp-server.js +31 -0
  64. package/dist/server/server/agent/mcp-shared.d.ts +181 -0
  65. package/dist/server/server/agent/mcp-shared.js +199 -0
  66. package/dist/server/server/agent/mutable-provider-config-owner.d.ts +8 -0
  67. package/dist/server/server/agent/mutable-provider-config-owner.js +35 -0
  68. package/dist/server/server/agent/paseo-tool-policy.d.ts +9 -0
  69. package/dist/server/server/agent/paseo-tool-policy.js +16 -0
  70. package/dist/server/server/agent/pcm16-resampler.d.ts +14 -0
  71. package/dist/server/server/agent/pcm16-resampler.js +63 -0
  72. package/dist/server/server/agent/permission-response.d.ts +15 -0
  73. package/dist/server/server/agent/permission-response.js +14 -0
  74. package/dist/server/server/agent/plugin-provider.d.ts +16 -0
  75. package/dist/server/server/agent/plugin-provider.js +1356 -0
  76. package/dist/server/server/agent/prompt-attachments.d.ts +12 -0
  77. package/dist/server/server/agent/prompt-attachments.js +182 -0
  78. package/dist/server/server/agent/provider-history-timestamps.d.ts +2 -0
  79. package/dist/server/server/agent/provider-history-timestamps.js +16 -0
  80. package/dist/server/server/agent/provider-launch-config.d.ts +43 -0
  81. package/dist/server/server/agent/provider-launch-config.js +167 -0
  82. package/dist/server/server/agent/provider-notices.d.ts +4 -0
  83. package/dist/server/server/agent/provider-notices.js +9 -0
  84. package/dist/server/server/agent/provider-options.d.ts +19 -0
  85. package/dist/server/server/agent/provider-options.js +53 -0
  86. package/dist/server/server/agent/provider-refresh-deadline.d.ts +11 -0
  87. package/dist/server/server/agent/provider-refresh-deadline.js +65 -0
  88. package/dist/server/server/agent/provider-registry.d.ts +72 -0
  89. package/dist/server/server/agent/provider-registry.js +604 -0
  90. package/dist/server/server/agent/provider-runtime.d.ts +16 -0
  91. package/dist/server/server/agent/provider-runtime.js +35 -0
  92. package/dist/server/server/agent/provider-session-import.d.ts +10 -0
  93. package/dist/server/server/agent/provider-session-import.js +55 -0
  94. package/dist/server/server/agent/provider-snapshot-manager.d.ts +166 -0
  95. package/dist/server/server/agent/provider-snapshot-manager.js +843 -0
  96. package/dist/server/server/agent/provider-subagents/store.d.ts +68 -0
  97. package/dist/server/server/agent/provider-subagents/store.js +111 -0
  98. package/dist/server/server/agent/providers/acp-agent.d.ts +703 -0
  99. package/dist/server/server/agent/providers/acp-agent.js +3412 -0
  100. package/dist/server/server/agent/providers/claude/agent.d.ts +74 -0
  101. package/dist/server/server/agent/providers/claude/agent.js +5236 -0
  102. package/dist/server/server/agent/providers/claude/feature-definitions.d.ts +8 -0
  103. package/dist/server/server/agent/providers/claude/feature-definitions.js +24 -0
  104. package/dist/server/server/agent/providers/claude/hooks.d.ts +12 -0
  105. package/dist/server/server/agent/providers/claude/hooks.js +20 -0
  106. package/dist/server/server/agent/providers/claude/model-manifest.d.ts +147 -0
  107. package/dist/server/server/agent/providers/claude/model-manifest.js +342 -0
  108. package/dist/server/server/agent/providers/claude/models.d.ts +28 -0
  109. package/dist/server/server/agent/providers/claude/models.js +141 -0
  110. package/dist/server/server/agent/providers/claude/options.d.ts +85 -0
  111. package/dist/server/server/agent/providers/claude/options.js +93 -0
  112. package/dist/server/server/agent/providers/claude/partial-json.d.ts +5 -0
  113. package/dist/server/server/agent/providers/claude/partial-json.js +306 -0
  114. package/dist/server/server/agent/providers/claude/project-dir.d.ts +6 -0
  115. package/dist/server/server/agent/providers/claude/project-dir.js +57 -0
  116. package/dist/server/server/agent/providers/claude/query.d.ts +17 -0
  117. package/dist/server/server/agent/providers/claude/query.js +86 -0
  118. package/dist/server/server/agent/providers/claude/rewind.d.ts +30 -0
  119. package/dist/server/server/agent/providers/claude/rewind.js +30 -0
  120. package/dist/server/server/agent/providers/claude/side-question.d.ts +16 -0
  121. package/dist/server/server/agent/providers/claude/side-question.js +57 -0
  122. package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts +35 -0
  123. package/dist/server/server/agent/providers/claude/sidechain-tracker.js +392 -0
  124. package/dist/server/server/agent/providers/claude/subagents/live-source.d.ts +161 -0
  125. package/dist/server/server/agent/providers/claude/subagents/live-source.js +415 -0
  126. package/dist/server/server/agent/providers/claude/subagents/observation.d.ts +53 -0
  127. package/dist/server/server/agent/providers/claude/subagents/observation.js +57 -0
  128. package/dist/server/server/agent/providers/claude/subagents/presentation.d.ts +12 -0
  129. package/dist/server/server/agent/providers/claude/subagents/presentation.js +41 -0
  130. package/dist/server/server/agent/providers/claude/subagents/replay-source.d.ts +70 -0
  131. package/dist/server/server/agent/providers/claude/subagents/replay-source.js +305 -0
  132. package/dist/server/server/agent/providers/claude/subagents/workflow-output.d.ts +4 -0
  133. package/dist/server/server/agent/providers/claude/subagents/workflow-output.js +86 -0
  134. package/dist/server/server/agent/providers/claude/subagents/workflow-replay-source.d.ts +38 -0
  135. package/dist/server/server/agent/providers/claude/subagents/workflow-replay-source.js +225 -0
  136. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +37 -0
  137. package/dist/server/server/agent/providers/claude/task-notification-tool-call.js +296 -0
  138. package/dist/server/server/agent/providers/claude/task-state.d.ts +18 -0
  139. package/dist/server/server/agent/providers/claude/task-state.js +185 -0
  140. package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.d.ts +24 -0
  141. package/dist/server/server/agent/providers/claude/test-rewind-claude-sdk.js +23 -0
  142. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.d.ts +3 -0
  143. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js +130 -0
  144. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts +16 -0
  145. package/dist/server/server/agent/providers/claude/tool-call-mapper.js +129 -0
  146. package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +101 -0
  147. package/dist/server/server/agent/providers/codex/app-server-transport.js +290 -0
  148. package/dist/server/server/agent/providers/codex/async-questions.d.ts +18 -0
  149. package/dist/server/server/agent/providers/codex/async-questions.js +135 -0
  150. package/dist/server/server/agent/providers/codex/options.d.ts +59 -0
  151. package/dist/server/server/agent/providers/codex/options.js +82 -0
  152. package/dist/server/server/agent/providers/codex/rewind.d.ts +24 -0
  153. package/dist/server/server/agent/providers/codex/rewind.js +77 -0
  154. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.d.ts +12 -0
  155. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js +104 -0
  156. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts +24 -0
  157. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +909 -0
  158. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +384 -0
  159. package/dist/server/server/agent/providers/codex-app-server-agent.js +5877 -0
  160. package/dist/server/server/agent/providers/codex-feature-definitions.d.ts +11 -0
  161. package/dist/server/server/agent/providers/codex-feature-definitions.js +55 -0
  162. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts +26 -0
  163. package/dist/server/server/agent/providers/copilot-acp-agent.js +187 -0
  164. package/dist/server/server/agent/providers/cursor-acp-agent.d.ts +17 -0
  165. package/dist/server/server/agent/providers/cursor-acp-agent.js +31 -0
  166. package/dist/server/server/agent/providers/diagnostic-utils.d.ts +36 -0
  167. package/dist/server/server/agent/providers/diagnostic-utils.js +356 -0
  168. package/dist/server/server/agent/providers/generic-acp-agent.d.ts +55 -0
  169. package/dist/server/server/agent/providers/generic-acp-agent.js +178 -0
  170. package/dist/server/server/agent/providers/gjc-acp-agent.d.ts +155 -0
  171. package/dist/server/server/agent/providers/gjc-acp-agent.js +588 -0
  172. package/dist/server/server/agent/providers/jsonl-frame-decoder.d.ts +17 -0
  173. package/dist/server/server/agent/providers/jsonl-frame-decoder.js +149 -0
  174. package/dist/server/server/agent/providers/jsonl-rpc-process.d.ts +63 -0
  175. package/dist/server/server/agent/providers/jsonl-rpc-process.js +207 -0
  176. package/dist/server/server/agent/providers/kimi-acp-agent.d.ts +35 -0
  177. package/dist/server/server/agent/providers/kimi-acp-agent.js +65 -0
  178. package/dist/server/server/agent/providers/kiro-acp-agent.d.ts +17 -0
  179. package/dist/server/server/agent/providers/kiro-acp-agent.js +78 -0
  180. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +111 -0
  181. package/dist/server/server/agent/providers/mock-load-test-agent.js +1340 -0
  182. package/dist/server/server/agent/providers/mock-slow-provider.d.ts +14 -0
  183. package/dist/server/server/agent/providers/mock-slow-provider.js +40 -0
  184. package/dist/server/server/agent/providers/omp/advisor-message.d.ts +11 -0
  185. package/dist/server/server/agent/providers/omp/advisor-message.js +80 -0
  186. package/dist/server/server/agent/providers/omp/agent.d.ts +178 -0
  187. package/dist/server/server/agent/providers/omp/agent.js +1952 -0
  188. package/dist/server/server/agent/providers/omp/cli-runtime.d.ts +22 -0
  189. package/dist/server/server/agent/providers/omp/cli-runtime.js +208 -0
  190. package/dist/server/server/agent/providers/omp/commands.d.ts +8 -0
  191. package/dist/server/server/agent/providers/omp/commands.js +62 -0
  192. package/dist/server/server/agent/providers/omp/custom-message.d.ts +7 -0
  193. package/dist/server/server/agent/providers/omp/custom-message.js +4 -0
  194. package/dist/server/server/agent/providers/omp/event-mapper.d.ts +13 -0
  195. package/dist/server/server/agent/providers/omp/event-mapper.js +267 -0
  196. package/dist/server/server/agent/providers/omp/history-hooks.d.ts +3 -0
  197. package/dist/server/server/agent/providers/omp/history-hooks.js +13 -0
  198. package/dist/server/server/agent/providers/omp/history.d.ts +19 -0
  199. package/dist/server/server/agent/providers/omp/history.js +306 -0
  200. package/dist/server/server/agent/providers/omp/host-tools.d.ts +14 -0
  201. package/dist/server/server/agent/providers/omp/host-tools.js +196 -0
  202. package/dist/server/server/agent/providers/omp/map-omp-model.d.ts +11 -0
  203. package/dist/server/server/agent/providers/omp/map-omp-model.js +67 -0
  204. package/dist/server/server/agent/providers/omp/message-history.d.ts +38 -0
  205. package/dist/server/server/agent/providers/omp/message-history.js +216 -0
  206. package/dist/server/server/agent/providers/omp/protocol-session.d.ts +13 -0
  207. package/dist/server/server/agent/providers/omp/protocol-session.js +39 -0
  208. package/dist/server/server/agent/providers/omp/provider-config.d.ts +43 -0
  209. package/dist/server/server/agent/providers/omp/provider-config.js +120 -0
  210. package/dist/server/server/agent/providers/omp/rpc-types.d.ts +2040 -0
  211. package/dist/server/server/agent/providers/omp/rpc-types.js +551 -0
  212. package/dist/server/server/agent/providers/omp/rpc-ui-permission-mapper.d.ts +24 -0
  213. package/dist/server/server/agent/providers/omp/rpc-ui-permission-mapper.js +156 -0
  214. package/dist/server/server/agent/providers/omp/runtime.d.ts +85 -0
  215. package/dist/server/server/agent/providers/omp/runtime.js +62 -0
  216. package/dist/server/server/agent/providers/omp/session-descriptor.d.ts +16 -0
  217. package/dist/server/server/agent/providers/omp/session-descriptor.js +389 -0
  218. package/dist/server/server/agent/providers/omp/subagent-card-tracker.d.ts +33 -0
  219. package/dist/server/server/agent/providers/omp/subagent-card-tracker.js +264 -0
  220. package/dist/server/server/agent/providers/omp/subagent-index.d.ts +13 -0
  221. package/dist/server/server/agent/providers/omp/subagent-index.js +111 -0
  222. package/dist/server/server/agent/providers/omp/subagent-title.d.ts +2 -0
  223. package/dist/server/server/agent/providers/omp/subagent-title.js +14 -0
  224. package/dist/server/server/agent/providers/omp/system-notice.d.ts +8 -0
  225. package/dist/server/server/agent/providers/omp/system-notice.js +68 -0
  226. package/dist/server/server/agent/providers/omp/todo-mapper.d.ts +9 -0
  227. package/dist/server/server/agent/providers/omp/todo-mapper.js +52 -0
  228. package/dist/server/server/agent/providers/omp/tool-call-detail.d.ts +110 -0
  229. package/dist/server/server/agent/providers/omp/tool-call-detail.js +288 -0
  230. package/dist/server/server/agent/providers/omp/tool-call-id.d.ts +4 -0
  231. package/dist/server/server/agent/providers/omp/tool-call-id.js +34 -0
  232. package/dist/server/server/agent/providers/omp/tool-call-mapper.d.ts +7 -0
  233. package/dist/server/server/agent/providers/omp/tool-call-mapper.js +98 -0
  234. package/dist/server/server/agent/providers/omp/usage-poller.d.ts +32 -0
  235. package/dist/server/server/agent/providers/omp/usage-poller.js +141 -0
  236. package/dist/server/server/agent/providers/opencode/bridge-plugin.bundle.mjs +14678 -0
  237. package/dist/server/server/agent/providers/opencode/bridge.d.ts +39 -0
  238. package/dist/server/server/agent/providers/opencode/bridge.js +249 -0
  239. package/dist/server/server/agent/providers/opencode/event-consumer.d.ts +60 -0
  240. package/dist/server/server/agent/providers/opencode/event-consumer.js +221 -0
  241. package/dist/server/server/agent/providers/opencode/options.d.ts +156 -0
  242. package/dist/server/server/agent/providers/opencode/options.js +62 -0
  243. package/dist/server/server/agent/providers/opencode/paths.d.ts +2 -0
  244. package/dist/server/server/agent/providers/opencode/paths.js +7 -0
  245. package/dist/server/server/agent/providers/opencode/rewind.d.ts +18 -0
  246. package/dist/server/server/agent/providers/opencode/rewind.js +14 -0
  247. package/dist/server/server/agent/providers/opencode/server-manager.d.ts +101 -0
  248. package/dist/server/server/agent/providers/opencode/server-manager.js +513 -0
  249. package/dist/server/server/agent/providers/opencode/side-question.d.ts +78 -0
  250. package/dist/server/server/agent/providers/opencode/side-question.js +172 -0
  251. package/dist/server/server/agent/providers/opencode/subagent-presentation.d.ts +36 -0
  252. package/dist/server/server/agent/providers/opencode/subagent-presentation.js +62 -0
  253. package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +22 -0
  254. package/dist/server/server/agent/providers/opencode/test-server-manager.js +43 -0
  255. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +3 -0
  256. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +256 -0
  257. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts +13 -0
  258. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +53 -0
  259. package/dist/server/server/agent/providers/opencode-agent.d.ts +393 -0
  260. package/dist/server/server/agent/providers/opencode-agent.js +4106 -0
  261. package/dist/server/server/agent/providers/pi/agent.d.ts +164 -0
  262. package/dist/server/server/agent/providers/pi/agent.js +2236 -0
  263. package/dist/server/server/agent/providers/pi/cli-runtime.d.ts +21 -0
  264. package/dist/server/server/agent/providers/pi/cli-runtime.js +177 -0
  265. package/dist/server/server/agent/providers/pi/history-mapper.d.ts +36 -0
  266. package/dist/server/server/agent/providers/pi/history-mapper.js +212 -0
  267. package/dist/server/server/agent/providers/pi/rewind.d.ts +8 -0
  268. package/dist/server/server/agent/providers/pi/rewind.js +8 -0
  269. package/dist/server/server/agent/providers/pi/rpc-types.d.ts +252 -0
  270. package/dist/server/server/agent/providers/pi/rpc-types.js +2 -0
  271. package/dist/server/server/agent/providers/pi/runtime.d.ts +77 -0
  272. package/dist/server/server/agent/providers/pi/runtime.js +65 -0
  273. package/dist/server/server/agent/providers/pi/session-descriptor.d.ts +16 -0
  274. package/dist/server/server/agent/providers/pi/session-descriptor.js +355 -0
  275. package/dist/server/server/agent/providers/pi/tool-call-mapper.d.ts +113 -0
  276. package/dist/server/server/agent/providers/pi/tool-call-mapper.js +340 -0
  277. package/dist/server/server/agent/providers/pi/usage-poller.d.ts +32 -0
  278. package/dist/server/server/agent/providers/pi/usage-poller.js +141 -0
  279. package/dist/server/server/agent/providers/provider-image-output.d.ts +25 -0
  280. package/dist/server/server/agent/providers/provider-image-output.js +165 -0
  281. package/dist/server/server/agent/providers/provider-runner.d.ts +27 -0
  282. package/dist/server/server/agent/providers/provider-runner.js +81 -0
  283. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +884 -0
  284. package/dist/server/server/agent/providers/tool-call-detail-primitives.js +778 -0
  285. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts +25 -0
  286. package/dist/server/server/agent/providers/tool-call-mapper-utils.js +208 -0
  287. package/dist/server/server/agent/providers/trae-acp-agent.d.ts +15 -0
  288. package/dist/server/server/agent/providers/trae-acp-agent.js +18 -0
  289. package/dist/server/server/agent/recordings-debug.d.ts +3 -0
  290. package/dist/server/server/agent/recordings-debug.js +19 -0
  291. package/dist/server/server/agent/rewind/rewind.d.ts +10 -0
  292. package/dist/server/server/agent/rewind/rewind.js +29 -0
  293. package/dist/server/server/agent/rewind/test-rewind-session.d.ts +48 -0
  294. package/dist/server/server/agent/rewind/test-rewind-session.js +88 -0
  295. package/dist/server/server/agent/runtime-mcp-config.d.ts +14 -0
  296. package/dist/server/server/agent/runtime-mcp-config.js +53 -0
  297. package/dist/server/server/agent/side-conversations/store.d.ts +33 -0
  298. package/dist/server/server/agent/side-conversations/store.js +62 -0
  299. package/dist/server/server/agent/stale-provider-session-error.d.ts +6 -0
  300. package/dist/server/server/agent/stale-provider-session-error.js +11 -0
  301. package/dist/server/server/agent/structured-generation-providers.d.ts +29 -0
  302. package/dist/server/server/agent/structured-generation-providers.js +193 -0
  303. package/dist/server/server/agent/stt-debug.d.ts +10 -0
  304. package/dist/server/server/agent/stt-debug.js +33 -0
  305. package/dist/server/server/agent/stt-manager.d.ts +38 -0
  306. package/dist/server/server/agent/stt-manager.js +246 -0
  307. package/dist/server/server/agent/system-prompt.d.ts +2 -0
  308. package/dist/server/server/agent/system-prompt.js +8 -0
  309. package/dist/server/server/agent/timeline-append.d.ts +10 -0
  310. package/dist/server/server/agent/timeline-append.js +27 -0
  311. package/dist/server/server/agent/timeline-page-bounds.d.ts +19 -0
  312. package/dist/server/server/agent/timeline-page-bounds.js +37 -0
  313. package/dist/server/server/agent/timeline-projection.d.ts +74 -0
  314. package/dist/server/server/agent/timeline-projection.js +467 -0
  315. package/dist/server/server/agent/timeline-prompt-index.d.ts +12 -0
  316. package/dist/server/server/agent/timeline-prompt-index.js +23 -0
  317. package/dist/server/server/agent/tools/paseo-tool-serialization.d.ts +4 -0
  318. package/dist/server/server/agent/tools/paseo-tool-serialization.js +58 -0
  319. package/dist/server/server/agent/tools/paseo-tools.d.ts +62 -0
  320. package/dist/server/server/agent/tools/paseo-tools.js +2445 -0
  321. package/dist/server/server/agent/tools/types.d.ts +39 -0
  322. package/dist/server/server/agent/tools/types.js +2 -0
  323. package/dist/server/server/agent/tts-debug.d.ts +8 -0
  324. package/dist/server/server/agent/tts-debug.js +24 -0
  325. package/dist/server/server/agent/tts-manager.d.ts +41 -0
  326. package/dist/server/server/agent/tts-manager.js +375 -0
  327. package/dist/server/server/agent-attention-policy.d.ts +29 -0
  328. package/dist/server/server/agent-attention-policy.js +36 -0
  329. package/dist/server/server/agent-history-search.d.ts +48 -0
  330. package/dist/server/server/agent-history-search.js +129 -0
  331. package/dist/server/server/atomic-file.d.ts +3 -0
  332. package/dist/server/server/atomic-file.js +19 -0
  333. package/dist/server/server/auth.d.ts +38 -0
  334. package/dist/server/server/auth.js +122 -0
  335. package/dist/server/server/authorization/index.d.ts +18 -0
  336. package/dist/server/server/authorization/index.js +47 -0
  337. package/dist/server/server/authorization/operation-permissions.d.ts +8 -0
  338. package/dist/server/server/authorization/operation-permissions.js +438 -0
  339. package/dist/server/server/auto-archive-on-merge/archive-if-safe.d.ts +40 -0
  340. package/dist/server/server/auto-archive-on-merge/archive-if-safe.js +64 -0
  341. package/dist/server/server/auto-archive-on-merge/index.d.ts +13 -0
  342. package/dist/server/server/auto-archive-on-merge/index.js +77 -0
  343. package/dist/server/server/bootstrap.d.ts +166 -0
  344. package/dist/server/server/bootstrap.js +1388 -0
  345. package/dist/server/server/browser-tools/broker.d.ts +45 -0
  346. package/dist/server/server/browser-tools/broker.js +390 -0
  347. package/dist/server/server/browser-tools/errors.d.ts +22 -0
  348. package/dist/server/server/browser-tools/errors.js +27 -0
  349. package/dist/server/server/browser-tools/policy.d.ts +10 -0
  350. package/dist/server/server/browser-tools/policy.js +16 -0
  351. package/dist/server/server/browser-tools/tools.d.ts +16 -0
  352. package/dist/server/server/browser-tools/tools.js +796 -0
  353. package/dist/server/server/checkout/status-projection.d.ts +19 -0
  354. package/dist/server/server/checkout/status-projection.js +127 -0
  355. package/dist/server/server/checkout-diff-manager.d.ts +48 -0
  356. package/dist/server/server/checkout-diff-manager.js +284 -0
  357. package/dist/server/server/checkout-git-utils.d.ts +11 -0
  358. package/dist/server/server/checkout-git-utils.js +34 -0
  359. package/dist/server/server/client-message-id.d.ts +3 -0
  360. package/dist/server/server/client-message-id.js +12 -0
  361. package/dist/server/server/config.d.ts +26 -0
  362. package/dist/server/server/config.js +594 -0
  363. package/dist/server/server/connection-offer.d.ts +20 -0
  364. package/dist/server/server/connection-offer.js +59 -0
  365. package/dist/server/server/creation/index.d.ts +41 -0
  366. package/dist/server/server/creation/index.js +250 -0
  367. package/dist/server/server/daemon-config-store.d.ts +63 -0
  368. package/dist/server/server/daemon-config-store.js +524 -0
  369. package/dist/server/server/daemon-keypair.d.ts +8 -0
  370. package/dist/server/server/daemon-keypair.js +42 -0
  371. package/dist/server/server/daemon-version.d.ts +5 -0
  372. package/dist/server/server/daemon-version.js +22 -0
  373. package/dist/server/server/daemon-worker.d.ts +2 -0
  374. package/dist/server/server/daemon-worker.js +287 -0
  375. package/dist/server/server/dictation/dictation-stream-manager.d.ts +88 -0
  376. package/dist/server/server/dictation/dictation-stream-manager.js +578 -0
  377. package/dist/server/server/directory-sync/index.d.ts +45 -0
  378. package/dist/server/server/directory-sync/index.js +98 -0
  379. package/dist/server/server/directory-sync/internal/versioned-collection.d.ts +56 -0
  380. package/dist/server/server/directory-sync/internal/versioned-collection.js +94 -0
  381. package/dist/server/server/exports.d.ts +24 -0
  382. package/dist/server/server/exports.js +24 -0
  383. package/dist/server/server/file-download/token-store.d.ts +24 -0
  384. package/dist/server/server/file-download/token-store.js +40 -0
  385. package/dist/server/server/file-explorer/observer.d.ts +32 -0
  386. package/dist/server/server/file-explorer/observer.js +130 -0
  387. package/dist/server/server/file-explorer/service.d.ts +125 -0
  388. package/dist/server/server/file-explorer/service.js +663 -0
  389. package/dist/server/server/file-observer/index.d.ts +43 -0
  390. package/dist/server/server/file-observer/index.js +114 -0
  391. package/dist/server/server/file-observer/internal/contracts.d.ts +26 -0
  392. package/dist/server/server/file-observer/internal/contracts.js +2 -0
  393. package/dist/server/server/file-observer/internal/linux.d.ts +4 -0
  394. package/dist/server/server/file-observer/internal/linux.js +260 -0
  395. package/dist/server/server/file-observer/internal/native-recursive.d.ts +9 -0
  396. package/dist/server/server/file-observer/internal/native-recursive.js +577 -0
  397. package/dist/server/server/file-observer/internal/observation.d.ts +21 -0
  398. package/dist/server/server/file-observer/internal/observation.js +129 -0
  399. package/dist/server/server/file-observer/internal/paths.d.ts +10 -0
  400. package/dist/server/server/file-observer/internal/paths.js +43 -0
  401. package/dist/server/server/file-upload/index.d.ts +27 -0
  402. package/dist/server/server/file-upload/index.js +158 -0
  403. package/dist/server/server/git-metadata-event-rules.d.ts +123 -0
  404. package/dist/server/server/git-metadata-event-rules.js +152 -0
  405. package/dist/server/server/hostnames.d.ts +13 -0
  406. package/dist/server/server/hostnames.js +94 -0
  407. package/dist/server/server/hub/daemon-executions.d.ts +89 -0
  408. package/dist/server/server/hub/daemon-executions.js +287 -0
  409. package/dist/server/server/hub/execution-controller.d.ts +30 -0
  410. package/dist/server/server/hub/execution-controller.js +220 -0
  411. package/dist/server/server/hub/relationship-controller.d.ts +116 -0
  412. package/dist/server/server/hub/relationship-controller.js +534 -0
  413. package/dist/server/server/hub/relationship-remote.d.ts +68 -0
  414. package/dist/server/server/hub/relationship-remote.js +159 -0
  415. package/dist/server/server/hub/relationship-retry.d.ts +7 -0
  416. package/dist/server/server/hub/relationship-retry.js +15 -0
  417. package/dist/server/server/json-utils.d.ts +11 -0
  418. package/dist/server/server/json-utils.js +45 -0
  419. package/dist/server/server/lifecycle-reasons.d.ts +4 -0
  420. package/dist/server/server/lifecycle-reasons.js +6 -0
  421. package/dist/server/server/logger.d.ts +29 -0
  422. package/dist/server/server/logger.js +127 -0
  423. package/dist/server/server/managed-processes/managed-processes.d.ts +76 -0
  424. package/dist/server/server/managed-processes/managed-processes.js +326 -0
  425. package/dist/server/server/messages.d.ts +9 -0
  426. package/dist/server/server/messages.js +29 -0
  427. package/dist/server/server/migrations/backfill-workspace-id.migration.d.ts +9 -0
  428. package/dist/server/server/migrations/backfill-workspace-id.migration.js +64 -0
  429. package/dist/server/server/orchestration-skills/index.d.ts +18 -0
  430. package/dist/server/server/orchestration-skills/index.js +18 -0
  431. package/dist/server/server/orchestration-skills/internal/controller.d.ts +39 -0
  432. package/dist/server/server/orchestration-skills/internal/controller.js +108 -0
  433. package/dist/server/server/orchestration-skills/internal/operations.d.ts +43 -0
  434. package/dist/server/server/orchestration-skills/internal/operations.js +178 -0
  435. package/dist/server/server/orchestration-skills/internal/paths.d.ts +4 -0
  436. package/dist/server/server/orchestration-skills/internal/paths.js +21 -0
  437. package/dist/server/server/orchestration-skills/internal/selection-store.d.ts +12 -0
  438. package/dist/server/server/orchestration-skills/internal/selection-store.js +39 -0
  439. package/dist/server/server/orchestration-skills/internal/sync.d.ts +21 -0
  440. package/dist/server/server/orchestration-skills/internal/sync.js +177 -0
  441. package/dist/server/server/orchestration-skills/internal/transaction.d.ts +22 -0
  442. package/dist/server/server/orchestration-skills/internal/transaction.js +483 -0
  443. package/dist/server/server/package-version.d.ts +19 -0
  444. package/dist/server/server/package-version.js +60 -0
  445. package/dist/server/server/pagination/cursor.d.ts +16 -0
  446. package/dist/server/server/pagination/cursor.js +62 -0
  447. package/dist/server/server/pagination/sortable-pager.d.ts +24 -0
  448. package/dist/server/server/pagination/sortable-pager.js +68 -0
  449. package/dist/server/server/pairing-offer.d.ts +18 -0
  450. package/dist/server/server/pairing-offer.js +47 -0
  451. package/dist/server/server/pairing-qr.d.ts +2 -0
  452. package/dist/server/server/pairing-qr.js +15 -0
  453. package/dist/server/server/paseo-env.d.ts +13 -0
  454. package/dist/server/server/paseo-env.js +54 -0
  455. package/dist/server/server/paseo-home.d.ts +2 -0
  456. package/dist/server/server/paseo-home.js +19 -0
  457. package/dist/server/server/paseo-worktree-service.d.ts +45 -0
  458. package/dist/server/server/paseo-worktree-service.js +191 -0
  459. package/dist/server/server/path-utils.d.ts +5 -0
  460. package/dist/server/server/path-utils.js +34 -0
  461. package/dist/server/server/persisted-config.d.ts +397 -0
  462. package/dist/server/server/persisted-config.js +411 -0
  463. package/dist/server/server/persistence-hooks.d.ts +32 -0
  464. package/dist/server/server/persistence-hooks.js +96 -0
  465. package/dist/server/server/pid-lock.d.ts +44 -0
  466. package/dist/server/server/pid-lock.js +285 -0
  467. package/dist/server/server/plugins/compiler-imports.d.ts +13 -0
  468. package/dist/server/server/plugins/compiler-imports.js +90 -0
  469. package/dist/server/server/plugins/compiler.d.ts +10 -0
  470. package/dist/server/server/plugins/compiler.js +354 -0
  471. package/dist/server/server/plugins/daemon-transport.d.ts +9 -0
  472. package/dist/server/server/plugins/daemon-transport.js +68 -0
  473. package/dist/server/server/plugins/index.d.ts +102 -0
  474. package/dist/server/server/plugins/index.js +575 -0
  475. package/dist/server/server/plugins/lifecycle/index.d.ts +40 -0
  476. package/dist/server/server/plugins/lifecycle/index.js +200 -0
  477. package/dist/server/server/plugins/managed-source.d.ts +50 -0
  478. package/dist/server/server/plugins/managed-source.js +327 -0
  479. package/dist/server/server/plugins/manifest.d.ts +12 -0
  480. package/dist/server/server/plugins/manifest.js +26 -0
  481. package/dist/server/server/plugins/plugin-process-protocol.d.ts +120 -0
  482. package/dist/server/server/plugins/plugin-process-protocol.js +154 -0
  483. package/dist/server/server/plugins/plugin-process.d.ts +2 -0
  484. package/dist/server/server/plugins/plugin-process.js +419 -0
  485. package/dist/server/server/plugins/plugin-sdk-specifiers.d.ts +5 -0
  486. package/dist/server/server/plugins/plugin-sdk-specifiers.js +23 -0
  487. package/dist/server/server/plugins/plugin-session-identity.d.ts +4 -0
  488. package/dist/server/server/plugins/plugin-session-identity.js +11 -0
  489. package/dist/server/server/plugins/preparation.d.ts +4 -0
  490. package/dist/server/server/plugins/preparation.js +49 -0
  491. package/dist/server/server/plugins/provider-icon.d.ts +2 -0
  492. package/dist/server/server/plugins/provider-icon.js +55 -0
  493. package/dist/server/server/plugins/runtime.d.ts +83 -0
  494. package/dist/server/server/plugins/runtime.js +836 -0
  495. package/dist/server/server/plugins/session-socket.d.ts +23 -0
  496. package/dist/server/server/plugins/session-socket.js +82 -0
  497. package/dist/server/server/plugins/settings/index.d.ts +96 -0
  498. package/dist/server/server/plugins/settings/index.js +115 -0
  499. package/dist/server/server/private-files.d.ts +6 -0
  500. package/dist/server/server/private-files.js +37 -0
  501. package/dist/server/server/process-diagnostics.d.ts +17 -0
  502. package/dist/server/server/process-diagnostics.js +22 -0
  503. package/dist/server/server/project-directory-service.d.ts +30 -0
  504. package/dist/server/server/project-directory-service.js +120 -0
  505. package/dist/server/server/project-key.d.ts +14 -0
  506. package/dist/server/server/project-key.js +44 -0
  507. package/dist/server/server/push/index.d.ts +16 -0
  508. package/dist/server/server/push/index.js +26 -0
  509. package/dist/server/server/push/push-service.d.ts +19 -0
  510. package/dist/server/server/push/push-service.js +66 -0
  511. package/dist/server/server/push/token-store.d.ts +22 -0
  512. package/dist/server/server/push/token-store.js +125 -0
  513. package/dist/server/server/relay-runtime.d.ts +27 -0
  514. package/dist/server/server/relay-runtime.js +46 -0
  515. package/dist/server/server/relay-transport.d.ts +33 -0
  516. package/dist/server/server/relay-transport.js +481 -0
  517. package/dist/server/server/request-receipts/index.d.ts +33 -0
  518. package/dist/server/server/request-receipts/index.js +131 -0
  519. package/dist/server/server/resolve-workspace-id-for-path.d.ts +3 -0
  520. package/dist/server/server/resolve-workspace-id-for-path.js +41 -0
  521. package/dist/server/server/resolve-worktree-creation-intent.d.ts +44 -0
  522. package/dist/server/server/resolve-worktree-creation-intent.js +186 -0
  523. package/dist/server/server/schedule/cron.d.ts +4 -0
  524. package/dist/server/server/schedule/cron.js +83 -0
  525. package/dist/server/server/schedule/service.d.ts +75 -0
  526. package/dist/server/server/schedule/service.js +810 -0
  527. package/dist/server/server/schedule/store.d.ts +27 -0
  528. package/dist/server/server/schedule/store.js +190 -0
  529. package/dist/server/server/script-health-monitor.d.ts +39 -0
  530. package/dist/server/server/script-health-monitor.js +159 -0
  531. package/dist/server/server/script-proxy.d.ts +3 -0
  532. package/dist/server/server/script-proxy.js +2 -0
  533. package/dist/server/server/script-route-branch-handler.d.ts +10 -0
  534. package/dist/server/server/script-route-branch-handler.js +11 -0
  535. package/dist/server/server/script-status-projection.d.ts +36 -0
  536. package/dist/server/server/script-status-projection.js +200 -0
  537. package/dist/server/server/server-id.d.ts +17 -0
  538. package/dist/server/server/server-id.js +68 -0
  539. package/dist/server/server/service-proxy.d.ts +237 -0
  540. package/dist/server/server/service-proxy.js +679 -0
  541. package/dist/server/server/session/agent-config/agent-config-session.d.ts +75 -0
  542. package/dist/server/server/session/agent-config/agent-config-session.js +151 -0
  543. package/dist/server/server/session/agent-updates/agent-updates-service.d.ts +65 -0
  544. package/dist/server/server/session/agent-updates/agent-updates-service.js +266 -0
  545. package/dist/server/server/session/checkout/checkout-session.d.ts +150 -0
  546. package/dist/server/server/session/checkout/checkout-session.js +1187 -0
  547. package/dist/server/server/session/checkout/git-metadata-generator.d.ts +53 -0
  548. package/dist/server/server/session/checkout/git-metadata-generator.js +159 -0
  549. package/dist/server/server/session/daemon/daemon-self-update-session-controller.d.ts +34 -0
  550. package/dist/server/server/session/daemon/daemon-self-update-session-controller.js +90 -0
  551. package/dist/server/server/session/daemon/daemon-self-updater.d.ts +33 -0
  552. package/dist/server/server/session/daemon/daemon-self-updater.js +60 -0
  553. package/dist/server/server/session/daemon/daemon-session.d.ts +90 -0
  554. package/dist/server/server/session/daemon/daemon-session.js +224 -0
  555. package/dist/server/server/session/daemon/diagnostics.d.ts +41 -0
  556. package/dist/server/server/session/daemon/diagnostics.js +431 -0
  557. package/dist/server/server/session/daemon/install-origin.d.ts +7 -0
  558. package/dist/server/server/session/daemon/install-origin.js +64 -0
  559. package/dist/server/server/session/daemon/npm-global-cli.d.ts +29 -0
  560. package/dist/server/server/session/daemon/npm-global-cli.js +98 -0
  561. package/dist/server/server/session/files/workspace-files-session.d.ts +55 -0
  562. package/dist/server/server/session/files/workspace-files-session.js +359 -0
  563. package/dist/server/server/session/git-mutation/git-mutation-service.d.ts +32 -0
  564. package/dist/server/server/session/git-mutation/git-mutation-service.js +74 -0
  565. package/dist/server/server/session/project-config/project-config-session.d.ts +35 -0
  566. package/dist/server/server/session/project-config/project-config-session.js +143 -0
  567. package/dist/server/server/session/project-config/worktree-setup-commit-status.d.ts +6 -0
  568. package/dist/server/server/session/project-config/worktree-setup-commit-status.js +38 -0
  569. package/dist/server/server/session/provider/provider-catalog-session.d.ts +78 -0
  570. package/dist/server/server/session/provider/provider-catalog-session.js +388 -0
  571. package/dist/server/server/session/schedule/schedule-session.d.ts +47 -0
  572. package/dist/server/server/session/schedule/schedule-session.js +188 -0
  573. package/dist/server/server/session/voice/voice-session.d.ts +166 -0
  574. package/dist/server/server/session/voice/voice-session.js +904 -0
  575. package/dist/server/server/session/voice/voice-turn-controller.d.ts +38 -0
  576. package/dist/server/server/session/voice/voice-turn-controller.js +393 -0
  577. package/dist/server/server/session/workspace-git-observer/workspace-git-observer-service.d.ts +42 -0
  578. package/dist/server/server/session/workspace-git-observer/workspace-git-observer-service.js +170 -0
  579. package/dist/server/server/session/workspace-provisioning/workspace-provisioning-service.d.ts +59 -0
  580. package/dist/server/server/session/workspace-provisioning/workspace-provisioning-service.js +326 -0
  581. package/dist/server/server/session/workspace-recovery/workspace-recovery-service.d.ts +30 -0
  582. package/dist/server/server/session/workspace-recovery/workspace-recovery-service.js +178 -0
  583. package/dist/server/server/session/workspace-scripts/workspace-scripts-service.d.ts +54 -0
  584. package/dist/server/server/session/workspace-scripts/workspace-scripts-service.js +156 -0
  585. package/dist/server/server/session.d.ts +555 -0
  586. package/dist/server/server/session.js +6540 -0
  587. package/dist/server/server/speech/audio.d.ts +10 -0
  588. package/dist/server/server/speech/audio.js +101 -0
  589. package/dist/server/server/speech/provider-resolver.d.ts +3 -0
  590. package/dist/server/server/speech/provider-resolver.js +7 -0
  591. package/dist/server/server/speech/providers/local/config.d.ts +30 -0
  592. package/dist/server/server/speech/providers/local/config.js +134 -0
  593. package/dist/server/server/speech/providers/local/models.d.ts +12 -0
  594. package/dist/server/server/speech/providers/local/models.js +18 -0
  595. package/dist/server/server/speech/providers/local/runtime.d.ts +31 -0
  596. package/dist/server/server/speech/providers/local/runtime.js +135 -0
  597. package/dist/server/server/speech/providers/local/sherpa/assets/silero_vad.onnx +0 -0
  598. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts +56 -0
  599. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js +74 -0
  600. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts +17 -0
  601. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +145 -0
  602. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts +49 -0
  603. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +73 -0
  604. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts +9 -0
  605. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js +107 -0
  606. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts +28 -0
  607. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +137 -0
  608. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts +21 -0
  609. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +133 -0
  610. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.d.ts +18 -0
  611. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
  612. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts +21 -0
  613. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js +101 -0
  614. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.d.ts +19 -0
  615. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.js +49 -0
  616. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.d.ts +38 -0
  617. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.js +176 -0
  618. package/dist/server/server/speech/providers/local/worker-bytes.d.ts +4 -0
  619. package/dist/server/server/speech/providers/local/worker-bytes.js +9 -0
  620. package/dist/server/server/speech/providers/local/worker-client.d.ts +93 -0
  621. package/dist/server/server/speech/providers/local/worker-client.js +590 -0
  622. package/dist/server/server/speech/providers/local/worker-process.d.ts +2 -0
  623. package/dist/server/server/speech/providers/local/worker-process.js +270 -0
  624. package/dist/server/server/speech/providers/local/worker-protocol.d.ts +95 -0
  625. package/dist/server/server/speech/providers/local/worker-protocol.js +2 -0
  626. package/dist/server/server/speech/providers/openai/config.d.ts +19 -0
  627. package/dist/server/server/speech/providers/openai/config.js +148 -0
  628. package/dist/server/server/speech/providers/openai/runtime.d.ts +29 -0
  629. package/dist/server/server/speech/providers/openai/runtime.js +102 -0
  630. package/dist/server/server/speech/providers/openai/stt.d.ts +23 -0
  631. package/dist/server/server/speech/providers/openai/stt.js +209 -0
  632. package/dist/server/server/speech/providers/openai/tts.d.ts +19 -0
  633. package/dist/server/server/speech/providers/openai/tts.js +48 -0
  634. package/dist/server/server/speech/speech-config-resolver.d.ts +11 -0
  635. package/dist/server/server/speech/speech-config-resolver.js +132 -0
  636. package/dist/server/server/speech/speech-provider.d.ts +59 -0
  637. package/dist/server/server/speech/speech-provider.js +2 -0
  638. package/dist/server/server/speech/speech-runtime.d.ts +45 -0
  639. package/dist/server/server/speech/speech-runtime.js +571 -0
  640. package/dist/server/server/speech/speech-types.d.ts +22 -0
  641. package/dist/server/server/speech/speech-types.js +8 -0
  642. package/dist/server/server/speech/turn-detection-provider.d.ts +23 -0
  643. package/dist/server/server/speech/turn-detection-provider.js +2 -0
  644. package/dist/server/server/utils/diff-highlighter.d.ts +57 -0
  645. package/dist/server/server/utils/diff-highlighter.js +304 -0
  646. package/dist/server/server/voice-config.d.ts +15 -0
  647. package/dist/server/server/voice-config.js +54 -0
  648. package/dist/server/server/voice-permission-policy.d.ts +4 -0
  649. package/dist/server/server/voice-permission-policy.js +13 -0
  650. package/dist/server/server/voice-types.d.ts +12 -0
  651. package/dist/server/server/voice-types.js +2 -0
  652. package/dist/server/server/watcher-liveness-canary.d.ts +11 -0
  653. package/dist/server/server/watcher-liveness-canary.js +53 -0
  654. package/dist/server/server/web-ui.d.ts +10 -0
  655. package/dist/server/server/web-ui.js +205 -0
  656. package/dist/server/server/websocket/encrypted-relay-socket.d.ts +23 -0
  657. package/dist/server/server/websocket/encrypted-relay-socket.js +64 -0
  658. package/dist/server/server/websocket/physical-socket.d.ts +36 -0
  659. package/dist/server/server/websocket/physical-socket.js +95 -0
  660. package/dist/server/server/websocket/runtime-metrics.d.ts +95 -0
  661. package/dist/server/server/websocket/runtime-metrics.js +148 -0
  662. package/dist/server/server/websocket-server.d.ts +214 -0
  663. package/dist/server/server/websocket-server.js +2258 -0
  664. package/dist/server/server/workspace-archive-service.d.ts +63 -0
  665. package/dist/server/server/workspace-archive-service.js +355 -0
  666. package/dist/server/server/workspace-auto-name.d.ts +55 -0
  667. package/dist/server/server/workspace-auto-name.js +127 -0
  668. package/dist/server/server/workspace-automation-gate.d.ts +16 -0
  669. package/dist/server/server/workspace-automation-gate.js +35 -0
  670. package/dist/server/server/workspace-bootstrap-dedupe.d.ts +34 -0
  671. package/dist/server/server/workspace-bootstrap-dedupe.js +23 -0
  672. package/dist/server/server/workspace-directory.d.ts +99 -0
  673. package/dist/server/server/workspace-directory.js +467 -0
  674. package/dist/server/server/workspace-git-fetch.d.ts +33 -0
  675. package/dist/server/server/workspace-git-fetch.js +108 -0
  676. package/dist/server/server/workspace-git-metadata.d.ts +8 -0
  677. package/dist/server/server/workspace-git-metadata.js +24 -0
  678. package/dist/server/server/workspace-git-service.d.ts +348 -0
  679. package/dist/server/server/workspace-git-service.js +2534 -0
  680. package/dist/server/server/workspace-labels/index.d.ts +14 -0
  681. package/dist/server/server/workspace-labels/index.js +10 -0
  682. package/dist/server/server/workspace-labels/internal/catalog-store.d.ts +50 -0
  683. package/dist/server/server/workspace-labels/internal/catalog-store.js +203 -0
  684. package/dist/server/server/workspace-labels/internal/sequence.d.ts +43 -0
  685. package/dist/server/server/workspace-labels/internal/sequence.js +80 -0
  686. package/dist/server/server/workspace-labels/internal/service.d.ts +57 -0
  687. package/dist/server/server/workspace-labels/internal/service.js +224 -0
  688. package/dist/server/server/workspace-reconciliation-service.d.ts +103 -0
  689. package/dist/server/server/workspace-reconciliation-service.js +379 -0
  690. package/dist/server/server/workspace-registry-bootstrap-legacy.d.ts +21 -0
  691. package/dist/server/server/workspace-registry-bootstrap-legacy.js +57 -0
  692. package/dist/server/server/workspace-registry-bootstrap.d.ts +14 -0
  693. package/dist/server/server/workspace-registry-bootstrap.js +155 -0
  694. package/dist/server/server/workspace-registry-model.d.ts +56 -0
  695. package/dist/server/server/workspace-registry-model.js +150 -0
  696. package/dist/server/server/workspace-registry.d.ts +228 -0
  697. package/dist/server/server/workspace-registry.js +468 -0
  698. package/dist/server/server/workspace-script-runtime-store.d.ts +28 -0
  699. package/dist/server/server/workspace-script-runtime-store.js +78 -0
  700. package/dist/server/server/workspace-service-env.d.ts +18 -0
  701. package/dist/server/server/workspace-service-env.js +85 -0
  702. package/dist/server/server/workspace-service-port-allocator.d.ts +11 -0
  703. package/dist/server/server/workspace-service-port-allocator.js +89 -0
  704. package/dist/server/server/workspace-service-port-registry.d.ts +24 -0
  705. package/dist/server/server/workspace-service-port-registry.js +172 -0
  706. package/dist/server/server/workspace-setup-runtime.d.ts +7 -0
  707. package/dist/server/server/workspace-setup-runtime.js +30 -0
  708. package/dist/server/server/workspace-source.d.ts +7 -0
  709. package/dist/server/server/workspace-source.js +15 -0
  710. package/dist/server/server/worktree/commands.d.ts +55 -0
  711. package/dist/server/server/worktree/commands.js +99 -0
  712. package/dist/server/server/worktree-bootstrap.d.ts +86 -0
  713. package/dist/server/server/worktree-bootstrap.js +753 -0
  714. package/dist/server/server/worktree-branch-name-generator.d.ts +35 -0
  715. package/dist/server/server/worktree-branch-name-generator.js +89 -0
  716. package/dist/server/server/worktree-core.d.ts +32 -0
  717. package/dist/server/server/worktree-core.js +114 -0
  718. package/dist/server/server/worktree-errors.d.ts +12 -0
  719. package/dist/server/server/worktree-errors.js +28 -0
  720. package/dist/server/server/worktree-session.d.ts +165 -0
  721. package/dist/server/server/worktree-session.js +594 -0
  722. package/dist/server/services/forge-cli-command.d.ts +128 -0
  723. package/dist/server/services/forge-cli-command.js +212 -0
  724. package/dist/server/services/forge-registry.d.ts +25 -0
  725. package/dist/server/services/forge-registry.js +155 -0
  726. package/dist/server/services/forge-resolver.d.ts +38 -0
  727. package/dist/server/services/forge-resolver.js +191 -0
  728. package/dist/server/services/forge-service.d.ts +430 -0
  729. package/dist/server/services/forge-service.js +50 -0
  730. package/dist/server/services/gitea-facts.d.ts +11 -0
  731. package/dist/server/services/gitea-facts.js +4 -0
  732. package/dist/server/services/gitea-service.d.ts +62 -0
  733. package/dist/server/services/gitea-service.js +1844 -0
  734. package/dist/server/services/github-facts.d.ts +27 -0
  735. package/dist/server/services/github-facts.js +4 -0
  736. package/dist/server/services/github-service.d.ts +76 -0
  737. package/dist/server/services/github-service.js +3297 -0
  738. package/dist/server/services/gitlab-facts.d.ts +26 -0
  739. package/dist/server/services/gitlab-facts.js +4 -0
  740. package/dist/server/services/gitlab-service.d.ts +43 -0
  741. package/dist/server/services/gitlab-service.js +1092 -0
  742. package/dist/server/services/quota-fetcher/manifest.d.ts +5 -0
  743. package/dist/server/services/quota-fetcher/manifest.js +118 -0
  744. package/dist/server/services/quota-fetcher/provider.d.ts +18 -0
  745. package/dist/server/services/quota-fetcher/provider.js +2 -0
  746. package/dist/server/services/quota-fetcher/providers/claude.d.ts +40 -0
  747. package/dist/server/services/quota-fetcher/providers/claude.js +389 -0
  748. package/dist/server/services/quota-fetcher/providers/codex.d.ts +23 -0
  749. package/dist/server/services/quota-fetcher/providers/codex.js +167 -0
  750. package/dist/server/services/quota-fetcher/providers/copilot.d.ts +21 -0
  751. package/dist/server/services/quota-fetcher/providers/copilot.js +77 -0
  752. package/dist/server/services/quota-fetcher/providers/cursor.d.ts +19 -0
  753. package/dist/server/services/quota-fetcher/providers/cursor.js +185 -0
  754. package/dist/server/services/quota-fetcher/providers/grok.d.ts +23 -0
  755. package/dist/server/services/quota-fetcher/providers/grok.js +137 -0
  756. package/dist/server/services/quota-fetcher/providers/kimi.d.ts +23 -0
  757. package/dist/server/services/quota-fetcher/providers/kimi.js +260 -0
  758. package/dist/server/services/quota-fetcher/providers/minimax.d.ts +29 -0
  759. package/dist/server/services/quota-fetcher/providers/minimax.js +227 -0
  760. package/dist/server/services/quota-fetcher/providers/zai.d.ts +17 -0
  761. package/dist/server/services/quota-fetcher/providers/zai.js +58 -0
  762. package/dist/server/services/quota-fetcher/service.d.ts +34 -0
  763. package/dist/server/services/quota-fetcher/service.js +74 -0
  764. package/dist/server/services/quota-fetcher/usage.d.ts +39 -0
  765. package/dist/server/services/quota-fetcher/usage.js +78 -0
  766. package/dist/server/skills/paseo/SKILL.md +129 -0
  767. package/dist/server/skills/paseo-advisor/SKILL.md +63 -0
  768. package/dist/server/skills/paseo-committee/SKILL.md +46 -0
  769. package/dist/server/skills/paseo-handoff/SKILL.md +65 -0
  770. package/dist/server/skills/paseo-help/SKILL.md +92 -0
  771. package/dist/server/skills/paseo-plugin/SKILL.md +639 -0
  772. package/dist/server/terminal/activity/terminal-activity-tracker.d.ts +21 -0
  773. package/dist/server/terminal/activity/terminal-activity-tracker.js +65 -0
  774. package/dist/server/terminal/agent-hooks/agent-hook-installer.d.ts +62 -0
  775. package/dist/server/terminal/agent-hooks/agent-hook-installer.js +117 -0
  776. package/dist/server/terminal/agent-hooks/claude/claude-settings.d.ts +7 -0
  777. package/dist/server/terminal/agent-hooks/claude/claude-settings.js +88 -0
  778. package/dist/server/terminal/agent-hooks/claude/claude.d.ts +4 -0
  779. package/dist/server/terminal/agent-hooks/claude/claude.js +47 -0
  780. package/dist/server/terminal/agent-hooks/codex/codex-settings.d.ts +7 -0
  781. package/dist/server/terminal/agent-hooks/codex/codex-settings.js +99 -0
  782. package/dist/server/terminal/agent-hooks/codex/codex.d.ts +4 -0
  783. package/dist/server/terminal/agent-hooks/codex/codex.js +30 -0
  784. package/dist/server/terminal/agent-hooks/opencode/opencode-plugin.d.ts +4 -0
  785. package/dist/server/terminal/agent-hooks/opencode/opencode-plugin.js +81 -0
  786. package/dist/server/terminal/agent-hooks/opencode/opencode.d.ts +3 -0
  787. package/dist/server/terminal/agent-hooks/opencode/opencode.js +23 -0
  788. package/dist/server/terminal/agent-hooks/provider-registry.d.ts +24 -0
  789. package/dist/server/terminal/agent-hooks/provider-registry.js +36 -0
  790. package/dist/server/terminal/agent-hooks/terminal-agent-hook-setting.d.ts +10 -0
  791. package/dist/server/terminal/agent-hooks/terminal-agent-hook-setting.js +26 -0
  792. package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -0
  793. package/dist/server/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  794. package/dist/server/terminal/terminal-capture.d.ts +12 -0
  795. package/dist/server/terminal/terminal-capture.js +43 -0
  796. package/dist/server/terminal/terminal-manager-factory.d.ts +6 -0
  797. package/dist/server/terminal/terminal-manager-factory.js +5 -0
  798. package/dist/server/terminal/terminal-manager.d.ts +80 -0
  799. package/dist/server/terminal/terminal-manager.js +321 -0
  800. package/dist/server/terminal/terminal-output-coalescer.d.ts +34 -0
  801. package/dist/server/terminal/terminal-output-coalescer.js +73 -0
  802. package/dist/server/terminal/terminal-restore.d.ts +18 -0
  803. package/dist/server/terminal/terminal-restore.js +52 -0
  804. package/dist/server/terminal/terminal-session-controller.d.ts +90 -0
  805. package/dist/server/terminal/terminal-session-controller.js +849 -0
  806. package/dist/server/terminal/terminal-size-ownership.d.ts +9 -0
  807. package/dist/server/terminal/terminal-size-ownership.js +23 -0
  808. package/dist/server/terminal/terminal-ts-loader.mjs +20 -0
  809. package/dist/server/terminal/terminal-worker-process.d.ts +2 -0
  810. package/dist/server/terminal/terminal-worker-process.js +308 -0
  811. package/dist/server/terminal/terminal-worker-protocol.d.ts +121 -0
  812. package/dist/server/terminal/terminal-worker-protocol.js +2 -0
  813. package/dist/server/terminal/terminal.d.ts +151 -0
  814. package/dist/server/terminal/terminal.js +1234 -0
  815. package/dist/server/terminal/worker-terminal-manager.d.ts +20 -0
  816. package/dist/server/terminal/worker-terminal-manager.js +688 -0
  817. package/dist/server/utils/build-metadata-prompt.d.ts +19 -0
  818. package/dist/server/utils/build-metadata-prompt.js +29 -0
  819. package/dist/server/utils/checkout-git.d.ts +317 -0
  820. package/dist/server/utils/checkout-git.js +2886 -0
  821. package/dist/server/utils/directory-suggestions.d.ts +29 -0
  822. package/dist/server/utils/directory-suggestions.js +596 -0
  823. package/dist/server/utils/git-command-runtime-metrics.d.ts +67 -0
  824. package/dist/server/utils/git-command-runtime-metrics.js +126 -0
  825. package/dist/server/utils/git-command-trace.d.ts +29 -0
  826. package/dist/server/utils/git-command-trace.js +74 -0
  827. package/dist/server/utils/git-process-scheduler.d.ts +34 -0
  828. package/dist/server/utils/git-process-scheduler.js +112 -0
  829. package/dist/server/utils/git-rev-parse-path.d.ts +3 -0
  830. package/dist/server/utils/git-rev-parse-path.js +21 -0
  831. package/dist/server/utils/paseo-config-file.d.ts +30 -0
  832. package/dist/server/utils/paseo-config-file.js +90 -0
  833. package/dist/server/utils/path.d.ts +27 -0
  834. package/dist/server/utils/path.js +156 -0
  835. package/dist/server/utils/project-custom-icon.d.ts +40 -0
  836. package/dist/server/utils/project-custom-icon.js +144 -0
  837. package/dist/server/utils/project-icon.d.ts +54 -0
  838. package/dist/server/utils/project-icon.js +445 -0
  839. package/dist/server/utils/promise-timeout.d.ts +9 -0
  840. package/dist/server/utils/promise-timeout.js +25 -0
  841. package/dist/server/utils/run-git-command.d.ts +59 -0
  842. package/dist/server/utils/run-git-command.js +393 -0
  843. package/dist/server/utils/spawn.d.ts +26 -0
  844. package/dist/server/utils/spawn.js +60 -0
  845. package/dist/server/utils/ssh-hostname.d.ts +8 -0
  846. package/dist/server/utils/ssh-hostname.js +60 -0
  847. package/dist/server/utils/string-command-shell.d.ts +13 -0
  848. package/dist/server/utils/string-command-shell.js +37 -0
  849. package/dist/server/utils/tree-kill.d.ts +19 -0
  850. package/dist/server/utils/tree-kill.js +77 -0
  851. package/dist/server/utils/windows-command.d.ts +15 -0
  852. package/dist/server/utils/windows-command.js +41 -0
  853. package/dist/server/utils/worktree-metadata.d.ts +77 -0
  854. package/dist/server/utils/worktree-metadata.js +280 -0
  855. package/dist/server/utils/worktree.d.ts +232 -0
  856. package/dist/server/utils/worktree.js +1193 -0
  857. package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css +1 -0
  858. package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css.br +0 -0
  859. package/dist/server/web-ui/_expo/static/css/xterm-3bb1704bf6cb0876640973dc0244b4cb.css.gz +0 -0
  860. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-29f33408b1a3c5b435c5202d62a36719.js +1 -0
  861. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-29f33408b1a3c5b435c5202d62a36719.js.br +0 -0
  862. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-bridge-29f33408b1a3c5b435c5202d62a36719.js.gz +0 -0
  863. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-41547ee520dfff946caa727824742a5c.js +1 -0
  864. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-41547ee520dfff946caa727824742a5c.js.br +0 -0
  865. package/dist/server/web-ui/_expo/static/js/web/desktop-attachment-store-41547ee520dfff946caa727824742a5c.js.gz +0 -0
  866. package/dist/server/web-ui/_expo/static/js/web/index-03b99be4265ac4a2bc5a6d602fd59cc4.js +16819 -0
  867. package/dist/server/web-ui/_expo/static/js/web/index-03b99be4265ac4a2bc5a6d602fd59cc4.js.br +0 -0
  868. package/dist/server/web-ui/_expo/static/js/web/index-03b99be4265ac4a2bc5a6d602fd59cc4.js.gz +0 -0
  869. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-5444610146b0794f1e7d9edad4522d41.js +1 -0
  870. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-5444610146b0794f1e7d9edad4522d41.js.br +0 -0
  871. package/dist/server/web-ui/_expo/static/js/web/indexeddb-attachment-store-5444610146b0794f1e7d9edad4522d41.js.gz +0 -0
  872. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-88b083190031a44788be59103814f511.js +3 -0
  873. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-88b083190031a44788be59103814f511.js.br +0 -0
  874. package/dist/server/web-ui/_expo/static/js/web/native-file-attachment-store-88b083190031a44788be59103814f511.js.gz +0 -0
  875. package/dist/server/web-ui/apple-touch-icon.png +0 -0
  876. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/back-icon-mask.0a328cd9c1afd0afe8e3b1ec5165b1b4.png +0 -0
  877. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/back-icon.35ba0eaec5a4f5ed12ca16fabeae451d.png +0 -0
  878. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55.png +0 -0
  879. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@2x.png +0 -0
  880. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@3x.png +0 -0
  881. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/clear-icon.c94f6478e7ae0cdd9f15de1fcb9e5e55@4x.png +0 -0
  882. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7.png +0 -0
  883. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@2x.png +0 -0
  884. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@3x.png +0 -0
  885. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/close-icon.808e1b1b9b53114ec2838071a7e6daa7@4x.png +0 -0
  886. package/dist/server/web-ui/assets/__node_modules/@react-navigation/elements/lib/module/assets/search-icon.286d67d3f74808a60a78d3ebf1a5fb57.png +0 -0
  887. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/arrow_down.017bc6ba3fc25503e5eb5e53826d48a8.png +0 -0
  888. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/error.d1ea1496f9057eb392d5bbf3732a61b7.png +0 -0
  889. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/file.19eeb73b9593a38f8e9f418337fc7d10.png +0 -0
  890. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/forward.d8b800c443b8972542883e0b9de2bdc6.png +0 -0
  891. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/pkg.ab19f4cbc543357183a20571f68380a3.png +0 -0
  892. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/sitemap.412dd9275b6b48ad28f5e3d81bb1f626.png +0 -0
  893. package/dist/server/web-ui/assets/__node_modules/expo-router/assets/unmatched.20e71bdf79e3a97bf55fd9e164041578.png +0 -0
  894. package/dist/server/web-ui/assets/assets/images/favicon-dark-attention.882b3a27dcb2073e9e31b334f9ed9728.png +0 -0
  895. package/dist/server/web-ui/assets/assets/images/favicon-dark-running.8112342ff0d39e047a7f8d4fad9402f3.png +0 -0
  896. package/dist/server/web-ui/assets/assets/images/favicon-dark.8005ed36ac07a5a7c60de25780897bd4.png +0 -0
  897. package/dist/server/web-ui/assets/assets/images/favicon-light-attention.882b3a27dcb2073e9e31b334f9ed9728.png +0 -0
  898. package/dist/server/web-ui/assets/assets/images/favicon-light-running.8112342ff0d39e047a7f8d4fad9402f3.png +0 -0
  899. package/dist/server/web-ui/assets/assets/images/favicon-light.8005ed36ac07a5a7c60de25780897bd4.png +0 -0
  900. package/dist/server/web-ui/assets/assets/images/notification-icon.3bf81d33ddbf380606bdd248ba83e158.png +0 -0
  901. package/dist/server/web-ui/favicon.ico +0 -0
  902. package/dist/server/web-ui/index.html +90 -0
  903. package/dist/server/web-ui/index.html.br +0 -0
  904. package/dist/server/web-ui/index.html.gz +0 -0
  905. package/dist/server/web-ui/manifest.json +27 -0
  906. package/dist/server/web-ui/manifest.json.br +0 -0
  907. package/dist/server/web-ui/manifest.json.gz +0 -0
  908. package/dist/server/web-ui/metadata.json +1 -0
  909. package/dist/server/web-ui/metadata.json.br +1 -0
  910. package/dist/server/web-ui/metadata.json.gz +0 -0
  911. package/dist/server/web-ui/pwa-icon-192.png +0 -0
  912. package/dist/server/web-ui/pwa-icon-512.png +0 -0
  913. package/dist/server/web-ui/robots.txt +2 -0
  914. package/dist/src/executable-resolution/executable-resolution.js +121 -0
  915. package/dist/src/executable-resolution/windows.js +65 -0
  916. package/dist/src/server/agent/provider-launch-config.js +167 -0
  917. package/dist/src/server/paseo-env.js +54 -0
  918. package/dist/src/server/paseo-home.js +19 -0
  919. package/dist/src/server/persisted-config.js +411 -0
  920. package/dist/src/server/pid-lock.js +285 -0
  921. package/dist/src/server/private-files.js +37 -0
  922. package/dist/src/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
  923. package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -0
  924. package/dist/src/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  925. package/dist/src/utils/spawn.js +60 -0
  926. package/dist/src/utils/tree-kill.js +77 -0
  927. package/dist/src/utils/windows-command.js +41 -0
  928. package/package.json +125 -0
@@ -0,0 +1,1952 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { existsSync } from "node:fs";
3
+ import { homedir } from "node:os";
4
+ import { setImmediate as waitForImmediate, setTimeout as delay } from "node:timers/promises";
5
+ import stripAnsi from "strip-ansi";
6
+ import { importSessionFromPersistence } from "../../provider-session-import.js";
7
+ import { runProviderRefreshActivity } from "../../provider-refresh-deadline.js";
8
+ import { runProviderTurn } from "../provider-runner.js";
9
+ import { checkProviderLaunchAvailable, resolveProviderLaunch, } from "../../provider-launch-config.js";
10
+ import { renderPromptAttachmentAsText } from "../../prompt-attachments.js";
11
+ import { composeSystemPromptParts } from "../../system-prompt.js";
12
+ import { buildBinaryDiagnosticRows, buildCommandResolutionDiagnosticRows, formatProviderDiagnostic, formatProviderDiagnosticError, toDiagnosticErrorMessage, } from "../diagnostic-utils.js";
13
+ import { formatOmpVersionSupport, mergeOmpRuntimeSettings, resolveOmpDiagnosticPaths, resolveOmpLaunchMode, resolveOmpProviderParams, OMP_MODES, } from "./provider-config.js";
14
+ export { formatOmpVersionSupport, resolveOmpDiagnosticPaths } from "./provider-config.js";
15
+ import { OmpSubagentCardTracker } from "./subagent-card-tracker.js";
16
+ import { shouldDisplayOmpCustomMessage } from "./custom-message.js";
17
+ import { getUserMessageText } from "./message-history.js";
18
+ import { mapOmpSystemNoticeToNotification } from "./system-notice.js";
19
+ import { materializeProviderImage } from "../provider-image-output.js";
20
+ import { OmpCliRuntime } from "./cli-runtime.js";
21
+ import { listOmpImportableSessions, readOmpImportSessionConfig } from "./session-descriptor.js";
22
+ import { parseToolArgs, parseToolResult, resolveToolCallName, } from "./tool-call-detail.js";
23
+ import { mapOmpAvailableCommandsUpdate, mapOmpRuntimeSlashCommands } from "./commands.js";
24
+ import { streamOmpHistory } from "./history.js";
25
+ import { mapOmpTodoReminderEvent, mapOmpTodoState, mapOmpTodoToolResult } from "./todo-mapper.js";
26
+ import { mapOmpRuntimeEventToTimelineItem } from "./event-mapper.js";
27
+ import { mapOmpAdvisorMessageToToolCall } from "./advisor-message.js";
28
+ import { clearOmpHostToolState, handleOmpHostToolRuntimeEvent, setOmpHostTools, } from "./host-tools.js";
29
+ import { OmpSubagentIndex } from "./subagent-index.js";
30
+ import { mapOmpToolDetail } from "./tool-call-mapper.js";
31
+ import { OmpUsagePoller } from "./usage-poller.js";
32
+ import { buildOmpRpcUiPermissionResponse, mapOmpRpcUiPermissionRequest, } from "./rpc-ui-permission-mapper.js";
33
+ import { DEFAULT_OMP_THINKING_LEVEL, mapOmpModel } from "./map-omp-model.js";
34
+ const OMP_PROVIDER = "omp";
35
+ const QUESTION_RESPONSE_HEADER = "Response";
36
+ const QUESTION_COMMENT_HEADER = "Comment";
37
+ const OMP_ASK_USER_FREEFORM_SENTINEL = "✏️ Type custom response...";
38
+ const COMBINED_ASK_USER_METADATA = "ask_user_select_optional_comment";
39
+ const OMP_CORE_CAPABILITIES = {
40
+ supportsStreaming: true,
41
+ supportsSessionPersistence: true,
42
+ supportsSessionListing: true,
43
+ supportsDynamicModes: true,
44
+ supportsMcpServers: false,
45
+ supportsReasoningStream: true,
46
+ supportsToolInvocations: true,
47
+ supportsRewindConversation: true,
48
+ supportsRewindFiles: false,
49
+ supportsRewindBoth: false,
50
+ };
51
+ // COMPAT(ompDelayedLocalOnlyResult): OMP 17.0.5 can report a regular prompt as
52
+ // local-only shortly before an extension-queued model turn starts. Added in
53
+ // v0.2.0-beta.1; remove after January 20, 2027 once the minimum OMP version
54
+ // guarantees prompt_result waits for queued extension work.
55
+ const OMP_NO_TURN_SETTLE_MS = 5000;
56
+ function createOmpProviderIdleScheduler() {
57
+ return {
58
+ waitForRetry: async () => {
59
+ await new Promise((resolve) => setTimeout(resolve, 10));
60
+ },
61
+ };
62
+ }
63
+ function createOmpNoTurnScheduler() {
64
+ return {
65
+ waitForSettle: async (signal) => {
66
+ await delay(OMP_NO_TURN_SETTLE_MS, undefined, { signal });
67
+ },
68
+ };
69
+ }
70
+ function normalizeOmpModelLabel(label) {
71
+ const normalizedLabel = label.trim().replace(/[_\s]+/g, " ");
72
+ const vendorSeparatorIndex = normalizedLabel.indexOf(": ");
73
+ if (vendorSeparatorIndex === -1) {
74
+ return normalizedLabel;
75
+ }
76
+ return normalizedLabel.slice(vendorSeparatorIndex + 2).trim();
77
+ }
78
+ export function transformOmpModels(models) {
79
+ return models.map((model) => {
80
+ if (!model.label.includes("/")) {
81
+ return model;
82
+ }
83
+ const segments = model.label.split("/").filter((segment) => segment.length > 0);
84
+ const rawLabel = segments.at(-1);
85
+ if (!rawLabel) {
86
+ return model;
87
+ }
88
+ return {
89
+ ...model,
90
+ label: normalizeOmpModelLabel(rawLabel),
91
+ description: model.description ?? model.label,
92
+ };
93
+ });
94
+ }
95
+ function isOmpThinkingLevel(value) {
96
+ return (value === "off" ||
97
+ value === "minimal" ||
98
+ value === "low" ||
99
+ value === "medium" ||
100
+ value === "high" ||
101
+ value === "xhigh" ||
102
+ value === "max");
103
+ }
104
+ function normalizeOmpThinkingOption(value) {
105
+ if (!value) {
106
+ return null;
107
+ }
108
+ return isOmpThinkingLevel(value) ? value : null;
109
+ }
110
+ function parseAutoCompactMode(value) {
111
+ const mode = (value ?? "toggle").trim().toLowerCase();
112
+ if (mode === "on" || mode === "true" || mode === "enable" || mode === "enabled") {
113
+ return true;
114
+ }
115
+ if (mode === "off" || mode === "false" || mode === "disable" || mode === "disabled") {
116
+ return false;
117
+ }
118
+ if (mode === "toggle") {
119
+ return "toggle";
120
+ }
121
+ return "unknown";
122
+ }
123
+ function ompModelSupportsImageInput(model) {
124
+ return model?.input?.includes("image") === true;
125
+ }
126
+ function renderTextOnlyImageHint(image) {
127
+ try {
128
+ const materialized = materializeProviderImage({
129
+ data: image.data,
130
+ mimeType: image.mimeType,
131
+ });
132
+ return `[Image available at: ${materialized.path}]`;
133
+ }
134
+ catch (error) {
135
+ return `[Image attachment omitted: failed to write local file (${toDiagnosticErrorMessage(error)})]`;
136
+ }
137
+ }
138
+ function convertPromptInput(prompt, options) {
139
+ if (typeof prompt === "string") {
140
+ return { text: prompt };
141
+ }
142
+ const textParts = [];
143
+ const images = [];
144
+ const forwardImages = ompModelSupportsImageInput(options.model);
145
+ for (const block of prompt) {
146
+ if (block.type === "text") {
147
+ textParts.push(block.text);
148
+ continue;
149
+ }
150
+ if (block.type === "image") {
151
+ if (forwardImages) {
152
+ images.push({
153
+ type: "image",
154
+ data: block.data,
155
+ mimeType: block.mimeType,
156
+ });
157
+ }
158
+ else {
159
+ textParts.push(renderTextOnlyImageHint(block));
160
+ }
161
+ continue;
162
+ }
163
+ textParts.push(renderPromptAttachmentAsText(block));
164
+ }
165
+ const payload = {
166
+ text: textParts.join("\n\n"),
167
+ };
168
+ if (images.length > 0) {
169
+ payload.images = images;
170
+ }
171
+ return payload;
172
+ }
173
+ function parseModelReference(modelId) {
174
+ if (!modelId) {
175
+ return null;
176
+ }
177
+ if (modelId.includes("/")) {
178
+ const [provider, ...rest] = modelId.split("/");
179
+ const id = rest.join("/");
180
+ if (provider && id) {
181
+ return { provider, id };
182
+ }
183
+ }
184
+ if (modelId.includes(":")) {
185
+ const [provider, ...rest] = modelId.split(":");
186
+ const id = rest.join(":");
187
+ if (provider && id) {
188
+ return { provider, id };
189
+ }
190
+ }
191
+ return { id: modelId };
192
+ }
193
+ function parsePersistenceMetadata(metadata) {
194
+ if (!metadata) {
195
+ return {};
196
+ }
197
+ return {
198
+ ...(typeof metadata.cwd === "string" ? { cwd: metadata.cwd } : {}),
199
+ ...(typeof metadata.model === "string" ? { model: metadata.model } : {}),
200
+ ...(typeof metadata.thinkingOptionId === "string"
201
+ ? { thinkingOptionId: metadata.thinkingOptionId }
202
+ : {}),
203
+ ...(typeof metadata.modeId === "string" ? { modeId: metadata.modeId } : {}),
204
+ ...(typeof metadata.systemPrompt === "string" ? { systemPrompt: metadata.systemPrompt } : {}),
205
+ };
206
+ }
207
+ function buildResumeConfig(metadata, overrides, provider) {
208
+ const overrideConfig = overrides ?? {};
209
+ const cwd = overrideConfig.cwd ?? metadata.cwd ?? process.cwd();
210
+ const model = overrideConfig.model ?? metadata.model;
211
+ const thinkingOptionId = overrideConfig.thinkingOptionId ?? metadata.thinkingOptionId;
212
+ const modeId = overrideConfig.modeId ?? metadata.modeId;
213
+ return {
214
+ cwd,
215
+ model,
216
+ thinkingOptionId,
217
+ modeId,
218
+ config: {
219
+ ...overrideConfig,
220
+ provider,
221
+ cwd,
222
+ model,
223
+ thinkingOptionId,
224
+ modeId,
225
+ systemPrompt: overrideConfig.systemPrompt ?? metadata.systemPrompt,
226
+ },
227
+ };
228
+ }
229
+ function buildResumeStartInput(input) {
230
+ return {
231
+ cwd: input.resumeConfig.cwd,
232
+ protocolMode: "rpc-ui",
233
+ env: input.launchContext?.env,
234
+ session: input.sessionFile,
235
+ model: input.resumeConfig.model,
236
+ thinkingOptionId: normalizeOmpThinkingOption(input.resumeConfig.thinkingOptionId) ?? undefined,
237
+ ...(input.launchMode.modeId ? { modeId: input.launchMode.modeId } : {}),
238
+ ...(input.launchMode.extraArgs ? { extraArgs: input.launchMode.extraArgs } : {}),
239
+ systemPrompt: composeSystemPromptParts(input.resumeConfig.config.systemPrompt, input.resumeConfig.config.daemonAppendSystemPrompt),
240
+ };
241
+ }
242
+ function readNativeMessageId(message) {
243
+ if (typeof message.id === "string") {
244
+ return message.id;
245
+ }
246
+ return typeof message.entryId === "string" ? message.entryId : undefined;
247
+ }
248
+ function withOmpCapabilities() {
249
+ return {
250
+ ...OMP_CORE_CAPABILITIES,
251
+ supportsMcpServers: false,
252
+ supportsNativePaseoTools: true,
253
+ };
254
+ }
255
+ function isOmpRequestAbortError(error) {
256
+ if (error instanceof Error && error.name === "AbortError") {
257
+ return true;
258
+ }
259
+ return /\brequest was aborted\b|\babort(ed)?\b/i.test(toDiagnosticErrorMessage(error));
260
+ }
261
+ function resolveThinkingOptionId(cachedThinkingOptionId, sessionThinkingLevel) {
262
+ const currentThinking = cachedThinkingOptionId ?? sessionThinkingLevel;
263
+ return normalizeOmpThinkingOption(currentThinking);
264
+ }
265
+ function modelToId(model) {
266
+ return model?.provider && model.id ? `${model.provider}/${model.id}` : null;
267
+ }
268
+ function ompAssistantText(message) {
269
+ const text = message.content
270
+ .flatMap((part) => {
271
+ if (part.type === "text") {
272
+ return [part.text];
273
+ }
274
+ if (part.type === "thinking") {
275
+ return [part.thinking];
276
+ }
277
+ return [];
278
+ })
279
+ .join("\n\n")
280
+ .trim();
281
+ return text.length > 0 ? text : null;
282
+ }
283
+ function formatOmpErrorMessage(message) {
284
+ const headline = message.errorMessage?.trim() || "OMP turn failed";
285
+ const details = [
286
+ message.stopReason ? `stopReason=${message.stopReason}` : null,
287
+ message.provider && message.model ? `model=${message.provider}/${message.model}` : null,
288
+ message.responseModel ? `responseModel=${message.responseModel}` : null,
289
+ message.responseId ? `responseId=${message.responseId}` : null,
290
+ ].filter((detail) => detail !== null);
291
+ const partialText = ompAssistantText(message);
292
+ if (partialText) {
293
+ details.push(`partial=${JSON.stringify(partialText.slice(0, 500))}`);
294
+ }
295
+ return details.length > 0 ? `${headline} (${details.join(", ")})` : headline;
296
+ }
297
+ function latestOmpErrorMessage(messages) {
298
+ const latestAssistant = messages.findLast((message) => message.role === "assistant");
299
+ if (!latestAssistant || !latestAssistant.errorMessage?.trim()) {
300
+ return null;
301
+ }
302
+ return formatOmpErrorMessage(latestAssistant);
303
+ }
304
+ function isRecord(value) {
305
+ return typeof value === "object" && value !== null && !Array.isArray(value);
306
+ }
307
+ function optionalString(value) {
308
+ return typeof value === "string" ? value : undefined;
309
+ }
310
+ function optionalBoolean(value) {
311
+ return typeof value === "boolean" ? value : undefined;
312
+ }
313
+ function readActiveAskUserDialog(toolName, args) {
314
+ if (toolName !== "ask_user" || !isRecord(args)) {
315
+ return null;
316
+ }
317
+ return {
318
+ allowComment: optionalBoolean(args.allowComment) ?? false,
319
+ allowFreeform: optionalBoolean(args.allowFreeform) ?? true,
320
+ allowMultiple: optionalBoolean(args.allowMultiple) ?? false,
321
+ };
322
+ }
323
+ function isOptionalInputPlaceholder(placeholder) {
324
+ return /\boptional\b|\bskip\b/i.test(placeholder ?? "");
325
+ }
326
+ function getInputQuestionTitle(title, placeholder) {
327
+ if (!isOptionalInputPlaceholder(placeholder)) {
328
+ return title ?? "Enter a value";
329
+ }
330
+ if (/\bcomment\b/i.test(`${title ?? ""}\n${placeholder ?? ""}`)) {
331
+ return "Optional comment";
332
+ }
333
+ return "Optional response";
334
+ }
335
+ function readStringArray(value) {
336
+ return Array.isArray(value)
337
+ ? value.filter((item) => typeof item === "string")
338
+ : [];
339
+ }
340
+ function isOmpAskUserFreeformOption(option) {
341
+ return option === OMP_ASK_USER_FREEFORM_SENTINEL;
342
+ }
343
+ function mapExtensionUiRequestToPermission(event, options = {}) {
344
+ const provider = options.provider ?? OMP_PROVIDER;
345
+ const label = options.label ?? "OMP";
346
+ switch (event.method) {
347
+ case "select": {
348
+ const selectOptions = readStringArray(event.options);
349
+ if (options.combineOptionalComment) {
350
+ return buildCombinedAskUserQuestionPermission(event, {
351
+ provider,
352
+ label,
353
+ question: optionalString(event.title) ?? "Select an option",
354
+ options: selectOptions,
355
+ allowFreeform: options.allowFreeform === true,
356
+ });
357
+ }
358
+ return buildExtensionUiQuestionPermission(event, {
359
+ provider,
360
+ label,
361
+ question: optionalString(event.title) ?? "Select an option",
362
+ options: selectOptions,
363
+ multiSelect: false,
364
+ });
365
+ }
366
+ case "input": {
367
+ const placeholder = optionalString(event.placeholder);
368
+ const title = optionalString(event.title);
369
+ const allowEmpty = isOptionalInputPlaceholder(placeholder);
370
+ return buildExtensionUiQuestionPermission(event, {
371
+ provider,
372
+ label,
373
+ question: getInputQuestionTitle(title, placeholder),
374
+ options: [],
375
+ multiSelect: false,
376
+ ...(placeholder ? { placeholder } : {}),
377
+ ...(allowEmpty ? { allowEmpty: true, dismissLabel: "Skip" } : {}),
378
+ });
379
+ }
380
+ case "editor":
381
+ return buildExtensionUiQuestionPermission(event, {
382
+ provider,
383
+ label,
384
+ question: optionalString(event.title) ?? "Edit text",
385
+ options: [],
386
+ multiSelect: false,
387
+ });
388
+ case "confirm":
389
+ return buildExtensionUiQuestionPermission(event, {
390
+ provider,
391
+ label,
392
+ question: [optionalString(event.title), optionalString(event.message)]
393
+ .filter(Boolean)
394
+ .join("\n\n"),
395
+ options: ["Yes", "No"],
396
+ multiSelect: false,
397
+ });
398
+ default:
399
+ return null;
400
+ }
401
+ }
402
+ function isExtensionUiRequestEvent(event) {
403
+ return event.type === "extension_ui_request" && typeof event.id === "string";
404
+ }
405
+ function isProcessExitEvent(event) {
406
+ return event.type === "process_exit" && typeof event.error === "string";
407
+ }
408
+ function isOmpAgentSessionEvent(event) {
409
+ switch (event.type) {
410
+ case "agent_start":
411
+ case "turn_start":
412
+ case "message_start":
413
+ case "message_end":
414
+ case "message_update":
415
+ case "tool_execution_start":
416
+ case "tool_execution_update":
417
+ case "tool_execution_end":
418
+ case "compaction_start":
419
+ case "compaction_end":
420
+ case "agent_end":
421
+ return true;
422
+ default:
423
+ return false;
424
+ }
425
+ }
426
+ function buildExtensionUiQuestionPermission(event, input) {
427
+ return {
428
+ id: event.id,
429
+ provider: input.provider,
430
+ name: `${input.label} ${event.method}`,
431
+ kind: "question",
432
+ title: input.question,
433
+ input: {
434
+ questions: [
435
+ {
436
+ question: input.question,
437
+ header: QUESTION_RESPONSE_HEADER,
438
+ options: input.options.map((label) => ({ label })),
439
+ multiSelect: input.multiSelect,
440
+ ...(input.placeholder ? { placeholder: input.placeholder } : {}),
441
+ ...(input.allowEmpty ? { allowEmpty: true } : {}),
442
+ ...(input.dismissLabel ? { dismissLabel: input.dismissLabel } : {}),
443
+ },
444
+ ],
445
+ },
446
+ metadata: {
447
+ extensionUiMethod: event.method,
448
+ answerHeader: QUESTION_RESPONSE_HEADER,
449
+ },
450
+ };
451
+ }
452
+ function buildCombinedAskUserQuestionPermission(event, input) {
453
+ const visibleOptions = input.options.filter((option) => !isOmpAskUserFreeformOption(option));
454
+ const allowOther = input.allowFreeform || visibleOptions.length !== input.options.length;
455
+ return {
456
+ id: event.id,
457
+ provider: input.provider,
458
+ name: `${input.label} ask_user`,
459
+ kind: "question",
460
+ title: input.question,
461
+ input: {
462
+ questions: [
463
+ {
464
+ question: input.question,
465
+ header: QUESTION_RESPONSE_HEADER,
466
+ options: visibleOptions.map((label) => ({ label })),
467
+ multiSelect: false,
468
+ ...(allowOther ? { allowOther: true } : {}),
469
+ },
470
+ {
471
+ question: "Optional comment",
472
+ header: QUESTION_COMMENT_HEADER,
473
+ options: [],
474
+ multiSelect: false,
475
+ placeholder: "Optional comment (press Enter to skip)...",
476
+ allowEmpty: true,
477
+ },
478
+ ],
479
+ },
480
+ metadata: {
481
+ extensionUiMethod: event.method,
482
+ answerHeader: QUESTION_RESPONSE_HEADER,
483
+ commentHeader: QUESTION_COMMENT_HEADER,
484
+ combinedAskUser: COMBINED_ASK_USER_METADATA,
485
+ selectOptions: visibleOptions,
486
+ ...(allowOther ? { freeformSentinel: OMP_ASK_USER_FREEFORM_SENTINEL } : {}),
487
+ },
488
+ };
489
+ }
490
+ function permissionAnswer(input, header) {
491
+ const answers = isRecord(input?.answers) ? input.answers : null;
492
+ if (!answers) {
493
+ return null;
494
+ }
495
+ const answer = answers[header];
496
+ return typeof answer === "string" ? answer : null;
497
+ }
498
+ function firstPermissionAnswer(input) {
499
+ const answers = isRecord(input?.answers) ? input.answers : null;
500
+ if (!answers) {
501
+ return null;
502
+ }
503
+ const first = Object.values(answers).find((value) => typeof value === "string");
504
+ return typeof first === "string" ? first : null;
505
+ }
506
+ function isCombinedAskUserPermission(request) {
507
+ return request.metadata?.combinedAskUser === COMBINED_ASK_USER_METADATA;
508
+ }
509
+ function buildCombinedAskUserSelectionResponse(request, response) {
510
+ if (response.behavior === "deny") {
511
+ return { uiResponse: { cancelled: true }, pendingResponse: null };
512
+ }
513
+ const answer = permissionAnswer(response.updatedInput, QUESTION_RESPONSE_HEADER);
514
+ if (answer === null) {
515
+ return { uiResponse: { cancelled: true }, pendingResponse: null };
516
+ }
517
+ const selectOptions = readStringArray(request.metadata?.selectOptions);
518
+ const freeformSentinel = optionalString(request.metadata?.freeformSentinel);
519
+ const isFreeform = Boolean(freeformSentinel) && !selectOptions.includes(answer);
520
+ const comment = permissionAnswer(response.updatedInput, QUESTION_COMMENT_HEADER) ?? "";
521
+ return {
522
+ uiResponse: { value: isFreeform ? freeformSentinel : answer },
523
+ pendingResponse: {
524
+ comment,
525
+ freeform: isFreeform ? answer : null,
526
+ },
527
+ };
528
+ }
529
+ function buildExtensionUiResponse(request, response) {
530
+ if (response.behavior === "deny") {
531
+ return { cancelled: true };
532
+ }
533
+ const method = optionalString(request.metadata?.extensionUiMethod);
534
+ const answer = firstPermissionAnswer(response.updatedInput);
535
+ if (answer === null) {
536
+ return { cancelled: true };
537
+ }
538
+ if (method === "confirm") {
539
+ return { confirmed: /^yes$/i.test(answer.trim()) };
540
+ }
541
+ return { value: answer };
542
+ }
543
+ function createRuntime(logger, runtimeSettings, providerParams) {
544
+ return new OmpCliRuntime({
545
+ logger,
546
+ runtimeSettings,
547
+ command: ["omp"],
548
+ commandsRpcName: "get_available_commands",
549
+ readyTimeoutMs: providerParams.readyTimeoutMs,
550
+ requestTimeoutMs: providerParams.rpcTimeoutMs,
551
+ });
552
+ }
553
+ export class OmpAgentSession {
554
+ constructor(options) {
555
+ this.provider = OMP_PROVIDER;
556
+ this.capabilities = withOmpCapabilities();
557
+ this.subscribers = new Set();
558
+ this.activeToolCalls = new Map();
559
+ this.pendingExtensionUiRequests = new Map();
560
+ this.activeAskUserDialog = null;
561
+ this.pendingCombinedAskUserResponse = null;
562
+ this.activeTurnId = null;
563
+ this.activeClientMessageId = null;
564
+ this.activeAssistantMessageId = null;
565
+ this.activeTurnTerminalAssistantMessage = null;
566
+ this.activeTurnStarted = false;
567
+ this.activeTurnHasUserMessage = false;
568
+ this.activeNoTurnPromptText = null;
569
+ this.pendingNoTurnOutputs = [];
570
+ this.activePromptRequestId = null;
571
+ this.activePromptAgentInvoked = null;
572
+ this.pendingPromptResults = new Map();
573
+ this.pendingNoTurnCompletionAbort = null;
574
+ this.outOfBandCompactionEmit = null;
575
+ this.outOfBandCompactionStarted = false;
576
+ this.outOfBandCompactionCompleted = false;
577
+ this.commandCache = null;
578
+ this.subagentIndex = new OmpSubagentIndex();
579
+ this.lastTodoItem = null;
580
+ this.closed = false;
581
+ this.emittedUserMessageIds = new Set();
582
+ this.runtimeSession = options.runtimeSession;
583
+ this.config = options.config;
584
+ this.state = options.initialState;
585
+ this.currentModeId = options.currentModeId ?? null;
586
+ this.logger = options.logger;
587
+ this.paseoTools = options.paseoTools;
588
+ this.live = options.live ?? true;
589
+ this.providerIdleScheduler = options.providerIdleScheduler ?? createOmpProviderIdleScheduler();
590
+ this.noTurnScheduler = options.noTurnScheduler ?? createOmpNoTurnScheduler();
591
+ this.usagePoller = new OmpUsagePoller({
592
+ scheduler: options.usagePollScheduler,
593
+ readStats: () => this.runtimeSession.getSessionStats(),
594
+ onUsage: (usage, turnId) => {
595
+ this.emit({
596
+ type: "usage_updated",
597
+ provider: this.provider,
598
+ usage,
599
+ ...(turnId === undefined ? {} : { turnId }),
600
+ });
601
+ },
602
+ onPollError: (error) => {
603
+ this.logger.debug({ err: error }, "OMP context usage poll failed");
604
+ },
605
+ });
606
+ this.subagentCardTracker = new OmpSubagentCardTracker({
607
+ scheduler: options.subagentCardScheduler,
608
+ });
609
+ this.lastKnownThinkingOptionId =
610
+ normalizeOmpThinkingOption(options.config.thinkingOptionId) ??
611
+ this.state.thinkingLevel ??
612
+ null;
613
+ this.runtimeSession.onEvent((event) => {
614
+ this.handleRuntimeEvent(event);
615
+ });
616
+ void this.runtimeSession.setSubagentSubscription("events").catch((eventsError) => {
617
+ this.logger.debug({ err: eventsError }, "OMP subagent event subscription unavailable; falling back to progress");
618
+ void this.runtimeSession
619
+ .setSubagentSubscription("progress")
620
+ .catch((progressError) => {
621
+ this.logger.debug({ err: progressError }, "OMP subagent progress subscription unavailable");
622
+ });
623
+ });
624
+ }
625
+ get id() {
626
+ return this.state.sessionId;
627
+ }
628
+ async run(prompt, options) {
629
+ return runProviderTurn({
630
+ prompt,
631
+ runOptions: options,
632
+ startTurn: (p, o) => this.startTurn(p, o),
633
+ subscribe: (callback) => this.subscribe(callback),
634
+ getSessionId: () => this.state.sessionId,
635
+ reduceFinalText: ({ current, item }) => item.type === "assistant_message" ? `${current}${item.text}` : current,
636
+ });
637
+ }
638
+ async startTurn(prompt, options) {
639
+ if (this.activeTurnId) {
640
+ throw new Error("An OMP turn is already active");
641
+ }
642
+ const payload = convertPromptInput(prompt, { model: this.state.model });
643
+ const turnId = randomUUID();
644
+ this.live = true;
645
+ this.activeTurnId = turnId;
646
+ this.activeClientMessageId = options?.clientMessageId ?? null;
647
+ this.activeAssistantMessageId = null;
648
+ this.activeTurnTerminalAssistantMessage = null;
649
+ this.activeTurnStarted = false;
650
+ this.activeTurnHasUserMessage = false;
651
+ this.activePromptRequestId = null;
652
+ this.clearNoTurnBuffers();
653
+ this.activeNoTurnPromptText = payload.text;
654
+ this.usagePoller.startTurn();
655
+ void (async () => {
656
+ try {
657
+ const ack = await this.runtimeSession.prompt(payload.text, payload.images);
658
+ this.activePromptRequestId = ack.requestId ?? null;
659
+ const correlatedResult = ack.requestId
660
+ ? this.pendingPromptResults.get(ack.requestId)
661
+ : undefined;
662
+ if (ack.requestId) {
663
+ this.pendingPromptResults.delete(ack.requestId);
664
+ }
665
+ this.activePromptAgentInvoked = correlatedResult ?? ack.agentInvoked ?? null;
666
+ if (correlatedResult === false) {
667
+ this.scheduleNoTurnPromptCompletion(turnId);
668
+ return;
669
+ }
670
+ if (correlatedResult !== true && ack.agentInvoked === false) {
671
+ await this.completeNoTurnPrompt(turnId);
672
+ return;
673
+ }
674
+ }
675
+ catch (error) {
676
+ if (this.activeTurnId !== turnId) {
677
+ return;
678
+ }
679
+ this.usagePoller.stopTurn();
680
+ this.activeTurnId = null;
681
+ this.activeClientMessageId = null;
682
+ this.activeTurnStarted = false;
683
+ this.activeTurnHasUserMessage = false;
684
+ this.activeAssistantMessageId = null;
685
+ this.activeTurnTerminalAssistantMessage = null;
686
+ this.clearNoTurnBuffers();
687
+ if (isOmpRequestAbortError(error)) {
688
+ this.emit({
689
+ type: "turn_canceled",
690
+ provider: this.provider,
691
+ turnId,
692
+ reason: toDiagnosticErrorMessage(error),
693
+ });
694
+ return;
695
+ }
696
+ this.emit({
697
+ type: "turn_failed",
698
+ provider: this.provider,
699
+ turnId,
700
+ error: toDiagnosticErrorMessage(error),
701
+ });
702
+ }
703
+ })();
704
+ return { turnId };
705
+ }
706
+ subscribe(callback) {
707
+ this.subscribers.add(callback);
708
+ return () => {
709
+ this.subscribers.delete(callback);
710
+ };
711
+ }
712
+ async *streamHistory() {
713
+ yield* streamOmpHistory({
714
+ sessionFile: this.state.sessionFile,
715
+ runtimeSession: this.runtimeSession,
716
+ provider: this.provider,
717
+ });
718
+ for (const item of mapOmpTodoState(this.state)) {
719
+ yield {
720
+ type: "timeline",
721
+ provider: this.provider,
722
+ item,
723
+ };
724
+ }
725
+ }
726
+ async getRuntimeInfo() {
727
+ await this.refreshState();
728
+ return {
729
+ provider: this.provider,
730
+ sessionId: this.state.sessionId,
731
+ model: modelToId(this.state.model),
732
+ thinkingOptionId: resolveThinkingOptionId(this.lastKnownThinkingOptionId, this.state.thinkingLevel),
733
+ modeId: this.currentModeId,
734
+ };
735
+ }
736
+ async getAvailableModes() {
737
+ return [...OMP_MODES];
738
+ }
739
+ async getCurrentMode() {
740
+ return this.currentModeId;
741
+ }
742
+ async setMode(modeId) {
743
+ if (!OMP_MODES.some((mode) => mode.id === modeId)) {
744
+ throw new Error(`Invalid OMP mode '${modeId}'`);
745
+ }
746
+ return {
747
+ type: "warning",
748
+ message: "Start a new OMP session to change approval mode",
749
+ };
750
+ }
751
+ getPendingPermissions() {
752
+ return [...this.pendingExtensionUiRequests.values()];
753
+ }
754
+ async respondToPermission(requestId, response) {
755
+ const request = this.pendingExtensionUiRequests.get(requestId);
756
+ if (!request) {
757
+ throw new Error(`No pending permission request with id '${requestId}'`);
758
+ }
759
+ this.pendingExtensionUiRequests.delete(requestId);
760
+ if (isCombinedAskUserPermission(request)) {
761
+ const combined = buildCombinedAskUserSelectionResponse(request, response);
762
+ this.pendingCombinedAskUserResponse = combined.pendingResponse;
763
+ this.runtimeSession.respondToExtensionUiRequest(requestId, combined.uiResponse);
764
+ }
765
+ else {
766
+ this.runtimeSession.respondToExtensionUiRequest(requestId, buildOmpRpcUiPermissionResponse(request, response) ??
767
+ buildExtensionUiResponse(request, response));
768
+ }
769
+ this.emit({
770
+ type: "permission_resolved",
771
+ provider: this.provider,
772
+ requestId,
773
+ resolution: response,
774
+ turnId: this.currentTurnIdForEvent(),
775
+ });
776
+ }
777
+ describePersistence() {
778
+ return {
779
+ provider: this.provider,
780
+ sessionId: this.state.sessionId,
781
+ nativeHandle: this.state.sessionFile,
782
+ metadata: {
783
+ cwd: this.config.cwd,
784
+ ...(this.config.model ? { model: this.config.model } : {}),
785
+ ...(this.config.thinkingOptionId ? { thinkingOptionId: this.config.thinkingOptionId } : {}),
786
+ ...(this.currentModeId ? { modeId: this.currentModeId } : {}),
787
+ },
788
+ };
789
+ }
790
+ async interrupt() {
791
+ const turnId = this.activeTurnId;
792
+ await this.runtimeSession.abort();
793
+ if (turnId && this.activeTurnId === turnId) {
794
+ this.terminalizeActiveWork();
795
+ this.usagePoller.stopTurn();
796
+ this.activeTurnId = null;
797
+ this.activeClientMessageId = null;
798
+ this.activeTurnStarted = false;
799
+ this.activeTurnHasUserMessage = false;
800
+ this.activeAssistantMessageId = null;
801
+ this.activeTurnTerminalAssistantMessage = null;
802
+ this.clearNoTurnBuffers();
803
+ this.emit({
804
+ type: "turn_canceled",
805
+ provider: this.provider,
806
+ reason: "interrupted",
807
+ turnId,
808
+ });
809
+ }
810
+ }
811
+ async revertConversation(input) {
812
+ if (this.activeTurnId) {
813
+ throw new Error("Cannot rewind the OMP conversation while a turn is active");
814
+ }
815
+ const target = input.messageId.trim();
816
+ if (!target) {
817
+ throw new Error("OMP rewind requires a user message id");
818
+ }
819
+ await this.runtimeSession.branch(target);
820
+ await this.refreshState();
821
+ this.activeToolCalls.clear();
822
+ }
823
+ async close() {
824
+ if (this.closed) {
825
+ return;
826
+ }
827
+ this.closed = true;
828
+ this.usagePoller.close();
829
+ this.cancelNoTurnPromptCompletion();
830
+ try {
831
+ await this.runtimeSession.close();
832
+ }
833
+ finally {
834
+ this.clearOmpSessionState();
835
+ }
836
+ }
837
+ clearOmpSessionState() {
838
+ this.subagentIndex.clear(this.runtimeSession);
839
+ this.clearOmpTurnState();
840
+ }
841
+ clearOmpTurnState() {
842
+ clearOmpHostToolState(this.runtimeSession);
843
+ this.subagentCardTracker.clear();
844
+ }
845
+ terminalizeActiveWork() {
846
+ for (const [toolCallId, toolCall] of this.activeToolCalls) {
847
+ this.emitToolCallEvent(toolCallId, toolCall, "canceled", null, null);
848
+ }
849
+ this.activeToolCalls.clear();
850
+ for (const event of this.subagentIndex.terminalizeRunning(this.runtimeSession)) {
851
+ this.emit(event);
852
+ }
853
+ this.clearOmpTurnState();
854
+ }
855
+ async listCommands() {
856
+ if (this.commandCache) {
857
+ return this.commandCache;
858
+ }
859
+ const commands = await this.runtimeSession.getCommands();
860
+ return mapOmpRuntimeSlashCommands(commands);
861
+ }
862
+ tryHandleOutOfBand(prompt) {
863
+ if (typeof prompt !== "string") {
864
+ return null;
865
+ }
866
+ const parsed = this.parseSlashCommandInput(prompt);
867
+ if (!parsed) {
868
+ return null;
869
+ }
870
+ this.live = true;
871
+ const commandName = parsed.commandName.toLowerCase();
872
+ if (commandName === "compact") {
873
+ return {
874
+ run: async ({ emit }) => {
875
+ await this.executeCompactCommand(parsed.args, emit);
876
+ },
877
+ };
878
+ }
879
+ if (commandName === "autocompact") {
880
+ return {
881
+ run: async ({ emit }) => {
882
+ await this.executeAutoCompactCommand(parsed.args, emit);
883
+ },
884
+ };
885
+ }
886
+ if (commandName === "steer" || commandName === "follow-up") {
887
+ const message = parsed.args?.trim();
888
+ if (!message) {
889
+ return null;
890
+ }
891
+ return {
892
+ run: async () => {
893
+ if (commandName === "steer") {
894
+ this.runtimeSession.steer(message);
895
+ }
896
+ else {
897
+ this.runtimeSession.followUp(message);
898
+ }
899
+ },
900
+ };
901
+ }
902
+ if (commandName === "handoff") {
903
+ return {
904
+ run: async ({ emit }) => {
905
+ await this.executeHandoffCommand(parsed.args, emit);
906
+ },
907
+ };
908
+ }
909
+ return null;
910
+ }
911
+ async setModel(modelId) {
912
+ const parsedReference = parseModelReference(modelId);
913
+ if (!parsedReference) {
914
+ return;
915
+ }
916
+ if (!parsedReference.provider) {
917
+ throw new Error(`OMP model id must include a provider: ${modelId}`);
918
+ }
919
+ const model = await this.runtimeSession.setModel(parsedReference.provider, parsedReference.id);
920
+ this.state = {
921
+ ...this.state,
922
+ model,
923
+ };
924
+ this.config.model = `${model.provider}/${model.id}`;
925
+ }
926
+ async setThinkingOption(thinkingOptionId) {
927
+ const thinkingLevel = normalizeOmpThinkingOption(thinkingOptionId) ?? DEFAULT_OMP_THINKING_LEVEL;
928
+ await this.runtimeSession.setThinkingLevel(thinkingLevel);
929
+ this.lastKnownThinkingOptionId = thinkingLevel;
930
+ this.config.thinkingOptionId = thinkingLevel;
931
+ this.state = {
932
+ ...this.state,
933
+ thinkingLevel,
934
+ };
935
+ }
936
+ emit(event) {
937
+ for (const subscriber of this.subscribers) {
938
+ subscriber(event);
939
+ }
940
+ }
941
+ currentTurnIdForEvent() {
942
+ return this.activeTurnId ?? undefined;
943
+ }
944
+ scheduleNoTurnPromptCompletion(turnId) {
945
+ this.cancelNoTurnPromptCompletion();
946
+ const abort = new AbortController();
947
+ this.pendingNoTurnCompletionAbort = abort;
948
+ void this.noTurnScheduler
949
+ .waitForSettle(abort.signal)
950
+ .then(async () => {
951
+ if (this.pendingNoTurnCompletionAbort !== abort) {
952
+ return undefined;
953
+ }
954
+ this.pendingNoTurnCompletionAbort = null;
955
+ return await this.completeNoTurnPrompt(turnId);
956
+ })
957
+ .catch((error) => {
958
+ if (!abort.signal.aborted) {
959
+ this.logger.debug({ err: error }, "OMP local-only settle wait failed");
960
+ }
961
+ });
962
+ }
963
+ cancelNoTurnPromptCompletion() {
964
+ this.pendingNoTurnCompletionAbort?.abort();
965
+ this.pendingNoTurnCompletionAbort = null;
966
+ }
967
+ async completeNoTurnPrompt(turnId) {
968
+ await waitForImmediate();
969
+ if (this.closed ||
970
+ this.activeTurnId !== turnId ||
971
+ this.activeTurnStarted ||
972
+ this.activePromptAgentInvoked === true ||
973
+ this.activeTurnHasUserMessage) {
974
+ return;
975
+ }
976
+ this.emitBufferedNoTurnOutputs(turnId);
977
+ this.completeTurn(turnId, []);
978
+ }
979
+ clearNoTurnBuffers() {
980
+ this.cancelNoTurnPromptCompletion();
981
+ this.activeNoTurnPromptText = null;
982
+ this.activePromptRequestId = null;
983
+ this.activePromptAgentInvoked = null;
984
+ this.pendingNoTurnOutputs.splice(0, this.pendingNoTurnOutputs.length);
985
+ }
986
+ emitBufferedNoTurnOutputs(turnId) {
987
+ const promptText = this.activeNoTurnPromptText;
988
+ const outputs = this.pendingNoTurnOutputs.filter((output) => output.turnId === turnId);
989
+ this.clearNoTurnBuffers();
990
+ if (promptText) {
991
+ this.emit({
992
+ type: "timeline",
993
+ provider: this.provider,
994
+ turnId,
995
+ item: {
996
+ type: "user_message",
997
+ text: promptText,
998
+ ...(this.activeClientMessageId ? { clientMessageId: this.activeClientMessageId } : {}),
999
+ },
1000
+ });
1001
+ }
1002
+ for (const output of outputs) {
1003
+ this.emit({
1004
+ type: "timeline",
1005
+ provider: this.provider,
1006
+ turnId,
1007
+ item: {
1008
+ type: "assistant_message",
1009
+ text: output.message,
1010
+ },
1011
+ });
1012
+ }
1013
+ }
1014
+ bufferNoTurnOutput(message) {
1015
+ if (!this.activeTurnId || this.activeTurnStarted) {
1016
+ return;
1017
+ }
1018
+ this.pendingNoTurnOutputs.push({ turnId: this.activeTurnId, message });
1019
+ }
1020
+ parseSlashCommandInput(text) {
1021
+ const trimmed = text.trim();
1022
+ if (!trimmed.startsWith("/") || trimmed.length <= 1) {
1023
+ return null;
1024
+ }
1025
+ const withoutPrefix = trimmed.slice(1);
1026
+ const firstWhitespaceIdx = withoutPrefix.search(/\s/);
1027
+ const commandName = firstWhitespaceIdx === -1 ? withoutPrefix : withoutPrefix.slice(0, firstWhitespaceIdx);
1028
+ if (!commandName || commandName.includes("/")) {
1029
+ return null;
1030
+ }
1031
+ const rawArgs = firstWhitespaceIdx === -1 ? "" : withoutPrefix.slice(firstWhitespaceIdx + 1).trim();
1032
+ return rawArgs.length > 0 ? { commandName, args: rawArgs } : { commandName };
1033
+ }
1034
+ async executeCompactCommand(customInstructions, emit) {
1035
+ if (this.outOfBandCompactionEmit) {
1036
+ throw new Error("An OMP compact command is already running");
1037
+ }
1038
+ this.outOfBandCompactionEmit = emit;
1039
+ this.outOfBandCompactionStarted = false;
1040
+ this.outOfBandCompactionCompleted = false;
1041
+ try {
1042
+ await this.runtimeSession.compact(customInstructions);
1043
+ }
1044
+ catch (error) {
1045
+ const message = error instanceof Error ? error.message : String(error);
1046
+ if (this.outOfBandCompactionEmit === emit &&
1047
+ this.outOfBandCompactionStarted &&
1048
+ !this.outOfBandCompactionCompleted) {
1049
+ this.emitCompactionTimeline({
1050
+ turnId: undefined,
1051
+ item: {
1052
+ type: "compaction",
1053
+ status: "completed",
1054
+ trigger: "manual",
1055
+ },
1056
+ });
1057
+ }
1058
+ emit({
1059
+ type: "timeline",
1060
+ provider: this.provider,
1061
+ item: {
1062
+ type: "assistant_message",
1063
+ text: `[Error] Failed to compact context: ${message}`,
1064
+ },
1065
+ });
1066
+ }
1067
+ finally {
1068
+ if (this.outOfBandCompactionEmit === emit && !this.outOfBandCompactionStarted) {
1069
+ this.outOfBandCompactionEmit = null;
1070
+ this.outOfBandCompactionStarted = false;
1071
+ this.outOfBandCompactionCompleted = false;
1072
+ }
1073
+ }
1074
+ }
1075
+ async executeAutoCompactCommand(mode, emit) {
1076
+ let enabled = parseAutoCompactMode(mode);
1077
+ if (enabled === "unknown") {
1078
+ emit({
1079
+ type: "timeline",
1080
+ provider: this.provider,
1081
+ item: {
1082
+ type: "assistant_message",
1083
+ text: "[Error] Usage: /autocompact [on|off|toggle]",
1084
+ },
1085
+ });
1086
+ return;
1087
+ }
1088
+ if (enabled === "toggle") {
1089
+ const state = await this.runtimeSession.getState();
1090
+ if (typeof state.autoCompactionEnabled !== "boolean") {
1091
+ emit({
1092
+ type: "timeline",
1093
+ provider: this.provider,
1094
+ item: {
1095
+ type: "assistant_message",
1096
+ text: "[Error] Auto-compaction state is unavailable. Use /autocompact on or /autocompact off.",
1097
+ },
1098
+ });
1099
+ return;
1100
+ }
1101
+ enabled = !state.autoCompactionEnabled;
1102
+ }
1103
+ try {
1104
+ await this.runtimeSession.setAutoCompaction(enabled);
1105
+ }
1106
+ catch (error) {
1107
+ const message = error instanceof Error ? error.message : String(error);
1108
+ emit({
1109
+ type: "timeline",
1110
+ provider: this.provider,
1111
+ item: {
1112
+ type: "assistant_message",
1113
+ text: `[Error] Failed to set auto-compaction: ${message}`,
1114
+ },
1115
+ });
1116
+ return;
1117
+ }
1118
+ this.state = {
1119
+ ...this.state,
1120
+ autoCompactionEnabled: enabled,
1121
+ };
1122
+ emit({
1123
+ type: "timeline",
1124
+ provider: this.provider,
1125
+ item: {
1126
+ type: "assistant_message",
1127
+ text: `Auto-compaction ${enabled ? "enabled" : "disabled"}.`,
1128
+ },
1129
+ });
1130
+ }
1131
+ async executeHandoffCommand(instructions, emit) {
1132
+ try {
1133
+ await this.runtimeSession.handoff(instructions);
1134
+ }
1135
+ catch (error) {
1136
+ const message = error instanceof Error ? error.message : String(error);
1137
+ emit({
1138
+ type: "timeline",
1139
+ provider: this.provider,
1140
+ item: {
1141
+ type: "assistant_message",
1142
+ text: `[Error] Failed to hand off turn: ${message}`,
1143
+ },
1144
+ });
1145
+ }
1146
+ }
1147
+ handleExtensionUiRequest(event) {
1148
+ const message = optionalString(event.message);
1149
+ if (event.method === "notify" && message) {
1150
+ this.bufferNoTurnOutput(message);
1151
+ }
1152
+ const sideEffectItem = this.mapExtensionUiSideEffect(event);
1153
+ if (sideEffectItem) {
1154
+ this.emit({
1155
+ type: "timeline",
1156
+ provider: this.provider,
1157
+ turnId: this.currentTurnIdForEvent(),
1158
+ item: sideEffectItem,
1159
+ });
1160
+ return;
1161
+ }
1162
+ if (this.respondToCombinedAskUserFollowUp(event)) {
1163
+ return;
1164
+ }
1165
+ const shouldCombineOptionalComment = event.method === "select" &&
1166
+ this.activeAskUserDialog?.allowComment === true &&
1167
+ this.activeAskUserDialog.allowMultiple === false;
1168
+ const request = mapOmpRpcUiPermissionRequest(event, { provider: this.provider }) ??
1169
+ mapExtensionUiRequestToPermission(event, {
1170
+ provider: this.provider,
1171
+ label: "OMP",
1172
+ combineOptionalComment: shouldCombineOptionalComment,
1173
+ allowFreeform: this.activeAskUserDialog?.allowFreeform,
1174
+ });
1175
+ if (!request) {
1176
+ return;
1177
+ }
1178
+ this.pendingExtensionUiRequests.set(request.id, request);
1179
+ this.emit({
1180
+ type: "permission_requested",
1181
+ provider: this.provider,
1182
+ request,
1183
+ turnId: this.currentTurnIdForEvent(),
1184
+ });
1185
+ }
1186
+ mapExtensionUiSideEffect(event) {
1187
+ if (event.method !== "open_url" || typeof event.url !== "string") {
1188
+ return null;
1189
+ }
1190
+ const lines = [`[Open URL](${event.url})`, `URL: ${event.url}`];
1191
+ if (typeof event.launchUrl === "string") {
1192
+ lines.push(`Launch URL: ${event.launchUrl}`);
1193
+ }
1194
+ if (typeof event.instructions === "string") {
1195
+ lines.push("", event.instructions);
1196
+ }
1197
+ return { type: "assistant_message", text: lines.join("\n") };
1198
+ }
1199
+ respondToCombinedAskUserFollowUp(event) {
1200
+ const pending = this.pendingCombinedAskUserResponse;
1201
+ if (!pending || event.method !== "input") {
1202
+ return false;
1203
+ }
1204
+ const placeholder = optionalString(event.placeholder);
1205
+ if (pending.freeform !== null && !isOptionalInputPlaceholder(placeholder)) {
1206
+ this.pendingCombinedAskUserResponse = {
1207
+ ...pending,
1208
+ freeform: null,
1209
+ };
1210
+ this.runtimeSession.respondToExtensionUiRequest(event.id, { value: pending.freeform });
1211
+ return true;
1212
+ }
1213
+ if (isOptionalInputPlaceholder(placeholder)) {
1214
+ this.pendingCombinedAskUserResponse = null;
1215
+ this.runtimeSession.respondToExtensionUiRequest(event.id, { value: pending.comment });
1216
+ return true;
1217
+ }
1218
+ return false;
1219
+ }
1220
+ handleCommandOutput(textValue) {
1221
+ if (!this.activeTurnId) {
1222
+ return;
1223
+ }
1224
+ const text = stripAnsi(optionalString(textValue) ?? "").trim();
1225
+ if (!text) {
1226
+ return;
1227
+ }
1228
+ if (!this.activeTurnStarted) {
1229
+ this.bufferNoTurnOutput(text);
1230
+ return;
1231
+ }
1232
+ this.emit({
1233
+ type: "timeline",
1234
+ provider: this.provider,
1235
+ turnId: this.currentTurnIdForEvent(),
1236
+ item: { type: "assistant_message", text },
1237
+ });
1238
+ }
1239
+ handleExtraRuntimeEvent(event) {
1240
+ if (handleOmpHostToolRuntimeEvent(event, {
1241
+ runtimeSession: this.runtimeSession,
1242
+ paseoTools: this.paseoTools,
1243
+ logger: this.logger,
1244
+ })) {
1245
+ return true;
1246
+ }
1247
+ if (event.type === "subagent_lifecycle") {
1248
+ const payload = event.payload;
1249
+ if (payload.parentToolCallId && this.activeToolCalls.has(payload.parentToolCallId)) {
1250
+ this.subagentCardTracker.handleLifecycle(payload, (toolCallId) => this.emitActiveToolCall(toolCallId));
1251
+ }
1252
+ for (const mapped of this.subagentIndex.handleLifecycle(this.runtimeSession, payload)) {
1253
+ this.emit(mapped);
1254
+ }
1255
+ return true;
1256
+ }
1257
+ if (event.type === "subagent_progress") {
1258
+ const payload = event.payload;
1259
+ if (payload.parentToolCallId && this.activeToolCalls.has(payload.parentToolCallId)) {
1260
+ this.subagentCardTracker.handleProgress(payload, (toolCallId) => this.emitActiveToolCall(toolCallId));
1261
+ }
1262
+ for (const mapped of this.subagentIndex.handleProgress(this.runtimeSession, payload)) {
1263
+ this.emit(mapped);
1264
+ }
1265
+ return true;
1266
+ }
1267
+ if (event.type === "subagent_event") {
1268
+ const payload = event.payload;
1269
+ for (const mapped of this.subagentIndex.handleEvent(this.runtimeSession, payload)) {
1270
+ this.emit(mapped);
1271
+ }
1272
+ return true;
1273
+ }
1274
+ if (event.type === "todo_reminder") {
1275
+ const item = mapOmpTodoReminderEvent(event);
1276
+ if (item) {
1277
+ this.emitTodoItem(item);
1278
+ }
1279
+ else {
1280
+ this.logger.debug({ event }, "Dropped malformed OMP todo reminder event");
1281
+ }
1282
+ return true;
1283
+ }
1284
+ if (event.type === "available_commands_update") {
1285
+ const commands = mapOmpAvailableCommandsUpdate(event);
1286
+ if (commands) {
1287
+ this.commandCache = commands;
1288
+ }
1289
+ else {
1290
+ this.logger.debug({ event }, "Dropped malformed OMP command update event");
1291
+ }
1292
+ return true;
1293
+ }
1294
+ const mappedEvent = mapOmpRuntimeEventToTimelineItem(event);
1295
+ if (!mappedEvent.handled) {
1296
+ return false;
1297
+ }
1298
+ if (mappedEvent.item) {
1299
+ this.emit({
1300
+ type: "timeline",
1301
+ provider: this.provider,
1302
+ item: mappedEvent.item,
1303
+ });
1304
+ }
1305
+ else {
1306
+ this.logger.debug({ event, reason: mappedEvent.logReason }, "Dropped unsupported OMP runtime event");
1307
+ }
1308
+ return true;
1309
+ }
1310
+ emitActiveToolCall(toolCallId) {
1311
+ const toolCall = this.activeToolCalls.get(toolCallId);
1312
+ return toolCall ? this.emitToolCallEvent(toolCallId, toolCall, "running", null, null) : false;
1313
+ }
1314
+ emitTodoItem(item, turnId) {
1315
+ if (item.type === "todo") {
1316
+ const previous = this.lastTodoItem;
1317
+ const isDuplicate = previous?.items.length === item.items.length &&
1318
+ previous.items.every((previousItem, index) => {
1319
+ const nextItem = item.items[index];
1320
+ return (nextItem?.text === previousItem.text && nextItem.completed === previousItem.completed);
1321
+ });
1322
+ if (isDuplicate) {
1323
+ return;
1324
+ }
1325
+ this.lastTodoItem = item;
1326
+ }
1327
+ this.emit({ type: "timeline", provider: this.provider, turnId, item });
1328
+ }
1329
+ handleRuntimeEvent(event) {
1330
+ if (isExtensionUiRequestEvent(event)) {
1331
+ this.handleExtensionUiRequest(event);
1332
+ return;
1333
+ }
1334
+ if (isProcessExitEvent(event)) {
1335
+ this.handleProcessExit(event.error);
1336
+ return;
1337
+ }
1338
+ if (event.type === "command_output") {
1339
+ this.handleCommandOutput(event.text);
1340
+ return;
1341
+ }
1342
+ if (event.type === "prompt_result") {
1343
+ const requestId = optionalString("id" in event ? event.id : undefined);
1344
+ const agentInvoked = "agentInvoked" in event && typeof event.agentInvoked === "boolean"
1345
+ ? event.agentInvoked
1346
+ : undefined;
1347
+ if (requestId && agentInvoked !== undefined) {
1348
+ if (requestId === this.activePromptRequestId && this.activeTurnId) {
1349
+ this.activePromptAgentInvoked = agentInvoked;
1350
+ if (agentInvoked === false) {
1351
+ this.scheduleNoTurnPromptCompletion(this.activeTurnId);
1352
+ }
1353
+ else {
1354
+ this.cancelNoTurnPromptCompletion();
1355
+ }
1356
+ }
1357
+ else if (this.activePromptRequestId === null) {
1358
+ this.pendingPromptResults.set(requestId, agentInvoked);
1359
+ }
1360
+ }
1361
+ return;
1362
+ }
1363
+ if (this.handleExtraRuntimeEvent(event)) {
1364
+ return;
1365
+ }
1366
+ if (isOmpAgentSessionEvent(event)) {
1367
+ if (event.type === "agent_start") {
1368
+ this.live = true;
1369
+ }
1370
+ else if (!this.live) {
1371
+ // A resumed OMP process replays session events for pre-existing
1372
+ // conversation on startup; that content is delivered via
1373
+ // streamHistory, so replay must not re-enter the live timeline.
1374
+ return;
1375
+ }
1376
+ this.handleSessionEvent(event);
1377
+ return;
1378
+ }
1379
+ this.logger.debug({ event }, "Dropped unknown OMP runtime event");
1380
+ }
1381
+ handleProcessExit(error) {
1382
+ this.usagePoller.stopTurn();
1383
+ this.terminalizeActiveWork();
1384
+ this.subagentIndex.clear(this.runtimeSession);
1385
+ if (!this.activeTurnId) {
1386
+ return;
1387
+ }
1388
+ const turnId = this.activeTurnId;
1389
+ this.activeTurnId = null;
1390
+ this.activeClientMessageId = null;
1391
+ this.activeTurnStarted = false;
1392
+ this.activeTurnHasUserMessage = false;
1393
+ this.activeTurnTerminalAssistantMessage = null;
1394
+ this.clearNoTurnBuffers();
1395
+ this.emit({
1396
+ type: "turn_failed",
1397
+ provider: this.provider,
1398
+ turnId,
1399
+ error,
1400
+ });
1401
+ }
1402
+ handleSessionEvent(event) {
1403
+ const turnId = this.currentTurnIdForEvent();
1404
+ switch (event.type) {
1405
+ case "agent_start":
1406
+ this.activeTurnStarted = true;
1407
+ this.clearNoTurnBuffers();
1408
+ this.emit({
1409
+ type: "thread_started",
1410
+ provider: this.provider,
1411
+ sessionId: this.state.sessionId,
1412
+ });
1413
+ return;
1414
+ case "turn_start":
1415
+ this.activeTurnStarted = true;
1416
+ this.clearNoTurnBuffers();
1417
+ this.emit({
1418
+ type: "turn_started",
1419
+ provider: this.provider,
1420
+ turnId,
1421
+ });
1422
+ return;
1423
+ case "message_start":
1424
+ this.handleMessageStart(event);
1425
+ return;
1426
+ case "message_end":
1427
+ if (event.message.role === "user") {
1428
+ this.activeTurnHasUserMessage = true;
1429
+ }
1430
+ this.handleMessageEnd(event, turnId);
1431
+ return;
1432
+ case "message_update":
1433
+ this.handleMessageUpdate(event, turnId);
1434
+ return;
1435
+ case "tool_execution_start": {
1436
+ const toolCall = parseToolArgs(event.toolName, event.args);
1437
+ this.activeToolCalls.set(event.toolCallId, toolCall);
1438
+ this.activeAskUserDialog = readActiveAskUserDialog(event.toolName, event.args);
1439
+ this.emitToolCallEvent(event.toolCallId, toolCall, "running", null, null);
1440
+ return;
1441
+ }
1442
+ case "tool_execution_update": {
1443
+ const toolCall = this.activeToolCalls.get(event.toolCallId);
1444
+ if (!toolCall) {
1445
+ return;
1446
+ }
1447
+ const partialResult = parseToolResult(event.partialResult);
1448
+ this.emitToolCallEvent(event.toolCallId, toolCall, "running", partialResult, null);
1449
+ return;
1450
+ }
1451
+ case "tool_execution_end": {
1452
+ this.handleToolExecutionEnd(event, turnId);
1453
+ return;
1454
+ }
1455
+ case "compaction_start":
1456
+ this.emitCompactionTimeline({
1457
+ turnId,
1458
+ item: {
1459
+ type: "compaction",
1460
+ status: "loading",
1461
+ trigger: event.reason === "manual" ? "manual" : "auto",
1462
+ },
1463
+ });
1464
+ return;
1465
+ case "compaction_end":
1466
+ this.emitCompactionTimeline({
1467
+ turnId,
1468
+ item: {
1469
+ type: "compaction",
1470
+ status: "completed",
1471
+ trigger: event.reason === "manual" ? "manual" : "auto",
1472
+ },
1473
+ });
1474
+ return;
1475
+ case "agent_end": {
1476
+ const messages = event.messages ?? [];
1477
+ let terminalMessages = null;
1478
+ if (messages.some((message) => message.role === "assistant")) {
1479
+ terminalMessages = messages;
1480
+ }
1481
+ else if (this.activeTurnTerminalAssistantMessage) {
1482
+ terminalMessages = [this.activeTurnTerminalAssistantMessage];
1483
+ }
1484
+ // OMP can end an internal extension-notice cycle before it starts the
1485
+ // model turn for the same prompt. Ignore only cycles where neither the
1486
+ // terminal payload nor the live stream contained an assistant message.
1487
+ if (!terminalMessages) {
1488
+ return;
1489
+ }
1490
+ // A state request is processed after OMP's RPC loop becomes promptable,
1491
+ // so do not advertise Paseo idle until it reports that transition.
1492
+ void this.completeTurnAfterProviderIdle(turnId, terminalMessages);
1493
+ return;
1494
+ }
1495
+ default:
1496
+ return;
1497
+ }
1498
+ }
1499
+ handleToolExecutionEnd(event, turnId) {
1500
+ const toolCall = this.activeToolCalls.get(event.toolCallId) ?? parseToolArgs(event.toolName, null);
1501
+ this.activeToolCalls.delete(event.toolCallId);
1502
+ if (event.toolName === "ask_user") {
1503
+ this.activeAskUserDialog = null;
1504
+ this.pendingCombinedAskUserResponse = null;
1505
+ }
1506
+ const result = parseToolResult(event.result);
1507
+ const error = event.isError ? event.result : null;
1508
+ const status = event.isError ? "failed" : "completed";
1509
+ this.emitToolCallEvent(event.toolCallId, toolCall, status, result, error);
1510
+ if (event.toolName === "task") {
1511
+ this.subagentCardTracker.delete(event.toolCallId);
1512
+ }
1513
+ if (event.toolName === "todo") {
1514
+ const item = mapOmpTodoToolResult(result);
1515
+ if (item) {
1516
+ this.emitTodoItem(item, turnId);
1517
+ }
1518
+ else {
1519
+ this.logger.debug({ event }, "Dropped malformed OMP todo tool result");
1520
+ }
1521
+ }
1522
+ }
1523
+ emitCompactionTimeline(input) {
1524
+ const emitOutOfBand = this.outOfBandCompactionEmit;
1525
+ if (emitOutOfBand && input.item.type === "compaction") {
1526
+ if (input.item.status === "loading") {
1527
+ this.outOfBandCompactionStarted = true;
1528
+ }
1529
+ if (input.item.status === "completed") {
1530
+ this.outOfBandCompactionCompleted = true;
1531
+ }
1532
+ }
1533
+ const event = {
1534
+ type: "timeline",
1535
+ provider: this.provider,
1536
+ ...(emitOutOfBand ? {} : { turnId: input.turnId }),
1537
+ item: input.item,
1538
+ };
1539
+ if (emitOutOfBand) {
1540
+ emitOutOfBand(event);
1541
+ if (input.item.type === "compaction" && input.item.status === "completed") {
1542
+ this.outOfBandCompactionEmit = null;
1543
+ this.outOfBandCompactionStarted = false;
1544
+ this.outOfBandCompactionCompleted = false;
1545
+ }
1546
+ return;
1547
+ }
1548
+ this.emit(event);
1549
+ }
1550
+ handleMessageUpdate(event, turnId) {
1551
+ if (event.message.role !== "assistant") {
1552
+ return;
1553
+ }
1554
+ if (event.assistantMessageEvent.type === "text_delta") {
1555
+ // Omp-compatible runtimes may emit updates without a preceding message_start.
1556
+ this.activeAssistantMessageId ?? (this.activeAssistantMessageId = event.message.responseId || randomUUID());
1557
+ this.emit({
1558
+ type: "timeline",
1559
+ provider: this.provider,
1560
+ turnId,
1561
+ item: {
1562
+ type: "assistant_message",
1563
+ text: event.assistantMessageEvent.delta ?? "",
1564
+ messageId: this.activeAssistantMessageId,
1565
+ },
1566
+ });
1567
+ return;
1568
+ }
1569
+ if (event.assistantMessageEvent.type === "thinking_delta") {
1570
+ this.emit({
1571
+ type: "timeline",
1572
+ provider: this.provider,
1573
+ turnId,
1574
+ item: {
1575
+ type: "reasoning",
1576
+ text: event.assistantMessageEvent.delta ?? "",
1577
+ },
1578
+ });
1579
+ }
1580
+ }
1581
+ handleMessageStart(event) {
1582
+ if (event.message.role === "assistant") {
1583
+ this.activeAssistantMessageId = event.message.responseId || null;
1584
+ }
1585
+ }
1586
+ handleMessageEnd(event, turnId) {
1587
+ if (event.message.role === "assistant") {
1588
+ this.activeAssistantMessageId = null;
1589
+ if (turnId) {
1590
+ this.activeTurnTerminalAssistantMessage = event.message;
1591
+ }
1592
+ return;
1593
+ }
1594
+ if (event.message.role === "custom") {
1595
+ if (shouldDisplayOmpCustomMessage(event.message)) {
1596
+ const text = getUserMessageText(event.message.content);
1597
+ if (text) {
1598
+ const item = mapOmpAdvisorMessageToToolCall(event.message, text) ??
1599
+ mapOmpSystemNoticeToNotification(text);
1600
+ this.emit({
1601
+ type: "timeline",
1602
+ provider: this.provider,
1603
+ turnId,
1604
+ item: item ?? { type: "assistant_message", text },
1605
+ });
1606
+ }
1607
+ }
1608
+ if (!this.activeTurnHasUserMessage) {
1609
+ this.completeTurn(turnId, []);
1610
+ }
1611
+ return;
1612
+ }
1613
+ if (event.message.role !== "user") {
1614
+ return;
1615
+ }
1616
+ const text = getUserMessageText(event.message.content);
1617
+ if (!text) {
1618
+ return;
1619
+ }
1620
+ const nativeMessage = event.message;
1621
+ const messageId = readNativeMessageId(nativeMessage);
1622
+ const clientMessageId = this.activeClientMessageId;
1623
+ const emitUserMessage = (resolvedMessageId) => {
1624
+ if (resolvedMessageId) {
1625
+ // OMP re-emits user message_end frames for entries it has already
1626
+ // surfaced (e.g. after steer or a resumed process); emit each native
1627
+ // entry exactly once.
1628
+ if (this.emittedUserMessageIds.has(resolvedMessageId)) {
1629
+ return;
1630
+ }
1631
+ this.emittedUserMessageIds.add(resolvedMessageId);
1632
+ }
1633
+ this.emit({
1634
+ type: "timeline",
1635
+ provider: this.provider,
1636
+ turnId,
1637
+ item: {
1638
+ type: "user_message",
1639
+ text,
1640
+ ...(resolvedMessageId ? { messageId: resolvedMessageId } : {}),
1641
+ ...(clientMessageId ? { clientMessageId } : {}),
1642
+ },
1643
+ });
1644
+ };
1645
+ if (messageId) {
1646
+ emitUserMessage(messageId);
1647
+ return;
1648
+ }
1649
+ void this.runtimeSession
1650
+ .getBranchMessages()
1651
+ .then((messages) => emitUserMessage(messages.toReversed().find((message) => message.text === text)?.entryId))
1652
+ .catch((error) => {
1653
+ this.logger.debug({ err: error, sessionFile: this.state.sessionFile }, "OMP native user message ID lookup failed");
1654
+ emitUserMessage();
1655
+ });
1656
+ }
1657
+ emitToolCallEvent(toolCallId, toolCall, status, result, error) {
1658
+ const turnId = this.currentTurnIdForEvent();
1659
+ const detail = this.mapToolDetail(toolCallId, toolCall, result);
1660
+ if (!detail) {
1661
+ return false;
1662
+ }
1663
+ const baseItem = {
1664
+ type: "tool_call",
1665
+ callId: toolCallId,
1666
+ name: resolveToolCallName(toolCall, result),
1667
+ detail,
1668
+ };
1669
+ const item = status === "failed" ? { ...baseItem, status, error } : { ...baseItem, status, error: null };
1670
+ this.emit({
1671
+ type: "timeline",
1672
+ provider: this.provider,
1673
+ turnId,
1674
+ item,
1675
+ });
1676
+ return true;
1677
+ }
1678
+ mapToolDetail(toolCallId, toolCall, result) {
1679
+ return mapOmpToolDetail(toolCall, result, {
1680
+ toolCallId,
1681
+ mapSubagentDetail: (detail) => this.subagentCardTracker.detailFor(toolCallId, detail) ?? detail,
1682
+ });
1683
+ }
1684
+ completeTurn(turnId, messages) {
1685
+ this.activeTurnId = null;
1686
+ this.activeClientMessageId = null;
1687
+ this.activeAssistantMessageId = null;
1688
+ this.activeTurnTerminalAssistantMessage = null;
1689
+ this.activeTurnStarted = false;
1690
+ this.activeTurnHasUserMessage = false;
1691
+ this.clearNoTurnBuffers();
1692
+ const errorMessage = latestOmpErrorMessage(messages);
1693
+ if (typeof errorMessage === "string" && errorMessage.length > 0) {
1694
+ this.usagePoller.stopTurn();
1695
+ this.emit({
1696
+ type: "turn_failed",
1697
+ provider: this.provider,
1698
+ turnId,
1699
+ error: errorMessage,
1700
+ });
1701
+ return;
1702
+ }
1703
+ const finalUsage = this.usagePoller.completeTurn(turnId);
1704
+ this.emit({
1705
+ type: "turn_completed",
1706
+ provider: this.provider,
1707
+ turnId,
1708
+ });
1709
+ void this.refreshAfterTurn(finalUsage);
1710
+ }
1711
+ async completeTurnAfterProviderIdle(turnId, messages) {
1712
+ while (!this.closed && this.activeTurnStarted && this.currentTurnIdForEvent() === turnId) {
1713
+ try {
1714
+ const state = await this.runtimeSession.getState();
1715
+ this.state = state;
1716
+ if (!state.isStreaming && !state.isCompacting) {
1717
+ this.completeTurn(turnId, messages);
1718
+ return;
1719
+ }
1720
+ }
1721
+ catch (error) {
1722
+ this.logger.debug({ err: error }, "OMP state unavailable while waiting for provider idle");
1723
+ }
1724
+ await this.providerIdleScheduler.waitForRetry();
1725
+ }
1726
+ }
1727
+ async refreshState() {
1728
+ this.state = await this.runtimeSession.getState();
1729
+ }
1730
+ async refreshAfterTurn(finalUsage) {
1731
+ await Promise.all([this.refreshState().catch(() => undefined), finalUsage]);
1732
+ }
1733
+ }
1734
+ export class OmpAgentClient {
1735
+ constructor(options) {
1736
+ this.provider = OMP_PROVIDER;
1737
+ this.capabilities = withOmpCapabilities();
1738
+ const { runtimeProviderParams, modelRoleParams } = resolveOmpProviderParams(options.providerParams);
1739
+ const runtimeSettings = mergeOmpRuntimeSettings({
1740
+ command: {
1741
+ mode: "replace",
1742
+ argv: ["omp"],
1743
+ },
1744
+ }, options.runtimeSettings);
1745
+ this.logger = options.logger;
1746
+ this.runtimeSettings = runtimeSettings;
1747
+ this.providerParams = runtimeProviderParams;
1748
+ this.modelRoleParams = modelRoleParams;
1749
+ this.subagentCardScheduler = options.subagentCardScheduler;
1750
+ this.providerIdleScheduler = options.providerIdleScheduler;
1751
+ this.noTurnScheduler = options.noTurnScheduler;
1752
+ this.usagePollScheduler = options.usagePollScheduler;
1753
+ this.runtime =
1754
+ options.runtime ?? createRuntime(options.logger, runtimeSettings, this.providerParams);
1755
+ }
1756
+ async configureNativePaseoTools(runtimeSession, catalog) {
1757
+ if (!catalog) {
1758
+ return;
1759
+ }
1760
+ await setOmpHostTools(runtimeSession, catalog);
1761
+ }
1762
+ async createSession(config, launchContext) {
1763
+ const launchMode = this.resolveLaunchMode(config.modeId);
1764
+ const runtimeSession = await this.runtime.startSession({
1765
+ cwd: config.cwd,
1766
+ protocolMode: "rpc-ui",
1767
+ model: config.model,
1768
+ thinkingOptionId: normalizeOmpThinkingOption(config.thinkingOptionId) ?? undefined,
1769
+ noSession: config.internal === true,
1770
+ modeId: launchMode.modeId,
1771
+ extraArgs: launchMode.extraArgs,
1772
+ systemPrompt: composeSystemPromptParts(config.systemPrompt, config.daemonAppendSystemPrompt),
1773
+ env: launchContext?.env,
1774
+ });
1775
+ try {
1776
+ await this.configureNativePaseoTools(runtimeSession, launchContext?.paseoTools);
1777
+ return new OmpAgentSession({
1778
+ runtimeSession,
1779
+ config,
1780
+ initialState: await runtimeSession.getState(),
1781
+ currentModeId: launchMode.modeId,
1782
+ logger: this.logger,
1783
+ subagentCardScheduler: this.subagentCardScheduler,
1784
+ providerIdleScheduler: this.providerIdleScheduler,
1785
+ noTurnScheduler: this.noTurnScheduler,
1786
+ usagePollScheduler: this.usagePollScheduler,
1787
+ paseoTools: launchContext?.paseoTools,
1788
+ });
1789
+ }
1790
+ catch (error) {
1791
+ await runtimeSession.close().catch(() => undefined);
1792
+ throw error;
1793
+ }
1794
+ }
1795
+ async resumeSession(handle, overrides, launchContext) {
1796
+ const sessionFile = handle.nativeHandle;
1797
+ if (!sessionFile) {
1798
+ throw new Error("OMP resume requires a native session file handle");
1799
+ }
1800
+ const persistenceMetadata = parsePersistenceMetadata(handle.metadata);
1801
+ const resumeConfig = buildResumeConfig(persistenceMetadata, overrides, this.provider);
1802
+ const launchMode = this.resolveLaunchMode(resumeConfig.modeId);
1803
+ const runtimeSession = await this.runtime.startSession(buildResumeStartInput({
1804
+ resumeConfig,
1805
+ sessionFile,
1806
+ launchContext,
1807
+ launchMode,
1808
+ }));
1809
+ try {
1810
+ await this.configureNativePaseoTools(runtimeSession, launchContext?.paseoTools);
1811
+ return new OmpAgentSession({
1812
+ runtimeSession,
1813
+ config: resumeConfig.config,
1814
+ initialState: await runtimeSession.getState(),
1815
+ currentModeId: launchMode.modeId,
1816
+ logger: this.logger,
1817
+ subagentCardScheduler: this.subagentCardScheduler,
1818
+ providerIdleScheduler: this.providerIdleScheduler,
1819
+ noTurnScheduler: this.noTurnScheduler,
1820
+ usagePollScheduler: this.usagePollScheduler,
1821
+ paseoTools: launchContext?.paseoTools,
1822
+ live: false,
1823
+ });
1824
+ }
1825
+ catch (error) {
1826
+ await runtimeSession.close().catch(() => undefined);
1827
+ throw error;
1828
+ }
1829
+ }
1830
+ async fetchCatalog(options, context) {
1831
+ const launchMode = this.resolveLaunchMode(undefined);
1832
+ let runtimeSession;
1833
+ let closePromise;
1834
+ const closeSession = () => {
1835
+ if (!runtimeSession)
1836
+ return Promise.resolve();
1837
+ closePromise ?? (closePromise = runtimeSession.close());
1838
+ return closePromise;
1839
+ };
1840
+ const handleAbort = () => void closeSession().catch(() => undefined);
1841
+ context?.signal.addEventListener("abort", handleAbort, { once: true });
1842
+ try {
1843
+ await runProviderRefreshActivity(context, "runtime.start", async () => {
1844
+ runtimeSession = await this.runtime.startSession({
1845
+ cwd: options.scope === "global" ? homedir() : options.cwd,
1846
+ protocolMode: "rpc-ui",
1847
+ modeId: launchMode.modeId,
1848
+ extraArgs: launchMode.extraArgs,
1849
+ signal: context?.signal,
1850
+ });
1851
+ if (context?.signal.aborted)
1852
+ await closeSession();
1853
+ });
1854
+ if (!runtimeSession)
1855
+ throw new Error("OMP catalog runtime did not start");
1856
+ const catalogSession = runtimeSession;
1857
+ const models = transformOmpModels((await runProviderRefreshActivity(context, "get_available_models", () => catalogSession.getAvailableModels(null))).map((model) => mapOmpModel(model, this.provider)));
1858
+ return { models, modes: [...OMP_MODES] };
1859
+ }
1860
+ finally {
1861
+ context?.signal.removeEventListener("abort", handleAbort);
1862
+ await closeSession();
1863
+ }
1864
+ }
1865
+ async listFeatures(_config) {
1866
+ return [];
1867
+ }
1868
+ async listImportableSessions(options) {
1869
+ return await listOmpImportableSessions({
1870
+ ...options,
1871
+ sessionDir: this.providerParams.sessionDir,
1872
+ runtimeSettings: this.runtimeSettings,
1873
+ });
1874
+ }
1875
+ async importSession(input, context) {
1876
+ const importConfig = await readOmpImportSessionConfig(input.providerHandleId);
1877
+ return importSessionFromPersistence({
1878
+ provider: this.provider,
1879
+ request: input,
1880
+ context,
1881
+ resumeSession: this.resumeSession.bind(this),
1882
+ config: importConfig,
1883
+ });
1884
+ }
1885
+ async isAvailable() {
1886
+ try {
1887
+ const launch = await this.resolveOmpLaunch();
1888
+ const availability = await checkProviderLaunchAvailable(launch);
1889
+ return availability.available;
1890
+ }
1891
+ catch {
1892
+ return false;
1893
+ }
1894
+ }
1895
+ async getDiagnostic() {
1896
+ try {
1897
+ const launch = await this.resolveOmpLaunch();
1898
+ const availability = await checkProviderLaunchAvailable(launch);
1899
+ const binaryRows = await buildBinaryDiagnosticRows(launch, availability, {
1900
+ versionCommand: {
1901
+ command: availability.resolvedPath ?? launch.command,
1902
+ args: [...launch.args, "--version"],
1903
+ env: this.runtimeSettings?.env,
1904
+ },
1905
+ });
1906
+ const version = binaryRows.find((row) => row.label === "Version")?.value ?? "unknown";
1907
+ const env = { ...process.env, ...this.runtimeSettings?.env };
1908
+ const paths = resolveOmpDiagnosticPaths(env);
1909
+ const bunVersion = process.versions.bun ?? "unavailable";
1910
+ return {
1911
+ diagnostic: formatProviderDiagnostic("Oh My Pi (OMP)", [
1912
+ ...(await buildCommandResolutionDiagnosticRows(launch, {
1913
+ knownBinaryNames: ["omp", launch.command],
1914
+ pathValue: env.PATH ?? env.Path,
1915
+ })),
1916
+ ...binaryRows,
1917
+ { label: "Version support", value: formatOmpVersionSupport(version) },
1918
+ { label: "Active profile", value: paths.profile },
1919
+ { label: "Config root", value: paths.configRoot },
1920
+ { label: "Agent directory", value: paths.agentDir },
1921
+ {
1922
+ label: "Agent database",
1923
+ value: `${paths.agentDb} (${existsSync(paths.agentDb) ? "found" : "not found"})`,
1924
+ },
1925
+ { label: "XDG data root", value: paths.xdgDataRoot },
1926
+ { label: "XDG state root", value: paths.xdgStateRoot },
1927
+ { label: "XDG cache root", value: paths.xdgCacheRoot },
1928
+ {
1929
+ label: "Bun runtime",
1930
+ value: `${bunVersion}; npm-installed OMP requires Bun >= 1.3.14`,
1931
+ },
1932
+ ]),
1933
+ };
1934
+ }
1935
+ catch (error) {
1936
+ this.logger.debug({ err: error }, "OMP diagnostic lookup failed");
1937
+ return {
1938
+ diagnostic: formatProviderDiagnosticError("Oh My Pi (OMP)", error),
1939
+ };
1940
+ }
1941
+ }
1942
+ resolveLaunchMode(modeId) {
1943
+ return resolveOmpLaunchMode(modeId, this.modelRoleParams);
1944
+ }
1945
+ async resolveOmpLaunch() {
1946
+ return resolveProviderLaunch({
1947
+ commandConfig: this.runtimeSettings?.command,
1948
+ defaultBinary: "omp",
1949
+ });
1950
+ }
1951
+ }
1952
+ //# sourceMappingURL=agent.js.map