@cluesmith/codev 2.0.0-rc.9 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (537) hide show
  1. package/bin/af.js +2 -2
  2. package/bin/consult.js +1 -1
  3. package/dashboard/dist/assets/index-4n9zpWLY.css +32 -0
  4. package/dashboard/dist/assets/index-b38SaXk5.js +136 -0
  5. package/dashboard/dist/assets/index-b38SaXk5.js.map +1 -0
  6. package/dashboard/dist/index.html +14 -0
  7. package/dist/agent-farm/cli.d.ts.map +1 -1
  8. package/dist/agent-farm/cli.js +179 -104
  9. package/dist/agent-farm/cli.js.map +1 -1
  10. package/dist/agent-farm/commands/architect.d.ts +3 -3
  11. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  12. package/dist/agent-farm/commands/architect.js +20 -147
  13. package/dist/agent-farm/commands/architect.js.map +1 -1
  14. package/dist/agent-farm/commands/attach.d.ts +13 -0
  15. package/dist/agent-farm/commands/attach.d.ts.map +1 -0
  16. package/dist/agent-farm/commands/attach.js +144 -0
  17. package/dist/agent-farm/commands/attach.js.map +1 -0
  18. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  19. package/dist/agent-farm/commands/cleanup.js +35 -19
  20. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  21. package/dist/agent-farm/commands/consult.d.ts +3 -4
  22. package/dist/agent-farm/commands/consult.d.ts.map +1 -1
  23. package/dist/agent-farm/commands/consult.js +27 -37
  24. package/dist/agent-farm/commands/consult.js.map +1 -1
  25. package/dist/agent-farm/commands/index.d.ts +2 -2
  26. package/dist/agent-farm/commands/index.d.ts.map +1 -1
  27. package/dist/agent-farm/commands/index.js +2 -2
  28. package/dist/agent-farm/commands/index.js.map +1 -1
  29. package/dist/agent-farm/commands/open.d.ts +4 -2
  30. package/dist/agent-farm/commands/open.d.ts.map +1 -1
  31. package/dist/agent-farm/commands/open.js +33 -83
  32. package/dist/agent-farm/commands/open.js.map +1 -1
  33. package/dist/agent-farm/commands/send.d.ts +1 -1
  34. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  35. package/dist/agent-farm/commands/send.js +70 -79
  36. package/dist/agent-farm/commands/send.js.map +1 -1
  37. package/dist/agent-farm/commands/shell.d.ts +15 -0
  38. package/dist/agent-farm/commands/shell.d.ts.map +1 -0
  39. package/dist/agent-farm/commands/shell.js +50 -0
  40. package/dist/agent-farm/commands/shell.js.map +1 -0
  41. package/dist/agent-farm/commands/spawn-roles.d.ts +80 -0
  42. package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -0
  43. package/dist/agent-farm/commands/spawn-roles.js +278 -0
  44. package/dist/agent-farm/commands/spawn-roles.js.map +1 -0
  45. package/dist/agent-farm/commands/spawn-worktree.d.ts +96 -0
  46. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -0
  47. package/dist/agent-farm/commands/spawn-worktree.js +305 -0
  48. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -0
  49. package/dist/agent-farm/commands/spawn.d.ts +5 -1
  50. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  51. package/dist/agent-farm/commands/spawn.js +241 -561
  52. package/dist/agent-farm/commands/spawn.js.map +1 -1
  53. package/dist/agent-farm/commands/start.d.ts +10 -20
  54. package/dist/agent-farm/commands/start.d.ts.map +1 -1
  55. package/dist/agent-farm/commands/start.js +45 -449
  56. package/dist/agent-farm/commands/start.js.map +1 -1
  57. package/dist/agent-farm/commands/status.d.ts +2 -0
  58. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  59. package/dist/agent-farm/commands/status.js +75 -24
  60. package/dist/agent-farm/commands/status.js.map +1 -1
  61. package/dist/agent-farm/commands/stop.d.ts +6 -0
  62. package/dist/agent-farm/commands/stop.d.ts.map +1 -1
  63. package/dist/agent-farm/commands/stop.js +49 -109
  64. package/dist/agent-farm/commands/stop.js.map +1 -1
  65. package/dist/agent-farm/commands/tower-cloud.d.ts +48 -0
  66. package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -0
  67. package/dist/agent-farm/commands/tower-cloud.js +293 -0
  68. package/dist/agent-farm/commands/tower-cloud.js.map +1 -0
  69. package/dist/agent-farm/commands/tower.d.ts +9 -0
  70. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  71. package/dist/agent-farm/commands/tower.js +59 -19
  72. package/dist/agent-farm/commands/tower.js.map +1 -1
  73. package/dist/agent-farm/db/index.d.ts +6 -2
  74. package/dist/agent-farm/db/index.d.ts.map +1 -1
  75. package/dist/agent-farm/db/index.js +301 -19
  76. package/dist/agent-farm/db/index.js.map +1 -1
  77. package/dist/agent-farm/db/migrate.d.ts +0 -4
  78. package/dist/agent-farm/db/migrate.d.ts.map +1 -1
  79. package/dist/agent-farm/db/migrate.js +6 -55
  80. package/dist/agent-farm/db/migrate.js.map +1 -1
  81. package/dist/agent-farm/db/schema.d.ts +3 -3
  82. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  83. package/dist/agent-farm/db/schema.js +25 -19
  84. package/dist/agent-farm/db/schema.js.map +1 -1
  85. package/dist/agent-farm/db/types.d.ts +3 -13
  86. package/dist/agent-farm/db/types.d.ts.map +1 -1
  87. package/dist/agent-farm/db/types.js +3 -11
  88. package/dist/agent-farm/db/types.js.map +1 -1
  89. package/dist/agent-farm/hq-connector.d.ts +2 -6
  90. package/dist/agent-farm/hq-connector.d.ts.map +1 -1
  91. package/dist/agent-farm/hq-connector.js +2 -17
  92. package/dist/agent-farm/hq-connector.js.map +1 -1
  93. package/dist/agent-farm/lib/cloud-config.d.ts +59 -0
  94. package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -0
  95. package/dist/agent-farm/lib/cloud-config.js +143 -0
  96. package/dist/agent-farm/lib/cloud-config.js.map +1 -0
  97. package/dist/agent-farm/lib/device-name.d.ts +25 -0
  98. package/dist/agent-farm/lib/device-name.d.ts.map +1 -0
  99. package/dist/agent-farm/lib/device-name.js +46 -0
  100. package/dist/agent-farm/lib/device-name.js.map +1 -0
  101. package/dist/agent-farm/lib/nonce-store.d.ts +28 -0
  102. package/dist/agent-farm/lib/nonce-store.d.ts.map +1 -0
  103. package/dist/agent-farm/lib/nonce-store.js +60 -0
  104. package/dist/agent-farm/lib/nonce-store.js.map +1 -0
  105. package/dist/agent-farm/lib/token-exchange.d.ts +18 -0
  106. package/dist/agent-farm/lib/token-exchange.d.ts.map +1 -0
  107. package/dist/agent-farm/lib/token-exchange.js +48 -0
  108. package/dist/agent-farm/lib/token-exchange.js.map +1 -0
  109. package/dist/agent-farm/lib/tower-client.d.ts +163 -0
  110. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
  111. package/dist/agent-farm/lib/tower-client.js +233 -0
  112. package/dist/agent-farm/lib/tower-client.js.map +1 -0
  113. package/dist/agent-farm/lib/tunnel-client.d.ts +117 -0
  114. package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -0
  115. package/dist/agent-farm/lib/tunnel-client.js +504 -0
  116. package/dist/agent-farm/lib/tunnel-client.js.map +1 -0
  117. package/dist/agent-farm/servers/tower-instances.d.ts +82 -0
  118. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -0
  119. package/dist/agent-farm/servers/tower-instances.js +454 -0
  120. package/dist/agent-farm/servers/tower-instances.js.map +1 -0
  121. package/dist/agent-farm/servers/tower-routes.d.ts +34 -0
  122. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -0
  123. package/dist/agent-farm/servers/tower-routes.js +1445 -0
  124. package/dist/agent-farm/servers/tower-routes.js.map +1 -0
  125. package/dist/agent-farm/servers/tower-server.d.ts +5 -2
  126. package/dist/agent-farm/servers/tower-server.d.ts.map +1 -1
  127. package/dist/agent-farm/servers/tower-server.js +157 -475
  128. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  129. package/dist/agent-farm/servers/tower-terminals.d.ts +119 -0
  130. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -0
  131. package/dist/agent-farm/servers/tower-terminals.js +629 -0
  132. package/dist/agent-farm/servers/tower-terminals.js.map +1 -0
  133. package/dist/agent-farm/servers/tower-tunnel.d.ts +34 -0
  134. package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -0
  135. package/dist/agent-farm/servers/tower-tunnel.js +473 -0
  136. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -0
  137. package/dist/agent-farm/servers/tower-types.d.ts +86 -0
  138. package/dist/agent-farm/servers/tower-types.d.ts.map +1 -0
  139. package/dist/agent-farm/servers/tower-types.js +6 -0
  140. package/dist/agent-farm/servers/tower-types.js.map +1 -0
  141. package/dist/agent-farm/servers/tower-utils.d.ts +58 -0
  142. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -0
  143. package/dist/agent-farm/servers/tower-utils.js +182 -0
  144. package/dist/agent-farm/servers/tower-utils.js.map +1 -0
  145. package/dist/agent-farm/servers/tower-websocket.d.ts +25 -0
  146. package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -0
  147. package/dist/agent-farm/servers/tower-websocket.js +171 -0
  148. package/dist/agent-farm/servers/tower-websocket.js.map +1 -0
  149. package/dist/agent-farm/state.d.ts +6 -2
  150. package/dist/agent-farm/state.d.ts.map +1 -1
  151. package/dist/agent-farm/state.js +34 -25
  152. package/dist/agent-farm/state.js.map +1 -1
  153. package/dist/agent-farm/types.d.ts +49 -26
  154. package/dist/agent-farm/types.d.ts.map +1 -1
  155. package/dist/agent-farm/utils/config.d.ts +0 -5
  156. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  157. package/dist/agent-farm/utils/config.js +12 -44
  158. package/dist/agent-farm/utils/config.js.map +1 -1
  159. package/dist/agent-farm/utils/deps.d.ts.map +1 -1
  160. package/dist/agent-farm/utils/deps.js +0 -32
  161. package/dist/agent-farm/utils/deps.js.map +1 -1
  162. package/dist/agent-farm/utils/file-tabs.d.ts +27 -0
  163. package/dist/agent-farm/utils/file-tabs.d.ts.map +1 -0
  164. package/dist/agent-farm/utils/file-tabs.js +46 -0
  165. package/dist/agent-farm/utils/file-tabs.js.map +1 -0
  166. package/dist/agent-farm/utils/gate-status.d.ts +16 -0
  167. package/dist/agent-farm/utils/gate-status.d.ts.map +1 -0
  168. package/dist/agent-farm/utils/gate-status.js +79 -0
  169. package/dist/agent-farm/utils/gate-status.js.map +1 -0
  170. package/dist/agent-farm/utils/gate-watcher.d.ts +38 -0
  171. package/dist/agent-farm/utils/gate-watcher.d.ts.map +1 -0
  172. package/dist/agent-farm/utils/gate-watcher.js +122 -0
  173. package/dist/agent-farm/utils/gate-watcher.js.map +1 -0
  174. package/dist/agent-farm/utils/index.d.ts +0 -1
  175. package/dist/agent-farm/utils/index.d.ts.map +1 -1
  176. package/dist/agent-farm/utils/index.js +0 -1
  177. package/dist/agent-farm/utils/index.js.map +1 -1
  178. package/dist/agent-farm/utils/notifications.d.ts +30 -0
  179. package/dist/agent-farm/utils/notifications.d.ts.map +1 -0
  180. package/dist/agent-farm/utils/notifications.js +121 -0
  181. package/dist/agent-farm/utils/notifications.js.map +1 -0
  182. package/dist/agent-farm/utils/server-utils.d.ts +5 -5
  183. package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
  184. package/dist/agent-farm/utils/server-utils.js +5 -16
  185. package/dist/agent-farm/utils/server-utils.js.map +1 -1
  186. package/dist/agent-farm/utils/session.d.ts +32 -0
  187. package/dist/agent-farm/utils/session.d.ts.map +1 -0
  188. package/dist/agent-farm/utils/session.js +57 -0
  189. package/dist/agent-farm/utils/session.js.map +1 -0
  190. package/dist/agent-farm/utils/shell.d.ts +9 -22
  191. package/dist/agent-farm/utils/shell.d.ts.map +1 -1
  192. package/dist/agent-farm/utils/shell.js +34 -34
  193. package/dist/agent-farm/utils/shell.js.map +1 -1
  194. package/dist/cli.d.ts.map +1 -1
  195. package/dist/cli.js +6 -37
  196. package/dist/cli.js.map +1 -1
  197. package/dist/commands/adopt.d.ts.map +1 -1
  198. package/dist/commands/adopt.js +33 -4
  199. package/dist/commands/adopt.js.map +1 -1
  200. package/dist/commands/consult/index.d.ts +13 -2
  201. package/dist/commands/consult/index.d.ts.map +1 -1
  202. package/dist/commands/consult/index.js +244 -29
  203. package/dist/commands/consult/index.js.map +1 -1
  204. package/dist/commands/doctor.d.ts.map +1 -1
  205. package/dist/commands/doctor.js +96 -79
  206. package/dist/commands/doctor.js.map +1 -1
  207. package/dist/commands/init.d.ts.map +1 -1
  208. package/dist/commands/init.js +36 -3
  209. package/dist/commands/init.js.map +1 -1
  210. package/dist/commands/porch/build-counter.d.ts +5 -0
  211. package/dist/commands/porch/build-counter.d.ts.map +1 -0
  212. package/dist/commands/porch/build-counter.js +5 -0
  213. package/dist/commands/porch/build-counter.js.map +1 -0
  214. package/dist/commands/porch/checks.d.ts +3 -2
  215. package/dist/commands/porch/checks.d.ts.map +1 -1
  216. package/dist/commands/porch/checks.js +8 -2
  217. package/dist/commands/porch/checks.js.map +1 -1
  218. package/dist/commands/porch/index.d.ts +4 -0
  219. package/dist/commands/porch/index.d.ts.map +1 -1
  220. package/dist/commands/porch/index.js +109 -70
  221. package/dist/commands/porch/index.js.map +1 -1
  222. package/dist/commands/porch/next.d.ts +22 -0
  223. package/dist/commands/porch/next.d.ts.map +1 -0
  224. package/dist/commands/porch/next.js +571 -0
  225. package/dist/commands/porch/next.js.map +1 -0
  226. package/dist/commands/porch/plan.d.ts +11 -1
  227. package/dist/commands/porch/plan.d.ts.map +1 -1
  228. package/dist/commands/porch/plan.js +33 -5
  229. package/dist/commands/porch/plan.js.map +1 -1
  230. package/dist/commands/porch/prompts.d.ts.map +1 -1
  231. package/dist/commands/porch/prompts.js +44 -26
  232. package/dist/commands/porch/prompts.js.map +1 -1
  233. package/dist/commands/porch/protocol.d.ts +6 -4
  234. package/dist/commands/porch/protocol.d.ts.map +1 -1
  235. package/dist/commands/porch/protocol.js +59 -15
  236. package/dist/commands/porch/protocol.js.map +1 -1
  237. package/dist/commands/porch/state.d.ts +29 -2
  238. package/dist/commands/porch/state.d.ts.map +1 -1
  239. package/dist/commands/porch/state.js +71 -3
  240. package/dist/commands/porch/state.js.map +1 -1
  241. package/dist/commands/porch/types.d.ts +45 -2
  242. package/dist/commands/porch/types.d.ts.map +1 -1
  243. package/dist/commands/porch/verdict.d.ts +31 -0
  244. package/dist/commands/porch/verdict.d.ts.map +1 -0
  245. package/dist/commands/porch/verdict.js +59 -0
  246. package/dist/commands/porch/verdict.js.map +1 -0
  247. package/dist/commands/update.d.ts.map +1 -1
  248. package/dist/commands/update.js +18 -6
  249. package/dist/commands/update.js.map +1 -1
  250. package/dist/lib/scaffold.d.ts +13 -0
  251. package/dist/lib/scaffold.d.ts.map +1 -1
  252. package/dist/lib/scaffold.js +36 -0
  253. package/dist/lib/scaffold.js.map +1 -1
  254. package/dist/terminal/index.d.ts +8 -0
  255. package/dist/terminal/index.d.ts.map +1 -0
  256. package/dist/terminal/index.js +5 -0
  257. package/dist/terminal/index.js.map +1 -0
  258. package/dist/terminal/pty-manager.d.ts +69 -0
  259. package/dist/terminal/pty-manager.d.ts.map +1 -0
  260. package/dist/terminal/pty-manager.js +377 -0
  261. package/dist/terminal/pty-manager.js.map +1 -0
  262. package/dist/terminal/pty-session.d.ts +104 -0
  263. package/dist/terminal/pty-session.d.ts.map +1 -0
  264. package/dist/terminal/pty-session.js +327 -0
  265. package/dist/terminal/pty-session.js.map +1 -0
  266. package/dist/terminal/ring-buffer.d.ts +34 -0
  267. package/dist/terminal/ring-buffer.d.ts.map +1 -0
  268. package/dist/terminal/ring-buffer.js +94 -0
  269. package/dist/terminal/ring-buffer.js.map +1 -0
  270. package/dist/terminal/session-manager.d.ts +115 -0
  271. package/dist/terminal/session-manager.d.ts.map +1 -0
  272. package/dist/terminal/session-manager.js +582 -0
  273. package/dist/terminal/session-manager.js.map +1 -0
  274. package/dist/terminal/shellper-client.d.ts +66 -0
  275. package/dist/terminal/shellper-client.d.ts.map +1 -0
  276. package/dist/terminal/shellper-client.js +234 -0
  277. package/dist/terminal/shellper-client.js.map +1 -0
  278. package/dist/terminal/shellper-main.d.ts +19 -0
  279. package/dist/terminal/shellper-main.d.ts.map +1 -0
  280. package/dist/terminal/shellper-main.js +153 -0
  281. package/dist/terminal/shellper-main.js.map +1 -0
  282. package/dist/terminal/shellper-process.d.ts +75 -0
  283. package/dist/terminal/shellper-process.d.ts.map +1 -0
  284. package/dist/terminal/shellper-process.js +279 -0
  285. package/dist/terminal/shellper-process.js.map +1 -0
  286. package/dist/terminal/shellper-protocol.d.ts +115 -0
  287. package/dist/terminal/shellper-protocol.d.ts.map +1 -0
  288. package/dist/terminal/shellper-protocol.js +214 -0
  289. package/dist/terminal/shellper-protocol.js.map +1 -0
  290. package/dist/terminal/shellper-replay-buffer.d.ts +38 -0
  291. package/dist/terminal/shellper-replay-buffer.d.ts.map +1 -0
  292. package/dist/terminal/shellper-replay-buffer.js +94 -0
  293. package/dist/terminal/shellper-replay-buffer.js.map +1 -0
  294. package/dist/terminal/ws-protocol.d.ts +27 -0
  295. package/dist/terminal/ws-protocol.d.ts.map +1 -0
  296. package/dist/terminal/ws-protocol.js +44 -0
  297. package/dist/terminal/ws-protocol.js.map +1 -0
  298. package/package.json +17 -5
  299. package/skeleton/.claude/skills/af/SKILL.md +89 -0
  300. package/skeleton/.claude/skills/codev/SKILL.md +41 -0
  301. package/skeleton/.claude/skills/consult/SKILL.md +81 -0
  302. package/skeleton/.claude/skills/generate-image/SKILL.md +56 -0
  303. package/skeleton/DEPENDENCIES.md +4 -62
  304. package/skeleton/builders.md +1 -1
  305. package/skeleton/consult-types/impl-review.md +18 -9
  306. package/skeleton/consult-types/integration-review.md +1 -1
  307. package/skeleton/consult-types/plan-review.md +1 -1
  308. package/skeleton/consult-types/pr-ready.md +1 -1
  309. package/skeleton/consult-types/spec-review.md +1 -1
  310. package/skeleton/porch/prompts/defend.md +1 -1
  311. package/skeleton/porch/prompts/evaluate.md +2 -2
  312. package/skeleton/porch/prompts/implement.md +1 -1
  313. package/skeleton/porch/prompts/plan.md +1 -1
  314. package/skeleton/porch/prompts/review.md +4 -4
  315. package/skeleton/porch/prompts/specify.md +1 -1
  316. package/skeleton/porch/prompts/understand.md +2 -2
  317. package/skeleton/protocol-schema.json +282 -0
  318. package/skeleton/protocols/bugfix/builder-prompt.md +60 -0
  319. package/skeleton/protocols/bugfix/prompts/fix.md +77 -0
  320. package/skeleton/protocols/bugfix/prompts/investigate.md +77 -0
  321. package/skeleton/protocols/bugfix/prompts/pr.md +84 -0
  322. package/skeleton/protocols/bugfix/protocol.json +20 -33
  323. package/skeleton/protocols/experiment/builder-prompt.md +52 -0
  324. package/skeleton/protocols/experiment/protocol.json +101 -0
  325. package/skeleton/protocols/experiment/protocol.md +3 -3
  326. package/skeleton/protocols/experiment/templates/notes.md +1 -1
  327. package/skeleton/protocols/maintain/builder-prompt.md +46 -0
  328. package/skeleton/protocols/maintain/prompts/audit.md +111 -0
  329. package/skeleton/protocols/maintain/prompts/clean.md +91 -0
  330. package/skeleton/protocols/maintain/prompts/sync.md +113 -0
  331. package/skeleton/protocols/maintain/prompts/verify.md +110 -0
  332. package/skeleton/protocols/maintain/protocol.json +141 -0
  333. package/skeleton/protocols/maintain/protocol.md +17 -11
  334. package/skeleton/protocols/protocol-schema.json +54 -1
  335. package/skeleton/protocols/spir/builder-prompt.md +66 -0
  336. package/skeleton/protocols/spir/prompts/implement.md +208 -0
  337. package/skeleton/protocols/{spider → spir}/prompts/plan.md +6 -70
  338. package/skeleton/protocols/{spider → spir}/prompts/review.md +20 -39
  339. package/skeleton/protocols/{spider → spir}/prompts/specify.md +24 -59
  340. package/skeleton/protocols/{spider → spir}/protocol.json +30 -10
  341. package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
  342. package/skeleton/protocols/spir/templates/review.md +89 -0
  343. package/skeleton/protocols/tick/builder-prompt.md +56 -0
  344. package/skeleton/protocols/tick/protocol.json +7 -2
  345. package/skeleton/protocols/tick/protocol.md +18 -18
  346. package/skeleton/protocols/tick/templates/review.md +1 -1
  347. package/skeleton/resources/commands/agent-farm.md +63 -46
  348. package/skeleton/resources/commands/codev.md +0 -2
  349. package/skeleton/resources/commands/overview.md +7 -17
  350. package/skeleton/resources/workflow-reference.md +4 -4
  351. package/skeleton/roles/architect.md +151 -306
  352. package/skeleton/roles/builder.md +115 -332
  353. package/skeleton/roles/consultant.md +6 -6
  354. package/skeleton/templates/AGENTS.md +2 -2
  355. package/skeleton/templates/CLAUDE.md +2 -2
  356. package/skeleton/templates/cheatsheet.md +7 -5
  357. package/skeleton/templates/projectlist.md +1 -1
  358. package/templates/dashboard/index.html +17 -16
  359. package/templates/dashboard/js/dialogs.js +7 -7
  360. package/templates/dashboard/js/files.js +2 -2
  361. package/templates/dashboard/js/main.js +4 -4
  362. package/templates/dashboard/js/projects.js +3 -3
  363. package/templates/dashboard/js/tabs.js +1 -1
  364. package/templates/dashboard/js/utils.js +22 -1
  365. package/templates/open.html +26 -0
  366. package/templates/tower.html +731 -91
  367. package/dist/agent-farm/commands/kickoff.d.ts +0 -20
  368. package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
  369. package/dist/agent-farm/commands/kickoff.js +0 -273
  370. package/dist/agent-farm/commands/kickoff.js.map +0 -1
  371. package/dist/agent-farm/commands/rename.d.ts +0 -13
  372. package/dist/agent-farm/commands/rename.d.ts.map +0 -1
  373. package/dist/agent-farm/commands/rename.js +0 -33
  374. package/dist/agent-farm/commands/rename.js.map +0 -1
  375. package/dist/agent-farm/commands/tutorial.d.ts +0 -10
  376. package/dist/agent-farm/commands/tutorial.d.ts.map +0 -1
  377. package/dist/agent-farm/commands/tutorial.js +0 -49
  378. package/dist/agent-farm/commands/tutorial.js.map +0 -1
  379. package/dist/agent-farm/commands/util.d.ts +0 -15
  380. package/dist/agent-farm/commands/util.d.ts.map +0 -1
  381. package/dist/agent-farm/commands/util.js +0 -108
  382. package/dist/agent-farm/commands/util.js.map +0 -1
  383. package/dist/agent-farm/servers/dashboard-server.d.ts +0 -7
  384. package/dist/agent-farm/servers/dashboard-server.d.ts.map +0 -1
  385. package/dist/agent-farm/servers/dashboard-server.js +0 -1858
  386. package/dist/agent-farm/servers/dashboard-server.js.map +0 -1
  387. package/dist/agent-farm/servers/open-server.d.ts +0 -7
  388. package/dist/agent-farm/servers/open-server.d.ts.map +0 -1
  389. package/dist/agent-farm/servers/open-server.js +0 -315
  390. package/dist/agent-farm/servers/open-server.js.map +0 -1
  391. package/dist/agent-farm/tutorial/index.d.ts +0 -8
  392. package/dist/agent-farm/tutorial/index.d.ts.map +0 -1
  393. package/dist/agent-farm/tutorial/index.js +0 -8
  394. package/dist/agent-farm/tutorial/index.js.map +0 -1
  395. package/dist/agent-farm/tutorial/prompts.d.ts +0 -57
  396. package/dist/agent-farm/tutorial/prompts.d.ts.map +0 -1
  397. package/dist/agent-farm/tutorial/prompts.js +0 -147
  398. package/dist/agent-farm/tutorial/prompts.js.map +0 -1
  399. package/dist/agent-farm/tutorial/runner.d.ts +0 -52
  400. package/dist/agent-farm/tutorial/runner.d.ts.map +0 -1
  401. package/dist/agent-farm/tutorial/runner.js +0 -204
  402. package/dist/agent-farm/tutorial/runner.js.map +0 -1
  403. package/dist/agent-farm/tutorial/state.d.ts +0 -26
  404. package/dist/agent-farm/tutorial/state.d.ts.map +0 -1
  405. package/dist/agent-farm/tutorial/state.js +0 -89
  406. package/dist/agent-farm/tutorial/state.js.map +0 -1
  407. package/dist/agent-farm/tutorial/steps/first-spec.d.ts +0 -7
  408. package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +0 -1
  409. package/dist/agent-farm/tutorial/steps/first-spec.js +0 -136
  410. package/dist/agent-farm/tutorial/steps/first-spec.js.map +0 -1
  411. package/dist/agent-farm/tutorial/steps/implementation.d.ts +0 -7
  412. package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +0 -1
  413. package/dist/agent-farm/tutorial/steps/implementation.js +0 -76
  414. package/dist/agent-farm/tutorial/steps/implementation.js.map +0 -1
  415. package/dist/agent-farm/tutorial/steps/index.d.ts +0 -10
  416. package/dist/agent-farm/tutorial/steps/index.d.ts.map +0 -1
  417. package/dist/agent-farm/tutorial/steps/index.js +0 -10
  418. package/dist/agent-farm/tutorial/steps/index.js.map +0 -1
  419. package/dist/agent-farm/tutorial/steps/planning.d.ts +0 -7
  420. package/dist/agent-farm/tutorial/steps/planning.d.ts.map +0 -1
  421. package/dist/agent-farm/tutorial/steps/planning.js +0 -143
  422. package/dist/agent-farm/tutorial/steps/planning.js.map +0 -1
  423. package/dist/agent-farm/tutorial/steps/review.d.ts +0 -7
  424. package/dist/agent-farm/tutorial/steps/review.d.ts.map +0 -1
  425. package/dist/agent-farm/tutorial/steps/review.js +0 -78
  426. package/dist/agent-farm/tutorial/steps/review.js.map +0 -1
  427. package/dist/agent-farm/tutorial/steps/setup.d.ts +0 -7
  428. package/dist/agent-farm/tutorial/steps/setup.d.ts.map +0 -1
  429. package/dist/agent-farm/tutorial/steps/setup.js +0 -126
  430. package/dist/agent-farm/tutorial/steps/setup.js.map +0 -1
  431. package/dist/agent-farm/tutorial/steps/welcome.d.ts +0 -7
  432. package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +0 -1
  433. package/dist/agent-farm/tutorial/steps/welcome.js +0 -50
  434. package/dist/agent-farm/tutorial/steps/welcome.js.map +0 -1
  435. package/dist/agent-farm/utils/orphan-handler.d.ts +0 -27
  436. package/dist/agent-farm/utils/orphan-handler.d.ts.map +0 -1
  437. package/dist/agent-farm/utils/orphan-handler.js +0 -149
  438. package/dist/agent-farm/utils/orphan-handler.js.map +0 -1
  439. package/dist/agent-farm/utils/port-registry.d.ts +0 -58
  440. package/dist/agent-farm/utils/port-registry.d.ts.map +0 -1
  441. package/dist/agent-farm/utils/port-registry.js +0 -166
  442. package/dist/agent-farm/utils/port-registry.js.map +0 -1
  443. package/dist/agent-farm/utils/terminal-ports.d.ts +0 -18
  444. package/dist/agent-farm/utils/terminal-ports.d.ts.map +0 -1
  445. package/dist/agent-farm/utils/terminal-ports.js +0 -35
  446. package/dist/agent-farm/utils/terminal-ports.js.map +0 -1
  447. package/dist/commands/pcheck/cache.d.ts +0 -48
  448. package/dist/commands/pcheck/cache.d.ts.map +0 -1
  449. package/dist/commands/pcheck/cache.js +0 -170
  450. package/dist/commands/pcheck/cache.js.map +0 -1
  451. package/dist/commands/pcheck/evaluator.d.ts +0 -15
  452. package/dist/commands/pcheck/evaluator.d.ts.map +0 -1
  453. package/dist/commands/pcheck/evaluator.js +0 -246
  454. package/dist/commands/pcheck/evaluator.js.map +0 -1
  455. package/dist/commands/pcheck/index.d.ts +0 -12
  456. package/dist/commands/pcheck/index.d.ts.map +0 -1
  457. package/dist/commands/pcheck/index.js +0 -249
  458. package/dist/commands/pcheck/index.js.map +0 -1
  459. package/dist/commands/pcheck/parser.d.ts +0 -39
  460. package/dist/commands/pcheck/parser.d.ts.map +0 -1
  461. package/dist/commands/pcheck/parser.js +0 -155
  462. package/dist/commands/pcheck/parser.js.map +0 -1
  463. package/dist/commands/pcheck/types.d.ts +0 -82
  464. package/dist/commands/pcheck/types.d.ts.map +0 -1
  465. package/dist/commands/pcheck/types.js +0 -5
  466. package/dist/commands/pcheck/types.js.map +0 -1
  467. package/dist/commands/porch/claude.d.ts +0 -29
  468. package/dist/commands/porch/claude.d.ts.map +0 -1
  469. package/dist/commands/porch/claude.js +0 -79
  470. package/dist/commands/porch/claude.js.map +0 -1
  471. package/dist/commands/porch/consultation.d.ts +0 -56
  472. package/dist/commands/porch/consultation.d.ts.map +0 -1
  473. package/dist/commands/porch/consultation.js +0 -330
  474. package/dist/commands/porch/consultation.js.map +0 -1
  475. package/dist/commands/porch/notifications.d.ts +0 -99
  476. package/dist/commands/porch/notifications.d.ts.map +0 -1
  477. package/dist/commands/porch/notifications.js +0 -223
  478. package/dist/commands/porch/notifications.js.map +0 -1
  479. package/dist/commands/porch/plan-parser.d.ts +0 -38
  480. package/dist/commands/porch/plan-parser.d.ts.map +0 -1
  481. package/dist/commands/porch/plan-parser.js +0 -166
  482. package/dist/commands/porch/plan-parser.js.map +0 -1
  483. package/dist/commands/porch/protocol-loader.d.ts +0 -46
  484. package/dist/commands/porch/protocol-loader.d.ts.map +0 -1
  485. package/dist/commands/porch/protocol-loader.js +0 -262
  486. package/dist/commands/porch/protocol-loader.js.map +0 -1
  487. package/dist/commands/porch/repl.d.ts +0 -33
  488. package/dist/commands/porch/repl.d.ts.map +0 -1
  489. package/dist/commands/porch/repl.js +0 -206
  490. package/dist/commands/porch/repl.js.map +0 -1
  491. package/dist/commands/porch/run.d.ts +0 -15
  492. package/dist/commands/porch/run.d.ts.map +0 -1
  493. package/dist/commands/porch/run.js +0 -551
  494. package/dist/commands/porch/run.js.map +0 -1
  495. package/dist/commands/porch/signal-parser.d.ts +0 -102
  496. package/dist/commands/porch/signal-parser.d.ts.map +0 -1
  497. package/dist/commands/porch/signal-parser.js +0 -199
  498. package/dist/commands/porch/signal-parser.js.map +0 -1
  499. package/dist/commands/porch/signals.d.ts +0 -35
  500. package/dist/commands/porch/signals.d.ts.map +0 -1
  501. package/dist/commands/porch/signals.js +0 -76
  502. package/dist/commands/porch/signals.js.map +0 -1
  503. package/dist/commands/porch2/checks.d.ts +0 -29
  504. package/dist/commands/porch2/checks.d.ts.map +0 -1
  505. package/dist/commands/porch2/checks.js +0 -141
  506. package/dist/commands/porch2/checks.js.map +0 -1
  507. package/dist/commands/porch2/index.d.ts +0 -38
  508. package/dist/commands/porch2/index.d.ts.map +0 -1
  509. package/dist/commands/porch2/index.js +0 -483
  510. package/dist/commands/porch2/index.js.map +0 -1
  511. package/dist/commands/porch2/plan.d.ts +0 -70
  512. package/dist/commands/porch2/plan.d.ts.map +0 -1
  513. package/dist/commands/porch2/plan.js +0 -227
  514. package/dist/commands/porch2/plan.js.map +0 -1
  515. package/dist/commands/porch2/protocol.d.ts +0 -37
  516. package/dist/commands/porch2/protocol.d.ts.map +0 -1
  517. package/dist/commands/porch2/protocol.js +0 -183
  518. package/dist/commands/porch2/protocol.js.map +0 -1
  519. package/dist/commands/porch2/state.d.ts +0 -35
  520. package/dist/commands/porch2/state.d.ts.map +0 -1
  521. package/dist/commands/porch2/state.js +0 -124
  522. package/dist/commands/porch2/state.js.map +0 -1
  523. package/dist/commands/porch2/types.d.ts +0 -79
  524. package/dist/commands/porch2/types.d.ts.map +0 -1
  525. package/dist/commands/porch2/types.js +0 -8
  526. package/dist/commands/porch2/types.js.map +0 -1
  527. package/dist/commands/tower.d.ts +0 -16
  528. package/dist/commands/tower.d.ts.map +0 -1
  529. package/dist/commands/tower.js +0 -21
  530. package/dist/commands/tower.js.map +0 -1
  531. package/skeleton/config.json +0 -7
  532. package/skeleton/protocols/spider/prompts/defend.md +0 -215
  533. package/skeleton/protocols/spider/prompts/evaluate.md +0 -241
  534. package/skeleton/protocols/spider/prompts/implement.md +0 -149
  535. package/skeleton/protocols/spider/templates/review.md +0 -207
  536. /package/skeleton/protocols/{spider → spir}/templates/plan.md +0 -0
  537. /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 shellper processes for terminal persistence")
190
+ - Runtime behavior (e.g., "spawns a shellper 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 shellper-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,66 @@
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
+ ## Notifications
57
+ Always use `af send architect "..."` to notify the architect at key moments:
58
+ - **Gate reached**: `af send architect "Project {{project_id}}: <gate-name> ready for approval"`
59
+ - **PR ready**: `af send architect "PR #N ready for review (project {{project_id}})"`
60
+ - **PR merged**: `af send architect "Project {{project_id}} complete. PR merged. Ready for cleanup."`
61
+ - **Blocked**: `af send architect "Blocked on project {{project_id}}: [reason]"`
62
+
63
+ ## Getting Started
64
+ 1. Read the protocol document thoroughly
65
+ 2. Review the spec and plan (if available)
66
+ 3. Begin implementation following the protocol phases