@seawork/server 1.0.22 → 2.0.2-rc.6

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 (349) hide show
  1. package/dist/scripts/supervisor-entrypoint.js +48 -8
  2. package/dist/scripts/supervisor-entrypoint.js.map +1 -1
  3. package/dist/scripts/supervisor-native-classifier.js +77 -5
  4. package/dist/scripts/supervisor-native-classifier.js.map +1 -1
  5. package/dist/scripts/supervisor-stdio-tail.js +27 -0
  6. package/dist/scripts/supervisor-stdio-tail.js.map +1 -0
  7. package/dist/scripts/supervisor.js +12 -0
  8. package/dist/scripts/supervisor.js.map +1 -1
  9. package/dist/server/client/daemon-client.d.ts +142 -2
  10. package/dist/server/client/daemon-client.d.ts.map +1 -1
  11. package/dist/server/client/daemon-client.js +384 -3
  12. package/dist/server/client/daemon-client.js.map +1 -1
  13. package/dist/server/server/agent/agent-manager.d.ts +55 -3
  14. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  15. package/dist/server/server/agent/agent-manager.js +324 -45
  16. package/dist/server/server/agent/agent-manager.js.map +1 -1
  17. package/dist/server/server/agent/agent-metadata-generator.d.ts +1 -0
  18. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
  19. package/dist/server/server/agent/agent-metadata-generator.js +8 -0
  20. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  21. package/dist/server/server/agent/agent-projections.js +7 -2
  22. package/dist/server/server/agent/agent-projections.js.map +1 -1
  23. package/dist/server/server/agent/agent-response-loop.d.ts +3 -1
  24. package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -1
  25. package/dist/server/server/agent/agent-response-loop.js +33 -6
  26. package/dist/server/server/agent/agent-response-loop.js.map +1 -1
  27. package/dist/server/server/agent/agent-sdk-types.d.ts +43 -1
  28. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  29. package/dist/server/server/agent/claude-memory.d.ts +4 -0
  30. package/dist/server/server/agent/claude-memory.d.ts.map +1 -0
  31. package/dist/server/server/agent/claude-memory.js +97 -0
  32. package/dist/server/server/agent/claude-memory.js.map +1 -0
  33. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  34. package/dist/server/server/agent/mcp-server.js +247 -0
  35. package/dist/server/server/agent/mcp-server.js.map +1 -1
  36. package/dist/server/server/agent/mcp-shared.d.ts +2 -0
  37. package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
  38. package/dist/server/server/agent/provider-launch-config.d.ts +6 -139
  39. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
  40. package/dist/server/server/agent/provider-launch-config.js +65 -33
  41. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  42. package/dist/server/server/agent/provider-manifest.d.ts +1 -0
  43. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  44. package/dist/server/server/agent/provider-manifest.js +36 -0
  45. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  46. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  47. package/dist/server/server/agent/provider-registry.js +4 -0
  48. package/dist/server/server/agent/provider-registry.js.map +1 -1
  49. package/dist/server/server/agent/provider-snapshot-manager.d.ts +3 -1
  50. package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -1
  51. package/dist/server/server/agent/provider-snapshot-manager.js +13 -0
  52. package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
  53. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  54. package/dist/server/server/agent/providers/claude-agent.js +141 -27
  55. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  56. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -1
  57. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +14 -1
  58. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -1
  59. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +132 -4
  60. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  61. package/dist/server/server/agent/providers/codex-app-server-agent.js +2233 -163
  62. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  63. package/dist/server/server/agent/providers/codex-binary-resolver.d.ts +9 -0
  64. package/dist/server/server/agent/providers/codex-binary-resolver.d.ts.map +1 -1
  65. package/dist/server/server/agent/providers/codex-binary-resolver.js +35 -14
  66. package/dist/server/server/agent/providers/codex-binary-resolver.js.map +1 -1
  67. package/dist/server/server/agent/providers/codex-health-probe.js +1 -1
  68. package/dist/server/server/agent/providers/codex-health-probe.js.map +1 -1
  69. package/dist/server/server/agent/providers/deepseek/constants.d.ts +4 -0
  70. package/dist/server/server/agent/providers/deepseek/constants.d.ts.map +1 -0
  71. package/dist/server/server/agent/providers/deepseek/constants.js +11 -0
  72. package/dist/server/server/agent/providers/deepseek/constants.js.map +1 -0
  73. package/dist/server/server/agent/providers/deepseek/event-mapper.d.ts +21 -0
  74. package/dist/server/server/agent/providers/deepseek/event-mapper.d.ts.map +1 -0
  75. package/dist/server/server/agent/providers/deepseek/event-mapper.js +286 -0
  76. package/dist/server/server/agent/providers/deepseek/event-mapper.js.map +1 -0
  77. package/dist/server/server/agent/providers/deepseek/serve-client.d.ts +94 -0
  78. package/dist/server/server/agent/providers/deepseek/serve-client.d.ts.map +1 -0
  79. package/dist/server/server/agent/providers/deepseek/serve-client.js +142 -0
  80. package/dist/server/server/agent/providers/deepseek/serve-client.js.map +1 -0
  81. package/dist/server/server/agent/providers/deepseek/serve-process.d.ts +18 -0
  82. package/dist/server/server/agent/providers/deepseek/serve-process.d.ts.map +1 -0
  83. package/dist/server/server/agent/providers/deepseek/serve-process.js +93 -0
  84. package/dist/server/server/agent/providers/deepseek/serve-process.js.map +1 -0
  85. package/dist/server/server/agent/providers/deepseek-agent.d.ts +94 -0
  86. package/dist/server/server/agent/providers/deepseek-agent.d.ts.map +1 -0
  87. package/dist/server/server/agent/providers/deepseek-agent.js +811 -0
  88. package/dist/server/server/agent/providers/deepseek-agent.js.map +1 -0
  89. package/dist/server/server/agent/providers/gateway-telemetry.d.ts +9 -0
  90. package/dist/server/server/agent/providers/gateway-telemetry.d.ts.map +1 -0
  91. package/dist/server/server/agent/providers/gateway-telemetry.js +36 -0
  92. package/dist/server/server/agent/providers/gateway-telemetry.js.map +1 -0
  93. package/dist/server/server/agent/providers/seaagent/constants.d.ts +3 -0
  94. package/dist/server/server/agent/providers/seaagent/constants.d.ts.map +1 -0
  95. package/dist/server/server/agent/providers/seaagent/constants.js +3 -0
  96. package/dist/server/server/agent/providers/seaagent/constants.js.map +1 -0
  97. package/dist/server/server/agent/providers/seaagent/event-mapper.d.ts +3 -0
  98. package/dist/server/server/agent/providers/seaagent/event-mapper.d.ts.map +1 -0
  99. package/dist/server/server/agent/providers/seaagent/event-mapper.js +69 -0
  100. package/dist/server/server/agent/providers/seaagent/event-mapper.js.map +1 -0
  101. package/dist/server/server/agent/providers/seaagent/rpc-client.d.ts +23 -0
  102. package/dist/server/server/agent/providers/seaagent/rpc-client.d.ts.map +1 -0
  103. package/dist/server/server/agent/providers/seaagent/rpc-client.js +139 -0
  104. package/dist/server/server/agent/providers/seaagent/rpc-client.js.map +1 -0
  105. package/dist/server/server/agent/providers/seaagent/tool-call-mapper.d.ts +3 -0
  106. package/dist/server/server/agent/providers/seaagent/tool-call-mapper.d.ts.map +1 -0
  107. package/dist/server/server/agent/providers/seaagent/tool-call-mapper.js +38 -0
  108. package/dist/server/server/agent/providers/seaagent/tool-call-mapper.js.map +1 -0
  109. package/dist/server/server/agent/providers/seaagent-agent.d.ts +81 -0
  110. package/dist/server/server/agent/providers/seaagent-agent.d.ts.map +1 -0
  111. package/dist/server/server/agent/providers/seaagent-agent.js +502 -0
  112. package/dist/server/server/agent/providers/seaagent-agent.js.map +1 -0
  113. package/dist/server/server/agent/providers/seaagent-binary-resolver.d.ts +18 -0
  114. package/dist/server/server/agent/providers/seaagent-binary-resolver.d.ts.map +1 -0
  115. package/dist/server/server/agent/providers/seaagent-binary-resolver.js +46 -0
  116. package/dist/server/server/agent/providers/seaagent-binary-resolver.js.map +1 -0
  117. package/dist/server/server/agent/providers/seaagent-health-probe.d.ts +11 -0
  118. package/dist/server/server/agent/providers/seaagent-health-probe.d.ts.map +1 -0
  119. package/dist/server/server/agent/providers/seaagent-health-probe.js +49 -0
  120. package/dist/server/server/agent/providers/seaagent-health-probe.js.map +1 -0
  121. package/dist/server/server/agent/providers/seawork-models.d.ts +8 -0
  122. package/dist/server/server/agent/providers/seawork-models.d.ts.map +1 -1
  123. package/dist/server/server/agent/providers/seawork-models.js +118 -74
  124. package/dist/server/server/agent/providers/seawork-models.js.map +1 -1
  125. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +2 -2
  126. package/dist/server/server/agent/timeline-projection.d.ts +5 -1
  127. package/dist/server/server/agent/timeline-projection.d.ts.map +1 -1
  128. package/dist/server/server/agent/timeline-projection.js +20 -4
  129. package/dist/server/server/agent/timeline-projection.js.map +1 -1
  130. package/dist/server/server/agent-attention-policy.d.ts +1 -0
  131. package/dist/server/server/agent-attention-policy.d.ts.map +1 -1
  132. package/dist/server/server/agent-attention-policy.js +6 -0
  133. package/dist/server/server/agent-attention-policy.js.map +1 -1
  134. package/dist/server/server/allowed-hosts.d.ts +13 -0
  135. package/dist/server/server/allowed-hosts.d.ts.map +1 -1
  136. package/dist/server/server/allowed-hosts.js +33 -0
  137. package/dist/server/server/allowed-hosts.js.map +1 -1
  138. package/dist/server/server/bootstrap.d.ts +2 -0
  139. package/dist/server/server/bootstrap.d.ts.map +1 -1
  140. package/dist/server/server/bootstrap.js +200 -14
  141. package/dist/server/server/bootstrap.js.map +1 -1
  142. package/dist/server/server/browser-extension-token.d.ts +23 -0
  143. package/dist/server/server/browser-extension-token.d.ts.map +1 -0
  144. package/dist/server/server/browser-extension-token.js +114 -0
  145. package/dist/server/server/browser-extension-token.js.map +1 -0
  146. package/dist/server/server/bug-report-handler.d.ts +7 -1
  147. package/dist/server/server/bug-report-handler.d.ts.map +1 -1
  148. package/dist/server/server/bug-report-handler.js +73 -5
  149. package/dist/server/server/bug-report-handler.js.map +1 -1
  150. package/dist/server/server/bug-report-redact.d.ts +25 -1
  151. package/dist/server/server/bug-report-redact.d.ts.map +1 -1
  152. package/dist/server/server/bug-report-redact.js +42 -5
  153. package/dist/server/server/bug-report-redact.js.map +1 -1
  154. package/dist/server/server/config.d.ts +1 -0
  155. package/dist/server/server/config.d.ts.map +1 -1
  156. package/dist/server/server/config.js +51 -1
  157. package/dist/server/server/config.js.map +1 -1
  158. package/dist/server/server/crash-report.d.ts.map +1 -1
  159. package/dist/server/server/crash-report.js +18 -0
  160. package/dist/server/server/crash-report.js.map +1 -1
  161. package/dist/server/server/daemon-config-store.d.ts.map +1 -1
  162. package/dist/server/server/daemon-config-store.js +94 -3
  163. package/dist/server/server/daemon-config-store.js.map +1 -1
  164. package/dist/server/server/disk-full.d.ts +4 -0
  165. package/dist/server/server/disk-full.d.ts.map +1 -0
  166. package/dist/server/server/disk-full.js +46 -0
  167. package/dist/server/server/disk-full.js.map +1 -0
  168. package/dist/server/server/exports.d.ts +3 -2
  169. package/dist/server/server/exports.d.ts.map +1 -1
  170. package/dist/server/server/exports.js +2 -1
  171. package/dist/server/server/exports.js.map +1 -1
  172. package/dist/server/server/git-forge/github-client.d.ts +18 -0
  173. package/dist/server/server/git-forge/github-client.d.ts.map +1 -1
  174. package/dist/server/server/git-forge/github-client.js +88 -0
  175. package/dist/server/server/git-forge/github-client.js.map +1 -1
  176. package/dist/server/server/git-forge/parse-remote.d.ts +2 -0
  177. package/dist/server/server/git-forge/parse-remote.d.ts.map +1 -1
  178. package/dist/server/server/git-forge/parse-remote.js +71 -6
  179. package/dist/server/server/git-forge/parse-remote.js.map +1 -1
  180. package/dist/server/server/git-forge/service.d.ts +87 -0
  181. package/dist/server/server/git-forge/service.d.ts.map +1 -1
  182. package/dist/server/server/git-forge/service.js +198 -4
  183. package/dist/server/server/git-forge/service.js.map +1 -1
  184. package/dist/server/server/index.js +72 -0
  185. package/dist/server/server/index.js.map +1 -1
  186. package/dist/server/server/integrations/wecom-openclaw/bridge.d.ts +88 -0
  187. package/dist/server/server/integrations/wecom-openclaw/bridge.d.ts.map +1 -0
  188. package/dist/server/server/integrations/wecom-openclaw/bridge.js +1229 -0
  189. package/dist/server/server/integrations/wecom-openclaw/bridge.js.map +1 -0
  190. package/dist/server/server/integrations/wecom-openclaw/qr.d.ts +38 -0
  191. package/dist/server/server/integrations/wecom-openclaw/qr.d.ts.map +1 -0
  192. package/dist/server/server/integrations/wecom-openclaw/qr.js +101 -0
  193. package/dist/server/server/integrations/wecom-openclaw/qr.js.map +1 -0
  194. package/dist/server/server/integrations/wecom-openclaw/workspace.d.ts +5 -0
  195. package/dist/server/server/integrations/wecom-openclaw/workspace.d.ts.map +1 -0
  196. package/dist/server/server/integrations/wecom-openclaw/workspace.js +40 -0
  197. package/dist/server/server/integrations/wecom-openclaw/workspace.js.map +1 -0
  198. package/dist/server/server/latency-proxy.d.ts.map +1 -1
  199. package/dist/server/server/latency-proxy.js +45 -5
  200. package/dist/server/server/latency-proxy.js.map +1 -1
  201. package/dist/server/server/library/codex-skill-discovery.d.ts +9 -0
  202. package/dist/server/server/library/codex-skill-discovery.d.ts.map +1 -0
  203. package/dist/server/server/library/codex-skill-discovery.js +49 -0
  204. package/dist/server/server/library/codex-skill-discovery.js.map +1 -0
  205. package/dist/server/server/library/hub-install.d.ts +79 -0
  206. package/dist/server/server/library/hub-install.d.ts.map +1 -0
  207. package/dist/server/server/library/hub-install.js +263 -0
  208. package/dist/server/server/library/hub-install.js.map +1 -0
  209. package/dist/server/server/library/hub-test-run.d.ts +81 -0
  210. package/dist/server/server/library/hub-test-run.d.ts.map +1 -0
  211. package/dist/server/server/library/hub-test-run.js +237 -0
  212. package/dist/server/server/library/hub-test-run.js.map +1 -0
  213. package/dist/server/server/library/library-import.d.ts +27 -0
  214. package/dist/server/server/library/library-import.d.ts.map +1 -0
  215. package/dist/server/server/library/library-import.js +227 -0
  216. package/dist/server/server/library/library-import.js.map +1 -0
  217. package/dist/server/server/library/library-injection.d.ts +16 -0
  218. package/dist/server/server/library/library-injection.d.ts.map +1 -0
  219. package/dist/server/server/library/library-injection.js +49 -0
  220. package/dist/server/server/library/library-injection.js.map +1 -0
  221. package/dist/server/server/library/library-rpc.d.ts +73 -0
  222. package/dist/server/server/library/library-rpc.d.ts.map +1 -0
  223. package/dist/server/server/library/library-rpc.js +239 -0
  224. package/dist/server/server/library/library-rpc.js.map +1 -0
  225. package/dist/server/server/library/library-store.d.ts +35 -0
  226. package/dist/server/server/library/library-store.d.ts.map +1 -0
  227. package/dist/server/server/library/library-store.js +169 -0
  228. package/dist/server/server/library/library-store.js.map +1 -0
  229. package/dist/server/server/library/library-sync.d.ts +46 -0
  230. package/dist/server/server/library/library-sync.d.ts.map +1 -0
  231. package/dist/server/server/library/library-sync.js +235 -0
  232. package/dist/server/server/library/library-sync.js.map +1 -0
  233. package/dist/server/server/library/library-types.d.ts +756 -0
  234. package/dist/server/server/library/library-types.d.ts.map +1 -0
  235. package/dist/server/server/library/library-types.js +99 -0
  236. package/dist/server/server/library/library-types.js.map +1 -0
  237. package/dist/server/server/library/worktree-dev.d.ts +14 -0
  238. package/dist/server/server/library/worktree-dev.d.ts.map +1 -0
  239. package/dist/server/server/library/worktree-dev.js +24 -0
  240. package/dist/server/server/library/worktree-dev.js.map +1 -0
  241. package/dist/server/server/log-stream-error.d.ts +2 -0
  242. package/dist/server/server/log-stream-error.d.ts.map +1 -0
  243. package/dist/server/server/log-stream-error.js +33 -0
  244. package/dist/server/server/log-stream-error.js.map +1 -0
  245. package/dist/server/server/logger.d.ts +1 -0
  246. package/dist/server/server/logger.d.ts.map +1 -1
  247. package/dist/server/server/logger.js +32 -0
  248. package/dist/server/server/logger.js.map +1 -1
  249. package/dist/server/server/loop/rpc-schemas.d.ts +96 -96
  250. package/dist/server/server/loop-service.d.ts +18 -18
  251. package/dist/server/server/messages.d.ts +4 -1
  252. package/dist/server/server/messages.d.ts.map +1 -1
  253. package/dist/server/server/messages.js +40 -2
  254. package/dist/server/server/messages.js.map +1 -1
  255. package/dist/server/server/node-pty-error.d.ts +2 -0
  256. package/dist/server/server/node-pty-error.d.ts.map +1 -0
  257. package/dist/server/server/node-pty-error.js +19 -0
  258. package/dist/server/server/node-pty-error.js.map +1 -0
  259. package/dist/server/server/persisted-config.d.ts +219 -135
  260. package/dist/server/server/persisted-config.d.ts.map +1 -1
  261. package/dist/server/server/persisted-config.js +35 -1
  262. package/dist/server/server/persisted-config.js.map +1 -1
  263. package/dist/server/server/port-in-use.d.ts +4 -0
  264. package/dist/server/server/port-in-use.d.ts.map +1 -0
  265. package/dist/server/server/port-in-use.js +35 -0
  266. package/dist/server/server/port-in-use.js.map +1 -0
  267. package/dist/server/server/provider-runtime-settings-mask.d.ts +7 -0
  268. package/dist/server/server/provider-runtime-settings-mask.d.ts.map +1 -0
  269. package/dist/server/server/provider-runtime-settings-mask.js +65 -0
  270. package/dist/server/server/provider-runtime-settings-mask.js.map +1 -0
  271. package/dist/server/server/sac/auth.d.ts +12 -0
  272. package/dist/server/server/sac/auth.d.ts.map +1 -1
  273. package/dist/server/server/sac/auth.js +19 -1
  274. package/dist/server/server/sac/auth.js.map +1 -1
  275. package/dist/server/server/sac/index.d.ts +2 -2
  276. package/dist/server/server/sac/index.d.ts.map +1 -1
  277. package/dist/server/server/sac/index.js +2 -2
  278. package/dist/server/server/sac/index.js.map +1 -1
  279. package/dist/server/server/sac/poll.d.ts +2 -0
  280. package/dist/server/server/sac/poll.d.ts.map +1 -1
  281. package/dist/server/server/sac/poll.js +7 -2
  282. package/dist/server/server/sac/poll.js.map +1 -1
  283. package/dist/server/server/schedule/cron.d.ts.map +1 -1
  284. package/dist/server/server/schedule/cron.js +6 -6
  285. package/dist/server/server/schedule/cron.js.map +1 -1
  286. package/dist/server/server/schedule/rpc-schemas.d.ts +895 -0
  287. package/dist/server/server/schedule/rpc-schemas.d.ts.map +1 -1
  288. package/dist/server/server/schedule/rpc-schemas.js +34 -0
  289. package/dist/server/server/schedule/rpc-schemas.js.map +1 -1
  290. package/dist/server/server/schedule/service.d.ts +5 -1
  291. package/dist/server/server/schedule/service.d.ts.map +1 -1
  292. package/dist/server/server/schedule/service.js +97 -14
  293. package/dist/server/server/schedule/service.js.map +1 -1
  294. package/dist/server/server/schedule/types.d.ts +19 -0
  295. package/dist/server/server/schedule/types.d.ts.map +1 -1
  296. package/dist/server/server/schedule/types.js +1 -0
  297. package/dist/server/server/schedule/types.js.map +1 -1
  298. package/dist/server/server/session.d.ts +83 -2
  299. package/dist/server/server/session.d.ts.map +1 -1
  300. package/dist/server/server/session.js +895 -82
  301. package/dist/server/server/session.js.map +1 -1
  302. package/dist/server/server/speech/native-runtime-guard.d.ts +1 -0
  303. package/dist/server/server/speech/native-runtime-guard.d.ts.map +1 -1
  304. package/dist/server/server/speech/native-runtime-guard.js +10 -4
  305. package/dist/server/server/speech/native-runtime-guard.js.map +1 -1
  306. package/dist/server/server/websocket-server.d.ts +6 -1
  307. package/dist/server/server/websocket-server.d.ts.map +1 -1
  308. package/dist/server/server/websocket-server.js +79 -7
  309. package/dist/server/server/websocket-server.js.map +1 -1
  310. package/dist/server/server/workspace-git-service.d.ts +2 -1
  311. package/dist/server/server/workspace-git-service.d.ts.map +1 -1
  312. package/dist/server/server/workspace-git-service.js +7 -3
  313. package/dist/server/server/workspace-git-service.js.map +1 -1
  314. package/dist/server/server/workspace-registry-model.d.ts +1 -0
  315. package/dist/server/server/workspace-registry-model.d.ts.map +1 -1
  316. package/dist/server/server/workspace-registry-model.js +18 -0
  317. package/dist/server/server/workspace-registry-model.js.map +1 -1
  318. package/dist/server/server/worktree-session.d.ts +3 -3
  319. package/dist/server/server/worktree-session.d.ts.map +1 -1
  320. package/dist/server/server/worktree-session.js +1 -3
  321. package/dist/server/server/worktree-session.js.map +1 -1
  322. package/dist/server/shared/messages.d.ts +59658 -21927
  323. package/dist/server/shared/messages.d.ts.map +1 -1
  324. package/dist/server/shared/messages.js +531 -3
  325. package/dist/server/shared/messages.js.map +1 -1
  326. package/dist/server/shared/provider-runtime-settings.d.ts +87 -0
  327. package/dist/server/shared/provider-runtime-settings.d.ts.map +1 -0
  328. package/dist/server/shared/provider-runtime-settings.js +33 -0
  329. package/dist/server/shared/provider-runtime-settings.js.map +1 -0
  330. package/dist/server/terminal/terminal.d.ts +9 -0
  331. package/dist/server/terminal/terminal.d.ts.map +1 -1
  332. package/dist/server/terminal/terminal.js +100 -3
  333. package/dist/server/terminal/terminal.js.map +1 -1
  334. package/dist/server/utils/checkout-git.d.ts +23 -1
  335. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  336. package/dist/server/utils/checkout-git.js +182 -21
  337. package/dist/server/utils/checkout-git.js.map +1 -1
  338. package/dist/server/utils/directory-suggestions.d.ts.map +1 -1
  339. package/dist/server/utils/directory-suggestions.js +57 -9
  340. package/dist/server/utils/directory-suggestions.js.map +1 -1
  341. package/dist/src/server/bug-report-redact.js +42 -5
  342. package/dist/src/server/bug-report-redact.js.map +1 -1
  343. package/dist/src/server/crash-report.js +18 -0
  344. package/dist/src/server/crash-report.js.map +1 -1
  345. package/dist/src/server/speech/native-runtime-guard.js +177 -0
  346. package/dist/src/server/speech/native-runtime-guard.js.map +1 -0
  347. package/dist/src/server/speech/speech-types.js +8 -0
  348. package/dist/src/server/speech/speech-types.js.map +1 -0
  349. package/package.json +16 -4
@@ -0,0 +1,502 @@
1
+ import os from "node:os";
2
+ import path from "node:path";
3
+ import { spawnProcess } from "../../../utils/spawn.js";
4
+ import { applyProviderEnv } from "../provider-launch-config.js";
5
+ import { verifyCommandAvailable } from "./codex-binary-resolver.js";
6
+ import { SEAAGENT_PROVIDER } from "./seaagent/constants.js";
7
+ import { mapSeaAgentEvent } from "./seaagent/event-mapper.js";
8
+ import { SeaAgentRpcClient } from "./seaagent/rpc-client.js";
9
+ import { selectSeaAgentBinary } from "./seaagent-binary-resolver.js";
10
+ import { probeSeaAgentBinary } from "./seaagent-health-probe.js";
11
+ import { getAllSeaworkModelsForProvider } from "./seawork-models.js";
12
+ import { buildSeaworkGatewayHeaders } from "./gateway-telemetry.js";
13
+ export { SEAAGENT_PROVIDER };
14
+ // How long an isAvailable() verdict stays cached. Short enough that installing
15
+ // the binary mid-session is picked up quickly, long enough to absorb the burst
16
+ // of lookups the draft-agent UI fires.
17
+ const AVAILABILITY_TTL_MS = 30000;
18
+ const SEAAGENT_CAPABILITIES = {
19
+ supportsStreaming: true,
20
+ supportsSessionPersistence: true,
21
+ supportsDynamicModes: false,
22
+ supportsMcpServers: false,
23
+ supportsReasoningStream: false,
24
+ supportsToolInvocations: true,
25
+ };
26
+ function readEnvString(env, key) {
27
+ const value = env[key];
28
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
29
+ }
30
+ function openAICompatibleBaseUrl(baseURL) {
31
+ const normalized = baseURL.replace(/\/+$/, "");
32
+ return normalized.endsWith("/v1") ? normalized : `${normalized}/v1`;
33
+ }
34
+ /** Resolve the gateway base URL + key from the provider launch environment. */
35
+ export function resolveSeaAgentGatewayCredentials(env) {
36
+ // LLM endpoint comes ONLY from SEAWORK_LLM_BASE_URL (auth.json base_url).
37
+ // OPENAI_BASE_URL is the desktop's image/SAC gateway and would 404 here.
38
+ const baseURL = readEnvString(env, "SEAWORK_LLM_BASE_URL");
39
+ const apiKey = readEnvString(env, "SEAWORK_API_KEY") ?? readEnvString(env, "OPENAI_API_KEY");
40
+ return {
41
+ baseURL: baseURL ? openAICompatibleBaseUrl(baseURL) : "",
42
+ apiKey: apiKey ?? "",
43
+ headers: buildSeaworkGatewayHeaders(SEAAGENT_PROVIDER),
44
+ };
45
+ }
46
+ /**
47
+ * Directory the seaagent conversation ledger is persisted under:
48
+ * `$SEAWORK_HOME/seaagent-sessions`. Kept inside SEAWORK_HOME so the jsonl
49
+ * never lands in the user's project directory and is wiped/managed with the
50
+ * rest of the daemon state.
51
+ */
52
+ function seaAgentSessionRoot() {
53
+ const home = process.env.SEAWORK_HOME ?? path.join(os.homedir(), ".seawork");
54
+ return path.join(home, "seaagent-sessions");
55
+ }
56
+ /**
57
+ * Extract a plain prompt string from the provider-agnostic prompt input.
58
+ * seaagent-server speaks plain text only — it has no image-block input on the
59
+ * wire. Silently dropping image blocks would hand the model a prompt that
60
+ * references attachments which aren't actually there, so this throws when the
61
+ * caller asks for image input. The caller (UI / structured generation) can
62
+ * then surface that to the user, fall back to a different provider, or drop
63
+ * the image deliberately.
64
+ */
65
+ function promptToText(prompt) {
66
+ if (typeof prompt === "string") {
67
+ return prompt;
68
+ }
69
+ const parts = [];
70
+ for (const block of prompt) {
71
+ if (block.type === "text") {
72
+ parts.push(block.text);
73
+ }
74
+ else if (block.type === "image") {
75
+ throw new Error("seaagent provider does not support image inputs; received an image content block");
76
+ }
77
+ else {
78
+ // Forward-compat: a future block type this provider doesn't know how
79
+ // to render is treated like an image — refuse instead of dropping.
80
+ throw new Error(`seaagent provider does not support content block type "${block.type}"`);
81
+ }
82
+ }
83
+ return parts.join("\n");
84
+ }
85
+ /** Join the text of every text part of a stored message. */
86
+ function extractMessageText(message) {
87
+ return (message.parts ?? [])
88
+ .filter((part) => part.type === "text" && typeof part.data?.text === "string")
89
+ .map((part) => part.data?.text ?? "")
90
+ .join("")
91
+ .trim();
92
+ }
93
+ export class SeaAgentClient {
94
+ constructor(logger, runtimeSettings) {
95
+ this.logger = logger;
96
+ this.runtimeSettings = runtimeSettings;
97
+ this.provider = SEAAGENT_PROVIDER;
98
+ this.capabilities = SEAAGENT_CAPABILITIES;
99
+ this.availabilityCache = null;
100
+ }
101
+ async createSession(config, launchContext) {
102
+ return this.openSession(config, null, launchContext);
103
+ }
104
+ async resumeSession(handle, overrides, launchContext) {
105
+ const cwd = overrides?.cwd ??
106
+ (typeof handle.metadata?.cwd === "string" ? handle.metadata.cwd : process.cwd());
107
+ const config = {
108
+ provider: SEAAGENT_PROVIDER,
109
+ cwd,
110
+ model: overrides?.model ?? handle.metadata?.model,
111
+ systemPrompt: overrides?.systemPrompt,
112
+ ...overrides,
113
+ };
114
+ return this.openSession(config, handle, launchContext);
115
+ }
116
+ async listModels(_options) {
117
+ return getAllSeaworkModelsForProvider(SEAAGENT_PROVIDER);
118
+ }
119
+ async listModes() {
120
+ return [];
121
+ }
122
+ async isAvailable() {
123
+ // Cache the verdict briefly: isAvailable() is called on every draft-agent
124
+ // feature lookup, and the UI fires those repeatedly while a user browses
125
+ // providers. Re-resolving the binary each time is wasteful.
126
+ const now = Date.now();
127
+ if (this.availabilityCache && now - this.availabilityCache.at < AVAILABILITY_TTL_MS) {
128
+ return this.availabilityCache.value;
129
+ }
130
+ let value = false;
131
+ const selection = await this.resolveBinary();
132
+ if (selection) {
133
+ // Mirror the daemon spawn gate (and codex's isAvailable): only verify the
134
+ // binary exists and is executable. Do NOT spawn it for a `--probe` — that
135
+ // cold-starts a Go process on every call. The real spawn in createSession
136
+ // surfaces a genuinely broken binary; getDiagnostic() runs the full probe.
137
+ value = await verifyCommandAvailable(selection.binary, { spawnEnv: this.spawnEnv() });
138
+ }
139
+ this.availabilityCache = { value, at: now };
140
+ return value;
141
+ }
142
+ async getDiagnostic() {
143
+ const selection = await this.resolveBinary();
144
+ if (!selection) {
145
+ return { diagnostic: "seaagent-server binary not found (PATH / override / install-state)" };
146
+ }
147
+ // Pass wrapper args through so the probe runs the same argv the daemon
148
+ // would actually spawn, not just `docker --probe` for docker wrappers.
149
+ const probe = await probeSeaAgentBinary(selection.binary, {
150
+ args: selection.args,
151
+ spawnEnv: this.spawnEnv(),
152
+ });
153
+ const { baseURL } = resolveSeaAgentGatewayCredentials(this.spawnEnv());
154
+ const argvDisplay = selection.args.length > 0
155
+ ? `${selection.binary} ${selection.args.join(" ")}`
156
+ : selection.binary;
157
+ const lines = [
158
+ `Binary: ${argvDisplay} (${selection.source})`,
159
+ `Health: ${probe.ok ? "ok" : `failed — ${probe.reason}`}`,
160
+ `Gateway: ${baseURL || "(unset)"}`,
161
+ ];
162
+ return { diagnostic: lines.join("\n") };
163
+ }
164
+ spawnEnv() {
165
+ return applyProviderEnv(process.env, this.runtimeSettings);
166
+ }
167
+ async resolveBinary() {
168
+ return selectSeaAgentBinary(this.runtimeSettings, {
169
+ logger: this.logger,
170
+ spawnEnv: this.spawnEnv(),
171
+ });
172
+ }
173
+ async openSession(config, resumeHandle, launchContext) {
174
+ const selection = await this.resolveBinary();
175
+ if (!selection) {
176
+ throw new Error("seaagent-server binary not found");
177
+ }
178
+ const env = { ...this.spawnEnv(), ...(launchContext?.env ?? {}) };
179
+ // Use selection.args so a user-provided wrapper like
180
+ // `command.replace: ["docker", "run", "--rm", ..., "seaagent-server"]`
181
+ // propagates its trailing argv through to spawn.
182
+ const child = spawnProcess(selection.binary, selection.args, {
183
+ stdio: ["pipe", "pipe", "pipe"],
184
+ env,
185
+ });
186
+ const session = new SeaAgentSession(config, resumeHandle, this.logger, child, resolveSeaAgentGatewayCredentials(env));
187
+ await session.connect();
188
+ return session;
189
+ }
190
+ }
191
+ export class SeaAgentSession {
192
+ constructor(config, resumeHandle, logger, child, gatewayCredentials = resolveSeaAgentGatewayCredentials(process.env)) {
193
+ this.config = config;
194
+ this.resumeHandle = resumeHandle;
195
+ this.logger = logger;
196
+ this.child = child;
197
+ this.gatewayCredentials = gatewayCredentials;
198
+ this.provider = SEAAGENT_PROVIDER;
199
+ this.capabilities = SEAAGENT_CAPABILITIES;
200
+ this.subscribers = new Set();
201
+ this.history = [];
202
+ // Timeline items reconstructed from the persisted jsonl ledger on resume.
203
+ // streamHistory() replays these once so a restarted daemon shows past turns.
204
+ this.persistedHistory = [];
205
+ this.sessionId = null;
206
+ this.turnCounter = 0;
207
+ this.model = config.model ?? null;
208
+ this.rpc = new SeaAgentRpcClient(child, logger);
209
+ this.rpc.setNotificationHandler((method, params) => this.onNotification(method, params));
210
+ }
211
+ get id() {
212
+ return this.sessionId;
213
+ }
214
+ /** Handshake: initialize the agent, then open or resume a session. */
215
+ async connect() {
216
+ const { baseURL, apiKey, headers } = this.gatewayCredentials;
217
+ await this.rpc.request("initialize", {
218
+ model: this.model ?? "",
219
+ protocol: "chat_completions",
220
+ baseURL,
221
+ apiKey,
222
+ headers,
223
+ systemPrompt: this.config.systemPrompt ?? "",
224
+ workspaceDir: this.config.cwd,
225
+ // Persist the conversation ledger under SEAWORK_HOME, not the user's
226
+ // project directory — so session jsonl never pollutes their repo.
227
+ sessionRootDir: seaAgentSessionRoot(),
228
+ agentName: this.config.title ?? "SeaAgent",
229
+ // Internal agents (title generation etc.) are ephemeral — the Go side
230
+ // skips session persistence for them so they leave no jsonl behind.
231
+ internal: this.config.internal ?? false,
232
+ });
233
+ if (this.resumeHandle?.sessionId) {
234
+ const result = (await this.rpc.request("resumeSession", {
235
+ sessionId: this.resumeHandle.sessionId,
236
+ cwd: this.config.cwd,
237
+ }));
238
+ this.sessionId = result.sessionId;
239
+ // Reload the persisted conversation so the UI timeline survives a
240
+ // daemon restart. The agent loop only restores history into its own
241
+ // run state at turn time, so the host must fetch it explicitly here.
242
+ await this.loadPersistedHistory();
243
+ }
244
+ else {
245
+ const result = (await this.rpc.request("newSession", {
246
+ cwd: this.config.cwd,
247
+ }));
248
+ this.sessionId = result.sessionId;
249
+ }
250
+ this.emit({ type: "thread_started", sessionId: this.sessionId, provider: SEAAGENT_PROVIDER });
251
+ }
252
+ async run(prompt, options) {
253
+ // Subscribe BEFORE startTurn. seaagent-server pushes text_delta and
254
+ // turn-terminal events as stdout notifications, which can race the
255
+ // runTurn JSON-RPC response — and turnComplete in particular often
256
+ // arrives before the response on short turns. Registering the listener
257
+ // after the await would silently drop those, hanging run() forever or
258
+ // returning empty finalText. We pin the turnId from turn_started
259
+ // (emitted synchronously by startTurn before its await) so we only
260
+ // observe events for our own turn even if other turns are in flight.
261
+ const finalTexts = [];
262
+ const timeline = [];
263
+ return new Promise((resolve, reject) => {
264
+ let ourTurnId = null;
265
+ let settled = false;
266
+ const finalize = (outcome) => {
267
+ if (settled)
268
+ return;
269
+ settled = true;
270
+ unsubscribe();
271
+ if (outcome.ok) {
272
+ resolve({
273
+ sessionId: this.sessionId ?? "",
274
+ finalText: finalTexts.join(""),
275
+ timeline,
276
+ canceled: outcome.canceled,
277
+ });
278
+ }
279
+ else {
280
+ reject(outcome.error);
281
+ }
282
+ };
283
+ const unsubscribe = this.subscribe((event) => {
284
+ if (settled)
285
+ return;
286
+ const eventTurnId = event.turnId;
287
+ // Lock onto the first turn_started we see — it identifies our turn.
288
+ if (event.type === "turn_started" && ourTurnId === null) {
289
+ ourTurnId = eventTurnId ?? null;
290
+ return;
291
+ }
292
+ // Once locked, ignore other turns' events entirely.
293
+ if (ourTurnId !== null && eventTurnId !== ourTurnId)
294
+ return;
295
+ if (event.type === "timeline") {
296
+ timeline.push(event.item);
297
+ if (event.item.type === "assistant_message") {
298
+ // Coalesce streaming deltas — matches appendAssistantMessage
299
+ // in app/src/types/stream.ts.
300
+ finalTexts.push(event.item.text);
301
+ }
302
+ return;
303
+ }
304
+ if (event.type === "turn_completed") {
305
+ finalize({ ok: true, canceled: false });
306
+ return;
307
+ }
308
+ if (event.type === "turn_canceled") {
309
+ finalize({ ok: true, canceled: true });
310
+ return;
311
+ }
312
+ if (event.type === "turn_failed") {
313
+ finalize({ ok: false, error: new Error(event.error || "seaagent turn failed") });
314
+ return;
315
+ }
316
+ });
317
+ // Kick the turn off only after the subscriber is wired up. startTurn
318
+ // emits turn_started synchronously before its await, so by the time
319
+ // its returned Promise settles we've already pinned ourTurnId.
320
+ this.startTurn(prompt, options).catch((err) => {
321
+ finalize({ ok: false, error: err instanceof Error ? err : new Error(String(err)) });
322
+ });
323
+ });
324
+ }
325
+ async startTurn(prompt, _options) {
326
+ if (!this.sessionId) {
327
+ throw new Error("seaagent session is not connected");
328
+ }
329
+ // Validate the prompt BEFORE emitting turn_started. If we emitted first
330
+ // and then threw on an image block, the AgentManager would have already
331
+ // told the latency tracker a turn was in flight; the subsequent
332
+ // turn_failed it synthesizes from the rejection has no turnId, so
333
+ // noteTurnEnded() never clears the in-flight entry — leaking the turn
334
+ // bookkeeping and skewing latency attribution on every subsequent turn.
335
+ const serializedPrompt = promptToText(prompt);
336
+ const turnId = `t${++this.turnCounter}`;
337
+ this.emit({ type: "turn_started", provider: SEAAGENT_PROVIDER, turnId });
338
+ await this.rpc.request("runTurn", {
339
+ sessionId: this.sessionId,
340
+ turnId,
341
+ prompt: serializedPrompt,
342
+ });
343
+ return { turnId };
344
+ }
345
+ subscribe(callback) {
346
+ this.subscribers.add(callback);
347
+ return () => this.subscribers.delete(callback);
348
+ }
349
+ async *streamHistory() {
350
+ // Persisted turns first (oldest → newest), then any events from the
351
+ // current process. persistedHistory is drained so a second call doesn't
352
+ // double up.
353
+ if (this.persistedHistory.length > 0) {
354
+ const items = this.persistedHistory;
355
+ this.persistedHistory = [];
356
+ for (const item of items) {
357
+ yield { type: "timeline", provider: SEAAGENT_PROVIDER, item };
358
+ }
359
+ }
360
+ for (const event of this.history) {
361
+ yield event;
362
+ }
363
+ }
364
+ /**
365
+ * Fetch the persisted conversation from seaagent-server and convert each
366
+ * stored message into a timeline item. seaagent persists messages as
367
+ * `{ role, parts: [{ type, data }] }`; only text parts are reconstructed
368
+ * here (tool-call replay is left for a later pass).
369
+ */
370
+ async loadPersistedHistory() {
371
+ if (!this.sessionId) {
372
+ return;
373
+ }
374
+ try {
375
+ const result = (await this.rpc.request("getHistory", {
376
+ sessionId: this.sessionId,
377
+ }));
378
+ const messages = result.messages ?? [];
379
+ const items = [];
380
+ for (const message of messages) {
381
+ const text = extractMessageText(message);
382
+ if (!text) {
383
+ continue;
384
+ }
385
+ if (message.role === "user") {
386
+ items.push({ type: "user_message", text });
387
+ }
388
+ else if (message.role === "assistant") {
389
+ items.push({ type: "assistant_message", text });
390
+ }
391
+ }
392
+ this.persistedHistory = items;
393
+ }
394
+ catch (error) {
395
+ this.logger.warn({ error }, "seaagent: failed to load persisted history");
396
+ }
397
+ }
398
+ async getRuntimeInfo() {
399
+ return {
400
+ provider: SEAAGENT_PROVIDER,
401
+ sessionId: this.sessionId,
402
+ model: this.model,
403
+ };
404
+ }
405
+ async getAvailableModes() {
406
+ return [];
407
+ }
408
+ async getCurrentMode() {
409
+ return null;
410
+ }
411
+ async setMode(_modeId) {
412
+ // seaagent has no dynamic modes.
413
+ }
414
+ getPendingPermissions() {
415
+ return [];
416
+ }
417
+ async respondToPermission() {
418
+ // seaagent runs without an interactive permission gate.
419
+ }
420
+ describePersistence() {
421
+ if (!this.sessionId) {
422
+ return null;
423
+ }
424
+ return {
425
+ provider: SEAAGENT_PROVIDER,
426
+ sessionId: this.sessionId,
427
+ nativeHandle: this.sessionId,
428
+ metadata: {
429
+ cwd: this.config.cwd,
430
+ ...(this.model ? { model: this.model } : {}),
431
+ },
432
+ };
433
+ }
434
+ async interrupt() {
435
+ if (!this.sessionId) {
436
+ return;
437
+ }
438
+ await this.rpc.request("interrupt", { sessionId: this.sessionId });
439
+ }
440
+ async close() {
441
+ try {
442
+ await this.rpc.request("shutdown", {}, 5000);
443
+ }
444
+ catch (error) {
445
+ this.logger.warn({ error }, "seaagent-server shutdown request failed");
446
+ }
447
+ if (!this.child.killed) {
448
+ this.child.kill("SIGTERM");
449
+ }
450
+ }
451
+ getRecentStderrTail() {
452
+ return this.rpc.getRecentStderr() || undefined;
453
+ }
454
+ onNotification(method, params) {
455
+ if (method === "event") {
456
+ const payload = params;
457
+ const mapped = mapSeaAgentEvent(payload.event, payload.turnId);
458
+ for (const event of mapped) {
459
+ this.emit(event);
460
+ }
461
+ return;
462
+ }
463
+ if (method === "turnComplete") {
464
+ const payload = params;
465
+ if (payload.status === "failed") {
466
+ this.emit({
467
+ type: "turn_failed",
468
+ provider: SEAAGENT_PROVIDER,
469
+ error: "turn failed",
470
+ turnId: payload.turnId,
471
+ });
472
+ }
473
+ else if (payload.status === "interrupted") {
474
+ this.emit({
475
+ type: "turn_canceled",
476
+ provider: SEAAGENT_PROVIDER,
477
+ reason: "interrupted",
478
+ turnId: payload.turnId,
479
+ });
480
+ }
481
+ else {
482
+ this.emit({
483
+ type: "turn_completed",
484
+ provider: SEAAGENT_PROVIDER,
485
+ turnId: payload.turnId,
486
+ });
487
+ }
488
+ }
489
+ }
490
+ emit(event) {
491
+ this.history.push(event);
492
+ for (const subscriber of this.subscribers) {
493
+ try {
494
+ subscriber(event);
495
+ }
496
+ catch (error) {
497
+ this.logger.warn({ error }, "seaagent subscriber threw");
498
+ }
499
+ }
500
+ }
501
+ }
502
+ //# sourceMappingURL=seaagent-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seaagent-agent.js","sourceRoot":"","sources":["../../../../../src/server/agent/providers/seaagent-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Logger } from "pino";
2
+ import type { ProviderRuntimeSettings } from "../provider-launch-config.js";
3
+ export interface SeaAgentBinarySelection {
4
+ binary: string;
5
+ args: string[];
6
+ source: "command-override" | "bundled" | "install-state" | "path";
7
+ }
8
+ export interface SelectSeaAgentOptions {
9
+ logger?: Logger;
10
+ env?: NodeJS.ProcessEnv;
11
+ spawnEnv?: NodeJS.ProcessEnv;
12
+ }
13
+ /**
14
+ * Resolve the seaagent-server binary, honoring a `command.replace` override
15
+ * before falling back to recorded install state and PATH.
16
+ */
17
+ export declare function selectSeaAgentBinary(runtimeSettings?: ProviderRuntimeSettings, options?: SelectSeaAgentOptions): Promise<SeaAgentBinarySelection | null>;
18
+ //# sourceMappingURL=seaagent-binary-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seaagent-binary-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/server/agent/providers/seaagent-binary-resolver.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAI5E,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IAKf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,eAAe,GAAG,MAAM,CAAC;CACnE;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,eAAe,CAAC,EAAE,uBAAuB,EACzC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAiCzC"}
@@ -0,0 +1,46 @@
1
+ // Selector for the `seaagent-server` binary. Unlike codex/claude, seaagent-server
2
+ // is a Seawork-shipped helper, so the resolution order favors an explicit
3
+ // override, then the desktop-bundled binary, then a recorded path, then PATH.
4
+ //
5
+ // 1. User override `agents.providers.seaagent.command` (mode=replace).
6
+ // 2. SEAWORK_SEAAGENT_BINARY env — the binary bundled into the desktop app
7
+ // under Contents/Resources/bin, injected by the desktop when it spawns
8
+ // the daemon. This is the normal production path.
9
+ // 3. Seawork-recorded install path.
10
+ // 4. `seaagent-server` on PATH (dev / manual installs).
11
+ import { existsSync } from "node:fs";
12
+ import { findExecutable } from "../../../utils/executable.js";
13
+ import { readAgentInstallEntry } from "../install-state.js";
14
+ const BINARY_NAME = "seaagent-server";
15
+ /**
16
+ * Resolve the seaagent-server binary, honoring a `command.replace` override
17
+ * before falling back to recorded install state and PATH.
18
+ */
19
+ export async function selectSeaAgentBinary(runtimeSettings, options = {}) {
20
+ const { logger, env, spawnEnv } = options;
21
+ const command = runtimeSettings?.command;
22
+ if (command?.mode === "replace" && command.argv.length > 0) {
23
+ return {
24
+ binary: command.argv[0],
25
+ args: command.argv.slice(1),
26
+ source: "command-override",
27
+ };
28
+ }
29
+ // Desktop injects this when spawning the daemon, pointing at the binary
30
+ // bundled into the app under Contents/Resources/bin.
31
+ const bundled = (env ?? process.env).SEAWORK_SEAAGENT_BINARY?.trim();
32
+ if (bundled && existsSync(bundled)) {
33
+ return { binary: bundled, args: [], source: "bundled" };
34
+ }
35
+ const recorded = readAgentInstallEntry("seaagent", env);
36
+ if (recorded?.binary) {
37
+ return { binary: recorded.binary, args: [], source: "install-state" };
38
+ }
39
+ const onPath = await findExecutable(BINARY_NAME, { env: spawnEnv ?? env });
40
+ if (onPath) {
41
+ return { binary: onPath, args: [], source: "path" };
42
+ }
43
+ logger?.warn("seaagent-server binary not found (override, bundled, install-state, PATH all empty)");
44
+ return null;
45
+ }
46
+ //# sourceMappingURL=seaagent-binary-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seaagent-binary-resolver.js","sourceRoot":"","sources":["../../../../../src/server/agent/providers/seaagent-binary-resolver.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,0EAA0E;AAC1E,8EAA8E;AAC9E,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,4EAA4E;AAC5E,uDAAuD;AACvD,sCAAsC;AACtC,0DAA0D;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAkBtC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,eAAyC,EACzC,UAAiC,EAAE;IAEnC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE1C,MAAM,OAAO,GAAG,eAAe,EAAE,OAAO,CAAC;IACzC,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,kBAAkB;SAC3B,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,qDAAqD;IACrD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,IAAI,EAAE,CAAC;IACrE,IAAI,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACxE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC;IAC3E,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,EAAE,IAAI,CACV,qFAAqF,CACtF,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface SeaAgentHealthResult {
2
+ ok: boolean;
3
+ reason?: string;
4
+ }
5
+ export interface SeaAgentHealthOptions {
6
+ timeoutMs?: number;
7
+ spawnEnv?: NodeJS.ProcessEnv;
8
+ args?: readonly string[];
9
+ }
10
+ export declare function probeSeaAgentBinary(candidatePath: string, options?: SeaAgentHealthOptions): Promise<SeaAgentHealthResult>;
11
+ //# sourceMappingURL=seaagent-health-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seaagent-health-probe.d.ts","sourceRoot":"","sources":["../../../../../src/server/agent/providers/seaagent-health-probe.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAK7B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CA+C/B"}