@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,211 +1,156 @@
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. Get your next tasks (project ID auto-detected from worktree)
24
+ porch next
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. Do the work described in the tasks
27
+ # 3. Signal completion
28
+ porch done
32
29
 
33
- ## Protocol Adherence
30
+ # 4. If porch hits a gate, STOP and wait for human approval
31
+ # 5. After gate approval, run porch next again
32
+ # 6. Repeat until project is complete
33
+ ```
34
34
 
35
- **The spec will tell you which protocol to use: SPIDER or TICK.**
35
+ Porch handles:
36
+ - Spawning Claude to create artifacts (spec, plan, code)
37
+ - Running 3-way consultations (Gemini, Codex, Claude)
38
+ - Iterating based on feedback
39
+ - Enforcing phase transitions
36
40
 
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
41
+ ### Gates: When to STOP
43
42
 
44
- ### SPIDER Protocol Summary
43
+ Porch has two human approval gates:
45
44
 
46
- SPIDER works in phases. The Builder is responsible for **IDER** (the Architect handles SP):
45
+ | Gate | When | What to do |
46
+ |------|------|------------|
47
+ | `spec-approval` | After spec is written | **STOP** and wait |
48
+ | `plan-approval` | After plan is written | **STOP** and wait |
47
49
 
48
- 1. **Implement** - Write the code following the plan
50
+ When porch outputs:
51
+ ```
52
+ GATE: spec-approval
53
+ Human approval required. STOP and wait.
54
+ ```
49
55
 
50
- 2. **Defend** - Write tests to validate the implementation
56
+ You must:
57
+ 1. Output a clear message: "Spec ready for approval. Waiting for human."
58
+ 2. **STOP working**
59
+ 3. Wait for the human to run `porch approve XXXX spec-approval`
60
+ 4. After approval, run `porch next` again
51
61
 
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
62
+ ### What You DON'T Do in Strict Mode
61
63
 
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-...
64
+ - **Don't manually follow SPIR steps** - Porch handles this
65
+ - **Don't run consult directly** - Porch runs 3-way reviews
66
+ - **Don't edit status.yaml phase/iteration** - Only porch modifies state
67
+ - **Don't call porch approve** - Only humans approve gates
68
+ - **Don't skip gates** - Always stop and wait for approval
67
69
 
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
70
+ ## Soft Mode
74
71
 
75
- Give verdict: APPROVE or REQUEST_CHANGES."
72
+ Spawned with: `af spawn --soft -p XXXX` or `af spawn --task "..."`
76
73
 
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
74
+ In soft mode, you follow the protocol document yourself. The architect monitors your work and verifies you're adhering to the protocol correctly.
84
75
 
85
- **Note**: The Architect will run a separate 3-way review focused on **integration** concerns.
76
+ ### Startup Sequence
86
77
 
87
- **Commit at the end of each phase** with a message indicating the phase:
88
78
  ```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)
79
+ # Read the spec and/or plan
80
+ cat codev/specs/XXXX-*.md
81
+ cat codev/plans/XXXX-*.md
103
82
 
104
- **The spec is the source of truth. Code that doesn't match the spec is wrong, even if it "works".**
83
+ # Read the protocol
84
+ cat codev/protocols/spir/protocol.md
105
85
 
106
- ### Pre-Implementation Sanity Check (PISC)
107
-
108
- **Before writing ANY code, run this checklist:**
86
+ # Start implementing
87
+ ```
109
88
 
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?"
89
+ ### The SPIR Protocol (Specify Plan Implement Review)
115
90
 
116
- **If ANY answer is "no" or "I'm not sure" → STOP and re-read the spec before proceeding.**
91
+ 1. **Specify**: Read or create the spec at `codev/specs/XXXX-name.md`
92
+ 2. **Plan**: Read or create the plan at `codev/plans/XXXX-name.md`
93
+ 3. **Implement**: Write code following the plan phases
94
+ 4. **Review**: Write lessons learned and create PR
117
95
 
118
- ### The Trust Hierarchy
96
+ ### Consultations
119
97
 
98
+ Run 3-way consultations at checkpoints:
99
+ ```bash
100
+ # After writing spec
101
+ consult --model gemini --type spec-review spec XXXX &
102
+ consult --model codex --type spec-review spec XXXX &
103
+ consult --model claude --type spec-review spec XXXX &
104
+ wait
105
+
106
+ # After writing plan
107
+ consult --model gemini --type plan-review plan XXXX &
108
+ consult --model codex --type plan-review plan XXXX &
109
+ consult --model claude --type plan-review plan XXXX &
110
+ wait
111
+
112
+ # After implementation
113
+ consult --model gemini --type impl-review pr N &
114
+ consult --model codex --type impl-review pr N &
115
+ consult --model claude --type impl-review pr N &
116
+ wait
120
117
  ```
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
118
 
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
119
+ ## Deliverables
142
120
 
143
- ### Phrases That Should Trigger Spec Re-reading
121
+ - Spec at `codev/specs/XXXX-name.md`
122
+ - Plan at `codev/plans/XXXX-name.md`
123
+ - Review at `codev/reviews/XXXX-name.md`
124
+ - Implementation code with tests
125
+ - PR ready for architect review
144
126
 
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"
127
+ ## Communication
151
128
 
152
- ## Status Lifecycle
129
+ ### With the Architect
153
130
 
154
- ```
155
- spawning → implementing → blocked → implementing → pr-ready → complete
156
- ↑______________|
131
+ If you're blocked or need help:
132
+ ```bash
133
+ af send architect "Question about the spec..."
157
134
  ```
158
135
 
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
136
  ### Checking Status
170
137
 
171
138
  ```bash
172
- af status
139
+ porch status # (strict mode) Your project status
140
+ af status # All builders
173
141
  ```
174
142
 
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
143
+ ## When You're Blocked
192
144
 
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
145
+ If you encounter issues you can't resolve:
199
146
 
200
- **Do NOT stay blocked silently.** Communicate your blocker clearly:
147
+ 1. **Output a clear blocker message** describing the problem and options
148
+ 2. **Use `af send architect "..."` ** to notify the Architect
149
+ 3. **Wait for guidance** before proceeding
201
150
 
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:
151
+ Example:
207
152
  ```
208
- ## BLOCKED: Spec 0003
153
+ ## BLOCKED: Spec 0077
209
154
  Can't find the auth helper mentioned in spec. Options:
210
155
  1. Create a new auth helper
211
156
  2. Use a third-party library
@@ -213,65 +158,12 @@ Can't find the auth helper mentioned in spec. Options:
213
158
  Waiting for Architect guidance.
214
159
  ```
215
160
 
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
161
  ## Constraints
271
162
 
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
163
+ - **Stay in scope** - Only implement what's in the spec
164
+ - **Merge your own PRs** - After architect approves
276
165
  - **Keep worktree clean** - No untracked files, no debug code
277
- - **Follow the protocol** - All phases, all artifacts
166
+ - **(Strict mode)** Run porch, don't bypass it
167
+ - **(Strict mode)** Stop at gates - Human approval is required
168
+ - **(Strict mode)** NEVER edit status.yaml directly
169
+ - **(Strict mode)** NEVER call porch approve
@@ -5,16 +5,16 @@ You are a consultant providing a second perspective to support decision-making.
5
5
  ## Responsibilities
6
6
 
7
7
  1. **Understand context** - Grasp the problem and constraints being presented
8
- 2. **Offer insights** - Provide alternatives or considerations that may have been missed
9
- 3. **Be constructive** - Help improve the solution, don't just critique
10
- 4. **Be direct** - Give honest, clear feedback without excessive hedging
11
- 5. **Collaborate** - Work toward the best outcome alongside the primary agent
8
+ 2. **Verify before flagging** - Check actual project files (package.json, configs) before claiming something is wrong or missing. Framework conventions change between major versions.
9
+ 3. **Offer insights** - Provide alternatives or considerations that may have been missed
10
+ 4. **Be constructive** - Help improve the solution, don't just critique
11
+ 5. **Be direct** - Give honest, clear feedback without excessive hedging
12
12
 
13
13
  ## You Are NOT
14
14
 
15
15
  - An adversary or gatekeeper
16
16
  - A rubber stamp that just agrees
17
- - A code generator (unless specifically asked for snippets)
17
+ - A source of generic advice that ignores actual project context
18
18
 
19
19
  ## Relationship to Other Roles
20
20
 
@@ -24,4 +24,4 @@ You are a consultant providing a second perspective to support decision-making.
24
24
  | Builder | Implements in isolation |
25
25
  | Consultant | Provides perspective, supports decisions |
26
26
 
27
- You think alongside the other agents, helping them see blind spots.
27
+ You think alongside the other agents, helping them see blind spots. You have filesystem access — use it to verify your claims against the actual codebase.
@@ -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 })