@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.
- package/dashboard/dist/assets/index-BblS3DWL.js +135 -0
- package/dashboard/dist/assets/index-BblS3DWL.js.map +1 -0
- package/dashboard/dist/assets/index-Cr9PyjqX.css +32 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +54 -61
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts +5 -5
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +37 -20
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts +19 -0
- package/dist/agent-farm/commands/attach.d.ts.map +1 -1
- package/dist/agent-farm/commands/attach.js +169 -29
- package/dist/agent-farm/commands/attach.js.map +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts +12 -0
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +108 -7
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +22 -2
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +97 -178
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.d.ts +3 -9
- package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.js +14 -53
- package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +11 -18
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +35 -22
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts +8 -6
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +207 -89
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/start.d.ts.map +1 -1
- package/dist/agent-farm/commands/start.js +2 -6
- package/dist/agent-farm/commands/start.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +5 -35
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/stop.d.ts.map +1 -1
- package/dist/agent-farm/commands/stop.js +2 -6
- package/dist/agent-farm/commands/stop.js.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.d.ts +2 -9
- package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.js +12 -47
- package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +6 -23
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +52 -2
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/schema.d.ts +1 -1
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +1 -1
- package/dist/agent-farm/lib/cloud-config.d.ts +1 -0
- package/dist/agent-farm/lib/cloud-config.d.ts.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/tower-client.d.ts +65 -6
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tower-client.js +57 -2
- package/dist/agent-farm/lib/tower-client.js.map +1 -1
- package/dist/agent-farm/servers/overview.d.ts +157 -0
- package/dist/agent-farm/servers/overview.d.ts.map +1 -0
- package/dist/agent-farm/servers/overview.js +625 -0
- package/dist/agent-farm/servers/overview.js.map +1 -0
- package/dist/agent-farm/servers/tower-instances.d.ts +1 -3
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +12 -14
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-messages.d.ts +87 -0
- package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -0
- package/dist/agent-farm/servers/tower-messages.js +202 -0
- package/dist/agent-farm/servers/tower-messages.js.map +1 -0
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +182 -34
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +30 -6
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +9 -3
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +129 -84
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.js +3 -19
- package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
- package/dist/agent-farm/servers/tower-types.d.ts +0 -2
- package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.js +27 -5
- package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
- package/dist/agent-farm/types.d.ts +4 -5
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/agent-names.d.ts +85 -0
- package/dist/agent-farm/utils/agent-names.d.ts.map +1 -0
- package/dist/agent-farm/utils/agent-names.js +140 -0
- package/dist/agent-farm/utils/agent-names.js.map +1 -0
- package/dist/agent-farm/utils/display.d.ts +8 -0
- package/dist/agent-farm/utils/display.d.ts.map +1 -0
- package/dist/agent-farm/utils/display.js +26 -0
- package/dist/agent-farm/utils/display.js.map +1 -0
- package/dist/agent-farm/utils/message-format.d.ts +17 -0
- package/dist/agent-farm/utils/message-format.d.ts.map +1 -0
- package/dist/agent-farm/utils/message-format.js +41 -0
- package/dist/agent-farm/utils/message-format.js.map +1 -0
- package/dist/agent-farm/utils/notifications.d.ts.map +1 -1
- package/dist/agent-farm/utils/notifications.js +7 -16
- package/dist/agent-farm/utils/notifications.js.map +1 -1
- package/dist/agent-farm/utils/server-utils.d.ts +4 -0
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +20 -0
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/agent-farm/utils/shell.d.ts +5 -0
- package/dist/agent-farm/utils/shell.d.ts.map +1 -1
- package/dist/agent-farm/utils/shell.js +15 -11
- package/dist/agent-farm/utils/shell.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +46 -15
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +1 -13
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts +34 -9
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +617 -263
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/consult/metrics.d.ts +90 -0
- package/dist/commands/consult/metrics.d.ts.map +1 -0
- package/dist/commands/consult/metrics.js +203 -0
- package/dist/commands/consult/metrics.js.map +1 -0
- package/dist/commands/consult/stats.d.ts +18 -0
- package/dist/commands/consult/stats.d.ts.map +1 -0
- package/dist/commands/consult/stats.js +150 -0
- package/dist/commands/consult/stats.js.map +1 -0
- package/dist/commands/consult/usage-extractor.d.ts +41 -0
- package/dist/commands/consult/usage-extractor.d.ts.map +1 -0
- package/dist/commands/consult/usage-extractor.js +122 -0
- package/dist/commands/consult/usage-extractor.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +5 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -13
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +13 -12
- 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 +57 -77
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/porch/plan.d.ts.map +1 -1
- package/dist/commands/porch/plan.js +17 -2
- package/dist/commands/porch/plan.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts +10 -1
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +56 -29
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/commands/porch/protocol.js +2 -2
- package/dist/commands/porch/state.d.ts +13 -0
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +49 -2
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +0 -10
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/github.d.ts +82 -0
- package/dist/lib/github.d.ts.map +1 -0
- package/dist/lib/github.js +181 -0
- package/dist/lib/github.js.map +1 -0
- package/dist/lib/scaffold.d.ts +0 -21
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +0 -57
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/terminal/index.d.ts +16 -0
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +14 -0
- package/dist/terminal/index.js.map +1 -1
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +8 -5
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.js +4 -4
- package/dist/terminal/pty-session.js.map +1 -1
- package/dist/terminal/session-manager.d.ts +64 -0
- package/dist/terminal/session-manager.d.ts.map +1 -1
- package/dist/terminal/session-manager.js +299 -10
- package/dist/terminal/session-manager.js.map +1 -1
- package/dist/terminal/shellper-client.d.ts +2 -1
- package/dist/terminal/shellper-client.d.ts.map +1 -1
- package/dist/terminal/shellper-client.js +4 -2
- package/dist/terminal/shellper-client.js.map +1 -1
- package/dist/terminal/shellper-main.js +33 -4
- package/dist/terminal/shellper-main.js.map +1 -1
- package/dist/terminal/shellper-process.d.ts +24 -7
- package/dist/terminal/shellper-process.d.ts.map +1 -1
- package/dist/terminal/shellper-process.js +139 -36
- package/dist/terminal/shellper-process.js.map +1 -1
- package/dist/terminal/shellper-protocol.d.ts +1 -0
- package/dist/terminal/shellper-protocol.d.ts.map +1 -1
- package/dist/terminal/shellper-protocol.js.map +1 -1
- package/package.json +4 -1
- package/skeleton/.claude/skills/af/SKILL.md +10 -10
- package/skeleton/.claude/skills/consult/SKILL.md +55 -38
- package/skeleton/.claude/skills/porch/SKILL.md +53 -0
- package/skeleton/DEPENDENCIES.md +2 -2
- package/skeleton/builders.md +8 -19
- package/skeleton/maintain/.gitkeep +1 -1
- package/skeleton/porch/prompts/specify.md +1 -1
- package/skeleton/protocol-schema.json +1 -1
- package/skeleton/protocols/bugfix/prompts/pr.md +18 -7
- package/skeleton/protocols/bugfix/protocol.json +1 -1
- package/skeleton/protocols/experiment/protocol.md +17 -17
- package/skeleton/protocols/maintain/consult-types/impl-review.md +72 -0
- package/skeleton/protocols/maintain/consult-types/pr-review.md +72 -0
- package/skeleton/protocols/maintain/prompts/audit.md +2 -2
- package/skeleton/protocols/maintain/prompts/sync.md +1 -1
- package/skeleton/protocols/maintain/prompts/verify.md +1 -1
- package/skeleton/protocols/maintain/protocol.json +4 -4
- package/skeleton/protocols/maintain/protocol.md +11 -12
- package/skeleton/protocols/maintain/templates/maintenance-run.md +2 -2
- package/skeleton/protocols/protocol-schema.json +1 -1
- package/skeleton/protocols/spir/consult-types/impl-review.md +72 -0
- package/skeleton/protocols/spir/consult-types/phase-review.md +72 -0
- package/skeleton/protocols/spir/consult-types/pr-review.md +72 -0
- package/skeleton/protocols/spir/prompts/plan.md +4 -4
- package/skeleton/protocols/spir/prompts/review.md +8 -8
- package/skeleton/protocols/spir/prompts/specify.md +6 -6
- package/skeleton/protocols/spir/protocol.json +16 -16
- package/skeleton/protocols/spir/protocol.md +8 -8
- package/skeleton/protocols/spir/templates/review.md +2 -2
- package/skeleton/protocols/tick/consult-types/impl-review.md +72 -0
- package/skeleton/protocols/tick/consult-types/plan-review.md +59 -0
- package/skeleton/protocols/tick/consult-types/pr-review.md +72 -0
- package/skeleton/protocols/tick/consult-types/spec-review.md +55 -0
- package/skeleton/protocols/tick/protocol.json +2 -7
- package/skeleton/protocols/tick/protocol.md +31 -31
- package/skeleton/resources/commands/agent-farm.md +21 -19
- package/skeleton/resources/commands/codev.md +0 -36
- package/skeleton/resources/commands/consult.md +88 -234
- package/skeleton/resources/commands/overview.md +6 -7
- package/skeleton/resources/spikes.md +3 -3
- package/skeleton/resources/workflow-reference.md +28 -28
- package/skeleton/roles/architect.md +34 -38
- package/skeleton/roles/builder.md +14 -14
- package/skeleton/roles/consultant.md +6 -0
- package/skeleton/templates/AGENTS.md +6 -6
- package/skeleton/templates/CLAUDE.md +6 -6
- package/skeleton/templates/cheatsheet.md +22 -18
- package/skeleton/templates/lifecycle.md +9 -9
- package/skeleton/templates/pr-overview.md +5 -5
- package/templates/open.html +6 -3
- package/templates/tower.html +1 -41
- package/dashboard/dist/assets/index-4n9zpWLY.css +0 -32
- package/dashboard/dist/assets/index-UsH9ixz1.js +0 -136
- package/dashboard/dist/assets/index-UsH9ixz1.js.map +0 -1
- package/dist/agent-farm/commands/consult.d.ts +0 -15
- package/dist/agent-farm/commands/consult.d.ts.map +0 -1
- package/dist/agent-farm/commands/consult.js +0 -39
- package/dist/agent-farm/commands/consult.js.map +0 -1
- package/dist/agent-farm/utils/gate-status.d.ts +0 -16
- package/dist/agent-farm/utils/gate-status.d.ts.map +0 -1
- package/dist/agent-farm/utils/gate-status.js +0 -79
- package/dist/agent-farm/utils/gate-status.js.map +0 -1
- package/skeleton/templates/projectlist-archive.md +0 -21
- package/skeleton/templates/projectlist.md +0 -147
- /package/skeleton/{consult-types → protocols/bugfix/consult-types}/impl-review.md +0 -0
- /package/skeleton/{consult-types/pr-ready.md → protocols/bugfix/consult-types/pr-review.md} +0 -0
- /package/skeleton/{consult-types → protocols/spir/consult-types}/plan-review.md +0 -0
- /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
|
|
20
|
-
| **Soft** | `af spawn --soft
|
|
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
|
|
32
|
-
af spawn
|
|
33
|
-
af spawn
|
|
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
|
|
37
|
+
af cleanup --project 1 # Remove completed builder
|
|
39
38
|
af dash start/stop # Dashboard management
|
|
40
|
-
af send
|
|
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
|
|
49
|
-
porch approve
|
|
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
|
|
58
|
-
consult
|
|
59
|
-
consult
|
|
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. **
|
|
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.
|
|
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
|
|
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
|
|
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/
|
|
94
|
+
cat worktrees/spir_42_user-authentication/codev/specs/42-user-authentication.md
|
|
99
95
|
|
|
100
96
|
# Approve if satisfactory
|
|
101
|
-
porch approve
|
|
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/
|
|
103
|
+
cat worktrees/spir_42_user-authentication/codev/plans/42-user-authentication.md
|
|
108
104
|
|
|
109
105
|
# Approve if satisfactory
|
|
110
|
-
porch approve
|
|
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
|
|
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
|
|
127
|
-
consult
|
|
128
|
-
consult
|
|
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
|
|
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
|
|
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. **
|
|
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
|
-
|
|
164
|
+
**GitHub Issues are the canonical source of truth for project tracking.**
|
|
169
165
|
|
|
170
166
|
```bash
|
|
171
167
|
# See what needs work
|
|
172
|
-
|
|
168
|
+
gh issue list --label "priority:high"
|
|
173
169
|
|
|
174
|
-
#
|
|
175
|
-
|
|
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
|
|
220
|
-
| Start feature (soft) | `af spawn --soft
|
|
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
|
|
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
|
|
12
|
-
| **Soft** | `af spawn --soft
|
|
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
|
|
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
|
|
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
|
|
102
|
-
consult
|
|
103
|
-
consult
|
|
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
|
|
108
|
-
consult
|
|
109
|
-
consult
|
|
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
|
|
114
|
-
consult
|
|
115
|
-
consult
|
|
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
|
|
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/
|
|
34
|
-
- Plan: `codev/plans/
|
|
35
|
-
- Review: `codev/reviews/
|
|
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
|
|
44
|
-
[Spec
|
|
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 (
|
|
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/
|
|
32
|
-
- Plan: `codev/plans/
|
|
33
|
-
- Review: `codev/reviews/
|
|
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
|
|
42
|
-
[Spec
|
|
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 (
|
|
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
|
|
80
|
-
- `plan
|
|
81
|
-
- `impl
|
|
82
|
-
- `
|
|
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
|
|
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
|
|
130
|
-
| `consult
|
|
131
|
-
| `consult
|
|
132
|
-
| `consult
|
|
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
|
|
140
|
-
| `plan
|
|
141
|
-
| `impl
|
|
142
|
-
| `
|
|
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
|
|
165
|
-
consult
|
|
166
|
-
consult
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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.
|
|
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
|
-
|
|
128
|
+
Project tracking uses **GitHub Issues**. To manage projects:
|
|
129
129
|
|
|
130
|
-
- **Add a project:**
|
|
131
|
-
- **Update 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
|
|
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
|
|
60
|
+
consult -m gemini --type pr --context overview.md
|
|
61
61
|
|
|
62
62
|
# Or pipe directly:
|
|
63
|
-
cat overview.md | consult
|
|
63
|
+
cat overview.md | consult -m gemini --type pr --context -
|
|
64
64
|
|
|
65
65
|
# For 3-way parallel reviews:
|
|
66
|
-
consult
|
|
67
|
-
consult
|
|
68
|
-
consult
|
|
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
|
|
package/templates/open.html
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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
|
}
|
package/templates/tower.html
CHANGED
|
@@ -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
|
|
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)}
|