aether-colony 5.3.3 → 5.4.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/commands/archaeology.yaml +3 -3
- package/.aether/commands/build.yaml +45 -45
- package/.aether/commands/chaos.yaml +7 -7
- package/.aether/commands/colonize.yaml +17 -17
- package/.aether/commands/continue.yaml +40 -40
- package/.aether/commands/council.yaml +6 -6
- package/.aether/commands/data-clean.yaml +3 -3
- package/.aether/commands/dream.yaml +2 -2
- package/.aether/commands/entomb.yaml +11 -11
- package/.aether/commands/export-signals.yaml +2 -2
- package/.aether/commands/feedback.yaml +6 -6
- package/.aether/commands/flag.yaml +2 -2
- package/.aether/commands/flags.yaml +4 -4
- package/.aether/commands/focus.yaml +6 -6
- package/.aether/commands/help.yaml +1 -1
- package/.aether/commands/history.yaml +1 -1
- package/.aether/commands/import-signals.yaml +2 -2
- package/.aether/commands/init.yaml +16 -16
- package/.aether/commands/insert-phase.yaml +1 -1
- package/.aether/commands/interpret.yaml +2 -2
- package/.aether/commands/lay-eggs.yaml +3 -3
- package/.aether/commands/maturity.yaml +2 -2
- package/.aether/commands/memory-details.yaml +1 -1
- package/.aether/commands/migrate-state.yaml +1 -1
- package/.aether/commands/oracle.yaml +77 -82
- package/.aether/commands/organize.yaml +5 -5
- package/.aether/commands/patrol.yaml +6 -6
- package/.aether/commands/pause-colony.yaml +7 -7
- package/.aether/commands/phase.yaml +1 -1
- package/.aether/commands/pheromones.yaml +1 -1
- package/.aether/commands/plan.yaml +14 -14
- package/.aether/commands/quick.yaml +4 -4
- package/.aether/commands/redirect.yaml +6 -6
- package/.aether/commands/resume-colony.yaml +9 -9
- package/.aether/commands/resume.yaml +5 -38
- package/.aether/commands/run.yaml +7 -7
- package/.aether/commands/seal.yaml +33 -33
- package/.aether/commands/skill-create.yaml +4 -4
- package/.aether/commands/status.yaml +14 -14
- package/.aether/commands/swarm.yaml +13 -13
- package/.aether/commands/tunnels.yaml +7 -7
- package/.aether/commands/update.yaml +1 -1
- package/.aether/commands/verify-castes.yaml +3 -3
- package/.aether/commands/watch.yaml +15 -15
- package/.aether/docs/command-playbooks/build-complete.md +7 -7
- package/.aether/docs/command-playbooks/build-context.md +11 -11
- package/.aether/docs/command-playbooks/build-full.md +69 -69
- package/.aether/docs/command-playbooks/build-prep.md +9 -9
- package/.aether/docs/command-playbooks/build-verify.md +27 -27
- package/.aether/docs/command-playbooks/build-wave.md +38 -38
- package/.aether/docs/command-playbooks/continue-advance.md +28 -28
- package/.aether/docs/command-playbooks/continue-finalize.md +12 -12
- package/.aether/docs/command-playbooks/continue-full.md +47 -47
- package/.aether/docs/command-playbooks/continue-gates.md +18 -18
- package/.aether/docs/command-playbooks/continue-verify.md +10 -10
- package/.aether/templates/colony-state-template.json +1 -0
- package/.aether/utils/oracle/oracle-stop-hook.sh +896 -0
- package/.claude/commands/ant/archaeology.md +2 -2
- package/.claude/commands/ant/chaos.md +4 -4
- package/.claude/commands/ant/colonize.md +9 -9
- package/.claude/commands/ant/council.md +6 -6
- package/.claude/commands/ant/data-clean.md +3 -3
- package/.claude/commands/ant/dream.md +2 -2
- package/.claude/commands/ant/entomb.md +8 -8
- package/.claude/commands/ant/export-signals.md +2 -2
- package/.claude/commands/ant/feedback.md +4 -4
- package/.claude/commands/ant/flag.md +2 -2
- package/.claude/commands/ant/flags.md +4 -4
- package/.claude/commands/ant/focus.md +4 -4
- package/.claude/commands/ant/help.md +1 -1
- package/.claude/commands/ant/history.md +1 -1
- package/.claude/commands/ant/import-signals.md +2 -2
- package/.claude/commands/ant/init.md +16 -16
- package/.claude/commands/ant/insert-phase.md +1 -1
- package/.claude/commands/ant/interpret.md +2 -2
- package/.claude/commands/ant/lay-eggs.md +2 -2
- package/.claude/commands/ant/maturity.md +2 -2
- package/.claude/commands/ant/memory-details.md +1 -1
- package/.claude/commands/ant/migrate-state.md +1 -1
- package/.claude/commands/ant/oracle.md +43 -42
- package/.claude/commands/ant/organize.md +3 -3
- package/.claude/commands/ant/patrol.md +6 -6
- package/.claude/commands/ant/pause-colony.md +5 -5
- package/.claude/commands/ant/phase.md +1 -1
- package/.claude/commands/ant/pheromones.md +1 -1
- package/.claude/commands/ant/plan.md +8 -8
- package/.claude/commands/ant/quick.md +4 -4
- package/.claude/commands/ant/redirect.md +4 -4
- package/.claude/commands/ant/resume-colony.md +5 -5
- package/.claude/commands/ant/resume.md +17 -29
- package/.claude/commands/ant/run.md +7 -7
- package/.claude/commands/ant/seal.md +25 -25
- package/.claude/commands/ant/skill-create.md +2 -2
- package/.claude/commands/ant/status.md +14 -14
- package/.claude/commands/ant/swarm.md +13 -13
- package/.claude/commands/ant/tunnels.md +4 -4
- package/.claude/commands/ant/update.md +1 -1
- package/.claude/commands/ant/verify-castes.md +2 -2
- package/.claude/commands/ant/watch.md +8 -8
- package/.opencode/commands/ant/archaeology.md +1 -1
- package/.opencode/commands/ant/build.md +45 -45
- package/.opencode/commands/ant/chaos.md +3 -3
- package/.opencode/commands/ant/colonize.md +8 -8
- package/.opencode/commands/ant/continue.md +40 -40
- package/.opencode/commands/ant/council.md +5 -5
- package/.opencode/commands/ant/data-clean.md +2 -2
- package/.opencode/commands/ant/dream.md +1 -1
- package/.opencode/commands/ant/entomb.md +3 -3
- package/.opencode/commands/ant/export-signals.md +1 -1
- package/.opencode/commands/ant/feedback.md +2 -2
- package/.opencode/commands/ant/flag.md +1 -1
- package/.opencode/commands/ant/flags.md +3 -3
- package/.opencode/commands/ant/focus.md +2 -2
- package/.opencode/commands/ant/import-signals.md +1 -1
- package/.opencode/commands/ant/init.md +16 -16
- package/.opencode/commands/ant/insert-phase.md +1 -1
- package/.opencode/commands/ant/interpret.md +1 -1
- package/.opencode/commands/ant/lay-eggs.md +2 -2
- package/.opencode/commands/ant/maturity.md +1 -1
- package/.opencode/commands/ant/memory-details.md +1 -1
- package/.opencode/commands/ant/oracle.md +34 -40
- package/.opencode/commands/ant/organize.md +2 -2
- package/.opencode/commands/ant/patrol.md +6 -6
- package/.opencode/commands/ant/pause-colony.md +2 -2
- package/.opencode/commands/ant/pheromones.md +1 -1
- package/.opencode/commands/ant/plan.md +6 -6
- package/.opencode/commands/ant/quick.md +4 -4
- package/.opencode/commands/ant/redirect.md +2 -2
- package/.opencode/commands/ant/resume-colony.md +4 -4
- package/.opencode/commands/ant/resume.md +5 -17
- package/.opencode/commands/ant/run.md +7 -7
- package/.opencode/commands/ant/seal.md +8 -8
- package/.opencode/commands/ant/skill-create.md +2 -2
- package/.opencode/commands/ant/status.md +10 -10
- package/.opencode/commands/ant/tunnels.md +3 -3
- package/.opencode/commands/ant/verify-castes.md +1 -1
- package/.opencode/commands/ant/watch.md +7 -7
- package/bin/cli.js +118 -3
- package/bin/lib/binary-downloader.js +267 -0
- package/bin/lib/update-transaction.js +19 -0
- package/bin/lib/version-gate.js +179 -0
- package/package.json +1 -1
|
@@ -147,7 +147,7 @@ echo "System files copied."
|
|
|
147
147
|
|
|
148
148
|
|
|
149
149
|
|
|
150
|
-
Run: `
|
|
150
|
+
Run: `aether queen-init`
|
|
151
151
|
|
|
152
152
|
|
|
153
153
|
Parse the JSON result:
|
|
@@ -163,7 +163,7 @@ Attempt to register this repo in the global hub. Silent on failure — registry
|
|
|
163
163
|
Run (ignore errors):
|
|
164
164
|
|
|
165
165
|
```bash
|
|
166
|
-
|
|
166
|
+
aether registry-add --path "$(pwd)" "$(jq -r '.version // "unknown"' ~/.aether/version.json 2>/dev/null || echo 'unknown')" 2>/dev/null || true
|
|
167
167
|
```
|
|
168
168
|
|
|
169
169
|
### Step 7: Verify Setup
|
|
@@ -17,7 +17,7 @@ You are the **Queen**. Display the colony's maturity journey.
|
|
|
17
17
|
### Step 1: Detect Current Milestone
|
|
18
18
|
|
|
19
19
|
Run:
|
|
20
|
-
`
|
|
20
|
+
`aether milestone-detect`
|
|
21
21
|
|
|
22
22
|
Parse JSON result to get:
|
|
23
23
|
- `milestone`: Current milestone name (First Mound, Open Chambers, Brood Stable, Ventilated Nest, Sealed Chambers, Crowned Anthill)
|
|
@@ -26,7 +26,7 @@ Drill-down view of accumulated colony wisdom, pending promotions, and recent fai
|
|
|
26
26
|
|
|
27
27
|
Run using the Bash tool with description "Loading colony memory...":
|
|
28
28
|
```bash
|
|
29
|
-
|
|
29
|
+
aether memory-metrics
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
### Step 2: Display Wisdom (from QUEEN.md)
|
|
@@ -49,10 +49,10 @@ Oracle peering into the depths...
|
|
|
49
49
|
|
|
50
50
|
### Step 0b: Stop Oracle
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
Stop any active Oracle research:
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
mkdir -p .aether/oracle && touch .aether/oracle/.stop
|
|
55
|
+
mkdir -p .aether/oracle && touch .aether/oracle/.stop && rm -f .aether/oracle/.loop-active
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
Output:
|
|
@@ -60,8 +60,9 @@ Output:
|
|
|
60
60
|
```
|
|
61
61
|
🔮 Oracle Stop Signal Sent
|
|
62
62
|
|
|
63
|
-
Created .aether/oracle/.stop
|
|
64
|
-
|
|
63
|
+
Created .aether/oracle/.stop (legacy tmux signal)
|
|
64
|
+
Removed .aether/oracle/.loop-active (in-session loop marker)
|
|
65
|
+
The research loop will halt at the next iteration boundary.
|
|
65
66
|
|
|
66
67
|
To check final results: /ant:oracle status
|
|
67
68
|
```
|
|
@@ -453,7 +454,7 @@ Use the Write tool to create `.aether/oracle/state.json`:
|
|
|
453
454
|
For each focus area string from Question 7:
|
|
454
455
|
|
|
455
456
|
```bash
|
|
456
|
-
|
|
457
|
+
aether pheromone-write --type FOCUS --content "$focus_area" \
|
|
457
458
|
--strength 0.8 --source "oracle:wizard" \
|
|
458
459
|
--reason "Focus area set in oracle wizard" --ttl "24h" 2>/dev/null || true
|
|
459
460
|
```
|
|
@@ -552,7 +553,7 @@ Proceed to Step 3.
|
|
|
552
553
|
|
|
553
554
|
---
|
|
554
555
|
|
|
555
|
-
### Step 3: Launch
|
|
556
|
+
### Step 3: Launch (In-Session Loop)
|
|
556
557
|
|
|
557
558
|
Output the research configuration summary, showing the sub-questions from plan.json:
|
|
558
559
|
|
|
@@ -576,53 +577,46 @@ Output the research configuration summary, showing the sub-questions from plan.j
|
|
|
576
577
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
577
578
|
```
|
|
578
579
|
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
**Try tmux:**
|
|
580
|
+
**Create the loop marker file:**
|
|
582
581
|
|
|
583
582
|
```bash
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
The Oracle will stop when it reaches {target_confidence}% confidence
|
|
601
|
-
or completes {max_iterations} iterations.
|
|
602
|
-
|
|
603
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
604
|
-
|
|
605
|
-
You can keep working. The Oracle runs independently.
|
|
583
|
+
SESSION_ID="${CLAUDE_SESSION_ID:-$(uuidgen 2>/dev/null || date +%s)}"
|
|
584
|
+
MAX_IT=<max_iterations from wizard>
|
|
585
|
+
TARGET_CONF=<target_confidence from wizard>
|
|
586
|
+
cat > .aether/oracle/.loop-active <<MARKER
|
|
587
|
+
---
|
|
588
|
+
iteration: 0
|
|
589
|
+
max_iterations: $MAX_IT
|
|
590
|
+
session_id: $SESSION_ID
|
|
591
|
+
phase: survey
|
|
592
|
+
target_confidence: $TARGET_CONF
|
|
593
|
+
synthesis_done: false
|
|
594
|
+
oracle_md_path: .aether/utils/oracle/oracle.md
|
|
595
|
+
---
|
|
596
|
+
Oracle research loop active
|
|
597
|
+
MARKER
|
|
598
|
+
echo "LOOP_MARKER_CREATED"
|
|
606
599
|
```
|
|
607
600
|
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
**If TMUX_FAIL** (tmux not installed or error):
|
|
601
|
+
Output:
|
|
611
602
|
|
|
612
603
|
```
|
|
613
|
-
🔮
|
|
604
|
+
🔮 Oracle Research Started (In-Session Loop)
|
|
614
605
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
615
606
|
|
|
616
|
-
|
|
607
|
+
The Oracle is researching IN THIS SESSION.
|
|
617
608
|
|
|
618
|
-
|
|
619
|
-
|
|
609
|
+
The Stop hook keeps the loop running automatically between iterations.
|
|
610
|
+
Phases advance: survey -> investigate -> synthesize -> verify
|
|
611
|
+
Loop ends when confidence target is reached or max iterations hit.
|
|
620
612
|
|
|
621
|
-
Then come back here:
|
|
622
613
|
📊 Check status: /ant:oracle status
|
|
623
614
|
🛑 Stop early: /ant:oracle stop
|
|
624
615
|
|
|
625
616
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
617
|
+
|
|
618
|
+
You can continue chatting. The Oracle loop runs between your messages.
|
|
626
619
|
```
|
|
627
620
|
|
|
628
|
-
|
|
621
|
+
**Now begin the first iteration.** Read `.aether/utils/oracle/oracle.md` and start survey phase research.
|
|
622
|
+
Target the first untouched question from plan.json. Update state files as you go.
|
|
@@ -36,7 +36,7 @@ From COLONY_STATE.json, extract:
|
|
|
36
36
|
|
|
37
37
|
Run using the Bash tool:
|
|
38
38
|
```bash
|
|
39
|
-
|
|
39
|
+
aether pheromone-read
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
|
|
@@ -213,7 +213,7 @@ Next:
|
|
|
213
213
|
|
|
214
214
|
Use the Bash tool to run:
|
|
215
215
|
```
|
|
216
|
-
|
|
216
|
+
aether activity-log "COMPLETE" "queen" "Hygiene report generated"
|
|
217
217
|
```
|
|
218
218
|
|
|
219
219
|
Display persistence confirmation:
|
|
@@ -255,12 +255,12 @@ Run these commands in parallel using the Bash tool:
|
|
|
255
255
|
|
|
256
256
|
**Flags check:**
|
|
257
257
|
```bash
|
|
258
|
-
|
|
258
|
+
aether flag-list --json 2>/dev/null || echo '{"result":{"flags":[]}}'
|
|
259
259
|
```
|
|
260
260
|
|
|
261
261
|
**Midden check:**
|
|
262
262
|
```bash
|
|
263
|
-
|
|
263
|
+
aether midden-recent-failures 2>/dev/null || echo '{"result":{"failures":[]}}'
|
|
264
264
|
```
|
|
265
265
|
|
|
266
266
|
**Parse flag results:**
|
|
@@ -338,12 +338,12 @@ Display: `Checking colony health...`
|
|
|
338
338
|
|
|
339
339
|
**Expire stale pheromones:**
|
|
340
340
|
```bash
|
|
341
|
-
|
|
341
|
+
aether pheromone-expire 2>/dev/null || true
|
|
342
342
|
```
|
|
343
343
|
|
|
344
344
|
**Load memory metrics:**
|
|
345
345
|
```bash
|
|
346
|
-
|
|
346
|
+
aether memory-metrics 2>/dev/null || echo '{}'
|
|
347
347
|
```
|
|
348
348
|
|
|
349
349
|
**Load instincts:**
|
|
@@ -363,7 +363,7 @@ From COLONY_STATE.json `events`:
|
|
|
363
363
|
|
|
364
364
|
**Count pheromone signals:**
|
|
365
365
|
```bash
|
|
366
|
-
|
|
366
|
+
aether pheromone-count 2>/dev/null || echo '{"result":{"count":0}}'
|
|
367
367
|
```
|
|
368
368
|
|
|
369
369
|
Display:
|
|
@@ -592,7 +592,7 @@ Next:
|
|
|
592
592
|
|
|
593
593
|
Run using the Bash tool:
|
|
594
594
|
```bash
|
|
595
|
-
|
|
595
|
+
aether activity-log "COMPLETE" "queen" "Colony audit completed - {recommendation}"
|
|
596
596
|
```
|
|
597
597
|
|
|
598
598
|
Display persistence confirmation:
|
|
@@ -28,7 +28,7 @@ If `goal` is null, output `No colony initialized. Nothing to pause.` and stop.
|
|
|
28
28
|
|
|
29
29
|
Run using the Bash tool:
|
|
30
30
|
```bash
|
|
31
|
-
|
|
31
|
+
aether pheromone-read
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
|
|
@@ -109,7 +109,7 @@ If `last_commit_suggestion_phase` equals the current phase, skip this step silen
|
|
|
109
109
|
|
|
110
110
|
3. **Generate the commit message:**
|
|
111
111
|
```bash
|
|
112
|
-
|
|
112
|
+
aether generate-commit-message --type "pause" --phase {current_phase} --subject "{phase_name}"
|
|
113
113
|
```
|
|
114
114
|
Parse the returned JSON to extract `message` and `files_changed`.
|
|
115
115
|
|
|
@@ -118,7 +118,7 @@ Stop here.
|
|
|
118
118
|
|
|
119
119
|
Run using the Bash tool with description "Displaying pheromones...":
|
|
120
120
|
```bash
|
|
121
|
-
|
|
121
|
+
aether pheromone-display "{subcommand or 'all'}"
|
|
122
122
|
```
|
|
123
123
|
|
|
124
124
|
The output will be the formatted pheromone table.
|
|
@@ -46,7 +46,7 @@ Stop here.
|
|
|
46
46
|
|
|
47
47
|
### Step 1.5: Load State and Show Resumption Context
|
|
48
48
|
|
|
49
|
-
Run using Bash tool: `
|
|
49
|
+
Run using Bash tool: `aether load-state`
|
|
50
50
|
|
|
51
51
|
If successful and goal is not null:
|
|
52
52
|
1. Extract current_phase from state
|
|
@@ -61,7 +61,7 @@ If .aether/HANDOFF.md exists (detected in load-state output):
|
|
|
61
61
|
- Read .aether/HANDOFF.md for additional context
|
|
62
62
|
- Remove .aether/HANDOFF.md after display (cleanup)
|
|
63
63
|
|
|
64
|
-
Run: `
|
|
64
|
+
Run: `aether unload-state` to release lock.
|
|
65
65
|
|
|
66
66
|
**Error handling:**
|
|
67
67
|
- If E_FILE_NOT_FOUND: "No colony initialized. Run /ant:init first." and stop
|
|
@@ -97,7 +97,7 @@ Select planning depth (prompt user if not explicitly provided):
|
|
|
97
97
|
|
|
98
98
|
Run using the Bash tool with description "Loading compact planning context...":
|
|
99
99
|
```bash
|
|
100
|
-
|
|
100
|
+
aether context-capsule --compact --json 2>/dev/null
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
If JSON is valid and `.ok == true`, extract `.result.prompt_section` into `context_capsule_prompt`.
|
|
@@ -179,7 +179,7 @@ Investigate domain knowledge for each phase before the planning loop begins. Thi
|
|
|
179
179
|
**1. Retrieve hive wisdom for research priming:**
|
|
180
180
|
|
|
181
181
|
```bash
|
|
182
|
-
hive_context=$(
|
|
182
|
+
hive_context=$(aether hive-read --limit 5 --format text 2>/dev/null)
|
|
183
183
|
```
|
|
184
184
|
|
|
185
185
|
Parse the JSON result to extract `.result.text` as `hive_text`. If command fails or returns empty, set `hive_text = ""`.
|
|
@@ -581,7 +581,7 @@ verify_state=$(jq -r '.state' .aether/data/COLONY_STATE.json)
|
|
|
581
581
|
if [[ "$verify_phases" -lt 1 || "$verify_timestamp" == "null" || "$verify_state" != "READY" ]]; then
|
|
582
582
|
echo "ERROR: Plan write verification failed (phases=$verify_phases, generated_at=$verify_timestamp, state=$verify_state)"
|
|
583
583
|
echo "Attempting retry write..."
|
|
584
|
-
|
|
584
|
+
aether state-write "$(jq --argjson phases "$(echo '$PLAN_JSON' | jq '.plan.phases')" --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" '.plan.phases = $phases | .plan.generated_at = $ts | .state = "READY"' .aether/data/COLONY_STATE.json)"
|
|
585
585
|
verify_phases=$(jq '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
586
586
|
if [[ "$verify_phases" -lt 1 ]]; then
|
|
587
587
|
echo "FATAL: Retry write also failed. Plan was not persisted."
|
|
@@ -592,7 +592,7 @@ fi
|
|
|
592
592
|
echo "Plan verified: $verify_phases phases, generated_at=$verify_timestamp, state=$verify_state"
|
|
593
593
|
```
|
|
594
594
|
|
|
595
|
-
Log plan completion: `
|
|
595
|
+
Log plan completion: `aether activity-log "PLAN_COMPLETE" "queen" "Plan finalized with {confidence}% confidence"`
|
|
596
596
|
|
|
597
597
|
Update watch-status.txt:
|
|
598
598
|
```
|
|
@@ -39,7 +39,7 @@ Stop here.
|
|
|
39
39
|
|
|
40
40
|
Run:
|
|
41
41
|
```bash
|
|
42
|
-
|
|
42
|
+
aether generate-ant-name --caste "scout"
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
Capture the output as `scout_name`.
|
|
@@ -54,7 +54,7 @@ Spawning {scout_name} — {query truncated to 50 chars}
|
|
|
54
54
|
|
|
55
55
|
Run:
|
|
56
56
|
```bash
|
|
57
|
-
|
|
57
|
+
aether spawn-log --name "Queen" --caste "scout" --id "{scout_name}" --description "Quick query: {query}"
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
|
|
@@ -73,14 +73,14 @@ Display your findings directly to the user.
|
|
|
73
73
|
|
|
74
74
|
Run:
|
|
75
75
|
```bash
|
|
76
|
-
|
|
76
|
+
aether spawn-complete --id "{scout_name}" --status "completed" --summary "Quick query answered"
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
### Step 5: Update Session (lightweight)
|
|
80
80
|
|
|
81
81
|
Run:
|
|
82
82
|
```bash
|
|
83
|
-
|
|
83
|
+
aether session-update --command "/ant:quick" --worker "" --summary "Quick query: {query truncated to 60 chars}" 2>/dev/null || true
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
**NOTE:** This command does NOT:
|
|
@@ -57,8 +57,8 @@ Write constraints.json.
|
|
|
57
57
|
|
|
58
58
|
**Write pheromone signal and update context:**
|
|
59
59
|
```bash
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
aether pheromone-write --type REDIRECT --content "$normalized_args" --strength 0.9 --reason "User warned colony away from pattern" 2>/dev/null || true
|
|
61
|
+
aether context-update --section constraint --key redirect --content "$normalized_args" "user" 2>/dev/null || true
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
### Step 3: Confirm
|
|
@@ -20,13 +20,13 @@ Parse `$normalized_args`:
|
|
|
20
20
|
|
|
21
21
|
### Step 0.5: Version Check (Non-blocking)
|
|
22
22
|
|
|
23
|
-
Run using the Bash tool: `
|
|
23
|
+
Run using the Bash tool: `aether version-check-cached 2>/dev/null || true`
|
|
24
24
|
|
|
25
25
|
If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
|
|
26
26
|
|
|
27
27
|
### Step 1: Load State and Validate
|
|
28
28
|
|
|
29
|
-
Run using Bash tool: `
|
|
29
|
+
Run using Bash tool: `aether load-state`
|
|
30
30
|
|
|
31
31
|
If successful:
|
|
32
32
|
1. Parse state from result
|
|
@@ -41,7 +41,7 @@ Keep state loaded (don't unload yet) - we'll need it for the full display.
|
|
|
41
41
|
|
|
42
42
|
Run using the Bash tool:
|
|
43
43
|
```bash
|
|
44
|
-
|
|
44
|
+
aether pheromone-read
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
|
|
@@ -133,7 +133,7 @@ Use Write tool to update COLONY_STATE.json:
|
|
|
133
133
|
|
|
134
134
|
Use Bash tool to remove HANDOFF.md: `rm -f .aether/HANDOFF.md`
|
|
135
135
|
|
|
136
|
-
Run: `
|
|
136
|
+
Run: `aether unload-state` to release lock.
|
|
137
137
|
|
|
138
138
|
---
|
|
139
139
|
|
|
@@ -32,7 +32,7 @@ Execute the following steps in order when the user runs `/ant:resume`.
|
|
|
32
32
|
|
|
33
33
|
Run::
|
|
34
34
|
```bash
|
|
35
|
-
|
|
35
|
+
aether session-read
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Parse the JSON result.
|
|
@@ -102,11 +102,9 @@ Do NOT proceed with stale or fabricated data.
|
|
|
102
102
|
|
|
103
103
|
### Step 3: Read Pheromone Signals
|
|
104
104
|
|
|
105
|
-
|
|
106
|
-
|
|
107
105
|
Run::
|
|
108
106
|
```bash
|
|
109
|
-
|
|
107
|
+
aether pheromone-read all
|
|
110
108
|
```
|
|
111
109
|
|
|
112
110
|
Parse the JSON result. Extract `.result.signals` array.
|
|
@@ -117,7 +115,6 @@ Parse the JSON result. Extract `.result.signals` array.
|
|
|
117
115
|
|
|
118
116
|
Note: pheromone-read applies decay calculation automatically. The `effective_strength` field reflects current signal strength after time-based decay. Signals below 0.1 effective strength are already filtered out.
|
|
119
117
|
|
|
120
|
-
|
|
121
118
|
---
|
|
122
119
|
|
|
123
120
|
### Step 4: Read CONTEXT.md
|
|
@@ -299,12 +296,9 @@ Recent Decisions:
|
|
|
299
296
|
|
|
300
297
|
{if signals array from Step 3 is not empty:}
|
|
301
298
|
Active Signals:
|
|
302
|
-
|
|
303
|
-
|
|
304
299
|
{for each signal in signals:}
|
|
305
300
|
{signal.type}: "{signal.content}" [{signal.effective_strength * 100 | floor}%]
|
|
306
301
|
{end}
|
|
307
|
-
|
|
308
302
|
{end}
|
|
309
303
|
```
|
|
310
304
|
|
|
@@ -314,7 +308,7 @@ Active Signals:
|
|
|
314
308
|
|
|
315
309
|
Run::
|
|
316
310
|
```bash
|
|
317
|
-
|
|
311
|
+
aether resume-dashboard
|
|
318
312
|
```
|
|
319
313
|
|
|
320
314
|
Extract memory_health from the JSON result:
|
|
@@ -346,7 +340,7 @@ Session: {session_id}
|
|
|
346
340
|
|
|
347
341
|
Run::
|
|
348
342
|
```bash
|
|
349
|
-
|
|
343
|
+
aether session-mark-resumed
|
|
350
344
|
```
|
|
351
345
|
|
|
352
346
|
### Step 10: Next Up
|
|
@@ -356,7 +350,7 @@ Generate the state-based Next Up block by Run::
|
|
|
356
350
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
357
351
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
358
352
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
359
|
-
|
|
353
|
+
aether print-next-up
|
|
360
354
|
```
|
|
361
355
|
|
|
362
356
|
---
|
|
@@ -367,10 +361,7 @@ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_pha
|
|
|
367
361
|
|-----------|----------|
|
|
368
362
|
| session.json missing (exists=false) | "No previous session found" — offer /ant:init and /ant:status |
|
|
369
363
|
| COLONY_STATE.json missing or corrupted | Pause, ask user: start fresh or recover |
|
|
370
|
-
|
|
371
|
-
|
|
372
364
|
| pheromone-read fails | Skip silently (no pheromones) |
|
|
373
|
-
|
|
374
365
|
| CONTEXT.md missing | Fall back to COLONY_STATE.json narrative |
|
|
375
366
|
| No plan phases, no generated_at | BLOCK — redirect to /ant:plan |
|
|
376
367
|
| Plan attempted but no phases | BLOCK — redirect to /ant:plan |
|
|
@@ -382,10 +373,7 @@ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_pha
|
|
|
382
373
|
|
|
383
374
|
## Key Constraints
|
|
384
375
|
|
|
385
|
-
|
|
386
|
-
|
|
387
376
|
- Use Read tool for COLONY_STATE.json (not bash cat/jq). Use Bash tool for pheromone-read (applies decay calculation).
|
|
388
|
-
|
|
389
377
|
- Use Bash tool only for aether-utils.sh commands and git commands
|
|
390
378
|
- Handle ALL missing/corrupted file cases gracefully
|
|
391
379
|
- Time-agnostic: restore identically regardless of how long ago the session was
|
|
@@ -74,9 +74,9 @@ replan suggestion (every {replan_interval} phases)
|
|
|
74
74
|
- If `milestone` == `"Crowned Anthill"`: output "This colony has been sealed. Start a new colony with `/ant:init \"new goal\"`." and stop
|
|
75
75
|
2. Determine remaining incomplete phases; apply `--max-phases` cap
|
|
76
76
|
3. Set `phases_completed = 0`, `autopilot_start = $(date +%s)`
|
|
77
|
-
4. Record pre-build blocker count: `
|
|
77
|
+
4. Record pre-build blocker count: `aether flag-check-blockers {phase}`
|
|
78
78
|
5. If `--headless` flag is present:
|
|
79
|
-
- Run: `
|
|
79
|
+
- Run: `aether autopilot-set-headless true`
|
|
80
80
|
- Display: `Headless mode: ON — interactive prompts will be queued as pending decisions`
|
|
81
81
|
6. Display: `AUTOPILOT ENGAGED | Goal: {goal} | Phase {N} | Max: {max or "all"}`
|
|
82
82
|
|
|
@@ -113,7 +113,7 @@ Log: `"<timestamp>|autopilot_paused|run|Paused at Phase {id}: {reason}"`
|
|
|
113
113
|
visual checkpoint prompt would normally be shown to the user, instead queue it as
|
|
114
114
|
a pending decision:
|
|
115
115
|
```bash
|
|
116
|
-
|
|
116
|
+
aether pending-decision-add \
|
|
117
117
|
--title "Visual checkpoint: Phase {id}" \
|
|
118
118
|
--type "checkpoint" \
|
|
119
119
|
--description "{checkpoint_description}" \
|
|
@@ -142,7 +142,7 @@ Skip the AskUserQuestion prompt. Instead, auto-PAUSE with reason
|
|
|
142
142
|
**Headless override for runtime verification:** If headless mode is active and
|
|
143
143
|
runtime verification would normally pause, queue as a pending decision instead:
|
|
144
144
|
```bash
|
|
145
|
-
|
|
145
|
+
aether pending-decision-add \
|
|
146
146
|
--title "Runtime verification needed: Phase {id}" \
|
|
147
147
|
--type "runtime-verification" \
|
|
148
148
|
--description "Manual testing required before advancing past Phase {id}" \
|
|
@@ -173,7 +173,7 @@ replan suggestion (see Step 5.5). For all others: PAUSE with reason, log event,
|
|
|
173
173
|
### Step 5: Auto-Advance and Loop
|
|
174
174
|
|
|
175
175
|
1. Increment `phases_completed`
|
|
176
|
-
2. Update autopilot state: `
|
|
176
|
+
2. Update autopilot state: `aether autopilot-update --action advance --phase {next} --result success`
|
|
177
177
|
3. Log: `"<timestamp>|autopilot_advance|run|Phase {prev} -> {next} ({phases_completed}/{max})"`
|
|
178
178
|
4. Display: `--- Autopilot: Phase {prev} done -> Phase {next} ({N}/{max}) ---`
|
|
179
179
|
5. **Replan check** (see Step 5.5)
|
|
@@ -185,7 +185,7 @@ replan suggestion (see Step 5.5). For all others: PAUSE with reason, log event,
|
|
|
185
185
|
After each successful phase advance, check if a replan pause should fire:
|
|
186
186
|
|
|
187
187
|
```bash
|
|
188
|
-
|
|
188
|
+
aether autopilot-check-replan --interval {replan_interval}
|
|
189
189
|
```
|
|
190
190
|
|
|
191
191
|
If `--continue` flag was passed: skip this check entirely (user dismissed replan).
|
|
@@ -226,7 +226,7 @@ Pending decisions: {N} — run `pending-decision-list` to review
|
|
|
226
226
|
```
|
|
227
227
|
|
|
228
228
|
Update session:
|
|
229
|
-
`
|
|
229
|
+
`aether session-update --command "/ant:run" --worker "/ant:run" --summary "Autopilot: {N} phases, now Phase {current}"`
|
|
230
230
|
|
|
231
231
|
## Execution Contract
|
|
232
232
|
|
|
@@ -171,7 +171,7 @@ Build a summary of what the colony accomplished across all phases:
|
|
|
171
171
|
- Summarize the goal and key outcomes in one line
|
|
172
172
|
|
|
173
173
|
```bash
|
|
174
|
-
|
|
174
|
+
aether changelog-append \
|
|
175
175
|
"$(date +%Y-%m-%d)" \
|
|
176
176
|
"seal-crowned-anthill" \
|
|
177
177
|
"00" \
|
|
@@ -192,7 +192,7 @@ Mark the colony as inactive in the global registry. This is silent on failure
|
|
|
192
192
|
|
|
193
193
|
Run using the Bash tool (ignore errors):
|
|
194
194
|
```bash
|
|
195
|
-
|
|
195
|
+
aether registry-add --path "$(pwd)" "$(jq -r '.version // "unknown"' ~/.aether/version.json 2>/dev/null || echo 'unknown')" --active false 2>/dev/null || true
|
|
196
196
|
```
|
|
197
197
|
|
|
198
198
|
If the command fails, proceed silently. This is optional bookkeeping.
|
|
@@ -237,7 +237,7 @@ for encoded in $high_conf_instincts; do
|
|
|
237
237
|
[[ -n "$repo_domain_tags" ]] && promote_args+=(--domain "$repo_domain_tags")
|
|
238
238
|
|
|
239
239
|
# Call hive-promote which orchestrates abstract + store
|
|
240
|
-
result=$(
|
|
240
|
+
result=$(aether "${promote_args[@]}" 2>/dev/null || echo '{}')
|
|
241
241
|
was_promoted=$(echo "$result" | jq -r '.result.action // "skipped"' 2>/dev/null || echo "skipped")
|
|
242
242
|
|
|
243
243
|
if [[ "$was_promoted" == "promoted" || "$was_promoted" == "merged" ]]; then
|
|
@@ -283,7 +283,7 @@ Export colony data as a combined XML archive and a standalone pheromones.xml. Bo
|
|
|
283
283
|
```bash
|
|
284
284
|
# Check if xmllint is available
|
|
285
285
|
if command -v xmllint >/dev/null 2>&1; then
|
|
286
|
-
xml_result=$(
|
|
286
|
+
xml_result=$(aether colony-archive-xml --output ".aether/exchange/colony-archive.xml" 2>&1)
|
|
287
287
|
xml_ok=$(echo "$xml_result" | jq -r '.ok // false' 2>/dev/null)
|
|
288
288
|
if [[ "$xml_ok" == "true" ]]; then
|
|
289
289
|
xml_pheromone_count=$(echo "$xml_result" | jq -r '.result.pheromone_count // 0' 2>/dev/null)
|
|
@@ -293,7 +293,7 @@ if command -v xmllint >/dev/null 2>&1; then
|
|
|
293
293
|
fi
|
|
294
294
|
|
|
295
295
|
# Also export standalone pheromones.xml for cross-colony sharing
|
|
296
|
-
pher_result=$(
|
|
296
|
+
pher_result=$(aether pheromone-export-xml --output ".aether/exchange/pheromones.xml" 2>&1)
|
|
297
297
|
pher_ok=$(echo "$pher_result" | jq -r '.ok // false' 2>/dev/null)
|
|
298
298
|
if [[ "$pher_ok" == "true" ]]; then
|
|
299
299
|
pher_signal_count=$(jq '[.signals[] | select(.active != false)] | length' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
@@ -303,7 +303,7 @@ if command -v xmllint >/dev/null 2>&1; then
|
|
|
303
303
|
fi
|
|
304
304
|
|
|
305
305
|
# Export standalone queen-wisdom.xml for cross-colony wisdom sharing
|
|
306
|
-
wisdom_result=$(
|
|
306
|
+
wisdom_result=$(aether wisdom-export-xml ".aether/exchange/queen-wisdom.xml" 2>&1)
|
|
307
307
|
wisdom_ok=$(echo "$wisdom_result" | jq -r '.ok // false' 2>/dev/null)
|
|
308
308
|
if [[ "$wisdom_ok" == "true" ]]; then
|
|
309
309
|
wisdom_count=$(echo "$wisdom_result" | jq -r '.result.entries // 0' 2>/dev/null)
|
|
@@ -313,7 +313,7 @@ if command -v xmllint >/dev/null 2>&1; then
|
|
|
313
313
|
fi
|
|
314
314
|
|
|
315
315
|
# Export standalone colony-registry.xml for lineage tracking
|
|
316
|
-
registry_result=$(
|
|
316
|
+
registry_result=$(aether registry-export-xml ".aether/exchange/colony-registry.xml" 2>&1)
|
|
317
317
|
registry_ok=$(echo "$registry_result" | jq -r '.ok // false' 2>/dev/null)
|
|
318
318
|
if [[ "$registry_ok" == "true" ]]; then
|
|
319
319
|
registry_count=$(echo "$registry_result" | jq -r '.result.colonies // 0' 2>/dev/null)
|
|
@@ -384,7 +384,7 @@ After the ceremony, offer to commit all colony work.
|
|
|
384
384
|
|
|
385
385
|
Generate a seal commit message:
|
|
386
386
|
```bash
|
|
387
|
-
seal_commit=$(
|
|
387
|
+
seal_commit=$(aether generate-commit-message seal "$phases_completed" "$goal" "$colony_age_days" 2>/dev/null)
|
|
388
388
|
seal_message=$(echo "$seal_commit" | jq -r '.result.message // "aether-seal: colony sealed"')
|
|
389
389
|
seal_body=$(echo "$seal_commit" | jq -r '.result.body // ""')
|
|
390
390
|
```
|
|
@@ -57,7 +57,7 @@ Create the skill file with proper frontmatter and body:
|
|
|
57
57
|
### Step 4: Write and Verify
|
|
58
58
|
|
|
59
59
|
1. Write to `~/.aether/skills/domain/{name}/SKILL.md`
|
|
60
|
-
2. Run: `
|
|
61
|
-
3. Run: `
|
|
60
|
+
2. Run: `aether skill-parse-frontmatter ~/.aether/skills/domain/{name}/SKILL.md`
|
|
61
|
+
3. Run: `aether skill-cache-rebuild`
|
|
62
62
|
4. Show the generated skill to the user
|
|
63
63
|
5. Ask if they want to adjust anything
|