@cluesmith/codev 2.0.0-rc.7 → 2.0.0-rc.71

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 (456) hide show
  1. package/bin/af.js +2 -2
  2. package/bin/consult.js +1 -1
  3. package/bin/porch.js +6 -35
  4. package/dashboard/dist/assets/index-C7FtNK6Y.css +32 -0
  5. package/dashboard/dist/assets/index-CDAINZKT.js +131 -0
  6. package/dashboard/dist/assets/index-CDAINZKT.js.map +1 -0
  7. package/dashboard/dist/index.html +14 -0
  8. package/dist/agent-farm/cli.d.ts.map +1 -1
  9. package/dist/agent-farm/cli.js +173 -118
  10. package/dist/agent-farm/cli.js.map +1 -1
  11. package/dist/agent-farm/commands/architect.d.ts +3 -3
  12. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  13. package/dist/agent-farm/commands/architect.js +20 -147
  14. package/dist/agent-farm/commands/architect.js.map +1 -1
  15. package/dist/agent-farm/commands/attach.d.ts +13 -0
  16. package/dist/agent-farm/commands/attach.d.ts.map +1 -0
  17. package/dist/agent-farm/commands/attach.js +144 -0
  18. package/dist/agent-farm/commands/attach.js.map +1 -0
  19. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  20. package/dist/agent-farm/commands/cleanup.js +35 -19
  21. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  22. package/dist/agent-farm/commands/consult.d.ts +3 -4
  23. package/dist/agent-farm/commands/consult.d.ts.map +1 -1
  24. package/dist/agent-farm/commands/consult.js +27 -37
  25. package/dist/agent-farm/commands/consult.js.map +1 -1
  26. package/dist/agent-farm/commands/index.d.ts +2 -2
  27. package/dist/agent-farm/commands/index.d.ts.map +1 -1
  28. package/dist/agent-farm/commands/index.js +2 -2
  29. package/dist/agent-farm/commands/index.js.map +1 -1
  30. package/dist/agent-farm/commands/open.d.ts +4 -2
  31. package/dist/agent-farm/commands/open.d.ts.map +1 -1
  32. package/dist/agent-farm/commands/open.js +33 -83
  33. package/dist/agent-farm/commands/open.js.map +1 -1
  34. package/dist/agent-farm/commands/send.d.ts +1 -1
  35. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  36. package/dist/agent-farm/commands/send.js +60 -79
  37. package/dist/agent-farm/commands/send.js.map +1 -1
  38. package/dist/agent-farm/commands/shell.d.ts +15 -0
  39. package/dist/agent-farm/commands/shell.d.ts.map +1 -0
  40. package/dist/agent-farm/commands/shell.js +50 -0
  41. package/dist/agent-farm/commands/shell.js.map +1 -0
  42. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  43. package/dist/agent-farm/commands/spawn.js +597 -281
  44. package/dist/agent-farm/commands/spawn.js.map +1 -1
  45. package/dist/agent-farm/commands/start.d.ts +10 -20
  46. package/dist/agent-farm/commands/start.d.ts.map +1 -1
  47. package/dist/agent-farm/commands/start.js +45 -491
  48. package/dist/agent-farm/commands/start.js.map +1 -1
  49. package/dist/agent-farm/commands/status.d.ts +2 -0
  50. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  51. package/dist/agent-farm/commands/status.js +75 -24
  52. package/dist/agent-farm/commands/status.js.map +1 -1
  53. package/dist/agent-farm/commands/stop.d.ts +6 -0
  54. package/dist/agent-farm/commands/stop.d.ts.map +1 -1
  55. package/dist/agent-farm/commands/stop.js +49 -109
  56. package/dist/agent-farm/commands/stop.js.map +1 -1
  57. package/dist/agent-farm/commands/tower-cloud.d.ts +48 -0
  58. package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -0
  59. package/dist/agent-farm/commands/tower-cloud.js +329 -0
  60. package/dist/agent-farm/commands/tower-cloud.js.map +1 -0
  61. package/dist/agent-farm/commands/tower.d.ts +9 -0
  62. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  63. package/dist/agent-farm/commands/tower.js +59 -19
  64. package/dist/agent-farm/commands/tower.js.map +1 -1
  65. package/dist/agent-farm/db/index.d.ts +6 -2
  66. package/dist/agent-farm/db/index.d.ts.map +1 -1
  67. package/dist/agent-farm/db/index.js +246 -18
  68. package/dist/agent-farm/db/index.js.map +1 -1
  69. package/dist/agent-farm/db/migrate.d.ts +0 -4
  70. package/dist/agent-farm/db/migrate.d.ts.map +1 -1
  71. package/dist/agent-farm/db/migrate.js +6 -55
  72. package/dist/agent-farm/db/migrate.js.map +1 -1
  73. package/dist/agent-farm/db/schema.d.ts +3 -3
  74. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  75. package/dist/agent-farm/db/schema.js +25 -19
  76. package/dist/agent-farm/db/schema.js.map +1 -1
  77. package/dist/agent-farm/db/types.d.ts +3 -13
  78. package/dist/agent-farm/db/types.d.ts.map +1 -1
  79. package/dist/agent-farm/db/types.js +3 -11
  80. package/dist/agent-farm/db/types.js.map +1 -1
  81. package/dist/agent-farm/hq-connector.d.ts +2 -6
  82. package/dist/agent-farm/hq-connector.d.ts.map +1 -1
  83. package/dist/agent-farm/hq-connector.js +2 -17
  84. package/dist/agent-farm/hq-connector.js.map +1 -1
  85. package/dist/agent-farm/lib/cloud-config.d.ts +59 -0
  86. package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -0
  87. package/dist/agent-farm/lib/cloud-config.js +143 -0
  88. package/dist/agent-farm/lib/cloud-config.js.map +1 -0
  89. package/dist/agent-farm/lib/tower-client.d.ts +163 -0
  90. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
  91. package/dist/agent-farm/lib/tower-client.js +233 -0
  92. package/dist/agent-farm/lib/tower-client.js.map +1 -0
  93. package/dist/agent-farm/lib/tunnel-client.d.ts +117 -0
  94. package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -0
  95. package/dist/agent-farm/lib/tunnel-client.js +504 -0
  96. package/dist/agent-farm/lib/tunnel-client.js.map +1 -0
  97. package/dist/agent-farm/servers/tower-server.js +2653 -185
  98. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  99. package/dist/agent-farm/state.d.ts +6 -12
  100. package/dist/agent-farm/state.d.ts.map +1 -1
  101. package/dist/agent-farm/state.js +34 -49
  102. package/dist/agent-farm/state.js.map +1 -1
  103. package/dist/agent-farm/types.d.ts +49 -26
  104. package/dist/agent-farm/types.d.ts.map +1 -1
  105. package/dist/agent-farm/utils/config.d.ts +0 -5
  106. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  107. package/dist/agent-farm/utils/config.js +12 -44
  108. package/dist/agent-farm/utils/config.js.map +1 -1
  109. package/dist/agent-farm/utils/deps.d.ts.map +1 -1
  110. package/dist/agent-farm/utils/deps.js +0 -32
  111. package/dist/agent-farm/utils/deps.js.map +1 -1
  112. package/dist/agent-farm/utils/file-tabs.d.ts +27 -0
  113. package/dist/agent-farm/utils/file-tabs.d.ts.map +1 -0
  114. package/dist/agent-farm/utils/file-tabs.js +46 -0
  115. package/dist/agent-farm/utils/file-tabs.js.map +1 -0
  116. package/dist/agent-farm/utils/gate-status.d.ts +16 -0
  117. package/dist/agent-farm/utils/gate-status.d.ts.map +1 -0
  118. package/dist/agent-farm/utils/gate-status.js +79 -0
  119. package/dist/agent-farm/utils/gate-status.js.map +1 -0
  120. package/dist/agent-farm/utils/gate-watcher.d.ts +38 -0
  121. package/dist/agent-farm/utils/gate-watcher.d.ts.map +1 -0
  122. package/dist/agent-farm/utils/gate-watcher.js +122 -0
  123. package/dist/agent-farm/utils/gate-watcher.js.map +1 -0
  124. package/dist/agent-farm/utils/index.d.ts +0 -1
  125. package/dist/agent-farm/utils/index.d.ts.map +1 -1
  126. package/dist/agent-farm/utils/index.js +0 -1
  127. package/dist/agent-farm/utils/index.js.map +1 -1
  128. package/dist/agent-farm/utils/notifications.d.ts +30 -0
  129. package/dist/agent-farm/utils/notifications.d.ts.map +1 -0
  130. package/dist/agent-farm/utils/notifications.js +121 -0
  131. package/dist/agent-farm/utils/notifications.js.map +1 -0
  132. package/dist/agent-farm/utils/server-utils.d.ts +5 -5
  133. package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
  134. package/dist/agent-farm/utils/server-utils.js +5 -16
  135. package/dist/agent-farm/utils/server-utils.js.map +1 -1
  136. package/dist/agent-farm/utils/session.d.ts +32 -0
  137. package/dist/agent-farm/utils/session.d.ts.map +1 -0
  138. package/dist/agent-farm/utils/session.js +57 -0
  139. package/dist/agent-farm/utils/session.js.map +1 -0
  140. package/dist/agent-farm/utils/shell.d.ts +9 -22
  141. package/dist/agent-farm/utils/shell.d.ts.map +1 -1
  142. package/dist/agent-farm/utils/shell.js +34 -34
  143. package/dist/agent-farm/utils/shell.js.map +1 -1
  144. package/dist/cli.d.ts.map +1 -1
  145. package/dist/cli.js +11 -54
  146. package/dist/cli.js.map +1 -1
  147. package/dist/commands/adopt.d.ts.map +1 -1
  148. package/dist/commands/adopt.js +49 -4
  149. package/dist/commands/adopt.js.map +1 -1
  150. package/dist/commands/consult/index.d.ts +13 -2
  151. package/dist/commands/consult/index.d.ts.map +1 -1
  152. package/dist/commands/consult/index.js +245 -29
  153. package/dist/commands/consult/index.js.map +1 -1
  154. package/dist/commands/doctor.d.ts.map +1 -1
  155. package/dist/commands/doctor.js +96 -79
  156. package/dist/commands/doctor.js.map +1 -1
  157. package/dist/commands/init.d.ts.map +1 -1
  158. package/dist/commands/init.js +41 -2
  159. package/dist/commands/init.js.map +1 -1
  160. package/dist/commands/porch/build-counter.d.ts +5 -0
  161. package/dist/commands/porch/build-counter.d.ts.map +1 -0
  162. package/dist/commands/porch/build-counter.js +5 -0
  163. package/dist/commands/porch/build-counter.js.map +1 -0
  164. package/dist/commands/porch/checks.d.ts +17 -29
  165. package/dist/commands/porch/checks.d.ts.map +1 -1
  166. package/dist/commands/porch/checks.js +96 -144
  167. package/dist/commands/porch/checks.js.map +1 -1
  168. package/dist/commands/porch/index.d.ts +25 -43
  169. package/dist/commands/porch/index.d.ts.map +1 -1
  170. package/dist/commands/porch/index.js +463 -1116
  171. package/dist/commands/porch/index.js.map +1 -1
  172. package/dist/commands/porch/next.d.ts +22 -0
  173. package/dist/commands/porch/next.d.ts.map +1 -0
  174. package/dist/commands/porch/next.js +571 -0
  175. package/dist/commands/porch/next.js.map +1 -0
  176. package/dist/commands/porch/plan.d.ts +70 -0
  177. package/dist/commands/porch/plan.d.ts.map +1 -0
  178. package/dist/commands/porch/plan.js +190 -0
  179. package/dist/commands/porch/plan.js.map +1 -0
  180. package/dist/commands/porch/prompts.d.ts +19 -0
  181. package/dist/commands/porch/prompts.d.ts.map +1 -0
  182. package/dist/commands/porch/prompts.js +277 -0
  183. package/dist/commands/porch/prompts.js.map +1 -0
  184. package/dist/commands/porch/protocol.d.ts +59 -0
  185. package/dist/commands/porch/protocol.d.ts.map +1 -0
  186. package/dist/commands/porch/protocol.js +294 -0
  187. package/dist/commands/porch/protocol.js.map +1 -0
  188. package/dist/commands/porch/state.d.ts +36 -107
  189. package/dist/commands/porch/state.d.ts.map +1 -1
  190. package/dist/commands/porch/state.js +120 -699
  191. package/dist/commands/porch/state.js.map +1 -1
  192. package/dist/commands/porch/types.d.ts +99 -164
  193. package/dist/commands/porch/types.d.ts.map +1 -1
  194. package/dist/commands/porch/types.js +2 -1
  195. package/dist/commands/porch/types.js.map +1 -1
  196. package/dist/commands/porch/verdict.d.ts +31 -0
  197. package/dist/commands/porch/verdict.d.ts.map +1 -0
  198. package/dist/commands/porch/verdict.js +59 -0
  199. package/dist/commands/porch/verdict.js.map +1 -0
  200. package/dist/commands/update.d.ts.map +1 -1
  201. package/dist/commands/update.js +31 -0
  202. package/dist/commands/update.js.map +1 -1
  203. package/dist/lib/scaffold.d.ts +37 -0
  204. package/dist/lib/scaffold.d.ts.map +1 -1
  205. package/dist/lib/scaffold.js +114 -0
  206. package/dist/lib/scaffold.js.map +1 -1
  207. package/dist/terminal/index.d.ts +8 -0
  208. package/dist/terminal/index.d.ts.map +1 -0
  209. package/dist/terminal/index.js +5 -0
  210. package/dist/terminal/index.js.map +1 -0
  211. package/dist/terminal/pty-manager.d.ts +69 -0
  212. package/dist/terminal/pty-manager.d.ts.map +1 -0
  213. package/dist/terminal/pty-manager.js +377 -0
  214. package/dist/terminal/pty-manager.js.map +1 -0
  215. package/dist/terminal/pty-session.d.ts +104 -0
  216. package/dist/terminal/pty-session.d.ts.map +1 -0
  217. package/dist/terminal/pty-session.js +327 -0
  218. package/dist/terminal/pty-session.js.map +1 -0
  219. package/dist/terminal/ring-buffer.d.ts +34 -0
  220. package/dist/terminal/ring-buffer.d.ts.map +1 -0
  221. package/dist/terminal/ring-buffer.js +94 -0
  222. package/dist/terminal/ring-buffer.js.map +1 -0
  223. package/dist/terminal/session-manager.d.ts +115 -0
  224. package/dist/terminal/session-manager.d.ts.map +1 -0
  225. package/dist/terminal/session-manager.js +582 -0
  226. package/dist/terminal/session-manager.js.map +1 -0
  227. package/dist/terminal/shepherd-client.d.ts +66 -0
  228. package/dist/terminal/shepherd-client.d.ts.map +1 -0
  229. package/dist/terminal/shepherd-client.js +234 -0
  230. package/dist/terminal/shepherd-client.js.map +1 -0
  231. package/dist/terminal/shepherd-main.d.ts +19 -0
  232. package/dist/terminal/shepherd-main.d.ts.map +1 -0
  233. package/dist/terminal/shepherd-main.js +153 -0
  234. package/dist/terminal/shepherd-main.js.map +1 -0
  235. package/dist/terminal/shepherd-process.d.ts +75 -0
  236. package/dist/terminal/shepherd-process.d.ts.map +1 -0
  237. package/dist/terminal/shepherd-process.js +279 -0
  238. package/dist/terminal/shepherd-process.js.map +1 -0
  239. package/dist/terminal/shepherd-protocol.d.ts +115 -0
  240. package/dist/terminal/shepherd-protocol.d.ts.map +1 -0
  241. package/dist/terminal/shepherd-protocol.js +214 -0
  242. package/dist/terminal/shepherd-protocol.js.map +1 -0
  243. package/dist/terminal/shepherd-replay-buffer.d.ts +38 -0
  244. package/dist/terminal/shepherd-replay-buffer.d.ts.map +1 -0
  245. package/dist/terminal/shepherd-replay-buffer.js +94 -0
  246. package/dist/terminal/shepherd-replay-buffer.js.map +1 -0
  247. package/dist/terminal/ws-protocol.d.ts +27 -0
  248. package/dist/terminal/ws-protocol.d.ts.map +1 -0
  249. package/dist/terminal/ws-protocol.js +44 -0
  250. package/dist/terminal/ws-protocol.js.map +1 -0
  251. package/package.json +19 -5
  252. package/skeleton/.claude/skills/af/SKILL.md +89 -0
  253. package/skeleton/.claude/skills/codev/SKILL.md +41 -0
  254. package/skeleton/.claude/skills/consult/SKILL.md +81 -0
  255. package/skeleton/.claude/skills/generate-image/SKILL.md +56 -0
  256. package/skeleton/DEPENDENCIES.md +4 -62
  257. package/skeleton/builders.md +1 -1
  258. package/skeleton/consult-types/impl-review.md +18 -9
  259. package/skeleton/consult-types/integration-review.md +1 -1
  260. package/skeleton/consult-types/plan-review.md +1 -1
  261. package/skeleton/consult-types/pr-ready.md +1 -1
  262. package/skeleton/consult-types/spec-review.md +1 -1
  263. package/skeleton/porch/prompts/defend.md +1 -1
  264. package/skeleton/porch/prompts/evaluate.md +2 -2
  265. package/skeleton/porch/prompts/implement.md +1 -1
  266. package/skeleton/porch/prompts/plan.md +1 -1
  267. package/skeleton/porch/prompts/review.md +4 -4
  268. package/skeleton/porch/prompts/specify.md +1 -1
  269. package/skeleton/porch/prompts/understand.md +2 -2
  270. package/skeleton/protocol-schema.json +282 -0
  271. package/skeleton/protocols/bugfix/builder-prompt.md +54 -0
  272. package/skeleton/protocols/bugfix/prompts/fix.md +77 -0
  273. package/skeleton/protocols/bugfix/prompts/investigate.md +77 -0
  274. package/skeleton/protocols/bugfix/prompts/pr.md +84 -0
  275. package/skeleton/protocols/bugfix/protocol.json +20 -33
  276. package/skeleton/protocols/experiment/builder-prompt.md +52 -0
  277. package/skeleton/protocols/experiment/protocol.json +101 -0
  278. package/skeleton/protocols/experiment/protocol.md +3 -3
  279. package/skeleton/protocols/experiment/templates/notes.md +1 -1
  280. package/skeleton/protocols/maintain/builder-prompt.md +46 -0
  281. package/skeleton/protocols/maintain/prompts/audit.md +111 -0
  282. package/skeleton/protocols/maintain/prompts/clean.md +91 -0
  283. package/skeleton/protocols/maintain/prompts/sync.md +113 -0
  284. package/skeleton/protocols/maintain/prompts/verify.md +110 -0
  285. package/skeleton/protocols/maintain/protocol.json +141 -0
  286. package/skeleton/protocols/maintain/protocol.md +17 -11
  287. package/skeleton/protocols/protocol-schema.json +54 -1
  288. package/skeleton/protocols/spir/builder-prompt.md +59 -0
  289. package/skeleton/protocols/spir/prompts/implement.md +208 -0
  290. package/skeleton/protocols/{spider → spir}/prompts/plan.md +6 -70
  291. package/skeleton/protocols/{spider → spir}/prompts/review.md +20 -39
  292. package/skeleton/protocols/{spider → spir}/prompts/specify.md +33 -61
  293. package/skeleton/protocols/spir/protocol.json +156 -0
  294. package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
  295. package/skeleton/protocols/{spider → spir}/templates/plan.md +14 -0
  296. package/skeleton/protocols/spir/templates/review.md +89 -0
  297. package/skeleton/protocols/tick/builder-prompt.md +56 -0
  298. package/skeleton/protocols/tick/protocol.json +7 -2
  299. package/skeleton/protocols/tick/protocol.md +18 -18
  300. package/skeleton/protocols/tick/templates/review.md +1 -1
  301. package/skeleton/resources/commands/agent-farm.md +63 -46
  302. package/skeleton/resources/commands/codev.md +0 -2
  303. package/skeleton/resources/commands/overview.md +7 -17
  304. package/skeleton/resources/workflow-reference.md +4 -4
  305. package/skeleton/roles/architect.md +152 -315
  306. package/skeleton/roles/builder.md +110 -218
  307. package/skeleton/roles/consultant.md +6 -6
  308. package/skeleton/templates/AGENTS.md +2 -2
  309. package/skeleton/templates/CLAUDE.md +2 -2
  310. package/skeleton/templates/cheatsheet.md +7 -5
  311. package/skeleton/templates/projectlist.md +1 -1
  312. package/templates/dashboard/index.html +17 -43
  313. package/templates/dashboard/js/dialogs.js +7 -7
  314. package/templates/dashboard/js/files.js +2 -2
  315. package/templates/dashboard/js/main.js +4 -4
  316. package/templates/dashboard/js/projects.js +3 -3
  317. package/templates/dashboard/js/tabs.js +1 -1
  318. package/templates/dashboard/js/utils.js +22 -87
  319. package/templates/open.html +26 -0
  320. package/templates/tower.html +642 -36
  321. package/dist/agent-farm/commands/kickoff.d.ts +0 -20
  322. package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
  323. package/dist/agent-farm/commands/kickoff.js +0 -337
  324. package/dist/agent-farm/commands/kickoff.js.map +0 -1
  325. package/dist/agent-farm/commands/rename.d.ts +0 -13
  326. package/dist/agent-farm/commands/rename.d.ts.map +0 -1
  327. package/dist/agent-farm/commands/rename.js +0 -33
  328. package/dist/agent-farm/commands/rename.js.map +0 -1
  329. package/dist/agent-farm/commands/tutorial.d.ts +0 -10
  330. package/dist/agent-farm/commands/tutorial.d.ts.map +0 -1
  331. package/dist/agent-farm/commands/tutorial.js +0 -49
  332. package/dist/agent-farm/commands/tutorial.js.map +0 -1
  333. package/dist/agent-farm/commands/util.d.ts +0 -15
  334. package/dist/agent-farm/commands/util.d.ts.map +0 -1
  335. package/dist/agent-farm/commands/util.js +0 -108
  336. package/dist/agent-farm/commands/util.js.map +0 -1
  337. package/dist/agent-farm/servers/dashboard-server.d.ts +0 -7
  338. package/dist/agent-farm/servers/dashboard-server.d.ts.map +0 -1
  339. package/dist/agent-farm/servers/dashboard-server.js +0 -1872
  340. package/dist/agent-farm/servers/dashboard-server.js.map +0 -1
  341. package/dist/agent-farm/servers/open-server.d.ts +0 -7
  342. package/dist/agent-farm/servers/open-server.d.ts.map +0 -1
  343. package/dist/agent-farm/servers/open-server.js +0 -315
  344. package/dist/agent-farm/servers/open-server.js.map +0 -1
  345. package/dist/agent-farm/tutorial/index.d.ts +0 -8
  346. package/dist/agent-farm/tutorial/index.d.ts.map +0 -1
  347. package/dist/agent-farm/tutorial/index.js +0 -8
  348. package/dist/agent-farm/tutorial/index.js.map +0 -1
  349. package/dist/agent-farm/tutorial/prompts.d.ts +0 -57
  350. package/dist/agent-farm/tutorial/prompts.d.ts.map +0 -1
  351. package/dist/agent-farm/tutorial/prompts.js +0 -147
  352. package/dist/agent-farm/tutorial/prompts.js.map +0 -1
  353. package/dist/agent-farm/tutorial/runner.d.ts +0 -52
  354. package/dist/agent-farm/tutorial/runner.d.ts.map +0 -1
  355. package/dist/agent-farm/tutorial/runner.js +0 -204
  356. package/dist/agent-farm/tutorial/runner.js.map +0 -1
  357. package/dist/agent-farm/tutorial/state.d.ts +0 -26
  358. package/dist/agent-farm/tutorial/state.d.ts.map +0 -1
  359. package/dist/agent-farm/tutorial/state.js +0 -89
  360. package/dist/agent-farm/tutorial/state.js.map +0 -1
  361. package/dist/agent-farm/tutorial/steps/first-spec.d.ts +0 -7
  362. package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +0 -1
  363. package/dist/agent-farm/tutorial/steps/first-spec.js +0 -136
  364. package/dist/agent-farm/tutorial/steps/first-spec.js.map +0 -1
  365. package/dist/agent-farm/tutorial/steps/implementation.d.ts +0 -7
  366. package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +0 -1
  367. package/dist/agent-farm/tutorial/steps/implementation.js +0 -76
  368. package/dist/agent-farm/tutorial/steps/implementation.js.map +0 -1
  369. package/dist/agent-farm/tutorial/steps/index.d.ts +0 -10
  370. package/dist/agent-farm/tutorial/steps/index.d.ts.map +0 -1
  371. package/dist/agent-farm/tutorial/steps/index.js +0 -10
  372. package/dist/agent-farm/tutorial/steps/index.js.map +0 -1
  373. package/dist/agent-farm/tutorial/steps/planning.d.ts +0 -7
  374. package/dist/agent-farm/tutorial/steps/planning.d.ts.map +0 -1
  375. package/dist/agent-farm/tutorial/steps/planning.js +0 -143
  376. package/dist/agent-farm/tutorial/steps/planning.js.map +0 -1
  377. package/dist/agent-farm/tutorial/steps/review.d.ts +0 -7
  378. package/dist/agent-farm/tutorial/steps/review.d.ts.map +0 -1
  379. package/dist/agent-farm/tutorial/steps/review.js +0 -78
  380. package/dist/agent-farm/tutorial/steps/review.js.map +0 -1
  381. package/dist/agent-farm/tutorial/steps/setup.d.ts +0 -7
  382. package/dist/agent-farm/tutorial/steps/setup.d.ts.map +0 -1
  383. package/dist/agent-farm/tutorial/steps/setup.js +0 -126
  384. package/dist/agent-farm/tutorial/steps/setup.js.map +0 -1
  385. package/dist/agent-farm/tutorial/steps/welcome.d.ts +0 -7
  386. package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +0 -1
  387. package/dist/agent-farm/tutorial/steps/welcome.js +0 -50
  388. package/dist/agent-farm/tutorial/steps/welcome.js.map +0 -1
  389. package/dist/agent-farm/utils/orphan-handler.d.ts +0 -27
  390. package/dist/agent-farm/utils/orphan-handler.d.ts.map +0 -1
  391. package/dist/agent-farm/utils/orphan-handler.js +0 -149
  392. package/dist/agent-farm/utils/orphan-handler.js.map +0 -1
  393. package/dist/agent-farm/utils/port-registry.d.ts +0 -58
  394. package/dist/agent-farm/utils/port-registry.d.ts.map +0 -1
  395. package/dist/agent-farm/utils/port-registry.js +0 -166
  396. package/dist/agent-farm/utils/port-registry.js.map +0 -1
  397. package/dist/agent-farm/utils/terminal-ports.d.ts +0 -18
  398. package/dist/agent-farm/utils/terminal-ports.d.ts.map +0 -1
  399. package/dist/agent-farm/utils/terminal-ports.js +0 -35
  400. package/dist/agent-farm/utils/terminal-ports.js.map +0 -1
  401. package/dist/commands/pcheck/cache.d.ts +0 -48
  402. package/dist/commands/pcheck/cache.d.ts.map +0 -1
  403. package/dist/commands/pcheck/cache.js +0 -170
  404. package/dist/commands/pcheck/cache.js.map +0 -1
  405. package/dist/commands/pcheck/evaluator.d.ts +0 -15
  406. package/dist/commands/pcheck/evaluator.d.ts.map +0 -1
  407. package/dist/commands/pcheck/evaluator.js +0 -246
  408. package/dist/commands/pcheck/evaluator.js.map +0 -1
  409. package/dist/commands/pcheck/index.d.ts +0 -12
  410. package/dist/commands/pcheck/index.d.ts.map +0 -1
  411. package/dist/commands/pcheck/index.js +0 -249
  412. package/dist/commands/pcheck/index.js.map +0 -1
  413. package/dist/commands/pcheck/parser.d.ts +0 -39
  414. package/dist/commands/pcheck/parser.d.ts.map +0 -1
  415. package/dist/commands/pcheck/parser.js +0 -155
  416. package/dist/commands/pcheck/parser.js.map +0 -1
  417. package/dist/commands/pcheck/types.d.ts +0 -82
  418. package/dist/commands/pcheck/types.d.ts.map +0 -1
  419. package/dist/commands/pcheck/types.js +0 -5
  420. package/dist/commands/pcheck/types.js.map +0 -1
  421. package/dist/commands/porch/consultation.d.ts +0 -56
  422. package/dist/commands/porch/consultation.d.ts.map +0 -1
  423. package/dist/commands/porch/consultation.js +0 -330
  424. package/dist/commands/porch/consultation.js.map +0 -1
  425. package/dist/commands/porch/notifications.d.ts +0 -99
  426. package/dist/commands/porch/notifications.d.ts.map +0 -1
  427. package/dist/commands/porch/notifications.js +0 -223
  428. package/dist/commands/porch/notifications.js.map +0 -1
  429. package/dist/commands/porch/plan-parser.d.ts +0 -38
  430. package/dist/commands/porch/plan-parser.d.ts.map +0 -1
  431. package/dist/commands/porch/plan-parser.js +0 -166
  432. package/dist/commands/porch/plan-parser.js.map +0 -1
  433. package/dist/commands/porch/protocol-loader.d.ts +0 -46
  434. package/dist/commands/porch/protocol-loader.d.ts.map +0 -1
  435. package/dist/commands/porch/protocol-loader.js +0 -253
  436. package/dist/commands/porch/protocol-loader.js.map +0 -1
  437. package/dist/commands/porch/signal-parser.d.ts +0 -88
  438. package/dist/commands/porch/signal-parser.d.ts.map +0 -1
  439. package/dist/commands/porch/signal-parser.js +0 -148
  440. package/dist/commands/porch/signal-parser.js.map +0 -1
  441. package/dist/commands/tower.d.ts +0 -16
  442. package/dist/commands/tower.d.ts.map +0 -1
  443. package/dist/commands/tower.js +0 -21
  444. package/dist/commands/tower.js.map +0 -1
  445. package/skeleton/config.json +0 -7
  446. package/skeleton/porch/protocols/bugfix.json +0 -85
  447. package/skeleton/porch/protocols/spider.json +0 -135
  448. package/skeleton/porch/protocols/tick.json +0 -76
  449. package/skeleton/protocols/spider/prompts/defend.md +0 -215
  450. package/skeleton/protocols/spider/prompts/evaluate.md +0 -241
  451. package/skeleton/protocols/spider/prompts/implement.md +0 -149
  452. package/skeleton/protocols/spider/protocol.json +0 -210
  453. package/skeleton/protocols/spider/templates/review.md +0 -207
  454. package/templates/dashboard/css/activity.css +0 -151
  455. package/templates/dashboard/js/activity.js +0 -112
  456. /package/skeleton/protocols/{spider → spir}/templates/spec.md +0 -0
@@ -1,507 +1,61 @@
1
1
  /**
2
- * Start command - launches the architect dashboard
2
+ * Start command - activates a project via Tower
3
+ *
4
+ * Phase 3 (Spec 0090): Uses tower API for project activation.
5
+ * Tower is the single daemon that manages all projects.
3
6
  */
4
- import { resolve, basename, join } from 'node:path';
5
- import { existsSync, writeFileSync, unlinkSync } from 'node:fs';
6
- import { tmpdir } from 'node:os';
7
- import { randomUUID } from 'node:crypto';
8
- import { spawn, spawnSync } from 'node:child_process';
9
- import * as net from 'node:net';
10
- import { version as localVersion } from '../../version.js';
11
- import { getConfig, ensureDirectories } from '../utils/index.js';
7
+ import { getConfig } from '../utils/index.js';
12
8
  import { logger, fatal } from '../utils/logger.js';
13
- import { spawnDetached, commandExists, openBrowser, run, spawnTtyd, isProcessRunning } from '../utils/shell.js';
14
- import { checkCoreDependencies } from '../utils/deps.js';
15
- import { loadState, setArchitect } from '../state.js';
16
- import { handleOrphanedSessions, warnAboutStaleArtifacts } from '../utils/orphan-handler.js';
17
- import { getPortBlock, cleanupStaleEntries } from '../utils/port-registry.js';
18
- import { loadRolePrompt } from '../utils/roles.js';
19
- import { initHQConnector, isHQEnabled } from '../hq-connector.js';
9
+ import { openBrowser } from '../utils/shell.js';
10
+ import { TowerClient } from '../lib/tower-client.js';
11
+ import { towerStart } from './tower.js';
20
12
  /**
21
- * Format current date/time as YYYY-MM-DD HH:MM
13
+ * Default tower port
22
14
  */
23
- function formatDateTime() {
24
- const now = new Date();
25
- const year = now.getFullYear();
26
- const month = String(now.getMonth() + 1).padStart(2, '0');
27
- const day = String(now.getDate()).padStart(2, '0');
28
- const hours = String(now.getHours()).padStart(2, '0');
29
- const minutes = String(now.getMinutes()).padStart(2, '0');
30
- return `${year}-${month}-${day} ${hours}:${minutes}`;
31
- }
32
- /**
33
- * Rename a Claude session after it starts
34
- * Uses tmux buffer approach for reliable text input (same as af send)
35
- */
36
- function renameClaudeSession(sessionName, displayName) {
37
- // Wait for Claude to be ready, then send /rename command
38
- setTimeout(async () => {
39
- try {
40
- // Add date/time to the display name
41
- const nameWithTime = `${displayName} (${formatDateTime()})`;
42
- const renameCommand = `/rename ${nameWithTime}`;
43
- // Use buffer approach for reliable input (like af send)
44
- const tempFile = join(tmpdir(), `rename-${randomUUID()}.txt`);
45
- const bufferName = `rename-${sessionName}`;
46
- writeFileSync(tempFile, renameCommand);
47
- await run(`tmux load-buffer -b "${bufferName}" "${tempFile}"`);
48
- await run(`tmux paste-buffer -b "${bufferName}" -t "${sessionName}"`);
49
- await run(`tmux delete-buffer -b "${bufferName}"`).catch(() => { });
50
- await run(`tmux send-keys -t "${sessionName}" Enter`);
51
- // Clean up temp file
52
- try {
53
- unlinkSync(tempFile);
54
- }
55
- catch { }
56
- }
57
- catch {
58
- // Non-fatal - session naming is a nice-to-have
59
- }
60
- }, 5000);
61
- }
62
- /**
63
- * Check if a local port is available by attempting to bind to it.
64
- * More reliable than fetch() which may miss some port conflicts.
65
- */
66
- export function isPortAvailable(port) {
67
- return new Promise((resolve) => {
68
- const server = net.createServer();
69
- server.once('error', () => {
70
- resolve(false);
71
- });
72
- server.once('listening', () => {
73
- server.close(() => {
74
- resolve(true);
75
- });
76
- });
77
- server.listen(port, '127.0.0.1');
78
- });
79
- }
80
- /**
81
- * Parse remote target string: user@host or user@host:/path
82
- */
83
- export function parseRemote(remote) {
84
- // Match: user@host or user@host:/path
85
- const match = remote.match(/^([^@]+)@([^:]+)(?::(.+))?$/);
86
- if (!match) {
87
- throw new Error(`Invalid remote format: ${remote}. Use user@host or user@host:/path`);
88
- }
89
- // Strip trailing slash to avoid duplicate port allocations (e.g., /path/ vs /path)
90
- const remotePath = match[3]?.replace(/\/$/, '');
91
- return { user: match[1], host: match[2], remotePath };
92
- }
93
- // loadRolePrompt imported from ../utils/roles.js
94
- /**
95
- * Check if passwordless SSH is configured for a host
96
- * Returns true if SSH works without password, false otherwise
97
- */
98
- async function checkPasswordlessSSH(user, host) {
99
- return new Promise((resolve) => {
100
- const ssh = spawn('ssh', [
101
- '-o', 'ConnectTimeout=10',
102
- '-o', 'BatchMode=yes', // Fail immediately if password required
103
- '-o', 'StrictHostKeyChecking=accept-new',
104
- `${user}@${host}`,
105
- 'true', // Just run 'true' to test connection
106
- ], {
107
- stdio: ['ignore', 'ignore', 'pipe'],
108
- });
109
- let stderr = '';
110
- ssh.stderr?.on('data', (data) => {
111
- stderr += data.toString();
112
- });
113
- ssh.on('error', (err) => resolve({ ok: false, error: err.message }));
114
- ssh.on('exit', (code) => {
115
- if (code === 0) {
116
- resolve({ ok: true });
117
- }
118
- else {
119
- resolve({ ok: false, error: stderr.trim() || `exit code ${code}` });
120
- }
121
- });
122
- // Timeout after 15 seconds
123
- setTimeout(() => {
124
- ssh.kill();
125
- resolve({ ok: false, error: 'connection timeout' });
126
- }, 15000);
127
- });
128
- }
15
+ const DEFAULT_TOWER_PORT = 4100;
129
16
  /**
130
- * Check remote CLI versions and warn about mismatches
131
- */
132
- async function checkRemoteVersions(user, host) {
133
- const commands = ['codev', 'af', 'consult', 'generate-image'];
134
- const versionCmd = commands.map(cmd => `${cmd} --version 2>/dev/null || echo "${cmd}: not found"`).join(' && echo "---" && ');
135
- // Wrap in bash -l to source login environment (gets PATH from .profile)
136
- const wrappedCmd = `bash -l -c '${versionCmd.replace(/'/g, "'\\''")}'`;
137
- return new Promise((resolve) => {
138
- const ssh = spawn('ssh', [
139
- '-o', 'ConnectTimeout=5',
140
- '-o', 'BatchMode=yes',
141
- `${user}@${host}`,
142
- wrappedCmd,
143
- ], {
144
- stdio: ['ignore', 'pipe', 'pipe'],
145
- });
146
- let stdout = '';
147
- ssh.stdout?.on('data', (data) => {
148
- stdout += data.toString();
149
- });
150
- ssh.on('error', () => {
151
- // SSH failed, skip version check
152
- resolve();
153
- });
154
- ssh.on('exit', (code) => {
155
- if (code !== 0) {
156
- // SSH failed or commands failed, skip version check
157
- resolve();
158
- return;
159
- }
160
- // Parse output: each command's version separated by "---"
161
- const outputs = stdout.split('---').map(s => s.trim());
162
- const mismatches = [];
163
- for (let i = 0; i < commands.length && i < outputs.length; i++) {
164
- const output = outputs[i];
165
- const cmd = commands[i];
166
- if (output.includes('not found')) {
167
- mismatches.push(`${cmd}: not installed on remote`);
168
- }
169
- else {
170
- // Extract version number (e.g., "1.5.3" from "@cluesmith/codev@1.5.3" or "1.5.3")
171
- const versionMatch = output.match(/(\d+\.\d+\.\d+)/);
172
- if (versionMatch) {
173
- const remoteVer = versionMatch[1];
174
- if (remoteVer !== localVersion) {
175
- mismatches.push(`${cmd}: local ${localVersion}, remote ${remoteVer}`);
176
- }
177
- }
178
- }
179
- }
180
- if (mismatches.length > 0) {
181
- logger.blank();
182
- logger.warn('Version mismatch detected:');
183
- for (const m of mismatches) {
184
- logger.warn(` ${m}`);
185
- }
186
- logger.info('Consider updating: npm install -g @cluesmith/codev');
187
- logger.blank();
188
- }
189
- resolve();
190
- });
191
- // Timeout after 10 seconds
192
- setTimeout(() => {
193
- ssh.kill();
194
- resolve();
195
- }, 10000);
196
- });
197
- }
198
- /**
199
- * Start Agent Farm on a remote machine via SSH
200
- */
201
- async function startRemote(options) {
202
- const config = getConfig();
203
- const { user, host, remotePath } = parseRemote(options.remote);
204
- // Clean up stale port allocations (handles machine restarts, killed processes)
205
- cleanupStaleEntries();
206
- // Determine local port - use specified, or get from port registry
207
- // Use a synthetic path for remote connections so they get their own port block
208
- let localPort;
209
- if (options.port) {
210
- localPort = Number(options.port);
211
- }
212
- else {
213
- // Register with a unique key for this remote target
214
- const remoteKey = `remote:${user}@${host}:${remotePath || 'default'}`;
215
- localPort = getPortBlock(remoteKey);
216
- }
217
- logger.header('Starting Remote Agent Farm');
218
- logger.kv('Host', `${user}@${host}`);
219
- if (remotePath)
220
- logger.kv('Path', remotePath);
221
- logger.kv('Local Port', localPort);
222
- // Build the remote command
223
- // If no path specified, use the current directory name to find project on remote
224
- const projectName = basename(config.projectRoot);
225
- const cdCommand = remotePath
226
- ? `cd ${remotePath}`
227
- : `cd ${projectName} 2>/dev/null || cd ~/${projectName} 2>/dev/null`;
228
- // Always pass --no-browser to remote since we open browser locally
229
- // Wrap in bash -l to source login environment (gets PATH from .profile)
230
- const innerCommand = `${cdCommand} && af start --port ${localPort} --no-browser`;
231
- const remoteCommand = `bash -l -c '${innerCommand.replace(/'/g, "'\\''")}'`;
232
- // Check passwordless SSH is configured
233
- logger.info('Checking SSH connection...');
234
- const sshResult = await checkPasswordlessSSH(user, host);
235
- if (!sshResult.ok) {
236
- logger.blank();
237
- fatal(`Cannot connect to ${user}@${host}: ${sshResult.error}
238
-
239
- Passwordless SSH is required for remote access. Set it up with:
240
- ssh-copy-id ${user}@${host}
241
-
242
- Then verify with:
243
- ssh ${user}@${host} "echo connected"`);
244
- }
245
- // Check remote CLI versions (non-blocking warning)
246
- logger.info('Checking remote versions...');
247
- await checkRemoteVersions(user, host);
248
- logger.info('Connecting via SSH...');
249
- // Spawn SSH with port forwarding, -f backgrounds after auth
250
- const sshArgs = [
251
- '-f', // Background after authentication
252
- '-L', `${localPort}:localhost:${localPort}`,
253
- '-o', 'ServerAliveInterval=30',
254
- '-o', 'ServerAliveCountMax=3',
255
- '-o', 'ExitOnForwardFailure=yes',
256
- `${user}@${host}`,
257
- remoteCommand,
258
- ];
259
- const result = spawnSync('ssh', sshArgs, {
260
- stdio: 'inherit',
261
- });
262
- if (result.status !== 0) {
263
- logger.error('SSH connection failed');
264
- process.exit(1);
265
- }
266
- logger.blank();
267
- logger.success('Remote Agent Farm connected!');
268
- logger.kv('Dashboard', `http://localhost:${localPort}`);
269
- logger.info('SSH tunnel running in background');
270
- if (!options.noBrowser) {
271
- await openBrowser(`http://localhost:${localPort}`);
272
- }
273
- // Find and report the SSH PID for cleanup
274
- const pgrep = spawnSync('pgrep', ['-f', `ssh.*${localPort}:localhost:${localPort}.*${host}`]);
275
- if (pgrep.status === 0) {
276
- const pid = pgrep.stdout.toString().trim().split('\n')[0];
277
- logger.info(`To disconnect: kill ${pid}`);
278
- }
279
- }
280
- /**
281
- * Start the architect dashboard
17
+ * Start via tower API (Phase 3 - Spec 0090)
18
+ *
19
+ * This is the way to start projects:
20
+ * 1. Ensure tower is running
21
+ * 2. Call tower's activate API
22
+ * 3. Open browser to tower URL
282
23
  */
283
24
  export async function start(options = {}) {
284
- // Handle remote mode
285
- if (options.remote) {
286
- return startRemote(options);
287
- }
288
25
  const config = getConfig();
289
- // Clean up stale port allocations (handles machine restarts, killed processes)
290
- cleanupStaleEntries();
291
- // Check for and clean up orphaned tmux sessions
292
- await handleOrphanedSessions({ kill: true });
293
- // Warn about stale artifacts from bash-era
294
- warnAboutStaleArtifacts(config.codevDir);
295
- // Check if already running
296
- const state = loadState();
297
- if (state.architect) {
298
- // Validate that the architect process is actually alive
299
- const isAlive = await isProcessRunning(state.architect.pid);
300
- if (isAlive) {
301
- // Dashboard port is architect port - 1 (architect runs on base+1, dashboard on base)
302
- const runningDashboardPort = state.architect.port - 1;
303
- logger.warn(`Architect already running on port ${state.architect.port}`);
304
- logger.info(`Dashboard: http://localhost:${runningDashboardPort}`);
305
- // In remote mode (--no-browser), keep process alive so SSH tunnel stays connected
306
- if (options.noBrowser) {
307
- logger.info('Keeping connection alive for remote tunnel...');
308
- // Block forever - SSH disconnect will kill us
309
- await new Promise(() => { });
310
- }
311
- return;
312
- }
313
- else {
314
- // PID is dead but state exists - clear stale state and continue
315
- logger.info('Clearing stale architect state (process no longer running)');
316
- setArchitect(null);
317
- }
318
- }
319
- // Ensure directories exist
320
- await ensureDirectories(config);
321
- // Check all core dependencies (node, tmux, ttyd, git)
322
- await checkCoreDependencies();
323
- // Determine dashboard port early (needed for role prompt and server)
324
- // If --port was specified, use it for dashboard (important for remote tunneling)
325
- const dashboardPort = options.port ? Number(options.port) : config.dashboardPort;
326
- // Command is passed from index.ts (already resolved via CLI > config.json > default)
327
- let cmd = options.cmd || 'claude';
328
- // Check if base command exists before we wrap it in a launch script
329
- const baseCmdName = cmd.split(' ')[0];
330
- if (!(await commandExists(baseCmdName))) {
331
- fatal(`Command not found: ${baseCmdName}`);
332
- }
333
- // Load architect role if available and not disabled
334
- if (!options.noRole) {
335
- const role = loadRolePrompt(config, 'architect');
336
- if (role) {
337
- // Write role to a file and create a launch script to avoid shell escaping issues
338
- // The architect.md file contains backticks, $variables, and other shell-sensitive chars
339
- const roleFile = resolve(config.stateDir, 'architect-role.md');
340
- // Inject the actual dashboard port into the role prompt
341
- const roleContent = role.content.replace(/\{PORT\}/g, String(dashboardPort));
342
- writeFileSync(roleFile, roleContent, 'utf-8');
343
- const launchScript = resolve(config.stateDir, 'launch-architect.sh');
344
- writeFileSync(launchScript, `#!/bin/bash
345
- cd "${config.projectRoot}"
346
- exec ${cmd} --append-system-prompt "$(cat '${roleFile}')"
347
- `, { mode: 0o755 });
348
- cmd = launchScript;
349
- logger.info(`Loaded architect role (${role.source})`);
350
- }
351
- }
352
- // Find available port for architect terminal
353
- // Architect terminal runs on dashboard port + 1 to avoid conflicts
354
- let architectPort = config.architectPort;
355
- if (options.port !== undefined) {
356
- const parsedPort = Number(options.port);
357
- if (!Number.isFinite(parsedPort) || parsedPort < 1024 || parsedPort > 65535) {
358
- fatal(`Invalid port: ${options.port}. Must be a number between 1024-65535`);
359
- }
360
- architectPort = parsedPort + 1; // Offset from dashboard port
361
- }
26
+ const projectPath = config.projectRoot;
362
27
  logger.header('Starting Agent Farm');
363
- logger.kv('Project', config.projectRoot);
364
- logger.kv('Command', cmd);
365
- logger.kv('Port', architectPort);
366
- // Start architect in tmux session for persistence
367
- // Use port in session name to ensure uniqueness across projects
368
- const sessionName = `af-architect-${architectPort}`;
369
- // Kill any existing session
370
- try {
371
- await run(`tmux kill-session -t ${sessionName} 2>/dev/null || true`);
372
- }
373
- catch {
374
- // Ignore
375
- }
376
- // Create tmux session with the command
377
- // Note: Inner double quotes handle paths with spaces (e.g., "My Drive")
378
- await run(`tmux new-session -d -s ${sessionName} -x 200 -y 50 '"${cmd}"'`, { cwd: config.projectRoot });
379
- await run(`tmux set-option -t ${sessionName} status off`);
380
- await run(`tmux set-option -t ${sessionName} -g mouse on`);
381
- await run(`tmux set-option -t ${sessionName} -g set-clipboard on`);
382
- await run(`tmux set-option -t ${sessionName} -g allow-passthrough on`);
383
- // Copy selection to clipboard when mouse is released (pbcopy for macOS)
384
- await run(`tmux bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"`);
385
- await run(`tmux bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"`);
386
- // Start ttyd attached to the tmux session
387
- const customIndexPath = resolve(config.templatesDir, 'ttyd-index.html');
388
- const hasCustomIndex = existsSync(customIndexPath);
389
- if (hasCustomIndex) {
390
- logger.info('Using custom terminal with file click support');
391
- }
392
- const bindHost = options.allowInsecureRemote ? '0.0.0.0' : undefined;
393
- if (options.allowInsecureRemote) {
394
- logger.warn('⚠️ INSECURE MODE: Binding to 0.0.0.0 - accessible from any network!');
395
- logger.warn(' No authentication - anyone on your network can access the terminal.');
396
- logger.warn(' DEPRECATED: Use `af start --remote user@host` for secure remote access instead.');
397
- }
398
- const ttydProcess = spawnTtyd({
399
- port: architectPort,
400
- sessionName,
401
- cwd: config.projectRoot,
402
- customIndexPath: hasCustomIndex ? customIndexPath : undefined,
403
- bindHost,
404
- });
405
- if (!ttydProcess?.pid) {
406
- fatal('Failed to start ttyd process');
407
- }
408
- // Rename Claude session for better history tracking
409
- const projectName = basename(config.projectRoot);
410
- renameClaudeSession(sessionName, `Architect ${projectName}`);
411
- // Save architect state
412
- const architectState = {
413
- port: architectPort,
414
- pid: ttydProcess.pid,
415
- cmd,
416
- startedAt: new Date().toISOString(),
417
- tmuxSession: sessionName,
418
- };
419
- setArchitect(architectState);
420
- // Wait a moment for ttyd to start
421
- await new Promise((resolve) => setTimeout(resolve, 500));
422
- // Start the dashboard server on the main port
423
- await startDashboard(config.projectRoot, dashboardPort, architectPort, bindHost);
424
- // Initialize HQ connector if CODEV_HQ_URL is set
425
- if (isHQEnabled()) {
426
- initHQConnector(config.projectRoot);
427
- }
28
+ logger.kv('Project', projectPath);
29
+ // Create tower client
30
+ const client = new TowerClient(DEFAULT_TOWER_PORT);
31
+ // Check if tower is running
32
+ const towerRunning = await client.isRunning();
33
+ if (!towerRunning) {
34
+ logger.info('Starting tower daemon...');
35
+ await towerStart({ port: DEFAULT_TOWER_PORT, wait: true });
36
+ // Give tower a moment to fully initialize
37
+ await new Promise((r) => setTimeout(r, 500));
38
+ }
39
+ // Activate project via tower API
40
+ logger.info('Activating project...');
41
+ const result = await client.activateProject(projectPath);
42
+ if (!result.ok) {
43
+ fatal(`Failed to activate project: ${result.error}`);
44
+ }
45
+ if (result.adopted) {
46
+ logger.info('Project auto-adopted (codev/ directory created)');
47
+ }
48
+ // Get project URL from tower
49
+ const projectUrl = client.getProjectUrl(projectPath);
428
50
  logger.blank();
429
51
  logger.success('Agent Farm started!');
430
- logger.kv('Dashboard', `http://localhost:${dashboardPort}`);
431
- if (isHQEnabled()) {
432
- logger.kv('HQ', process.env.CODEV_HQ_URL);
433
- }
434
- // Open dashboard in browser (unless --no-browser)
435
- if (!options.noBrowser) {
436
- await openBrowser(`http://localhost:${dashboardPort}`);
437
- }
438
- }
439
- /**
440
- * Wait for a server to respond on a given port
441
- * Returns true if server responds, false if timeout
442
- */
443
- async function waitForServer(port, timeoutMs = 5000) {
444
- const startTime = Date.now();
445
- const pollInterval = 100;
446
- while (Date.now() - startTime < timeoutMs) {
447
- try {
448
- const response = await fetch(`http://localhost:${port}/`, {
449
- method: 'HEAD',
450
- signal: AbortSignal.timeout(500),
451
- });
452
- if (response.ok || response.status === 404) {
453
- return true; // Server is responding
454
- }
455
- }
456
- catch {
457
- // Server not ready yet, continue polling
458
- }
459
- await new Promise((resolve) => setTimeout(resolve, pollInterval));
460
- }
461
- return false;
462
- }
463
- /**
464
- * Start the dashboard HTTP server
465
- */
466
- async function startDashboard(projectRoot, port, _architectPort, bindHost) {
467
- const config = getConfig();
468
- // Try TypeScript source first (dev mode), then compiled JS
469
- const tsScript = resolve(config.serversDir, 'dashboard-server.ts');
470
- const jsScript = resolve(config.serversDir, 'dashboard-server.js');
471
- let command;
472
- let args;
473
- // Args: <port> [bindHost]
474
- const serverArgs = [String(port)];
475
- if (bindHost) {
476
- serverArgs.push(bindHost);
477
- }
478
- if (existsSync(tsScript)) {
479
- // Dev mode: run with tsx
480
- command = 'npx';
481
- args = ['tsx', tsScript, ...serverArgs];
482
- }
483
- else if (existsSync(jsScript)) {
484
- // Prod mode: run compiled JS
485
- command = 'node';
486
- args = [jsScript, ...serverArgs];
487
- }
488
- else {
489
- logger.warn('Dashboard server not found, skipping dashboard');
490
- return;
491
- }
492
- logger.debug(`Starting dashboard: ${command} ${args.join(' ')}`);
493
- const serverProcess = spawnDetached(command, args, {
494
- cwd: projectRoot,
495
- });
496
- if (!serverProcess.pid) {
497
- logger.warn('Failed to start dashboard server');
498
- return;
52
+ logger.kv('Dashboard', projectUrl);
53
+ // Open browser only if Tower wasn't already running (user already has it open)
54
+ if (!options.noBrowser && !towerRunning) {
55
+ await openBrowser(projectUrl);
499
56
  }
500
- // Wait for server to actually be ready
501
- const isReady = await waitForServer(port, 5000);
502
- if (!isReady) {
503
- logger.warn(`Dashboard server did not respond on port ${port} within 5 seconds`);
504
- logger.warn('Check for errors above or run with DEBUG=1 for more details');
57
+ else if (towerRunning) {
58
+ logger.info('Tower already running project visible in your browser.');
505
59
  }
506
60
  }
507
61
  //# sourceMappingURL=start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,UAAwB,EAAE;IACpD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAEvC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAElC,sBAAsB;IACtB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEnD,4BAA4B;IAC5B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IAE9C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,UAAU,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3D,0CAA0C;QAC1C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAEzD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,KAAK,CAAC,+BAA+B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC;IAED,6BAA6B;IAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAErD,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAEnC,+EAA+E;IAC/E,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,YAAY,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * Status command - shows status of all agents
3
+ *
4
+ * Phase 3 (Spec 0090): Uses tower API for project status.
3
5
  */
4
6
  /**
5
7
  * Display status of all agent farm processes
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/status.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;GAEG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CA2F5C"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH;;GAEG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAkJ5C"}