@cluesmith/codev 3.0.0-rc.7 → 3.0.0-rc.9
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.
- package/bin/af.js +2 -2
- package/bin/afx.js +8 -0
- package/bin/consult.js +2 -1
- package/bin/team.js +2 -1
- package/dashboard/dist/assets/{index-nr0cXxtf.css → index-Bs8I7N2s.css} +1 -1
- package/dashboard/dist/assets/{index-CTrlY11L.js → index-DleIqu7L.js} +32 -32
- package/dashboard/dist/assets/index-DleIqu7L.js.map +1 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/agent-farm/cli.js +12 -12
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts +4 -4
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +23 -12
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.js +8 -8
- package/dist/agent-farm/commands/attach.js.map +1 -1
- package/dist/agent-farm/commands/cron.js +1 -1
- package/dist/agent-farm/commands/cron.js.map +1 -1
- package/dist/agent-farm/commands/db.d.ts +3 -3
- package/dist/agent-farm/commands/db.js +4 -4
- package/dist/agent-farm/commands/db.js.map +1 -1
- package/dist/agent-farm/commands/open.js +2 -2
- package/dist/agent-farm/commands/open.js.map +1 -1
- package/dist/agent-farm/commands/rename.js +1 -1
- package/dist/agent-farm/commands/rename.js.map +1 -1
- package/dist/agent-farm/commands/send.js +3 -3
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/shell.js +3 -3
- package/dist/agent-farm/commands/shell.js.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.d.ts +1 -1
- package/dist/agent-farm/commands/spawn-roles.js +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +80 -13
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts +6 -6
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +42 -23
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +43 -2
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/team-update.d.ts +1 -1
- package/dist/agent-farm/commands/team-update.js +1 -1
- package/dist/agent-farm/commands/team.d.ts +1 -1
- package/dist/agent-farm/commands/team.js +1 -1
- package/dist/agent-farm/commands/tower-cloud.d.ts +2 -2
- package/dist/agent-farm/commands/tower-cloud.js +3 -3
- package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
- package/dist/agent-farm/commands/tower.js +2 -2
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/lib/cloud-config.js +2 -2
- package/dist/agent-farm/lib/cloud-config.js.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.js +1 -1
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/message-write.d.ts +24 -0
- package/dist/agent-farm/servers/message-write.d.ts.map +1 -0
- package/dist/agent-farm/servers/message-write.js +63 -0
- package/dist/agent-farm/servers/message-write.js.map +1 -0
- package/dist/agent-farm/servers/overview.d.ts +2 -0
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +2 -0
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/send-buffer.d.ts +4 -3
- package/dist/agent-farm/servers/send-buffer.d.ts.map +1 -1
- package/dist/agent-farm/servers/send-buffer.js +7 -4
- package/dist/agent-farm/servers/send-buffer.js.map +1 -1
- package/dist/agent-farm/servers/tower-cron-parser.js +1 -1
- package/dist/agent-farm/servers/tower-cron-parser.js.map +1 -1
- package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-cron.js +4 -5
- package/dist/agent-farm/servers/tower-cron.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +3 -3
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +9 -16
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +2 -2
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +47 -18
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.js +2 -2
- package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
- package/dist/agent-farm/servers/tower-utils.d.ts +9 -6
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +12 -6
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/types.d.ts +9 -0
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.d.ts +11 -0
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +21 -0
- package/dist/agent-farm/utils/config.js.map +1 -1
- package/dist/agent-farm/utils/harness.d.ts +85 -0
- package/dist/agent-farm/utils/harness.d.ts.map +1 -0
- package/dist/agent-farm/utils/harness.js +212 -0
- package/dist/agent-farm/utils/harness.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.js +2 -2
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts +6 -2
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +114 -131
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +54 -8
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/artifacts.d.ts +59 -0
- package/dist/commands/porch/artifacts.d.ts.map +1 -0
- package/dist/commands/porch/artifacts.js +358 -0
- package/dist/commands/porch/artifacts.js.map +1 -0
- package/dist/commands/porch/checks.d.ts +8 -1
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +98 -1
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/index.d.ts +8 -7
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +49 -45
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts.map +1 -1
- package/dist/commands/porch/next.js +18 -46
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/porch/notify.d.ts +2 -2
- package/dist/commands/porch/notify.js +5 -5
- package/dist/commands/porch/notify.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts +2 -1
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +19 -7
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/commands/porch/state.d.ts +5 -2
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +38 -6
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/lib/config.d.ts +14 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +7 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/forge-contracts.d.ts +6 -0
- package/dist/lib/forge-contracts.d.ts.map +1 -1
- package/dist/lib/forge-contracts.js.map +1 -1
- package/dist/lib/forge.js +1 -1
- package/dist/lib/forge.js.map +1 -1
- package/dist/lib/team-github.d.ts +2 -0
- package/dist/lib/team-github.d.ts.map +1 -1
- package/dist/lib/team-github.js +4 -4
- package/dist/lib/team-github.js.map +1 -1
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +2 -0
- package/dist/terminal/pty-manager.js.map +1 -1
- package/package.json +2 -1
- package/scripts/forge/github/issue-list.sh +2 -2
- package/scripts/forge/github/pr-list.sh +2 -2
- package/skeleton/.claude/skills/afx/SKILL.md +146 -0
- package/skeleton/.claude/skills/codev/SKILL.md +3 -3
- package/skeleton/DEPENDENCIES.md +1 -1
- package/skeleton/builders.md +4 -4
- package/skeleton/protocols/air/builder-prompt.md +6 -6
- package/skeleton/protocols/air/prompts/pr.md +2 -2
- package/skeleton/protocols/air/protocol.md +1 -1
- package/skeleton/protocols/aspir/builder-prompt.md +6 -6
- package/skeleton/protocols/aspir/protocol.json +1 -1
- package/skeleton/protocols/aspir/protocol.md +1 -1
- package/skeleton/protocols/bugfix/builder-prompt.md +6 -6
- package/skeleton/protocols/bugfix/prompts/pr.md +1 -1
- package/skeleton/protocols/maintain/protocol.md +1 -1
- package/skeleton/protocols/spike/builder-prompt.md +1 -1
- package/skeleton/protocols/spike/protocol.md +3 -3
- package/skeleton/protocols/spir/builder-prompt.md +5 -5
- package/skeleton/protocols/spir/protocol.json +1 -1
- package/skeleton/protocols/spir/protocol.md +2 -2
- package/skeleton/resources/commands/agent-farm.md +82 -82
- package/skeleton/resources/commands/codev.md +1 -1
- package/skeleton/resources/commands/consult.md +1 -1
- package/skeleton/resources/commands/overview.md +14 -14
- package/skeleton/resources/risk-triage.md +1 -1
- package/skeleton/resources/workflow-reference.md +14 -14
- package/skeleton/roles/architect.md +39 -39
- package/skeleton/roles/builder.md +13 -13
- package/skeleton/templates/AGENTS.md +2 -2
- package/skeleton/templates/CLAUDE.md +2 -2
- package/skeleton/templates/cheatsheet.md +10 -10
- package/templates/3d-viewer.html +16 -18
- package/templates/tower.html +1 -1
- package/dashboard/dist/assets/index-CTrlY11L.js.map +0 -1
- package/skeleton/.claude/skills/af/SKILL.md +0 -146
|
@@ -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 `
|
|
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) | `
|
|
20
|
-
| **Soft** | `
|
|
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 `
|
|
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. **`
|
|
32
|
+
3. **`afx spawn N --protocol <name>`** — `--protocol` is **REQUIRED** (spir, bugfix, tick, 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 (`
|
|
38
|
+
### Agent Farm CLI (`afx`)
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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:** `
|
|
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
|
-
|
|
98
|
+
afx spawn 42 --protocol spir
|
|
99
99
|
|
|
100
100
|
# With project title (if no spec exists yet)
|
|
101
|
-
|
|
101
|
+
afx spawn 42 --protocol spir -t "user-authentication"
|
|
102
102
|
|
|
103
103
|
# Or: Soft mode (builder follows protocol independently)
|
|
104
|
-
|
|
104
|
+
afx spawn 42 --protocol spir --soft
|
|
105
105
|
|
|
106
106
|
# For bugfixes
|
|
107
|
-
|
|
107
|
+
afx spawn 42 --protocol bugfix
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
### 2. Approving Gates (Strict Mode Only)
|
|
@@ -120,7 +120,7 @@ cat .builders/spir-0042-feature-name/codev/specs/0042-feature-name.md
|
|
|
120
120
|
(cd .builders/spir-0042-feature-name && porch approve 0042 spec-approval --a-human-explicitly-approved-this)
|
|
121
121
|
|
|
122
122
|
# IMPORTANT: Always message the builder after approving a gate
|
|
123
|
-
|
|
123
|
+
afx send 0042 "Spec approved. Continue to plan phase."
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
**plan-approval** - After builder writes the plan
|
|
@@ -132,13 +132,13 @@ cat .builders/spir-0042-feature-name/codev/plans/0042-feature-name.md
|
|
|
132
132
|
(cd .builders/spir-0042-feature-name && porch approve 0042 plan-approval --a-human-explicitly-approved-this)
|
|
133
133
|
|
|
134
134
|
# IMPORTANT: Always message the builder after approving a gate
|
|
135
|
-
|
|
135
|
+
afx send 0042 "Plan approved. Continue to implement phase."
|
|
136
136
|
```
|
|
137
137
|
|
|
138
138
|
### 3. Monitoring Progress
|
|
139
139
|
|
|
140
140
|
```bash
|
|
141
|
-
|
|
141
|
+
afx status # Overview of all builders
|
|
142
142
|
porch status 0042 # Detailed state for one project (strict mode)
|
|
143
143
|
```
|
|
144
144
|
|
|
@@ -182,7 +182,7 @@ Low-risk change. [Summary of what changed and why.]
|
|
|
182
182
|
---
|
|
183
183
|
Architect review"
|
|
184
184
|
|
|
185
|
-
|
|
185
|
+
afx send 0042 "PR approved, please merge"
|
|
186
186
|
```
|
|
187
187
|
|
|
188
188
|
**Medium risk** — single-model review:
|
|
@@ -194,7 +194,7 @@ gh pr comment 83 --body "## Architect Integration Review
|
|
|
194
194
|
...
|
|
195
195
|
Architect integration review"
|
|
196
196
|
|
|
197
|
-
|
|
197
|
+
afx send 0042 "PR approved, please merge"
|
|
198
198
|
```
|
|
199
199
|
|
|
200
200
|
**High risk** — full 3-way CMAP:
|
|
@@ -209,7 +209,7 @@ gh pr comment 83 --body "## Architect Integration Review
|
|
|
209
209
|
...
|
|
210
210
|
Architect integration review"
|
|
211
211
|
|
|
212
|
-
|
|
212
|
+
afx send 0042 "PR approved, please merge"
|
|
213
213
|
```
|
|
214
214
|
|
|
215
215
|
### 5. Cleanup
|
|
@@ -221,7 +221,7 @@ After builder merges and work is integrated:
|
|
|
221
221
|
gh issue close 42
|
|
222
222
|
|
|
223
223
|
# 2. Clean up the builder worktree
|
|
224
|
-
|
|
224
|
+
afx cleanup -p 0042
|
|
225
225
|
```
|
|
226
226
|
|
|
227
227
|
**Always close the GitHub Issue when the PR merges.** This is the architect's responsibility — builders don't close issues.
|
|
@@ -231,9 +231,9 @@ af cleanup -p 0042
|
|
|
231
231
|
### NEVER Do These:
|
|
232
232
|
1. **DO NOT merge PRs yourself** - Let builders merge their own PRs
|
|
233
233
|
2. **DO NOT commit directly to main** - All changes go through builder PRs
|
|
234
|
-
3. **DO NOT use `
|
|
235
|
-
4. **DO NOT run `
|
|
236
|
-
5. **DO NOT `cd` into a builder worktree** - All CLI tools (`
|
|
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/...`).
|
|
237
237
|
|
|
238
238
|
### ALWAYS Do These:
|
|
239
239
|
1. **Create GitHub Issues first** - Track projects as issues before spawning
|
|
@@ -261,9 +261,9 @@ Update status as projects progress:
|
|
|
261
261
|
|
|
262
262
|
When a builder reports blocked:
|
|
263
263
|
|
|
264
|
-
1. Check their status: `
|
|
264
|
+
1. Check their status: `afx status` or `porch status <id>`
|
|
265
265
|
2. Read their output in the terminal: `http://localhost:<port>`
|
|
266
|
-
3. Provide guidance via short `
|
|
266
|
+
3. Provide guidance via short `afx send` message
|
|
267
267
|
4. Or answer their question directly if they asked one
|
|
268
268
|
|
|
269
269
|
## Release Management
|
|
@@ -295,10 +295,10 @@ Before approving implementations with UX requirements:
|
|
|
295
295
|
|
|
296
296
|
| Task | Command |
|
|
297
297
|
|------|---------|
|
|
298
|
-
| Start feature (strict, default) | `
|
|
299
|
-
| Start feature (soft) | `
|
|
300
|
-
| Start bugfix | `
|
|
301
|
-
| Check all builders | `
|
|
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` |
|
|
302
302
|
| Check one project | `porch status <id>` |
|
|
303
303
|
| Approve spec | `porch approve <id> spec-approval` |
|
|
304
304
|
| Approve plan | `porch approve <id> plan-approval` |
|
|
@@ -306,5 +306,5 @@ Before approving implementations with UX requirements:
|
|
|
306
306
|
| Assess PR risk | `gh pr diff --stat N` |
|
|
307
307
|
| Integration review (medium) | `consult -m claude --type integration pr N` |
|
|
308
308
|
| Integration review (high) | 3-way CMAP (see Section 4) |
|
|
309
|
-
| Message builder | `
|
|
310
|
-
| Cleanup builder | `
|
|
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) | `
|
|
12
|
-
| **Soft** | `
|
|
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: `
|
|
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: `
|
|
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
|
|
|
@@ -129,27 +129,27 @@ wait
|
|
|
129
129
|
|
|
130
130
|
If you're blocked or need help:
|
|
131
131
|
```bash
|
|
132
|
-
|
|
132
|
+
afx send architect "Question about the spec..."
|
|
133
133
|
```
|
|
134
134
|
|
|
135
135
|
### Checking Status
|
|
136
136
|
|
|
137
137
|
```bash
|
|
138
138
|
porch status # (strict mode) Your project status
|
|
139
|
-
|
|
139
|
+
afx status # All builders
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
## Notifications
|
|
143
143
|
|
|
144
|
-
**ALWAYS notify the architect** via `
|
|
144
|
+
**ALWAYS notify the architect** via `afx send` at these key moments:
|
|
145
145
|
|
|
146
146
|
| When | What to send |
|
|
147
147
|
|------|-------------|
|
|
148
|
-
| **Gate reached** | `
|
|
149
|
-
| **PR ready** | `
|
|
150
|
-
| **PR merged** | `
|
|
151
|
-
| **Blocked/stuck** | `
|
|
152
|
-
| **Escalation needed** | `
|
|
148
|
+
| **Gate reached** | `afx send architect "Project XXXX: <gate-name> ready for approval"` |
|
|
149
|
+
| **PR ready** | `afx send architect "PR #N ready for review"` |
|
|
150
|
+
| **PR merged** | `afx send architect "Project XXXX complete. PR merged. Ready for cleanup."` |
|
|
151
|
+
| **Blocked/stuck** | `afx send architect "Blocked on X — need guidance"` |
|
|
152
|
+
| **Escalation needed** | `afx send architect "Issue too complex — recommend escalating to SPIR/TICK"` |
|
|
153
153
|
|
|
154
154
|
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
155
|
|
|
@@ -158,7 +158,7 @@ The architect may be working on other tasks and won't know you need attention un
|
|
|
158
158
|
If you encounter issues you can't resolve:
|
|
159
159
|
|
|
160
160
|
1. **Output a clear blocker message** describing the problem and options
|
|
161
|
-
2. **Use `
|
|
161
|
+
2. **Use `afx send architect "..."` to notify the Architect**
|
|
162
162
|
3. **Wait for guidance** before proceeding
|
|
163
163
|
|
|
164
164
|
Example:
|
|
@@ -50,7 +50,7 @@ Commit messages format:
|
|
|
50
50
|
Codev provides three CLI tools:
|
|
51
51
|
|
|
52
52
|
- **codev**: Project management (init, adopt, update, doctor)
|
|
53
|
-
- **
|
|
53
|
+
- **afx**: Agent Farm orchestration (start, spawn, status, cleanup)
|
|
54
54
|
- **consult**: AI consultation for reviews (general, protocol, stats)
|
|
55
55
|
|
|
56
56
|
For complete reference, see `codev/resources/commands/`:
|
|
@@ -61,7 +61,7 @@ For complete reference, see `codev/resources/commands/`:
|
|
|
61
61
|
|
|
62
62
|
## Configuration
|
|
63
63
|
|
|
64
|
-
Agent Farm is configured via
|
|
64
|
+
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
65
|
|
|
66
66
|
```json
|
|
67
67
|
{
|
|
@@ -48,7 +48,7 @@ Commit messages format:
|
|
|
48
48
|
Codev provides three CLI tools:
|
|
49
49
|
|
|
50
50
|
- **codev**: Project management (init, adopt, update, doctor)
|
|
51
|
-
- **
|
|
51
|
+
- **afx**: Agent Farm orchestration (start, spawn, status, cleanup)
|
|
52
52
|
- **consult**: AI consultation for reviews (general, protocol, stats)
|
|
53
53
|
|
|
54
54
|
For complete reference, see `codev/resources/commands/`:
|
|
@@ -59,7 +59,7 @@ For complete reference, see `codev/resources/commands/`:
|
|
|
59
59
|
|
|
60
60
|
## Configuration
|
|
61
61
|
|
|
62
|
-
Agent Farm is configured via
|
|
62
|
+
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
63
|
|
|
64
64
|
```json
|
|
65
65
|
{
|
|
@@ -105,21 +105,21 @@ Project management commands. Typically used by **humans** to set up and maintain
|
|
|
105
105
|
| `codev update` | Update Codev framework |
|
|
106
106
|
| `codev import` | Import specs from another project |
|
|
107
107
|
|
|
108
|
-
### agent-farm (
|
|
108
|
+
### agent-farm (afx)
|
|
109
109
|
|
|
110
110
|
Architect-Builder orchestration. Used by both **humans and agents**—agents use it more frequently.
|
|
111
111
|
|
|
112
112
|
| Command | Description |
|
|
113
113
|
|---------|-------------|
|
|
114
|
-
| `
|
|
115
|
-
| `
|
|
116
|
-
| `
|
|
117
|
-
| `
|
|
118
|
-
| `
|
|
119
|
-
| `
|
|
120
|
-
| `
|
|
121
|
-
| `
|
|
122
|
-
| `
|
|
114
|
+
| `afx workspace start` | Start workspace (port 4200, 4300, etc.) |
|
|
115
|
+
| `afx workspace stop` | Stop all processes |
|
|
116
|
+
| `afx spawn <id> --protocol spir` | Spawn a builder for project |
|
|
117
|
+
| `afx status` | Check status of all builders |
|
|
118
|
+
| `afx send <target> <msg>` | Send message (builder↔architect) |
|
|
119
|
+
| `afx cleanup -p <id>` | Clean up a builder worktree |
|
|
120
|
+
| `afx shell` | Spawn a utility shell |
|
|
121
|
+
| `afx open <file>` | Open file in workspace viewer |
|
|
122
|
+
| `afx tower start` | Start cross-project tower |
|
|
123
123
|
|
|
124
124
|
### consult
|
|
125
125
|
|
package/templates/3d-viewer.html
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
body {
|
|
15
|
-
background: #
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
385
|
-
geometry.translate(0, 0, -minZ);
|
|
385
|
+
geometry.translate(0, 0, -geometry.boundingBox.min.z);
|
|
386
386
|
|
|
387
|
-
//
|
|
388
|
-
geometry.
|
|
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:
|
|
394
|
-
shininess:
|
|
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
|
-
|
|
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
|
-
|
|
782
|
-
geometry.translate(0, 0, -minZ);
|
|
781
|
+
geometry.translate(0, 0, -geometry.boundingBox.min.z);
|
|
783
782
|
|
|
784
|
-
//
|
|
785
|
-
geometry.
|
|
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:
|
|
791
|
-
shininess:
|
|
792
|
-
flatShading: false
|
|
789
|
+
specular: 0x222222,
|
|
790
|
+
shininess: 60
|
|
793
791
|
});
|
|
794
792
|
|
|
795
793
|
model = new THREE.Mesh(geometry, material);
|
package/templates/tower.html
CHANGED
|
@@ -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>
|
|
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 {
|