@seawork/server 1.0.0

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 (682) hide show
  1. package/.env.example +23 -0
  2. package/README.md +107 -0
  3. package/dist/scripts/dev-runner.js +27 -0
  4. package/dist/scripts/dev-runner.js.map +1 -0
  5. package/dist/scripts/mcp-stdio-socket-bridge-cli.mjs +62 -0
  6. package/dist/scripts/supervisor-entrypoint.js +123 -0
  7. package/dist/scripts/supervisor-entrypoint.js.map +1 -0
  8. package/dist/scripts/supervisor.js +148 -0
  9. package/dist/scripts/supervisor.js.map +1 -0
  10. package/dist/server/client/daemon-client-relay-e2ee-transport.d.ts +8 -0
  11. package/dist/server/client/daemon-client-relay-e2ee-transport.d.ts.map +1 -0
  12. package/dist/server/client/daemon-client-relay-e2ee-transport.js +161 -0
  13. package/dist/server/client/daemon-client-relay-e2ee-transport.js.map +1 -0
  14. package/dist/server/client/daemon-client-transport-types.d.ts +34 -0
  15. package/dist/server/client/daemon-client-transport-types.d.ts.map +1 -0
  16. package/dist/server/client/daemon-client-transport-types.js +2 -0
  17. package/dist/server/client/daemon-client-transport-types.js.map +1 -0
  18. package/dist/server/client/daemon-client-transport-utils.d.ts +9 -0
  19. package/dist/server/client/daemon-client-transport-utils.d.ts.map +1 -0
  20. package/dist/server/client/daemon-client-transport-utils.js +121 -0
  21. package/dist/server/client/daemon-client-transport-utils.js.map +1 -0
  22. package/dist/server/client/daemon-client-transport.d.ts +5 -0
  23. package/dist/server/client/daemon-client-transport.d.ts.map +1 -0
  24. package/dist/server/client/daemon-client-transport.js +4 -0
  25. package/dist/server/client/daemon-client-transport.js.map +1 -0
  26. package/dist/server/client/daemon-client-websocket-transport.d.ts +7 -0
  27. package/dist/server/client/daemon-client-websocket-transport.d.ts.map +1 -0
  28. package/dist/server/client/daemon-client-websocket-transport.js +119 -0
  29. package/dist/server/client/daemon-client-websocket-transport.js.map +1 -0
  30. package/dist/server/client/daemon-client.d.ts +697 -0
  31. package/dist/server/client/daemon-client.d.ts.map +1 -0
  32. package/dist/server/client/daemon-client.js +2885 -0
  33. package/dist/server/client/daemon-client.js.map +1 -0
  34. package/dist/server/server/agent/activity-curator.d.ts +8 -0
  35. package/dist/server/server/agent/activity-curator.d.ts.map +1 -0
  36. package/dist/server/server/agent/activity-curator.js +243 -0
  37. package/dist/server/server/agent/activity-curator.js.map +1 -0
  38. package/dist/server/server/agent/agent-management-mcp.d.ts +41 -0
  39. package/dist/server/server/agent/agent-management-mcp.d.ts.map +1 -0
  40. package/dist/server/server/agent/agent-management-mcp.js +767 -0
  41. package/dist/server/server/agent/agent-management-mcp.js.map +1 -0
  42. package/dist/server/server/agent/agent-manager.d.ts +287 -0
  43. package/dist/server/server/agent/agent-manager.d.ts.map +1 -0
  44. package/dist/server/server/agent/agent-manager.js +1956 -0
  45. package/dist/server/server/agent/agent-manager.js.map +1 -0
  46. package/dist/server/server/agent/agent-metadata-generator.d.ts +29 -0
  47. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -0
  48. package/dist/server/server/agent/agent-metadata-generator.js +161 -0
  49. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -0
  50. package/dist/server/server/agent/agent-projections.d.ts +17 -0
  51. package/dist/server/server/agent/agent-projections.d.ts.map +1 -0
  52. package/dist/server/server/agent/agent-projections.js +280 -0
  53. package/dist/server/server/agent/agent-projections.js.map +1 -0
  54. package/dist/server/server/agent/agent-response-loop.d.ts +60 -0
  55. package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -0
  56. package/dist/server/server/agent/agent-response-loop.js +304 -0
  57. package/dist/server/server/agent/agent-response-loop.js.map +1 -0
  58. package/dist/server/server/agent/agent-sdk-types.d.ts +470 -0
  59. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -0
  60. package/dist/server/server/agent/agent-sdk-types.js +12 -0
  61. package/dist/server/server/agent/agent-sdk-types.js.map +1 -0
  62. package/dist/server/server/agent/agent-storage.d.ts +336 -0
  63. package/dist/server/server/agent/agent-storage.d.ts.map +1 -0
  64. package/dist/server/server/agent/agent-storage.js +304 -0
  65. package/dist/server/server/agent/agent-storage.js.map +1 -0
  66. package/dist/server/server/agent/agent-title-limits.d.ts +3 -0
  67. package/dist/server/server/agent/agent-title-limits.d.ts.map +1 -0
  68. package/dist/server/server/agent/agent-title-limits.js +3 -0
  69. package/dist/server/server/agent/agent-title-limits.js.map +1 -0
  70. package/dist/server/server/agent/audio-utils.d.ts +3 -0
  71. package/dist/server/server/agent/audio-utils.d.ts.map +1 -0
  72. package/dist/server/server/agent/audio-utils.js +19 -0
  73. package/dist/server/server/agent/audio-utils.js.map +1 -0
  74. package/dist/server/server/agent/dictation-debug.d.ts +13 -0
  75. package/dist/server/server/agent/dictation-debug.d.ts.map +1 -0
  76. package/dist/server/server/agent/dictation-debug.js +50 -0
  77. package/dist/server/server/agent/dictation-debug.js.map +1 -0
  78. package/dist/server/server/agent/llm-openai.d.ts +7 -0
  79. package/dist/server/server/agent/llm-openai.d.ts.map +1 -0
  80. package/dist/server/server/agent/llm-openai.js +8 -0
  81. package/dist/server/server/agent/llm-openai.js.map +1 -0
  82. package/dist/server/server/agent/mcp-server.d.ts +33 -0
  83. package/dist/server/server/agent/mcp-server.d.ts.map +1 -0
  84. package/dist/server/server/agent/mcp-server.js +1279 -0
  85. package/dist/server/server/agent/mcp-server.js.map +1 -0
  86. package/dist/server/server/agent/mcp-shared.d.ts +251 -0
  87. package/dist/server/server/agent/mcp-shared.d.ts.map +1 -0
  88. package/dist/server/server/agent/mcp-shared.js +242 -0
  89. package/dist/server/server/agent/mcp-shared.js.map +1 -0
  90. package/dist/server/server/agent/model-resolver.d.ts +11 -0
  91. package/dist/server/server/agent/model-resolver.d.ts.map +1 -0
  92. package/dist/server/server/agent/model-resolver.js +21 -0
  93. package/dist/server/server/agent/model-resolver.js.map +1 -0
  94. package/dist/server/server/agent/orchestrator-instructions.d.ts +7 -0
  95. package/dist/server/server/agent/orchestrator-instructions.d.ts.map +1 -0
  96. package/dist/server/server/agent/orchestrator-instructions.js +51 -0
  97. package/dist/server/server/agent/orchestrator-instructions.js.map +1 -0
  98. package/dist/server/server/agent/orchestrator.d.ts +12 -0
  99. package/dist/server/server/agent/orchestrator.d.ts.map +1 -0
  100. package/dist/server/server/agent/orchestrator.js +12 -0
  101. package/dist/server/server/agent/orchestrator.js.map +1 -0
  102. package/dist/server/server/agent/pcm16-resampler.d.ts +14 -0
  103. package/dist/server/server/agent/pcm16-resampler.d.ts.map +1 -0
  104. package/dist/server/server/agent/pcm16-resampler.js +63 -0
  105. package/dist/server/server/agent/pcm16-resampler.js.map +1 -0
  106. package/dist/server/server/agent/provider-launch-config.d.ts +138 -0
  107. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -0
  108. package/dist/server/server/agent/provider-launch-config.js +80 -0
  109. package/dist/server/server/agent/provider-launch-config.js.map +1 -0
  110. package/dist/server/server/agent/provider-manifest.d.ts +29 -0
  111. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -0
  112. package/dist/server/server/agent/provider-manifest.js +157 -0
  113. package/dist/server/server/agent/provider-manifest.js.map +1 -0
  114. package/dist/server/server/agent/provider-registry.d.ts +19 -0
  115. package/dist/server/server/agent/provider-registry.d.ts.map +1 -0
  116. package/dist/server/server/agent/provider-registry.js +58 -0
  117. package/dist/server/server/agent/provider-registry.js.map +1 -0
  118. package/dist/server/server/agent/provider-snapshot-manager.d.ts +27 -0
  119. package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -0
  120. package/dist/server/server/agent/provider-snapshot-manager.js +181 -0
  121. package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -0
  122. package/dist/server/server/agent/providers/acp-agent.d.ts +202 -0
  123. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -0
  124. package/dist/server/server/agent/providers/acp-agent.js +1650 -0
  125. package/dist/server/server/agent/providers/acp-agent.js.map +1 -0
  126. package/dist/server/server/agent/providers/claude/claude-models.d.ts +8 -0
  127. package/dist/server/server/agent/providers/claude/claude-models.d.ts.map +1 -0
  128. package/dist/server/server/agent/providers/claude/claude-models.js +63 -0
  129. package/dist/server/server/agent/providers/claude/claude-models.js.map +1 -0
  130. package/dist/server/server/agent/providers/claude/partial-json.d.ts +5 -0
  131. package/dist/server/server/agent/providers/claude/partial-json.d.ts.map +1 -0
  132. package/dist/server/server/agent/providers/claude/partial-json.js +306 -0
  133. package/dist/server/server/agent/providers/claude/partial-json.js.map +1 -0
  134. package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts +20 -0
  135. package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts.map +1 -0
  136. package/dist/server/server/agent/providers/claude/sidechain-tracker.js +230 -0
  137. package/dist/server/server/agent/providers/claude/sidechain-tracker.js.map +1 -0
  138. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +55 -0
  139. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts.map +1 -0
  140. package/dist/server/server/agent/providers/claude/task-notification-tool-call.js +267 -0
  141. package/dist/server/server/agent/providers/claude/task-notification-tool-call.js.map +1 -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.d.ts.map +1 -0
  144. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js +121 -0
  145. package/dist/server/server/agent/providers/claude/tool-call-detail-parser.js.map +1 -0
  146. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts +16 -0
  147. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts.map +1 -0
  148. package/dist/server/server/agent/providers/claude/tool-call-mapper.js +252 -0
  149. package/dist/server/server/agent/providers/claude/tool-call-mapper.js.map +1 -0
  150. package/dist/server/server/agent/providers/claude-agent.d.ts +44 -0
  151. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -0
  152. package/dist/server/server/agent/providers/claude-agent.js +3452 -0
  153. package/dist/server/server/agent/providers/claude-agent.js.map +1 -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.d.ts.map +1 -0
  156. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js +104 -0
  157. package/dist/server/server/agent/providers/codex/tool-call-detail-parser.js.map +1 -0
  158. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts +15 -0
  159. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -0
  160. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +762 -0
  161. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -0
  162. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +200 -0
  163. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -0
  164. package/dist/server/server/agent/providers/codex-app-server-agent.js +3474 -0
  165. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -0
  166. package/dist/server/server/agent/providers/codex-feature-definitions.d.ts +11 -0
  167. package/dist/server/server/agent/providers/codex-feature-definitions.d.ts.map +1 -0
  168. package/dist/server/server/agent/providers/codex-feature-definitions.js +45 -0
  169. package/dist/server/server/agent/providers/codex-feature-definitions.js.map +1 -0
  170. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts +9 -0
  171. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts.map +1 -0
  172. package/dist/server/server/agent/providers/codex-rollout-timeline.js +544 -0
  173. package/dist/server/server/agent/providers/codex-rollout-timeline.js.map +1 -0
  174. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts +16 -0
  175. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts.map +1 -0
  176. package/dist/server/server/agent/providers/copilot-acp-agent.js +95 -0
  177. package/dist/server/server/agent/providers/copilot-acp-agent.js.map +1 -0
  178. package/dist/server/server/agent/providers/diagnostic-utils.d.ts +17 -0
  179. package/dist/server/server/agent/providers/diagnostic-utils.d.ts.map +1 -0
  180. package/dist/server/server/agent/providers/diagnostic-utils.js +56 -0
  181. package/dist/server/server/agent/providers/diagnostic-utils.js.map +1 -0
  182. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +3 -0
  183. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts.map +1 -0
  184. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +39 -0
  185. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js.map +1 -0
  186. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts +13 -0
  187. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts.map +1 -0
  188. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +144 -0
  189. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js.map +1 -0
  190. package/dist/server/server/agent/providers/opencode-agent.d.ts +121 -0
  191. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -0
  192. package/dist/server/server/agent/providers/opencode-agent.js +1649 -0
  193. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -0
  194. package/dist/server/server/agent/providers/pi-acp-agent.d.ts +28 -0
  195. package/dist/server/server/agent/providers/pi-acp-agent.d.ts.map +1 -0
  196. package/dist/server/server/agent/providers/pi-acp-agent.js +302 -0
  197. package/dist/server/server/agent/providers/pi-acp-agent.js.map +1 -0
  198. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.d.ts +3 -0
  199. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.d.ts.map +1 -0
  200. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js +57 -0
  201. package/dist/server/server/agent/providers/test-utils/session-stream-adapter.js.map +1 -0
  202. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +1745 -0
  203. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -0
  204. package/dist/server/server/agent/providers/tool-call-detail-primitives.js +686 -0
  205. package/dist/server/server/agent/providers/tool-call-detail-primitives.js.map +1 -0
  206. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts +18 -0
  207. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts.map +1 -0
  208. package/dist/server/server/agent/providers/tool-call-mapper-utils.js +115 -0
  209. package/dist/server/server/agent/providers/tool-call-mapper-utils.js.map +1 -0
  210. package/dist/server/server/agent/recordings-debug.d.ts +3 -0
  211. package/dist/server/server/agent/recordings-debug.d.ts.map +1 -0
  212. package/dist/server/server/agent/recordings-debug.js +19 -0
  213. package/dist/server/server/agent/recordings-debug.js.map +1 -0
  214. package/dist/server/server/agent/stt-debug.d.ts +10 -0
  215. package/dist/server/server/agent/stt-debug.d.ts.map +1 -0
  216. package/dist/server/server/agent/stt-debug.js +33 -0
  217. package/dist/server/server/agent/stt-debug.js.map +1 -0
  218. package/dist/server/server/agent/stt-manager.d.ts +33 -0
  219. package/dist/server/server/agent/stt-manager.d.ts.map +1 -0
  220. package/dist/server/server/agent/stt-manager.js +232 -0
  221. package/dist/server/server/agent/stt-manager.js.map +1 -0
  222. package/dist/server/server/agent/timeline-append.d.ts +10 -0
  223. package/dist/server/server/agent/timeline-append.d.ts.map +1 -0
  224. package/dist/server/server/agent/timeline-append.js +27 -0
  225. package/dist/server/server/agent/timeline-append.js.map +1 -0
  226. package/dist/server/server/agent/timeline-projection.d.ts +39 -0
  227. package/dist/server/server/agent/timeline-projection.d.ts.map +1 -0
  228. package/dist/server/server/agent/timeline-projection.js +215 -0
  229. package/dist/server/server/agent/timeline-projection.js.map +1 -0
  230. package/dist/server/server/agent/tool-name-normalization.d.ts +9 -0
  231. package/dist/server/server/agent/tool-name-normalization.d.ts.map +1 -0
  232. package/dist/server/server/agent/tool-name-normalization.js +82 -0
  233. package/dist/server/server/agent/tool-name-normalization.js.map +1 -0
  234. package/dist/server/server/agent/tts-debug.d.ts +8 -0
  235. package/dist/server/server/agent/tts-debug.d.ts.map +1 -0
  236. package/dist/server/server/agent/tts-debug.js +24 -0
  237. package/dist/server/server/agent/tts-debug.js.map +1 -0
  238. package/dist/server/server/agent/tts-manager.d.ts +41 -0
  239. package/dist/server/server/agent/tts-manager.d.ts.map +1 -0
  240. package/dist/server/server/agent/tts-manager.js +374 -0
  241. package/dist/server/server/agent/tts-manager.js.map +1 -0
  242. package/dist/server/server/agent/wait-for-agent-tracker.d.ts +15 -0
  243. package/dist/server/server/agent/wait-for-agent-tracker.d.ts.map +1 -0
  244. package/dist/server/server/agent/wait-for-agent-tracker.js +53 -0
  245. package/dist/server/server/agent/wait-for-agent-tracker.js.map +1 -0
  246. package/dist/server/server/agent-attention-policy.d.ts +20 -0
  247. package/dist/server/server/agent-attention-policy.d.ts.map +1 -0
  248. package/dist/server/server/agent-attention-policy.js +40 -0
  249. package/dist/server/server/agent-attention-policy.js.map +1 -0
  250. package/dist/server/server/allowed-hosts.d.ts +13 -0
  251. package/dist/server/server/allowed-hosts.d.ts.map +1 -0
  252. package/dist/server/server/allowed-hosts.js +94 -0
  253. package/dist/server/server/allowed-hosts.js.map +1 -0
  254. package/dist/server/server/bootstrap.d.ts +74 -0
  255. package/dist/server/server/bootstrap.d.ts.map +1 -0
  256. package/dist/server/server/bootstrap.js +537 -0
  257. package/dist/server/server/bootstrap.js.map +1 -0
  258. package/dist/server/server/chat/chat-mentions.d.ts +31 -0
  259. package/dist/server/server/chat/chat-mentions.d.ts.map +1 -0
  260. package/dist/server/server/chat/chat-mentions.js +71 -0
  261. package/dist/server/server/chat/chat-mentions.js.map +1 -0
  262. package/dist/server/server/chat/chat-rpc-schemas.d.ts +728 -0
  263. package/dist/server/server/chat/chat-rpc-schemas.d.ts.map +1 -0
  264. package/dist/server/server/chat/chat-rpc-schemas.js +103 -0
  265. package/dist/server/server/chat/chat-rpc-schemas.js.map +1 -0
  266. package/dist/server/server/chat/chat-service.d.ts +74 -0
  267. package/dist/server/server/chat/chat-service.d.ts.map +1 -0
  268. package/dist/server/server/chat/chat-service.js +330 -0
  269. package/dist/server/server/chat/chat-service.js.map +1 -0
  270. package/dist/server/server/chat/chat-types.d.ts +75 -0
  271. package/dist/server/server/chat/chat-types.d.ts.map +1 -0
  272. package/dist/server/server/chat/chat-types.js +22 -0
  273. package/dist/server/server/chat/chat-types.js.map +1 -0
  274. package/dist/server/server/checkout-diff-manager.d.ts +45 -0
  275. package/dist/server/server/checkout-diff-manager.d.ts.map +1 -0
  276. package/dist/server/server/checkout-diff-manager.js +374 -0
  277. package/dist/server/server/checkout-diff-manager.js.map +1 -0
  278. package/dist/server/server/checkout-git-utils.d.ts +9 -0
  279. package/dist/server/server/checkout-git-utils.d.ts.map +1 -0
  280. package/dist/server/server/checkout-git-utils.js +37 -0
  281. package/dist/server/server/checkout-git-utils.js.map +1 -0
  282. package/dist/server/server/client-message-id.d.ts +3 -0
  283. package/dist/server/server/client-message-id.d.ts.map +1 -0
  284. package/dist/server/server/client-message-id.js +12 -0
  285. package/dist/server/server/client-message-id.js.map +1 -0
  286. package/dist/server/server/config.d.ts +14 -0
  287. package/dist/server/server/config.d.ts.map +1 -0
  288. package/dist/server/server/config.js +96 -0
  289. package/dist/server/server/config.js.map +1 -0
  290. package/dist/server/server/connection-offer.d.ts +19 -0
  291. package/dist/server/server/connection-offer.d.ts.map +1 -0
  292. package/dist/server/server/connection-offer.js +59 -0
  293. package/dist/server/server/connection-offer.js.map +1 -0
  294. package/dist/server/server/daemon-config-store.d.ts +23 -0
  295. package/dist/server/server/daemon-config-store.d.ts.map +1 -0
  296. package/dist/server/server/daemon-config-store.js +114 -0
  297. package/dist/server/server/daemon-config-store.js.map +1 -0
  298. package/dist/server/server/daemon-keypair.d.ts +8 -0
  299. package/dist/server/server/daemon-keypair.d.ts.map +1 -0
  300. package/dist/server/server/daemon-keypair.js +40 -0
  301. package/dist/server/server/daemon-keypair.js.map +1 -0
  302. package/dist/server/server/daemon-version.d.ts +5 -0
  303. package/dist/server/server/daemon-version.d.ts.map +1 -0
  304. package/dist/server/server/daemon-version.js +22 -0
  305. package/dist/server/server/daemon-version.js.map +1 -0
  306. package/dist/server/server/dictation/dictation-stream-manager.d.ts +85 -0
  307. package/dist/server/server/dictation/dictation-stream-manager.d.ts.map +1 -0
  308. package/dist/server/server/dictation/dictation-stream-manager.js +571 -0
  309. package/dist/server/server/dictation/dictation-stream-manager.js.map +1 -0
  310. package/dist/server/server/editor-targets.d.ts +18 -0
  311. package/dist/server/server/editor-targets.d.ts.map +1 -0
  312. package/dist/server/server/editor-targets.js +113 -0
  313. package/dist/server/server/editor-targets.js.map +1 -0
  314. package/dist/server/server/exports.d.ts +19 -0
  315. package/dist/server/server/exports.d.ts.map +1 -0
  316. package/dist/server/server/exports.js +21 -0
  317. package/dist/server/server/exports.js.map +1 -0
  318. package/dist/server/server/file-download/token-store.d.ts +24 -0
  319. package/dist/server/server/file-download/token-store.d.ts.map +1 -0
  320. package/dist/server/server/file-download/token-store.js +40 -0
  321. package/dist/server/server/file-download/token-store.js.map +1 -0
  322. package/dist/server/server/file-explorer/service.d.ts +41 -0
  323. package/dist/server/server/file-explorer/service.d.ts.map +1 -0
  324. package/dist/server/server/file-explorer/service.js +194 -0
  325. package/dist/server/server/file-explorer/service.js.map +1 -0
  326. package/dist/server/server/index.d.ts +2 -0
  327. package/dist/server/server/index.d.ts.map +1 -0
  328. package/dist/server/server/index.js +176 -0
  329. package/dist/server/server/index.js.map +1 -0
  330. package/dist/server/server/json-utils.d.ts +11 -0
  331. package/dist/server/server/json-utils.d.ts.map +1 -0
  332. package/dist/server/server/json-utils.js +45 -0
  333. package/dist/server/server/json-utils.js.map +1 -0
  334. package/dist/server/server/logger.d.ts +33 -0
  335. package/dist/server/server/logger.d.ts.map +1 -0
  336. package/dist/server/server/logger.js +195 -0
  337. package/dist/server/server/logger.js.map +1 -0
  338. package/dist/server/server/loop/rpc-schemas.d.ts +2937 -0
  339. package/dist/server/server/loop/rpc-schemas.d.ts.map +1 -0
  340. package/dist/server/server/loop/rpc-schemas.js +159 -0
  341. package/dist/server/server/loop/rpc-schemas.js.map +1 -0
  342. package/dist/server/server/loop-service.d.ts +520 -0
  343. package/dist/server/server/loop-service.d.ts.map +1 -0
  344. package/dist/server/server/loop-service.js +739 -0
  345. package/dist/server/server/loop-service.js.map +1 -0
  346. package/dist/server/server/messages.d.ts +9 -0
  347. package/dist/server/server/messages.d.ts.map +1 -0
  348. package/dist/server/server/messages.js +29 -0
  349. package/dist/server/server/messages.js.map +1 -0
  350. package/dist/server/server/package-version.d.ts +13 -0
  351. package/dist/server/server/package-version.d.ts.map +1 -0
  352. package/dist/server/server/package-version.js +46 -0
  353. package/dist/server/server/package-version.js.map +1 -0
  354. package/dist/server/server/pairing-offer.d.ts +16 -0
  355. package/dist/server/server/pairing-offer.d.ts.map +1 -0
  356. package/dist/server/server/pairing-offer.js +45 -0
  357. package/dist/server/server/pairing-offer.js.map +1 -0
  358. package/dist/server/server/pairing-qr.d.ts +7 -0
  359. package/dist/server/server/pairing-qr.d.ts.map +1 -0
  360. package/dist/server/server/pairing-qr.js +45 -0
  361. package/dist/server/server/pairing-qr.js.map +1 -0
  362. package/dist/server/server/path-utils.d.ts +3 -0
  363. package/dist/server/server/path-utils.d.ts.map +1 -0
  364. package/dist/server/server/path-utils.js +20 -0
  365. package/dist/server/server/path-utils.js.map +1 -0
  366. package/dist/server/server/persisted-config.d.ts +625 -0
  367. package/dist/server/server/persisted-config.d.ts.map +1 -0
  368. package/dist/server/server/persisted-config.js +265 -0
  369. package/dist/server/server/persisted-config.js.map +1 -0
  370. package/dist/server/server/persistence-hooks.d.ts +24 -0
  371. package/dist/server/server/persistence-hooks.d.ts.map +1 -0
  372. package/dist/server/server/persistence-hooks.js +60 -0
  373. package/dist/server/server/persistence-hooks.js.map +1 -0
  374. package/dist/server/server/pid-lock.d.ts +29 -0
  375. package/dist/server/server/pid-lock.d.ts.map +1 -0
  376. package/dist/server/server/pid-lock.js +148 -0
  377. package/dist/server/server/pid-lock.js.map +1 -0
  378. package/dist/server/server/push/push-service.d.ts +22 -0
  379. package/dist/server/server/push/push-service.d.ts.map +1 -0
  380. package/dist/server/server/push/push-service.js +69 -0
  381. package/dist/server/server/push/push-service.js.map +1 -0
  382. package/dist/server/server/push/token-store.d.ts +18 -0
  383. package/dist/server/server/push/token-store.d.ts.map +1 -0
  384. package/dist/server/server/push/token-store.js +70 -0
  385. package/dist/server/server/push/token-store.js.map +1 -0
  386. package/dist/server/server/relay-transport.d.ts +23 -0
  387. package/dist/server/server/relay-transport.d.ts.map +1 -0
  388. package/dist/server/server/relay-transport.js +461 -0
  389. package/dist/server/server/relay-transport.js.map +1 -0
  390. package/dist/server/server/schedule/cron.d.ts +4 -0
  391. package/dist/server/server/schedule/cron.d.ts.map +1 -0
  392. package/dist/server/server/schedule/cron.js +103 -0
  393. package/dist/server/server/schedule/cron.js.map +1 -0
  394. package/dist/server/server/schedule/rpc-schemas.d.ts +2773 -0
  395. package/dist/server/server/schedule/rpc-schemas.d.ts.map +1 -0
  396. package/dist/server/server/schedule/rpc-schemas.js +112 -0
  397. package/dist/server/server/schedule/rpc-schemas.js.map +1 -0
  398. package/dist/server/server/schedule/service.d.ts +39 -0
  399. package/dist/server/server/schedule/service.d.ts.map +1 -0
  400. package/dist/server/server/schedule/service.js +410 -0
  401. package/dist/server/server/schedule/service.js.map +1 -0
  402. package/dist/server/server/schedule/store.d.ts +13 -0
  403. package/dist/server/server/schedule/store.d.ts.map +1 -0
  404. package/dist/server/server/schedule/store.js +56 -0
  405. package/dist/server/server/schedule/store.js.map +1 -0
  406. package/dist/server/server/schedule/types.d.ts +710 -0
  407. package/dist/server/server/schedule/types.d.ts.map +1 -0
  408. package/dist/server/server/schedule/types.js +73 -0
  409. package/dist/server/server/schedule/types.js.map +1 -0
  410. package/dist/server/server/seawork-home.d.ts +2 -0
  411. package/dist/server/server/seawork-home.d.ts.map +1 -0
  412. package/dist/server/server/seawork-home.js +19 -0
  413. package/dist/server/server/seawork-home.js.map +1 -0
  414. package/dist/server/server/server-id.d.ts +17 -0
  415. package/dist/server/server/server-id.d.ts.map +1 -0
  416. package/dist/server/server/server-id.js +63 -0
  417. package/dist/server/server/server-id.js.map +1 -0
  418. package/dist/server/server/session.d.ts +510 -0
  419. package/dist/server/server/session.d.ts.map +1 -0
  420. package/dist/server/server/session.js +6414 -0
  421. package/dist/server/server/session.js.map +1 -0
  422. package/dist/server/server/speech/audio.d.ts +10 -0
  423. package/dist/server/server/speech/audio.d.ts.map +1 -0
  424. package/dist/server/server/speech/audio.js +101 -0
  425. package/dist/server/server/speech/audio.js.map +1 -0
  426. package/dist/server/server/speech/provider-resolver.d.ts +3 -0
  427. package/dist/server/server/speech/provider-resolver.d.ts.map +1 -0
  428. package/dist/server/server/speech/provider-resolver.js +7 -0
  429. package/dist/server/server/speech/provider-resolver.js.map +1 -0
  430. package/dist/server/server/speech/providers/local/config.d.ts +25 -0
  431. package/dist/server/server/speech/providers/local/config.d.ts.map +1 -0
  432. package/dist/server/server/speech/providers/local/config.js +74 -0
  433. package/dist/server/server/speech/providers/local/config.js.map +1 -0
  434. package/dist/server/server/speech/providers/local/models.d.ts +11 -0
  435. package/dist/server/server/speech/providers/local/models.d.ts.map +1 -0
  436. package/dist/server/server/speech/providers/local/models.js +17 -0
  437. package/dist/server/server/speech/providers/local/models.js.map +1 -0
  438. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts +24 -0
  439. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.d.ts.map +1 -0
  440. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js +436 -0
  441. package/dist/server/server/speech/providers/local/pocket/pocket-tts-onnx.js.map +1 -0
  442. package/dist/server/server/speech/providers/local/runtime.d.ts +31 -0
  443. package/dist/server/server/speech/providers/local/runtime.d.ts.map +1 -0
  444. package/dist/server/server/speech/providers/local/runtime.js +247 -0
  445. package/dist/server/server/speech/providers/local/runtime.js.map +1 -0
  446. package/dist/server/server/speech/providers/local/sherpa/assets/silero_vad.onnx +0 -0
  447. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts +117 -0
  448. package/dist/server/server/speech/providers/local/sherpa/model-catalog.d.ts.map +1 -0
  449. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js +166 -0
  450. package/dist/server/server/speech/providers/local/sherpa/model-catalog.js.map +1 -0
  451. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts +15 -0
  452. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts.map +1 -0
  453. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +165 -0
  454. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js.map +1 -0
  455. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts +28 -0
  456. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.d.ts.map +1 -0
  457. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js +73 -0
  458. package/dist/server/server/speech/providers/local/sherpa/sherpa-offline-recognizer.js.map +1 -0
  459. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.d.ts +37 -0
  460. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.d.ts.map +1 -0
  461. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js +84 -0
  462. package/dist/server/server/speech/providers/local/sherpa/sherpa-online-recognizer.js.map +1 -0
  463. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.d.ts +7 -0
  464. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.d.ts.map +1 -0
  465. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.js +11 -0
  466. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-loader.js.map +1 -0
  467. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts +9 -0
  468. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.d.ts.map +1 -0
  469. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js +102 -0
  470. package/dist/server/server/speech/providers/local/sherpa/sherpa-onnx-node-loader.js.map +1 -0
  471. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts +28 -0
  472. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.d.ts.map +1 -0
  473. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js +135 -0
  474. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-realtime-session.js.map +1 -0
  475. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts +21 -0
  476. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.d.ts.map +1 -0
  477. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js +131 -0
  478. package/dist/server/server/speech/providers/local/sherpa/sherpa-parakeet-stt.js.map +1 -0
  479. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.d.ts +23 -0
  480. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.d.ts.map +1 -0
  481. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js +110 -0
  482. package/dist/server/server/speech/providers/local/sherpa/sherpa-realtime-session.js.map +1 -0
  483. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.d.ts +18 -0
  484. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.d.ts.map +1 -0
  485. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
  486. package/dist/server/server/speech/providers/local/sherpa/sherpa-runtime-env.js.map +1 -0
  487. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.d.ts +23 -0
  488. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.d.ts.map +1 -0
  489. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js +138 -0
  490. package/dist/server/server/speech/providers/local/sherpa/sherpa-stt.js.map +1 -0
  491. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts +21 -0
  492. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.d.ts.map +1 -0
  493. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js +108 -0
  494. package/dist/server/server/speech/providers/local/sherpa/sherpa-tts.js.map +1 -0
  495. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.d.ts +19 -0
  496. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.d.ts.map +1 -0
  497. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.js +49 -0
  498. package/dist/server/server/speech/providers/local/sherpa/silero-vad-provider.js.map +1 -0
  499. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.d.ts +38 -0
  500. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.d.ts.map +1 -0
  501. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.js +176 -0
  502. package/dist/server/server/speech/providers/local/sherpa/silero-vad-session.js.map +1 -0
  503. package/dist/server/server/speech/providers/openai/config.d.ts +22 -0
  504. package/dist/server/server/speech/providers/openai/config.d.ts.map +1 -0
  505. package/dist/server/server/speech/providers/openai/config.js +80 -0
  506. package/dist/server/server/speech/providers/openai/config.js.map +1 -0
  507. package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts +42 -0
  508. package/dist/server/server/speech/providers/openai/realtime-transcription-session.d.ts.map +1 -0
  509. package/dist/server/server/speech/providers/openai/realtime-transcription-session.js +168 -0
  510. package/dist/server/server/speech/providers/openai/realtime-transcription-session.js.map +1 -0
  511. package/dist/server/server/speech/providers/openai/runtime.d.ts +29 -0
  512. package/dist/server/server/speech/providers/openai/runtime.d.ts.map +1 -0
  513. package/dist/server/server/speech/providers/openai/runtime.js +112 -0
  514. package/dist/server/server/speech/providers/openai/runtime.js.map +1 -0
  515. package/dist/server/server/speech/providers/openai/stt.d.ts +22 -0
  516. package/dist/server/server/speech/providers/openai/stt.d.ts.map +1 -0
  517. package/dist/server/server/speech/providers/openai/stt.js +206 -0
  518. package/dist/server/server/speech/providers/openai/stt.js.map +1 -0
  519. package/dist/server/server/speech/providers/openai/tts.d.ts +18 -0
  520. package/dist/server/server/speech/providers/openai/tts.d.ts.map +1 -0
  521. package/dist/server/server/speech/providers/openai/tts.js +46 -0
  522. package/dist/server/server/speech/providers/openai/tts.js.map +1 -0
  523. package/dist/server/server/speech/speech-config-resolver.d.ts +11 -0
  524. package/dist/server/server/speech/speech-config-resolver.d.ts.map +1 -0
  525. package/dist/server/server/speech/speech-config-resolver.js +104 -0
  526. package/dist/server/server/speech/speech-config-resolver.js.map +1 -0
  527. package/dist/server/server/speech/speech-provider.d.ts +59 -0
  528. package/dist/server/server/speech/speech-provider.d.ts.map +1 -0
  529. package/dist/server/server/speech/speech-provider.js +2 -0
  530. package/dist/server/server/speech/speech-provider.js.map +1 -0
  531. package/dist/server/server/speech/speech-runtime.d.ts +43 -0
  532. package/dist/server/server/speech/speech-runtime.d.ts.map +1 -0
  533. package/dist/server/server/speech/speech-runtime.js +560 -0
  534. package/dist/server/server/speech/speech-runtime.js.map +1 -0
  535. package/dist/server/server/speech/speech-types.d.ts +24 -0
  536. package/dist/server/server/speech/speech-types.d.ts.map +1 -0
  537. package/dist/server/server/speech/speech-types.js +8 -0
  538. package/dist/server/server/speech/speech-types.js.map +1 -0
  539. package/dist/server/server/speech/turn-detection-provider.d.ts +23 -0
  540. package/dist/server/server/speech/turn-detection-provider.d.ts.map +1 -0
  541. package/dist/server/server/speech/turn-detection-provider.js +2 -0
  542. package/dist/server/server/speech/turn-detection-provider.js.map +1 -0
  543. package/dist/server/server/types.d.ts +5 -0
  544. package/dist/server/server/types.d.ts.map +1 -0
  545. package/dist/server/server/types.js +3 -0
  546. package/dist/server/server/types.js.map +1 -0
  547. package/dist/server/server/utils/diff-highlighter.d.ts +60 -0
  548. package/dist/server/server/utils/diff-highlighter.d.ts.map +1 -0
  549. package/dist/server/server/utils/diff-highlighter.js +257 -0
  550. package/dist/server/server/utils/diff-highlighter.js.map +1 -0
  551. package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.d.ts +16 -0
  552. package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.d.ts.map +1 -0
  553. package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.js +35 -0
  554. package/dist/server/server/voice/fixed-duration-pcm-ring-buffer.js.map +1 -0
  555. package/dist/server/server/voice/voice-turn-controller.d.ts +34 -0
  556. package/dist/server/server/voice/voice-turn-controller.d.ts.map +1 -0
  557. package/dist/server/server/voice/voice-turn-controller.js +160 -0
  558. package/dist/server/server/voice/voice-turn-controller.js.map +1 -0
  559. package/dist/server/server/voice-config.d.ts +15 -0
  560. package/dist/server/server/voice-config.d.ts.map +1 -0
  561. package/dist/server/server/voice-config.js +54 -0
  562. package/dist/server/server/voice-config.js.map +1 -0
  563. package/dist/server/server/voice-permission-policy.d.ts +4 -0
  564. package/dist/server/server/voice-permission-policy.d.ts.map +1 -0
  565. package/dist/server/server/voice-permission-policy.js +13 -0
  566. package/dist/server/server/voice-permission-policy.js.map +1 -0
  567. package/dist/server/server/voice-types.d.ts +12 -0
  568. package/dist/server/server/voice-types.d.ts.map +1 -0
  569. package/dist/server/server/voice-types.js +2 -0
  570. package/dist/server/server/voice-types.js.map +1 -0
  571. package/dist/server/server/websocket-server.d.ts +122 -0
  572. package/dist/server/server/websocket-server.d.ts.map +1 -0
  573. package/dist/server/server/websocket-server.js +1092 -0
  574. package/dist/server/server/websocket-server.js.map +1 -0
  575. package/dist/server/server/workspace-git-service.d.ts +108 -0
  576. package/dist/server/server/workspace-git-service.d.ts.map +1 -0
  577. package/dist/server/server/workspace-git-service.js +404 -0
  578. package/dist/server/server/workspace-git-service.js.map +1 -0
  579. package/dist/server/server/workspace-registry-bootstrap.d.ts +11 -0
  580. package/dist/server/server/workspace-registry-bootstrap.d.ts.map +1 -0
  581. package/dist/server/server/workspace-registry-bootstrap.js +100 -0
  582. package/dist/server/server/workspace-registry-bootstrap.js.map +1 -0
  583. package/dist/server/server/workspace-registry-model.d.ts +33 -0
  584. package/dist/server/server/workspace-registry-model.d.ts.map +1 -0
  585. package/dist/server/server/workspace-registry-model.js +167 -0
  586. package/dist/server/server/workspace-registry-model.js.map +1 -0
  587. package/dist/server/server/workspace-registry.d.ts +130 -0
  588. package/dist/server/server/workspace-registry.d.ts.map +1 -0
  589. package/dist/server/server/workspace-registry.js +151 -0
  590. package/dist/server/server/workspace-registry.js.map +1 -0
  591. package/dist/server/server/worktree-bootstrap.d.ts +29 -0
  592. package/dist/server/server/worktree-bootstrap.d.ts.map +1 -0
  593. package/dist/server/server/worktree-bootstrap.js +508 -0
  594. package/dist/server/server/worktree-bootstrap.js.map +1 -0
  595. package/dist/server/server/worktree-session.d.ts +131 -0
  596. package/dist/server/server/worktree-session.d.ts.map +1 -0
  597. package/dist/server/server/worktree-session.js +487 -0
  598. package/dist/server/server/worktree-session.js.map +1 -0
  599. package/dist/server/shared/agent-attention-notification.d.ts +40 -0
  600. package/dist/server/shared/agent-attention-notification.d.ts.map +1 -0
  601. package/dist/server/shared/agent-attention-notification.js +130 -0
  602. package/dist/server/shared/agent-attention-notification.js.map +1 -0
  603. package/dist/server/shared/agent-lifecycle.d.ts +3 -0
  604. package/dist/server/shared/agent-lifecycle.d.ts.map +1 -0
  605. package/dist/server/shared/agent-lifecycle.js +8 -0
  606. package/dist/server/shared/agent-lifecycle.js.map +1 -0
  607. package/dist/server/shared/connection-offer.d.ts +62 -0
  608. package/dist/server/shared/connection-offer.d.ts.map +1 -0
  609. package/dist/server/shared/connection-offer.js +17 -0
  610. package/dist/server/shared/connection-offer.js.map +1 -0
  611. package/dist/server/shared/daemon-endpoints.d.ts +28 -0
  612. package/dist/server/shared/daemon-endpoints.d.ts.map +1 -0
  613. package/dist/server/shared/daemon-endpoints.js +122 -0
  614. package/dist/server/shared/daemon-endpoints.js.map +1 -0
  615. package/dist/server/shared/literal-union.d.ts +2 -0
  616. package/dist/server/shared/literal-union.d.ts.map +1 -0
  617. package/dist/server/shared/literal-union.js +2 -0
  618. package/dist/server/shared/literal-union.js.map +1 -0
  619. package/dist/server/shared/messages.d.ts +81816 -0
  620. package/dist/server/shared/messages.d.ts.map +1 -0
  621. package/dist/server/shared/messages.js +2553 -0
  622. package/dist/server/shared/messages.js.map +1 -0
  623. package/dist/server/shared/path-utils.d.ts +2 -0
  624. package/dist/server/shared/path-utils.d.ts.map +1 -0
  625. package/dist/server/shared/path-utils.js +16 -0
  626. package/dist/server/shared/path-utils.js.map +1 -0
  627. package/dist/server/shared/terminal-stream-protocol.d.ts +36 -0
  628. package/dist/server/shared/terminal-stream-protocol.d.ts.map +1 -0
  629. package/dist/server/shared/terminal-stream-protocol.js +99 -0
  630. package/dist/server/shared/terminal-stream-protocol.js.map +1 -0
  631. package/dist/server/shared/tool-call-display.d.ts +11 -0
  632. package/dist/server/shared/tool-call-display.d.ts.map +1 -0
  633. package/dist/server/shared/tool-call-display.js +133 -0
  634. package/dist/server/shared/tool-call-display.js.map +1 -0
  635. package/dist/server/terminal/terminal-manager.d.ts +30 -0
  636. package/dist/server/terminal/terminal-manager.d.ts.map +1 -0
  637. package/dist/server/terminal/terminal-manager.js +136 -0
  638. package/dist/server/terminal/terminal-manager.js.map +1 -0
  639. package/dist/server/terminal/terminal.d.ts +68 -0
  640. package/dist/server/terminal/terminal.d.ts.map +1 -0
  641. package/dist/server/terminal/terminal.js +384 -0
  642. package/dist/server/terminal/terminal.js.map +1 -0
  643. package/dist/server/utils/checkout-git.d.ts +180 -0
  644. package/dist/server/utils/checkout-git.d.ts.map +1 -0
  645. package/dist/server/utils/checkout-git.js +1621 -0
  646. package/dist/server/utils/checkout-git.js.map +1 -0
  647. package/dist/server/utils/directory-suggestions.d.ts +24 -0
  648. package/dist/server/utils/directory-suggestions.d.ts.map +1 -0
  649. package/dist/server/utils/directory-suggestions.js +671 -0
  650. package/dist/server/utils/directory-suggestions.js.map +1 -0
  651. package/dist/server/utils/executable.d.ts +33 -0
  652. package/dist/server/utils/executable.d.ts.map +1 -0
  653. package/dist/server/utils/executable.js +134 -0
  654. package/dist/server/utils/executable.js.map +1 -0
  655. package/dist/server/utils/path.d.ts +5 -0
  656. package/dist/server/utils/path.d.ts.map +1 -0
  657. package/dist/server/utils/path.js +15 -0
  658. package/dist/server/utils/path.js.map +1 -0
  659. package/dist/server/utils/project-icon.d.ts +39 -0
  660. package/dist/server/utils/project-icon.d.ts.map +1 -0
  661. package/dist/server/utils/project-icon.js +389 -0
  662. package/dist/server/utils/project-icon.js.map +1 -0
  663. package/dist/server/utils/spawn.d.ts +13 -0
  664. package/dist/server/utils/spawn.d.ts.map +1 -0
  665. package/dist/server/utils/spawn.js +33 -0
  666. package/dist/server/utils/spawn.js.map +1 -0
  667. package/dist/server/utils/worktree-metadata.d.ts +47 -0
  668. package/dist/server/utils/worktree-metadata.d.ts.map +1 -0
  669. package/dist/server/utils/worktree-metadata.js +116 -0
  670. package/dist/server/utils/worktree-metadata.js.map +1 -0
  671. package/dist/server/utils/worktree.d.ts +144 -0
  672. package/dist/server/utils/worktree.d.ts.map +1 -0
  673. package/dist/server/utils/worktree.js +745 -0
  674. package/dist/server/utils/worktree.js.map +1 -0
  675. package/dist/src/server/pid-lock.js +148 -0
  676. package/dist/src/server/pid-lock.js.map +1 -0
  677. package/dist/src/server/seawork-home.js +19 -0
  678. package/dist/src/server/seawork-home.js.map +1 -0
  679. package/dist/src/server/speech/providers/local/sherpa/sherpa-runtime-env.js +84 -0
  680. package/dist/src/server/speech/providers/local/sherpa/sherpa-runtime-env.js.map +1 -0
  681. package/package.json +117 -0
  682. package/src/server/speech/providers/local/sherpa/assets/silero_vad.onnx +0 -0
@@ -0,0 +1,739 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { execFile } from "node:child_process";
3
+ import { promises as fs } from "node:fs";
4
+ import path from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { z } from "zod";
7
+ import { curateAgentActivity } from "./agent/activity-curator.js";
8
+ import { getStructuredAgentResponse } from "./agent/agent-response-loop.js";
9
+ const execFileAsync = promisify(execFile);
10
+ const LOOP_ID_LENGTH = 8;
11
+ const DEFAULT_LOOP_PROVIDER = "claude";
12
+ const MAX_VERIFY_OUTPUT_BYTES = 64 * 1024;
13
+ const LoopVerifyPromptSchema = z.object({
14
+ passed: z.boolean(),
15
+ reason: z.string().min(1),
16
+ });
17
+ const LoopLogEntrySchema = z.object({
18
+ seq: z.number().int().positive(),
19
+ timestamp: z.string(),
20
+ iteration: z.number().int().positive().nullable(),
21
+ source: z.enum(["loop", "worker", "verifier", "verify-check"]),
22
+ level: z.enum(["info", "error"]),
23
+ text: z.string(),
24
+ });
25
+ const LoopVerifyCheckResultSchema = z.object({
26
+ command: z.string(),
27
+ exitCode: z.number().int(),
28
+ passed: z.boolean(),
29
+ stdout: z.string(),
30
+ stderr: z.string(),
31
+ startedAt: z.string(),
32
+ completedAt: z.string(),
33
+ });
34
+ const LoopVerifyPromptResultSchema = z.object({
35
+ passed: z.boolean(),
36
+ reason: z.string(),
37
+ verifierAgentId: z.string().nullable(),
38
+ startedAt: z.string(),
39
+ completedAt: z.string(),
40
+ });
41
+ const LoopIterationRecordSchema = z.object({
42
+ index: z.number().int().positive(),
43
+ workerAgentId: z.string().nullable(),
44
+ workerStartedAt: z.string(),
45
+ workerCompletedAt: z.string().nullable(),
46
+ verifierAgentId: z.string().nullable(),
47
+ status: z.enum(["running", "succeeded", "failed", "stopped"]),
48
+ workerOutcome: z.enum(["completed", "failed", "canceled"]).nullable(),
49
+ failureReason: z.string().nullable(),
50
+ verifyChecks: z.array(LoopVerifyCheckResultSchema),
51
+ verifyPrompt: LoopVerifyPromptResultSchema.nullable(),
52
+ });
53
+ const LoopRecordSchema = z.object({
54
+ id: z.string(),
55
+ name: z.string().nullable(),
56
+ prompt: z.string(),
57
+ cwd: z.string(),
58
+ provider: z.string(),
59
+ model: z.string().nullable(),
60
+ workerProvider: z.string().nullable(),
61
+ workerModel: z.string().nullable(),
62
+ verifierProvider: z.string().nullable(),
63
+ verifierModel: z.string().nullable(),
64
+ verifyPrompt: z.string().nullable(),
65
+ verifyChecks: z.array(z.string()),
66
+ archive: z.boolean(),
67
+ sleepMs: z.number().int().nonnegative(),
68
+ maxIterations: z.number().int().positive().nullable(),
69
+ maxTimeMs: z.number().int().positive().nullable(),
70
+ status: z.enum(["running", "succeeded", "failed", "stopped"]),
71
+ createdAt: z.string(),
72
+ updatedAt: z.string(),
73
+ startedAt: z.string(),
74
+ completedAt: z.string().nullable(),
75
+ stopRequestedAt: z.string().nullable(),
76
+ iterations: z.array(LoopIterationRecordSchema),
77
+ logs: z.array(LoopLogEntrySchema),
78
+ nextLogSeq: z.number().int().positive(),
79
+ activeIteration: z.number().int().positive().nullable(),
80
+ activeWorkerAgentId: z.string().nullable(),
81
+ activeVerifierAgentId: z.string().nullable(),
82
+ });
83
+ const StoredLoopsSchema = z.array(LoopRecordSchema);
84
+ function nowIso() {
85
+ return new Date().toISOString();
86
+ }
87
+ function cloneLoop(record) {
88
+ return LoopRecordSchema.parse(record);
89
+ }
90
+ function createLoopId() {
91
+ return randomUUID().replace(/-/g, "").slice(0, LOOP_ID_LENGTH);
92
+ }
93
+ function normalizeName(name) {
94
+ const trimmed = name?.trim();
95
+ return trimmed ? trimmed : null;
96
+ }
97
+ function normalizePrompt(value, field) {
98
+ if (value === undefined) {
99
+ return null;
100
+ }
101
+ const trimmed = value.trim();
102
+ if (!trimmed) {
103
+ throw new Error(`${field} cannot be empty`);
104
+ }
105
+ return trimmed;
106
+ }
107
+ function ensurePositiveInteger(value, field) {
108
+ if (value === undefined) {
109
+ return null;
110
+ }
111
+ if (!Number.isInteger(value) || value <= 0) {
112
+ throw new Error(`${field} must be a positive integer`);
113
+ }
114
+ return value;
115
+ }
116
+ function ensureNonNegativeInteger(value, field) {
117
+ if (value === undefined) {
118
+ return 0;
119
+ }
120
+ if (!Number.isInteger(value) || value < 0) {
121
+ throw new Error(`${field} must be a non-negative integer`);
122
+ }
123
+ return value;
124
+ }
125
+ function buildWorkerTitle(loop, iterationIndex) {
126
+ const prefix = loop.name ?? loop.id;
127
+ return `${prefix} [loop ${iterationIndex} worker]`;
128
+ }
129
+ function buildVerifierTitle(loop, iterationIndex) {
130
+ const prefix = loop.name ?? loop.id;
131
+ return `${prefix} [loop ${iterationIndex} verifier]`;
132
+ }
133
+ function formatStreamLog(event) {
134
+ switch (event.type) {
135
+ case "timeline": {
136
+ const rendered = curateAgentActivity([event.item]);
137
+ return rendered === "No activity to display." ? null : rendered;
138
+ }
139
+ case "turn_failed":
140
+ return `[Turn Failed] ${event.error}`;
141
+ case "turn_canceled":
142
+ return `[Turn Canceled] ${event.reason}`;
143
+ case "permission_requested":
144
+ return `[Permission Requested] ${event.request.name}`;
145
+ case "permission_resolved":
146
+ return `[Permission Resolved] ${event.requestId}`;
147
+ default:
148
+ return null;
149
+ }
150
+ }
151
+ async function sleepWithAbort(ms, signal) {
152
+ if (ms <= 0) {
153
+ return;
154
+ }
155
+ await new Promise((resolve, reject) => {
156
+ const timer = setTimeout(() => {
157
+ cleanup();
158
+ resolve();
159
+ }, ms);
160
+ const onAbort = () => {
161
+ cleanup();
162
+ reject(signal.reason instanceof Error ? signal.reason : new Error("Loop aborted"));
163
+ };
164
+ const cleanup = () => {
165
+ clearTimeout(timer);
166
+ signal.removeEventListener("abort", onAbort);
167
+ };
168
+ signal.addEventListener("abort", onAbort, { once: true });
169
+ });
170
+ }
171
+ function isAbortError(error) {
172
+ if (error instanceof Error && error.message === "Loop aborted") {
173
+ return true;
174
+ }
175
+ return false;
176
+ }
177
+ async function runVerifyCheck(options) {
178
+ const startedAt = nowIso();
179
+ try {
180
+ const result = await execFileAsync("/bin/sh", ["-lc", options.command], {
181
+ cwd: options.cwd,
182
+ maxBuffer: MAX_VERIFY_OUTPUT_BYTES,
183
+ });
184
+ return {
185
+ command: options.command,
186
+ exitCode: 0,
187
+ passed: true,
188
+ stdout: result.stdout ?? "",
189
+ stderr: result.stderr ?? "",
190
+ startedAt,
191
+ completedAt: nowIso(),
192
+ };
193
+ }
194
+ catch (error) {
195
+ const childError = error;
196
+ return {
197
+ command: options.command,
198
+ exitCode: typeof childError.code === "number" ? childError.code : 1,
199
+ passed: false,
200
+ stdout: childError.stdout ?? "",
201
+ stderr: childError.stderr ?? "",
202
+ startedAt,
203
+ completedAt: nowIso(),
204
+ };
205
+ }
206
+ }
207
+ export class LoopService {
208
+ constructor(options) {
209
+ this.options = options;
210
+ this.loaded = false;
211
+ this.loops = new Map();
212
+ this.persistQueue = Promise.resolve();
213
+ this.running = new Map();
214
+ this.storePath = path.join(options.seaworkHome, "loops", "loops.json");
215
+ this.logger = options.logger.child({ module: "loop-service" });
216
+ }
217
+ async initialize() {
218
+ if (this.loaded) {
219
+ return;
220
+ }
221
+ this.loops.clear();
222
+ try {
223
+ const raw = await fs.readFile(this.storePath, "utf8");
224
+ const parsed = StoredLoopsSchema.parse(JSON.parse(raw));
225
+ for (const record of parsed) {
226
+ if (record.status === "running") {
227
+ const recovered = cloneLoop(record);
228
+ recovered.status = "stopped";
229
+ recovered.updatedAt = nowIso();
230
+ recovered.completedAt = recovered.updatedAt;
231
+ recovered.stopRequestedAt = recovered.updatedAt;
232
+ recovered.activeIteration = null;
233
+ recovered.activeWorkerAgentId = null;
234
+ recovered.activeVerifierAgentId = null;
235
+ this.appendLog(recovered, {
236
+ iteration: null,
237
+ source: "loop",
238
+ level: "error",
239
+ text: "Loop was interrupted by daemon restart.",
240
+ });
241
+ const lastIteration = recovered.iterations.at(-1);
242
+ if (lastIteration && lastIteration.status === "running") {
243
+ lastIteration.status = "stopped";
244
+ lastIteration.failureReason = "Daemon restarted";
245
+ lastIteration.workerCompletedAt = recovered.updatedAt;
246
+ }
247
+ this.loops.set(recovered.id, recovered);
248
+ continue;
249
+ }
250
+ this.loops.set(record.id, record);
251
+ }
252
+ }
253
+ catch (error) {
254
+ const code = error.code;
255
+ if (code !== "ENOENT") {
256
+ this.logger.error({ err: error, storePath: this.storePath }, "Failed to load loops");
257
+ }
258
+ }
259
+ this.loaded = true;
260
+ await this.persist();
261
+ }
262
+ async runLoop(input) {
263
+ await this.initialize();
264
+ const prompt = normalizePrompt(input.prompt, "prompt");
265
+ if (!prompt) {
266
+ throw new Error("prompt cannot be empty");
267
+ }
268
+ const verifyPrompt = normalizePrompt(input.verifyPrompt, "verifyPrompt");
269
+ const verifyChecks = (input.verifyChecks ?? []).map((command) => {
270
+ const trimmed = command.trim();
271
+ if (!trimmed) {
272
+ throw new Error("verifyChecks cannot contain empty commands");
273
+ }
274
+ return trimmed;
275
+ });
276
+ if (!verifyPrompt && verifyChecks.length === 0) {
277
+ throw new Error("Loop requires --verify or at least one --verify-check");
278
+ }
279
+ const createdAt = nowIso();
280
+ const record = LoopRecordSchema.parse({
281
+ id: createLoopId(),
282
+ name: normalizeName(input.name),
283
+ prompt,
284
+ cwd: path.resolve(input.cwd),
285
+ provider: input.provider ?? DEFAULT_LOOP_PROVIDER,
286
+ model: normalizePrompt(input.model, "model"),
287
+ workerProvider: input.workerProvider ?? null,
288
+ workerModel: normalizePrompt(input.workerModel, "workerModel"),
289
+ verifierProvider: input.verifierProvider ?? null,
290
+ verifierModel: normalizePrompt(input.verifierModel, "verifierModel"),
291
+ verifyPrompt,
292
+ verifyChecks,
293
+ archive: input.archive ?? false,
294
+ sleepMs: ensureNonNegativeInteger(input.sleepMs, "sleepMs"),
295
+ maxIterations: ensurePositiveInteger(input.maxIterations, "maxIterations"),
296
+ maxTimeMs: ensurePositiveInteger(input.maxTimeMs, "maxTimeMs"),
297
+ status: "running",
298
+ createdAt,
299
+ updatedAt: createdAt,
300
+ startedAt: createdAt,
301
+ completedAt: null,
302
+ stopRequestedAt: null,
303
+ iterations: [],
304
+ logs: [],
305
+ nextLogSeq: 1,
306
+ activeIteration: null,
307
+ activeWorkerAgentId: null,
308
+ activeVerifierAgentId: null,
309
+ });
310
+ this.loops.set(record.id, record);
311
+ this.appendLog(record, {
312
+ iteration: null,
313
+ source: "loop",
314
+ level: "info",
315
+ text: `Loop created in ${record.cwd}`,
316
+ });
317
+ await this.persist();
318
+ const abortController = new AbortController();
319
+ const promise = this.executeLoop(record.id, abortController.signal).finally(() => {
320
+ this.running.delete(record.id);
321
+ });
322
+ this.running.set(record.id, { abortController, promise });
323
+ return cloneLoop(record);
324
+ }
325
+ async listLoops() {
326
+ await this.initialize();
327
+ return Array.from(this.loops.values())
328
+ .sort((left, right) => right.createdAt.localeCompare(left.createdAt))
329
+ .map((record) => ({
330
+ id: record.id,
331
+ name: record.name,
332
+ status: record.status,
333
+ cwd: record.cwd,
334
+ createdAt: record.createdAt,
335
+ updatedAt: record.updatedAt,
336
+ activeIteration: record.activeIteration,
337
+ }));
338
+ }
339
+ async inspectLoop(idOrPrefix) {
340
+ await this.initialize();
341
+ const loop = this.requireLoop(idOrPrefix);
342
+ return cloneLoop(loop);
343
+ }
344
+ async getLoopLogs(idOrPrefix, afterSeq = 0) {
345
+ await this.initialize();
346
+ const loop = this.requireLoop(idOrPrefix);
347
+ const entries = loop.logs.filter((entry) => entry.seq > afterSeq);
348
+ return {
349
+ loop: cloneLoop(loop),
350
+ entries: entries.map((entry) => LoopLogEntrySchema.parse(entry)),
351
+ nextCursor: loop.nextLogSeq - 1,
352
+ };
353
+ }
354
+ async stopLoop(idOrPrefix) {
355
+ await this.initialize();
356
+ const loop = this.requireLoop(idOrPrefix);
357
+ if (loop.status !== "running") {
358
+ return cloneLoop(loop);
359
+ }
360
+ const running = this.running.get(loop.id);
361
+ loop.stopRequestedAt = loop.stopRequestedAt ?? nowIso();
362
+ loop.updatedAt = loop.stopRequestedAt;
363
+ this.appendLog(loop, {
364
+ iteration: loop.activeIteration,
365
+ source: "loop",
366
+ level: "info",
367
+ text: "Stop requested.",
368
+ });
369
+ await this.persist();
370
+ if (running) {
371
+ running.abortController.abort(new Error("Loop aborted"));
372
+ if (loop.activeWorkerAgentId) {
373
+ await this.options.agentManager.cancelAgentRun(loop.activeWorkerAgentId).catch(() => { });
374
+ }
375
+ if (loop.activeVerifierAgentId) {
376
+ await this.options.agentManager.cancelAgentRun(loop.activeVerifierAgentId).catch(() => { });
377
+ }
378
+ await running.promise.catch(() => { });
379
+ }
380
+ else {
381
+ loop.status = "stopped";
382
+ loop.completedAt = nowIso();
383
+ loop.updatedAt = loop.completedAt;
384
+ await this.persist();
385
+ }
386
+ return cloneLoop(loop);
387
+ }
388
+ async executeLoop(loopId, signal) {
389
+ const loop = this.requireLoop(loopId);
390
+ const deadline = loop.maxTimeMs ? Date.now() + loop.maxTimeMs : null;
391
+ try {
392
+ for (let index = 1;; index += 1) {
393
+ if (signal.aborted) {
394
+ throw new Error("Loop aborted");
395
+ }
396
+ if (loop.maxIterations && index > loop.maxIterations) {
397
+ this.finishLoop(loop, "failed", `Reached max iterations (${loop.maxIterations}).`);
398
+ return;
399
+ }
400
+ if (deadline !== null && Date.now() > deadline) {
401
+ this.finishLoop(loop, "failed", `Reached max time (${loop.maxTimeMs}ms).`);
402
+ return;
403
+ }
404
+ const iteration = LoopIterationRecordSchema.parse({
405
+ index,
406
+ workerAgentId: null,
407
+ workerStartedAt: nowIso(),
408
+ workerCompletedAt: null,
409
+ verifierAgentId: null,
410
+ status: "running",
411
+ workerOutcome: null,
412
+ failureReason: null,
413
+ verifyChecks: [],
414
+ verifyPrompt: null,
415
+ });
416
+ loop.iterations.push(iteration);
417
+ loop.activeIteration = index;
418
+ loop.updatedAt = nowIso();
419
+ this.appendLog(loop, {
420
+ iteration: index,
421
+ source: "loop",
422
+ level: "info",
423
+ text: `Starting iteration ${index}.`,
424
+ });
425
+ await this.persist();
426
+ const workerPassed = await this.runWorkerIteration(loop, iteration, signal);
427
+ if (signal.aborted) {
428
+ throw new Error("Loop aborted");
429
+ }
430
+ if (!workerPassed) {
431
+ iteration.status = iteration.status === "stopped" ? "stopped" : "failed";
432
+ }
433
+ else {
434
+ const verificationPassed = await this.runVerification(loop, iteration, signal);
435
+ if (verificationPassed) {
436
+ iteration.status = "succeeded";
437
+ this.finishLoop(loop, "succeeded", `Iteration ${index} passed verification.`);
438
+ return;
439
+ }
440
+ if (iteration.status === "running") {
441
+ iteration.status = "failed";
442
+ }
443
+ }
444
+ loop.activeIteration = null;
445
+ loop.activeWorkerAgentId = null;
446
+ loop.activeVerifierAgentId = null;
447
+ loop.updatedAt = nowIso();
448
+ await this.persist();
449
+ if (loop.sleepMs > 0) {
450
+ this.appendLog(loop, {
451
+ iteration: index,
452
+ source: "loop",
453
+ level: "info",
454
+ text: `Sleeping ${loop.sleepMs}ms before next iteration.`,
455
+ });
456
+ await this.persist();
457
+ await sleepWithAbort(loop.sleepMs, signal);
458
+ }
459
+ }
460
+ }
461
+ catch (error) {
462
+ if (isAbortError(error)) {
463
+ this.finishLoop(loop, "stopped", "Loop stopped.");
464
+ const iteration = loop.activeIteration
465
+ ? loop.iterations.find((candidate) => candidate.index === loop.activeIteration)
466
+ : null;
467
+ if (iteration && iteration.status === "running") {
468
+ iteration.status = "stopped";
469
+ iteration.failureReason = "Loop stopped";
470
+ iteration.workerCompletedAt = nowIso();
471
+ }
472
+ await this.persist();
473
+ return;
474
+ }
475
+ const message = error instanceof Error ? error.message : String(error);
476
+ this.logger.error({ err: error, loopId }, "Loop execution failed");
477
+ this.finishLoop(loop, "failed", message);
478
+ const iteration = loop.activeIteration
479
+ ? loop.iterations.find((candidate) => candidate.index === loop.activeIteration)
480
+ : null;
481
+ if (iteration && iteration.status === "running") {
482
+ iteration.status = "failed";
483
+ iteration.failureReason = message;
484
+ iteration.workerCompletedAt = nowIso();
485
+ }
486
+ await this.persist();
487
+ }
488
+ }
489
+ async runWorkerIteration(loop, iteration, signal) {
490
+ const agent = await this.options.agentManager.createAgent(this.buildWorkerConfig(loop, iteration));
491
+ iteration.workerAgentId = agent.id;
492
+ loop.activeWorkerAgentId = agent.id;
493
+ loop.updatedAt = nowIso();
494
+ await this.persist();
495
+ const unsubscribe = this.options.agentManager.subscribe((event) => {
496
+ if (event.type !== "agent_stream") {
497
+ return;
498
+ }
499
+ const text = formatStreamLog(event.event);
500
+ if (!text) {
501
+ return;
502
+ }
503
+ this.appendLog(loop, {
504
+ iteration: iteration.index,
505
+ source: "worker",
506
+ level: event.event.type === "turn_failed" ? "error" : "info",
507
+ text,
508
+ });
509
+ void this.persist();
510
+ }, { agentId: agent.id, replayState: false });
511
+ try {
512
+ const prompt = this.toPrompt(loop.prompt);
513
+ const result = await this.options.agentManager.runAgent(agent.id, prompt);
514
+ iteration.workerCompletedAt = nowIso();
515
+ iteration.workerOutcome = result.canceled ? "canceled" : "completed";
516
+ if (result.canceled) {
517
+ iteration.failureReason = "Worker run was canceled.";
518
+ iteration.status = "stopped";
519
+ return false;
520
+ }
521
+ return true;
522
+ }
523
+ catch (error) {
524
+ iteration.workerCompletedAt = nowIso();
525
+ iteration.workerOutcome = "failed";
526
+ iteration.failureReason = error instanceof Error ? error.message : String(error);
527
+ this.appendLog(loop, {
528
+ iteration: iteration.index,
529
+ source: "loop",
530
+ level: "error",
531
+ text: `Worker failed: ${iteration.failureReason}`,
532
+ });
533
+ return false;
534
+ }
535
+ finally {
536
+ unsubscribe();
537
+ loop.activeWorkerAgentId = null;
538
+ loop.updatedAt = nowIso();
539
+ await this.persist();
540
+ try {
541
+ if (loop.archive) {
542
+ await this.options.agentManager.archiveAgent(agent.id);
543
+ }
544
+ else {
545
+ await this.options.agentManager.closeAgent(agent.id);
546
+ }
547
+ }
548
+ catch {
549
+ // Ignore cleanup errors for internal loop workers.
550
+ }
551
+ if (signal.aborted && iteration.status === "running") {
552
+ iteration.status = "stopped";
553
+ }
554
+ }
555
+ }
556
+ async runVerification(loop, iteration, signal) {
557
+ for (const command of loop.verifyChecks) {
558
+ if (signal.aborted) {
559
+ throw new Error("Loop aborted");
560
+ }
561
+ this.appendLog(loop, {
562
+ iteration: iteration.index,
563
+ source: "verify-check",
564
+ level: "info",
565
+ text: `$ ${command}`,
566
+ });
567
+ const result = await runVerifyCheck({ cwd: loop.cwd, command });
568
+ iteration.verifyChecks.push(result);
569
+ const output = [result.stdout.trim(), result.stderr.trim()].filter(Boolean).join("\n");
570
+ this.appendLog(loop, {
571
+ iteration: iteration.index,
572
+ source: "verify-check",
573
+ level: result.passed ? "info" : "error",
574
+ text: output ? `exit ${result.exitCode}\n${output}` : `exit ${result.exitCode}`,
575
+ });
576
+ loop.updatedAt = nowIso();
577
+ await this.persist();
578
+ if (!result.passed) {
579
+ iteration.failureReason = `Verify check failed: ${command}`;
580
+ return false;
581
+ }
582
+ }
583
+ if (!loop.verifyPrompt) {
584
+ return true;
585
+ }
586
+ const startedAt = nowIso();
587
+ const verifierAgent = await this.options.agentManager.createAgent(this.buildVerifierConfig(loop, iteration));
588
+ iteration.verifierAgentId = verifierAgent.id;
589
+ loop.activeVerifierAgentId = verifierAgent.id;
590
+ loop.updatedAt = nowIso();
591
+ await this.persist();
592
+ const unsubscribe = this.options.agentManager.subscribe((event) => {
593
+ if (event.type !== "agent_stream") {
594
+ return;
595
+ }
596
+ const text = formatStreamLog(event.event);
597
+ if (!text) {
598
+ return;
599
+ }
600
+ this.appendLog(loop, {
601
+ iteration: iteration.index,
602
+ source: "verifier",
603
+ level: event.event.type === "turn_failed" ? "error" : "info",
604
+ text,
605
+ });
606
+ void this.persist();
607
+ }, { agentId: verifierAgent.id, replayState: false });
608
+ try {
609
+ const result = await getStructuredAgentResponse({
610
+ caller: async (nextPrompt) => {
611
+ const run = await this.options.agentManager.runAgent(verifierAgent.id, this.toPrompt(nextPrompt));
612
+ return this.resolveFinalText(run.timeline, run.finalText);
613
+ },
614
+ prompt: loop.verifyPrompt,
615
+ schema: LoopVerifyPromptSchema,
616
+ maxRetries: 2,
617
+ schemaName: "LoopVerifierResult",
618
+ });
619
+ iteration.verifyPrompt = {
620
+ passed: result.passed,
621
+ reason: result.reason,
622
+ verifierAgentId: verifierAgent.id,
623
+ startedAt,
624
+ completedAt: nowIso(),
625
+ };
626
+ this.appendLog(loop, {
627
+ iteration: iteration.index,
628
+ source: "loop",
629
+ level: result.passed ? "info" : "error",
630
+ text: `Verifier result: ${result.reason}`,
631
+ });
632
+ if (!result.passed) {
633
+ iteration.failureReason = result.reason;
634
+ }
635
+ return result.passed;
636
+ }
637
+ finally {
638
+ unsubscribe();
639
+ loop.activeVerifierAgentId = null;
640
+ loop.updatedAt = nowIso();
641
+ await this.persist();
642
+ try {
643
+ if (loop.archive) {
644
+ await this.options.agentManager.archiveAgent(verifierAgent.id);
645
+ }
646
+ else {
647
+ await this.options.agentManager.closeAgent(verifierAgent.id);
648
+ }
649
+ }
650
+ catch {
651
+ // Ignore cleanup errors for internal loop verifiers.
652
+ }
653
+ }
654
+ }
655
+ buildWorkerConfig(loop, iteration) {
656
+ return {
657
+ provider: loop.workerProvider ?? loop.provider,
658
+ cwd: loop.cwd,
659
+ model: loop.workerModel ?? loop.model ?? undefined,
660
+ title: buildWorkerTitle(loop, iteration.index),
661
+ internal: true,
662
+ };
663
+ }
664
+ buildVerifierConfig(loop, iteration) {
665
+ return {
666
+ provider: loop.verifierProvider ?? loop.provider,
667
+ cwd: loop.cwd,
668
+ model: loop.verifierModel ?? loop.model ?? undefined,
669
+ title: buildVerifierTitle(loop, iteration.index),
670
+ internal: true,
671
+ };
672
+ }
673
+ resolveFinalText(timeline, finalText) {
674
+ if (finalText.trim()) {
675
+ return finalText;
676
+ }
677
+ for (let index = timeline.length - 1; index >= 0; index -= 1) {
678
+ const item = timeline[index];
679
+ if (item?.type === "assistant_message" && item.text.trim()) {
680
+ return item.text;
681
+ }
682
+ }
683
+ return "";
684
+ }
685
+ toPrompt(text) {
686
+ return text;
687
+ }
688
+ finishLoop(loop, status, message) {
689
+ loop.status = status;
690
+ loop.completedAt = nowIso();
691
+ loop.updatedAt = loop.completedAt;
692
+ loop.activeIteration = null;
693
+ loop.activeWorkerAgentId = null;
694
+ loop.activeVerifierAgentId = null;
695
+ this.appendLog(loop, {
696
+ iteration: null,
697
+ source: "loop",
698
+ level: status === "succeeded" ? "info" : "error",
699
+ text: message,
700
+ });
701
+ }
702
+ appendLog(loop, entry) {
703
+ loop.logs.push({
704
+ seq: loop.nextLogSeq,
705
+ timestamp: nowIso(),
706
+ ...entry,
707
+ });
708
+ loop.nextLogSeq += 1;
709
+ loop.updatedAt = nowIso();
710
+ }
711
+ requireLoop(idOrPrefix) {
712
+ const trimmed = idOrPrefix.trim();
713
+ if (!trimmed) {
714
+ throw new Error("Loop id is required");
715
+ }
716
+ const exact = this.loops.get(trimmed);
717
+ if (exact) {
718
+ return exact;
719
+ }
720
+ const matches = Array.from(this.loops.values()).filter((record) => record.id.startsWith(trimmed));
721
+ if (matches.length === 1) {
722
+ return matches[0];
723
+ }
724
+ if (matches.length > 1) {
725
+ throw new Error(`Loop id prefix is ambiguous: ${trimmed}`);
726
+ }
727
+ throw new Error(`Loop not found: ${trimmed}`);
728
+ }
729
+ async persist() {
730
+ const nextPersist = this.persistQueue.then(async () => {
731
+ await fs.mkdir(path.dirname(this.storePath), { recursive: true });
732
+ const records = Array.from(this.loops.values()).sort((left, right) => left.createdAt.localeCompare(right.createdAt));
733
+ await fs.writeFile(this.storePath, JSON.stringify(records, null, 2), "utf8");
734
+ });
735
+ this.persistQueue = nextPersist.catch(() => { });
736
+ await nextPersist;
737
+ }
738
+ }
739
+ //# sourceMappingURL=loop-service.js.map