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

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 +334 -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 +2650 -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 +58 -0
  228. package/dist/terminal/shepherd-client.d.ts.map +1 -0
  229. package/dist/terminal/shepherd-client.js +212 -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
@@ -0,0 +1,113 @@
1
+ # SYNC Phase Prompt
2
+
3
+ You are executing the **SYNC** phase of the MAINTAIN protocol.
4
+
5
+ ## Your Goal
6
+
7
+ Update documentation to match the current state of the codebase.
8
+
9
+ ## Context
10
+
11
+ - **Current State**: {{current_state}}
12
+
13
+ ## Process
14
+
15
+ ### 1. Update arch.md
16
+
17
+ Read the current architecture doc and compare with actual codebase:
18
+
19
+ ```bash
20
+ cat codev/resources/arch.md
21
+ ls -la packages/ src/ 2>/dev/null
22
+ ```
23
+
24
+ Update:
25
+ - Directory structure (if changed)
26
+ - Component descriptions
27
+ - Key files and their purposes
28
+ - Remove references to deleted code
29
+ - Add new utilities/components
30
+
31
+ **arch.md must explain HOW things work, not just WHAT they are.**
32
+
33
+ ### 2. Generate/Update lessons-learned.md
34
+
35
+ Scan review documents for lessons:
36
+
37
+ ```bash
38
+ ls codev/reviews/
39
+ ```
40
+
41
+ Extract actionable lessons:
42
+ - Testing practices
43
+ - Architecture decisions
44
+ - Process improvements
45
+ - Patterns to follow/avoid
46
+
47
+ Format:
48
+ ```markdown
49
+ ## [Topic]
50
+ - [From NNNN] Lesson description
51
+ ```
52
+
53
+ ### 3. Sync CLAUDE.md with AGENTS.md
54
+
55
+ Compare the two files:
56
+ ```bash
57
+ diff CLAUDE.md AGENTS.md | head -50
58
+ ```
59
+
60
+ They must be identical. Update the stale one to match.
61
+
62
+ ### 4. Prune Documentation
63
+
64
+ Check document sizes:
65
+ ```bash
66
+ wc -l CLAUDE.md AGENTS.md README.md
67
+ ```
68
+
69
+ Target ~400 lines for CLAUDE.md/README.md (guideline, not mandate).
70
+
71
+ For any content removed, document:
72
+ - WHAT was removed
73
+ - WHY it was removed (OBSOLETE, DUPLICATIVE, MOVED, VERBOSE)
74
+ - WHERE it moved (if applicable)
75
+
76
+ ### 5. Commit Documentation Changes
77
+
78
+ ```bash
79
+ git add codev/resources/arch.md codev/resources/lessons-learned.md
80
+ git commit -m "[Maintain] Update arch.md and lessons-learned.md"
81
+
82
+ git add CLAUDE.md AGENTS.md
83
+ git commit -m "[Maintain] Sync CLAUDE.md with AGENTS.md"
84
+ ```
85
+
86
+ ## Important Rules
87
+
88
+ 1. **Never invent structure** - Only document what exists
89
+ 2. **Verify file paths** - Check that referenced files exist
90
+ 3. **Keep it current** - Remove obsolete references
91
+ 4. **Preserve important content** - Don't delete patterns/best practices
92
+ 5. **Document deletions** - Every removal needs justification
93
+
94
+ ## Output
95
+
96
+ Update the maintenance run file with:
97
+ - Documents updated
98
+ - What was added/removed/changed
99
+ - Any issues encountered
100
+
101
+ ## Signals
102
+
103
+ When documentation is synchronized:
104
+
105
+ ```
106
+ <signal>PHASE_COMPLETE</signal>
107
+ ```
108
+
109
+ If blocked:
110
+
111
+ ```
112
+ <signal>BLOCKED:reason</signal>
113
+ ```
@@ -0,0 +1,110 @@
1
+ # VERIFY Phase Prompt
2
+
3
+ You are executing the **VERIFY** phase of the MAINTAIN protocol.
4
+
5
+ ## Your Goal
6
+
7
+ Run final validation and prepare for PR creation.
8
+
9
+ ## Context
10
+
11
+ - **Current State**: {{current_state}}
12
+
13
+ ## Process
14
+
15
+ ### 1. Run Full Test Suite
16
+
17
+ ```bash
18
+ npm run build
19
+ npm test
20
+ ```
21
+
22
+ Both must pass. If either fails, go back and fix the issue.
23
+
24
+ ### 2. Run Linting
25
+
26
+ ```bash
27
+ npm run lint 2>/dev/null || echo "No lint script"
28
+ ```
29
+
30
+ Fix any linting errors.
31
+
32
+ ### 3. Verify Documentation Links
33
+
34
+ Check that documentation references resolve:
35
+ ```bash
36
+ # Check arch.md file references
37
+ grep -oE 'src/[^ ]+|packages/[^ ]+' codev/resources/arch.md | while read f; do
38
+ [ -e "$f" ] || echo "Missing: $f"
39
+ done
40
+ ```
41
+
42
+ ### 4. Update Maintenance Run Summary
43
+
44
+ Finalize the maintenance run file with:
45
+
46
+ ```markdown
47
+ ## Summary
48
+
49
+ - **Dead code removed**: X files, Y functions
50
+ - **Dependencies removed**: Z packages
51
+ - **Documentation updated**: arch.md, lessons-learned.md
52
+ - **All tests passing**: Yes/No
53
+ - **Build status**: Success/Failure
54
+
55
+ ## Next Maintenance
56
+
57
+ Recommended focus areas for next run:
58
+ - ...
59
+ ```
60
+
61
+ ### 5. Create PR
62
+
63
+ ```bash
64
+ git push origin HEAD
65
+
66
+ gh pr create --title "[Maintain] Codebase maintenance run NNNN" --body "$(cat <<'EOF'
67
+ ## Summary
68
+
69
+ - Dead code removal
70
+ - Documentation sync
71
+ - Dependency cleanup
72
+
73
+ ## Changes
74
+
75
+ [List key changes]
76
+
77
+ ## Verification
78
+
79
+ - [x] Build passes
80
+ - [x] Tests pass
81
+ - [x] Documentation updated
82
+ EOF
83
+ )"
84
+ ```
85
+
86
+ ## Validation Checklist
87
+
88
+ Before signaling complete:
89
+
90
+ - [ ] All tests pass
91
+ - [ ] Build succeeds
92
+ - [ ] No import/module errors
93
+ - [ ] Documentation links resolve
94
+ - [ ] Linter passes (if configured)
95
+ - [ ] Maintenance run file is complete
96
+ - [ ] PR is created
97
+
98
+ ## Signals
99
+
100
+ When validation passes and PR is ready:
101
+
102
+ ```
103
+ <signal>PHASE_COMPLETE</signal>
104
+ ```
105
+
106
+ If blocked:
107
+
108
+ ```
109
+ <signal>BLOCKED:reason</signal>
110
+ ```
@@ -0,0 +1,141 @@
1
+ {
2
+ "$schema": "../../protocol-schema.json",
3
+ "name": "maintain",
4
+ "alias": "maint",
5
+ "version": "2.0.0",
6
+ "description": "Codebase maintenance - dead code removal, doc sync, hygiene with 3-way review",
7
+ "input": {
8
+ "type": "protocol",
9
+ "required": false,
10
+ "default_for": ["--protocol maintain"]
11
+ },
12
+ "phases": [
13
+ {
14
+ "id": "audit",
15
+ "name": "Audit",
16
+ "description": "Analyze codebase for dead code, unused dependencies, stale docs",
17
+ "type": "build_verify",
18
+ "build": {
19
+ "prompt": "audit.md",
20
+ "artifact": "codev/maintain/*.md"
21
+ },
22
+ "verify": {
23
+ "type": "impl-review",
24
+ "models": ["gemini", "codex", "claude"],
25
+ "parallel": true
26
+ },
27
+ "max_iterations": 3,
28
+ "on_complete": {
29
+ "commit": true,
30
+ "push": true
31
+ },
32
+ "next": "clean"
33
+ },
34
+ {
35
+ "id": "clean",
36
+ "name": "Clean",
37
+ "description": "Remove identified dead code and unused dependencies",
38
+ "type": "build_verify",
39
+ "build": {
40
+ "prompt": "clean.md",
41
+ "artifact": "src/**/*.{ts,tsx,js,jsx}"
42
+ },
43
+ "verify": {
44
+ "type": "impl-review",
45
+ "models": ["gemini", "codex", "claude"],
46
+ "parallel": true
47
+ },
48
+ "max_iterations": 5,
49
+ "on_complete": {
50
+ "commit": true,
51
+ "push": true
52
+ },
53
+ "checks": {
54
+ "build": {
55
+ "command": "npm run build",
56
+ "on_fail": "retry",
57
+ "max_retries": 2
58
+ },
59
+ "tests": {
60
+ "command": "npm test -- --exclude='**/e2e/**'",
61
+ "on_fail": "retry",
62
+ "max_retries": 2
63
+ }
64
+ },
65
+ "next": "sync"
66
+ },
67
+ {
68
+ "id": "sync",
69
+ "name": "Sync Documentation",
70
+ "description": "Update documentation to match current codebase",
71
+ "type": "build_verify",
72
+ "build": {
73
+ "prompt": "sync.md",
74
+ "artifact": "codev/resources/*.md"
75
+ },
76
+ "verify": {
77
+ "type": "impl-review",
78
+ "models": ["gemini", "codex", "claude"],
79
+ "parallel": true
80
+ },
81
+ "max_iterations": 5,
82
+ "on_complete": {
83
+ "commit": true,
84
+ "push": true
85
+ },
86
+ "next": "verify"
87
+ },
88
+ {
89
+ "id": "verify",
90
+ "name": "Verify",
91
+ "description": "Final validation and PR creation",
92
+ "type": "build_verify",
93
+ "build": {
94
+ "prompt": "verify.md",
95
+ "artifact": "codev/maintain/*.md"
96
+ },
97
+ "verify": {
98
+ "type": "pr-ready",
99
+ "models": ["gemini", "codex", "claude"],
100
+ "parallel": true
101
+ },
102
+ "max_iterations": 3,
103
+ "on_complete": {
104
+ "commit": true,
105
+ "push": true
106
+ },
107
+ "checks": {
108
+ "build": {
109
+ "command": "npm run build",
110
+ "on_fail": "retry",
111
+ "max_retries": 2
112
+ },
113
+ "tests": {
114
+ "command": "npm test",
115
+ "on_fail": "retry",
116
+ "max_retries": 2
117
+ }
118
+ },
119
+ "gate": "maintain-complete",
120
+ "next": null
121
+ }
122
+ ],
123
+ "signals": {
124
+ "PHASE_COMPLETE": {
125
+ "description": "Signal current phase is complete",
126
+ "transitions_to": "verify"
127
+ },
128
+ "BLOCKED": {
129
+ "description": "Signal maintenance is blocked",
130
+ "requires": "reason"
131
+ }
132
+ },
133
+ "defaults": {
134
+ "mode": "strict",
135
+ "max_iterations": 5,
136
+ "verify": {
137
+ "models": ["gemini", "codex", "claude"],
138
+ "parallel": true
139
+ }
140
+ }
141
+ }
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- MAINTAIN is a periodic maintenance protocol for keeping codebases healthy. Unlike SPIDER/TICK (which have sequential phases), MAINTAIN is a **task list** where tasks can run in parallel and some require human review.
5
+ MAINTAIN is a periodic maintenance protocol for keeping codebases healthy. It runs as a **strict porch protocol** with sequential phases and 3-way consultation (Gemini, Codex, Claude) at each phase.
6
6
 
7
7
  **Core Principle**: Regular maintenance prevents technical debt accumulation.
8
8
 
@@ -22,20 +22,26 @@ Any builder can update these files during development, but MAINTAIN ensures they
22
22
 
23
23
  ## Execution Model
24
24
 
25
- MAINTAIN is executed by a Builder, spawned by the Architect:
25
+ MAINTAIN is orchestrated by porch with 4 sequential phases:
26
26
 
27
27
  ```
28
- Architect: "Time for maintenance"
29
-
30
28
  af spawn --protocol maintain
31
29
 
32
- Builder works through task list
33
-
30
+ 1. AUDIT: Scan for dead code, unused deps, stale docs
31
+ (3-way review)
32
+ 2. CLEAN: Remove identified cruft
33
+ ↓ (3-way review + build/test checks)
34
+ 3. SYNC: Update documentation
35
+ ↓ (3-way review)
36
+ 4. VERIFY: Final validation + PR
37
+ ↓ (3-way review)
34
38
  PR with maintenance changes
35
39
 
36
- Architect reviews → Builder merges
40
+ Architect reviews → Merge
37
41
  ```
38
42
 
43
+ Each phase goes through build-verify cycles with 3-way consultation before proceeding.
44
+
39
45
  ## Prerequisites
40
46
 
41
47
  Before starting MAINTAIN:
@@ -180,8 +186,8 @@ Scan the actual codebase and update `codev/resources/arch.md`:
180
186
  - **Location**: path/to/component
181
187
  - **How It Works**:
182
188
  - Step-by-step explanation of the mechanism
183
- - Key technologies used (e.g., "uses tmux for terminal multiplexing")
184
- - Runtime behavior (e.g., "spawns a tmux session per builder")
189
+ - Key technologies used (e.g., "uses shepherd processes for terminal persistence")
190
+ - Runtime behavior (e.g., "spawns a shepherd process per builder terminal")
185
191
  - State management (e.g., "state stored in SQLite at .agent-farm/state.db")
186
192
  - **Key Files**:
187
193
  - `file.ts` - does X
@@ -216,7 +222,7 @@ For each major component, arch.md MUST explain the implementation mechanism, not
216
222
 
217
223
  | Bad (just WHAT) | Good (includes HOW) |
218
224
  |-----------------|---------------------|
219
- | "Agent Farm manages builders" | "Agent Farm spawns builders in isolated git worktrees. Each builder runs in a tmux session (named `builder-{id}`). The dashboard uses ttyd to expose terminals via HTTP on ports 4201-4299. State is persisted in SQLite." |
225
+ | "Agent Farm manages builders" | "Agent Farm spawns builders in isolated git worktrees. Each builder runs in a shepherd-backed terminal session. The Tower dashboard exposes terminals via WebSocket. State is persisted in SQLite." |
220
226
  | "Consult tool queries AI models" | "Consult shells out to external CLIs (gemini-cli, codex, claude). It writes the consultant role to a temp file, sets environment variables, and streams stdout/stderr back to the user." |
221
227
 
222
228
  This level of detail enables rapid onboarding and debugging.
@@ -473,7 +479,7 @@ MAINTAIN is an **operational protocol**, not a feature development protocol:
473
479
  | Review | No |
474
480
  | 3-Way Consultation | **Yes** (before creating PR) |
475
481
 
476
- **Exception**: If MAINTAIN reveals need for architectural changes, those should follow SPIDER.
482
+ **Exception**: If MAINTAIN reveals need for architectural changes, those should follow SPIR.
477
483
 
478
484
  ---
479
485
 
@@ -8,7 +8,7 @@
8
8
  "properties": {
9
9
  "name": {
10
10
  "type": "string",
11
- "description": "Protocol identifier (e.g., 'spider', 'tick', 'bugfix')"
11
+ "description": "Protocol identifier (e.g., 'spir', 'tick', 'bugfix')"
12
12
  },
13
13
  "version": {
14
14
  "type": "string",
@@ -27,6 +27,12 @@
27
27
  },
28
28
  "minItems": 1
29
29
  },
30
+ "input": {
31
+ "$ref": "#/definitions/protocolInput"
32
+ },
33
+ "hooks": {
34
+ "$ref": "#/definitions/protocolHooks"
35
+ },
30
36
  "signals": {
31
37
  "type": "object",
32
38
  "description": "Signal definitions for state transitions",
@@ -38,6 +44,11 @@
38
44
  "type": "object",
39
45
  "description": "Default configuration for the protocol",
40
46
  "properties": {
47
+ "mode": {
48
+ "type": "string",
49
+ "enum": ["strict", "soft"],
50
+ "description": "Default orchestration mode for the protocol"
51
+ },
41
52
  "consultation": {
42
53
  "$ref": "#/definitions/consultationDefaults"
43
54
  },
@@ -232,6 +243,48 @@
232
243
  "type": "string"
233
244
  }
234
245
  }
246
+ },
247
+ "protocolInput": {
248
+ "type": "object",
249
+ "description": "Protocol input configuration - defines what input types a protocol accepts",
250
+ "properties": {
251
+ "type": {
252
+ "type": "string",
253
+ "enum": ["spec", "github-issue", "task", "protocol", "shell", "worktree"],
254
+ "description": "Primary input type for this protocol"
255
+ },
256
+ "required": {
257
+ "type": "boolean",
258
+ "description": "Whether an input of this type is required"
259
+ },
260
+ "default_for": {
261
+ "type": "array",
262
+ "items": {
263
+ "type": "string"
264
+ },
265
+ "description": "CLI flags this protocol is the default for (e.g., ['--issue', '-i'])"
266
+ }
267
+ }
268
+ },
269
+ "protocolHooks": {
270
+ "type": "object",
271
+ "description": "Hooks triggered at various points in the spawn lifecycle",
272
+ "properties": {
273
+ "pre-spawn": {
274
+ "type": "object",
275
+ "description": "Hooks executed before spawning the builder",
276
+ "properties": {
277
+ "collision-check": {
278
+ "type": "boolean",
279
+ "description": "Check for worktree/PR collisions before spawning"
280
+ },
281
+ "comment-on-issue": {
282
+ "type": "string",
283
+ "description": "Comment to post on GitHub issue when spawning"
284
+ }
285
+ }
286
+ }
287
+ }
235
288
  }
236
289
  }
237
290
  }
@@ -0,0 +1,59 @@
1
+ # {{protocol_name}} Builder ({{mode}} mode)
2
+
3
+ You are implementing {{input_description}}.
4
+
5
+ {{#if mode_soft}}
6
+ ## Mode: SOFT
7
+ You are running in SOFT mode. This means:
8
+ - You follow the protocol document yourself (no porch orchestration)
9
+ - The architect monitors your work and verifies you're adhering to the protocol
10
+ - Run consultations manually when the protocol calls for them
11
+ - You have flexibility in execution, but must stay compliant with the protocol
12
+ {{/if}}
13
+
14
+ {{#if mode_strict}}
15
+ ## Mode: STRICT
16
+ You are running in STRICT mode. This means:
17
+ - Porch orchestrates your work
18
+ - Run: `porch next` to get your next tasks
19
+ - Follow porch signals and gate approvals
20
+ - Do not deviate from the porch-driven workflow
21
+
22
+ ### ABSOLUTE RESTRICTIONS (STRICT MODE)
23
+ - **NEVER edit `status.yaml` directly** — only porch commands may modify project state
24
+ - **NEVER call `porch approve` without explicit human approval** — only run it after the architect says to
25
+ - **NEVER skip the 3-way review** — always follow porch next → porch done cycle
26
+ - **NEVER advance plan phases manually** — porch handles phase transitions after unanimous review approval
27
+ {{/if}}
28
+
29
+ ## Protocol
30
+ Follow the SPIR protocol: `codev/protocols/spir/protocol.md`
31
+ Read and internalize the protocol before starting any work.
32
+
33
+ {{#if spec}}
34
+ ## Spec
35
+ Read the specification at: `{{spec.path}}`
36
+ {{/if}}
37
+
38
+ {{#if plan}}
39
+ ## Plan
40
+ Follow the implementation plan at: `{{plan.path}}`
41
+ {{/if}}
42
+
43
+ {{#if issue}}
44
+ ## Issue #{{issue.number}}
45
+ **Title**: {{issue.title}}
46
+
47
+ **Description**:
48
+ {{issue.body}}
49
+ {{/if}}
50
+
51
+ {{#if task}}
52
+ ## Task
53
+ {{task_text}}
54
+ {{/if}}
55
+
56
+ ## Getting Started
57
+ 1. Read the protocol document thoroughly
58
+ 2. Review the spec and plan (if available)
59
+ 3. Begin implementation following the protocol phases