@cluesmith/codev 2.0.0-rc.9 → 2.0.1

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 +480 -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
@@ -1,9 +1,19 @@
1
- # SPIDER Protocol
1
+ # SPIR Protocol
2
+
3
+ > **SPIR** = **S**pecify → **P**lan → **I**mplement → **R**eview
4
+ >
5
+ > Each phase has one build-verify cycle with 3-way consultation.
2
6
 
3
7
  > **Quick Reference**: See `codev/resources/workflow-reference.md` for stage diagrams and common commands.
4
8
 
5
9
  ## Prerequisites
6
10
 
11
+ **Clean Worktree Before Spawning Builders**:
12
+ - All specs, plans, and local changes **MUST be committed** before `af spawn`
13
+ - Builders work in git worktrees branched from HEAD — uncommitted files are invisible
14
+ - This includes `codev update` results, spec drafts, and plan approvals
15
+ - The `af spawn` command enforces this (use `--force` to override)
16
+
7
17
  **Required for Multi-Agent Consultation**:
8
18
  - The `consult` CLI must be available (installed with `npm install -g @cluesmith/codev`)
9
19
  - At least one consultation backend: `claude`, `gemini-cli`, or `codex`
@@ -14,17 +24,17 @@
14
24
  ### Multi-Agent Consultation (ENABLED BY DEFAULT)
15
25
 
16
26
  **DEFAULT BEHAVIOR:**
17
- Multi-agent consultation is **ENABLED BY DEFAULT** when using SPIDER protocol.
27
+ Multi-agent consultation is **ENABLED BY DEFAULT** when using SPIR protocol.
18
28
 
19
29
  **DEFAULT AGENTS:**
20
30
  - **GPT-5 Codex**: Primary reviewer for architecture, feasibility, and code quality
21
31
  - **Gemini Pro**: Secondary reviewer for completeness, edge cases, and alternative approaches
22
32
 
23
33
  **DISABLING CONSULTATION:**
24
- To run SPIDER without consultation, say "without consultation" when starting work.
34
+ To run SPIR without consultation, say "without consultation" when starting work.
25
35
 
26
36
  **CUSTOM AGENTS:**
27
- The user can specify different agents by saying: "use SPIDER with consultation from [agent1] and [agent2]"
37
+ The user can specify different agents by saying: "use SPIR with consultation from [agent1] and [agent2]"
28
38
 
29
39
  **CONSULTATION BEHAVIOR:**
30
40
  - DEFAULT: MANDATORY consultation with GPT-5 and Gemini Pro at EVERY checkpoint
@@ -40,13 +50,21 @@ The user can specify different agents by saying: "use SPIDER with consultation f
40
50
  - **Review**: After review document
41
51
 
42
52
  ## Overview
43
- SPIDER is a structured development protocol that emphasizes specification-driven development with iterative implementation and continuous review. It builds upon the DAPPER methodology with a focus on context-first development and multi-agent collaboration.
53
+ SPIR is a structured development protocol that emphasizes specification-driven development with iterative implementation and continuous review. It builds upon the DAPPER methodology with a focus on context-first development and multi-agent collaboration.
54
+
55
+ **The SPIR Model**:
56
+ - **S - Specify**: Write specification with 3-way review → Gate: `spec-approval`
57
+ - **P - Plan**: Write implementation plan with 3-way review → Gate: `plan-approval`
58
+ - **I - Implement**: Execute each plan phase with build-verify cycle (one cycle per phase)
59
+ - **R - Review**: Final review and PR preparation with 3-way review
60
+
61
+ Each phase follows a build-verify loop: build the artifact, then verify with 3-way consultation (Gemini, Codex, Claude).
44
62
 
45
63
  **Core Principle**: Each feature is tracked through exactly THREE documents - a specification, a plan, and a review with lessons learned - all sharing the same filename and sequential identifier.
46
64
 
47
- ## When to Use SPIDER
65
+ ## When to Use SPIR
48
66
 
49
- ### Use SPIDER for:
67
+ ### Use SPIR for:
50
68
  - New feature development
51
69
  - Architecture changes
52
70
  - Complex refactoring
@@ -54,7 +72,7 @@ SPIDER is a structured development protocol that emphasizes specification-driven
54
72
  - API design and implementation
55
73
  - Performance optimization initiatives
56
74
 
57
- ### Skip SPIDER for:
75
+ ### Skip SPIR for:
58
76
  - Simple bug fixes (< 10 lines)
59
77
  - Documentation updates
60
78
  - Configuration changes
@@ -224,25 +242,21 @@ Each phase should be:
224
242
  **Template**: `templates/plan.md`
225
243
  **Review Required**: Yes - Technical lead approval AFTER consultations
226
244
 
227
- ### (IDE) - Implementation Loop
228
-
229
- Execute for each phase in the plan. This is a strict cycle that must be completed in order.
245
+ ### I - Implement (Per Plan Phase)
230
246
 
231
- **⚠️ MANDATORY**: The I-D-E cycle MUST be completed for EACH PHASE, not just at the end of all phases. Skipping D (Defend) or E (Evaluate) for any phase is a PROTOCOL VIOLATION.
247
+ Execute for each phase in the plan. Each phase follows a build-verify cycle.
232
248
 
233
249
  **CRITICAL PRECONDITION**: Before starting any phase, verify the previous phase was committed to git. No phase can begin without the prior phase's commit.
234
250
 
235
- **Phase Completion Process**:
236
- 1. **Implement** - Build the code for this phase
237
- 2. **Defend** - Write comprehensive tests that guard functionality
238
- 3. **Evaluate** - Assess and discuss with user
251
+ **Build-Verify Cycle Per Phase**:
252
+ 1. **Build** - Implement code and tests for this phase
253
+ 2. **Verify** - 3-way consultation (Gemini, Codex, Claude)
254
+ 3. **Iterate** - Address feedback until verification passes
239
255
  4. **Commit** - Single atomic commit for the phase (MANDATORY before next phase)
240
256
  5. **Proceed** - Move to next phase only after commit
241
257
 
242
258
  **Handling Failures**:
243
- - If **Defend** phase reveals gaps → return to **Implement** to fix
244
- - If **Evaluation** reveals unmet criteria → return to **Implement**
245
- - If user requests changes → return to **Implement**
259
+ - If verification reveals gaps → iterate and fix
246
260
  - If fundamental plan flaws found → mark phase as `blocked` and revise plan
247
261
 
248
262
  **Commit Requirements**:
@@ -586,12 +600,12 @@ Implements bcrypt-based password hashing with configurable rounds
586
600
 
587
601
  ### Branch Naming
588
602
  ```
589
- spider/####-<spec-name>/<phase-name>
603
+ spir/####-<spec-name>/<phase-name>
590
604
  ```
591
605
 
592
606
  Example:
593
607
  ```
594
- spider/0001-user-authentication/database-schema
608
+ spir/0001-user-authentication/database-schema
595
609
  ```
596
610
 
597
611
 
@@ -0,0 +1,89 @@
1
+ # Review: [Feature/Project Name]
2
+
3
+ ## Summary
4
+
5
+ [1-3 sentences: what was built, how many phases, net outcome.]
6
+
7
+ ## Spec Compliance
8
+
9
+ - [x] AC1: [Description] (Phase N)
10
+ - [x] AC2: [Description] (Phase N)
11
+ - [ ] ACn: [Not met — reason]
12
+
13
+ ## Deviations from Plan
14
+
15
+ - **Phase N**: [What changed and why]
16
+
17
+ ## Key Metrics
18
+
19
+ - **Commits**: [N] on the branch
20
+ - **Tests**: [N] passing ([N] existing + [N] new)
21
+ - **Files created**: [list]
22
+ - **Files deleted**: [list]
23
+ - **Net LOC impact**: [+/-N lines]
24
+
25
+ ## Timelog
26
+
27
+ All times [timezone], [date range].
28
+
29
+ | Time | Event |
30
+ |------|-------|
31
+ | HH:MM | First commit: [description] |
32
+ | HH:MM | [Phase/milestone] |
33
+ | — | **GATE: [gate-name]** (human approval required) |
34
+ | HH:MM | Implementation begins |
35
+ | HH:MM | Phase N complete after N iterations |
36
+ | HH:MM | **GATE: pr-ready** |
37
+
38
+ ### Autonomous Operation
39
+
40
+ | Period | Duration | Activity |
41
+ |--------|----------|----------|
42
+ | Spec + Plan | ~Nm | [Summary] |
43
+ | Human gate wait | ~Nh Nm | Idle — waiting for approval |
44
+ | Implementation → PR | ~Nh Nm | N phases, N consultation rounds |
45
+
46
+ **Total wall clock** (first commit to pr-ready): **Xh Ym**
47
+ **Total autonomous work time** (excluding gate waits): **~Xh Ym**
48
+ **Context window resets**: [N] (resumed automatically / required manual restart)
49
+
50
+ ## Consultation Iteration Summary
51
+
52
+ [N] consultation files produced ([N] rounds x [N] models). [N] APPROVE, [N] REQUEST_CHANGES, [N] COMMENT.
53
+
54
+ | Phase | Iters | Who Blocked | What They Caught |
55
+ |-------|-------|-------------|------------------|
56
+ | Specify | N | [Model] | [Brief description] |
57
+ | Plan | N | [Model] | [Brief description] |
58
+ | Phase 1 | N | [Model] | [Brief description] |
59
+ | Phase N | N | [Model] | [Brief description] |
60
+ | Review | N | [Model] | [Brief description] |
61
+
62
+ **Most frequent blocker**: [Model] — blocked in N of N rounds, focused on: [pattern].
63
+
64
+ ### Avoidable Iterations
65
+
66
+ Iterations that could have been prevented with better builder behavior:
67
+
68
+ 1. **[Pattern]**: [Specific thing the builder should have done without needing reviewer feedback. E.g., "Run exhaustive grep before claiming all instances fixed."]
69
+
70
+ 2. **[Pattern]**: [Another avoidable iteration pattern.]
71
+
72
+ ## Lessons Learned
73
+
74
+ ### What Went Well
75
+ - [Specific positive observation — what worked and why]
76
+
77
+ ### Challenges Encountered
78
+ - **[Challenge]**: [How it was resolved. How many iterations it cost.]
79
+
80
+ ### What Would Be Done Differently
81
+ - [Actionable improvement for future builders]
82
+
83
+ ## Technical Debt
84
+
85
+ - [Any shortcuts taken or inconsistencies introduced]
86
+
87
+ ## Follow-up Items
88
+
89
+ - [Items identified for future work, outside this spec's scope]
@@ -0,0 +1,56 @@
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 TICK protocol 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
+
21
+ ### ABSOLUTE RESTRICTIONS (STRICT MODE)
22
+ - **NEVER edit `status.yaml` directly** — only porch commands may modify project state
23
+ - **NEVER call `porch approve` without explicit human approval** — only run it after the architect says to
24
+ - **NEVER skip the 3-way review** — always follow porch next → porch done cycle
25
+ {{/if}}
26
+
27
+ ## Protocol
28
+ Follow the TICK protocol: `codev/protocols/tick/protocol.md`
29
+
30
+ TICK is for amendments to existing SPIR specifications. You will:
31
+ 1. Identify the target spec to amend
32
+ 2. Update the spec with the amendment
33
+ 3. Update the plan
34
+ 4. Implement the changes
35
+ 5. Defend with tests
36
+ 6. Create review
37
+
38
+ {{#if spec}}
39
+ ## Target Spec
40
+ The spec to amend is at: `{{spec.path}}`
41
+ {{/if}}
42
+
43
+ {{#if plan}}
44
+ ## Target Plan
45
+ The plan to amend is at: `{{plan.path}}`
46
+ {{/if}}
47
+
48
+ {{#if task}}
49
+ ## Amendment Description
50
+ {{task_text}}
51
+ {{/if}}
52
+
53
+ ## Getting Started
54
+ 1. Read the TICK protocol thoroughly
55
+ 2. Identify what needs to change in the existing spec
56
+ 3. Follow the amendment workflow
@@ -1,8 +1,12 @@
1
1
  {
2
2
  "$schema": "../../protocol-schema.json",
3
3
  "name": "tick",
4
- "version": "1.0.0",
5
- "description": "Amendment workflow for existing SPIDER specifications",
4
+ "version": "1.1.0",
5
+ "description": "Amendment workflow for existing SPIR specifications",
6
+ "input": {
7
+ "type": "spec",
8
+ "required": false
9
+ },
6
10
  "phases": [
7
11
  {
8
12
  "id": "identify",
@@ -138,6 +142,7 @@
138
142
  }
139
143
  },
140
144
  "defaults": {
145
+ "mode": "strict",
141
146
  "consultation": {
142
147
  "enabled": true,
143
148
  "models": ["gemini", "codex"],
@@ -3,16 +3,16 @@
3
3
 
4
4
  ## Overview
5
5
 
6
- TICK is an **amendment workflow** for existing SPIDER specifications. Rather than creating new standalone specs, TICK modifies existing spec and plan documents in-place, tracking changes in an "Amendments" section.
6
+ TICK is an **amendment workflow** for existing SPIR specifications. Rather than creating new standalone specs, TICK modifies existing spec and plan documents in-place, tracking changes in an "Amendments" section.
7
7
 
8
- **Core Principle**: TICK is for *refining* existing specs. SPIDER is for *creating* new specs.
8
+ **Core Principle**: TICK is for *refining* existing specs. SPIR is for *creating* new specs.
9
9
 
10
- **Key Insight**: TICKs are not small SPIDERs - they're amendments to existing SPIDERs. This eliminates the "TICK vs SPIDER" decision problem and keeps related work together.
10
+ **Key Insight**: TICKs are not small SPIRs - they're amendments to existing SPIRs. This eliminates the "TICK vs SPIR" decision problem and keeps related work together.
11
11
 
12
12
  ## When to Use TICK
13
13
 
14
14
  ### Use TICK when:
15
- - Making **amendments to an existing SPIDER spec** that is already `integrated`
15
+ - Making **amendments to an existing SPIR spec** that is already `integrated`
16
16
  - Small scope (< 300 lines of new/changed code)
17
17
  - Requirements are clear and well-defined
18
18
  - No fundamental architecture changes
@@ -23,7 +23,7 @@ TICK is an **amendment workflow** for existing SPIDER specifications. Rather tha
23
23
  - Utility function additions to existing modules
24
24
  - Refactoring within an existing feature
25
25
 
26
- ### Use SPIDER instead when:
26
+ ### Use SPIR instead when:
27
27
  - Creating a **new feature from scratch** (no existing spec to amend)
28
28
  - Major architecture changes (scope too large for amendment)
29
29
  - Unclear requirements needing exploration
@@ -31,8 +31,8 @@ TICK is an **amendment workflow** for existing SPIDER specifications. Rather tha
31
31
  - Multiple stakeholders need alignment
32
32
 
33
33
  ### Cannot Use TICK when:
34
- - No relevant SPIDER spec exists (create a new SPIDER spec instead)
35
- - Target spec is not yet `integrated` (complete the SPIDER cycle first)
34
+ - No relevant SPIR spec exists (create a new SPIR spec instead)
35
+ - Target spec is not yet `integrated` (complete the SPIR cycle first)
36
36
 
37
37
  ## Amendment Workflow
38
38
 
@@ -162,9 +162,9 @@ The format `[TICK ####-NNN]` identifies:
162
162
  - `####`: Parent spec number (e.g., 0002)
163
163
  - `NNN`: TICK amendment number (e.g., 001, 002, 003)
164
164
 
165
- ## Key Differences from SPIDER
165
+ ## Key Differences from SPIR
166
166
 
167
- | Aspect | SPIDER | TICK |
167
+ | Aspect | SPIR | TICK |
168
168
  |--------|--------|------|
169
169
  | Purpose | Create new features | Amend existing features |
170
170
  | File creation | Creates new spec/plan/review | Modifies spec/plan, creates review |
@@ -178,16 +178,16 @@ The format `[TICK ####-NNN]` identifies:
178
178
 
179
179
  ```
180
180
  Is there an existing spec to amend?
181
- ├── NO → Use SPIDER (create new spec)
181
+ ├── NO → Use SPIR (create new spec)
182
182
  └── YES → Is it integrated?
183
- ├── NO → Complete SPIDER cycle first
183
+ ├── NO → Complete SPIR cycle first
184
184
  └── YES → Is the change small (<300 LOC)?
185
185
  ├── YES → Use TICK (amend existing spec)
186
- └── NO → Use SPIDER (scope too large)
186
+ └── NO → Use SPIR (scope too large)
187
187
  ```
188
188
 
189
189
  **Mental Model**:
190
- - SPIDER = Create new feature from scratch
190
+ - SPIR = Create new feature from scratch
191
191
  - TICK = Refine/extend existing feature
192
192
 
193
193
  ## Example TICK Workflow
@@ -251,7 +251,7 @@ Existing standalone TICK projects (created before this protocol change) are gran
251
251
  1. **Single source of truth**: Spec file shows complete feature evolution
252
252
  2. **Clear history**: Amendments section documents all changes chronologically
253
253
  3. **Reduced fragmentation**: Related work stays together
254
- 4. **Simpler mental model**: "New vs amendment" is clearer than "SPIDER vs TICK"
254
+ 4. **Simpler mental model**: "New vs amendment" is clearer than "SPIR vs TICK"
255
255
  5. **Preserved context**: Looking at a spec shows all refinements
256
256
 
257
257
  ## Limitations
@@ -264,14 +264,14 @@ Existing standalone TICK projects (created before this protocol change) are gran
264
264
  ## Best Practices
265
265
 
266
266
  1. **Verify spec is integrated**: Never TICK a spec that isn't complete
267
- 2. **Keep TICKs small**: If scope grows, consider new SPIDER spec
267
+ 2. **Keep TICKs small**: If scope grows, consider new SPIR spec
268
268
  3. **Clear summaries**: Amendment entries should be self-explanatory
269
269
  4. **Test before review**: Always test functionality before presenting
270
270
  5. **Honest documentation**: Document all deviations in review
271
271
 
272
272
  ## Templates
273
273
 
274
- TICK uses the standard SPIDER templates with amendments sections:
275
- - Spec template: `codev/protocols/spider/templates/spec.md` (includes Amendments section)
276
- - Plan template: `codev/protocols/spider/templates/plan.md` (includes Amendment History section)
274
+ TICK uses the standard SPIR templates with amendments sections:
275
+ - Spec template: `codev/protocols/spir/templates/spec.md` (includes Amendments section)
276
+ - Plan template: `codev/protocols/spir/templates/plan.md` (includes Amendment History section)
277
277
  - Review template: `codev/protocols/tick/templates/review.md` (TICK-specific)
@@ -77,7 +77,7 @@
77
77
 
78
78
  ## TICK Protocol Feedback
79
79
  - **Autonomous execution**: [Worked well / Issues encountered]
80
- - **Single-phase approach**: [Appropriate / Should have used SPIDER]
80
+ - **Single-phase approach**: [Appropriate / Should have used SPIR]
81
81
  - **Speed vs quality trade-off**: [Balanced / Too fast / Too slow]
82
82
  - **End-only consultation**: [Caught issues / Missed opportunities]
83
83
 
@@ -18,12 +18,16 @@ af <command> [options]
18
18
 
19
19
  ## Commands
20
20
 
21
- ### af start
21
+ ### af dash
22
+
23
+ Project dashboard commands - start/stop the architect dashboard for this project.
24
+
25
+ #### af dash start
22
26
 
23
27
  Start the architect dashboard.
24
28
 
25
29
  ```bash
26
- af start [options]
30
+ af dash start [options]
27
31
  ```
28
32
 
29
33
  **Options:**
@@ -39,7 +43,7 @@ af start [options]
39
43
  Starts the agent-farm dashboard with:
40
44
  - Architect terminal (Claude session with architect role)
41
45
  - Web-based UI for monitoring builders
42
- - tmux session management
46
+ - Terminal session management (shellper processes)
43
47
 
44
48
  The dashboard is accessible via browser at `http://localhost:<port>`.
45
49
 
@@ -47,16 +51,16 @@ The dashboard is accessible via browser at `http://localhost:<port>`.
47
51
 
48
52
  ```bash
49
53
  # Start with defaults
50
- af start
54
+ af dash start
51
55
 
52
56
  # Start with custom port
53
- af start -p 4300
57
+ af dash start -p 4300
54
58
 
55
59
  # Start with specific command
56
- af start -c "claude --model opus"
60
+ af dash start -c "claude --model opus"
57
61
 
58
62
  # Start on remote machine
59
- af start --remote user@host
63
+ af dash start --remote user@host
60
64
  ```
61
65
 
62
66
  #### Remote Access
@@ -65,13 +69,13 @@ Start Agent Farm on a remote machine and access it from your local workstation w
65
69
 
66
70
  ```bash
67
71
  # On your local machine - one command does everything:
68
- af start --remote user@remote-host
72
+ af dash start --remote user@remote-host
69
73
 
70
74
  # Or with explicit project path:
71
- af start --remote user@remote-host:/path/to/project
75
+ af dash start --remote user@remote-host:/path/to/project
72
76
 
73
77
  # With custom port:
74
- af start --remote user@remote-host --port 4300
78
+ af dash start --remote user@remote-host --port 4300
75
79
  ```
76
80
 
77
81
  This single command:
@@ -112,26 +116,23 @@ export PATH="$HOME/.local/bin:$PATH"
112
116
 
113
117
  ```bash
114
118
  # DEPRECATED: Exposes dashboard without authentication
115
- af start --allow-insecure-remote
119
+ af dash start --allow-insecure-remote
116
120
  ```
117
121
 
118
122
  The `--allow-insecure-remote` flag binds to `0.0.0.0` with no authentication. Use `--remote` instead for secure access via SSH.
119
123
 
120
- ---
124
+ #### af dash stop
121
125
 
122
- ### af stop
123
-
124
- Stop all agent farm processes.
126
+ Stop all agent farm processes for this project.
125
127
 
126
128
  ```bash
127
- af stop
129
+ af dash stop
128
130
  ```
129
131
 
130
132
  **Description:**
131
133
 
132
134
  Stops all running agent-farm processes including:
133
- - tmux sessions
134
- - ttyd processes
135
+ - Terminal sessions (shellper processes)
135
136
  - Dashboard servers
136
137
 
137
138
  Does NOT clean up worktrees - use `af cleanup` for that.
@@ -306,16 +307,14 @@ af open src/auth/login.ts
306
307
 
307
308
  ---
308
309
 
309
- ### af util
310
+ ### af shell
310
311
 
311
312
  Spawn a utility shell terminal.
312
313
 
313
314
  ```bash
314
- af util [options]
315
+ af shell [options]
315
316
  ```
316
317
 
317
- **Aliases:** `af shell`
318
-
319
318
  **Options:**
320
319
  - `-n, --name <name>` - Name for the shell terminal
321
320
 
@@ -330,10 +329,10 @@ Opens a general-purpose shell terminal in the dashboard. Useful for:
330
329
 
331
330
  ```bash
332
331
  # Open utility shell
333
- af util
332
+ af shell
334
333
 
335
334
  # Open with custom name
336
- af util -n "test-runner"
335
+ af shell -n "test-runner"
337
336
  ```
338
337
 
339
338
  ---
@@ -358,25 +357,6 @@ af rename 0042 "auth-rework"
358
357
 
359
358
  ---
360
359
 
361
- ### af tutorial
362
-
363
- Interactive tutorial for new users.
364
-
365
- ```bash
366
- af tutorial [options]
367
- ```
368
-
369
- **Options:**
370
- - `--reset` - Start tutorial fresh
371
- - `--skip` - Skip current step
372
- - `--status` - Show tutorial progress
373
-
374
- **Description:**
375
-
376
- Walks through the basics of using agent-farm with guided steps.
377
-
378
- ---
379
-
380
360
  ### af ports
381
361
 
382
362
  Manage global port registry.
@@ -410,7 +390,7 @@ Removes entries for projects that no longer exist.
410
390
 
411
391
  ### af tower
412
392
 
413
- Manage the tower dashboard.
393
+ Manage the cross-project tower dashboard. Tower shows all agent-farm instances across projects and provides cloud connectivity via codevos.ai.
414
394
 
415
395
  #### af tower start
416
396
 
@@ -434,6 +414,43 @@ af tower stop [options]
434
414
  **Options:**
435
415
  - `-p, --port <port>` - Port to stop (default: 4100)
436
416
 
417
+ #### af tower register
418
+
419
+ Register this tower with codevos.ai for remote access.
420
+
421
+ ```bash
422
+ af tower register [options]
423
+ ```
424
+
425
+ **Options:**
426
+ - `--reauth` - Re-authenticate without changing tower name
427
+ - `-p, --port <port>` - Tower port to signal after registration (default: 4100)
428
+
429
+ #### af tower deregister
430
+
431
+ Remove this tower's registration from codevos.ai.
432
+
433
+ ```bash
434
+ af tower deregister [options]
435
+ ```
436
+
437
+ **Options:**
438
+ - `-p, --port <port>` - Tower port to signal after deregistration (default: 4100)
439
+
440
+ #### af tower status
441
+
442
+ Show tower status including cloud connection info.
443
+
444
+ ```bash
445
+ af tower status [options]
446
+ ```
447
+
448
+ **Options:**
449
+ - `-p, --port <port>` - Tower port (default: 4100)
450
+
451
+ **Environment Variables:**
452
+ - `CODEVOS_URL` - Override the codevos.ai server URL (default: `https://codevos.ai`). Useful for local development or staging.
453
+
437
454
  ---
438
455
 
439
456
  ### af db
@@ -495,7 +512,7 @@ af db stats [options]
495
512
 
496
513
  ## Configuration
497
514
 
498
- Customize commands via `codev/config.json`:
515
+ Customize commands via `af-config.json` at the project root:
499
516
 
500
517
  ```json
501
518
  {
@@ -522,7 +539,7 @@ af spawn -p 0042 --builder-cmd "claude --model haiku"
522
539
  |------|-------------|
523
540
  | `.agent-farm/state.json` | Project runtime state |
524
541
  | `~/.agent-farm/ports.json` | Global port registry |
525
- | `codev/config.json` | Project configuration |
542
+ | `af-config.json` | Agent Farm configuration (project root) |
526
543
 
527
544
  ---
528
545
 
@@ -95,7 +95,6 @@ Verifies that all required dependencies are installed and properly configured:
95
95
 
96
96
  **Core Dependencies (required):**
97
97
  - Node.js (>= 18.0.0)
98
- - tmux (>= 3.0)
99
98
  - ttyd (>= 1.7.0)
100
99
  - git (>= 2.5.0)
101
100
  - gh (GitHub CLI, authenticated)
@@ -123,7 +122,6 @@ Codev Doctor - Checking your environment
123
122
  Core Dependencies (required for Agent Farm)
124
123
 
125
124
  ✓ Node.js 20.10.0
126
- ✓ tmux 3.4
127
125
  ✓ ttyd 1.7.4
128
126
  ✓ git 2.42.0
129
127
  ✓ gh authenticated