@cluesmith/codev 3.2.3 → 3.3.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 (445) hide show
  1. package/dashboard-dist/assets/index-BZRTEMtH.css +32 -0
  2. package/dashboard-dist/assets/{index-BZ1x7x1X.js → index-JCbkpAcV.js} +33 -33
  3. package/dashboard-dist/assets/index-JCbkpAcV.js.map +1 -0
  4. package/dashboard-dist/index.html +2 -2
  5. package/dist/agent-farm/cli.d.ts.map +1 -1
  6. package/dist/agent-farm/cli.js +173 -0
  7. package/dist/agent-farm/cli.js.map +1 -1
  8. package/dist/agent-farm/commands/attach.js +2 -2
  9. package/dist/agent-farm/commands/attach.js.map +1 -1
  10. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  11. package/dist/agent-farm/commands/cleanup.js +16 -0
  12. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  13. package/dist/agent-farm/commands/inbox.d.ts +42 -0
  14. package/dist/agent-farm/commands/inbox.d.ts.map +1 -0
  15. package/dist/agent-farm/commands/inbox.js +129 -0
  16. package/dist/agent-farm/commands/inbox.js.map +1 -0
  17. package/dist/agent-farm/commands/interrupt.d.ts +20 -0
  18. package/dist/agent-farm/commands/interrupt.d.ts.map +1 -0
  19. package/dist/agent-farm/commands/interrupt.js +65 -0
  20. package/dist/agent-farm/commands/interrupt.js.map +1 -0
  21. package/dist/agent-farm/commands/reset/constants.d.ts +52 -0
  22. package/dist/agent-farm/commands/reset/constants.d.ts.map +1 -0
  23. package/dist/agent-farm/commands/reset/constants.js +52 -0
  24. package/dist/agent-farm/commands/reset/constants.js.map +1 -0
  25. package/dist/agent-farm/commands/reset/context.d.ts +230 -0
  26. package/dist/agent-farm/commands/reset/context.d.ts.map +1 -0
  27. package/dist/agent-farm/commands/reset/context.js +428 -0
  28. package/dist/agent-farm/commands/reset/context.js.map +1 -0
  29. package/dist/agent-farm/commands/reset/index.d.ts +192 -0
  30. package/dist/agent-farm/commands/reset/index.d.ts.map +1 -0
  31. package/dist/agent-farm/commands/reset/index.js +488 -0
  32. package/dist/agent-farm/commands/reset/index.js.map +1 -0
  33. package/dist/agent-farm/commands/reset/receipt.d.ts +97 -0
  34. package/dist/agent-farm/commands/reset/receipt.d.ts.map +1 -0
  35. package/dist/agent-farm/commands/reset/receipt.js +149 -0
  36. package/dist/agent-farm/commands/reset/receipt.js.map +1 -0
  37. package/dist/agent-farm/commands/reset/reorient.d.ts +117 -0
  38. package/dist/agent-farm/commands/reset/reorient.d.ts.map +1 -0
  39. package/dist/agent-farm/commands/reset/reorient.js +313 -0
  40. package/dist/agent-farm/commands/reset/reorient.js.map +1 -0
  41. package/dist/agent-farm/commands/reset.d.ts +19 -0
  42. package/dist/agent-farm/commands/reset.d.ts.map +1 -0
  43. package/dist/agent-farm/commands/reset.js +292 -0
  44. package/dist/agent-farm/commands/reset.js.map +1 -0
  45. package/dist/agent-farm/commands/send.d.ts +2 -2
  46. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  47. package/dist/agent-farm/commands/send.js +52 -11
  48. package/dist/agent-farm/commands/send.js.map +1 -1
  49. package/dist/agent-farm/commands/setup.d.ts +4 -1
  50. package/dist/agent-farm/commands/setup.d.ts.map +1 -1
  51. package/dist/agent-farm/commands/setup.js +8 -4
  52. package/dist/agent-farm/commands/setup.js.map +1 -1
  53. package/dist/agent-farm/commands/spawn-worktree.d.ts +116 -6
  54. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  55. package/dist/agent-farm/commands/spawn-worktree.js +345 -74
  56. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  57. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  58. package/dist/agent-farm/commands/spawn.js +13 -1
  59. package/dist/agent-farm/commands/spawn.js.map +1 -1
  60. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  61. package/dist/agent-farm/commands/status.js +105 -9
  62. package/dist/agent-farm/commands/status.js.map +1 -1
  63. package/dist/agent-farm/commands/tower-sweep-husks.d.ts +6 -0
  64. package/dist/agent-farm/commands/tower-sweep-husks.d.ts.map +1 -0
  65. package/dist/agent-farm/commands/tower-sweep-husks.js +77 -0
  66. package/dist/agent-farm/commands/tower-sweep-husks.js.map +1 -0
  67. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  68. package/dist/agent-farm/commands/tower.js +34 -0
  69. package/dist/agent-farm/commands/tower.js.map +1 -1
  70. package/dist/agent-farm/commands/whoami.d.ts +65 -0
  71. package/dist/agent-farm/commands/whoami.d.ts.map +1 -0
  72. package/dist/agent-farm/commands/whoami.js +196 -0
  73. package/dist/agent-farm/commands/whoami.js.map +1 -0
  74. package/dist/agent-farm/db/index.d.ts +1 -1
  75. package/dist/agent-farm/db/index.d.ts.map +1 -1
  76. package/dist/agent-farm/db/index.js +80 -1
  77. package/dist/agent-farm/db/index.js.map +1 -1
  78. package/dist/agent-farm/db/mailbox.d.ts +222 -0
  79. package/dist/agent-farm/db/mailbox.d.ts.map +1 -0
  80. package/dist/agent-farm/db/mailbox.js +304 -0
  81. package/dist/agent-farm/db/mailbox.js.map +1 -0
  82. package/dist/agent-farm/db/schema.d.ts +1 -1
  83. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  84. package/dist/agent-farm/db/schema.js +35 -0
  85. package/dist/agent-farm/db/schema.js.map +1 -1
  86. package/dist/agent-farm/db/types.d.ts +45 -0
  87. package/dist/agent-farm/db/types.d.ts.map +1 -1
  88. package/dist/agent-farm/db/types.js.map +1 -1
  89. package/dist/agent-farm/lib/builder-lookup.d.ts +1 -1
  90. package/dist/agent-farm/lib/builder-lookup.js +2 -2
  91. package/dist/agent-farm/lib/builder-lookup.js.map +1 -1
  92. package/dist/agent-farm/lib/reconnect-backoff.d.ts +54 -0
  93. package/dist/agent-farm/lib/reconnect-backoff.d.ts.map +1 -0
  94. package/dist/agent-farm/lib/reconnect-backoff.js +47 -0
  95. package/dist/agent-farm/lib/reconnect-backoff.js.map +1 -0
  96. package/dist/agent-farm/lib/tower-client.d.ts +16 -6
  97. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  98. package/dist/agent-farm/lib/tower-client.js +37 -6
  99. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  100. package/dist/agent-farm/lib/tunnel-client.d.ts +69 -1
  101. package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
  102. package/dist/agent-farm/lib/tunnel-client.js +218 -27
  103. package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
  104. package/dist/agent-farm/servers/architect-session-holder.d.ts +133 -0
  105. package/dist/agent-farm/servers/architect-session-holder.d.ts.map +1 -0
  106. package/dist/agent-farm/servers/architect-session-holder.js +268 -0
  107. package/dist/agent-farm/servers/architect-session-holder.js.map +1 -0
  108. package/dist/agent-farm/servers/cron-delivery.d.ts +72 -0
  109. package/dist/agent-farm/servers/cron-delivery.d.ts.map +1 -0
  110. package/dist/agent-farm/servers/cron-delivery.js +80 -0
  111. package/dist/agent-farm/servers/cron-delivery.js.map +1 -0
  112. package/dist/agent-farm/servers/delayed-send.d.ts +85 -0
  113. package/dist/agent-farm/servers/delayed-send.d.ts.map +1 -0
  114. package/dist/agent-farm/servers/delayed-send.js +165 -0
  115. package/dist/agent-farm/servers/delayed-send.js.map +1 -0
  116. package/dist/agent-farm/servers/gate-profiles.d.ts +67 -0
  117. package/dist/agent-farm/servers/gate-profiles.d.ts.map +1 -0
  118. package/dist/agent-farm/servers/gate-profiles.js +113 -0
  119. package/dist/agent-farm/servers/gate-profiles.js.map +1 -0
  120. package/dist/agent-farm/servers/mailbox-delivery.d.ts +370 -0
  121. package/dist/agent-farm/servers/mailbox-delivery.d.ts.map +1 -0
  122. package/dist/agent-farm/servers/mailbox-delivery.js +617 -0
  123. package/dist/agent-farm/servers/mailbox-delivery.js.map +1 -0
  124. package/dist/agent-farm/servers/mailbox-wiring.d.ts +125 -0
  125. package/dist/agent-farm/servers/mailbox-wiring.d.ts.map +1 -0
  126. package/dist/agent-farm/servers/mailbox-wiring.js +425 -0
  127. package/dist/agent-farm/servers/mailbox-wiring.js.map +1 -0
  128. package/dist/agent-farm/servers/message-write.d.ts +53 -1
  129. package/dist/agent-farm/servers/message-write.d.ts.map +1 -1
  130. package/dist/agent-farm/servers/message-write.js +63 -0
  131. package/dist/agent-farm/servers/message-write.js.map +1 -1
  132. package/dist/agent-farm/servers/overview.d.ts.map +1 -1
  133. package/dist/agent-farm/servers/overview.js +23 -4
  134. package/dist/agent-farm/servers/overview.js.map +1 -1
  135. package/dist/agent-farm/servers/process-census.d.ts +41 -0
  136. package/dist/agent-farm/servers/process-census.d.ts.map +1 -0
  137. package/dist/agent-farm/servers/process-census.js +62 -0
  138. package/dist/agent-farm/servers/process-census.js.map +1 -0
  139. package/dist/agent-farm/servers/render-gate.d.ts +141 -0
  140. package/dist/agent-farm/servers/render-gate.d.ts.map +1 -0
  141. package/dist/agent-farm/servers/render-gate.js +251 -0
  142. package/dist/agent-farm/servers/render-gate.js.map +1 -0
  143. package/dist/agent-farm/servers/session-log-sweep.d.ts +93 -0
  144. package/dist/agent-farm/servers/session-log-sweep.d.ts.map +1 -0
  145. package/dist/agent-farm/servers/session-log-sweep.js +165 -0
  146. package/dist/agent-farm/servers/session-log-sweep.js.map +1 -0
  147. package/dist/agent-farm/servers/session-submit.d.ts +90 -0
  148. package/dist/agent-farm/servers/session-submit.d.ts.map +1 -0
  149. package/dist/agent-farm/servers/session-submit.js +127 -0
  150. package/dist/agent-farm/servers/session-submit.js.map +1 -0
  151. package/dist/agent-farm/servers/shellper-husk-sweep.d.ts +87 -0
  152. package/dist/agent-farm/servers/shellper-husk-sweep.d.ts.map +1 -0
  153. package/dist/agent-farm/servers/shellper-husk-sweep.js +129 -0
  154. package/dist/agent-farm/servers/shellper-husk-sweep.js.map +1 -0
  155. package/dist/agent-farm/servers/tower-cron.d.ts +10 -7
  156. package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
  157. package/dist/agent-farm/servers/tower-cron.js +58 -53
  158. package/dist/agent-farm/servers/tower-cron.js.map +1 -1
  159. package/dist/agent-farm/servers/tower-instances.d.ts +14 -2
  160. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  161. package/dist/agent-farm/servers/tower-instances.js +128 -19
  162. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  163. package/dist/agent-farm/servers/tower-messages.d.ts +38 -1
  164. package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -1
  165. package/dist/agent-farm/servers/tower-messages.js +106 -1
  166. package/dist/agent-farm/servers/tower-messages.js.map +1 -1
  167. package/dist/agent-farm/servers/tower-routes.d.ts +16 -4
  168. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  169. package/dist/agent-farm/servers/tower-routes.js +807 -99
  170. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  171. package/dist/agent-farm/servers/tower-server.js +241 -15
  172. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  173. package/dist/agent-farm/servers/tower-terminals.d.ts +17 -2
  174. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  175. package/dist/agent-farm/servers/tower-terminals.js +139 -124
  176. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  177. package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
  178. package/dist/agent-farm/servers/tower-tunnel.js +63 -4
  179. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  180. package/dist/agent-farm/servers/tower-types.d.ts +2 -1
  181. package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
  182. package/dist/agent-farm/servers/tower-utils.d.ts +99 -1
  183. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
  184. package/dist/agent-farm/servers/tower-utils.js +242 -6
  185. package/dist/agent-farm/servers/tower-utils.js.map +1 -1
  186. package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
  187. package/dist/agent-farm/servers/tower-websocket.js +6 -21
  188. package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
  189. package/dist/agent-farm/servers/write-queue.d.ts +35 -0
  190. package/dist/agent-farm/servers/write-queue.d.ts.map +1 -0
  191. package/dist/agent-farm/servers/write-queue.js +56 -0
  192. package/dist/agent-farm/servers/write-queue.js.map +1 -0
  193. package/dist/agent-farm/state.d.ts +6 -1
  194. package/dist/agent-farm/state.d.ts.map +1 -1
  195. package/dist/agent-farm/state.js +5 -2
  196. package/dist/agent-farm/state.js.map +1 -1
  197. package/dist/agent-farm/types.d.ts +39 -0
  198. package/dist/agent-farm/types.d.ts.map +1 -1
  199. package/dist/agent-farm/utils/agent-names.d.ts +2 -2
  200. package/dist/agent-farm/utils/agent-names.d.ts.map +1 -1
  201. package/dist/agent-farm/utils/agent-names.js +3 -3
  202. package/dist/agent-farm/utils/agent-names.js.map +1 -1
  203. package/dist/agent-farm/utils/architect-name.d.ts +2 -2
  204. package/dist/agent-farm/utils/architect-name.d.ts.map +1 -1
  205. package/dist/agent-farm/utils/architect-name.js +3 -3
  206. package/dist/agent-farm/utils/architect-name.js.map +1 -1
  207. package/dist/agent-farm/utils/config.d.ts +13 -0
  208. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  209. package/dist/agent-farm/utils/config.js +33 -1
  210. package/dist/agent-farm/utils/config.js.map +1 -1
  211. package/dist/agent-farm/utils/harness.d.ts +103 -7
  212. package/dist/agent-farm/utils/harness.d.ts.map +1 -1
  213. package/dist/agent-farm/utils/harness.js +126 -19
  214. package/dist/agent-farm/utils/harness.js.map +1 -1
  215. package/dist/cli.d.ts.map +1 -1
  216. package/dist/cli.js +6 -32
  217. package/dist/cli.js.map +1 -1
  218. package/dist/commands/adopt.d.ts +3 -2
  219. package/dist/commands/adopt.d.ts.map +1 -1
  220. package/dist/commands/adopt.js +7 -6
  221. package/dist/commands/adopt.js.map +1 -1
  222. package/dist/commands/consult/agy-auth-cache.d.ts +97 -0
  223. package/dist/commands/consult/agy-auth-cache.d.ts.map +1 -0
  224. package/dist/commands/consult/agy-auth-cache.js +320 -0
  225. package/dist/commands/consult/agy-auth-cache.js.map +1 -0
  226. package/dist/commands/consult/cli-options.d.ts +34 -0
  227. package/dist/commands/consult/cli-options.d.ts.map +1 -0
  228. package/dist/commands/consult/cli-options.js +67 -0
  229. package/dist/commands/consult/cli-options.js.map +1 -0
  230. package/dist/commands/consult/index.d.ts +56 -2
  231. package/dist/commands/consult/index.d.ts.map +1 -1
  232. package/dist/commands/consult/index.js +330 -27
  233. package/dist/commands/consult/index.js.map +1 -1
  234. package/dist/commands/consult/metrics.d.ts +42 -0
  235. package/dist/commands/consult/metrics.d.ts.map +1 -1
  236. package/dist/commands/consult/metrics.js +129 -9
  237. package/dist/commands/consult/metrics.js.map +1 -1
  238. package/dist/commands/doctor.d.ts +28 -0
  239. package/dist/commands/doctor.d.ts.map +1 -1
  240. package/dist/commands/doctor.js +258 -22
  241. package/dist/commands/doctor.js.map +1 -1
  242. package/dist/commands/init.d.ts +3 -2
  243. package/dist/commands/init.d.ts.map +1 -1
  244. package/dist/commands/init.js +7 -6
  245. package/dist/commands/init.js.map +1 -1
  246. package/dist/commands/porch/checks.d.ts +23 -0
  247. package/dist/commands/porch/checks.d.ts.map +1 -1
  248. package/dist/commands/porch/checks.js +60 -0
  249. package/dist/commands/porch/checks.js.map +1 -1
  250. package/dist/commands/porch/config.d.ts +20 -0
  251. package/dist/commands/porch/config.d.ts.map +1 -1
  252. package/dist/commands/porch/config.js +20 -0
  253. package/dist/commands/porch/config.js.map +1 -1
  254. package/dist/commands/porch/index.d.ts.map +1 -1
  255. package/dist/commands/porch/index.js +32 -36
  256. package/dist/commands/porch/index.js.map +1 -1
  257. package/dist/commands/porch/next.d.ts.map +1 -1
  258. package/dist/commands/porch/next.js +2 -41
  259. package/dist/commands/porch/next.js.map +1 -1
  260. package/dist/commands/update.d.ts +4 -4
  261. package/dist/commands/update.d.ts.map +1 -1
  262. package/dist/commands/update.js +9 -11
  263. package/dist/commands/update.js.map +1 -1
  264. package/dist/lib/config.d.ts +70 -3
  265. package/dist/lib/config.d.ts.map +1 -1
  266. package/dist/lib/config.js +67 -3
  267. package/dist/lib/config.js.map +1 -1
  268. package/dist/lib/consult-lanes.d.ts +149 -0
  269. package/dist/lib/consult-lanes.d.ts.map +1 -0
  270. package/dist/lib/consult-lanes.js +360 -0
  271. package/dist/lib/consult-lanes.js.map +1 -0
  272. package/dist/lib/default-branch.d.ts +1 -1
  273. package/dist/lib/default-branch.js +1 -1
  274. package/dist/lib/github.js +1 -1
  275. package/dist/lib/github.js.map +1 -1
  276. package/dist/lib/gitignore.d.ts +25 -2
  277. package/dist/lib/gitignore.d.ts.map +1 -1
  278. package/dist/lib/gitignore.js +70 -0
  279. package/dist/lib/gitignore.js.map +1 -1
  280. package/dist/lib/migration-backup-audit.d.ts +64 -0
  281. package/dist/lib/migration-backup-audit.d.ts.map +1 -0
  282. package/dist/lib/migration-backup-audit.js +145 -0
  283. package/dist/lib/migration-backup-audit.js.map +1 -0
  284. package/dist/lib/prompt-behavior-metrics.d.ts +67 -0
  285. package/dist/lib/prompt-behavior-metrics.d.ts.map +1 -0
  286. package/dist/lib/prompt-behavior-metrics.js +290 -0
  287. package/dist/lib/prompt-behavior-metrics.js.map +1 -0
  288. package/dist/lib/protocol-drift-audit.d.ts +118 -0
  289. package/dist/lib/protocol-drift-audit.d.ts.map +1 -0
  290. package/dist/lib/protocol-drift-audit.js +217 -0
  291. package/dist/lib/protocol-drift-audit.js.map +1 -0
  292. package/dist/lib/scaffold.d.ts +10 -3
  293. package/dist/lib/scaffold.d.ts.map +1 -1
  294. package/dist/lib/scaffold.js +29 -26
  295. package/dist/lib/scaffold.js.map +1 -1
  296. package/dist/lib/skeleton.d.ts +22 -1
  297. package/dist/lib/skeleton.d.ts.map +1 -1
  298. package/dist/lib/skeleton.js +120 -0
  299. package/dist/lib/skeleton.js.map +1 -1
  300. package/dist/lib/test-env.d.ts +74 -0
  301. package/dist/lib/test-env.d.ts.map +1 -0
  302. package/dist/lib/test-env.js +92 -0
  303. package/dist/lib/test-env.js.map +1 -0
  304. package/dist/terminal/pty-manager.d.ts +9 -0
  305. package/dist/terminal/pty-manager.d.ts.map +1 -1
  306. package/dist/terminal/pty-manager.js +32 -6
  307. package/dist/terminal/pty-manager.js.map +1 -1
  308. package/dist/terminal/pty-session.d.ts +156 -4
  309. package/dist/terminal/pty-session.d.ts.map +1 -1
  310. package/dist/terminal/pty-session.js +307 -42
  311. package/dist/terminal/pty-session.js.map +1 -1
  312. package/dist/terminal/ring-buffer.d.ts +39 -6
  313. package/dist/terminal/ring-buffer.d.ts.map +1 -1
  314. package/dist/terminal/ring-buffer.js +74 -6
  315. package/dist/terminal/ring-buffer.js.map +1 -1
  316. package/dist/terminal/session-manager.d.ts +129 -0
  317. package/dist/terminal/session-manager.d.ts.map +1 -1
  318. package/dist/terminal/session-manager.js +337 -44
  319. package/dist/terminal/session-manager.js.map +1 -1
  320. package/dist/terminal/session-screen.d.ts +91 -0
  321. package/dist/terminal/session-screen.d.ts.map +1 -0
  322. package/dist/terminal/session-screen.js +135 -0
  323. package/dist/terminal/session-screen.js.map +1 -0
  324. package/dist/terminal/shellper-client.d.ts +19 -4
  325. package/dist/terminal/shellper-client.d.ts.map +1 -1
  326. package/dist/terminal/shellper-client.js +70 -8
  327. package/dist/terminal/shellper-client.js.map +1 -1
  328. package/dist/terminal/shellper-main.js +2 -1
  329. package/dist/terminal/shellper-main.js.map +1 -1
  330. package/dist/terminal/shellper-process.d.ts +1 -1
  331. package/dist/terminal/shellper-process.d.ts.map +1 -1
  332. package/dist/terminal/shellper-process.js +33 -9
  333. package/dist/terminal/shellper-process.js.map +1 -1
  334. package/dist/terminal/shellper-protocol.d.ts +40 -2
  335. package/dist/terminal/shellper-protocol.d.ts.map +1 -1
  336. package/dist/terminal/shellper-protocol.js +72 -5
  337. package/dist/terminal/shellper-protocol.js.map +1 -1
  338. package/dist/terminal/shellper-replay-buffer.d.ts +69 -7
  339. package/dist/terminal/shellper-replay-buffer.d.ts.map +1 -1
  340. package/dist/terminal/shellper-replay-buffer.js +167 -31
  341. package/dist/terminal/shellper-replay-buffer.js.map +1 -1
  342. package/package.json +11 -9
  343. package/skeleton/.claude/skills/afx/SKILL.md +27 -1
  344. package/skeleton/.claude/skills/arch-init/SKILL.md +135 -0
  345. package/skeleton/.claude/skills/arch-save/SKILL.md +183 -0
  346. package/skeleton/.claude/skills/codev/SKILL.md +33 -2
  347. package/skeleton/.claude/skills/runnable-worktrees/SKILL.md +119 -0
  348. package/skeleton/.codex/skills/afx/SKILL.md +170 -0
  349. package/skeleton/.codex/skills/arch-init/SKILL.md +135 -0
  350. package/skeleton/.codex/skills/arch-save/SKILL.md +183 -0
  351. package/skeleton/.codex/skills/codev/SKILL.md +90 -0
  352. package/skeleton/.codex/skills/consult/SKILL.md +96 -0
  353. package/skeleton/.codex/skills/generate-image/SKILL.md +45 -0
  354. package/skeleton/.codex/skills/porch/SKILL.md +60 -0
  355. package/skeleton/.codex/skills/runnable-worktrees/SKILL.md +119 -0
  356. package/skeleton/.codex/skills/update-arch-docs/SKILL.md +132 -0
  357. package/skeleton/protocols/air/builder-prompt.md +28 -47
  358. package/skeleton/protocols/air/consult-types/impl-review.md +17 -34
  359. package/skeleton/protocols/air/consult-types/pr-review.md +14 -37
  360. package/skeleton/protocols/air/prompts/implement.md +20 -73
  361. package/skeleton/protocols/air/prompts/pr.md +22 -54
  362. package/skeleton/protocols/air/protocol.md +40 -71
  363. package/skeleton/protocols/aspir/builder-prompt.md +29 -66
  364. package/skeleton/protocols/aspir/consult-types/impl-review.md +17 -44
  365. package/skeleton/protocols/aspir/consult-types/phase-review.md +17 -44
  366. package/skeleton/protocols/aspir/consult-types/plan-review.md +14 -38
  367. package/skeleton/protocols/aspir/consult-types/pr-review.md +13 -39
  368. package/skeleton/protocols/aspir/consult-types/spec-review.md +13 -33
  369. package/skeleton/protocols/aspir/prompts/implement.md +27 -196
  370. package/skeleton/protocols/aspir/prompts/plan.md +21 -85
  371. package/skeleton/protocols/aspir/prompts/review.md +29 -228
  372. package/skeleton/protocols/aspir/prompts/specify.md +25 -111
  373. package/skeleton/protocols/aspir/protocol.json +10 -0
  374. package/skeleton/protocols/aspir/protocol.md +36 -82
  375. package/skeleton/protocols/bugfix/builder-prompt.md +23 -45
  376. package/skeleton/protocols/bugfix/consult-types/impl-review.md +21 -45
  377. package/skeleton/protocols/bugfix/consult-types/pr-review.md +18 -52
  378. package/skeleton/protocols/bugfix/prompts/fix.md +16 -61
  379. package/skeleton/protocols/bugfix/prompts/investigate.md +18 -62
  380. package/skeleton/protocols/bugfix/prompts/pr.md +22 -57
  381. package/skeleton/protocols/bugfix/protocol.md +44 -50
  382. package/skeleton/protocols/experiment/builder-prompt.md +25 -58
  383. package/skeleton/protocols/experiment/protocol.md +22 -188
  384. package/skeleton/protocols/experiment/templates/notes.md +11 -71
  385. package/skeleton/protocols/maintain/builder-prompt.md +24 -45
  386. package/skeleton/protocols/maintain/consult-types/impl-review.md +17 -44
  387. package/skeleton/protocols/maintain/consult-types/pr-review.md +13 -39
  388. package/skeleton/protocols/maintain/prompts/maintain.md +1 -1
  389. package/skeleton/protocols/maintain/protocol.md +32 -266
  390. package/skeleton/protocols/maintain/templates/maintenance-run.md +11 -0
  391. package/skeleton/protocols/pir/builder-prompt.md +30 -64
  392. package/skeleton/protocols/pir/consult-types/impl-review.md +17 -50
  393. package/skeleton/protocols/pir/consult-types/pr-review.md +11 -40
  394. package/skeleton/protocols/pir/prompts/implement.md +1 -2
  395. package/skeleton/protocols/pir/prompts/plan.md +0 -3
  396. package/skeleton/protocols/pir/prompts/review.md +1 -1
  397. package/skeleton/protocols/pir/protocol.md +54 -177
  398. package/skeleton/protocols/research/builder-prompt.md +27 -58
  399. package/skeleton/protocols/research/protocol.md +28 -153
  400. package/skeleton/protocols/spike/builder-prompt.md +30 -48
  401. package/skeleton/protocols/spike/protocol.md +24 -107
  402. package/skeleton/protocols/spike/templates/findings.md +9 -39
  403. package/skeleton/protocols/spir/builder-prompt.md +33 -62
  404. package/skeleton/protocols/spir/consult-types/impl-review.md +17 -44
  405. package/skeleton/protocols/spir/consult-types/phase-review.md +17 -44
  406. package/skeleton/protocols/spir/consult-types/plan-review.md +14 -38
  407. package/skeleton/protocols/spir/consult-types/pr-review.md +13 -39
  408. package/skeleton/protocols/spir/consult-types/spec-review.md +13 -33
  409. package/skeleton/protocols/spir/prompts/implement.md +26 -195
  410. package/skeleton/protocols/spir/prompts/plan.md +20 -84
  411. package/skeleton/protocols/spir/prompts/review.md +28 -227
  412. package/skeleton/protocols/spir/prompts/specify.md +24 -110
  413. package/skeleton/protocols/spir/protocol.json +10 -0
  414. package/skeleton/protocols/spir/protocol.md +84 -633
  415. package/skeleton/protocols/spir/templates/plan.md +28 -147
  416. package/skeleton/protocols/spir/templates/review.md +21 -80
  417. package/skeleton/protocols/spir/templates/spec.md +24 -118
  418. package/skeleton/resources/commands/agent-farm.md +348 -0
  419. package/skeleton/resources/commands/codev.md +5 -0
  420. package/skeleton/resources/commands/consult.md +262 -8
  421. package/skeleton/resources/commands/overview.md +1 -0
  422. package/skeleton/roles/architect.md +67 -306
  423. package/skeleton/roles/builder.md +77 -191
  424. package/skeleton/templates/AGENTS.md +2 -0
  425. package/skeleton/templates/CLAUDE.md +2 -0
  426. package/templates/tower.html +39 -2
  427. package/dashboard-dist/assets/index-BZ1x7x1X.js.map +0 -1
  428. package/dashboard-dist/assets/index-DB1KBSNE.css +0 -32
  429. package/dist/agent-farm/servers/send-buffer.d.ts +0 -59
  430. package/dist/agent-farm/servers/send-buffer.d.ts.map +0 -1
  431. package/dist/agent-farm/servers/send-buffer.js +0 -103
  432. package/dist/agent-farm/servers/send-buffer.js.map +0 -1
  433. package/skeleton/porch/prompts/defend.md +0 -108
  434. package/skeleton/porch/prompts/diagnose.md +0 -70
  435. package/skeleton/porch/prompts/evaluate.md +0 -132
  436. package/skeleton/porch/prompts/fix.md +0 -59
  437. package/skeleton/porch/prompts/implement.md +0 -88
  438. package/skeleton/porch/prompts/plan.md +0 -74
  439. package/skeleton/porch/prompts/pr.md +0 -84
  440. package/skeleton/porch/prompts/review.md +0 -249
  441. package/skeleton/porch/prompts/specify.md +0 -53
  442. package/skeleton/porch/prompts/test.md +0 -63
  443. package/skeleton/protocols/aspir/templates/plan.md +0 -184
  444. package/skeleton/protocols/aspir/templates/review.md +0 -120
  445. package/skeleton/protocols/aspir/templates/spec.md +0 -154
@@ -0,0 +1,183 @@
1
+ ---
2
+ name: arch-save
3
+ description: Save an architect's state, clear its context, and re-init automatically — the packaged save→clear→re-init refresh cycle. Use when the owner directs a context refresh, or says "/arch-save", "save and clear", "refresh your context". Runs on the owner's direction; an architect does not invoke it autonomously mid-task. Counterpart to /arch-init, which recovers the state this writes.
4
+ argument-hint: "[name] (e.g. main; omit to auto-detect via afx whoami)"
5
+ ---
6
+
7
+ # /arch-save — save state, clear, and come back as yourself
8
+
9
+ Long sessions accumulate stale context. This is the deliberate cure: you choose the
10
+ moment, you choose what survives, and a fresh session resumes from what you wrote.
11
+
12
+ `$ARGUMENTS` is the architect name (e.g. `main`). Omit it to auto-detect.
13
+
14
+ ## When NOT to run this
15
+
16
+ **On the owner's direction, or when the owner runs it themselves.** Do not invoke this
17
+ autonomously mid-task on your own judgement — the irreversible step is a human decision,
18
+ relocated from "press `/clear`" to "invoke `/arch-save`", not removed. If the owner tells
19
+ you to run it, run it; if you think it is time, *suggest* it and wait.
20
+
21
+ **Only at a resumable boundary** — a gate approval, a PR merge, a completed investigation,
22
+ the end of a long tool-heavy stretch. **Never mid-task.** Nothing here can check that; the
23
+ state file must describe a point a fresh session can resume *from*, not a half-finished
24
+ action. A mid-task snapshot resumes into confusion.
25
+
26
+ ## The procedure
27
+
28
+ Do these in order. **The order is the feature** — step 3 must precede step 4, because the
29
+ context that knows what to write is the one about to be destroyed.
30
+
31
+ ### 1. Resolve your name
32
+
33
+ If `$ARGUMENTS` is non-empty, that is your name. Otherwise run `afx whoami` and use the
34
+ reported `name` when `type: architect`.
35
+
36
+ - `type: builder` → **STOP.** This terminal is a builder. Report the mismatch.
37
+ - Non-zero exit → **STOP** and ask which architect you are. Do **not** guess, and do not
38
+ default to `main` — writing another architect's state file is the exact failure
39
+ `/arch-init` exists to prevent (#1094).
40
+
41
+ **Validate the name before building any path**: `[a-z][a-z0-9-]*`, at most 64 characters.
42
+ Reject slashes, `..`, uppercase, spaces. Never interpolate an unvalidated name into
43
+ `codev/state/<name>.md`.
44
+
45
+ ### 2. Stop your own monitors
46
+
47
+ Enumerate every monitor, watcher or background task you armed, and stop it.
48
+
49
+ This is the half that only *you* can do. Monitors are **session-bound, not
50
+ context-bound**: they survive `/clear` and keep firing into a context that cannot evaluate
51
+ their alerts. `pgrep` cannot see them — they are harness background tasks, not shell
52
+ processes — so the instance after the clear has no handle on them. You do. Use it.
53
+
54
+ ### 3. Write the pruned state file
55
+
56
+ Rewrite `codev/state/<name>.md`. **Pruning is part of the save, not polish afterwards — a
57
+ save that only appends has not done its job.**
58
+
59
+ - **Rewrite the current-state / open-loops section in place.** Do not accumulate stale
60
+ "current state" blocks. Never leave two sections with the same heading — a duplicated
61
+ "How to resume" means you appended where you should have overwritten.
62
+ - **Delete resolved loops outright.** A closed item's record is the log entry, not a
63
+ lingering line in current state.
64
+ - **Append one short dated entry** for what changed this stretch.
65
+ - **Collapse older entries into one-line summaries that point at durable artifacts** — the
66
+ merged PRs, closed issues and reviews where the detail actually lives.
67
+ - **Aim for one screen.** If the file has grown past easy reading, prune as part of *this*
68
+ save rather than leaving it for next time.
69
+
70
+ **Prune by pointer, never by deletion.** These files are gitignored (`.gitignore:15`), so
71
+ there is no history to recover from — pruned prose is gone for good. Replace detail with a
72
+ pointer to something durable; never delete the only record of something. Copying the file
73
+ first (`cp codev/state/<name>.md codev/state/.<name>.bak.md`) is cheap insurance.
74
+
75
+ **Content guardrails.** No secrets — tokens, keys, credentials. No transcript dumps, no
76
+ raw tool output. Only: current focus, open loops, and what a fresh session needs to resume.
77
+
78
+ Use the template at the end of this document.
79
+
80
+ ### 4. Clear
81
+
82
+ ```bash
83
+ afx send architect:<name> --raw '/clear'
84
+ ```
85
+
86
+ **`architect:<name>`, never bare `architect`.** For a non-builder sender the bare form
87
+ resolves to `main`, or to the first registered architect — so a *sibling* architect
88
+ running this would clear **main's** terminal instead of its own. That destroys the context
89
+ of someone who never asked for anything, and it is one word away from correct.
90
+
91
+ **`--raw`, never the escape channel.** The escape route writes a bare ESC and discards the
92
+ message body, so `/clear` sent that way delivers an interrupt: the command appears to
93
+ succeed and nothing is cleared.
94
+
95
+ ### 5. Schedule the re-init
96
+
97
+ ```bash
98
+ afx send architect:<name> --delay 15 --raw '/arch-init <name>'
99
+ ```
100
+
101
+ Tower holds this for 15 seconds and then delivers it. It has to come from outside the
102
+ session, because the clear destroys the context that would otherwise send it.
103
+
104
+ **Tower does not know whether the clear landed** — it waits out a delay, it does not
105
+ observe the result. 15 seconds is a value chosen because it works in practice, not a
106
+ guarantee about the clear's completion. If the timing is wrong the re-init arrives at the
107
+ wrong moment, which costs one manual message (see below) and nothing else. That is the
108
+ whole reason this cycle can be built on a delay rather than on machinery.
109
+
110
+ Delayed sends are **not persisted** — if Tower restarts inside the window, the message is
111
+ dropped. That is recoverable; see below.
112
+
113
+ **If this send fails, do not end your turn.** Step 4 queued the `/clear`, but it does not
114
+ take effect until your turn ends — so at this moment you still have your full context and
115
+ the failure is recoverable. Retry the send; if it keeps failing (Tower down, for example),
116
+ tell the owner that the clear is queued with no re-init scheduled, and give them the
117
+ command to send by hand once Tower is back. Ending the turn here is the one way to turn a
118
+ recoverable failure into a cleared session nobody is coming back for.
119
+
120
+ ### 6. Stop
121
+
122
+ Do not start new work. End your turn so the clear can take effect.
123
+
124
+ ## After the clear
125
+
126
+ `/arch-init` will read your state file and resume. Two things it should do first, in this
127
+ order:
128
+
129
+ 1. **Reconcile monitors.** You stopped yours in step 2, but treat any alert you cannot
130
+ account for from the state block's monitor list as **stale** — disregard it, and stop
131
+ it if you can. An alert from a decommissioned target is indistinguishable from a live
132
+ one.
133
+ 2. **Then re-arm** the monitors the block lists, and let each one **self-test once** before
134
+ trusting its alerts. A freshly-armed monitor's first alert has been a false positive in
135
+ practice.
136
+
137
+ ## If `/arch-init` never arrives
138
+
139
+ Nothing is lost. The state file is on disk, the terminal is alive. Send it by hand:
140
+
141
+ ```bash
142
+ afx send architect:<name> --raw '/arch-init <name>'
143
+ ```
144
+
145
+ This is the recovery the whole design leans on, which is why the cycle can accept imprecise
146
+ timing rather than needing machinery to guarantee it.
147
+
148
+ **If the clear did not take effect** — you still have your full context and a stray
149
+ `/arch-init` arrived — nothing was destroyed. Check whether `/clear` was submitted as its
150
+ own message rather than merged into another one, and report it; a `/clear` that arrives as
151
+ literal text on the front of the next message never executes.
152
+
153
+ ## State block template
154
+
155
+ The structure below comes from a live run of this cycle. Every element earns its place;
156
+ keep them all, including a `MONITORS:` line even when the answer is "none armed" — an
157
+ omitted monitor list is indistinguishable from a forgotten one.
158
+
159
+ ```
160
+ # <lane> architect — state (vNN, <date> ~HH:MM UTC — <milestone>, DELIBERATE /clear cycle)
161
+ # ⭐ THIS /clear IS INTENTIONAL (owner-directed context refresh). On re-init: normal
162
+ # /arch-init flow, then:
163
+ # 1. MONITORS: <what to stop if it is still firing, then what to re-arm> — watch target,
164
+ # cadence, alert pattern. Self-test once before trusting alerts. ("none armed" is a
165
+ # valid and complete answer.)
166
+ # 2. DONE pre-clear, with receipts: <PR> MERGED (<sha>, verified on origin/<branch>);
167
+ # <branch> PUSH-VERIFIED (<sha> local==origin). Distinguish "written" from "verified" —
168
+ # a cold reader cannot tell.
169
+ # 3. ACTIVE LANES: <builder-id> = <workstream> (<brief file on disk>; <standing rule>).
170
+ # Name the file, so no instruction lives only in the context being destroyed.
171
+ # 4. LATEST RESULTS: <the decision-relevant numbers>, so the first post-resume decision
172
+ # needs no archaeology.
173
+ # 5. QUEUED, with ordering: <item> — WAITS for <verdict>; <item> — <when>.
174
+ # 6. ENVELOPE: <standing authorization that survives>; <what expired with the completed
175
+ # work>.
176
+ ```
177
+
178
+ ## Guardrails (architect-wide)
179
+
180
+ - **Never auto-approve porch gates.** A gate notification is for the human, not you.
181
+ - **Touch only your own builders / spawns / filings.**
182
+ - **Never `cd` into a builder worktree**; use `git -C` and absolute paths.
183
+ - **Stay on the default branch at the workspace root.**
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: codev
3
+ description: Codev project management CLI — init, adopt, update, and doctor commands. Check this skill before running any `codev` command (except `consult`, `porch`, or `afx` which have their own skills). Use when setting up new projects, adding codev to existing repos, updating framework files, or diagnosing missing dependencies.
4
+ ---
5
+
6
+ # codev - Project Management CLI
7
+
8
+ ## Commands
9
+
10
+ ```
11
+ codev init [project-name] Create a new codev project directory
12
+ codev adopt Add codev to the current directory
13
+ codev update Update protocols, roles, skills from package
14
+ codev doctor Check system dependencies
15
+ ```
16
+
17
+ ## codev init
18
+
19
+ Creates a **new directory** with the full codev structure: specs/, plans/, reviews/, protocols, CLAUDE.md, AGENTS.md, `.claude/skills/`, `.codex/skills/`, .codev/config.json, and .gitignore.
20
+
21
+ ```bash
22
+ codev init my-app # Interactive setup
23
+ codev init my-app -y # Non-interactive with defaults
24
+ ```
25
+
26
+ ## codev adopt
27
+
28
+ Adds codev to the **current directory** (existing project). Run from the project root. If CLAUDE.md or AGENTS.md already exists, creates `.codev-new` versions and spawns Claude to merge.
29
+
30
+ ```bash
31
+ codev adopt # Interactive
32
+ codev adopt -y # Skip conflict prompts
33
+ ```
34
+
35
+ ## codev update
36
+
37
+ Updates framework files (protocols, roles, skills) from the installed `@cluesmith/codev` package. **Never touches user data** (specs, plans, reviews). Creates `.codev-new` versions for customized files. Missing Claude and Codex skills are added, while existing skill directories are preserved.
38
+
39
+ ```bash
40
+ codev update # Interactive update
41
+ codev update --dry-run # Preview changes
42
+ codev update --force # Overwrite all framework files
43
+ codev update --agent # Agent mode: JSON stdout, no interactive merge
44
+ ```
45
+
46
+ ## codev doctor
47
+
48
+ Checks all required dependencies: Node.js (>=18), git (>=2.5), gh (authenticated), and at least one AI CLI (Claude, Gemini, or Codex).
49
+
50
+ ```bash
51
+ codev doctor
52
+ ```
53
+
54
+ ## Common mistakes
55
+
56
+ - There is NO `codev tower` command — use `afx tower start/stop`
57
+ - `codev init` creates a new directory — use `codev adopt` for existing projects
58
+ - Always run `codev adopt` and `codev update` from the project root
59
+ - `codev update` only updates framework files — it never touches specs/plans/reviews
60
+
61
+ ## Local build and install (this repository)
62
+
63
+ Test changes locally before publishing. Run from the repository root:
64
+
65
+ ```bash
66
+ pnpm build # builds core first, then codev (including dashboard)
67
+ pnpm -w run local-install # packs both packages, installs globally, restarts Tower
68
+ ```
69
+
70
+ `local-install` (`scripts/local-install.sh`) packs `@cluesmith/codev-core` and
71
+ `@cluesmith/codev`, installs both in a single `npm install -g` (separate installs fail —
72
+ `codev-core` is not on the public registry), restores the executable bit on
73
+ `scripts/forge/**/*.sh` that `pnpm pack` strips, and restarts Tower last. Install runs while
74
+ Tower is up; only the final restart causes downtime. **Do not stop Tower first**, and do not use
75
+ `npm link` / `pnpm link` — it breaks global installs.
76
+
77
+ `pnpm build` also runs `copy-skeleton`, which copies `codev-skeleton/` into
78
+ `packages/codev/skeleton`. **Tests read that copy**, so after editing anything under
79
+ `codev-skeleton/` you must rebuild before the suite reflects your change.
80
+
81
+ ### Where to run things
82
+
83
+ - `pnpm install` — repository root (installs all workspace packages)
84
+ - `pnpm build` / `pnpm test` — `packages/codev/`, or `pnpm --filter @cluesmith/codev build`
85
+ - Unit tests `packages/codev/tests/unit/` · E2E `packages/codev/tests/e2e/`
86
+ - Never run npm commands from the repository root unless told to
87
+
88
+ ### Measuring code size
89
+
90
+ `tokei -e "tests/lib" -e "node_modules" -e ".git" -e ".builders" -e "dist" .`
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: consult
3
+ description: AI consultation CLI — query Gemini, Codex, or Claude for reviews and analysis. ALWAYS check this skill before running any `consult` command. Use when reviewing specs, plans, implementations, or PRs with external models, running parallel 3-way reviews (cmap), or checking consultation stats. The `-m` model flag is always required except for `consult stats`.
4
+ ---
5
+
6
+ # consult - AI Consultation CLI
7
+
8
+ Query external AI models for reviews and analysis. Supports Gemini, Codex, and Claude.
9
+
10
+ ## Synopsis
11
+
12
+ ```
13
+ consult -m <model> [options]
14
+ consult stats [options]
15
+ ```
16
+
17
+ The `-m` / `--model` flag is **always required** except for `consult stats`.
18
+
19
+ ## Models
20
+
21
+ | Flag value | Alias | Notes |
22
+ |------------|-------|-------|
23
+ | `gemini` | `pro` | Antigravity CLI (`agy`); agentic file access (`--sandbox`), OAuth login; skips non-blockingly if unavailable |
24
+ | `codex` | `gpt` | Thorough (~200-250s), shell exploration |
25
+ | `claude` | `opus` | Agent SDK with tool use (~60-120s) |
26
+
27
+ ## All flags
28
+
29
+ ```
30
+ -m, --model <model> Model to use (required except stats)
31
+ --prompt <text> Inline prompt (general mode)
32
+ --prompt-file <path> Prompt file path (general mode)
33
+ --protocol <name> Protocol: spir, aspir, air, bugfix, maintain
34
+ -t, --type <type> Review type (see below)
35
+ --issue <number> Issue number (required in architect context)
36
+ --output <path> Save result to file
37
+ --plan-phase <phase> Scope review to a plan phase (porch use)
38
+ --context <path> Context file with feedback (porch use)
39
+ --project-id <id> Project ID for metrics (porch use)
40
+ --days <n> Stats: limit to last N days (default: 30)
41
+ --project <id> Stats: filter by project ID
42
+ --last <n> Stats: show last N invocations
43
+ --json Stats: output as JSON
44
+ ```
45
+
46
+ ## Review types (`--type`)
47
+
48
+ | Type | When to use |
49
+ |------|-------------|
50
+ | `spec` | Review a specification for completeness |
51
+ | `plan` | Review an implementation plan |
52
+ | `impl` | Review code implementation |
53
+ | `pr` | Review a pull request before merge |
54
+ | `phase` | Phase-scoped review (builder context only) |
55
+ | `integration` | Architect's integration review of a PR |
56
+
57
+ ## Usage patterns
58
+
59
+ **General query:**
60
+ ```bash
61
+ consult -m gemini --prompt "What's the best way to structure auth?"
62
+ consult -m codex --prompt-file review-checklist.md
63
+ ```
64
+
65
+ **Protocol review:**
66
+ ```bash
67
+ consult -m gemini --type spec --issue 42
68
+ consult -m codex --type plan --issue 42
69
+ consult -m claude --type integration --issue 42
70
+ ```
71
+
72
+ **3-way parallel review (cmap):**
73
+ Always use `--output` for background runs — without it, results go to a temp file that may be garbage-collected.
74
+
75
+ ```bash
76
+ consult -m gemini --type integration --issue 42 --output /tmp/cmap-gemini-42.md &
77
+ consult -m codex --type integration --issue 42 --output /tmp/cmap-codex-42.md &
78
+ consult -m claude --type integration --issue 42 --output /tmp/cmap-claude-42.md &
79
+ wait
80
+ ```
81
+
82
+ **Stats:**
83
+ ```bash
84
+ consult stats # 30-day summary
85
+ consult stats --days 7 --json # Last 7 days as JSON
86
+ consult stats --project 42 # Filter by project
87
+ ```
88
+
89
+ ## Rules
90
+
91
+ - `-m` is required for all non-stats commands
92
+ - `--prompt` and `--type` are mutually exclusive (different modes)
93
+ - `--prompt` and `--prompt-file` are mutually exclusive
94
+ - `--protocol` requires `--type`
95
+ - From architect context (outside `.builders/`), `--issue` is required for protocol reviews
96
+ - From builder context (inside `.builders/`), project auto-detects from porch state
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: generate-image
3
+ description: AI image generation via Gemini. Use when the user wants to generate, create, or make an image, or when you need to create visual assets like logos, diagrams, or illustrations. Requires GEMINI_API_KEY or GOOGLE_API_KEY.
4
+ ---
5
+
6
+ # generate-image - AI Image Generation
7
+
8
+ Uses Google Gemini to generate images from text prompts.
9
+
10
+ ## Synopsis
11
+
12
+ ```
13
+ codev generate-image "<prompt>" [options]
14
+ ```
15
+
16
+ Note: this is a `codev` subcommand, not standalone.
17
+
18
+ ## All flags
19
+
20
+ ```
21
+ -o, --output <file> Output file path (default: output.png)
22
+ -r, --resolution <res> Resolution: 1K, 2K, 4K (default: 1K)
23
+ -a, --aspect <ratio> Aspect ratio (default: 1:1)
24
+ --ref <image> Reference image (repeatable, max 14)
25
+ ```
26
+
27
+ ## Aspect ratios
28
+
29
+ `1:1` | `16:9` | `9:16` | `3:4` | `4:3` | `3:2` | `2:3`
30
+
31
+ ## Examples
32
+
33
+ ```bash
34
+ codev generate-image "A sunset over mountains"
35
+ codev generate-image "A futuristic city" -r 4K -a 16:9 -o city.png
36
+ codev generate-image "Same style but with cats" --ref style.png --ref layout.png
37
+ codev generate-image prompt.txt -o result.png # Prompt from .txt file
38
+ ```
39
+
40
+ ## Notes
41
+
42
+ - Prompt must be quoted if it contains spaces
43
+ - Prompt can be a `.txt` file path (auto-detected by extension)
44
+ - Reference images must exist on disk
45
+ - Requires `GEMINI_API_KEY` or `GOOGLE_API_KEY` environment variable
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: porch
3
+ description: Protocol orchestrator CLI — drives SPIR, ASPIR, AIR, and BUGFIX protocols via a state machine. ALWAYS check this skill before running any `porch` command. Use when you need to check project status, approve gates, signal phase completion, or manage protocol state. Also use when a builder asks about gate approvals or phase transitions.
4
+ ---
5
+
6
+ # porch - Protocol Orchestrator
7
+
8
+ Porch manages the state machine behind development protocols. It tracks phases, gates, consultations, and transitions.
9
+
10
+ ## Commands
11
+
12
+ ```
13
+ porch status [id] Show current project state and phase
14
+ porch run [id] Run the protocol loop (strict mode)
15
+ porch next [id] Get next tasks as JSON
16
+ porch done [id] Signal current phase is complete
17
+ porch check [id] Run checks for current phase
18
+ porch gate [id] Request human approval at a gate
19
+ porch approve <id> <gate> --a-human-explicitly-approved-this
20
+ porch rollback <id> <phase> Rewind to an earlier phase
21
+ porch init <protocol> <id> <name> Initialize a new project
22
+ ```
23
+
24
+ Project ID auto-detects from worktree path when inside a builder worktree.
25
+
26
+ ## Gate approvals
27
+
28
+ Gates are human-only approval checkpoints. The `--a-human-explicitly-approved-this` flag is **required** — it exists to prevent AI agents from auto-approving.
29
+
30
+ | Gate | Protocol | When |
31
+ |------|----------|------|
32
+ | `spec-approval` | SPIR | After spec is written |
33
+ | `plan-approval` | SPIR | After plan is written |
34
+ | `pr` | SPIR, AIR | After PR is created |
35
+
36
+ ```bash
37
+ porch approve 42 spec-approval --a-human-explicitly-approved-this
38
+ porch approve 42 plan-approval --a-human-explicitly-approved-this
39
+ porch approve 42 pr --a-human-explicitly-approved-this
40
+ ```
41
+
42
+ **ASPIR and BUGFIX have no spec/plan gates** — they run autonomously through those phases.
43
+
44
+ ## Checking pending gates
45
+
46
+ ```bash
47
+ porch pending # List all gates waiting for approval
48
+ ```
49
+
50
+ ## Critical rules
51
+
52
+ - **Builders must NEVER call `porch approve`** — only humans approve gates
53
+ - **Never edit `status.yaml` directly** — porch manages all state
54
+ - Builders signal completion with `porch done`, not `porch approve`
55
+ - `porch run` is for strict mode only — soft mode builders follow the protocol document manually
56
+ - When running `porch approve` from the architect, use a subshell if you need worktree context: `(cd /path/to/worktree && porch approve ...)`
57
+
58
+ ## State storage
59
+
60
+ Project state lives in `codev/projects/<id>-<name>/status.yaml`, managed automatically by porch. The status file tracks current phase, gate states, consultation results, and timestamps.
@@ -0,0 +1,119 @@
1
+ ---
2
+ name: runnable-worktrees
3
+ description: Make builder worktrees runnable — the `.codev/config.json` `worktree` block (symlinks, postSpawn, devCommand), the `afx dev` CLI, VSCode dev controls, and per-stack config recipes. Use when configuring a repo so reviewers can run a builder's branch, when `afx dev` fails to bind or start, when a dev process is orphaned holding a port, or when asked why worktree dev uses the same ports as main.
4
+ ---
5
+
6
+ # Runnable worktrees
7
+
8
+ When configured, each builder worktree (`.builders/<id>/`) becomes runnable: reviewers can run
9
+ whatever your dev command starts — a dev server, `cargo run`, `expo start`, a test watcher, a
10
+ build script — against the builder's branch without `cd`'ing, installing, or hunting for the
11
+ command. Opt-in via `.codev/config.json`; unconfigured repos see zero behavior change.
12
+
13
+ ## Config: the `worktree` block
14
+
15
+ ```jsonc
16
+ {
17
+ "worktree": {
18
+ "symlinks": ["..."], // globs symlinked from the workspace root into each new worktree
19
+ "postSpawn": ["..."], // shell commands run inside each new worktree after createWorktree
20
+ "devCommand": "..." // consumed by `afx dev <builder-id|main>`
21
+ }
22
+ }
23
+ ```
24
+
25
+ - **`symlinks`** — globs resolve from the workspace root and link into the worktree at the same
26
+ relative path. Root `.env` and `.codev/config.json` are *always* symlinked regardless.
27
+ **Symlinks, not copies**, so edits to main's env files reflect instantly in a running dev
28
+ session. A directory match is silently skipped (a glob cannot mask the worktree's own source)
29
+ **unless** the entry ends in a slash: `".local-user-data/"` is treated as a literal path and
30
+ links the directory whole — shared with the parent, not branch-isolated. A dangling link is
31
+ fine if the source does not exist yet.
32
+ - **`postSpawn`** — commands run sequentially with `cwd` = worktree path. A non-zero exit aborts
33
+ the spawn loudly; the half-built worktree stays for inspection.
34
+ - **`devCommand`** — the foreground command that starts your dev process. Required for
35
+ `afx dev`.
36
+
37
+ **Codev does not auto-detect your stack.** Pick a recipe below.
38
+
39
+ ## CLI
40
+
41
+ ```bash
42
+ afx dev <builder-id> # start dev in that builder's worktree
43
+ afx dev main # start dev in the MAIN workspace (Codev-managed)
44
+ afx dev --stop # stop the running dev PTY (builder or main)
45
+ afx setup <builder-id> # re-apply symlinks + postSpawn to an existing worktree (idempotent)
46
+ ```
47
+
48
+ **One dev PTY at a time**, across {main + all builders} — deliberate; see *URLs are
49
+ load-bearing*. `main` is a reserved target running `worktree.devCommand` in the main checkout as
50
+ a Codev-managed, swappable PTY, symmetric with builders. Starting a second target prompts to
51
+ swap; a same-target request prints the existing terminal URL and exits. Dev PTYs are
52
+ **non-persistent** — a Tower restart or crash kills them; re-run to restart.
53
+
54
+ **Start main's dev with `afx dev main`, not a bare `pnpm dev`.** A hand-run `pnpm dev` is
55
+ invisible to Codev (which never kills what it did not spawn), so a builder dev started while it
56
+ holds the ports either fails to bind or — worse — serves main's code under the worktree URL.
57
+ `afx dev main` makes it a managed PTY that swap-detection can stop cleanly. This only helps if
58
+ used consistently.
59
+
60
+ ## VSCode
61
+
62
+ Right-click a builder row in the Codev sidebar (Builders or Needs Attention):
63
+
64
+ - **Open Builder Terminal** — that builder's AI terminal in a tab (same as left-click).
65
+ - **Open Worktree Folder** — `.builders/<id>/` in the OS file manager.
66
+ - **Run Worktree Setup** — re-applies `worktree.symlinks` and `worktree.postSpawn` to an
67
+ existing worktree (the git steps are skipped). Idempotent. Use when the lockfile changed, when
68
+ `symlinks`/`postSpawn` grew after the builder spawned, when a link was deleted, or when the
69
+ original setup aborted. Streams install output in a fresh terminal. CLI: `afx setup <id>`.
70
+ - **View Diff** — unified `main...HEAD` diff for that worktree with a file-list pane.
71
+ - **Run Dev** / **Stop Dev** — spawn or kill the dev PTY as a `Codev: <name> (dev)` tab;
72
+ prompts to swap if another dev is running.
73
+
74
+ The sidebar's **Workspace** view carries a dev control for whatever folder the window is rooted
75
+ at — the main checkout resolves to `main`, a `.builders/<id>/` window resolves to that builder.
76
+ The row tooltip names the resolved target. Commands are also in the palette (Cmd+Shift+P); no
77
+ default keybindings.
78
+
79
+ ## URLs are load-bearing
80
+
81
+ The dev PTY intentionally uses **the same ports and URLs as main**. OAuth callbacks, CORS
82
+ allowlists, cookie scoping, CSP `connect-src` and webhook URLs are all keyed off origin, so
83
+ running a worktree on a different port would break them.
84
+
85
+ Consequence: stop main's dev before starting a builder's, or the spawned dev fails at bind time
86
+ with `EADDRINUSE`.
87
+
88
+ ## Cleanup and orphan recovery
89
+
90
+ `afx dev --stop` and the swap path kill the entire PTY **process group** (SIGTERM, then SIGKILL
91
+ after 5s), which signals every grandchild of a monorepo orchestrator (`pnpm dev`, `turbo dev`,
92
+ `pnpm -r --parallel run dev`) at once. Ports are reclaimed by the OS as a consequence — Codev
93
+ never manipulates ports directly.
94
+
95
+ If Tower hard-crashes mid-dev and a process is left holding a port outside Codev's records:
96
+
97
+ ```bash
98
+ lsof -ti :<port> | xargs kill
99
+ lsof -ti :3000,:3001,:4000 | xargs kill
100
+ ```
101
+
102
+ ## Recipes
103
+
104
+ **pnpm monorepo (Next.js / Turbo)**
105
+ ```json
106
+ {"worktree": {"symlinks": [".env.local", ".env.development.local", "packages/*/.env", "packages/*/.env.local", "turbo.json"], "postSpawn": ["pnpm install --frozen-lockfile"], "devCommand": "pnpm dev"}}
107
+ ```
108
+
109
+ **npm** — `{"symlinks": [".env.local", ".env.development"], "postSpawn": ["npm ci"], "devCommand": "npm run dev"}`
110
+
111
+ **yarn** — `{"symlinks": [".env.local"], "postSpawn": ["yarn install --frozen-lockfile"], "devCommand": "yarn dev"}`
112
+
113
+ **bun** — `{"symlinks": [".env.local"], "postSpawn": ["bun install --frozen-lockfile"], "devCommand": "bun dev"}`
114
+
115
+ **cargo** — `{"symlinks": [".env"], "postSpawn": [], "devCommand": "cargo run"}`
116
+
117
+ **poetry / uv** — `{"symlinks": [".env", ".env.local"], "postSpawn": ["uv sync"], "devCommand": "uv run python -m myapp"}`
118
+
119
+ **go mod** — `{"symlinks": [".env"], "postSpawn": ["go mod download"], "devCommand": "go run ./cmd/server"}`