@cluesmith/codev 2.0.3 → 2.0.7

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 (271) hide show
  1. package/dashboard/dist/assets/index-BblS3DWL.js +135 -0
  2. package/dashboard/dist/assets/index-BblS3DWL.js.map +1 -0
  3. package/dashboard/dist/assets/index-Cr9PyjqX.css +32 -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 +54 -61
  7. package/dist/agent-farm/cli.js.map +1 -1
  8. package/dist/agent-farm/commands/architect.d.ts +5 -5
  9. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  10. package/dist/agent-farm/commands/architect.js +37 -20
  11. package/dist/agent-farm/commands/architect.js.map +1 -1
  12. package/dist/agent-farm/commands/attach.d.ts +19 -0
  13. package/dist/agent-farm/commands/attach.d.ts.map +1 -1
  14. package/dist/agent-farm/commands/attach.js +169 -29
  15. package/dist/agent-farm/commands/attach.js.map +1 -1
  16. package/dist/agent-farm/commands/cleanup.d.ts +12 -0
  17. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  18. package/dist/agent-farm/commands/cleanup.js +108 -7
  19. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  20. package/dist/agent-farm/commands/send.d.ts +22 -2
  21. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  22. package/dist/agent-farm/commands/send.js +97 -178
  23. package/dist/agent-farm/commands/send.js.map +1 -1
  24. package/dist/agent-farm/commands/spawn-roles.d.ts +3 -9
  25. package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
  26. package/dist/agent-farm/commands/spawn-roles.js +14 -53
  27. package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
  28. package/dist/agent-farm/commands/spawn-worktree.d.ts +11 -18
  29. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  30. package/dist/agent-farm/commands/spawn-worktree.js +35 -22
  31. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  32. package/dist/agent-farm/commands/spawn.d.ts +8 -6
  33. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  34. package/dist/agent-farm/commands/spawn.js +207 -89
  35. package/dist/agent-farm/commands/spawn.js.map +1 -1
  36. package/dist/agent-farm/commands/start.d.ts.map +1 -1
  37. package/dist/agent-farm/commands/start.js +2 -6
  38. package/dist/agent-farm/commands/start.js.map +1 -1
  39. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  40. package/dist/agent-farm/commands/status.js +5 -35
  41. package/dist/agent-farm/commands/status.js.map +1 -1
  42. package/dist/agent-farm/commands/stop.d.ts.map +1 -1
  43. package/dist/agent-farm/commands/stop.js +2 -6
  44. package/dist/agent-farm/commands/stop.js.map +1 -1
  45. package/dist/agent-farm/commands/tower-cloud.d.ts +2 -9
  46. package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -1
  47. package/dist/agent-farm/commands/tower-cloud.js +12 -47
  48. package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
  49. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  50. package/dist/agent-farm/commands/tower.js +6 -23
  51. package/dist/agent-farm/commands/tower.js.map +1 -1
  52. package/dist/agent-farm/db/index.d.ts.map +1 -1
  53. package/dist/agent-farm/db/index.js +52 -2
  54. package/dist/agent-farm/db/index.js.map +1 -1
  55. package/dist/agent-farm/db/schema.d.ts +1 -1
  56. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  57. package/dist/agent-farm/db/schema.js +1 -1
  58. package/dist/agent-farm/lib/cloud-config.d.ts +1 -0
  59. package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -1
  60. package/dist/agent-farm/lib/cloud-config.js +2 -2
  61. package/dist/agent-farm/lib/cloud-config.js.map +1 -1
  62. package/dist/agent-farm/lib/tower-client.d.ts +65 -6
  63. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  64. package/dist/agent-farm/lib/tower-client.js +57 -2
  65. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  66. package/dist/agent-farm/servers/overview.d.ts +157 -0
  67. package/dist/agent-farm/servers/overview.d.ts.map +1 -0
  68. package/dist/agent-farm/servers/overview.js +625 -0
  69. package/dist/agent-farm/servers/overview.js.map +1 -0
  70. package/dist/agent-farm/servers/tower-instances.d.ts +1 -3
  71. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  72. package/dist/agent-farm/servers/tower-instances.js +12 -14
  73. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  74. package/dist/agent-farm/servers/tower-messages.d.ts +87 -0
  75. package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -0
  76. package/dist/agent-farm/servers/tower-messages.js +202 -0
  77. package/dist/agent-farm/servers/tower-messages.js.map +1 -0
  78. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  79. package/dist/agent-farm/servers/tower-routes.js +182 -34
  80. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  81. package/dist/agent-farm/servers/tower-server.js +30 -6
  82. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  83. package/dist/agent-farm/servers/tower-terminals.d.ts +9 -3
  84. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  85. package/dist/agent-farm/servers/tower-terminals.js +129 -84
  86. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  87. package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
  88. package/dist/agent-farm/servers/tower-tunnel.js +3 -19
  89. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  90. package/dist/agent-farm/servers/tower-types.d.ts +0 -2
  91. package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
  92. package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
  93. package/dist/agent-farm/servers/tower-websocket.js +27 -5
  94. package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
  95. package/dist/agent-farm/types.d.ts +4 -5
  96. package/dist/agent-farm/types.d.ts.map +1 -1
  97. package/dist/agent-farm/utils/agent-names.d.ts +85 -0
  98. package/dist/agent-farm/utils/agent-names.d.ts.map +1 -0
  99. package/dist/agent-farm/utils/agent-names.js +140 -0
  100. package/dist/agent-farm/utils/agent-names.js.map +1 -0
  101. package/dist/agent-farm/utils/display.d.ts +8 -0
  102. package/dist/agent-farm/utils/display.d.ts.map +1 -0
  103. package/dist/agent-farm/utils/display.js +26 -0
  104. package/dist/agent-farm/utils/display.js.map +1 -0
  105. package/dist/agent-farm/utils/message-format.d.ts +17 -0
  106. package/dist/agent-farm/utils/message-format.d.ts.map +1 -0
  107. package/dist/agent-farm/utils/message-format.js +41 -0
  108. package/dist/agent-farm/utils/message-format.js.map +1 -0
  109. package/dist/agent-farm/utils/notifications.d.ts.map +1 -1
  110. package/dist/agent-farm/utils/notifications.js +7 -16
  111. package/dist/agent-farm/utils/notifications.js.map +1 -1
  112. package/dist/agent-farm/utils/server-utils.d.ts +4 -0
  113. package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
  114. package/dist/agent-farm/utils/server-utils.js +20 -0
  115. package/dist/agent-farm/utils/server-utils.js.map +1 -1
  116. package/dist/agent-farm/utils/shell.d.ts +5 -0
  117. package/dist/agent-farm/utils/shell.d.ts.map +1 -1
  118. package/dist/agent-farm/utils/shell.js +15 -11
  119. package/dist/agent-farm/utils/shell.js.map +1 -1
  120. package/dist/cli.d.ts.map +1 -1
  121. package/dist/cli.js +46 -15
  122. package/dist/cli.js.map +1 -1
  123. package/dist/commands/adopt.d.ts.map +1 -1
  124. package/dist/commands/adopt.js +1 -13
  125. package/dist/commands/adopt.js.map +1 -1
  126. package/dist/commands/consult/index.d.ts +34 -9
  127. package/dist/commands/consult/index.d.ts.map +1 -1
  128. package/dist/commands/consult/index.js +617 -263
  129. package/dist/commands/consult/index.js.map +1 -1
  130. package/dist/commands/consult/metrics.d.ts +90 -0
  131. package/dist/commands/consult/metrics.d.ts.map +1 -0
  132. package/dist/commands/consult/metrics.js +203 -0
  133. package/dist/commands/consult/metrics.js.map +1 -0
  134. package/dist/commands/consult/stats.d.ts +18 -0
  135. package/dist/commands/consult/stats.d.ts.map +1 -0
  136. package/dist/commands/consult/stats.js +150 -0
  137. package/dist/commands/consult/stats.js.map +1 -0
  138. package/dist/commands/consult/usage-extractor.d.ts +41 -0
  139. package/dist/commands/consult/usage-extractor.d.ts.map +1 -0
  140. package/dist/commands/consult/usage-extractor.js +122 -0
  141. package/dist/commands/consult/usage-extractor.js.map +1 -0
  142. package/dist/commands/doctor.d.ts.map +1 -1
  143. package/dist/commands/doctor.js +5 -3
  144. package/dist/commands/doctor.js.map +1 -1
  145. package/dist/commands/init.d.ts.map +1 -1
  146. package/dist/commands/init.js +1 -13
  147. package/dist/commands/init.js.map +1 -1
  148. package/dist/commands/porch/index.d.ts.map +1 -1
  149. package/dist/commands/porch/index.js +13 -12
  150. package/dist/commands/porch/index.js.map +1 -1
  151. package/dist/commands/porch/next.d.ts.map +1 -1
  152. package/dist/commands/porch/next.js +57 -77
  153. package/dist/commands/porch/next.js.map +1 -1
  154. package/dist/commands/porch/plan.d.ts.map +1 -1
  155. package/dist/commands/porch/plan.js +17 -2
  156. package/dist/commands/porch/plan.js.map +1 -1
  157. package/dist/commands/porch/prompts.d.ts +10 -1
  158. package/dist/commands/porch/prompts.d.ts.map +1 -1
  159. package/dist/commands/porch/prompts.js +56 -29
  160. package/dist/commands/porch/prompts.js.map +1 -1
  161. package/dist/commands/porch/protocol.js +2 -2
  162. package/dist/commands/porch/state.d.ts +13 -0
  163. package/dist/commands/porch/state.d.ts.map +1 -1
  164. package/dist/commands/porch/state.js +49 -2
  165. package/dist/commands/porch/state.js.map +1 -1
  166. package/dist/commands/update.d.ts.map +1 -1
  167. package/dist/commands/update.js +0 -10
  168. package/dist/commands/update.js.map +1 -1
  169. package/dist/lib/github.d.ts +82 -0
  170. package/dist/lib/github.d.ts.map +1 -0
  171. package/dist/lib/github.js +181 -0
  172. package/dist/lib/github.js.map +1 -0
  173. package/dist/lib/scaffold.d.ts +0 -21
  174. package/dist/lib/scaffold.d.ts.map +1 -1
  175. package/dist/lib/scaffold.js +0 -57
  176. package/dist/lib/scaffold.js.map +1 -1
  177. package/dist/terminal/index.d.ts +16 -0
  178. package/dist/terminal/index.d.ts.map +1 -1
  179. package/dist/terminal/index.js +14 -0
  180. package/dist/terminal/index.js.map +1 -1
  181. package/dist/terminal/pty-manager.d.ts.map +1 -1
  182. package/dist/terminal/pty-manager.js +8 -5
  183. package/dist/terminal/pty-manager.js.map +1 -1
  184. package/dist/terminal/pty-session.js +4 -4
  185. package/dist/terminal/pty-session.js.map +1 -1
  186. package/dist/terminal/session-manager.d.ts +64 -0
  187. package/dist/terminal/session-manager.d.ts.map +1 -1
  188. package/dist/terminal/session-manager.js +299 -10
  189. package/dist/terminal/session-manager.js.map +1 -1
  190. package/dist/terminal/shellper-client.d.ts +2 -1
  191. package/dist/terminal/shellper-client.d.ts.map +1 -1
  192. package/dist/terminal/shellper-client.js +4 -2
  193. package/dist/terminal/shellper-client.js.map +1 -1
  194. package/dist/terminal/shellper-main.js +33 -4
  195. package/dist/terminal/shellper-main.js.map +1 -1
  196. package/dist/terminal/shellper-process.d.ts +24 -7
  197. package/dist/terminal/shellper-process.d.ts.map +1 -1
  198. package/dist/terminal/shellper-process.js +139 -36
  199. package/dist/terminal/shellper-process.js.map +1 -1
  200. package/dist/terminal/shellper-protocol.d.ts +1 -0
  201. package/dist/terminal/shellper-protocol.d.ts.map +1 -1
  202. package/dist/terminal/shellper-protocol.js.map +1 -1
  203. package/package.json +4 -1
  204. package/skeleton/.claude/skills/af/SKILL.md +10 -10
  205. package/skeleton/.claude/skills/consult/SKILL.md +55 -38
  206. package/skeleton/.claude/skills/porch/SKILL.md +53 -0
  207. package/skeleton/DEPENDENCIES.md +2 -2
  208. package/skeleton/builders.md +8 -19
  209. package/skeleton/maintain/.gitkeep +1 -1
  210. package/skeleton/porch/prompts/specify.md +1 -1
  211. package/skeleton/protocol-schema.json +1 -1
  212. package/skeleton/protocols/bugfix/prompts/pr.md +18 -7
  213. package/skeleton/protocols/bugfix/protocol.json +1 -1
  214. package/skeleton/protocols/experiment/protocol.md +17 -17
  215. package/skeleton/protocols/maintain/consult-types/impl-review.md +72 -0
  216. package/skeleton/protocols/maintain/consult-types/pr-review.md +72 -0
  217. package/skeleton/protocols/maintain/prompts/audit.md +2 -2
  218. package/skeleton/protocols/maintain/prompts/sync.md +1 -1
  219. package/skeleton/protocols/maintain/prompts/verify.md +1 -1
  220. package/skeleton/protocols/maintain/protocol.json +4 -4
  221. package/skeleton/protocols/maintain/protocol.md +11 -12
  222. package/skeleton/protocols/maintain/templates/maintenance-run.md +2 -2
  223. package/skeleton/protocols/protocol-schema.json +1 -1
  224. package/skeleton/protocols/spir/consult-types/impl-review.md +72 -0
  225. package/skeleton/protocols/spir/consult-types/phase-review.md +72 -0
  226. package/skeleton/protocols/spir/consult-types/pr-review.md +72 -0
  227. package/skeleton/protocols/spir/prompts/plan.md +4 -4
  228. package/skeleton/protocols/spir/prompts/review.md +8 -8
  229. package/skeleton/protocols/spir/prompts/specify.md +6 -6
  230. package/skeleton/protocols/spir/protocol.json +16 -16
  231. package/skeleton/protocols/spir/protocol.md +8 -8
  232. package/skeleton/protocols/spir/templates/review.md +2 -2
  233. package/skeleton/protocols/tick/consult-types/impl-review.md +72 -0
  234. package/skeleton/protocols/tick/consult-types/plan-review.md +59 -0
  235. package/skeleton/protocols/tick/consult-types/pr-review.md +72 -0
  236. package/skeleton/protocols/tick/consult-types/spec-review.md +55 -0
  237. package/skeleton/protocols/tick/protocol.json +2 -7
  238. package/skeleton/protocols/tick/protocol.md +31 -31
  239. package/skeleton/resources/commands/agent-farm.md +21 -19
  240. package/skeleton/resources/commands/codev.md +0 -36
  241. package/skeleton/resources/commands/consult.md +88 -234
  242. package/skeleton/resources/commands/overview.md +6 -7
  243. package/skeleton/resources/spikes.md +3 -3
  244. package/skeleton/resources/workflow-reference.md +28 -28
  245. package/skeleton/roles/architect.md +34 -38
  246. package/skeleton/roles/builder.md +14 -14
  247. package/skeleton/roles/consultant.md +6 -0
  248. package/skeleton/templates/AGENTS.md +6 -6
  249. package/skeleton/templates/CLAUDE.md +6 -6
  250. package/skeleton/templates/cheatsheet.md +22 -18
  251. package/skeleton/templates/lifecycle.md +9 -9
  252. package/skeleton/templates/pr-overview.md +5 -5
  253. package/templates/open.html +6 -3
  254. package/templates/tower.html +1 -41
  255. package/dashboard/dist/assets/index-4n9zpWLY.css +0 -32
  256. package/dashboard/dist/assets/index-UsH9ixz1.js +0 -136
  257. package/dashboard/dist/assets/index-UsH9ixz1.js.map +0 -1
  258. package/dist/agent-farm/commands/consult.d.ts +0 -15
  259. package/dist/agent-farm/commands/consult.d.ts.map +0 -1
  260. package/dist/agent-farm/commands/consult.js +0 -39
  261. package/dist/agent-farm/commands/consult.js.map +0 -1
  262. package/dist/agent-farm/utils/gate-status.d.ts +0 -16
  263. package/dist/agent-farm/utils/gate-status.d.ts.map +0 -1
  264. package/dist/agent-farm/utils/gate-status.js +0 -79
  265. package/dist/agent-farm/utils/gate-status.js.map +0 -1
  266. package/skeleton/templates/projectlist-archive.md +0 -21
  267. package/skeleton/templates/projectlist.md +0 -147
  268. /package/skeleton/{consult-types → protocols/bugfix/consult-types}/impl-review.md +0 -0
  269. /package/skeleton/{consult-types/pr-ready.md → protocols/bugfix/consult-types/pr-review.md} +0 -0
  270. /package/skeleton/{consult-types → protocols/spir/consult-types}/plan-review.md +0 -0
  271. /package/skeleton/{consult-types → protocols/spir/consult-types}/spec-review.md +0 -0
@@ -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 -p XXXX` | Porch orchestrates - runs autonomously to completion |
20
- | **Soft** | `af spawn --soft -p XXXX` | AI follows protocol - you verify compliance |
19
+ | **Strict** (default) | `af spawn XXXX` | Porch orchestrates - runs autonomously to completion |
20
+ | **Soft** | `af spawn XXXX --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
 
@@ -28,16 +28,15 @@ Builders work autonomously in isolated git worktrees. The Architect:
28
28
  ### Agent Farm CLI (`af`)
29
29
 
30
30
  ```bash
31
- af spawn -p 0001 # Strict mode (default) - porch-driven
32
- af spawn -p 0001 -t "feature" # Strict mode with title (no spec yet)
33
- af spawn -p 0001 --resume # Resume existing porch state
34
- af spawn --soft -p 0001 # Soft mode - protocol-guided
31
+ af spawn 1 # Strict mode (default) - porch-driven
32
+ af spawn 1 --resume # Resume existing porch state
33
+ af spawn 1 --soft # Soft mode - protocol-guided
35
34
  af spawn --task "fix the bug" # Ad-hoc task builder (soft mode)
36
35
  af spawn --worktree # Worktree with no initial prompt
37
36
  af status # Check all builders
38
- af cleanup -p 0001 # Remove completed builder
37
+ af cleanup --project 1 # Remove completed builder
39
38
  af dash start/stop # Dashboard management
40
- af send 0001 "message" # Short message to builder
39
+ af send 1 "message" # Short message to builder
41
40
  ```
42
41
 
43
42
  **Note:** `af`, `consult`, `porch`, and `codev` are global commands. They work from any directory.
@@ -45,8 +44,8 @@ af send 0001 "message" # Short message to builder
45
44
  ### Porch CLI (for strict mode)
46
45
 
47
46
  ```bash
48
- porch status 0001 # Check project state
49
- porch approve 0001 spec-approval # Approve a gate
47
+ porch status 1 # Check project state
48
+ porch approve 1 spec-approval # Approve a gate
50
49
  porch pending # List pending gates
51
50
  ```
52
51
 
@@ -54,16 +53,16 @@ porch pending # List pending gates
54
53
 
55
54
  ```bash
56
55
  # 3-way parallel integration review of builder's PR
57
- consult --model gemini --type integration-review pr 35 &
58
- consult --model codex --type integration-review pr 35 &
59
- consult --model claude --type integration-review pr 35 &
56
+ consult -m gemini --type integration pr 35 &
57
+ consult -m codex --type integration pr 35 &
58
+ consult -m claude --type integration pr 35 &
60
59
  wait
61
60
  ```
62
61
 
63
62
  ## Responsibilities
64
63
 
65
64
  1. **Decide what to build** - Identify features, prioritize work
66
- 2. **Maintain project list** - Track all projects in `codev/projectlist.md`
65
+ 2. **Track projects** - Use GitHub Issues as the project registry
67
66
  3. **Spawn builders** - Choose soft or strict mode based on needs
68
67
  4. **Approve gates** - (Strict mode) Review specs and plans, approve to continue
69
68
  5. **Monitor progress** - Track builder status, unblock when stuck
@@ -75,17 +74,14 @@ wait
75
74
  ### 1. Starting a New Feature
76
75
 
77
76
  ```bash
78
- # 1. Reserve project number in projectlist.md
77
+ # 1. Create a GitHub Issue for the feature
79
78
  # 2. Spawn the builder
80
79
 
81
80
  # Default: Strict mode (porch-driven with gates)
82
- af spawn -p 0042
83
-
84
- # With project title (if no spec exists yet)
85
- af spawn -p 0042 -t "user-authentication"
81
+ af spawn 42
86
82
 
87
83
  # Or: Soft mode (builder follows protocol independently)
88
- af spawn --soft -p 0042
84
+ af spawn 42 --soft
89
85
  ```
90
86
 
91
87
  ### 2. Approving Gates (Strict Mode Only)
@@ -95,26 +91,26 @@ The builder stops at gates requiring approval:
95
91
  **spec-approval** - After builder writes the spec
96
92
  ```bash
97
93
  # Review the spec in the builder's worktree
98
- cat worktrees/spir_0042_user-authentication/codev/specs/0042-user-authentication.md
94
+ cat worktrees/spir_42_user-authentication/codev/specs/42-user-authentication.md
99
95
 
100
96
  # Approve if satisfactory
101
- porch approve 0042 spec-approval
97
+ porch approve 42 spec-approval
102
98
  ```
103
99
 
104
100
  **plan-approval** - After builder writes the plan
105
101
  ```bash
106
102
  # Review the plan
107
- cat worktrees/spir_0042_user-authentication/codev/plans/0042-user-authentication.md
103
+ cat worktrees/spir_42_user-authentication/codev/plans/42-user-authentication.md
108
104
 
109
105
  # Approve if satisfactory
110
- porch approve 0042 plan-approval
106
+ porch approve 42 plan-approval
111
107
  ```
112
108
 
113
109
  ### 3. Monitoring Progress
114
110
 
115
111
  ```bash
116
112
  af status # Overview of all builders
117
- porch status 0042 # Detailed state for one project (strict mode)
113
+ porch status 42 # Detailed state for one project (strict mode)
118
114
  ```
119
115
 
120
116
  ### 4. Integration Review
@@ -123,9 +119,9 @@ When the builder creates a PR:
123
119
 
124
120
  ```bash
125
121
  # Run 3-way integration review
126
- consult --model gemini --type integration-review pr 83 &
127
- consult --model codex --type integration-review pr 83 &
128
- consult --model claude --type integration-review pr 83 &
122
+ consult -m gemini --type integration pr 83 &
123
+ consult -m codex --type integration pr 83 &
124
+ consult -m claude --type integration pr 83 &
129
125
  wait
130
126
 
131
127
  # Post findings as PR comment
@@ -139,7 +135,7 @@ Integration looks good. No conflicts with existing modules.
139
135
  Architect integration review"
140
136
 
141
137
  # Notify builder
142
- af send 0042 "PR approved, please merge"
138
+ af send 42 "PR approved, please merge"
143
139
  ```
144
140
 
145
141
  ### 5. Cleanup
@@ -147,7 +143,7 @@ af send 0042 "PR approved, please merge"
147
143
  After builder merges and work is integrated:
148
144
 
149
145
  ```bash
150
- af cleanup -p 0042
146
+ af cleanup -p 42
151
147
  ```
152
148
 
153
149
  ## Critical Rules
@@ -158,21 +154,21 @@ af cleanup -p 0042
158
154
  3. **DO NOT use `af send` for long messages** - Use GitHub PR comments instead
159
155
 
160
156
  ### ALWAYS Do These:
161
- 1. **Reserve project numbers first** - Update projectlist.md before spawning
157
+ 1. **Create GitHub Issues first** - Track projects as issues before spawning
162
158
  2. **Review artifacts before approving gates** - (Strict mode) Read the spec/plan carefully
163
159
  3. **Use PR comments for feedback** - Not terminal send-keys
164
160
  4. **Let builders own their work** - Guide, don't take over
165
161
 
166
162
  ## Project Tracking
167
163
 
168
- **`codev/projectlist.md` is the canonical source of truth.**
164
+ **GitHub Issues are the canonical source of truth for project tracking.**
169
165
 
170
166
  ```bash
171
167
  # See what needs work
172
- cat codev/projectlist.md
168
+ gh issue list --label "priority:high"
173
169
 
174
- # Find high-priority items
175
- grep -A5 "priority: high" codev/projectlist.md
170
+ # View a specific project
171
+ gh issue view 42
176
172
  ```
177
173
 
178
174
  Update status as projects progress:
@@ -216,13 +212,13 @@ Before approving implementations with UX requirements:
216
212
 
217
213
  | Task | Command |
218
214
  |------|---------|
219
- | Start feature (strict, default) | `af spawn -p <id>` |
220
- | Start feature (soft) | `af spawn --soft -p <id>` |
215
+ | Start feature (strict, default) | `af spawn <id>` |
216
+ | Start feature (soft) | `af spawn <id> --soft` |
221
217
  | Check all builders | `af status` |
222
218
  | Check one project | `porch status <id>` |
223
219
  | Approve spec | `porch approve <id> spec-approval` |
224
220
  | Approve plan | `porch approve <id> plan-approval` |
225
221
  | See pending gates | `porch pending` |
226
- | Integration review | `consult --model X --type integration-review pr N` |
222
+ | Integration review | `consult -m X --type integration pr N` |
227
223
  | Message builder | `af send <id> "short message"` |
228
224
  | Cleanup builder | `af 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 -p XXXX` | Porch orchestrates - runs autonomously to completion |
12
- | **Soft** | `af spawn --soft -p XXXX` | AI follows protocol - architect verifies compliance |
11
+ | **Strict** (default) | `af spawn XXXX` | Porch orchestrates - runs autonomously to completion |
12
+ | **Soft** | `af spawn XXXX --soft` | AI follows protocol - architect verifies compliance |
13
13
 
14
14
  ## Strict Mode (Default)
15
15
 
16
- Spawned with: `af spawn -p XXXX`
16
+ Spawned with: `af 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
 
@@ -69,7 +69,7 @@ You must:
69
69
 
70
70
  ## Soft Mode
71
71
 
72
- Spawned with: `af spawn --soft -p XXXX` or `af spawn --task "..."`
72
+ Spawned with: `af spawn XXXX --soft` or `af spawn --task "..."`
73
73
 
74
74
  In soft mode, you follow the protocol document yourself. The architect monitors your work and verifies you're adhering to the protocol correctly.
75
75
 
@@ -98,21 +98,21 @@ cat codev/protocols/spir/protocol.md
98
98
  Run 3-way consultations at checkpoints:
99
99
  ```bash
100
100
  # After writing spec
101
- consult --model gemini --type spec-review spec XXXX &
102
- consult --model codex --type spec-review spec XXXX &
103
- consult --model claude --type spec-review spec XXXX &
101
+ consult -m gemini --protocol spir --type spec &
102
+ consult -m codex --protocol spir --type spec &
103
+ consult -m claude --protocol spir --type spec &
104
104
  wait
105
105
 
106
106
  # After writing plan
107
- consult --model gemini --type plan-review plan XXXX &
108
- consult --model codex --type plan-review plan XXXX &
109
- consult --model claude --type plan-review plan XXXX &
107
+ consult -m gemini --protocol spir --type plan &
108
+ consult -m codex --protocol spir --type plan &
109
+ consult -m claude --protocol spir --type plan &
110
110
  wait
111
111
 
112
112
  # After implementation
113
- consult --model gemini --type impl-review pr N &
114
- consult --model codex --type impl-review pr N &
115
- consult --model claude --type impl-review pr N &
113
+ consult -m gemini --protocol spir --type pr &
114
+ consult -m codex --protocol spir --type pr &
115
+ consult -m claude --protocol spir --type pr &
116
116
  wait
117
117
  ```
118
118
 
@@ -164,7 +164,7 @@ If you encounter issues you can't resolve:
164
164
 
165
165
  Example:
166
166
  ```
167
- ## BLOCKED: Spec 0077
167
+ ## BLOCKED: Spec 77
168
168
  Can't find the auth helper mentioned in spec. Options:
169
169
  1. Create a new auth helper
170
170
  2. Use a third-party library
@@ -25,3 +25,9 @@ You are a consultant providing a second perspective to support decision-making.
25
25
  | Consultant | Provides perspective, supports decisions |
26
26
 
27
27
  You think alongside the other agents, helping them see blind spots. You have filesystem access — use it to verify your claims against the actual codebase.
28
+
29
+ ## File Access Rules
30
+
31
+ - **ALWAYS read files directly from disk** when reviewing specs, plans, or code. File paths are provided in the query — open and read them.
32
+ - **NEVER rely on `git diff` or `git log -p` as your primary review source.** Diffs are lossy, get truncated, and miss uncommitted work. Read the actual files instead.
33
+ - If you need to understand what changed, read the full file first, then optionally use `git diff` as a secondary reference.
@@ -30,9 +30,9 @@ This project uses **Codev** for AI-assisted development.
30
30
  ## File Naming Convention
31
31
 
32
32
  Use sequential numbering with descriptive names:
33
- - Specification: `codev/specs/0001-feature-name.md`
34
- - Plan: `codev/plans/0001-feature-name.md`
35
- - Review: `codev/reviews/0001-feature-name.md`
33
+ - Specification: `codev/specs/1-feature-name.md`
34
+ - Plan: `codev/plans/1-feature-name.md`
35
+ - Review: `codev/reviews/1-feature-name.md`
36
36
 
37
37
  ## Git Workflow
38
38
 
@@ -40,8 +40,8 @@ Use sequential numbering with descriptive names:
40
40
 
41
41
  Commit messages format:
42
42
  ```
43
- [Spec 0001] Description of change
44
- [Spec 0001][Phase: implement] feat: Add feature
43
+ [Spec 1] Description of change
44
+ [Spec 1][Phase: implement] feat: Add feature
45
45
  ```
46
46
 
47
47
  ## CLI Commands
@@ -50,7 +50,7 @@ Codev provides three CLI tools:
50
50
 
51
51
  - **codev**: Project management (init, adopt, update, doctor)
52
52
  - **af**: Agent Farm orchestration (start, spawn, status, cleanup)
53
- - **consult**: AI consultation for reviews (pr, spec, plan)
53
+ - **consult**: AI consultation for reviews (general, protocol, stats)
54
54
 
55
55
  For complete reference, see `codev/resources/commands/`:
56
56
  - `codev/resources/commands/overview.md` - Quick start
@@ -28,9 +28,9 @@ This project uses **Codev** for AI-assisted development.
28
28
  ## File Naming Convention
29
29
 
30
30
  Use sequential numbering with descriptive names:
31
- - Specification: `codev/specs/0001-feature-name.md`
32
- - Plan: `codev/plans/0001-feature-name.md`
33
- - Review: `codev/reviews/0001-feature-name.md`
31
+ - Specification: `codev/specs/1-feature-name.md`
32
+ - Plan: `codev/plans/1-feature-name.md`
33
+ - Review: `codev/reviews/1-feature-name.md`
34
34
 
35
35
  ## Git Workflow
36
36
 
@@ -38,8 +38,8 @@ Use sequential numbering with descriptive names:
38
38
 
39
39
  Commit messages format:
40
40
  ```
41
- [Spec 0001] Description of change
42
- [Spec 0001][Phase: implement] feat: Add feature
41
+ [Spec 1] Description of change
42
+ [Spec 1][Phase: implement] feat: Add feature
43
43
  ```
44
44
 
45
45
  ## CLI Commands
@@ -48,7 +48,7 @@ Codev provides three CLI tools:
48
48
 
49
49
  - **codev**: Project management (init, adopt, update, doctor)
50
50
  - **af**: Agent Farm orchestration (start, spawn, status, cleanup)
51
- - **consult**: AI consultation for reviews (pr, spec, plan)
51
+ - **consult**: AI consultation for reviews (general, protocol, stats)
52
52
 
53
53
  For complete reference, see `codev/resources/commands/`:
54
54
  - `codev/resources/commands/overview.md` - Quick start
@@ -76,10 +76,12 @@ A **role** defines who does what work and what tools/permissions they have.
76
76
  | **Consultant** | External reviewers providing second opinions on specs, plans, implementations |
77
77
 
78
78
  **Consultant Flavors** (via `--type`):
79
- - `spec-review` - Review specification completeness
80
- - `plan-review` - Review implementation plan feasibility
81
- - `impl-review` - Review code for spec adherence
82
- - `integration-review` - Review for architectural fit
79
+ - `spec` - Review specification completeness
80
+ - `plan` - Review implementation plan feasibility
81
+ - `impl` - Review code for spec adherence
82
+ - `pr` - Review pull request before merge
83
+ - `phase` - Phase-scoped review (builder only)
84
+ - `integration` - Review for architectural fit
83
85
 
84
86
  ### Context Hierarchy
85
87
 
@@ -102,7 +104,6 @@ Project management commands. Typically used by **humans** to set up and maintain
102
104
  | `codev doctor` | Check dependencies and configuration |
103
105
  | `codev update` | Update Codev framework |
104
106
  | `codev import` | Import specs from another project |
105
- | `codev tower` | Cross-project dashboard |
106
107
 
107
108
  ### agent-farm (af)
108
109
 
@@ -112,7 +113,7 @@ Architect-Builder orchestration. Used by both **humans and agents**—agents use
112
113
  |---------|-------------|
113
114
  | `af dash start` | Start dashboard (port 4200, 4300, etc.) |
114
115
  | `af dash stop` | Stop all processes |
115
- | `af spawn -p <id>` | Spawn a builder for project |
116
+ | `af spawn <id> --protocol spir` | Spawn a builder for project |
116
117
  | `af status` | Check status of all builders |
117
118
  | `af send <target> <msg>` | Send message (builder↔architect) |
118
119
  | `af cleanup -p <id>` | Clean up a builder worktree |
@@ -126,20 +127,23 @@ Multi-agent consultation. Used by both humans and agents—**mostly agents** dur
126
127
 
127
128
  | Command | Description |
128
129
  |---------|-------------|
129
- | `consult --model <model> spec <id>` | Review a specification |
130
- | `consult --model <model> plan <id>` | Review an implementation plan |
131
- | `consult --model <model> pr <id>` | Review a pull request |
132
- | `consult --model <model> general "<query>"` | General consultation |
130
+ | `consult -m <model> --prompt "text"` | General consultation |
131
+ | `consult -m <model> --protocol spir --type spec` | Review a specification |
132
+ | `consult -m <model> --protocol spir --type plan` | Review an implementation plan |
133
+ | `consult -m <model> --protocol spir --type pr` | Review a pull request |
134
+ | `consult stats` | View consultation statistics |
133
135
 
134
136
  **Models**: `gemini` (alias: `pro`), `codex` (alias: `gpt`), `claude` (alias: `opus`)
135
137
 
136
- **Review Types** (via `--type`):
138
+ **Review Types** (via `--type` with `--protocol`):
137
139
  | Type | Use Case |
138
140
  |------|----------|
139
- | `spec-review` | Review spec completeness and clarity |
140
- | `plan-review` | Review plan coverage and feasibility |
141
- | `impl-review` | Review implementation quality (Builder use) |
142
- | `integration-review` | Review architectural fit (Architect use) |
141
+ | `spec` | Review spec completeness and clarity |
142
+ | `plan` | Review plan coverage and feasibility |
143
+ | `impl` | Review implementation quality (Builder use) |
144
+ | `pr` | Review pull request before merge |
145
+ | `phase` | Phase-scoped review (Builder use) |
146
+ | `integration` | Review architectural fit (Architect use) |
143
147
 
144
148
  ---
145
149
 
@@ -161,9 +165,9 @@ Multi-agent consultation. Used by both humans and agents—**mostly agents** dur
161
165
 
162
166
  ```bash
163
167
  # Run 3-way review in parallel
164
- consult --model gemini pr <id> &
165
- consult --model codex pr <id> &
166
- consult --model claude pr <id> &
168
+ consult -m gemini --protocol spir --type pr &
169
+ consult -m codex --protocol spir --type pr &
170
+ consult -m claude --protocol spir --type pr &
167
171
  wait
168
172
  ```
169
173
 
@@ -18,7 +18,7 @@ conceived → specified → planned → implementing → implemented → committ
18
18
 
19
19
  **What happens next:** The Architect (AI) writes a specification. The human reviews and approves it.
20
20
 
21
- **Artifact:** Draft specification in `codev/specs/NNNN-name.md`
21
+ **Artifact:** Draft specification in `codev/specs/NNN-name.md`
22
22
 
23
23
  ---
24
24
 
@@ -30,7 +30,7 @@ conceived → specified → planned → implementing → implemented → committ
30
30
 
31
31
  **What happens next:** The Architect creates an implementation plan.
32
32
 
33
- **Artifact:** Approved specification in `codev/specs/NNNN-name.md`
33
+ **Artifact:** Approved specification in `codev/specs/NNN-name.md`
34
34
 
35
35
  ---
36
36
 
@@ -42,7 +42,7 @@ conceived → specified → planned → implementing → implemented → committ
42
42
 
43
43
  **What happens next:** A Builder is spawned to implement the plan.
44
44
 
45
- **Artifact:** Implementation plan in `codev/plans/NNNN-name.md`
45
+ **Artifact:** Implementation plan in `codev/plans/NNN-name.md`
46
46
 
47
47
  ---
48
48
 
@@ -90,7 +90,7 @@ conceived → specified → planned → implementing → implemented → committ
90
90
 
91
91
  **What happens next:** Nothing - the project is complete! A review document captures lessons learned.
92
92
 
93
- **Artifact:** Review document in `codev/reviews/NNNN-name.md`
93
+ **Artifact:** Review document in `codev/reviews/NNN-name.md`
94
94
 
95
95
  ---
96
96
 
@@ -100,7 +100,7 @@ Projects can also end up in terminal states if they won't be completed:
100
100
 
101
101
  ### Abandoned
102
102
 
103
- The project was canceled or rejected. It will not be implemented. The notes field in `projectlist.md` should explain why.
103
+ The project was canceled or rejected. It will not be implemented. Close the GitHub Issue with a comment explaining why.
104
104
 
105
105
  ### On-Hold
106
106
 
@@ -125,12 +125,12 @@ conceived → [HUMAN APPROVES] → specified → planned → implementing → im
125
125
 
126
126
  ## Managing Projects
127
127
 
128
- All project tracking happens in `codev/projectlist.md`. To manage projects:
128
+ Project tracking uses **GitHub Issues**. To manage projects:
129
129
 
130
- - **Add a project:** Tell the Architect what you want to build
131
- - **Update status:** Ask the Architect to update the project status
130
+ - **Add a project:** Create a GitHub Issue describing what you want to build
131
+ - **Update status:** Update issue labels and comments as work progresses
132
132
  - **Approve stages:** Review the spec/plan and tell the Architect to mark it approved
133
- - **View progress:** Check the Projects tab in the dashboard or read `projectlist.md`
133
+ - **View progress:** Check the Work tab in the dashboard or `gh issue list`
134
134
 
135
135
  ---
136
136
 
@@ -57,15 +57,15 @@ To use this template for architect-mediated reviews:
57
57
 
58
58
  ```bash
59
59
  # Fill out this template and save as overview.md, then:
60
- consult --model gemini pr 68 --context overview.md
60
+ consult -m gemini --type pr --context overview.md
61
61
 
62
62
  # Or pipe directly:
63
- cat overview.md | consult --model gemini pr 68 --context -
63
+ cat overview.md | consult -m gemini --type pr --context -
64
64
 
65
65
  # For 3-way parallel reviews:
66
- consult --model gemini pr 68 --context overview.md &
67
- consult --model codex pr 68 --context overview.md &
68
- consult --model claude pr 68 --context overview.md &
66
+ consult -m gemini --type pr --context overview.md &
67
+ consult -m codex --type pr --context overview.md &
68
+ consult -m claude --type pr --context overview.md &
69
69
  wait
70
70
  ```
71
71
 
@@ -988,17 +988,20 @@
988
988
  // Position dialog next to click
989
989
  const dialog = document.querySelector('.dialog');
990
990
  const rect = event.target.getBoundingClientRect();
991
- const dialogWidth = 700;
991
+ // Use actual rendered width (CSS max-width: 90vw constrains on mobile)
992
+ const dialogWidth = Math.min(700, window.innerWidth * 0.9);
992
993
  const dialogHeight = 350;
994
+ const margin = 10;
993
995
 
994
996
  // Position to the right of the line number, with some padding
995
997
  let left = rect.right + 10;
996
998
  let top = rect.top;
997
999
 
998
1000
  // Keep dialog in viewport
999
- if (left + dialogWidth > window.innerWidth) {
1000
- left = window.innerWidth - dialogWidth - 20;
1001
+ if (left + dialogWidth > window.innerWidth - margin) {
1002
+ left = (window.innerWidth - dialogWidth) / 2;
1001
1003
  }
1004
+ if (left < margin) left = margin;
1002
1005
  if (top + dialogHeight > window.innerHeight) {
1003
1006
  top = window.innerHeight - dialogHeight - 20;
1004
1007
  }
@@ -203,36 +203,6 @@
203
203
  overflow: hidden;
204
204
  }
205
205
 
206
- .instance.gate-pending {
207
- border-color: #f59e0b;
208
- animation: gate-pulse 2s infinite;
209
- }
210
-
211
- @keyframes gate-pulse {
212
- 0%, 100% { border-color: #f59e0b; }
213
- 50% { border-color: #d97706; }
214
- }
215
-
216
- .gate-indicator {
217
- padding: 8px 20px;
218
- background: rgba(245, 158, 11, 0.15);
219
- border-bottom: 1px solid var(--border);
220
- font-size: 14px;
221
- color: #f59e0b;
222
- display: flex;
223
- align-items: center;
224
- gap: 8px;
225
- }
226
-
227
- .gate-indicator .gate-name {
228
- font-weight: 600;
229
- }
230
-
231
- .gate-indicator .gate-builder {
232
- color: var(--text-muted);
233
- font-size: 12px;
234
- }
235
-
236
206
  .instance-header {
237
207
  display: flex;
238
208
  justify-content: space-between;
@@ -1217,7 +1187,6 @@
1217
1187
  function renderInstance(instance) {
1218
1188
  const statusClass = instance.running ? 'running' : 'stopped';
1219
1189
  const statusText = instance.running ? 'Running' : 'Stopped';
1220
- const hasGate = instance.gateStatus?.hasGate;
1221
1190
 
1222
1191
  // Render terminals list - always show Overview first, then individual terminals
1223
1192
  const terminals = instance.terminals || [];
@@ -1270,16 +1239,8 @@
1270
1239
  ? formatDate(instance.lastUsed)
1271
1240
  : 'Never';
1272
1241
 
1273
- const gateIndicatorHtml = hasGate ? `
1274
- <div class="gate-indicator">
1275
- <span>⏳</span>
1276
- <span class="gate-name">${escapeHtml(instance.gateStatus.gateName || 'approval')}</span>
1277
- ${instance.gateStatus.builderId ? `<span class="gate-builder">(${escapeHtml(instance.gateStatus.builderId)})</span>` : ''}
1278
- </div>
1279
- ` : '';
1280
-
1281
1242
  return `
1282
- <div class="instance ${hasGate ? 'gate-pending' : ''}" data-project="${escapeHtml(instance.workspacePath)}">
1243
+ <div class="instance" data-project="${escapeHtml(instance.workspacePath)}">
1283
1244
  <div class="instance-header">
1284
1245
  <div class="instance-title">
1285
1246
  <span class="instance-name">${escapeHtml(instance.workspaceName)}</span>
@@ -1297,7 +1258,6 @@
1297
1258
  `}
1298
1259
  </div>
1299
1260
  </div>
1300
- ${gateIndicatorHtml}
1301
1261
  <div class="instance-path-row">
1302
1262
  <span class="instance-path" title="${escapeHtml(instance.workspacePath)}">
1303
1263
  ${escapeHtml(instance.workspacePath)}