@cluesmith/codev 2.0.0-rc.6 → 2.0.0-rc.60

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 (374) 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-CXloFYpB.css +32 -0
  5. package/dashboard/dist/assets/index-Ca2fjOJf.js +131 -0
  6. package/dashboard/dist/assets/index-Ca2fjOJf.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 +94 -65
  10. package/dist/agent-farm/cli.js.map +1 -1
  11. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  12. package/dist/agent-farm/commands/architect.js +13 -6
  13. package/dist/agent-farm/commands/architect.js.map +1 -1
  14. package/dist/agent-farm/commands/attach.d.ts +13 -0
  15. package/dist/agent-farm/commands/attach.d.ts.map +1 -0
  16. package/dist/agent-farm/commands/attach.js +202 -0
  17. package/dist/agent-farm/commands/attach.js.map +1 -0
  18. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  19. package/dist/agent-farm/commands/cleanup.js +30 -3
  20. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  21. package/dist/agent-farm/commands/consult.js +1 -1
  22. package/dist/agent-farm/commands/consult.js.map +1 -1
  23. package/dist/agent-farm/commands/index.d.ts +2 -2
  24. package/dist/agent-farm/commands/index.d.ts.map +1 -1
  25. package/dist/agent-farm/commands/index.js +2 -2
  26. package/dist/agent-farm/commands/index.js.map +1 -1
  27. package/dist/agent-farm/commands/open.d.ts +4 -2
  28. package/dist/agent-farm/commands/open.d.ts.map +1 -1
  29. package/dist/agent-farm/commands/open.js +37 -70
  30. package/dist/agent-farm/commands/open.js.map +1 -1
  31. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  32. package/dist/agent-farm/commands/send.js +55 -17
  33. package/dist/agent-farm/commands/send.js.map +1 -1
  34. package/dist/agent-farm/commands/{util.d.ts → shell.d.ts} +5 -5
  35. package/dist/agent-farm/commands/shell.d.ts.map +1 -0
  36. package/dist/agent-farm/commands/{util.js → shell.js} +23 -36
  37. package/dist/agent-farm/commands/shell.js.map +1 -0
  38. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  39. package/dist/agent-farm/commands/spawn.js +503 -226
  40. package/dist/agent-farm/commands/spawn.js.map +1 -1
  41. package/dist/agent-farm/commands/start.d.ts +3 -0
  42. package/dist/agent-farm/commands/start.d.ts.map +1 -1
  43. package/dist/agent-farm/commands/start.js +55 -265
  44. package/dist/agent-farm/commands/start.js.map +1 -1
  45. package/dist/agent-farm/commands/status.d.ts +2 -0
  46. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  47. package/dist/agent-farm/commands/status.js +61 -3
  48. package/dist/agent-farm/commands/status.js.map +1 -1
  49. package/dist/agent-farm/commands/stop.d.ts +6 -0
  50. package/dist/agent-farm/commands/stop.d.ts.map +1 -1
  51. package/dist/agent-farm/commands/stop.js +116 -12
  52. package/dist/agent-farm/commands/stop.js.map +1 -1
  53. package/dist/agent-farm/commands/tower.d.ts +9 -0
  54. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  55. package/dist/agent-farm/commands/tower.js +59 -19
  56. package/dist/agent-farm/commands/tower.js.map +1 -1
  57. package/dist/agent-farm/db/index.d.ts.map +1 -1
  58. package/dist/agent-farm/db/index.js +124 -0
  59. package/dist/agent-farm/db/index.js.map +1 -1
  60. package/dist/agent-farm/db/schema.d.ts +2 -2
  61. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  62. package/dist/agent-farm/db/schema.js +26 -5
  63. package/dist/agent-farm/db/schema.js.map +1 -1
  64. package/dist/agent-farm/db/types.d.ts +3 -0
  65. package/dist/agent-farm/db/types.d.ts.map +1 -1
  66. package/dist/agent-farm/db/types.js +3 -0
  67. package/dist/agent-farm/db/types.js.map +1 -1
  68. package/dist/agent-farm/hq-connector.d.ts +2 -6
  69. package/dist/agent-farm/hq-connector.d.ts.map +1 -1
  70. package/dist/agent-farm/hq-connector.js +2 -17
  71. package/dist/agent-farm/hq-connector.js.map +1 -1
  72. package/dist/agent-farm/lib/tower-client.d.ts +157 -0
  73. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
  74. package/dist/agent-farm/lib/tower-client.js +223 -0
  75. package/dist/agent-farm/lib/tower-client.js.map +1 -0
  76. package/dist/agent-farm/servers/tower-server.js +2137 -112
  77. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  78. package/dist/agent-farm/state.d.ts +4 -10
  79. package/dist/agent-farm/state.d.ts.map +1 -1
  80. package/dist/agent-farm/state.js +30 -31
  81. package/dist/agent-farm/state.js.map +1 -1
  82. package/dist/agent-farm/types.d.ts +48 -1
  83. package/dist/agent-farm/types.d.ts.map +1 -1
  84. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  85. package/dist/agent-farm/utils/config.js +13 -14
  86. package/dist/agent-farm/utils/config.js.map +1 -1
  87. package/dist/agent-farm/utils/deps.d.ts.map +1 -1
  88. package/dist/agent-farm/utils/deps.js +0 -16
  89. package/dist/agent-farm/utils/deps.js.map +1 -1
  90. package/dist/agent-farm/utils/notifications.d.ts +30 -0
  91. package/dist/agent-farm/utils/notifications.d.ts.map +1 -0
  92. package/dist/agent-farm/utils/notifications.js +121 -0
  93. package/dist/agent-farm/utils/notifications.js.map +1 -0
  94. package/dist/agent-farm/utils/port-registry.d.ts +0 -1
  95. package/dist/agent-farm/utils/port-registry.d.ts.map +1 -1
  96. package/dist/agent-farm/utils/port-registry.js +1 -1
  97. package/dist/agent-farm/utils/port-registry.js.map +1 -1
  98. package/dist/agent-farm/utils/server-utils.d.ts +4 -4
  99. package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
  100. package/dist/agent-farm/utils/server-utils.js +4 -15
  101. package/dist/agent-farm/utils/server-utils.js.map +1 -1
  102. package/dist/agent-farm/utils/shell.d.ts +9 -22
  103. package/dist/agent-farm/utils/shell.d.ts.map +1 -1
  104. package/dist/agent-farm/utils/shell.js +34 -34
  105. package/dist/agent-farm/utils/shell.js.map +1 -1
  106. package/dist/agent-farm/utils/terminal-ports.d.ts +1 -1
  107. package/dist/agent-farm/utils/terminal-ports.js +1 -1
  108. package/dist/cli.d.ts.map +1 -1
  109. package/dist/cli.js +7 -54
  110. package/dist/cli.js.map +1 -1
  111. package/dist/commands/adopt.d.ts.map +1 -1
  112. package/dist/commands/adopt.js +49 -4
  113. package/dist/commands/adopt.js.map +1 -1
  114. package/dist/commands/consult/index.d.ts +1 -0
  115. package/dist/commands/consult/index.d.ts.map +1 -1
  116. package/dist/commands/consult/index.js +85 -6
  117. package/dist/commands/consult/index.js.map +1 -1
  118. package/dist/commands/doctor.d.ts.map +1 -1
  119. package/dist/commands/doctor.js +0 -15
  120. package/dist/commands/doctor.js.map +1 -1
  121. package/dist/commands/init.d.ts.map +1 -1
  122. package/dist/commands/init.js +41 -2
  123. package/dist/commands/init.js.map +1 -1
  124. package/dist/commands/porch/build-counter.d.ts +5 -0
  125. package/dist/commands/porch/build-counter.d.ts.map +1 -0
  126. package/dist/commands/porch/build-counter.js +5 -0
  127. package/dist/commands/porch/build-counter.js.map +1 -0
  128. package/dist/commands/porch/checks.d.ts +17 -29
  129. package/dist/commands/porch/checks.d.ts.map +1 -1
  130. package/dist/commands/porch/checks.js +96 -144
  131. package/dist/commands/porch/checks.js.map +1 -1
  132. package/dist/commands/porch/index.d.ts +21 -43
  133. package/dist/commands/porch/index.d.ts.map +1 -1
  134. package/dist/commands/porch/index.js +418 -1123
  135. package/dist/commands/porch/index.js.map +1 -1
  136. package/dist/commands/porch/next.d.ts +22 -0
  137. package/dist/commands/porch/next.d.ts.map +1 -0
  138. package/dist/commands/porch/next.js +479 -0
  139. package/dist/commands/porch/next.js.map +1 -0
  140. package/dist/commands/porch/plan.d.ts +70 -0
  141. package/dist/commands/porch/plan.d.ts.map +1 -0
  142. package/dist/commands/porch/plan.js +190 -0
  143. package/dist/commands/porch/plan.js.map +1 -0
  144. package/dist/commands/porch/prompts.d.ts +19 -0
  145. package/dist/commands/porch/prompts.d.ts.map +1 -0
  146. package/dist/commands/porch/prompts.js +255 -0
  147. package/dist/commands/porch/prompts.js.map +1 -0
  148. package/dist/commands/porch/protocol.d.ts +59 -0
  149. package/dist/commands/porch/protocol.d.ts.map +1 -0
  150. package/dist/commands/porch/protocol.js +294 -0
  151. package/dist/commands/porch/protocol.js.map +1 -0
  152. package/dist/commands/porch/state.d.ts +23 -112
  153. package/dist/commands/porch/state.d.ts.map +1 -1
  154. package/dist/commands/porch/state.js +81 -699
  155. package/dist/commands/porch/state.js.map +1 -1
  156. package/dist/commands/porch/types.d.ts +99 -164
  157. package/dist/commands/porch/types.d.ts.map +1 -1
  158. package/dist/commands/porch/types.js +2 -1
  159. package/dist/commands/porch/types.js.map +1 -1
  160. package/dist/commands/porch/verdict.d.ts +31 -0
  161. package/dist/commands/porch/verdict.d.ts.map +1 -0
  162. package/dist/commands/porch/verdict.js +59 -0
  163. package/dist/commands/porch/verdict.js.map +1 -0
  164. package/dist/commands/update.d.ts.map +1 -1
  165. package/dist/commands/update.js +31 -0
  166. package/dist/commands/update.js.map +1 -1
  167. package/dist/lib/scaffold.d.ts +37 -0
  168. package/dist/lib/scaffold.d.ts.map +1 -1
  169. package/dist/lib/scaffold.js +114 -0
  170. package/dist/lib/scaffold.js.map +1 -1
  171. package/dist/terminal/index.d.ts +8 -0
  172. package/dist/terminal/index.d.ts.map +1 -0
  173. package/dist/terminal/index.js +5 -0
  174. package/dist/terminal/index.js.map +1 -0
  175. package/dist/terminal/pty-manager.d.ts +60 -0
  176. package/dist/terminal/pty-manager.d.ts.map +1 -0
  177. package/dist/terminal/pty-manager.js +334 -0
  178. package/dist/terminal/pty-manager.js.map +1 -0
  179. package/dist/terminal/pty-session.d.ts +79 -0
  180. package/dist/terminal/pty-session.d.ts.map +1 -0
  181. package/dist/terminal/pty-session.js +215 -0
  182. package/dist/terminal/pty-session.js.map +1 -0
  183. package/dist/terminal/ring-buffer.d.ts +27 -0
  184. package/dist/terminal/ring-buffer.d.ts.map +1 -0
  185. package/dist/terminal/ring-buffer.js +74 -0
  186. package/dist/terminal/ring-buffer.js.map +1 -0
  187. package/dist/terminal/ws-protocol.d.ts +27 -0
  188. package/dist/terminal/ws-protocol.d.ts.map +1 -0
  189. package/dist/terminal/ws-protocol.js +44 -0
  190. package/dist/terminal/ws-protocol.js.map +1 -0
  191. package/package.json +18 -5
  192. package/skeleton/.claude/skills/af/SKILL.md +74 -0
  193. package/skeleton/.claude/skills/codev/SKILL.md +41 -0
  194. package/skeleton/.claude/skills/consult/SKILL.md +81 -0
  195. package/skeleton/.claude/skills/generate-image/SKILL.md +56 -0
  196. package/skeleton/DEPENDENCIES.md +3 -29
  197. package/skeleton/builders.md +1 -1
  198. package/skeleton/porch/prompts/defend.md +1 -1
  199. package/skeleton/porch/prompts/evaluate.md +2 -2
  200. package/skeleton/porch/prompts/implement.md +1 -1
  201. package/skeleton/porch/prompts/plan.md +1 -1
  202. package/skeleton/porch/prompts/review.md +4 -4
  203. package/skeleton/porch/prompts/specify.md +1 -1
  204. package/skeleton/porch/prompts/understand.md +2 -2
  205. package/skeleton/protocol-schema.json +282 -0
  206. package/skeleton/protocols/bugfix/builder-prompt.md +54 -0
  207. package/skeleton/protocols/bugfix/prompts/fix.md +77 -0
  208. package/skeleton/protocols/bugfix/prompts/investigate.md +77 -0
  209. package/skeleton/protocols/bugfix/prompts/pr.md +61 -0
  210. package/skeleton/protocols/bugfix/protocol.json +19 -2
  211. package/skeleton/protocols/experiment/builder-prompt.md +52 -0
  212. package/skeleton/protocols/experiment/protocol.json +101 -0
  213. package/skeleton/protocols/experiment/protocol.md +3 -3
  214. package/skeleton/protocols/experiment/templates/notes.md +1 -1
  215. package/skeleton/protocols/maintain/builder-prompt.md +46 -0
  216. package/skeleton/protocols/maintain/prompts/audit.md +111 -0
  217. package/skeleton/protocols/maintain/prompts/clean.md +91 -0
  218. package/skeleton/protocols/maintain/prompts/sync.md +113 -0
  219. package/skeleton/protocols/maintain/prompts/verify.md +110 -0
  220. package/skeleton/protocols/maintain/protocol.json +141 -0
  221. package/skeleton/protocols/maintain/protocol.md +14 -8
  222. package/skeleton/protocols/protocol-schema.json +54 -1
  223. package/skeleton/protocols/spir/builder-prompt.md +59 -0
  224. package/skeleton/protocols/spir/prompts/implement.md +208 -0
  225. package/skeleton/protocols/{spider → spir}/prompts/plan.md +6 -70
  226. package/skeleton/protocols/{spider → spir}/prompts/review.md +7 -25
  227. package/skeleton/protocols/{spider → spir}/prompts/specify.md +33 -61
  228. package/skeleton/protocols/spir/protocol.json +152 -0
  229. package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
  230. package/skeleton/protocols/{spider → spir}/templates/plan.md +14 -0
  231. package/skeleton/protocols/{spider → spir}/templates/review.md +1 -1
  232. package/skeleton/protocols/tick/builder-prompt.md +56 -0
  233. package/skeleton/protocols/tick/protocol.json +7 -2
  234. package/skeleton/protocols/tick/protocol.md +18 -18
  235. package/skeleton/protocols/tick/templates/review.md +1 -1
  236. package/skeleton/resources/commands/agent-farm.md +25 -43
  237. package/skeleton/resources/commands/overview.md +7 -17
  238. package/skeleton/resources/workflow-reference.md +4 -4
  239. package/skeleton/roles/architect.md +152 -315
  240. package/skeleton/roles/builder.md +109 -218
  241. package/skeleton/templates/AGENTS.md +2 -2
  242. package/skeleton/templates/CLAUDE.md +2 -2
  243. package/skeleton/templates/cheatsheet.md +7 -5
  244. package/skeleton/templates/projectlist.md +1 -1
  245. package/templates/dashboard/index.html +17 -43
  246. package/templates/dashboard/js/dialogs.js +7 -7
  247. package/templates/dashboard/js/files.js +2 -2
  248. package/templates/dashboard/js/main.js +4 -4
  249. package/templates/dashboard/js/projects.js +3 -3
  250. package/templates/dashboard/js/tabs.js +1 -1
  251. package/templates/dashboard/js/utils.js +22 -87
  252. package/templates/open.html +26 -0
  253. package/templates/tower.html +542 -27
  254. package/dist/agent-farm/commands/kickoff.d.ts +0 -19
  255. package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
  256. package/dist/agent-farm/commands/kickoff.js +0 -331
  257. package/dist/agent-farm/commands/kickoff.js.map +0 -1
  258. package/dist/agent-farm/commands/rename.d.ts +0 -13
  259. package/dist/agent-farm/commands/rename.d.ts.map +0 -1
  260. package/dist/agent-farm/commands/rename.js +0 -33
  261. package/dist/agent-farm/commands/rename.js.map +0 -1
  262. package/dist/agent-farm/commands/tutorial.d.ts +0 -10
  263. package/dist/agent-farm/commands/tutorial.d.ts.map +0 -1
  264. package/dist/agent-farm/commands/tutorial.js +0 -49
  265. package/dist/agent-farm/commands/tutorial.js.map +0 -1
  266. package/dist/agent-farm/commands/util.d.ts.map +0 -1
  267. package/dist/agent-farm/commands/util.js.map +0 -1
  268. package/dist/agent-farm/servers/dashboard-server.d.ts +0 -7
  269. package/dist/agent-farm/servers/dashboard-server.d.ts.map +0 -1
  270. package/dist/agent-farm/servers/dashboard-server.js +0 -1872
  271. package/dist/agent-farm/servers/dashboard-server.js.map +0 -1
  272. package/dist/agent-farm/servers/open-server.d.ts +0 -7
  273. package/dist/agent-farm/servers/open-server.d.ts.map +0 -1
  274. package/dist/agent-farm/servers/open-server.js +0 -315
  275. package/dist/agent-farm/servers/open-server.js.map +0 -1
  276. package/dist/agent-farm/tutorial/index.d.ts +0 -8
  277. package/dist/agent-farm/tutorial/index.d.ts.map +0 -1
  278. package/dist/agent-farm/tutorial/index.js +0 -8
  279. package/dist/agent-farm/tutorial/index.js.map +0 -1
  280. package/dist/agent-farm/tutorial/prompts.d.ts +0 -57
  281. package/dist/agent-farm/tutorial/prompts.d.ts.map +0 -1
  282. package/dist/agent-farm/tutorial/prompts.js +0 -147
  283. package/dist/agent-farm/tutorial/prompts.js.map +0 -1
  284. package/dist/agent-farm/tutorial/runner.d.ts +0 -52
  285. package/dist/agent-farm/tutorial/runner.d.ts.map +0 -1
  286. package/dist/agent-farm/tutorial/runner.js +0 -204
  287. package/dist/agent-farm/tutorial/runner.js.map +0 -1
  288. package/dist/agent-farm/tutorial/state.d.ts +0 -26
  289. package/dist/agent-farm/tutorial/state.d.ts.map +0 -1
  290. package/dist/agent-farm/tutorial/state.js +0 -89
  291. package/dist/agent-farm/tutorial/state.js.map +0 -1
  292. package/dist/agent-farm/tutorial/steps/first-spec.d.ts +0 -7
  293. package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +0 -1
  294. package/dist/agent-farm/tutorial/steps/first-spec.js +0 -136
  295. package/dist/agent-farm/tutorial/steps/first-spec.js.map +0 -1
  296. package/dist/agent-farm/tutorial/steps/implementation.d.ts +0 -7
  297. package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +0 -1
  298. package/dist/agent-farm/tutorial/steps/implementation.js +0 -76
  299. package/dist/agent-farm/tutorial/steps/implementation.js.map +0 -1
  300. package/dist/agent-farm/tutorial/steps/index.d.ts +0 -10
  301. package/dist/agent-farm/tutorial/steps/index.d.ts.map +0 -1
  302. package/dist/agent-farm/tutorial/steps/index.js +0 -10
  303. package/dist/agent-farm/tutorial/steps/index.js.map +0 -1
  304. package/dist/agent-farm/tutorial/steps/planning.d.ts +0 -7
  305. package/dist/agent-farm/tutorial/steps/planning.d.ts.map +0 -1
  306. package/dist/agent-farm/tutorial/steps/planning.js +0 -143
  307. package/dist/agent-farm/tutorial/steps/planning.js.map +0 -1
  308. package/dist/agent-farm/tutorial/steps/review.d.ts +0 -7
  309. package/dist/agent-farm/tutorial/steps/review.d.ts.map +0 -1
  310. package/dist/agent-farm/tutorial/steps/review.js +0 -78
  311. package/dist/agent-farm/tutorial/steps/review.js.map +0 -1
  312. package/dist/agent-farm/tutorial/steps/setup.d.ts +0 -7
  313. package/dist/agent-farm/tutorial/steps/setup.d.ts.map +0 -1
  314. package/dist/agent-farm/tutorial/steps/setup.js +0 -126
  315. package/dist/agent-farm/tutorial/steps/setup.js.map +0 -1
  316. package/dist/agent-farm/tutorial/steps/welcome.d.ts +0 -7
  317. package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +0 -1
  318. package/dist/agent-farm/tutorial/steps/welcome.js +0 -50
  319. package/dist/agent-farm/tutorial/steps/welcome.js.map +0 -1
  320. package/dist/commands/pcheck/cache.d.ts +0 -48
  321. package/dist/commands/pcheck/cache.d.ts.map +0 -1
  322. package/dist/commands/pcheck/cache.js +0 -170
  323. package/dist/commands/pcheck/cache.js.map +0 -1
  324. package/dist/commands/pcheck/evaluator.d.ts +0 -15
  325. package/dist/commands/pcheck/evaluator.d.ts.map +0 -1
  326. package/dist/commands/pcheck/evaluator.js +0 -246
  327. package/dist/commands/pcheck/evaluator.js.map +0 -1
  328. package/dist/commands/pcheck/index.d.ts +0 -12
  329. package/dist/commands/pcheck/index.d.ts.map +0 -1
  330. package/dist/commands/pcheck/index.js +0 -249
  331. package/dist/commands/pcheck/index.js.map +0 -1
  332. package/dist/commands/pcheck/parser.d.ts +0 -39
  333. package/dist/commands/pcheck/parser.d.ts.map +0 -1
  334. package/dist/commands/pcheck/parser.js +0 -155
  335. package/dist/commands/pcheck/parser.js.map +0 -1
  336. package/dist/commands/pcheck/types.d.ts +0 -82
  337. package/dist/commands/pcheck/types.d.ts.map +0 -1
  338. package/dist/commands/pcheck/types.js +0 -5
  339. package/dist/commands/pcheck/types.js.map +0 -1
  340. package/dist/commands/porch/consultation.d.ts +0 -56
  341. package/dist/commands/porch/consultation.d.ts.map +0 -1
  342. package/dist/commands/porch/consultation.js +0 -330
  343. package/dist/commands/porch/consultation.js.map +0 -1
  344. package/dist/commands/porch/notifications.d.ts +0 -99
  345. package/dist/commands/porch/notifications.d.ts.map +0 -1
  346. package/dist/commands/porch/notifications.js +0 -223
  347. package/dist/commands/porch/notifications.js.map +0 -1
  348. package/dist/commands/porch/plan-parser.d.ts +0 -38
  349. package/dist/commands/porch/plan-parser.d.ts.map +0 -1
  350. package/dist/commands/porch/plan-parser.js +0 -166
  351. package/dist/commands/porch/plan-parser.js.map +0 -1
  352. package/dist/commands/porch/protocol-loader.d.ts +0 -46
  353. package/dist/commands/porch/protocol-loader.d.ts.map +0 -1
  354. package/dist/commands/porch/protocol-loader.js +0 -253
  355. package/dist/commands/porch/protocol-loader.js.map +0 -1
  356. package/dist/commands/porch/signal-parser.d.ts +0 -88
  357. package/dist/commands/porch/signal-parser.d.ts.map +0 -1
  358. package/dist/commands/porch/signal-parser.js +0 -148
  359. package/dist/commands/porch/signal-parser.js.map +0 -1
  360. package/dist/commands/tower.d.ts +0 -16
  361. package/dist/commands/tower.d.ts.map +0 -1
  362. package/dist/commands/tower.js +0 -21
  363. package/dist/commands/tower.js.map +0 -1
  364. package/skeleton/config.json +0 -7
  365. package/skeleton/porch/protocols/bugfix.json +0 -85
  366. package/skeleton/porch/protocols/spider.json +0 -135
  367. package/skeleton/porch/protocols/tick.json +0 -76
  368. package/skeleton/protocols/spider/prompts/defend.md +0 -215
  369. package/skeleton/protocols/spider/prompts/evaluate.md +0 -241
  370. package/skeleton/protocols/spider/prompts/implement.md +0 -149
  371. package/skeleton/protocols/spider/protocol.json +0 -210
  372. package/templates/dashboard/css/activity.css +0 -151
  373. package/templates/dashboard/js/activity.js +0 -112
  374. /package/skeleton/protocols/{spider → spir}/templates/spec.md +0 -0
@@ -1,211 +1,155 @@
1
1
  # Role: Builder
2
2
 
3
- A Builder is a focused implementation agent that works on a single spec in an isolated git worktree. Builders are spawned by the Architect and report their status back.
3
+ A Builder is an implementation agent that works on a single project in an isolated git worktree.
4
4
 
5
- > **Quick Reference**: See `codev/resources/workflow-reference.md` for stage diagrams and common commands.
5
+ ## Two Operating Modes
6
6
 
7
- ## Output Formatting
7
+ Builders run in one of two modes, determined by how they were spawned:
8
8
 
9
- When referencing files, use standard file paths or open them directly with `af open`:
9
+ | Mode | Command | Behavior |
10
+ |------|---------|----------|
11
+ | **Strict** (default) | `af spawn -p XXXX` | Porch orchestrates - runs autonomously to completion |
12
+ | **Soft** | `af spawn --soft -p XXXX` | AI follows protocol - architect verifies compliance |
10
13
 
11
- ```bash
12
- # Open a file for review in the dashboard
13
- af open src/lib/auth.ts
14
+ ## Strict Mode (Default)
14
15
 
15
- # Check your status
16
- af status
16
+ Spawned with: `af spawn -p XXXX`
17
17
 
18
- # Send a message to the architect
19
- af send architect "Question about the spec..."
20
- ```
18
+ In strict mode, porch orchestrates your work and drives the protocol to completion autonomously. Your job is simple: **run porch until the project completes**.
21
19
 
22
- The `af` commands work from worktrees - they automatically find the main repository's state.
20
+ ### The Core Loop
23
21
 
24
- ## Responsibilities
22
+ ```bash
23
+ # 1. Check your current state
24
+ porch status
25
25
 
26
- 1. **Implement a single spec** - Focus on one well-defined task
27
- 2. **Work in isolation** - Use the assigned git worktree
28
- 3. **Follow the assigned protocol** - SPIDER or TICK as specified in the spec
29
- 4. **Report status** - Keep status updated (implementing/blocked/pr-ready)
30
- 5. **Request help when blocked** - Don't spin; output a clear blocker message
31
- 6. **Deliver clean PRs** - Tests passing, code reviewed, protocol artifacts complete
26
+ # 2. Run the protocol loop
27
+ porch run
32
28
 
33
- ## Protocol Adherence
29
+ # 3. If porch hits a gate, STOP and wait for human approval
30
+ # 4. After gate approval, run porch again
31
+ # 5. Repeat until project is complete
32
+ ```
34
33
 
35
- **The spec will tell you which protocol to use: SPIDER or TICK.**
34
+ Porch handles:
35
+ - Spawning Claude to create artifacts (spec, plan, code)
36
+ - Running 3-way consultations (Gemini, Codex, Claude)
37
+ - Iterating based on feedback
38
+ - Enforcing phase transitions
36
39
 
37
- You are expected to **adhere FULLY to the protocol**. Before starting:
38
- 1. Read the spec carefully to identify the protocol
39
- 2. Read the full protocol documentation:
40
- - SPIDER: `codev/protocols/spider/protocol.md`
41
- - TICK: `codev/protocols/tick/protocol.md`
42
- 3. Follow every phase and produce all required artifacts
40
+ ### Gates: When to STOP
43
41
 
44
- ### SPIDER Protocol Summary
42
+ Porch has two human approval gates:
45
43
 
46
- SPIDER works in phases. The Builder is responsible for **IDER** (the Architect handles SP):
44
+ | Gate | When | What to do |
45
+ |------|------|------------|
46
+ | `spec-approval` | After spec is written | **STOP** and wait |
47
+ | `plan-approval` | After plan is written | **STOP** and wait |
47
48
 
48
- 1. **Implement** - Write the code following the plan
49
+ When porch outputs:
50
+ ```
51
+ GATE: spec-approval
52
+ Human approval required. STOP and wait.
53
+ ```
49
54
 
50
- 2. **Defend** - Write tests to validate the implementation
55
+ You must:
56
+ 1. Output a clear message: "Spec ready for approval. Waiting for human."
57
+ 2. **STOP working**
58
+ 3. Wait for the human to run `porch approve XXXX spec-approval`
59
+ 4. After approval, run `porch run` again
51
60
 
52
- 3. **Evaluate** - Verify requirements are met
53
- - Self-review: Does the implementation satisfy the spec?
54
- - Self-review: Do the tests adequately cover the requirements?
55
- - **Consult external reviewers** on the complete implementation + tests:
56
- ```bash
57
- consult --model gemini --type impl-review spec XXXX
58
- consult --model codex --type impl-review spec XXXX
59
- ```
60
- - Address concerns raised before proceeding to Review
61
+ ### What You DON'T Do in Strict Mode
61
62
 
62
- 4. **Review** - Document lessons learned, run 3-way review, create PR
63
- - Write the review document (`codev/reviews/XXXX-spec-name.md`)
64
- - **Run 3-way parallel review focused on IMPLEMENTATION quality**:
65
- ```bash
66
- QUERY="Review Spec XXXX implementation. Branch: builder/XXXX-...
63
+ - **Don't manually follow SPIR steps** - Porch handles this
64
+ - **Don't run consult directly** - Porch runs 3-way reviews
65
+ - **Don't edit status.yaml phase/iteration** - Only porch modifies state
66
+ - **Don't call porch approve** - Only humans approve gates
67
+ - **Don't skip gates** - Always stop and wait for approval
67
68
 
68
- Focus on:
69
- - Implementation quality and correctness
70
- - Test coverage and quality
71
- - Adherence to spec requirements
72
- - Code patterns and best practices
73
- - Edge cases and error handling
69
+ ## Soft Mode
74
70
 
75
- Give verdict: APPROVE or REQUEST_CHANGES."
71
+ Spawned with: `af spawn --soft -p XXXX` or `af spawn --task "..."`
76
72
 
77
- consult --model gemini --type pr-ready pr $PR_NUMBER &
78
- consult --model codex --type pr-ready pr $PR_NUMBER &
79
- consult --model claude --type pr-ready pr $PR_NUMBER &
80
- wait
81
- ```
82
- - Address any REQUEST_CHANGES feedback before creating the PR
83
- - Include the 3-way review summary in your PR description
73
+ In soft mode, you follow the protocol document yourself. The architect monitors your work and verifies you're adhering to the protocol correctly.
84
74
 
85
- **Note**: The Architect will run a separate 3-way review focused on **integration** concerns.
75
+ ### Startup Sequence
86
76
 
87
- **Commit at the end of each phase** with a message indicating the phase:
88
77
  ```bash
89
- git add <files>
90
- git commit -m "[Spec XXXX][Implement] Add auth routes"
91
- git commit -m "[Spec XXXX][Defend] Add unit tests for auth"
92
- git commit -m "[Spec XXXX][Review] Add lessons learned"
93
- ```
94
-
95
- ### TICK Protocol Summary
96
-
97
- TICK is for smaller, well-defined tasks:
98
- - Understand → Implement → Verify → Done
99
-
100
- Follow the TICK protocol documentation for details.
101
-
102
- ## Spec Compliance (CRITICAL)
78
+ # Read the spec and/or plan
79
+ cat codev/specs/XXXX-*.md
80
+ cat codev/plans/XXXX-*.md
103
81
 
104
- **The spec is the source of truth. Code that doesn't match the spec is wrong, even if it "works".**
82
+ # Read the protocol
83
+ cat codev/protocols/spir/protocol.md
105
84
 
106
- ### Pre-Implementation Sanity Check (PISC)
107
-
108
- **Before writing ANY code, run this checklist:**
85
+ # Start implementing
86
+ ```
109
87
 
110
- 1. "Have I read the spec in the last 30 minutes?"
111
- 2. ✅ "If the spec has a 'Traps to Avoid' section, have I read it?"
112
- 3. ✅ "Does my planned approach match the spec's Technical Implementation section?"
113
- 4. ✅ "If the spec has code examples, am I following them?"
114
- 5. ✅ "Does the existing code I'm building on actually match the spec?"
88
+ ### The SPIR Protocol (Specify Plan Implement Review)
115
89
 
116
- **If ANY answer is "no" or "I'm not sure" → STOP and re-read the spec before proceeding.**
90
+ 1. **Specify**: Read or create the spec at `codev/specs/XXXX-name.md`
91
+ 2. **Plan**: Read or create the plan at `codev/plans/XXXX-name.md`
92
+ 3. **Implement**: Write code following the plan phases
93
+ 4. **Review**: Write lessons learned and create PR
117
94
 
118
- ### The Trust Hierarchy
95
+ ### Consultations
119
96
 
97
+ Run 3-way consultations at checkpoints:
98
+ ```bash
99
+ # After writing spec
100
+ consult --model gemini --type spec-review spec XXXX &
101
+ consult --model codex --type spec-review spec XXXX &
102
+ consult --model claude --type spec-review spec XXXX &
103
+ wait
104
+
105
+ # After writing plan
106
+ consult --model gemini --type plan-review plan XXXX &
107
+ consult --model codex --type plan-review plan XXXX &
108
+ consult --model claude --type plan-review plan XXXX &
109
+ wait
110
+
111
+ # After implementation
112
+ consult --model gemini --type impl-review pr N &
113
+ consult --model codex --type impl-review pr N &
114
+ consult --model claude --type impl-review pr N &
115
+ wait
120
116
  ```
121
- SPEC (source of truth)
122
-
123
- PLAN (implementation guide derived from spec)
124
-
125
- EXISTING CODE (NOT TRUSTED - must be validated against spec)
126
- ```
127
-
128
- **Never trust existing code over the spec.** Previous implementations may have drifted. The spec is always authoritative.
129
-
130
- ### Avoiding "Fixing Mode"
131
117
 
132
- A dangerous pattern: You start looking at symptoms in code, making incremental fixes, copying existing patterns - without going back to the source of truth (spec). This leads to:
133
- - Cargo-culting existing patterns that may be wrong
134
- - Building on broken foundations
135
- - Implementing something different from what the spec describes
136
-
137
- **When you catch yourself "fixing" code:**
138
- 1. STOP
139
- 2. Ask: "What does the spec say about this?"
140
- 3. Re-read the spec's Traps to Avoid section
141
- 4. Verify existing code matches the spec before building on it
118
+ ## Deliverables
142
119
 
143
- ### Phrases That Should Trigger Spec Re-reading
120
+ - Spec at `codev/specs/XXXX-name.md`
121
+ - Plan at `codev/plans/XXXX-name.md`
122
+ - Review at `codev/reviews/XXXX-name.md`
123
+ - Implementation code with tests
124
+ - PR ready for architect review
144
125
 
145
- If you think or receive any of these, immediately re-read the spec:
146
- - "Does this match the spec?"
147
- - "What does the spec say about X?"
148
- - "Check the spec's Traps to Avoid section"
149
- - "Are you sure?"
150
- - "You're cargo-culting existing patterns"
126
+ ## Communication
151
127
 
152
- ## Status Lifecycle
128
+ ### With the Architect
153
129
 
154
- ```
155
- spawning → implementing → blocked → implementing → pr-ready → complete
156
- ↑______________|
130
+ If you're blocked or need help:
131
+ ```bash
132
+ af send architect "Question about the spec..."
157
133
  ```
158
134
 
159
- ### Status Definitions
160
-
161
- | Status | Meaning |
162
- |--------|---------|
163
- | `spawning` | Worktree created, Builder starting up |
164
- | `implementing` | Actively working on the spec |
165
- | `blocked` | Stuck, needs Architect help |
166
- | `pr-ready` | Implementation complete, ready for review |
167
- | `complete` | Merged, worktree can be cleaned up |
168
-
169
135
  ### Checking Status
170
136
 
171
137
  ```bash
172
- af status
138
+ porch status # (strict mode) Your project status
139
+ af status # All builders
173
140
  ```
174
141
 
175
- You can check your own status and see other builders. The Architect also monitors status.
176
-
177
- ## Working in a Worktree
178
-
179
- ### Understanding Your Environment
180
- - You are in an isolated git worktree at `.builders/XXXX/`
181
- - You have your own branch: `builder/XXXX-spec-name`
182
- - Changes here don't affect main until merged
183
- - You can commit freely without affecting other Builders
184
-
185
- ### File Access
186
- - Full access to your worktree
187
- - Read-only conceptual access to main (for reference)
188
- - Your spec is at `codev/specs/XXXX-spec-name.md`
189
- - Your plan is at `codev/plans/XXXX-spec-name.md`
190
-
191
- ## When to Report Blocked
142
+ ## When You're Blocked
192
143
 
193
- Report `blocked` status when:
194
- - Spec is ambiguous and you need clarification
195
- - You discover a dependency on another spec
196
- - You encounter an unexpected technical blocker
197
- - You need architectural guidance
198
- - Tests are failing for reasons outside your scope
144
+ If you encounter issues you can't resolve:
199
145
 
200
- **Do NOT stay blocked silently.** Communicate your blocker clearly:
146
+ 1. **Output a clear blocker message** describing the problem and options
147
+ 2. **Use `af send architect "..."` ** to notify the Architect
148
+ 3. **Wait for guidance** before proceeding
201
149
 
202
- 1. Output a clear message in your terminal describing the blocker and options
203
- 2. Add a `<!-- REVIEW(@architect): question here -->` comment in relevant code if applicable
204
- 3. The Architect monitors builder status via `af status` and will see you're blocked
205
-
206
- Example blocker message to output:
150
+ Example:
207
151
  ```
208
- ## BLOCKED: Spec 0003
152
+ ## BLOCKED: Spec 0077
209
153
  Can't find the auth helper mentioned in spec. Options:
210
154
  1. Create a new auth helper
211
155
  2. Use a third-party library
@@ -213,65 +157,12 @@ Can't find the auth helper mentioned in spec. Options:
213
157
  Waiting for Architect guidance.
214
158
  ```
215
159
 
216
- The Architect will provide guidance via `af send` or PR comments.
217
-
218
- ## Deliverables
219
-
220
- When done, a Builder should have:
221
-
222
- 1. **Implementation** - Code that fulfills the spec
223
- 2. **Tests** - Appropriate test coverage
224
- 3. **Documentation** - Updated relevant docs (if needed)
225
- 4. **Clean commits** - Atomic, well-messaged commits per phase
226
- 5. **Review document** - As specified in the SPIDER protocol (`codev/reviews/XXXX-spec-name.md`)
227
- 6. **PR-ready branch** - Ready for Architect review
228
-
229
- ## Communication with Architect
230
-
231
- ### Receiving Instructions
232
- The Architect provides:
233
- - Spec file path
234
- - Plan file path
235
- - Protocol to follow (SPIDER/TICK)
236
- - Context and constraints
237
-
238
- ### Reporting Completion
239
- When implementation is complete:
240
- 1. Run all tests
241
- 2. Self-review the code
242
- 3. Ensure all protocol artifacts are present (especially the review document for SPIDER)
243
- 4. Create a PR: `gh pr create --title "[Spec XXXX] Description" --body "..."`
244
- 5. Update status to `pr-ready`
245
- 6. Wait for Architect review and approval
246
- 7. **Merge your own PR** once approved: `gh pr merge --merge --delete-branch`
247
-
248
- **Important**: The Builder is responsible for merging after Architect approval. This ensures the Builder sees the merge succeed and can handle any final cleanup.
249
-
250
- ### Receiving PR Feedback
251
-
252
- The Architect reviews PRs and leaves feedback as GitHub PR comments. When notified to check feedback:
253
-
254
- ```bash
255
- # View PR comments
256
- gh pr view <PR_NUMBER> --comments
257
-
258
- # Or view the full PR with comments in browser
259
- gh pr view <PR_NUMBER> --web
260
- ```
261
-
262
- **Workflow:**
263
- 1. Architect leaves review comments on PR
264
- 2. You receive a short message: "Check PR comments and address feedback"
265
- 3. Run `gh pr view <PR_NUMBER> --comments` to see feedback
266
- 4. Address the issues (High priority first, then Medium, Low is optional)
267
- 5. Push fixes to the same branch
268
- 6. Reply to PR comment when done or if clarification needed
269
-
270
160
  ## Constraints
271
161
 
272
- - **Stay in scope** - Only implement what's in your spec
273
- - **Don't modify shared config** - Without Architect approval
274
- - **Merge your own PRs** - After Architect approves, you are responsible for merging
275
- - **Don't spawn other Builders** - Only Architects spawn Builders
162
+ - **Stay in scope** - Only implement what's in the spec
163
+ - **Merge your own PRs** - After architect approves
276
164
  - **Keep worktree clean** - No untracked files, no debug code
277
- - **Follow the protocol** - All phases, all artifacts
165
+ - **(Strict mode)** Run porch, don't bypass it
166
+ - **(Strict mode)** Stop at gates - Human approval is required
167
+ - **(Strict mode)** NEVER edit status.yaml directly
168
+ - **(Strict mode)** NEVER call porch approve
@@ -8,7 +8,7 @@ This project uses **Codev** for AI-assisted development.
8
8
 
9
9
  ## Available Protocols
10
10
 
11
- - **SPIDER**: Multi-phase development with consultation (`codev/protocols/spider/protocol.md`)
11
+ - **SPIR**: Multi-phase development with consultation (`codev/protocols/spir/protocol.md`)
12
12
  - **TICK**: Fast autonomous implementation (`codev/protocols/tick/protocol.md`)
13
13
  - **EXPERIMENT**: Disciplined experimentation (`codev/protocols/experiment/protocol.md`)
14
14
  - **MAINTAIN**: Codebase maintenance (`codev/protocols/maintain/protocol.md`)
@@ -60,7 +60,7 @@ For complete reference, see `codev/resources/commands/`:
60
60
 
61
61
  ## Configuration
62
62
 
63
- Customize Agent Farm behavior in `codev/config.json`:
63
+ Agent Farm is configured via `af-config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
64
64
 
65
65
  ```json
66
66
  {
@@ -6,7 +6,7 @@ This project uses **Codev** for AI-assisted development.
6
6
 
7
7
  ## Available Protocols
8
8
 
9
- - **SPIDER**: Multi-phase development with consultation (`codev/protocols/spider/protocol.md`)
9
+ - **SPIR**: Multi-phase development with consultation (`codev/protocols/spir/protocol.md`)
10
10
  - **TICK**: Fast autonomous implementation (`codev/protocols/tick/protocol.md`)
11
11
  - **EXPERIMENT**: Disciplined experimentation (`codev/protocols/experiment/protocol.md`)
12
12
  - **MAINTAIN**: Codebase maintenance (`codev/protocols/maintain/protocol.md`)
@@ -58,7 +58,7 @@ For complete reference, see `codev/resources/commands/`:
58
58
 
59
59
  ## Configuration
60
60
 
61
- Customize Agent Farm behavior in `codev/config.json`:
61
+ Agent Farm is configured via `af-config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
62
62
 
63
63
  ```json
64
64
  {
@@ -41,7 +41,7 @@ Just like structuring a human team—clear roles, defined processes, explicit ha
41
41
 
42
42
  | Component | Purpose |
43
43
  |-----------|---------|
44
- | Protocols | Define HOW work happens (SPIDER, TICK, etc.) |
44
+ | Protocols | Define HOW work happens (SPIR, TICK, etc.) |
45
45
  | Roles | Define WHO does what (Architect, Builder, Consultant) |
46
46
  | Parallelism | Scale by running multiple builders simultaneously |
47
47
 
@@ -60,7 +60,7 @@ A **protocol** is a structured workflow that defines how work progresses from id
60
60
 
61
61
  | Protocol | Use For | Phases |
62
62
  |----------|---------|--------|
63
- | **SPIDER** | New features | Specify → Plan → Implement → Defend → Evaluate → Review |
63
+ | **SPIR** | New features | Specify → Plan → Implement → Review |
64
64
  | **TICK** | Amendments to existing specs | Task Identification → Coding → Kickout |
65
65
  | **MAINTAIN** | Codebase hygiene | Dead code removal, documentation sync |
66
66
  | **EXPERIMENT** | Research & prototyping | Hypothesis → Experiment → Conclude |
@@ -110,13 +110,15 @@ Architect-Builder orchestration. Used by both **humans and agents**—agents use
110
110
 
111
111
  | Command | Description |
112
112
  |---------|-------------|
113
- | `af start` | Start dashboard (port 4200, 4300, etc.) |
114
- | `af stop` | Stop all processes |
113
+ | `af dash start` | Start dashboard (port 4200, 4300, etc.) |
114
+ | `af dash stop` | Stop all processes |
115
115
  | `af spawn -p <id>` | Spawn a builder for project |
116
116
  | `af status` | Check status of all builders |
117
117
  | `af send <target> <msg>` | Send message (builder↔architect) |
118
118
  | `af cleanup -p <id>` | Clean up a builder worktree |
119
+ | `af shell` | Spawn a utility shell |
119
120
  | `af open <file>` | Open file in dashboard viewer |
121
+ | `af tower start` | Start cross-project tower |
120
122
 
121
123
  ### consult
122
124
 
@@ -143,7 +145,7 @@ Multi-agent consultation. Used by both humans and agents—**mostly agents** dur
143
145
 
144
146
  ## Quick Reference
145
147
 
146
- ### SPIDER Checklist
148
+ ### SPIR Checklist
147
149
 
148
150
  ```
149
151
  [ ] Specify - Write spec in codev/specs/XXXX-name.md
@@ -142,6 +142,6 @@ To see high-priority work, search for `priority: high`.
142
142
  Before starting a project, verify its dependencies are at least `implemented`.
143
143
 
144
144
  ### Protocol Selection
145
- - **SPIDER**: Most projects (formal spec → plan → implement → review)
145
+ - **SPIR**: Most projects (formal spec → plan → implement → review)
146
146
  - **TICK**: Small, well-defined tasks (< 300 lines) or amendments to existing specs
147
147
  - **EXPERIMENT**: Research/prototyping before committing to a project
@@ -4,25 +4,19 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>AF: {{PROJECT_NAME}}</title>
7
- <!-- CSS files loaded in dependency order -->
8
- <link rel="stylesheet" href="/dashboard/css/variables.css">
9
- <link rel="stylesheet" href="/dashboard/css/layout.css">
10
- <link rel="stylesheet" href="/dashboard/css/tabs.css">
11
- <link rel="stylesheet" href="/dashboard/css/statusbar.css">
12
- <link rel="stylesheet" href="/dashboard/css/dialogs.css">
13
- <link rel="stylesheet" href="/dashboard/css/activity.css">
14
- <link rel="stylesheet" href="/dashboard/css/projects.css">
15
- <link rel="stylesheet" href="/dashboard/css/files.css">
16
- <link rel="stylesheet" href="/dashboard/css/utilities.css">
7
+ <!-- CSS files loaded in dependency order (relative paths for proxy compatibility) -->
8
+ <link rel="stylesheet" href="dashboard/css/variables.css">
9
+ <link rel="stylesheet" href="dashboard/css/layout.css">
10
+ <link rel="stylesheet" href="dashboard/css/tabs.css">
11
+ <link rel="stylesheet" href="dashboard/css/statusbar.css">
12
+ <link rel="stylesheet" href="dashboard/css/dialogs.css">
13
+ <link rel="stylesheet" href="dashboard/css/projects.css">
14
+ <link rel="stylesheet" href="dashboard/css/files.css">
15
+ <link rel="stylesheet" href="dashboard/css/utilities.css">
17
16
  </head>
18
17
  <body>
19
18
  <header class="header">
20
19
  <h1>Agent Farm - {{PROJECT_NAME}}</h1>
21
- <div class="header-actions">
22
- <button class="btn activity-summary-btn" onclick="showActivitySummary()" title="What did I do today?">
23
- 🕐 Today
24
- </button>
25
- </div>
26
20
  </header>
27
21
 
28
22
  <main class="main">
@@ -123,26 +117,6 @@
123
117
  <!-- Toast container -->
124
118
  <div class="toast-container" id="toast-container"></div>
125
119
 
126
- <!-- Activity Summary Modal (Spec 0059) -->
127
- <div class="dialog-overlay hidden" id="activity-modal">
128
- <div class="dialog activity-dialog">
129
- <div class="activity-dialog-header">
130
- <h3>Today's Summary</h3>
131
- <button class="activity-close-btn" onclick="closeActivityModal()" title="Close (Esc)">×</button>
132
- </div>
133
- <div class="activity-dialog-content" id="activity-content">
134
- <div class="activity-loading">
135
- <span class="activity-spinner"></span>
136
- Loading activity...
137
- </div>
138
- </div>
139
- <div class="activity-dialog-footer">
140
- <button class="btn" onclick="copyActivitySummary()">📋 Copy to Clipboard</button>
141
- <button class="btn" onclick="closeActivityModal()">Close</button>
142
- </div>
143
- </div>
144
- </div>
145
-
146
120
  <!-- File search palette (Cmd+P) - Spec 0058 -->
147
121
  <div id="file-palette" class="file-palette hidden">
148
122
  <div class="file-palette-backdrop" onclick="closePalette()"></div>
@@ -163,13 +137,13 @@
163
137
  </script>
164
138
 
165
139
  <!-- JavaScript files loaded in dependency order -->
166
- <script src="/dashboard/js/state.js"></script>
167
- <script src="/dashboard/js/utils.js"></script>
168
- <script src="/dashboard/js/tabs.js"></script>
169
- <script src="/dashboard/js/dialogs.js"></script>
170
- <script src="/dashboard/js/projects.js"></script>
171
- <script src="/dashboard/js/files.js"></script>
172
- <script src="/dashboard/js/activity.js"></script>
173
- <script src="/dashboard/js/main.js"></script>
140
+ <!-- JS files (relative paths for proxy compatibility) -->
141
+ <script src="dashboard/js/state.js"></script>
142
+ <script src="dashboard/js/utils.js"></script>
143
+ <script src="dashboard/js/tabs.js"></script>
144
+ <script src="dashboard/js/dialogs.js"></script>
145
+ <script src="dashboard/js/projects.js"></script>
146
+ <script src="dashboard/js/files.js"></script>
147
+ <script src="dashboard/js/main.js"></script>
174
148
  </body>
175
149
  </html>
@@ -20,7 +20,7 @@ async function closeTab(tabId, event) {
20
20
  // Check if process is still running before showing confirmation (Bugfix #132)
21
21
  // If the shell/builder already exited, close immediately without confirmation
22
22
  try {
23
- const response = await fetch(`/api/tabs/${encodeURIComponent(tabId)}/running`);
23
+ const response = await fetch(apiUrl(`api/tabs/${encodeURIComponent(tabId)}/running`));
24
24
  if (response.ok) {
25
25
  const { running } = await response.json();
26
26
  if (!running) {
@@ -56,7 +56,7 @@ async function doCloseTab(tabId) {
56
56
  if (!tab) return;
57
57
 
58
58
  try {
59
- await fetch(`/api/tabs/${encodeURIComponent(tabId)}`, { method: 'DELETE' });
59
+ await fetch(apiUrl(`api/tabs/${encodeURIComponent(tabId)}`), { method: 'DELETE' });
60
60
 
61
61
  tabs = tabs.filter(t => t.id !== tabId);
62
62
 
@@ -224,7 +224,7 @@ async function createFile() {
224
224
  }
225
225
 
226
226
  try {
227
- const response = await fetch('/api/files', {
227
+ const response = await fetch(apiUrl('api/files'), {
228
228
  method: 'POST',
229
229
  headers: { 'Content-Type': 'application/json' },
230
230
  body: JSON.stringify({ path: filePath, content: '' })
@@ -251,7 +251,7 @@ async function createFile() {
251
251
  // Spawn worktree builder
252
252
  async function spawnBuilder() {
253
253
  try {
254
- const response = await fetch('/api/tabs/builder', {
254
+ const response = await fetch(apiUrl('api/tabs/builder'), {
255
255
  method: 'POST',
256
256
  headers: { 'Content-Type': 'application/json' },
257
257
  body: JSON.stringify({})
@@ -283,7 +283,7 @@ async function spawnBuilder() {
283
283
  // Spawn shell
284
284
  async function spawnShell() {
285
285
  try {
286
- const response = await fetch('/api/tabs/shell', {
286
+ const response = await fetch(apiUrl('api/tabs/shell'), {
287
287
  method: 'POST',
288
288
  headers: { 'Content-Type': 'application/json' },
289
289
  body: JSON.stringify({})
@@ -325,7 +325,7 @@ async function spawnShell() {
325
325
  // Create new utility shell (quick action button)
326
326
  async function createNewShell() {
327
327
  try {
328
- const response = await fetch('/api/tabs/shell', { method: 'POST' });
328
+ const response = await fetch(apiUrl('api/tabs/shell'), { method: 'POST' });
329
329
  const data = await response.json();
330
330
  if (!data.success && data.error) {
331
331
  showToast(data.error || 'Failed to create shell', 'error');
@@ -347,7 +347,7 @@ async function createNewWorktreeShell() {
347
347
  if (branch === null) return;
348
348
 
349
349
  try {
350
- const response = await fetch('/api/tabs/shell', {
350
+ const response = await fetch(apiUrl('api/tabs/shell'), {
351
351
  method: 'POST',
352
352
  headers: { 'Content-Type': 'application/json' },
353
353
  body: JSON.stringify({ worktree: true, branch: branch || undefined })
@@ -22,7 +22,7 @@ function stopFilesPolling() {
22
22
  // Check if files have changed and refresh if needed
23
23
  async function checkFilesForChanges() {
24
24
  try {
25
- const response = await fetch(`/api/files/hash?t=${Date.now()}`);
25
+ const response = await fetch(apiUrl(`api/files/hash?t=${Date.now()}`));
26
26
  if (!response.ok) return;
27
27
 
28
28
  const data = await response.json();
@@ -42,7 +42,7 @@ async function checkFilesForChanges() {
42
42
  async function loadFilesTree() {
43
43
  try {
44
44
  // Add cache-busting param to ensure fresh data
45
- const response = await fetch(`/api/files?t=${Date.now()}`);
45
+ const response = await fetch(apiUrl(`api/files?t=${Date.now()}`));
46
46
  if (!response.ok) {
47
47
  throw new Error(`HTTP ${response.status}: ${response.statusText}`);
48
48
  }