aether-colony 5.1.0 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.aether/aether-utils.sh +157 -42
- package/.aether/agents/aether-ambassador.md +140 -0
- package/.aether/agents/aether-archaeologist.md +108 -0
- package/.aether/agents/aether-architect.md +133 -0
- package/.aether/agents/aether-auditor.md +144 -0
- package/.aether/agents/aether-builder.md +184 -0
- package/.aether/agents/aether-chaos.md +115 -0
- package/.aether/agents/aether-chronicler.md +122 -0
- package/.aether/agents/aether-gatekeeper.md +116 -0
- package/.aether/agents/aether-includer.md +117 -0
- package/.aether/agents/aether-keeper.md +177 -0
- package/.aether/agents/aether-measurer.md +128 -0
- package/.aether/agents/aether-oracle.md +137 -0
- package/.aether/agents/aether-probe.md +133 -0
- package/.aether/agents/aether-queen.md +286 -0
- package/.aether/agents/aether-route-setter.md +130 -0
- package/.aether/agents/aether-sage.md +106 -0
- package/.aether/agents/aether-scout.md +101 -0
- package/.aether/agents/aether-surveyor-disciplines.md +391 -0
- package/.aether/agents/aether-surveyor-nest.md +329 -0
- package/.aether/agents/aether-surveyor-pathogens.md +264 -0
- package/.aether/agents/aether-surveyor-provisions.md +334 -0
- package/.aether/agents/aether-tracker.md +137 -0
- package/.aether/agents/aether-watcher.md +174 -0
- package/.aether/agents/aether-weaver.md +130 -0
- package/.aether/commands/claude/archaeology.md +334 -0
- package/.aether/commands/claude/build.md +65 -0
- package/.aether/commands/claude/chaos.md +336 -0
- package/.aether/commands/claude/colonize.md +259 -0
- package/.aether/commands/claude/continue.md +60 -0
- package/.aether/commands/claude/council.md +507 -0
- package/.aether/commands/claude/data-clean.md +81 -0
- package/.aether/commands/claude/dream.md +268 -0
- package/.aether/commands/claude/entomb.md +498 -0
- package/.aether/commands/claude/export-signals.md +57 -0
- package/.aether/commands/claude/feedback.md +96 -0
- package/.aether/commands/claude/flag.md +151 -0
- package/.aether/commands/claude/flags.md +169 -0
- package/.aether/commands/claude/focus.md +76 -0
- package/.aether/commands/claude/help.md +154 -0
- package/.aether/commands/claude/history.md +140 -0
- package/.aether/commands/claude/import-signals.md +71 -0
- package/.aether/commands/claude/init.md +505 -0
- package/.aether/commands/claude/insert-phase.md +105 -0
- package/.aether/commands/claude/interpret.md +278 -0
- package/.aether/commands/claude/lay-eggs.md +210 -0
- package/.aether/commands/claude/maturity.md +113 -0
- package/.aether/commands/claude/memory-details.md +77 -0
- package/.aether/commands/claude/migrate-state.md +171 -0
- package/.aether/commands/claude/oracle.md +642 -0
- package/.aether/commands/claude/organize.md +232 -0
- package/.aether/commands/claude/patrol.md +620 -0
- package/.aether/commands/claude/pause-colony.md +233 -0
- package/.aether/commands/claude/phase.md +115 -0
- package/.aether/commands/claude/pheromones.md +156 -0
- package/.aether/commands/claude/plan.md +693 -0
- package/.aether/commands/claude/preferences.md +65 -0
- package/.aether/commands/claude/quick.md +100 -0
- package/.aether/commands/claude/redirect.md +76 -0
- package/.aether/commands/claude/resume-colony.md +197 -0
- package/.aether/commands/claude/resume.md +388 -0
- package/.aether/commands/claude/run.md +231 -0
- package/.aether/commands/claude/seal.md +774 -0
- package/.aether/commands/claude/skill-create.md +286 -0
- package/.aether/commands/claude/status.md +410 -0
- package/.aether/commands/claude/swarm.md +349 -0
- package/.aether/commands/claude/tunnels.md +426 -0
- package/.aether/commands/claude/update.md +132 -0
- package/.aether/commands/claude/verify-castes.md +143 -0
- package/.aether/commands/claude/watch.md +239 -0
- package/.aether/commands/colonize.yaml +4 -0
- package/.aether/commands/council.yaml +205 -0
- package/.aether/commands/init.yaml +46 -13
- package/.aether/commands/insert-phase.yaml +4 -0
- package/.aether/commands/opencode/archaeology.md +331 -0
- package/.aether/commands/opencode/build.md +1168 -0
- package/.aether/commands/opencode/chaos.md +329 -0
- package/.aether/commands/opencode/colonize.md +195 -0
- package/.aether/commands/opencode/continue.md +1436 -0
- package/.aether/commands/opencode/council.md +437 -0
- package/.aether/commands/opencode/data-clean.md +77 -0
- package/.aether/commands/opencode/dream.md +260 -0
- package/.aether/commands/opencode/entomb.md +377 -0
- package/.aether/commands/opencode/export-signals.md +54 -0
- package/.aether/commands/opencode/feedback.md +99 -0
- package/.aether/commands/opencode/flag.md +149 -0
- package/.aether/commands/opencode/flags.md +167 -0
- package/.aether/commands/opencode/focus.md +73 -0
- package/.aether/commands/opencode/help.md +157 -0
- package/.aether/commands/opencode/history.md +136 -0
- package/.aether/commands/opencode/import-signals.md +68 -0
- package/.aether/commands/opencode/init.md +518 -0
- package/.aether/commands/opencode/insert-phase.md +111 -0
- package/.aether/commands/opencode/interpret.md +272 -0
- package/.aether/commands/opencode/lay-eggs.md +213 -0
- package/.aether/commands/opencode/maturity.md +108 -0
- package/.aether/commands/opencode/memory-details.md +83 -0
- package/.aether/commands/opencode/migrate-state.md +165 -0
- package/.aether/commands/opencode/oracle.md +593 -0
- package/.aether/commands/opencode/organize.md +226 -0
- package/.aether/commands/opencode/patrol.md +626 -0
- package/.aether/commands/opencode/pause-colony.md +203 -0
- package/.aether/commands/opencode/phase.md +113 -0
- package/.aether/commands/opencode/pheromones.md +162 -0
- package/.aether/commands/opencode/plan.md +684 -0
- package/.aether/commands/opencode/preferences.md +71 -0
- package/.aether/commands/opencode/quick.md +91 -0
- package/.aether/commands/opencode/redirect.md +84 -0
- package/.aether/commands/opencode/resume-colony.md +190 -0
- package/.aether/commands/opencode/resume.md +394 -0
- package/.aether/commands/opencode/run.md +237 -0
- package/.aether/commands/opencode/seal.md +452 -0
- package/.aether/commands/opencode/skill-create.md +63 -0
- package/.aether/commands/opencode/status.md +307 -0
- package/.aether/commands/opencode/swarm.md +15 -0
- package/.aether/commands/opencode/tunnels.md +400 -0
- package/.aether/commands/opencode/update.md +127 -0
- package/.aether/commands/opencode/verify-castes.md +139 -0
- package/.aether/commands/opencode/watch.md +227 -0
- package/.aether/commands/plan.yaml +53 -2
- package/.aether/commands/quick.yaml +104 -0
- package/.aether/commands/resume-colony.yaml +6 -4
- package/.aether/commands/resume.yaml +9 -0
- package/.aether/commands/run.yaml +37 -1
- package/.aether/commands/seal.yaml +9 -0
- package/.aether/commands/status.yaml +45 -1
- package/.aether/docs/command-playbooks/build-full.md +3 -2
- package/.aether/docs/command-playbooks/build-prep.md +12 -4
- package/.aether/docs/command-playbooks/build-verify.md +51 -0
- package/.aether/docs/command-playbooks/continue-advance.md +115 -6
- package/.aether/docs/command-playbooks/continue-full.md +1 -0
- package/.aether/docs/command-playbooks/continue-verify.md +33 -0
- package/.aether/utils/clash-detect.sh +239 -0
- package/.aether/utils/council.sh +425 -0
- package/.aether/utils/error-handler.sh +3 -3
- package/.aether/utils/flag.sh +23 -12
- package/.aether/utils/hive.sh +2 -2
- package/.aether/utils/hooks/clash-pre-tool-use.js +99 -0
- package/.aether/utils/immune.sh +508 -0
- package/.aether/utils/learning.sh +2 -2
- package/.aether/utils/merge-driver-lockfile.sh +35 -0
- package/.aether/utils/midden.sh +712 -0
- package/.aether/utils/pheromone.sh +1376 -108
- package/.aether/utils/queen.sh +31 -21
- package/.aether/utils/session.sh +264 -0
- package/.aether/utils/spawn-tree.sh +7 -7
- package/.aether/utils/spawn.sh +2 -2
- package/.aether/utils/state-api.sh +216 -5
- package/.aether/utils/swarm.sh +1 -1
- package/.aether/utils/worktree.sh +189 -0
- package/.claude/commands/ant/colonize.md +2 -0
- package/.claude/commands/ant/council.md +205 -0
- package/.claude/commands/ant/init.md +53 -14
- package/.claude/commands/ant/insert-phase.md +4 -0
- package/.claude/commands/ant/plan.md +27 -1
- package/.claude/commands/ant/quick.md +100 -0
- package/.claude/commands/ant/resume-colony.md +3 -2
- package/.claude/commands/ant/resume.md +9 -0
- package/.claude/commands/ant/run.md +37 -1
- package/.claude/commands/ant/seal.md +9 -0
- package/.claude/commands/ant/status.md +45 -1
- package/.opencode/commands/ant/colonize.md +2 -0
- package/.opencode/commands/ant/council.md +143 -0
- package/.opencode/commands/ant/init.md +53 -13
- package/.opencode/commands/ant/insert-phase.md +4 -0
- package/.opencode/commands/ant/plan.md +26 -1
- package/.opencode/commands/ant/quick.md +91 -0
- package/.opencode/commands/ant/resume-colony.md +3 -2
- package/.opencode/commands/ant/resume.md +9 -0
- package/.opencode/commands/ant/run.md +37 -1
- package/.opencode/commands/ant/status.md +2 -0
- package/CHANGELOG.md +116 -0
- package/README.md +34 -8
- package/bin/cli.js +103 -61
- package/bin/lib/banner.js +14 -0
- package/bin/lib/init.js +8 -7
- package/bin/lib/interactive-setup.js +251 -0
- package/bin/npx-entry.js +21 -0
- package/bin/npx-install.js +9 -167
- package/bin/validate-package.sh +23 -0
- package/package.json +11 -3
- package/.aether/docs/plans/pheromone-display-plan.md +0 -257
- package/.aether/schemas/example-prompt-builder.xml +0 -234
- package/.aether/scripts/incident-test-add.sh +0 -47
- package/.aether/scripts/weekly-audit.sh +0 -79
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
<!-- Generated from .aether/commands/watch.yaml - DO NOT EDIT DIRECTLY -->
|
|
2
|
+
---
|
|
3
|
+
name: ant:watch
|
|
4
|
+
description: "👁️🔄🐜🏠🔄👁️ Set up tmux session to watch ants working in real-time"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the **Queen**. Set up live visibility into colony activity.
|
|
8
|
+
|
|
9
|
+
## Instructions
|
|
10
|
+
|
|
11
|
+
### Step 1: Check Prerequisites
|
|
12
|
+
|
|
13
|
+
Use Bash with description "Checking for tmux..." to check if tmux is available:
|
|
14
|
+
```bash
|
|
15
|
+
command -v tmux >/dev/null 2>&1 && echo "tmux_available" || echo "tmux_missing"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
If tmux is missing:
|
|
19
|
+
```
|
|
20
|
+
tmux is required for live colony viewing.
|
|
21
|
+
|
|
22
|
+
Install with:
|
|
23
|
+
macOS: brew install tmux
|
|
24
|
+
Ubuntu: sudo apt install tmux
|
|
25
|
+
Fedora: sudo dnf install tmux
|
|
26
|
+
```
|
|
27
|
+
Stop here.
|
|
28
|
+
|
|
29
|
+
### Step 2: Initialize Activity Log
|
|
30
|
+
|
|
31
|
+
Ensure activity log exists by running using the Bash tool with description "Initializing watch files...":
|
|
32
|
+
```bash
|
|
33
|
+
mkdir -p .aether/data
|
|
34
|
+
touch .aether/data/activity.log
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Step 2.5: Check for Stale Watch Session
|
|
38
|
+
|
|
39
|
+
Capture session start time:
|
|
40
|
+
```bash
|
|
41
|
+
WATCH_START=$(date +%s)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Check for stale watch files by running using the Bash tool with description "Checking for stale watch session...":
|
|
45
|
+
```bash
|
|
46
|
+
stale_check=$(bash .aether/aether-utils.sh session-verify-fresh --command watch "" "$WATCH_START")
|
|
47
|
+
has_stale=$(echo "$stale_check" | jq -r '.stale | length' 2>/dev/null || echo "0")
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
If stale files exist, they will be overwritten by the new watch session.
|
|
51
|
+
The tmux session check in Step 4 handles concurrent sessions.
|
|
52
|
+
|
|
53
|
+
### Step 3: Create Status File
|
|
54
|
+
|
|
55
|
+
Write initial status to `.aether/data/watch-status.txt`:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
.-.
|
|
59
|
+
(o o) AETHER COLONY
|
|
60
|
+
| O | Live Status
|
|
61
|
+
`-`
|
|
62
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
63
|
+
|
|
64
|
+
Session Started: $(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
65
|
+
State: IDLE
|
|
66
|
+
Phase: -/-
|
|
67
|
+
|
|
68
|
+
Active Workers:
|
|
69
|
+
(none)
|
|
70
|
+
|
|
71
|
+
Last Activity:
|
|
72
|
+
(waiting for colony activity)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Step 4: Create or Attach to tmux Session
|
|
76
|
+
|
|
77
|
+
Check if session exists by running using the Bash tool with description "Checking tmux session...":
|
|
78
|
+
```bash
|
|
79
|
+
tmux has-session -t aether-colony 2>/dev/null && echo "exists" || echo "new"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**If session exists:** Attach to it by running using the Bash tool with description "Attaching to watch session...":
|
|
83
|
+
```bash
|
|
84
|
+
tmux attach-session -t aether-colony
|
|
85
|
+
```
|
|
86
|
+
Output: `Attached to existing aether-colony session.`
|
|
87
|
+
Stop here.
|
|
88
|
+
|
|
89
|
+
**If session is new:** Create the layout.
|
|
90
|
+
|
|
91
|
+
### Step 5: Create tmux Layout (4-Pane)
|
|
92
|
+
|
|
93
|
+
Use Bash with description "Creating watch session layout..." to create the session with 4 panes in a 2x2 grid:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Create session with first pane
|
|
97
|
+
tmux new-session -d -s aether-colony -n colony
|
|
98
|
+
|
|
99
|
+
# Split into 4 panes (2x2 grid)
|
|
100
|
+
# First split horizontally (left|right)
|
|
101
|
+
tmux split-window -h -t aether-colony:colony
|
|
102
|
+
|
|
103
|
+
# Split left side vertically (top-left, bottom-left)
|
|
104
|
+
tmux split-window -v -t aether-colony:colony.0
|
|
105
|
+
|
|
106
|
+
# Split right side vertically (top-right, bottom-right)
|
|
107
|
+
tmux split-window -v -t aether-colony:colony.2
|
|
108
|
+
|
|
109
|
+
# Set pane contents:
|
|
110
|
+
# Pane 0 (top-left): Status display
|
|
111
|
+
tmux send-keys -t aether-colony:colony.0 'watch -n 1 cat .aether/data/watch-status.txt' C-m
|
|
112
|
+
|
|
113
|
+
# Pane 1 (bottom-left): Progress bar
|
|
114
|
+
tmux send-keys -t aether-colony:colony.1 'watch -n 1 cat .aether/data/watch-progress.txt' C-m
|
|
115
|
+
|
|
116
|
+
# Pane 2 (top-right): Spawn tree visualization
|
|
117
|
+
tmux send-keys -t aether-colony:colony.2 'bash .aether/utils/watch-spawn-tree.sh .aether/data' C-m
|
|
118
|
+
|
|
119
|
+
# Pane 3 (bottom-right): Colorized activity log stream
|
|
120
|
+
tmux send-keys -t aether-colony:colony.3 'bash .aether/utils/colorize-log.sh .aether/data/activity.log' C-m
|
|
121
|
+
|
|
122
|
+
# Set pane titles (if supported)
|
|
123
|
+
tmux select-pane -t aether-colony:colony.0 -T "Status"
|
|
124
|
+
tmux select-pane -t aether-colony:colony.1 -T "Progress"
|
|
125
|
+
tmux select-pane -t aether-colony:colony.2 -T "Spawn Tree"
|
|
126
|
+
tmux select-pane -t aether-colony:colony.3 -T "Activity Log"
|
|
127
|
+
|
|
128
|
+
# Balance panes for even 2x2 grid
|
|
129
|
+
tmux select-layout -t aether-colony:colony tiled
|
|
130
|
+
|
|
131
|
+
echo "Session created"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Step 6: Create Progress File
|
|
135
|
+
|
|
136
|
+
Write initial progress to `.aether/data/watch-progress.txt`:
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
.-.
|
|
140
|
+
(o o) AETHER COLONY
|
|
141
|
+
| O | Progress
|
|
142
|
+
`-`
|
|
143
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
144
|
+
|
|
145
|
+
Phase: -/-
|
|
146
|
+
|
|
147
|
+
[░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 0%
|
|
148
|
+
|
|
149
|
+
⏳ Waiting for build...
|
|
150
|
+
|
|
151
|
+
Target: 95% confidence
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Step 7: Attach and Display
|
|
155
|
+
|
|
156
|
+
Run using the Bash tool with description "Attaching to watch display...":
|
|
157
|
+
```bash
|
|
158
|
+
tmux attach-session -t aether-colony
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Before attaching, output:
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
165
|
+
👁️🔄🐜🏠🔄👁️ A E T H E R C O L O N Y W A T C H
|
|
166
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
167
|
+
|
|
168
|
+
tmux session 'aether-colony' created.
|
|
169
|
+
|
|
170
|
+
Layout (4-pane 2x2 grid):
|
|
171
|
+
+------------------+------------------+
|
|
172
|
+
| Status | Spawn Tree |
|
|
173
|
+
| Colony state | Worker hierarchy |
|
|
174
|
+
+------------------+------------------+
|
|
175
|
+
| Progress | Activity Log |
|
|
176
|
+
| Phase progress | Live stream |
|
|
177
|
+
+------------------+------------------+
|
|
178
|
+
|
|
179
|
+
Commands:
|
|
180
|
+
Ctrl+B D Detach from session
|
|
181
|
+
Ctrl+B [ Scroll mode (q to exit)
|
|
182
|
+
Ctrl+B Arrow Navigate between panes
|
|
183
|
+
tmux kill-session -t aether-colony Stop watching
|
|
184
|
+
|
|
185
|
+
The session will update in real-time as colony works.
|
|
186
|
+
Attaching now...
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Status Update Protocol
|
|
194
|
+
|
|
195
|
+
Workers and commands update watch files as they work:
|
|
196
|
+
|
|
197
|
+
### Activity Log
|
|
198
|
+
Workers write via: `bash .aether/aether-utils.sh activity-log "ACTION" "caste" "description"`
|
|
199
|
+
|
|
200
|
+
For named ants (recommended):
|
|
201
|
+
```bash
|
|
202
|
+
# Generate a name first
|
|
203
|
+
ant_name=$(bash .aether/aether-utils.sh generate-ant-name "builder" | jq -r '.result')
|
|
204
|
+
# Log with ant name
|
|
205
|
+
bash .aether/aether-utils.sh activity-log "CREATED" "$ant_name (Builder)" "Implemented auth module"
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Spawn Tracking
|
|
209
|
+
Log spawns for tree visualization:
|
|
210
|
+
```bash
|
|
211
|
+
bash .aether/aether-utils.sh spawn-log "Prime" "builder" "Hammer-42" "implementing auth"
|
|
212
|
+
bash .aether/aether-utils.sh spawn-complete "Hammer-42" "completed" "auth module done"
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Status File
|
|
216
|
+
Commands update `.aether/data/watch-status.txt` with current state:
|
|
217
|
+
- State: PLANNING, EXECUTING, READY
|
|
218
|
+
- Phase: current/total
|
|
219
|
+
- Active Workers: list of named ants
|
|
220
|
+
- Last Activity: most recent log entry
|
|
221
|
+
|
|
222
|
+
### Progress File
|
|
223
|
+
Update via: `bash .aether/aether-utils.sh update-progress <percent> "<message>" <phase> <total>`
|
|
224
|
+
|
|
225
|
+
Example:
|
|
226
|
+
```bash
|
|
227
|
+
bash .aether/aether-utils.sh update-progress 45 "Building auth module..." 2 5
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Cleanup
|
|
233
|
+
|
|
234
|
+
To stop watching:
|
|
235
|
+
```bash
|
|
236
|
+
tmux kill-session -t aether-colony
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
This stops the session but preserves all log files.
|
|
@@ -66,6 +66,8 @@ body_claude: |
|
|
|
66
66
|
|
|
67
67
|
**If the file exists:** continue.
|
|
68
68
|
|
|
69
|
+
**If `milestone` == `"Crowned Anthill"`:** output "This colony has been sealed. Start a new colony with `/ant:init \"new goal\"`.", stop.
|
|
70
|
+
|
|
69
71
|
**If `plan.phases` is not empty:** output "Colony already has phases. Use /ant:continue.", stop.
|
|
70
72
|
|
|
71
73
|
### Step 2: Quick Surface Scan (for session context)
|
|
@@ -287,6 +289,8 @@ body_opencode: |
|
|
|
287
289
|
|
|
288
290
|
**If the file exists:** continue.
|
|
289
291
|
|
|
292
|
+
**If `milestone` == `"Crowned Anthill"`:** output "This colony has been sealed. Start a new colony with `/ant:init \"new goal\"`.", stop.
|
|
293
|
+
|
|
290
294
|
**If `plan.phases` is not empty:** output "Colony already has phases. Use /ant:continue.", stop.
|
|
291
295
|
|
|
292
296
|
### Step 2: Quick Surface Scan (for session context)
|
|
@@ -6,9 +6,208 @@ body: |
|
|
|
6
6
|
## Instructions
|
|
7
7
|
|
|
8
8
|
Parse `{{ARGUMENTS}}`:
|
|
9
|
+
- If starts with `--deliberate`: set `deliberate_mode = true`, extract proposal text after `--deliberate`
|
|
9
10
|
- If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
|
|
10
11
|
- Otherwise: set `visual_mode = true`
|
|
11
12
|
|
|
13
|
+
**If `deliberate_mode` is true:** Skip to [Deliberation Mode](#deliberation-mode) and stop after it.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Deliberation Mode
|
|
18
|
+
|
|
19
|
+
When `--deliberate "<proposal>"` is passed, run a structured Advocate/Challenger/Sage deliberation.
|
|
20
|
+
|
|
21
|
+
### Step D1: Check Budget
|
|
22
|
+
|
|
23
|
+
Run using the Bash tool with description "Checking deliberation budget...":
|
|
24
|
+
```bash
|
|
25
|
+
bash .aether/aether-utils.sh council-budget-check
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Parse result. If `allowed` is `false`:
|
|
29
|
+
```
|
|
30
|
+
📜🐜🏛️🐜📜 COUNCIL — BUDGET EXHAUSTED
|
|
31
|
+
|
|
32
|
+
Spawn budget is fully allocated. Complete or close existing deliberations before starting new ones.
|
|
33
|
+
Run /ant:council to review existing deliberations.
|
|
34
|
+
```
|
|
35
|
+
Stop here.
|
|
36
|
+
|
|
37
|
+
### Step D2: Open Deliberation
|
|
38
|
+
|
|
39
|
+
Run using the Bash tool with description "Opening deliberation...":
|
|
40
|
+
```bash
|
|
41
|
+
bash .aether/aether-utils.sh council-deliberate --proposal "<proposal>"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Capture `deliberation_id` from `result.id`.
|
|
45
|
+
|
|
46
|
+
Display:
|
|
47
|
+
```
|
|
48
|
+
📜🐜🏛️🐜📜 COUNCIL DELIBERATION OPENED
|
|
49
|
+
|
|
50
|
+
Proposal: "<proposal>"
|
|
51
|
+
ID: {deliberation_id}
|
|
52
|
+
Budget: {budget} spawns available
|
|
53
|
+
|
|
54
|
+
Convening Advocate, Challenger, and Sage...
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Step D3: Spawn Advocate Scout
|
|
58
|
+
|
|
59
|
+
Spawn an Advocate scout to argue **in favor** of the proposal.
|
|
60
|
+
|
|
61
|
+
{{#claude}}
|
|
62
|
+
Use the Task tool to spawn a scout with the following system prompt:
|
|
63
|
+
```
|
|
64
|
+
You are the Advocate on the Ant Colony council.
|
|
65
|
+
Your role is to argue STRONGLY IN FAVOR of the proposal.
|
|
66
|
+
Present the strongest possible case for why this proposal should be adopted.
|
|
67
|
+
Be specific. Focus on concrete benefits and outcomes.
|
|
68
|
+
Keep your argument under 200 words.
|
|
69
|
+
Reply with ONLY your argument text — no preamble or meta-commentary.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
And user message:
|
|
73
|
+
```
|
|
74
|
+
Proposal: "<proposal>"
|
|
75
|
+
|
|
76
|
+
Present your strongest argument in favor of this proposal.
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Capture the advocate's argument as `advocate_argument`.
|
|
80
|
+
{{/claude}}
|
|
81
|
+
|
|
82
|
+
Record the argument:
|
|
83
|
+
```bash
|
|
84
|
+
bash .aether/aether-utils.sh council-advocate \
|
|
85
|
+
--deliberation-id "<deliberation_id>" \
|
|
86
|
+
--argument "<advocate_argument>"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Display:
|
|
90
|
+
```
|
|
91
|
+
⚖️ ADVOCATE:
|
|
92
|
+
{advocate_argument}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Step D4: Spawn Challenger Scout
|
|
96
|
+
|
|
97
|
+
Spawn a Challenger scout to argue **against** the proposal.
|
|
98
|
+
|
|
99
|
+
{{#claude}}
|
|
100
|
+
Use the Task tool to spawn a scout with the following system prompt:
|
|
101
|
+
```
|
|
102
|
+
You are the Challenger on the Ant Colony council.
|
|
103
|
+
Your role is to argue STRONGLY AGAINST the proposal.
|
|
104
|
+
Present the strongest possible case for why this proposal should be rejected or deferred.
|
|
105
|
+
Be specific. Focus on concrete risks, costs, and downsides.
|
|
106
|
+
Keep your argument under 200 words.
|
|
107
|
+
Reply with ONLY your argument text — no preamble or meta-commentary.
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
And user message:
|
|
111
|
+
```
|
|
112
|
+
Proposal: "<proposal>"
|
|
113
|
+
|
|
114
|
+
Present your strongest argument against this proposal.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Capture the challenger's argument as `challenger_argument`.
|
|
118
|
+
{{/claude}}
|
|
119
|
+
|
|
120
|
+
Record the argument:
|
|
121
|
+
```bash
|
|
122
|
+
bash .aether/aether-utils.sh council-challenger \
|
|
123
|
+
--deliberation-id "<deliberation_id>" \
|
|
124
|
+
--argument "<challenger_argument>"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Display:
|
|
128
|
+
```
|
|
129
|
+
⚔️ CHALLENGER:
|
|
130
|
+
{challenger_argument}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Step D5: Spawn Sage Scout
|
|
134
|
+
|
|
135
|
+
Spawn a Sage scout to synthesize both positions and provide a recommendation.
|
|
136
|
+
|
|
137
|
+
{{#claude}}
|
|
138
|
+
Use the Task tool to spawn a scout with the following system prompt:
|
|
139
|
+
```
|
|
140
|
+
You are the Sage on the Ant Colony council.
|
|
141
|
+
You have heard both the Advocate and Challenger arguments.
|
|
142
|
+
Your role is to synthesize both positions into balanced wisdom and provide a clear recommendation.
|
|
143
|
+
Your recommendation must be one of: adopt, reject, defer, or adopt-with-conditions.
|
|
144
|
+
Keep your synthesis under 150 words.
|
|
145
|
+
Reply with JSON only:
|
|
146
|
+
{"synthesis": "<your balanced synthesis>", "recommendation": "adopt|reject|defer|adopt-with-conditions"}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
And user message:
|
|
150
|
+
```
|
|
151
|
+
Proposal: "<proposal>"
|
|
152
|
+
|
|
153
|
+
Advocate argued: "<advocate_argument>"
|
|
154
|
+
|
|
155
|
+
Challenger argued: "<challenger_argument>"
|
|
156
|
+
|
|
157
|
+
Synthesize both positions and provide your recommendation.
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Parse the JSON response. Capture `synthesis` and `recommendation`.
|
|
161
|
+
{{/claude}}
|
|
162
|
+
|
|
163
|
+
Record the sage synthesis:
|
|
164
|
+
```bash
|
|
165
|
+
bash .aether/aether-utils.sh council-sage \
|
|
166
|
+
--deliberation-id "<deliberation_id>" \
|
|
167
|
+
--synthesis "<synthesis>" \
|
|
168
|
+
--recommendation "<recommendation>"
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Step D6: Display Result
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
📜🐜🏛️🐜📜 COUNCIL DELIBERATION COMPLETE
|
|
175
|
+
|
|
176
|
+
Proposal: "<proposal>"
|
|
177
|
+
|
|
178
|
+
⚖️ Advocate:
|
|
179
|
+
{advocate_argument}
|
|
180
|
+
|
|
181
|
+
⚔️ Challenger:
|
|
182
|
+
{challenger_argument}
|
|
183
|
+
|
|
184
|
+
🧙 Sage Synthesis:
|
|
185
|
+
{synthesis}
|
|
186
|
+
|
|
187
|
+
Recommendation: {recommendation}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
If recommendation is `adopt` or `adopt-with-conditions`:
|
|
191
|
+
```
|
|
192
|
+
✅ Council recommends proceeding.
|
|
193
|
+
Run /ant:focus "<proposal summary>" to inject guidance for the colony.
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
If recommendation is `reject`:
|
|
197
|
+
```
|
|
198
|
+
❌ Council recommends against this proposal.
|
|
199
|
+
Run /ant:redirect "<proposal summary>" if you want to make this a hard constraint.
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
If recommendation is `defer`:
|
|
203
|
+
```
|
|
204
|
+
⏸️ Council recommends deferring this decision.
|
|
205
|
+
Return when more context is available.
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
|
|
12
211
|
{{#claude}}
|
|
13
212
|
### Step 0: Initialize Visual Mode (if enabled)
|
|
14
213
|
|
|
@@ -26,6 +225,12 @@ body: |
|
|
|
26
225
|
```
|
|
27
226
|
Stop here.
|
|
28
227
|
|
|
228
|
+
If `milestone` == `"Crowned Anthill"`:
|
|
229
|
+
```
|
|
230
|
+
This colony has been sealed. Start a new colony with /ant:init "new goal".
|
|
231
|
+
```
|
|
232
|
+
Stop here.
|
|
233
|
+
|
|
29
234
|
Capture the current state for context:
|
|
30
235
|
- `prior_state` = state field value (READY, EXECUTING, PLANNING, etc.)
|
|
31
236
|
- `current_phase` = current_phase field value
|
|
@@ -135,8 +135,14 @@ body: |
|
|
|
135
135
|
|
|
136
136
|
Use Read tool to check `.aether/data/COLONY_STATE.json`.
|
|
137
137
|
|
|
138
|
-
- If file exists AND has a non-null `goal` field:
|
|
139
|
-
|
|
138
|
+
- If file exists AND has a non-null `goal` field:
|
|
139
|
+
- Check the `milestone` field. If `milestone == "Crowned Anthill"`:
|
|
140
|
+
- This is a **sealed colony**. Treat as **fresh init**, NOT re-init.
|
|
141
|
+
- Set `reinit_mode = false`
|
|
142
|
+
- Display: `Previous colony was sealed. Starting fresh colony.`
|
|
143
|
+
- The old COLONY_STATE.json will be overwritten in Step 7 (fresh init path).
|
|
144
|
+
- Otherwise (colony exists but is NOT sealed): set `reinit_mode = true`, store `existing_goal`
|
|
145
|
+
- If file does not exist or `goal` is null: set `reinit_mode = false`
|
|
140
146
|
|
|
141
147
|
If re-init mode, read existing charter entries from `.aether/QUEEN.md`:
|
|
142
148
|
```bash
|
|
@@ -276,14 +282,29 @@ body: |
|
|
|
276
282
|
|
|
277
283
|
2. Auto-apply approved pheromone suggestions (see pheromone auto-apply below).
|
|
278
284
|
|
|
279
|
-
3.
|
|
285
|
+
3. Update the goal field in COLONY_STATE.json in-place using the state API:
|
|
280
286
|
```bash
|
|
281
|
-
jq --arg new_goal "{approved_intent}" '.goal = $new_goal' .aether/data/COLONY_STATE.json
|
|
287
|
+
bash .aether/aether-utils.sh state-write "$(jq --arg new_goal "{approved_intent}" '.goal = $new_goal' .aether/data/COLONY_STATE.json)"
|
|
282
288
|
```
|
|
283
289
|
|
|
284
|
-
4.
|
|
290
|
+
4. **Verify the write** — read back and confirm goal is set:
|
|
291
|
+
```bash
|
|
292
|
+
verify_goal=$(jq -r '.goal' .aether/data/COLONY_STATE.json)
|
|
293
|
+
if [[ "$verify_goal" == "null" || -z "$verify_goal" ]]; then
|
|
294
|
+
echo "ERROR: Colony state write failed — goal is still null after write. Re-run /ant:init."
|
|
295
|
+
# Attempt recovery: write goal directly
|
|
296
|
+
jq --arg g "{approved_intent}" '.goal = $g' .aether/data/COLONY_STATE.json > .aether/data/COLONY_STATE.json.tmp && mv .aether/data/COLONY_STATE.json.tmp .aether/data/COLONY_STATE.json
|
|
297
|
+
verify_goal=$(jq -r '.goal' .aether/data/COLONY_STATE.json)
|
|
298
|
+
if [[ "$verify_goal" == "null" || -z "$verify_goal" ]]; then
|
|
299
|
+
echo "FATAL: Recovery write also failed. Colony state may be corrupted."
|
|
300
|
+
stop
|
|
301
|
+
fi
|
|
302
|
+
fi
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
5. Run `bash .aether/aether-utils.sh session-init "$(jq -r '.session_id' .aether/data/COLONY_STATE.json)" "{approved_intent}"`
|
|
285
306
|
|
|
286
|
-
|
|
307
|
+
6. Skip to Step 8 (display result). Do NOT write COLONY_STATE.json from template, do NOT write constraints.json, do NOT write pheromones.json.
|
|
287
308
|
|
|
288
309
|
**If fresh init:**
|
|
289
310
|
|
|
@@ -299,12 +320,24 @@ body: |
|
|
|
299
320
|
- Remove ALL keys starting with underscore
|
|
300
321
|
- Write the resulting JSON to `.aether/data/COLONY_STATE.json` using the Write tool
|
|
301
322
|
|
|
302
|
-
5.
|
|
323
|
+
5. **Verify the write** — read back and confirm COLONY_STATE.json is valid and goal is set:
|
|
324
|
+
```bash
|
|
325
|
+
verify_goal=$(jq -r '.goal' .aether/data/COLONY_STATE.json 2>/dev/null)
|
|
326
|
+
verify_valid=$(jq -e . .aether/data/COLONY_STATE.json >/dev/null 2>&1 && echo "valid" || echo "invalid")
|
|
327
|
+
if [[ "$verify_valid" != "valid" || "$verify_goal" == "null" || -z "$verify_goal" ]]; then
|
|
328
|
+
echo "ERROR: Colony state write verification failed (valid=$verify_valid, goal=$verify_goal)"
|
|
329
|
+
echo "The colony file may be corrupted. Remove .aether/data/COLONY_STATE.json and re-run /ant:init."
|
|
330
|
+
stop
|
|
331
|
+
fi
|
|
332
|
+
echo "Colony state verified: goal=\"$verify_goal\""
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
6. Write constraints.json from template:
|
|
303
336
|
- Resolve template: check `~/.aether/system/templates/constraints.template.json` first, then `.aether/templates/constraints.template.json`
|
|
304
337
|
- If no template found: output "Template missing: constraints.template.json. Run aether update to fix." and stop
|
|
305
338
|
- Read template, follow `_instructions`, remove `_` prefixed keys, write to `.aether/data/constraints.json`
|
|
306
339
|
|
|
307
|
-
|
|
340
|
+
7. Initialize runtime files from templates (non-blocking):
|
|
308
341
|
```bash
|
|
309
342
|
for template in pheromones midden learning-observations; do
|
|
310
343
|
if [[ "$template" == "midden" ]]; then
|
|
@@ -327,15 +360,15 @@ body: |
|
|
|
327
360
|
done
|
|
328
361
|
```
|
|
329
362
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
363
|
+
8. Run `bash .aether/aether-utils.sh context-update init "{approved_intent}"`
|
|
364
|
+
9. Run `bash .aether/aether-utils.sh validate-state colony`
|
|
365
|
+
10. Register repo (silent on failure):
|
|
333
366
|
```bash
|
|
334
367
|
domain_tags=$(bash .aether/aether-utils.sh domain-detect 2>/dev/null | jq -r '.result.tags // ""' || echo "")
|
|
335
368
|
bash .aether/aether-utils.sh registry-add "$(pwd)" "$(jq -r '.version // "unknown"' ~/.aether/version.json 2>/dev/null || echo 'unknown')" --goal "{approved_intent}" --active true --tags "$domain_tags" 2>/dev/null || true
|
|
336
369
|
cp ~/.aether/version.json .aether/version.json 2>/dev/null || true
|
|
337
370
|
```
|
|
338
|
-
|
|
371
|
+
11. Seed QUEEN.md from hive (non-blocking):
|
|
339
372
|
```bash
|
|
340
373
|
domain_tags=$(jq -r --arg repo "$(pwd)" \
|
|
341
374
|
'[.repos[] | select(.path == $repo) | .domain_tags // []] | .[0] // [] | join(",")' \
|
|
@@ -345,7 +378,7 @@ body: |
|
|
|
345
378
|
seed_result=$(bash .aether/aether-utils.sh $seed_args 2>/dev/null || echo '{}')
|
|
346
379
|
seeded_count=$(echo "$seed_result" | jq -r '.result.seeded // 0' 2>/dev/null || echo "0")
|
|
347
380
|
```
|
|
348
|
-
|
|
381
|
+
12. Run `bash .aether/aether-utils.sh session-init "{session_id}" "{approved_intent}"`
|
|
349
382
|
|
|
350
383
|
**Pheromone auto-apply (referenced by both re-init and fresh init paths above):**
|
|
351
384
|
|
|
@@ -13,6 +13,10 @@ body: |
|
|
|
13
13
|
`No colony initialized. Run /ant:init first.`
|
|
14
14
|
Stop.
|
|
15
15
|
|
|
16
|
+
If `milestone` == `"Crowned Anthill"`:
|
|
17
|
+
`This colony has been sealed. Start a new colony with /ant:init "new goal".`
|
|
18
|
+
Stop.
|
|
19
|
+
|
|
16
20
|
If `plan.phases` is empty:
|
|
17
21
|
`No project plan. Run /ant:plan first.`
|
|
18
22
|
Stop.
|