@cluesmith/codev 3.0.0-rc.0 → 3.0.0-rc.10

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 (331) hide show
  1. package/LICENSE +201 -0
  2. package/bin/af.js +2 -2
  3. package/bin/afx.js +8 -0
  4. package/bin/consult.js +2 -1
  5. package/bin/team.js +8 -0
  6. package/{dashboard/dist/assets/index-nr0cXxtf.css → dashboard-dist/assets/index-Bs8I7N2s.css} +1 -1
  7. package/dashboard-dist/assets/index-CkNo2z6t.js +195 -0
  8. package/dashboard-dist/assets/index-CkNo2z6t.js.map +1 -0
  9. package/dashboard-dist/dist/assets/index-Bs8I7N2s.css +32 -0
  10. package/dashboard-dist/dist/assets/index-CkNo2z6t.js +195 -0
  11. package/dashboard-dist/dist/assets/index-CkNo2z6t.js.map +1 -0
  12. package/{dashboard → dashboard-dist}/dist/index.html +2 -2
  13. package/dashboard-dist/index.html +14 -0
  14. package/dist/agent-farm/cli.d.ts.map +1 -1
  15. package/dist/agent-farm/cli.js +21 -13
  16. package/dist/agent-farm/cli.js.map +1 -1
  17. package/dist/agent-farm/commands/architect.d.ts +4 -4
  18. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  19. package/dist/agent-farm/commands/architect.js +23 -12
  20. package/dist/agent-farm/commands/architect.js.map +1 -1
  21. package/dist/agent-farm/commands/attach.js +8 -8
  22. package/dist/agent-farm/commands/attach.js.map +1 -1
  23. package/dist/agent-farm/commands/bench.d.ts +1 -1
  24. package/dist/agent-farm/commands/bench.js +1 -1
  25. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  26. package/dist/agent-farm/commands/cleanup.js +10 -5
  27. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  28. package/dist/agent-farm/commands/cron.js +1 -1
  29. package/dist/agent-farm/commands/cron.js.map +1 -1
  30. package/dist/agent-farm/commands/db.d.ts +3 -3
  31. package/dist/agent-farm/commands/db.js +4 -4
  32. package/dist/agent-farm/commands/db.js.map +1 -1
  33. package/dist/agent-farm/commands/open.js +2 -2
  34. package/dist/agent-farm/commands/open.js.map +1 -1
  35. package/dist/agent-farm/commands/rename.js +1 -1
  36. package/dist/agent-farm/commands/rename.js.map +1 -1
  37. package/dist/agent-farm/commands/send.d.ts +4 -1
  38. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  39. package/dist/agent-farm/commands/send.js +8 -5
  40. package/dist/agent-farm/commands/send.js.map +1 -1
  41. package/dist/agent-farm/commands/shell.js +3 -3
  42. package/dist/agent-farm/commands/shell.js.map +1 -1
  43. package/dist/agent-farm/commands/spawn-roles.d.ts +2 -1
  44. package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
  45. package/dist/agent-farm/commands/spawn-roles.js +1 -1
  46. package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
  47. package/dist/agent-farm/commands/spawn-worktree.d.ts +49 -10
  48. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  49. package/dist/agent-farm/commands/spawn-worktree.js +357 -49
  50. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  51. package/dist/agent-farm/commands/spawn.d.ts +6 -6
  52. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  53. package/dist/agent-farm/commands/spawn.js +182 -74
  54. package/dist/agent-farm/commands/spawn.js.map +1 -1
  55. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  56. package/dist/agent-farm/commands/status.js +48 -3
  57. package/dist/agent-farm/commands/status.js.map +1 -1
  58. package/dist/agent-farm/commands/team-update.d.ts +1 -1
  59. package/dist/agent-farm/commands/team-update.d.ts.map +1 -1
  60. package/dist/agent-farm/commands/team-update.js +8 -5
  61. package/dist/agent-farm/commands/team-update.js.map +1 -1
  62. package/dist/agent-farm/commands/team.d.ts +7 -1
  63. package/dist/agent-farm/commands/team.d.ts.map +1 -1
  64. package/dist/agent-farm/commands/team.js +36 -4
  65. package/dist/agent-farm/commands/team.js.map +1 -1
  66. package/dist/agent-farm/commands/tower-cloud.d.ts +2 -2
  67. package/dist/agent-farm/commands/tower-cloud.js +3 -3
  68. package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
  69. package/dist/agent-farm/commands/tower.d.ts +1 -0
  70. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  71. package/dist/agent-farm/commands/tower.js +54 -3
  72. package/dist/agent-farm/commands/tower.js.map +1 -1
  73. package/dist/agent-farm/lib/cloud-config.js +2 -2
  74. package/dist/agent-farm/lib/cloud-config.js.map +1 -1
  75. package/dist/agent-farm/lib/tower-client.d.ts +6 -230
  76. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  77. package/dist/agent-farm/lib/tower-client.js +6 -293
  78. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  79. package/dist/agent-farm/lib/tunnel-client.js +1 -1
  80. package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
  81. package/dist/agent-farm/servers/message-write.d.ts +24 -0
  82. package/dist/agent-farm/servers/message-write.d.ts.map +1 -0
  83. package/dist/agent-farm/servers/message-write.js +63 -0
  84. package/dist/agent-farm/servers/message-write.js.map +1 -0
  85. package/dist/agent-farm/servers/overview.d.ts +10 -8
  86. package/dist/agent-farm/servers/overview.d.ts.map +1 -1
  87. package/dist/agent-farm/servers/overview.js +78 -38
  88. package/dist/agent-farm/servers/overview.js.map +1 -1
  89. package/dist/agent-farm/servers/send-buffer.d.ts +4 -3
  90. package/dist/agent-farm/servers/send-buffer.d.ts.map +1 -1
  91. package/dist/agent-farm/servers/send-buffer.js +7 -4
  92. package/dist/agent-farm/servers/send-buffer.js.map +1 -1
  93. package/dist/agent-farm/servers/tower-cron-parser.js +1 -1
  94. package/dist/agent-farm/servers/tower-cron-parser.js.map +1 -1
  95. package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
  96. package/dist/agent-farm/servers/tower-cron.js +4 -5
  97. package/dist/agent-farm/servers/tower-cron.js.map +1 -1
  98. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  99. package/dist/agent-farm/servers/tower-instances.js +24 -15
  100. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  101. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  102. package/dist/agent-farm/servers/tower-routes.js +9 -16
  103. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  104. package/dist/agent-farm/servers/tower-server.js +15 -1
  105. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  106. package/dist/agent-farm/servers/tower-terminals.d.ts +2 -2
  107. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  108. package/dist/agent-farm/servers/tower-terminals.js +64 -36
  109. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  110. package/dist/agent-farm/servers/tower-tunnel.js +2 -2
  111. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  112. package/dist/agent-farm/servers/tower-utils.d.ts +9 -6
  113. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
  114. package/dist/agent-farm/servers/tower-utils.js +13 -7
  115. package/dist/agent-farm/servers/tower-utils.js.map +1 -1
  116. package/dist/agent-farm/types.d.ts +13 -0
  117. package/dist/agent-farm/types.d.ts.map +1 -1
  118. package/dist/agent-farm/utils/config.d.ts +11 -0
  119. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  120. package/dist/agent-farm/utils/config.js +39 -17
  121. package/dist/agent-farm/utils/config.js.map +1 -1
  122. package/dist/agent-farm/utils/harness.d.ts +85 -0
  123. package/dist/agent-farm/utils/harness.d.ts.map +1 -0
  124. package/dist/agent-farm/utils/harness.js +212 -0
  125. package/dist/agent-farm/utils/harness.js.map +1 -0
  126. package/dist/agent-farm/utils/roles.d.ts +11 -4
  127. package/dist/agent-farm/utils/roles.d.ts.map +1 -1
  128. package/dist/agent-farm/utils/roles.js +21 -6
  129. package/dist/agent-farm/utils/roles.js.map +1 -1
  130. package/dist/cli.d.ts +1 -1
  131. package/dist/cli.d.ts.map +1 -1
  132. package/dist/cli.js +118 -5
  133. package/dist/cli.js.map +1 -1
  134. package/dist/commands/adopt.d.ts.map +1 -1
  135. package/dist/commands/adopt.js +16 -45
  136. package/dist/commands/adopt.js.map +1 -1
  137. package/dist/commands/consult/index.d.ts +6 -2
  138. package/dist/commands/consult/index.d.ts.map +1 -1
  139. package/dist/commands/consult/index.js +231 -183
  140. package/dist/commands/consult/index.js.map +1 -1
  141. package/dist/commands/doctor.d.ts.map +1 -1
  142. package/dist/commands/doctor.js +121 -31
  143. package/dist/commands/doctor.js.map +1 -1
  144. package/dist/commands/init.d.ts.map +1 -1
  145. package/dist/commands/init.js +13 -43
  146. package/dist/commands/init.js.map +1 -1
  147. package/dist/commands/porch/artifacts.d.ts +69 -0
  148. package/dist/commands/porch/artifacts.d.ts.map +1 -0
  149. package/dist/commands/porch/artifacts.js +368 -0
  150. package/dist/commands/porch/artifacts.js.map +1 -0
  151. package/dist/commands/porch/checks.d.ts +14 -3
  152. package/dist/commands/porch/checks.d.ts.map +1 -1
  153. package/dist/commands/porch/checks.js +150 -4
  154. package/dist/commands/porch/checks.js.map +1 -1
  155. package/dist/commands/porch/config.d.ts +6 -9
  156. package/dist/commands/porch/config.d.ts.map +1 -1
  157. package/dist/commands/porch/config.js +12 -37
  158. package/dist/commands/porch/config.js.map +1 -1
  159. package/dist/commands/porch/index.d.ts +12 -7
  160. package/dist/commands/porch/index.d.ts.map +1 -1
  161. package/dist/commands/porch/index.js +273 -82
  162. package/dist/commands/porch/index.js.map +1 -1
  163. package/dist/commands/porch/next.d.ts.map +1 -1
  164. package/dist/commands/porch/next.js +142 -75
  165. package/dist/commands/porch/next.js.map +1 -1
  166. package/dist/commands/porch/notify.d.ts +2 -2
  167. package/dist/commands/porch/notify.js +5 -5
  168. package/dist/commands/porch/notify.js.map +1 -1
  169. package/dist/commands/porch/prompts.d.ts +2 -1
  170. package/dist/commands/porch/prompts.d.ts.map +1 -1
  171. package/dist/commands/porch/prompts.js +34 -38
  172. package/dist/commands/porch/prompts.js.map +1 -1
  173. package/dist/commands/porch/protocol.d.ts +4 -3
  174. package/dist/commands/porch/protocol.d.ts.map +1 -1
  175. package/dist/commands/porch/protocol.js +21 -21
  176. package/dist/commands/porch/protocol.js.map +1 -1
  177. package/dist/commands/porch/state.d.ts +27 -2
  178. package/dist/commands/porch/state.d.ts.map +1 -1
  179. package/dist/commands/porch/state.js +100 -9
  180. package/dist/commands/porch/state.js.map +1 -1
  181. package/dist/commands/porch/types.d.ts +10 -2
  182. package/dist/commands/porch/types.d.ts.map +1 -1
  183. package/dist/commands/sync.d.ts +26 -0
  184. package/dist/commands/sync.d.ts.map +1 -0
  185. package/dist/commands/sync.js +207 -0
  186. package/dist/commands/sync.js.map +1 -0
  187. package/dist/commands/update.d.ts +15 -2
  188. package/dist/commands/update.d.ts.map +1 -1
  189. package/dist/commands/update.js +159 -202
  190. package/dist/commands/update.js.map +1 -1
  191. package/dist/lib/config.d.ts +96 -0
  192. package/dist/lib/config.d.ts.map +1 -0
  193. package/dist/lib/config.js +165 -0
  194. package/dist/lib/config.js.map +1 -0
  195. package/dist/lib/forge-contracts.d.ts +100 -0
  196. package/dist/lib/forge-contracts.d.ts.map +1 -0
  197. package/dist/lib/forge-contracts.js +35 -0
  198. package/dist/lib/forge-contracts.js.map +1 -0
  199. package/dist/lib/forge.d.ts +102 -0
  200. package/dist/lib/forge.d.ts.map +1 -0
  201. package/dist/lib/forge.js +376 -0
  202. package/dist/lib/forge.js.map +1 -0
  203. package/dist/lib/github.d.ts +68 -60
  204. package/dist/lib/github.d.ts.map +1 -1
  205. package/dist/lib/github.js +160 -169
  206. package/dist/lib/github.js.map +1 -1
  207. package/dist/lib/skeleton.d.ts +15 -5
  208. package/dist/lib/skeleton.d.ts.map +1 -1
  209. package/dist/lib/skeleton.js +82 -7
  210. package/dist/lib/skeleton.js.map +1 -1
  211. package/dist/lib/team-github.d.ts +7 -3
  212. package/dist/lib/team-github.d.ts.map +1 -1
  213. package/dist/lib/team-github.js +29 -19
  214. package/dist/lib/team-github.js.map +1 -1
  215. package/dist/lib/team.d.ts.map +1 -1
  216. package/dist/lib/team.js +4 -1
  217. package/dist/lib/team.js.map +1 -1
  218. package/dist/terminal/pty-manager.d.ts.map +1 -1
  219. package/dist/terminal/pty-manager.js +2 -0
  220. package/dist/terminal/pty-manager.js.map +1 -1
  221. package/dist/terminal/ws-protocol.d.ts +10 -8
  222. package/dist/terminal/ws-protocol.d.ts.map +1 -1
  223. package/dist/terminal/ws-protocol.js +3 -0
  224. package/dist/terminal/ws-protocol.js.map +1 -1
  225. package/package.json +28 -24
  226. package/scripts/forge/gitea/auth-status.sh +3 -0
  227. package/scripts/forge/gitea/issue-comment.sh +3 -0
  228. package/scripts/forge/gitea/issue-list.sh +3 -0
  229. package/scripts/forge/gitea/issue-view.sh +3 -0
  230. package/scripts/forge/gitea/pr-exists.sh +6 -0
  231. package/scripts/forge/gitea/pr-list.sh +3 -0
  232. package/scripts/forge/gitea/pr-merge.sh +3 -0
  233. package/scripts/forge/gitea/pr-view.sh +3 -0
  234. package/scripts/forge/gitea/recently-closed.sh +3 -0
  235. package/scripts/forge/gitea/recently-merged.sh +3 -0
  236. package/scripts/forge/gitea/repo-archive.sh +11 -0
  237. package/scripts/forge/gitea/user-identity.sh +3 -0
  238. package/scripts/forge/github/auth-status.sh +4 -0
  239. package/scripts/forge/github/issue-comment.sh +5 -0
  240. package/scripts/forge/github/issue-list.sh +4 -0
  241. package/scripts/forge/github/issue-view.sh +5 -0
  242. package/scripts/forge/github/on-it-timestamps.sh +8 -0
  243. package/scripts/forge/github/pr-diff.sh +10 -0
  244. package/scripts/forge/github/pr-exists.sh +7 -0
  245. package/scripts/forge/github/pr-list.sh +4 -0
  246. package/scripts/forge/github/pr-merge.sh +5 -0
  247. package/scripts/forge/github/pr-search.sh +5 -0
  248. package/scripts/forge/github/pr-view.sh +11 -0
  249. package/scripts/forge/github/recently-closed.sh +15 -0
  250. package/scripts/forge/github/recently-merged.sh +15 -0
  251. package/scripts/forge/github/repo-archive.sh +10 -0
  252. package/scripts/forge/github/team-activity.sh +5 -0
  253. package/scripts/forge/github/user-identity.sh +4 -0
  254. package/scripts/forge/gitlab/auth-status.sh +3 -0
  255. package/scripts/forge/gitlab/issue-comment.sh +3 -0
  256. package/scripts/forge/gitlab/issue-list.sh +3 -0
  257. package/scripts/forge/gitlab/issue-view.sh +3 -0
  258. package/scripts/forge/gitlab/pr-diff.sh +3 -0
  259. package/scripts/forge/gitlab/pr-exists.sh +5 -0
  260. package/scripts/forge/gitlab/pr-list.sh +3 -0
  261. package/scripts/forge/gitlab/pr-merge.sh +3 -0
  262. package/scripts/forge/gitlab/pr-search.sh +3 -0
  263. package/scripts/forge/gitlab/pr-view.sh +3 -0
  264. package/scripts/forge/gitlab/recently-closed.sh +3 -0
  265. package/scripts/forge/gitlab/recently-merged.sh +3 -0
  266. package/scripts/forge/gitlab/repo-archive.sh +12 -0
  267. package/scripts/forge/gitlab/user-identity.sh +3 -0
  268. package/skeleton/.claude/skills/afx/SKILL.md +144 -0
  269. package/skeleton/.claude/skills/codev/SKILL.md +3 -3
  270. package/skeleton/.claude/skills/consult/SKILL.md +1 -1
  271. package/skeleton/.claude/skills/porch/SKILL.md +2 -2
  272. package/skeleton/DEPENDENCIES.md +1 -1
  273. package/skeleton/builders.md +4 -4
  274. package/skeleton/protocol-schema.json +2 -2
  275. package/skeleton/protocols/air/builder-prompt.md +6 -6
  276. package/skeleton/protocols/air/prompts/pr.md +2 -2
  277. package/skeleton/protocols/air/protocol.md +1 -2
  278. package/skeleton/protocols/aspir/builder-prompt.md +28 -6
  279. package/skeleton/protocols/aspir/protocol.json +9 -1
  280. package/skeleton/protocols/aspir/protocol.md +1 -1
  281. package/skeleton/protocols/aspir/templates/plan.md +0 -20
  282. package/skeleton/protocols/aspir/templates/spec.md +0 -28
  283. package/skeleton/protocols/bugfix/builder-prompt.md +6 -6
  284. package/skeleton/protocols/bugfix/prompts/pr.md +1 -1
  285. package/skeleton/protocols/experiment/protocol.md +1 -6
  286. package/skeleton/protocols/maintain/builder-prompt.md +12 -11
  287. package/skeleton/protocols/maintain/prompts/maintain.md +88 -0
  288. package/skeleton/protocols/maintain/prompts/review.md +72 -0
  289. package/skeleton/protocols/maintain/protocol.json +14 -68
  290. package/skeleton/protocols/maintain/protocol.md +111 -409
  291. package/skeleton/protocols/maintain/templates/maintenance-run.md +18 -49
  292. package/skeleton/protocols/protocol-schema.json +1 -1
  293. package/skeleton/protocols/spike/builder-prompt.md +1 -1
  294. package/skeleton/protocols/spike/protocol.md +4 -4
  295. package/skeleton/protocols/spir/builder-prompt.md +28 -5
  296. package/skeleton/protocols/spir/protocol.json +9 -1
  297. package/skeleton/protocols/spir/protocol.md +2 -2
  298. package/skeleton/protocols/spir/templates/plan.md +0 -20
  299. package/skeleton/protocols/spir/templates/spec.md +0 -28
  300. package/skeleton/resources/commands/agent-farm.md +84 -84
  301. package/skeleton/resources/commands/codev.md +1 -1
  302. package/skeleton/resources/commands/consult.md +16 -7
  303. package/skeleton/resources/commands/overview.md +14 -15
  304. package/skeleton/resources/risk-triage.md +1 -1
  305. package/skeleton/resources/workflow-reference.md +14 -14
  306. package/skeleton/roles/architect.md +55 -43
  307. package/skeleton/roles/builder.md +22 -14
  308. package/skeleton/templates/AGENTS.md +4 -3
  309. package/skeleton/templates/CLAUDE.md +4 -3
  310. package/skeleton/templates/cheatsheet.md +11 -12
  311. package/templates/3d-viewer.html +16 -18
  312. package/templates/tower.html +1 -1
  313. package/dashboard/dist/assets/index-CiIBsixF.js +0 -194
  314. package/dashboard/dist/assets/index-CiIBsixF.js.map +0 -1
  315. package/skeleton/.claude/skills/af/SKILL.md +0 -146
  316. package/skeleton/porch/prompts/understand.md +0 -61
  317. package/skeleton/porch/prompts/verify.md +0 -58
  318. package/skeleton/protocols/maintain/prompts/audit.md +0 -111
  319. package/skeleton/protocols/maintain/prompts/clean.md +0 -91
  320. package/skeleton/protocols/maintain/prompts/sync.md +0 -113
  321. package/skeleton/protocols/maintain/prompts/verify.md +0 -110
  322. package/skeleton/protocols/tick/builder-prompt.md +0 -65
  323. package/skeleton/protocols/tick/consult-types/impl-review.md +0 -72
  324. package/skeleton/protocols/tick/consult-types/plan-review.md +0 -59
  325. package/skeleton/protocols/tick/consult-types/pr-review.md +0 -72
  326. package/skeleton/protocols/tick/consult-types/spec-review.md +0 -55
  327. package/skeleton/protocols/tick/protocol.json +0 -151
  328. package/skeleton/protocols/tick/protocol.md +0 -277
  329. package/skeleton/protocols/tick/templates/plan.md +0 -67
  330. package/skeleton/protocols/tick/templates/review.md +0 -89
  331. package/skeleton/protocols/tick/templates/spec.md +0 -61
@@ -26,7 +26,7 @@ Quick reference for the 7-stage project workflow. For protocol details, see `cod
26
26
  │ IMPLEMENTATION │
27
27
  ├─────────────────────────────────────────────────────────────────────────────────────┤
28
28
  │ → 4. IMPLEMENTING │
29
- │ Architect spawns builder: af spawn XXXX │
29
+ │ Architect spawns builder: afx spawn XXXX │
30
30
  │ Builder reads spec and plan │
31
31
  │ For each phase: Implement → Defend → Evaluate │
32
32
  │ Builder commits after each phase │
@@ -78,38 +78,38 @@ AI agents must stop and wait for human action at these gates.
78
78
 
79
79
  ```bash
80
80
  # Start the workspace
81
- af workspace start
81
+ afx workspace start
82
82
 
83
83
  # Spawn a builder for a project
84
- af spawn 44 --protocol spir
84
+ afx spawn 44 --protocol spir
85
85
 
86
86
  # Check all builder statuses
87
- af status
87
+ afx status
88
88
 
89
89
  # Send message to builder
90
- af send 44 "Check PR comments and address feedback"
90
+ afx send 44 "Check PR comments and address feedback"
91
91
 
92
92
  # Open a file for review
93
- af open codev/specs/44-name.md
93
+ afx open codev/specs/44-name.md
94
94
 
95
95
  # Clean up after merge
96
- af cleanup -p 44
96
+ afx cleanup -p 44
97
97
 
98
98
  # Stop everything
99
- af workspace stop
99
+ afx workspace stop
100
100
  ```
101
101
 
102
102
  ### Builder Commands
103
103
 
104
104
  ```bash
105
105
  # Check your own status
106
- af status
106
+ afx status
107
107
 
108
108
  # Send message to architect
109
- af send architect "Question about the spec..."
109
+ afx send architect "Question about the spec..."
110
110
 
111
111
  # Open a file in the annotation viewer
112
- af open src/path/to/file.ts
112
+ afx open src/path/to/file.ts
113
113
  ```
114
114
 
115
115
  ### Protocol Import
@@ -212,7 +212,7 @@ gh pr merge N --merge --delete-branch
212
212
  ### Post-Merge Cleanup (Architect)
213
213
  ```bash
214
214
  git pull # Get merged changes
215
- af cleanup -p XXXX # Clean up builder worktree
215
+ afx cleanup -p XXXX # Clean up builder worktree
216
216
  ```
217
217
 
218
218
  ## Troubleshooting
@@ -221,7 +221,7 @@ af cleanup -p XXXX # Clean up builder worktree
221
221
 
222
222
  1. Check builder terminal for blocker message
223
223
  2. Review any `// REVIEW(@architect):` comments in code
224
- 3. Provide guidance via `af send XXXX "guidance here"`
224
+ 3. Provide guidance via `afx send XXXX "guidance here"`
225
225
  4. Builder will resume work after receiving help
226
226
 
227
227
  ### PR Has Conflicts
@@ -238,7 +238,7 @@ af cleanup -p XXXX # Clean up builder worktree
238
238
  git worktree list
239
239
 
240
240
  # Force cleanup (only if work is committed/pushed)
241
- af cleanup -p XXXX --force
241
+ afx cleanup -p XXXX --force
242
242
  ```
243
243
 
244
244
  ## Related Documentation
@@ -8,7 +8,7 @@ The Architect is the **project manager and gatekeeper** who decides what to buil
8
8
 
9
9
  Builders work autonomously in isolated git worktrees. The Architect:
10
10
  1. **Decides** what to build
11
- 2. **Spawns** builders via `af spawn`
11
+ 2. **Spawns** builders via `afx spawn`
12
12
  3. **Approves** gates (spec-approval, plan-approval) when in strict mode
13
13
  4. **Reviews** PRs for integration concerns
14
14
 
@@ -16,8 +16,8 @@ Builders work autonomously in isolated git worktrees. The Architect:
16
16
 
17
17
  | Mode | Command | Use When |
18
18
  |------|---------|----------|
19
- | **Strict** (default) | `af spawn XXXX --protocol spir` | Porch orchestrates - runs autonomously to completion |
20
- | **Soft** | `af spawn XXXX --protocol spir --soft` | AI follows protocol - you verify compliance |
19
+ | **Strict** (default) | `afx spawn XXXX --protocol spir` | Porch orchestrates - runs autonomously to completion |
20
+ | **Soft** | `afx spawn XXXX --protocol spir --soft` | AI follows protocol - you verify compliance |
21
21
 
22
22
  **Strict mode** (default): Porch orchestrates the builder with automated gates, 3-way consultations, and enforced phase transitions. More likely to complete autonomously without intervention.
23
23
 
@@ -25,34 +25,34 @@ Builders work autonomously in isolated git worktrees. The Architect:
25
25
 
26
26
  ### Pre-Spawn Checklist
27
27
 
28
- **Before every `af spawn`, complete these steps:**
28
+ **Before every `afx spawn`, complete these steps:**
29
29
 
30
30
  1. **`git status`** — Ensure worktree is clean (no uncommitted changes)
31
31
  2. **Commit if needed** — Builders branch from HEAD; uncommitted specs/plans are invisible
32
- 3. **`af spawn N --protocol <name>`** — `--protocol` is **REQUIRED** (spir, bugfix, tick, etc.)
32
+ 3. **`afx spawn N --protocol <name>`** — `--protocol` is **REQUIRED** (spir, aspir, air, bugfix, etc.)
33
33
 
34
34
  The spawn command will refuse if the worktree is dirty (override with `--force`, but your builder won't see uncommitted files).
35
35
 
36
36
  ## Key Tools
37
37
 
38
- ### Agent Farm CLI (`af`)
38
+ ### Agent Farm CLI (`afx`)
39
39
 
40
40
  ```bash
41
- af spawn 1 --protocol spir # Strict mode (default) - porch-driven
42
- af spawn 1 --protocol spir -t "feature" # Strict mode with title (no spec yet)
43
- af spawn 1 --resume # Resume existing porch state
44
- af spawn 1 --protocol spir --soft # Soft mode - protocol-guided
45
- af spawn --task "fix the bug" # Ad-hoc task builder (soft mode)
46
- af spawn --worktree # Worktree with no initial prompt
47
- af status # Check all builders
48
- af cleanup -p 0001 # Remove completed builder
49
- af workspace start/stop # Workspace management
50
- af send 0001 "message" # Short message to builder
41
+ afx spawn 1 --protocol spir # Strict mode (default) - porch-driven
42
+ afx spawn 1 --protocol spir -t "feature" # Strict mode with title (no spec yet)
43
+ afx spawn 1 --resume # Resume existing porch state
44
+ afx spawn 1 --protocol spir --soft # Soft mode - protocol-guided
45
+ afx spawn --task "fix the bug" # Ad-hoc task builder (soft mode)
46
+ afx spawn --worktree # Worktree with no initial prompt
47
+ afx status # Check all builders
48
+ afx cleanup -p 0001 # Remove completed builder
49
+ afx workspace start/stop # Workspace management
50
+ afx send 0001 "message" # Short message to builder
51
51
  ```
52
52
 
53
53
  > **Note:** `--protocol` is REQUIRED for all numbered spawns. Only `--task`, `--shell`, and `--worktree` spawns skip it.
54
54
 
55
- **Note:** `af`, `consult`, `porch`, and `codev` are global commands. They work from any directory.
55
+ **Note:** `afx`, `consult`, `porch`, and `codev` are global commands. They work from any directory.
56
56
 
57
57
  ### Porch CLI (for strict mode)
58
58
 
@@ -95,16 +95,16 @@ wait
95
95
  # 3. Spawn the builder (--protocol is REQUIRED)
96
96
 
97
97
  # Default: Strict mode (porch-driven with gates)
98
- af spawn 42 --protocol spir
98
+ afx spawn 42 --protocol spir
99
99
 
100
100
  # With project title (if no spec exists yet)
101
- af spawn 42 --protocol spir -t "user-authentication"
101
+ afx spawn 42 --protocol spir -t "user-authentication"
102
102
 
103
103
  # Or: Soft mode (builder follows protocol independently)
104
- af spawn 42 --protocol spir --soft
104
+ afx spawn 42 --protocol spir --soft
105
105
 
106
106
  # For bugfixes
107
- af spawn 42 --protocol bugfix
107
+ afx spawn 42 --protocol bugfix
108
108
  ```
109
109
 
110
110
  ### 2. Approving Gates (Strict Mode Only)
@@ -114,25 +114,31 @@ The builder stops at gates requiring approval:
114
114
  **spec-approval** - After builder writes the spec
115
115
  ```bash
116
116
  # Review the spec in the builder's worktree
117
- cat worktrees/spir_0042_user-authentication/codev/specs/0042-user-authentication.md
117
+ cat .builders/spir-0042-feature-name/codev/specs/0042-feature-name.md
118
118
 
119
- # Approve if satisfactory
120
- porch approve 0042 spec-approval
119
+ # Approve if satisfactory (run from builder's worktree context)
120
+ (cd .builders/spir-0042-feature-name && porch approve 0042 spec-approval --a-human-explicitly-approved-this)
121
+
122
+ # IMPORTANT: Always message the builder after approving a gate
123
+ afx send 0042 "Spec approved. Continue to plan phase."
121
124
  ```
122
125
 
123
126
  **plan-approval** - After builder writes the plan
124
127
  ```bash
125
128
  # Review the plan
126
- cat worktrees/spir_0042_user-authentication/codev/plans/0042-user-authentication.md
129
+ cat .builders/spir-0042-feature-name/codev/plans/0042-feature-name.md
130
+
131
+ # Approve if satisfactory (run from builder's worktree context)
132
+ (cd .builders/spir-0042-feature-name && porch approve 0042 plan-approval --a-human-explicitly-approved-this)
127
133
 
128
- # Approve if satisfactory
129
- porch approve 0042 plan-approval
134
+ # IMPORTANT: Always message the builder after approving a gate
135
+ afx send 0042 "Plan approved. Continue to implement phase."
130
136
  ```
131
137
 
132
138
  ### 3. Monitoring Progress
133
139
 
134
140
  ```bash
135
- af status # Overview of all builders
141
+ afx status # Overview of all builders
136
142
  porch status 0042 # Detailed state for one project (strict mode)
137
143
  ```
138
144
 
@@ -176,7 +182,7 @@ Low-risk change. [Summary of what changed and why.]
176
182
  ---
177
183
  Architect review"
178
184
 
179
- af send 0042 "PR approved, please merge"
185
+ afx send 0042 "PR approved, please merge"
180
186
  ```
181
187
 
182
188
  **Medium risk** — single-model review:
@@ -188,7 +194,7 @@ gh pr comment 83 --body "## Architect Integration Review
188
194
  ...
189
195
  Architect integration review"
190
196
 
191
- af send 0042 "PR approved, please merge"
197
+ afx send 0042 "PR approved, please merge"
192
198
  ```
193
199
 
194
200
  **High risk** — full 3-way CMAP:
@@ -203,7 +209,7 @@ gh pr comment 83 --body "## Architect Integration Review
203
209
  ...
204
210
  Architect integration review"
205
211
 
206
- af send 0042 "PR approved, please merge"
212
+ afx send 0042 "PR approved, please merge"
207
213
  ```
208
214
 
209
215
  ### 5. Cleanup
@@ -211,17 +217,23 @@ af send 0042 "PR approved, please merge"
211
217
  After builder merges and work is integrated:
212
218
 
213
219
  ```bash
214
- af cleanup -p 0042
220
+ # 1. Close the GitHub Issue
221
+ gh issue close 42
222
+
223
+ # 2. Clean up the builder worktree
224
+ afx cleanup -p 0042
215
225
  ```
216
226
 
227
+ **Always close the GitHub Issue when the PR merges.** This is the architect's responsibility — builders don't close issues.
228
+
217
229
  ## Critical Rules
218
230
 
219
231
  ### NEVER Do These:
220
232
  1. **DO NOT merge PRs yourself** - Let builders merge their own PRs
221
233
  2. **DO NOT commit directly to main** - All changes go through builder PRs
222
- 3. **DO NOT use `af send` for long messages** - Use GitHub PR comments instead
223
- 4. **DO NOT run `af` commands from inside a builder worktree** - All `af` commands must be run from the repository root on `main`. Spawning from a worktree nests builders inside it, breaking everything.
224
- 5. **DO NOT `cd` into a builder worktree** - All CLI tools (`af`, `porch`, `consult`, `codev`) are global commands that work from any directory. If a command fails, debug it — don't cd into the worktree. Use absolute paths with the Read tool to inspect builder files (e.g., `Read /path/to/.builders/0042/codev/specs/...`).
234
+ 3. **DO NOT use `afx send` for long messages** - Use GitHub PR comments instead
235
+ 4. **DO NOT run `afx` commands from inside a builder worktree** - All `afx` commands must be run from the repository root on `main`. Spawning from a worktree nests builders inside it, breaking everything.
236
+ 5. **DO NOT `cd` into a builder worktree** - All CLI tools (`afx`, `porch`, `consult`, `codev`) are global commands that work from any directory. If a command fails, debug it — don't cd into the worktree. Use absolute paths with the Read tool to inspect builder files (e.g., `Read /path/to/.builders/0042/codev/specs/...`).
225
237
 
226
238
  ### ALWAYS Do These:
227
239
  1. **Create GitHub Issues first** - Track projects as issues before spawning
@@ -249,9 +261,9 @@ Update status as projects progress:
249
261
 
250
262
  When a builder reports blocked:
251
263
 
252
- 1. Check their status: `af status` or `porch status <id>`
264
+ 1. Check their status: `afx status` or `porch status <id>`
253
265
  2. Read their output in the terminal: `http://localhost:<port>`
254
- 3. Provide guidance via short `af send` message
266
+ 3. Provide guidance via short `afx send` message
255
267
  4. Or answer their question directly if they asked one
256
268
 
257
269
  ## Release Management
@@ -283,10 +295,10 @@ Before approving implementations with UX requirements:
283
295
 
284
296
  | Task | Command |
285
297
  |------|---------|
286
- | Start feature (strict, default) | `af spawn <id> --protocol spir` |
287
- | Start feature (soft) | `af spawn <id> --protocol spir --soft` |
288
- | Start bugfix | `af spawn <id> --protocol bugfix` |
289
- | Check all builders | `af status` |
298
+ | Start feature (strict, default) | `afx spawn <id> --protocol spir` |
299
+ | Start feature (soft) | `afx spawn <id> --protocol spir --soft` |
300
+ | Start bugfix | `afx spawn <id> --protocol bugfix` |
301
+ | Check all builders | `afx status` |
290
302
  | Check one project | `porch status <id>` |
291
303
  | Approve spec | `porch approve <id> spec-approval` |
292
304
  | Approve plan | `porch approve <id> plan-approval` |
@@ -294,5 +306,5 @@ Before approving implementations with UX requirements:
294
306
  | Assess PR risk | `gh pr diff --stat N` |
295
307
  | Integration review (medium) | `consult -m claude --type integration pr N` |
296
308
  | Integration review (high) | 3-way CMAP (see Section 4) |
297
- | Message builder | `af send <id> "short message"` |
298
- | Cleanup builder | `af cleanup -p <id>` |
309
+ | Message builder | `afx send <id> "short message"` |
310
+ | Cleanup builder | `afx cleanup -p <id>` |
@@ -8,12 +8,12 @@ Builders run in one of two modes, determined by how they were spawned:
8
8
 
9
9
  | Mode | Command | Behavior |
10
10
  |------|---------|----------|
11
- | **Strict** (default) | `af spawn XXXX` | Porch orchestrates - runs autonomously to completion |
12
- | **Soft** | `af spawn XXXX --soft` | AI follows protocol - architect verifies compliance |
11
+ | **Strict** (default) | `afx spawn XXXX` | Porch orchestrates - runs autonomously to completion |
12
+ | **Soft** | `afx spawn XXXX --soft` | AI follows protocol - architect verifies compliance |
13
13
 
14
14
  ## Strict Mode (Default)
15
15
 
16
- Spawned with: `af spawn XXXX`
16
+ Spawned with: `afx spawn XXXX`
17
17
 
18
18
  In strict mode, porch orchestrates your work and drives the protocol to completion autonomously. Your job is simple: **run porch until the project completes**.
19
19
 
@@ -68,7 +68,7 @@ You must:
68
68
 
69
69
  ## Soft Mode
70
70
 
71
- Spawned with: `af spawn XXXX --soft` or `af spawn --task "..."`
71
+ Spawned with: `afx spawn XXXX --soft` or `afx spawn --task "..."`
72
72
 
73
73
  In soft mode, you follow the protocol document yourself. The architect monitors your work and verifies you're adhering to the protocol correctly.
74
74
 
@@ -85,12 +85,13 @@ cat codev/protocols/spir/protocol.md
85
85
  # Start implementing
86
86
  ```
87
87
 
88
- ### The SPIR Protocol (Specify → Plan → Implement → Review)
88
+ ### The SPIR Protocol (Specify → Plan → Implement → Review (→ Verify))
89
89
 
90
90
  1. **Specify**: Read or create the spec at `codev/specs/XXXX-name.md`
91
91
  2. **Plan**: Read or create the plan at `codev/plans/XXXX-name.md`
92
92
  3. **Implement**: Write code following the plan phases
93
93
  4. **Review**: Write lessons learned and create PR
94
+ 5. **Verify** (optional): After PR merge, verify the feature works in the integrated codebase
94
95
 
95
96
  ### Consultations
96
97
 
@@ -129,27 +130,27 @@ wait
129
130
 
130
131
  If you're blocked or need help:
131
132
  ```bash
132
- af send architect "Question about the spec..."
133
+ afx send architect "Question about the spec..."
133
134
  ```
134
135
 
135
136
  ### Checking Status
136
137
 
137
138
  ```bash
138
139
  porch status # (strict mode) Your project status
139
- af status # All builders
140
+ afx status # All builders
140
141
  ```
141
142
 
142
143
  ## Notifications
143
144
 
144
- **ALWAYS notify the architect** via `af send` at these key moments:
145
+ **ALWAYS notify the architect** via `afx send` at these key moments:
145
146
 
146
147
  | When | What to send |
147
148
  |------|-------------|
148
- | **Gate reached** | `af send architect "Project XXXX: <gate-name> ready for approval"` |
149
- | **PR ready** | `af send architect "PR #N ready for review"` |
150
- | **PR merged** | `af send architect "Project XXXX complete. PR merged. Ready for cleanup."` |
151
- | **Blocked/stuck** | `af send architect "Blocked on X — need guidance"` |
152
- | **Escalation needed** | `af send architect "Issue too complex — recommend escalating to SPIR/TICK"` |
149
+ | **Gate reached** | `afx send architect "Project XXXX: <gate-name> ready for approval"` |
150
+ | **PR ready** | `afx send architect "PR #N ready for review"` |
151
+ | **PR merged** | `afx send architect "Project XXXX complete. PR merged. Entering verify phase."` |
152
+ | **Blocked/stuck** | `afx send architect "Blocked on X — need guidance"` |
153
+ | **Escalation needed** | `afx send architect "Issue too complex — recommend escalating to SPIR"` |
153
154
 
154
155
  The architect may be working on other tasks and won't know you need attention unless you send a message. **Don't assume they're watching** — always notify explicitly.
155
156
 
@@ -158,7 +159,7 @@ The architect may be working on other tasks and won't know you need attention un
158
159
  If you encounter issues you can't resolve:
159
160
 
160
161
  1. **Output a clear blocker message** describing the problem and options
161
- 2. **Use `af send architect "..."` to notify the Architect**
162
+ 2. **Use `afx send architect "..."` to notify the Architect**
162
163
  3. **Wait for guidance** before proceeding
163
164
 
164
165
  Example:
@@ -171,6 +172,13 @@ Can't find the auth helper mentioned in spec. Options:
171
172
  Waiting for Architect guidance.
172
173
  ```
173
174
 
175
+ ## Multi-PR Workflow
176
+
177
+ Builders may submit multiple sequential PRs within a single worktree session. The worktree persists across PRs -- it is not cleaned up automatically after merge. This allows builders to do follow-up work (e.g., addressing review feedback in a second PR, or splitting large features across checkpoint PRs).
178
+
179
+ - **Worktree cleanup is architect-driven** -- the architect decides when to run `afx cleanup`, not the builder
180
+ - If a builder session is interrupted, use `afx spawn XXXX --resume` to reconnect to the existing worktree
181
+
174
182
  ## Constraints
175
183
 
176
184
  - **Stay in scope** - Only implement what's in the spec
@@ -10,7 +10,8 @@ This project uses **Codev** for AI-assisted development.
10
10
 
11
11
  - **SPIR**: Multi-phase development with consultation (`codev/protocols/spir/protocol.md`)
12
12
  - **ASPIR**: Autonomous SPIR — no human gates on spec/plan (`codev/protocols/aspir/protocol.md`)
13
- - **TICK**: Fast autonomous implementation (`codev/protocols/tick/protocol.md`)
13
+ - **AIR**: Autonomous Implement & Review for small features (`codev/protocols/air/protocol.md`)
14
+ - **BUGFIX**: Bug fixes from GitHub issues (`codev/protocols/bugfix/protocol.md`)
14
15
  - **EXPERIMENT**: Disciplined experimentation (`codev/protocols/experiment/protocol.md`)
15
16
  - **MAINTAIN**: Codebase maintenance (`codev/protocols/maintain/protocol.md`)
16
17
 
@@ -50,7 +51,7 @@ Commit messages format:
50
51
  Codev provides three CLI tools:
51
52
 
52
53
  - **codev**: Project management (init, adopt, update, doctor)
53
- - **af**: Agent Farm orchestration (start, spawn, status, cleanup)
54
+ - **afx**: Agent Farm orchestration (start, spawn, status, cleanup)
54
55
  - **consult**: AI consultation for reviews (general, protocol, stats)
55
56
 
56
57
  For complete reference, see `codev/resources/commands/`:
@@ -61,7 +62,7 @@ For complete reference, see `codev/resources/commands/`:
61
62
 
62
63
  ## Configuration
63
64
 
64
- Agent Farm is configured via `af-config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
65
+ Agent Farm is configured via `.codev/config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
65
66
 
66
67
  ```json
67
68
  {
@@ -8,7 +8,8 @@ This project uses **Codev** for AI-assisted development.
8
8
 
9
9
  - **SPIR**: Multi-phase development with consultation (`codev/protocols/spir/protocol.md`)
10
10
  - **ASPIR**: Autonomous SPIR — no human gates on spec/plan (`codev/protocols/aspir/protocol.md`)
11
- - **TICK**: Fast autonomous implementation (`codev/protocols/tick/protocol.md`)
11
+ - **AIR**: Autonomous Implement & Review for small features (`codev/protocols/air/protocol.md`)
12
+ - **BUGFIX**: Bug fixes from GitHub issues (`codev/protocols/bugfix/protocol.md`)
12
13
  - **EXPERIMENT**: Disciplined experimentation (`codev/protocols/experiment/protocol.md`)
13
14
  - **MAINTAIN**: Codebase maintenance (`codev/protocols/maintain/protocol.md`)
14
15
 
@@ -48,7 +49,7 @@ Commit messages format:
48
49
  Codev provides three CLI tools:
49
50
 
50
51
  - **codev**: Project management (init, adopt, update, doctor)
51
- - **af**: Agent Farm orchestration (start, spawn, status, cleanup)
52
+ - **afx**: Agent Farm orchestration (start, spawn, status, cleanup)
52
53
  - **consult**: AI consultation for reviews (general, protocol, stats)
53
54
 
54
55
  For complete reference, see `codev/resources/commands/`:
@@ -59,7 +60,7 @@ For complete reference, see `codev/resources/commands/`:
59
60
 
60
61
  ## Configuration
61
62
 
62
- Agent Farm is configured via `af-config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
63
+ Agent Farm is configured via `.codev/config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
63
64
 
64
65
  ```json
65
66
  {
@@ -41,7 +41,7 @@ Just like structuring a human team—clear roles, defined processes, explicit ha
41
41
 
42
42
  | Component | Purpose |
43
43
  |-----------|---------|
44
- | Protocols | Define HOW work happens (SPIR, TICK, etc.) |
44
+ | Protocols | Define HOW work happens (SPIR, ASPIR, etc.) |
45
45
  | Roles | Define WHO does what (Architect, Builder, Consultant) |
46
46
  | Parallelism | Scale by running multiple builders simultaneously |
47
47
 
@@ -61,7 +61,6 @@ A **protocol** is a structured workflow that defines how work progresses from id
61
61
  | Protocol | Use For | Phases |
62
62
  |----------|---------|--------|
63
63
  | **SPIR** | New features | Specify → Plan → Implement → Review |
64
- | **TICK** | Amendments to existing specs | Task Identification → Coding → Kickout |
65
64
  | **MAINTAIN** | Codebase hygiene | Dead code removal, documentation sync |
66
65
  | **EXPERIMENT** | Research & prototyping | Hypothesis → Experiment → Conclude |
67
66
 
@@ -105,21 +104,21 @@ Project management commands. Typically used by **humans** to set up and maintain
105
104
  | `codev update` | Update Codev framework |
106
105
  | `codev import` | Import specs from another project |
107
106
 
108
- ### agent-farm (af)
107
+ ### agent-farm (afx)
109
108
 
110
109
  Architect-Builder orchestration. Used by both **humans and agents**—agents use it more frequently.
111
110
 
112
111
  | Command | Description |
113
112
  |---------|-------------|
114
- | `af workspace start` | Start workspace (port 4200, 4300, etc.) |
115
- | `af workspace stop` | Stop all processes |
116
- | `af spawn <id> --protocol spir` | Spawn a builder for project |
117
- | `af status` | Check status of all builders |
118
- | `af send <target> <msg>` | Send message (builder↔architect) |
119
- | `af cleanup -p <id>` | Clean up a builder worktree |
120
- | `af shell` | Spawn a utility shell |
121
- | `af open <file>` | Open file in workspace viewer |
122
- | `af tower start` | Start cross-project tower |
113
+ | `afx workspace start` | Start workspace (port 4200, 4300, etc.) |
114
+ | `afx workspace stop` | Stop all processes |
115
+ | `afx spawn <id> --protocol spir` | Spawn a builder for project |
116
+ | `afx status` | Check status of all builders |
117
+ | `afx send <target> <msg>` | Send message (builder↔architect) |
118
+ | `afx cleanup -p <id>` | Clean up a builder worktree |
119
+ | `afx shell` | Spawn a utility shell |
120
+ | `afx open <file>` | Open file in workspace viewer |
121
+ | `afx tower start` | Start cross-project tower |
123
122
 
124
123
  ### consult
125
124
 
@@ -12,7 +12,7 @@
12
12
  }
13
13
 
14
14
  body {
15
- background: #000000;
15
+ background: #4D4D4D;
16
16
  color: #e0e0e0;
17
17
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
18
18
  overflow: hidden;
@@ -276,7 +276,7 @@
276
276
  function init() {
277
277
  // Scene
278
278
  scene = new THREE.Scene();
279
- scene.background = new THREE.Color(0x000000);
279
+ scene.background = new THREE.Color(0x4D4D4D);
280
280
 
281
281
  // Cameras (Z-up coordinate system)
282
282
  const aspect = container.clientWidth / container.clientHeight;
@@ -378,21 +378,20 @@
378
378
  geometry.computeBoundingBox();
379
379
  const center = new THREE.Vector3();
380
380
  geometry.boundingBox.getCenter(center);
381
- geometry.translate(-center.x, -center.y, -center.z);
381
+ // Only center in XY; Three.js translate() auto-updates boundingBox
382
+ geometry.translate(-center.x, -center.y, 0);
382
383
 
383
384
  // Move to sit on grid (Z=0 plane)
384
- const minZ = geometry.boundingBox.min.z - center.z;
385
- geometry.translate(0, 0, -minZ);
385
+ geometry.translate(0, 0, -geometry.boundingBox.min.z);
386
386
 
387
- // Recalculate bounding box after translation
388
- geometry.computeBoundingBox();
387
+ // Compute vertex normals for smooth Phong shading
388
+ geometry.computeVertexNormals();
389
389
 
390
390
  // Material
391
391
  const material = new THREE.MeshPhongMaterial({
392
392
  color: 0x3b82f6,
393
- specular: 0x111111,
394
- shininess: 30,
395
- flatShading: false
393
+ specular: 0x222222,
394
+ shininess: 60
396
395
  });
397
396
 
398
397
  model = new THREE.Mesh(geometry, material);
@@ -775,21 +774,20 @@
775
774
  geometry.computeBoundingBox();
776
775
  const center = new THREE.Vector3();
777
776
  geometry.boundingBox.getCenter(center);
778
- geometry.translate(-center.x, -center.y, -center.z);
777
+ // Only center in XY; Three.js translate() auto-updates boundingBox
778
+ geometry.translate(-center.x, -center.y, 0);
779
779
 
780
780
  // Move to sit on grid (Z=0 plane)
781
- const minZ = geometry.boundingBox.min.z - center.z;
782
- geometry.translate(0, 0, -minZ);
781
+ geometry.translate(0, 0, -geometry.boundingBox.min.z);
783
782
 
784
- // Recalculate bounding box after translation
785
- geometry.computeBoundingBox();
783
+ // Compute vertex normals for smooth Phong shading
784
+ geometry.computeVertexNormals();
786
785
 
787
786
  // Create new material
788
787
  const material = new THREE.MeshPhongMaterial({
789
788
  color: 0x3b82f6,
790
- specular: 0x111111,
791
- shininess: 30,
792
- flatShading: false
789
+ specular: 0x222222,
790
+ shininess: 60
793
791
  });
794
792
 
795
793
  model = new THREE.Mesh(geometry, material);
@@ -1162,7 +1162,7 @@
1162
1162
  <div class="empty-state">
1163
1163
  <div class="icon">📭</div>
1164
1164
  <h2>No running workspaces</h2>
1165
- <p>Start a new workspace below or run <code>af dash start</code> in a workspace directory.</p>
1165
+ <p>Start a new workspace below or run <code>afx workspace start</code> in a workspace directory.</p>
1166
1166
  </div>
1167
1167
  `;
1168
1168
  } else {