@seawork/cli 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 (358) hide show
  1. package/bin/seawork +3 -0
  2. package/dist/classify.d.ts +19 -0
  3. package/dist/classify.d.ts.map +1 -0
  4. package/dist/classify.js +49 -0
  5. package/dist/classify.js.map +1 -0
  6. package/dist/cli.d.ts +3 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +103 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/commands/agent/archive.d.ts +18 -0
  11. package/dist/commands/agent/archive.d.ts.map +1 -0
  12. package/dist/commands/agent/archive.js +102 -0
  13. package/dist/commands/agent/archive.js.map +1 -0
  14. package/dist/commands/agent/attach.d.ts +11 -0
  15. package/dist/commands/agent/attach.d.ts.map +1 -0
  16. package/dist/commands/agent/attach.js +158 -0
  17. package/dist/commands/agent/attach.js.map +1 -0
  18. package/dist/commands/agent/delete.d.ts +15 -0
  19. package/dist/commands/agent/delete.d.ts.map +1 -0
  20. package/dist/commands/agent/delete.js +99 -0
  21. package/dist/commands/agent/delete.js.map +1 -0
  22. package/dist/commands/agent/index.d.ts +3 -0
  23. package/dist/commands/agent/index.d.ts.map +1 -0
  24. package/dist/commands/agent/index.js +46 -0
  25. package/dist/commands/agent/index.js.map +1 -0
  26. package/dist/commands/agent/inspect.d.ts +15 -0
  27. package/dist/commands/agent/inspect.d.ts.map +1 -0
  28. package/dist/commands/agent/inspect.js +207 -0
  29. package/dist/commands/agent/inspect.js.map +1 -0
  30. package/dist/commands/agent/logs.d.ts +16 -0
  31. package/dist/commands/agent/logs.d.ts.map +1 -0
  32. package/dist/commands/agent/logs.js +172 -0
  33. package/dist/commands/agent/logs.js.map +1 -0
  34. package/dist/commands/agent/ls.d.ts +38 -0
  35. package/dist/commands/agent/ls.d.ts.map +1 -0
  36. package/dist/commands/agent/ls.js +191 -0
  37. package/dist/commands/agent/ls.js.map +1 -0
  38. package/dist/commands/agent/mode.d.ts +18 -0
  39. package/dist/commands/agent/mode.d.ts.map +1 -0
  40. package/dist/commands/agent/mode.js +100 -0
  41. package/dist/commands/agent/mode.js.map +1 -0
  42. package/dist/commands/agent/reload.d.ts +15 -0
  43. package/dist/commands/agent/reload.d.ts.map +1 -0
  44. package/dist/commands/agent/reload.js +75 -0
  45. package/dist/commands/agent/reload.js.map +1 -0
  46. package/dist/commands/agent/run.d.ts +47 -0
  47. package/dist/commands/agent/run.d.ts.map +1 -0
  48. package/dist/commands/agent/run.js +431 -0
  49. package/dist/commands/agent/run.js.map +1 -0
  50. package/dist/commands/agent/send.d.ts +19 -0
  51. package/dist/commands/agent/send.d.ts.map +1 -0
  52. package/dist/commands/agent/send.js +217 -0
  53. package/dist/commands/agent/send.js.map +1 -0
  54. package/dist/commands/agent/stop.d.ts +17 -0
  55. package/dist/commands/agent/stop.d.ts.map +1 -0
  56. package/dist/commands/agent/stop.js +107 -0
  57. package/dist/commands/agent/stop.js.map +1 -0
  58. package/dist/commands/agent/update.d.ts +18 -0
  59. package/dist/commands/agent/update.d.ts.map +1 -0
  60. package/dist/commands/agent/update.js +139 -0
  61. package/dist/commands/agent/update.js.map +1 -0
  62. package/dist/commands/agent/wait.d.ts +17 -0
  63. package/dist/commands/agent/wait.d.ts.map +1 -0
  64. package/dist/commands/agent/wait.js +164 -0
  65. package/dist/commands/agent/wait.js.map +1 -0
  66. package/dist/commands/chat/create.d.ts +9 -0
  67. package/dist/commands/chat/create.d.ts.map +1 -0
  68. package/dist/commands/chat/create.js +23 -0
  69. package/dist/commands/chat/create.js.map +1 -0
  70. package/dist/commands/chat/delete.d.ts +6 -0
  71. package/dist/commands/chat/delete.d.ts.map +1 -0
  72. package/dist/commands/chat/delete.js +20 -0
  73. package/dist/commands/chat/delete.js.map +1 -0
  74. package/dist/commands/chat/index.d.ts +3 -0
  75. package/dist/commands/chat/index.d.ts.map +1 -0
  76. package/dist/commands/chat/index.js +47 -0
  77. package/dist/commands/chat/index.js.map +1 -0
  78. package/dist/commands/chat/inspect.d.ts +6 -0
  79. package/dist/commands/chat/inspect.d.ts.map +1 -0
  80. package/dist/commands/chat/inspect.js +20 -0
  81. package/dist/commands/chat/inspect.js.map +1 -0
  82. package/dist/commands/chat/ls.d.ts +6 -0
  83. package/dist/commands/chat/ls.d.ts.map +1 -0
  84. package/dist/commands/chat/ls.js +20 -0
  85. package/dist/commands/chat/ls.js.map +1 -0
  86. package/dist/commands/chat/post.d.ts +9 -0
  87. package/dist/commands/chat/post.d.ts.map +1 -0
  88. package/dist/commands/chat/post.js +28 -0
  89. package/dist/commands/chat/post.js.map +1 -0
  90. package/dist/commands/chat/read.d.ts +11 -0
  91. package/dist/commands/chat/read.d.ts.map +1 -0
  92. package/dist/commands/chat/read.js +40 -0
  93. package/dist/commands/chat/read.js.map +1 -0
  94. package/dist/commands/chat/schema.d.ts +36 -0
  95. package/dist/commands/chat/schema.d.ts.map +1 -0
  96. package/dist/commands/chat/schema.js +81 -0
  97. package/dist/commands/chat/schema.js.map +1 -0
  98. package/dist/commands/chat/shared.d.ts +16 -0
  99. package/dist/commands/chat/shared.d.ts.map +1 -0
  100. package/dist/commands/chat/shared.js +108 -0
  101. package/dist/commands/chat/shared.js.map +1 -0
  102. package/dist/commands/chat/wait.d.ts +9 -0
  103. package/dist/commands/chat/wait.d.ts.map +1 -0
  104. package/dist/commands/chat/wait.js +30 -0
  105. package/dist/commands/chat/wait.js.map +1 -0
  106. package/dist/commands/daemon/index.d.ts +3 -0
  107. package/dist/commands/daemon/index.d.ts.map +1 -0
  108. package/dist/commands/daemon/index.js +34 -0
  109. package/dist/commands/daemon/index.js.map +1 -0
  110. package/dist/commands/daemon/local-daemon.d.ts +54 -0
  111. package/dist/commands/daemon/local-daemon.d.ts.map +1 -0
  112. package/dist/commands/daemon/local-daemon.js +400 -0
  113. package/dist/commands/daemon/local-daemon.js.map +1 -0
  114. package/dist/commands/daemon/pair.d.ts +9 -0
  115. package/dist/commands/daemon/pair.d.ts.map +1 -0
  116. package/dist/commands/daemon/pair.js +42 -0
  117. package/dist/commands/daemon/pair.js.map +1 -0
  118. package/dist/commands/daemon/restart.d.ts +12 -0
  119. package/dist/commands/daemon/restart.d.ts.map +1 -0
  120. package/dist/commands/daemon/restart.js +98 -0
  121. package/dist/commands/daemon/restart.js.map +1 -0
  122. package/dist/commands/daemon/runtime-toolchain.d.ts +6 -0
  123. package/dist/commands/daemon/runtime-toolchain.d.ts.map +1 -0
  124. package/dist/commands/daemon/runtime-toolchain.js +102 -0
  125. package/dist/commands/daemon/runtime-toolchain.js.map +1 -0
  126. package/dist/commands/daemon/start.d.ts +6 -0
  127. package/dist/commands/daemon/start.d.ts.map +1 -0
  128. package/dist/commands/daemon/start.js +49 -0
  129. package/dist/commands/daemon/start.js.map +1 -0
  130. package/dist/commands/daemon/status.d.ts +10 -0
  131. package/dist/commands/daemon/status.d.ts.map +1 -0
  132. package/dist/commands/daemon/status.js +269 -0
  133. package/dist/commands/daemon/status.js.map +1 -0
  134. package/dist/commands/daemon/stop.d.ts +12 -0
  135. package/dist/commands/daemon/stop.d.ts.map +1 -0
  136. package/dist/commands/daemon/stop.js +56 -0
  137. package/dist/commands/daemon/stop.js.map +1 -0
  138. package/dist/commands/loop/index.d.ts +3 -0
  139. package/dist/commands/loop/index.d.ts.map +1 -0
  140. package/dist/commands/loop/index.js +18 -0
  141. package/dist/commands/loop/index.js.map +1 -0
  142. package/dist/commands/loop/inspect.d.ts +13 -0
  143. package/dist/commands/loop/inspect.d.ts.map +1 -0
  144. package/dist/commands/loop/inspect.js +100 -0
  145. package/dist/commands/loop/inspect.js.map +1 -0
  146. package/dist/commands/loop/logs.d.ts +8 -0
  147. package/dist/commands/loop/logs.d.ts.map +1 -0
  148. package/dist/commands/loop/logs.js +69 -0
  149. package/dist/commands/loop/logs.js.map +1 -0
  150. package/dist/commands/loop/ls.d.ts +18 -0
  151. package/dist/commands/loop/ls.d.ts.map +1 -0
  152. package/dist/commands/loop/ls.js +62 -0
  153. package/dist/commands/loop/ls.js.map +1 -0
  154. package/dist/commands/loop/run.d.ts +26 -0
  155. package/dist/commands/loop/run.d.ts.map +1 -0
  156. package/dist/commands/loop/run.js +116 -0
  157. package/dist/commands/loop/run.js.map +1 -0
  158. package/dist/commands/loop/stop.d.ts +15 -0
  159. package/dist/commands/loop/stop.d.ts.map +1 -0
  160. package/dist/commands/loop/stop.js +56 -0
  161. package/dist/commands/loop/stop.js.map +1 -0
  162. package/dist/commands/loop/types.d.ts +134 -0
  163. package/dist/commands/loop/types.d.ts.map +1 -0
  164. package/dist/commands/loop/types.js +2 -0
  165. package/dist/commands/loop/types.js.map +1 -0
  166. package/dist/commands/onboard.d.ts +10 -0
  167. package/dist/commands/onboard.d.ts.map +1 -0
  168. package/dist/commands/onboard.js +374 -0
  169. package/dist/commands/onboard.js.map +1 -0
  170. package/dist/commands/open.d.ts +2 -0
  171. package/dist/commands/open.d.ts.map +1 -0
  172. package/dist/commands/open.js +82 -0
  173. package/dist/commands/open.js.map +1 -0
  174. package/dist/commands/permit/allow.d.ts +20 -0
  175. package/dist/commands/permit/allow.d.ts.map +1 -0
  176. package/dist/commands/permit/allow.js +134 -0
  177. package/dist/commands/permit/allow.js.map +1 -0
  178. package/dist/commands/permit/deny.d.ts +12 -0
  179. package/dist/commands/permit/deny.d.ts.map +1 -0
  180. package/dist/commands/permit/deny.js +106 -0
  181. package/dist/commands/permit/deny.js.map +1 -0
  182. package/dist/commands/permit/index.d.ts +3 -0
  183. package/dist/commands/permit/index.d.ts.map +1 -0
  184. package/dist/commands/permit/index.js +27 -0
  185. package/dist/commands/permit/index.js.map +1 -0
  186. package/dist/commands/permit/ls.d.ts +18 -0
  187. package/dist/commands/permit/ls.d.ts.map +1 -0
  188. package/dist/commands/permit/ls.js +66 -0
  189. package/dist/commands/permit/ls.js.map +1 -0
  190. package/dist/commands/provider/index.d.ts +3 -0
  191. package/dist/commands/provider/index.d.ts.map +1 -0
  192. package/dist/commands/provider/index.js +16 -0
  193. package/dist/commands/provider/index.js.map +1 -0
  194. package/dist/commands/provider/ls.d.ts +17 -0
  195. package/dist/commands/provider/ls.d.ts.map +1 -0
  196. package/dist/commands/provider/ls.js +38 -0
  197. package/dist/commands/provider/ls.js.map +1 -0
  198. package/dist/commands/provider/models.d.ts +20 -0
  199. package/dist/commands/provider/models.d.ts.map +1 -0
  200. package/dist/commands/provider/models.js +53 -0
  201. package/dist/commands/provider/models.js.map +1 -0
  202. package/dist/commands/schedule/create.d.ts +13 -0
  203. package/dist/commands/schedule/create.d.ts.map +1 -0
  204. package/dist/commands/schedule/create.js +32 -0
  205. package/dist/commands/schedule/create.js.map +1 -0
  206. package/dist/commands/schedule/delete.d.ts +10 -0
  207. package/dist/commands/schedule/delete.d.ts.map +1 -0
  208. package/dist/commands/schedule/delete.js +32 -0
  209. package/dist/commands/schedule/delete.js.map +1 -0
  210. package/dist/commands/schedule/index.d.ts +3 -0
  211. package/dist/commands/schedule/index.d.ts.map +1 -0
  212. package/dist/commands/schedule/index.js +37 -0
  213. package/dist/commands/schedule/index.js.map +1 -0
  214. package/dist/commands/schedule/inspect.d.ts +6 -0
  215. package/dist/commands/schedule/inspect.d.ts.map +1 -0
  216. package/dist/commands/schedule/inspect.js +24 -0
  217. package/dist/commands/schedule/inspect.js.map +1 -0
  218. package/dist/commands/schedule/logs.d.ts +6 -0
  219. package/dist/commands/schedule/logs.d.ts.map +1 -0
  220. package/dist/commands/schedule/logs.js +23 -0
  221. package/dist/commands/schedule/logs.js.map +1 -0
  222. package/dist/commands/schedule/ls.d.ts +5 -0
  223. package/dist/commands/schedule/ls.d.ts.map +1 -0
  224. package/dist/commands/schedule/ls.js +23 -0
  225. package/dist/commands/schedule/ls.js.map +1 -0
  226. package/dist/commands/schedule/pause.d.ts +5 -0
  227. package/dist/commands/schedule/pause.d.ts.map +1 -0
  228. package/dist/commands/schedule/pause.js +23 -0
  229. package/dist/commands/schedule/pause.js.map +1 -0
  230. package/dist/commands/schedule/resume.d.ts +5 -0
  231. package/dist/commands/schedule/resume.d.ts.map +1 -0
  232. package/dist/commands/schedule/resume.js +23 -0
  233. package/dist/commands/schedule/resume.js.map +1 -0
  234. package/dist/commands/schedule/schema.d.ts +21 -0
  235. package/dist/commands/schedule/schema.d.ts.map +1 -0
  236. package/dist/commands/schedule/schema.js +67 -0
  237. package/dist/commands/schedule/schema.js.map +1 -0
  238. package/dist/commands/schedule/shared.d.ts +33 -0
  239. package/dist/commands/schedule/shared.d.ts.map +1 -0
  240. package/dist/commands/schedule/shared.js +148 -0
  241. package/dist/commands/schedule/shared.js.map +1 -0
  242. package/dist/commands/schedule/types.d.ts +137 -0
  243. package/dist/commands/schedule/types.d.ts.map +1 -0
  244. package/dist/commands/schedule/types.js +2 -0
  245. package/dist/commands/schedule/types.js.map +1 -0
  246. package/dist/commands/speech/index.d.ts +3 -0
  247. package/dist/commands/speech/index.d.ts.map +1 -0
  248. package/dist/commands/speech/index.js +5 -0
  249. package/dist/commands/speech/index.js.map +1 -0
  250. package/dist/commands/terminal/capture.d.ts +10 -0
  251. package/dist/commands/terminal/capture.d.ts.map +1 -0
  252. package/dist/commands/terminal/capture.js +68 -0
  253. package/dist/commands/terminal/capture.js.map +1 -0
  254. package/dist/commands/terminal/create.d.ts +10 -0
  255. package/dist/commands/terminal/create.d.ts.map +1 -0
  256. package/dist/commands/terminal/create.js +28 -0
  257. package/dist/commands/terminal/create.js.map +1 -0
  258. package/dist/commands/terminal/index.d.ts +3 -0
  259. package/dist/commands/terminal/index.d.ts.map +1 -0
  260. package/dist/commands/terminal/index.js +43 -0
  261. package/dist/commands/terminal/index.js.map +1 -0
  262. package/dist/commands/terminal/kill.d.ts +6 -0
  263. package/dist/commands/terminal/kill.d.ts.map +1 -0
  264. package/dist/commands/terminal/kill.js +36 -0
  265. package/dist/commands/terminal/kill.js.map +1 -0
  266. package/dist/commands/terminal/ls.d.ts +10 -0
  267. package/dist/commands/terminal/ls.d.ts.map +1 -0
  268. package/dist/commands/terminal/ls.js +21 -0
  269. package/dist/commands/terminal/ls.js.map +1 -0
  270. package/dist/commands/terminal/schema.d.ts +18 -0
  271. package/dist/commands/terminal/schema.d.ts.map +1 -0
  272. package/dist/commands/terminal/schema.js +23 -0
  273. package/dist/commands/terminal/schema.js.map +1 -0
  274. package/dist/commands/terminal/send-keys.d.ts +7 -0
  275. package/dist/commands/terminal/send-keys.d.ts.map +1 -0
  276. package/dist/commands/terminal/send-keys.js +76 -0
  277. package/dist/commands/terminal/send-keys.js.map +1 -0
  278. package/dist/commands/terminal/shared.d.ts +12 -0
  279. package/dist/commands/terminal/shared.d.ts.map +1 -0
  280. package/dist/commands/terminal/shared.js +61 -0
  281. package/dist/commands/terminal/shared.js.map +1 -0
  282. package/dist/commands/worktree/archive.d.ts +16 -0
  283. package/dist/commands/worktree/archive.d.ts.map +1 -0
  284. package/dist/commands/worktree/archive.js +99 -0
  285. package/dist/commands/worktree/archive.js.map +1 -0
  286. package/dist/commands/worktree/index.d.ts +3 -0
  287. package/dist/commands/worktree/index.d.ts.map +1 -0
  288. package/dist/commands/worktree/index.js +15 -0
  289. package/dist/commands/worktree/index.js.map +1 -0
  290. package/dist/commands/worktree/ls.d.ts +19 -0
  291. package/dist/commands/worktree/ls.d.ts.map +1 -0
  292. package/dist/commands/worktree/ls.js +97 -0
  293. package/dist/commands/worktree/ls.js.map +1 -0
  294. package/dist/index.d.ts +2 -0
  295. package/dist/index.d.ts.map +1 -0
  296. package/dist/index.js +24 -0
  297. package/dist/index.js.map +1 -0
  298. package/dist/output/index.d.ts +45 -0
  299. package/dist/output/index.d.ts.map +1 -0
  300. package/dist/output/index.js +47 -0
  301. package/dist/output/index.js.map +1 -0
  302. package/dist/output/json.d.ts +11 -0
  303. package/dist/output/json.d.ts.map +1 -0
  304. package/dist/output/json.js +37 -0
  305. package/dist/output/json.js.map +1 -0
  306. package/dist/output/quiet.d.ts +9 -0
  307. package/dist/output/quiet.d.ts.map +1 -0
  308. package/dist/output/quiet.js +22 -0
  309. package/dist/output/quiet.js.map +1 -0
  310. package/dist/output/render.d.ts +15 -0
  311. package/dist/output/render.d.ts.map +1 -0
  312. package/dist/output/render.js +83 -0
  313. package/dist/output/render.js.map +1 -0
  314. package/dist/output/table.d.ts +13 -0
  315. package/dist/output/table.d.ts.map +1 -0
  316. package/dist/output/table.js +135 -0
  317. package/dist/output/table.js.map +1 -0
  318. package/dist/output/types.d.ts +73 -0
  319. package/dist/output/types.d.ts.map +1 -0
  320. package/dist/output/types.js +8 -0
  321. package/dist/output/types.js.map +1 -0
  322. package/dist/output/with-output.d.ts +37 -0
  323. package/dist/output/with-output.d.ts.map +1 -0
  324. package/dist/output/with-output.js +87 -0
  325. package/dist/output/with-output.js.map +1 -0
  326. package/dist/output/yaml.d.ts +11 -0
  327. package/dist/output/yaml.d.ts.map +1 -0
  328. package/dist/output/yaml.js +38 -0
  329. package/dist/output/yaml.js.map +1 -0
  330. package/dist/utils/client-id.d.ts +2 -0
  331. package/dist/utils/client-id.d.ts.map +1 -0
  332. package/dist/utils/client-id.js +37 -0
  333. package/dist/utils/client-id.js.map +1 -0
  334. package/dist/utils/client.d.ts +47 -0
  335. package/dist/utils/client.d.ts.map +1 -0
  336. package/dist/utils/client.js +230 -0
  337. package/dist/utils/client.js.map +1 -0
  338. package/dist/utils/command-options.d.ts +6 -0
  339. package/dist/utils/command-options.d.ts.map +1 -0
  340. package/dist/utils/command-options.js +17 -0
  341. package/dist/utils/command-options.js.map +1 -0
  342. package/dist/utils/duration.d.ts +7 -0
  343. package/dist/utils/duration.d.ts.map +1 -0
  344. package/dist/utils/duration.js +38 -0
  345. package/dist/utils/duration.js.map +1 -0
  346. package/dist/utils/errors.d.ts +5 -0
  347. package/dist/utils/errors.d.ts.map +1 -0
  348. package/dist/utils/errors.js +10 -0
  349. package/dist/utils/errors.js.map +1 -0
  350. package/dist/utils/paths.d.ts +12 -0
  351. package/dist/utils/paths.d.ts.map +1 -0
  352. package/dist/utils/paths.js +22 -0
  353. package/dist/utils/paths.js.map +1 -0
  354. package/dist/utils/timeline.d.ts +8 -0
  355. package/dist/utils/timeline.d.ts.map +1 -0
  356. package/dist/utils/timeline.js +9 -0
  357. package/dist/utils/timeline.js.map +1 -0
  358. package/package.json +42 -0
@@ -0,0 +1,134 @@
1
+ export type LoopStatus = "running" | "succeeded" | "failed" | "stopped";
2
+ export interface LoopLogEntry {
3
+ seq: number;
4
+ timestamp: string;
5
+ iteration: number | null;
6
+ source: "loop" | "worker" | "verifier" | "verify-check";
7
+ level: "info" | "error";
8
+ text: string;
9
+ }
10
+ export interface LoopVerifyCheckResult {
11
+ command: string;
12
+ exitCode: number;
13
+ passed: boolean;
14
+ stdout: string;
15
+ stderr: string;
16
+ startedAt: string;
17
+ completedAt: string;
18
+ }
19
+ export interface LoopVerifyPromptResult {
20
+ passed: boolean;
21
+ reason: string;
22
+ verifierAgentId: string | null;
23
+ startedAt: string;
24
+ completedAt: string;
25
+ }
26
+ export interface LoopIterationRecord {
27
+ index: number;
28
+ workerAgentId: string | null;
29
+ workerStartedAt: string;
30
+ workerCompletedAt: string | null;
31
+ verifierAgentId: string | null;
32
+ status: "running" | "succeeded" | "failed" | "stopped";
33
+ workerOutcome: "completed" | "failed" | "canceled" | null;
34
+ failureReason: string | null;
35
+ verifyChecks: LoopVerifyCheckResult[];
36
+ verifyPrompt: LoopVerifyPromptResult | null;
37
+ }
38
+ export interface LoopRecord {
39
+ id: string;
40
+ name: string | null;
41
+ prompt: string;
42
+ cwd: string;
43
+ provider: string;
44
+ model: string | null;
45
+ workerProvider: string | null;
46
+ workerModel: string | null;
47
+ verifierProvider: string | null;
48
+ verifierModel: string | null;
49
+ verifyPrompt: string | null;
50
+ verifyChecks: string[];
51
+ archive: boolean;
52
+ sleepMs: number;
53
+ maxIterations: number | null;
54
+ maxTimeMs: number | null;
55
+ status: LoopStatus;
56
+ createdAt: string;
57
+ updatedAt: string;
58
+ startedAt: string;
59
+ completedAt: string | null;
60
+ stopRequestedAt: string | null;
61
+ iterations: LoopIterationRecord[];
62
+ logs: LoopLogEntry[];
63
+ nextLogSeq: number;
64
+ activeIteration: number | null;
65
+ activeWorkerAgentId: string | null;
66
+ activeVerifierAgentId: string | null;
67
+ }
68
+ export interface LoopListItem {
69
+ id: string;
70
+ name: string | null;
71
+ status: LoopStatus;
72
+ cwd: string;
73
+ createdAt: string;
74
+ updatedAt: string;
75
+ activeIteration: number | null;
76
+ }
77
+ export interface LoopLogsResult {
78
+ loop: LoopRecord;
79
+ entries: LoopLogEntry[];
80
+ nextCursor: number;
81
+ }
82
+ export interface LoopRunPayload {
83
+ requestId: string;
84
+ loop: LoopRecord | null;
85
+ error: string | null;
86
+ }
87
+ export interface LoopListPayload {
88
+ requestId: string;
89
+ loops: LoopListItem[];
90
+ error: string | null;
91
+ }
92
+ export interface LoopInspectPayload {
93
+ requestId: string;
94
+ loop: LoopRecord | null;
95
+ error: string | null;
96
+ }
97
+ export interface LoopLogsPayload {
98
+ requestId: string;
99
+ loop: LoopRecord | null;
100
+ entries: LoopLogEntry[];
101
+ nextCursor: number;
102
+ error: string | null;
103
+ }
104
+ export interface LoopStopPayload {
105
+ requestId: string;
106
+ loop: LoopRecord | null;
107
+ error: string | null;
108
+ }
109
+ export interface LoopRunInput {
110
+ prompt: string;
111
+ cwd: string;
112
+ provider?: string;
113
+ model?: string;
114
+ workerProvider?: string;
115
+ workerModel?: string;
116
+ verifierProvider?: string;
117
+ verifierModel?: string;
118
+ verifyPrompt?: string;
119
+ verifyChecks?: string[];
120
+ archive?: boolean;
121
+ name?: string;
122
+ sleepMs?: number;
123
+ maxIterations?: number;
124
+ maxTimeMs?: number;
125
+ }
126
+ export interface LoopDaemonClient {
127
+ loopRun(input: LoopRunInput): Promise<LoopRunPayload>;
128
+ loopList(): Promise<LoopListPayload>;
129
+ loopInspect(id: string): Promise<LoopInspectPayload>;
130
+ loopLogs(id: string, afterSeq?: number): Promise<LoopLogsPayload>;
131
+ loopStop(id: string): Promise<LoopStopPayload>;
132
+ close(): Promise<void>;
133
+ }
134
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/loop/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/loop/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { Command } from "commander";
2
+ import { type DaemonStartOptions } from "./daemon/local-daemon.js";
3
+ interface OnboardOptions extends DaemonStartOptions {
4
+ timeout?: string;
5
+ voice?: "ask" | "enable" | "disable";
6
+ }
7
+ export declare function onboardCommand(): Command;
8
+ export declare function runOnboard(options: OnboardOptions): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=onboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAGlC,UAAU,cAAe,SAAQ,kBAAkB;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;CACtC;AA0QD,wBAAgB,cAAc,IAAI,OAAO,CAiBxC;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwJvE"}
@@ -0,0 +1,374 @@
1
+ import { cancel, confirm, intro, isCancel, log, note, outro, spinner } from "@clack/prompts";
2
+ import { Command } from "commander";
3
+ import { writeFileSync } from "node:fs";
4
+ import path from "node:path";
5
+ import { generateLocalPairingOffer, loadConfig, loadPersistedConfig, } from "@seawork/server";
6
+ import { resolveLocalSeaworkHome, resolveLocalDaemonState, resolveTcpHostFromListen, startLocalDaemonDetached, tailDaemonLog, } from "./daemon/local-daemon.js";
7
+ import { tryConnectToDaemon } from "../utils/client.js";
8
+ const DEFAULT_READY_TIMEOUT_MS = 10 * 60 * 1000;
9
+ class OnboardCancelledError extends Error {
10
+ }
11
+ const plainNoteFormat = (line) => line;
12
+ function renderNote(message, title) {
13
+ note(message, title, { format: plainNoteFormat });
14
+ }
15
+ function sleep(ms) {
16
+ return new Promise((resolve) => {
17
+ setTimeout(resolve, ms);
18
+ });
19
+ }
20
+ function parseTimeoutMs(raw) {
21
+ if (!raw || raw.trim().length === 0) {
22
+ return DEFAULT_READY_TIMEOUT_MS;
23
+ }
24
+ const seconds = Number(raw);
25
+ if (!Number.isFinite(seconds) || seconds <= 0) {
26
+ throw new Error(`Invalid timeout value: ${raw}`);
27
+ }
28
+ return Math.ceil(seconds * 1000);
29
+ }
30
+ function toCliOverrides(options) {
31
+ const cliOverrides = {};
32
+ if (options.listen) {
33
+ cliOverrides.listen = options.listen;
34
+ }
35
+ else if (options.port) {
36
+ cliOverrides.listen = `127.0.0.1:${options.port}`;
37
+ }
38
+ if (options.relay === false) {
39
+ cliOverrides.relayEnabled = false;
40
+ }
41
+ if (options.allowedHosts) {
42
+ const raw = options.allowedHosts.trim();
43
+ cliOverrides.allowedHosts =
44
+ raw.toLowerCase() === "true"
45
+ ? true
46
+ : raw
47
+ .split(",")
48
+ .map((host) => host.trim())
49
+ .filter(Boolean);
50
+ }
51
+ if (options.mcp === false) {
52
+ cliOverrides.mcpEnabled = false;
53
+ }
54
+ return cliOverrides;
55
+ }
56
+ function savePersistedConfig(seaworkHome, config) {
57
+ const configPath = path.join(seaworkHome, "config.json");
58
+ writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`);
59
+ }
60
+ function applyVoiceSelection(config, enabled) {
61
+ return {
62
+ ...config,
63
+ features: {
64
+ ...config.features,
65
+ dictation: {
66
+ ...config.features?.dictation,
67
+ enabled,
68
+ },
69
+ voiceMode: {
70
+ ...config.features?.voiceMode,
71
+ enabled,
72
+ },
73
+ },
74
+ };
75
+ }
76
+ function resolvePersistedVoiceSelection(config) {
77
+ const voiceModeEnabled = config.features?.voiceMode?.enabled;
78
+ if (typeof voiceModeEnabled === "boolean") {
79
+ return voiceModeEnabled;
80
+ }
81
+ const dictationEnabled = config.features?.dictation?.enabled;
82
+ if (typeof dictationEnabled === "boolean") {
83
+ return dictationEnabled;
84
+ }
85
+ return null;
86
+ }
87
+ async function resolveVoiceSelection(mode) {
88
+ if (mode === "enable") {
89
+ return true;
90
+ }
91
+ if (mode === "disable") {
92
+ return false;
93
+ }
94
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
95
+ log.message("Non-interactive terminal detected; voice setup defaults to disabled.");
96
+ return false;
97
+ }
98
+ const answer = await confirm({
99
+ message: "Enable voice features? (downloads local STT/TTS models in background)",
100
+ active: "Yes",
101
+ inactive: "No",
102
+ initialValue: false,
103
+ });
104
+ if (isCancel(answer)) {
105
+ throw new OnboardCancelledError("Onboarding cancelled by user.");
106
+ }
107
+ return answer;
108
+ }
109
+ function parseDownloadProgress(logTail) {
110
+ const lines = logTail.split("\n").filter(Boolean);
111
+ for (let index = lines.length - 1; index >= 0; index -= 1) {
112
+ const line = lines[index];
113
+ if (!line || !line.includes("Downloading model artifact")) {
114
+ continue;
115
+ }
116
+ const pctMatch = line.match(/"pct"\s*:\s*(\d{1,3})|\bpct[=:]\s*(\d{1,3})/);
117
+ const modelMatch = line.match(/"modelId"\s*:\s*"([^"]+)"|\bmodelId[=:]\s*"?([^\s",}]+)/);
118
+ return {
119
+ modelId: modelMatch?.[1] ?? modelMatch?.[2] ?? null,
120
+ pct: pctMatch ? Number(pctMatch[1] ?? pctMatch[2]) : null,
121
+ };
122
+ }
123
+ return null;
124
+ }
125
+ function renderProgressLine(progress) {
126
+ const modelSuffix = progress.modelId ? ` (${progress.modelId})` : "";
127
+ if (progress.pct === null) {
128
+ return `Downloading speech model${modelSuffix}...`;
129
+ }
130
+ return `Downloading speech model${modelSuffix}: ${progress.pct}%`;
131
+ }
132
+ async function waitForDaemonReady(args) {
133
+ const deadline = Date.now() + args.timeoutMs;
134
+ let lastStatus = "";
135
+ let lastPrintedAt = 0;
136
+ while (Date.now() < deadline) {
137
+ const state = resolveLocalDaemonState({ home: args.home });
138
+ const host = resolveTcpHostFromListen(state.listen);
139
+ if (state.running && host) {
140
+ const client = await tryConnectToDaemon({ host, timeout: 1200 });
141
+ if (client) {
142
+ try {
143
+ await client.fetchAgents();
144
+ return { listen: state.listen, host };
145
+ }
146
+ catch {
147
+ // Daemon process is alive but not API-ready yet.
148
+ }
149
+ finally {
150
+ await client.close().catch(() => { });
151
+ }
152
+ }
153
+ }
154
+ else if (state.running && !host) {
155
+ return { listen: state.listen, host: null };
156
+ }
157
+ const progress = parseDownloadProgress(tailDaemonLog(args.home, 120) ?? "");
158
+ const progressLine = progress ? renderProgressLine(progress) : null;
159
+ const statusMessage = progressLine ?? "Waiting for daemon to become ready...";
160
+ if (statusMessage !== lastStatus) {
161
+ args.onStatus?.(statusMessage);
162
+ lastStatus = statusMessage;
163
+ lastPrintedAt = Date.now();
164
+ }
165
+ else if (!args.onStatus && Date.now() - lastPrintedAt >= 3000) {
166
+ console.log(statusMessage);
167
+ lastPrintedAt = Date.now();
168
+ }
169
+ await sleep(200);
170
+ }
171
+ const recentLogs = tailDaemonLog(args.home, 60);
172
+ throw new Error([
173
+ `Timed out after ${Math.ceil(args.timeoutMs / 1000)}s waiting for daemon readiness.`,
174
+ recentLogs ? `Recent daemon logs:\n${recentLogs}` : null,
175
+ ]
176
+ .filter(Boolean)
177
+ .join("\n\n"));
178
+ }
179
+ function printNextSteps(pairingUrl, seaworkHome, richUi) {
180
+ const daemonLogPath = path.join(seaworkHome, "daemon.log");
181
+ const nextStepsLines = [
182
+ pairingUrl
183
+ ? "1. Open Seawork and scan the QR code above, or paste the pairing link."
184
+ : "1. Open Seawork and connect to your daemon.",
185
+ "2. Web app: https://app.seawork.ai",
186
+ "3. Desktop app: https://github.com/SeaVerseAI/seawork/releases/latest",
187
+ "4. Docs: https://seawork.ai/docs",
188
+ '5. Example: seawork run --output-schema schema.json "extract fields"',
189
+ ];
190
+ const quickReferenceLines = [
191
+ "1. seawork --help",
192
+ "2. seawork ls",
193
+ '3. seawork run "your prompt"',
194
+ "4. seawork status",
195
+ `5. Daemon logs: ${daemonLogPath}`,
196
+ ];
197
+ if (!richUi) {
198
+ console.log("");
199
+ console.log("Next steps:");
200
+ for (const line of nextStepsLines) {
201
+ console.log(line);
202
+ }
203
+ console.log("");
204
+ console.log("CLI quick reference:");
205
+ for (const line of quickReferenceLines) {
206
+ console.log(line);
207
+ }
208
+ return;
209
+ }
210
+ renderNote(nextStepsLines.join("\n"), "Next steps");
211
+ renderNote(quickReferenceLines.join("\n"), "CLI quick reference");
212
+ }
213
+ export function onboardCommand() {
214
+ return new Command("onboard")
215
+ .description("Run first-time setup, start daemon, and print pairing instructions")
216
+ .option("--listen <listen>", "Listen target (host:port, port, or unix socket path)")
217
+ .option("--port <port>", "Port to listen on (default: 6767)")
218
+ .option("--home <path>", "Seawork home directory (default: ~/.seawork)")
219
+ .option("--no-relay", "Disable relay connection")
220
+ .option("--no-mcp", "Disable the Agent MCP HTTP endpoint")
221
+ .option("--allowed-hosts <hosts>", 'Comma-separated Host allowlist values (example: "localhost,.example.com" or "true")')
222
+ .option("--timeout <seconds>", "Max time to wait for daemon readiness (default: 600)")
223
+ .option("--voice <mode>", "Voice setup mode: ask, enable, disable", "ask")
224
+ .action(async (options) => {
225
+ await runOnboard(options);
226
+ });
227
+ }
228
+ export async function runOnboard(options) {
229
+ const richUi = process.stdin.isTTY && process.stdout.isTTY;
230
+ if (richUi) {
231
+ intro("Welcome to Seawork");
232
+ }
233
+ if (options.listen && options.port) {
234
+ cancel("Cannot use --listen and --port together");
235
+ process.exit(1);
236
+ }
237
+ let timeoutMs = DEFAULT_READY_TIMEOUT_MS;
238
+ try {
239
+ timeoutMs = parseTimeoutMs(options.timeout);
240
+ }
241
+ catch (error) {
242
+ const message = error instanceof Error ? error.message : String(error);
243
+ cancel(message);
244
+ process.exit(1);
245
+ }
246
+ const seaworkHome = resolveLocalSeaworkHome(options.home);
247
+ if (richUi) {
248
+ renderNote(seaworkHome, "Seawork home");
249
+ }
250
+ let persisted = loadPersistedConfig(seaworkHome);
251
+ const persistedVoiceSelection = resolvePersistedVoiceSelection(persisted);
252
+ const shouldPrompt = options.voice === "ask" || options.voice === undefined;
253
+ let voiceEnabled;
254
+ try {
255
+ voiceEnabled =
256
+ shouldPrompt && persistedVoiceSelection !== null
257
+ ? persistedVoiceSelection
258
+ : await resolveVoiceSelection(options.voice);
259
+ }
260
+ catch (error) {
261
+ if (error instanceof OnboardCancelledError) {
262
+ cancel("Onboarding cancelled.");
263
+ process.exit(0);
264
+ return;
265
+ }
266
+ throw error;
267
+ }
268
+ if (shouldPrompt && persistedVoiceSelection !== null) {
269
+ log.message(`Using saved voice setup from config (${voiceEnabled ? "enabled" : "disabled"}).`);
270
+ }
271
+ persisted = applyVoiceSelection(persisted, voiceEnabled);
272
+ savePersistedConfig(seaworkHome, persisted);
273
+ const config = loadConfig(seaworkHome, { cli: toCliOverrides(options) });
274
+ const voiceStatus = voiceEnabled
275
+ ? "Voice features enabled. Local speech models will be downloaded automatically if missing."
276
+ : "Voice features disabled. Local speech models will not be downloaded.";
277
+ log.message(voiceStatus);
278
+ const stateBeforeStart = resolveLocalDaemonState({ home: options.home });
279
+ const startSpinner = richUi ? spinner() : null;
280
+ if (!stateBeforeStart.running) {
281
+ try {
282
+ if (startSpinner) {
283
+ startSpinner.start("Starting daemon...");
284
+ }
285
+ else {
286
+ log.message("Starting daemon...");
287
+ }
288
+ const startup = await startLocalDaemonDetached(options);
289
+ if (startSpinner) {
290
+ startSpinner.stop(`Daemon started (PID ${startup.pid ?? "unknown"})`);
291
+ }
292
+ else {
293
+ log.message(`Daemon started (PID ${startup.pid ?? "unknown"})`);
294
+ }
295
+ log.message(`Logs: ${startup.logPath}`);
296
+ }
297
+ catch (error) {
298
+ const message = error instanceof Error ? error.message : String(error);
299
+ if (startSpinner) {
300
+ startSpinner.error(message);
301
+ }
302
+ else {
303
+ log.error(message);
304
+ }
305
+ process.exit(1);
306
+ }
307
+ }
308
+ else {
309
+ log.message(`Daemon already running (PID ${stateBeforeStart.pidInfo?.pid ?? "unknown"}).`);
310
+ }
311
+ let readyState;
312
+ const readySpinner = richUi ? spinner() : null;
313
+ try {
314
+ if (readySpinner) {
315
+ readySpinner.start("Waiting for daemon to become ready...");
316
+ }
317
+ else {
318
+ log.message("Waiting for daemon to become ready...");
319
+ }
320
+ readyState = await waitForDaemonReady({
321
+ home: options.home ?? seaworkHome,
322
+ timeoutMs,
323
+ onStatus: readySpinner ? (message) => readySpinner.message(message) : undefined,
324
+ });
325
+ if (readySpinner) {
326
+ readySpinner.stop(`Daemon ready on ${readyState.listen}`);
327
+ }
328
+ else {
329
+ log.message(`Daemon ready on ${readyState.listen}`);
330
+ }
331
+ }
332
+ catch (error) {
333
+ const message = error instanceof Error ? error.message : String(error);
334
+ if (readySpinner) {
335
+ readySpinner.error(message);
336
+ }
337
+ else {
338
+ log.error(message);
339
+ }
340
+ process.exit(1);
341
+ return;
342
+ }
343
+ if (config.relayEnabled === false) {
344
+ log.warn("Relay is disabled; pairing offer is unavailable for this daemon.");
345
+ printNextSteps(null, seaworkHome, richUi);
346
+ if (richUi) {
347
+ outro("Seawork daemon is running.");
348
+ }
349
+ return;
350
+ }
351
+ const pairing = await generateLocalPairingOffer({
352
+ seaworkHome,
353
+ relayEnabled: config.relayEnabled,
354
+ relayEndpoint: config.relayEndpoint,
355
+ relayPublicEndpoint: config.relayPublicEndpoint,
356
+ appBaseUrl: config.appBaseUrl,
357
+ includeQr: true,
358
+ });
359
+ if (!pairing.url) {
360
+ log.warn("Relay pairing URL is unavailable for this daemon configuration.");
361
+ printNextSteps(null, seaworkHome, richUi);
362
+ if (richUi) {
363
+ outro("Seawork daemon is running.");
364
+ }
365
+ return;
366
+ }
367
+ renderNote(pairing.qr ?? "QR is unavailable in this terminal. Use the pairing link below.", "Scan to pair");
368
+ renderNote(pairing.url, "Pairing link");
369
+ printNextSteps(pairing.url, seaworkHome, richUi);
370
+ if (richUi) {
371
+ outro("Seawork is ready!");
372
+ }
373
+ }
374
+ //# sourceMappingURL=onboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function openDesktopWithProject(projectPath: string): Promise<void>;
2
+ //# sourceMappingURL=open.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAmEA,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B/E"}
@@ -0,0 +1,82 @@
1
+ import { existsSync } from "node:fs";
2
+ import { spawn } from "node:child_process";
3
+ import { homedir } from "node:os";
4
+ import path from "node:path";
5
+ function findDesktopApp() {
6
+ if (process.platform === "darwin") {
7
+ const candidates = [
8
+ "/Applications/Seawork.app",
9
+ path.join(homedir(), "Applications", "Seawork.app"),
10
+ ];
11
+ for (const candidate of candidates) {
12
+ if (existsSync(candidate)) {
13
+ return candidate;
14
+ }
15
+ }
16
+ return null;
17
+ }
18
+ if (process.platform === "linux") {
19
+ const candidates = [
20
+ "/usr/bin/Seawork",
21
+ "/opt/Seawork/Seawork",
22
+ path.join(homedir(), "Applications", "Seawork.AppImage"),
23
+ ];
24
+ for (const candidate of candidates) {
25
+ if (existsSync(candidate)) {
26
+ return candidate;
27
+ }
28
+ }
29
+ return null;
30
+ }
31
+ if (process.platform === "win32") {
32
+ const localAppData = process.env.LOCALAPPDATA;
33
+ if (!localAppData) {
34
+ return null;
35
+ }
36
+ const candidate = path.join(localAppData, "Programs", "Seawork", "Seawork.exe");
37
+ return existsSync(candidate) ? candidate : null;
38
+ }
39
+ return null;
40
+ }
41
+ function cleanEnvForDesktopLaunch() {
42
+ const env = { ...process.env };
43
+ // The CLI runs via ELECTRON_RUN_AS_NODE=1. On Linux/Windows the spawned
44
+ // desktop process inherits the env directly, so we must strip it or the
45
+ // desktop app would start as a bare Node process instead of Electron.
46
+ delete env.ELECTRON_RUN_AS_NODE;
47
+ return env;
48
+ }
49
+ function spawnDetached(command, args) {
50
+ spawn(command, args, {
51
+ detached: true,
52
+ stdio: "ignore",
53
+ env: cleanEnvForDesktopLaunch(),
54
+ }).unref();
55
+ }
56
+ export async function openDesktopWithProject(projectPath) {
57
+ try {
58
+ if (process.env.SEAWORK_DESKTOP_CLI === "1") {
59
+ throw new Error("Cannot open a desktop project while running in desktop CLI passthrough mode.");
60
+ }
61
+ const desktopApp = findDesktopApp();
62
+ if (!desktopApp) {
63
+ throw new Error("Seawork desktop app not found. Install it from https://github.com/SeaVerseAI/seawork/releases");
64
+ }
65
+ if (process.platform === "darwin") {
66
+ // -n forces a new instance even if the app is already running.
67
+ // The new instance hits requestSingleInstanceLock(), fails, and relays
68
+ // the argv to the first instance via the second-instance event.
69
+ // -g keeps the terminal in the foreground (better CLI UX).
70
+ // Without -n, macOS just activates the existing window and drops --args.
71
+ spawnDetached("open", ["-n", "-g", "-a", desktopApp, "--args", projectPath]);
72
+ return;
73
+ }
74
+ spawnDetached(desktopApp, [projectPath]);
75
+ }
76
+ catch (error) {
77
+ const message = error instanceof Error ? error.message : String(error);
78
+ process.stderr.write(`${message}\n`);
79
+ process.exitCode = 1;
80
+ }
81
+ }
82
+ //# sourceMappingURL=open.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"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"}