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
|
@@ -20,7 +20,7 @@ Drill-down view of accumulated colony wisdom, pending promotions, and recent fai
|
|
|
20
20
|
|
|
21
21
|
Run using the Bash tool with description "Loading colony memory...":
|
|
22
22
|
```bash
|
|
23
|
-
|
|
23
|
+
aether memory-metrics
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
### Step 2: Display Wisdom (from QUEEN.md)
|
|
@@ -166,6 +166,6 @@ Generate the state-based Next Up block by running using the Bash tool with descr
|
|
|
166
166
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
167
167
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
168
168
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
169
|
-
|
|
169
|
+
aether print-next-up
|
|
170
170
|
```
|
|
171
171
|
|
|
@@ -44,10 +44,10 @@ Oracle peering into the depths...
|
|
|
44
44
|
|
|
45
45
|
### Step 0b: Stop Oracle
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
Stop any active Oracle research by running using the Bash tool with description "Stopping oracle research...":
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
mkdir -p .aether/oracle && touch .aether/oracle/.stop
|
|
50
|
+
mkdir -p .aether/oracle && touch .aether/oracle/.stop && rm -f .aether/oracle/.loop-active
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
Output:
|
|
@@ -55,8 +55,11 @@ Output:
|
|
|
55
55
|
```
|
|
56
56
|
🔮🐜 Oracle Stop Signal Sent
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
Removed loop state files.
|
|
59
|
+
- .aether/oracle/.stop (signal for legacy tmux loop)
|
|
60
|
+
- .aether/oracle/.loop-active (signal for in-session loop)
|
|
61
|
+
|
|
62
|
+
Any active research will halt at the next iteration boundary.
|
|
60
63
|
|
|
61
64
|
To check final results: /ant:oracle status
|
|
62
65
|
```
|
|
@@ -409,14 +412,14 @@ ORACLE_START=$(date +%s)
|
|
|
409
412
|
|
|
410
413
|
Check for stale files by running using the Bash tool with description "Checking for stale oracle session...":
|
|
411
414
|
```bash
|
|
412
|
-
stale_check=$(
|
|
415
|
+
stale_check=$(aether session-verify-fresh --command oracle "" "$ORACLE_START")
|
|
413
416
|
has_stale=$(echo "$stale_check" | jq -r '.stale | length')
|
|
414
417
|
has_progress=$(echo "$stale_check" | jq -r '.fresh | length')
|
|
415
418
|
|
|
416
419
|
if [[ "$has_stale" -gt 0 ]] || [[ "$has_progress" -gt 0 ]]; then
|
|
417
420
|
# Found existing oracle session
|
|
418
421
|
if [[ "$force_research" == "true" ]]; then
|
|
419
|
-
|
|
422
|
+
aether session-clear --command oracle
|
|
420
423
|
echo "Cleared stale oracle session for fresh research"
|
|
421
424
|
else
|
|
422
425
|
# Existing session found - prompt user
|
|
@@ -482,7 +485,7 @@ Use the Write tool to create `.aether/oracle/state.json`:
|
|
|
482
485
|
For each focus area string from Question 7, run using the Bash tool with description "Emitting focus area pheromones...":
|
|
483
486
|
|
|
484
487
|
```bash
|
|
485
|
-
|
|
488
|
+
aether pheromone-write --type FOCUS --content "$focus_area" \
|
|
486
489
|
--strength 0.8 --source "oracle:wizard" \
|
|
487
490
|
--reason "Focus area set in oracle wizard" --ttl "24h" 2>/dev/null || true
|
|
488
491
|
```
|
|
@@ -581,7 +584,7 @@ Next investigation: <text of q1, the first question>
|
|
|
581
584
|
|
|
582
585
|
Verify that state.json, plan.json, gaps.md, synthesis.md, and research-plan.md were created successfully by running using the Bash tool with description "Verifying oracle files...":
|
|
583
586
|
```bash
|
|
584
|
-
verify_result=$(
|
|
587
|
+
verify_result=$(aether session-verify-fresh --command oracle "" "$ORACLE_START")
|
|
585
588
|
fresh_count=$(echo "$verify_result" | jq -r '.fresh | length')
|
|
586
589
|
|
|
587
590
|
if [[ "$fresh_count" -lt 5 ]]; then
|
|
@@ -593,7 +596,7 @@ Proceed to Step 3.
|
|
|
593
596
|
|
|
594
597
|
---
|
|
595
598
|
|
|
596
|
-
### Step 3: Launch
|
|
599
|
+
### Step 3: Launch (In-Session Loop)
|
|
597
600
|
|
|
598
601
|
Output the research configuration summary, showing the sub-questions from plan.json:
|
|
599
602
|
|
|
@@ -617,61 +620,59 @@ Output the research configuration summary, showing the sub-questions from plan.j
|
|
|
617
620
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
618
621
|
```
|
|
619
622
|
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
**Try tmux** by running using the Bash tool with description "Launching oracle in tmux...":
|
|
623
|
+
**Create the loop marker file** by running using the Bash tool with description "Creating oracle loop marker...":
|
|
623
624
|
|
|
624
625
|
```bash
|
|
625
|
-
|
|
626
|
+
SESSION_ID="${CLAUDE_SESSION_ID:-$(uuidgen 2>/dev/null || date +%s)}"
|
|
627
|
+
MAX_IT=<max_iterations from wizard>
|
|
628
|
+
TARGET_CONF=<target_confidence from wizard>
|
|
629
|
+
cat > .aether/oracle/.loop-active <<MARKER
|
|
630
|
+
---
|
|
631
|
+
iteration: 0
|
|
632
|
+
max_iterations: $MAX_IT
|
|
633
|
+
session_id: $SESSION_ID
|
|
634
|
+
phase: survey
|
|
635
|
+
target_confidence: $TARGET_CONF
|
|
636
|
+
synthesis_done: false
|
|
637
|
+
oracle_md_path: .aether/utils/oracle/oracle.md
|
|
638
|
+
---
|
|
639
|
+
Oracle research loop active
|
|
640
|
+
MARKER
|
|
641
|
+
echo "LOOP_MARKER_CREATED"
|
|
626
642
|
```
|
|
627
643
|
|
|
628
|
-
|
|
644
|
+
Output:
|
|
629
645
|
|
|
630
646
|
```
|
|
631
|
-
🔮🐜 Oracle
|
|
647
|
+
🔮🐜 Oracle Research Started (In-Session Loop)
|
|
632
648
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
633
649
|
|
|
634
|
-
The Oracle is researching
|
|
650
|
+
The Oracle is researching IN THIS SESSION.
|
|
651
|
+
|
|
652
|
+
The Stop hook will keep the loop running automatically:
|
|
653
|
+
- Each iteration researches one question
|
|
654
|
+
- Phases advance: survey -> investigate -> synthesize -> verify
|
|
655
|
+
- Loop ends when confidence reaches {target_confidence}% or max iterations hit
|
|
656
|
+
- A final synthesis pass produces the research report
|
|
635
657
|
|
|
636
|
-
👁️ Watch live: tmux attach -t oracle
|
|
637
658
|
📊 Check status: /ant:oracle status
|
|
638
659
|
🛑 Stop early: /ant:oracle stop
|
|
639
660
|
|
|
640
661
|
Research progress visible at .aether/oracle/research-plan.md
|
|
641
|
-
The Oracle will stop when it reaches {target_confidence}% confidence
|
|
642
|
-
or completes {max_iterations} iterations.
|
|
643
662
|
|
|
644
663
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
645
664
|
|
|
646
|
-
You can
|
|
665
|
+
You can continue chatting. The Oracle loop runs between your messages.
|
|
647
666
|
```
|
|
648
667
|
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
```
|
|
654
|
-
🔮 Ready to Launch
|
|
655
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
656
|
-
|
|
657
|
-
tmux not available. Run this in a separate terminal:
|
|
658
|
-
|
|
659
|
-
cd {current_working_directory}
|
|
660
|
-
bash .aether/utils/oracle/oracle.sh
|
|
661
|
-
|
|
662
|
-
Then come back here:
|
|
663
|
-
📊 Check status: /ant:oracle status
|
|
664
|
-
🛑 Stop early: /ant:oracle stop
|
|
665
|
-
|
|
666
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
667
|
-
```
|
|
668
|
+
**Now begin the first iteration.** Read `.aether/utils/oracle/oracle.md` and start the survey phase research immediately.
|
|
669
|
+
Target the first untouched question from plan.json. Update state files as you go.
|
|
670
|
+
When you try to stop, the Stop hook will check progress and continue the loop if needed.
|
|
668
671
|
|
|
669
672
|
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
670
673
|
```bash
|
|
671
674
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
672
675
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
673
676
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
674
|
-
|
|
677
|
+
aether print-next-up
|
|
675
678
|
```
|
|
676
|
-
|
|
677
|
-
Stop here.
|
|
@@ -33,7 +33,7 @@ From COLONY_STATE.json, extract:
|
|
|
33
33
|
|
|
34
34
|
Run using the Bash tool with description "Loading active pheromones...":
|
|
35
35
|
```bash
|
|
36
|
-
|
|
36
|
+
aether pheromone-read
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
|
|
@@ -209,7 +209,7 @@ Next:
|
|
|
209
209
|
|
|
210
210
|
Use the Bash tool with description "Logging hygiene activity..." to run:
|
|
211
211
|
```
|
|
212
|
-
|
|
212
|
+
aether activity-log "COMPLETE" "queen" "Hygiene report generated"
|
|
213
213
|
```
|
|
214
214
|
|
|
215
215
|
Display persistence confirmation:
|
|
@@ -228,5 +228,5 @@ Generate the state-based Next Up block by running using the Bash tool with descr
|
|
|
228
228
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
229
229
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
230
230
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
231
|
-
|
|
231
|
+
aether print-next-up
|
|
232
232
|
```
|
|
@@ -249,12 +249,12 @@ Run these commands in parallel using the Bash tool:
|
|
|
249
249
|
|
|
250
250
|
**Flags check:**
|
|
251
251
|
```bash
|
|
252
|
-
|
|
252
|
+
aether flag-list --json 2>/dev/null || echo '{"result":{"flags":[]}}'
|
|
253
253
|
```
|
|
254
254
|
|
|
255
255
|
**Midden check:**
|
|
256
256
|
```bash
|
|
257
|
-
|
|
257
|
+
aether midden-recent-failures 2>/dev/null || echo '{"result":{"failures":[]}}'
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
**Parse flag results:**
|
|
@@ -332,12 +332,12 @@ Display: `Checking colony health...`
|
|
|
332
332
|
|
|
333
333
|
**Expire stale pheromones:**
|
|
334
334
|
```bash
|
|
335
|
-
|
|
335
|
+
aether pheromone-expire 2>/dev/null || true
|
|
336
336
|
```
|
|
337
337
|
|
|
338
338
|
**Load memory metrics:**
|
|
339
339
|
```bash
|
|
340
|
-
|
|
340
|
+
aether memory-metrics 2>/dev/null || echo '{}'
|
|
341
341
|
```
|
|
342
342
|
|
|
343
343
|
**Load instincts:**
|
|
@@ -357,7 +357,7 @@ From COLONY_STATE.json `events`:
|
|
|
357
357
|
|
|
358
358
|
**Count pheromone signals:**
|
|
359
359
|
```bash
|
|
360
|
-
|
|
360
|
+
aether pheromone-count 2>/dev/null || echo '{"result":{"count":0}}'
|
|
361
361
|
```
|
|
362
362
|
|
|
363
363
|
Display:
|
|
@@ -586,7 +586,7 @@ Next:
|
|
|
586
586
|
|
|
587
587
|
Run using the Bash tool:
|
|
588
588
|
```bash
|
|
589
|
-
|
|
589
|
+
aether activity-log "COMPLETE" "queen" "Colony audit completed - {recommendation}"
|
|
590
590
|
```
|
|
591
591
|
|
|
592
592
|
Display persistence confirmation:
|
|
@@ -25,7 +25,7 @@ If `goal` is null, output `No colony initialized. Nothing to pause.` and stop.
|
|
|
25
25
|
|
|
26
26
|
Run using the Bash tool with description "Loading active pheromones...":
|
|
27
27
|
```bash
|
|
28
|
-
|
|
28
|
+
aether pheromone-read
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
|
|
@@ -117,7 +117,7 @@ Store this as `ai_description`. If no clear description emerges, leave empty (wi
|
|
|
117
117
|
|
|
118
118
|
**4. Generate Enhanced Commit Message:**
|
|
119
119
|
```bash
|
|
120
|
-
|
|
120
|
+
aether generate-commit-message --type "contextual" --phase {current_phase} --subject "{phase_name}" "{ai_description}" {plan_number}
|
|
121
121
|
```
|
|
122
122
|
|
|
123
123
|
Parse the returned JSON to extract `message`, `body`, `files_changed`, `subsystem`, and `scope`.
|
|
@@ -173,12 +173,12 @@ Continue to Step 5.
|
|
|
173
173
|
Log this pause activity to `.aether/CONTEXT.md` by running using the Bash tool with description "Updating context document...":
|
|
174
174
|
|
|
175
175
|
```bash
|
|
176
|
-
|
|
176
|
+
aether context-update activity "pause-colony" "Colony paused — handoff created" "—"
|
|
177
177
|
```
|
|
178
178
|
|
|
179
179
|
Update safe-to-clear status by running using the Bash tool with description "Marking safe to clear...":
|
|
180
180
|
```bash
|
|
181
|
-
|
|
181
|
+
aether context-update safe-to-clear "YES" "Colony paused — safe to /clear, run /ant:resume-colony to continue"
|
|
182
182
|
```
|
|
183
183
|
|
|
184
184
|
### Step 5: Display Confirmation
|
|
@@ -229,5 +229,5 @@ Generate the state-based Next Up block by running using the Bash tool with descr
|
|
|
229
229
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
230
230
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
231
231
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
232
|
-
|
|
232
|
+
aether print-next-up
|
|
233
233
|
```
|
|
@@ -75,7 +75,7 @@ After displaying phase details, generate the state-based Next Up block by runnin
|
|
|
75
75
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
76
76
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
77
77
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
78
|
-
|
|
78
|
+
aether print-next-up
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
|
|
@@ -112,7 +112,7 @@ Stop here.
|
|
|
112
112
|
|
|
113
113
|
Run using the Bash tool with description "Displaying pheromones...":
|
|
114
114
|
```bash
|
|
115
|
-
|
|
115
|
+
aether pheromone-display "{subcommand or 'all'}"
|
|
116
116
|
```
|
|
117
117
|
|
|
118
118
|
The output will be the formatted pheromone table.
|
|
@@ -39,7 +39,7 @@ Stop here.
|
|
|
39
39
|
|
|
40
40
|
### Step 1.5: Load State and Show Resumption Context
|
|
41
41
|
|
|
42
|
-
Run using Bash tool: `
|
|
42
|
+
Run using Bash tool: `aether load-state`
|
|
43
43
|
|
|
44
44
|
If successful and goal is not null:
|
|
45
45
|
1. Extract current_phase from state
|
|
@@ -54,7 +54,7 @@ If .aether/HANDOFF.md exists (detected in load-state output):
|
|
|
54
54
|
- Read .aether/HANDOFF.md for additional context
|
|
55
55
|
- Remove .aether/HANDOFF.md after display (cleanup)
|
|
56
56
|
|
|
57
|
-
Run: `
|
|
57
|
+
Run: `aether unload-state` to release lock.
|
|
58
58
|
|
|
59
59
|
**Error handling:**
|
|
60
60
|
- If E_FILE_NOT_FOUND: "No colony initialized. Run /ant:init first." and stop
|
|
@@ -90,7 +90,7 @@ Select planning depth (prompt user if not explicitly provided):
|
|
|
90
90
|
|
|
91
91
|
Run using the Bash tool with description "Loading compact planning context...":
|
|
92
92
|
```bash
|
|
93
|
-
|
|
93
|
+
aether context-capsule --compact --json 2>/dev/null
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
If JSON is valid and `.ok == true`, extract `.result.prompt_section` into `context_capsule_prompt`.
|
|
@@ -172,7 +172,7 @@ Investigate domain knowledge for each phase before the planning loop begins. Thi
|
|
|
172
172
|
**1. Retrieve hive wisdom for research priming:**
|
|
173
173
|
|
|
174
174
|
```bash
|
|
175
|
-
hive_context=$(
|
|
175
|
+
hive_context=$(aether hive-read --limit 5 --format text 2>/dev/null)
|
|
176
176
|
```
|
|
177
177
|
|
|
178
178
|
Parse the JSON result to extract `.result.text` as `hive_text`. If command fails or returns empty, set `hive_text = ""`.
|
|
@@ -574,7 +574,7 @@ if [[ "$verify_phases" -lt 1 || "$verify_timestamp" == "null" || "$verify_state"
|
|
|
574
574
|
echo "ERROR: Plan write verification failed (phases=$verify_phases, generated_at=$verify_timestamp, state=$verify_state)"
|
|
575
575
|
echo "Attempting retry write..."
|
|
576
576
|
# Retry: re-read, update, write via state API
|
|
577
|
-
|
|
577
|
+
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)"
|
|
578
578
|
verify_phases=$(jq '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
579
579
|
if [[ "$verify_phases" -lt 1 ]]; then
|
|
580
580
|
echo "FATAL: Retry write also failed. Plan was not persisted."
|
|
@@ -585,7 +585,7 @@ fi
|
|
|
585
585
|
echo "Plan verified: $verify_phases phases, generated_at=$verify_timestamp, state=$verify_state"
|
|
586
586
|
```
|
|
587
587
|
|
|
588
|
-
Log: `
|
|
588
|
+
Log: `aether activity-log "PLAN_COMPLETE" "queen" "Plan finalized with {confidence}% confidence"`
|
|
589
589
|
|
|
590
590
|
Update watch-status.txt:
|
|
591
591
|
```
|
|
@@ -604,7 +604,7 @@ Ready to build.
|
|
|
604
604
|
Update the session tracking file to enable `/ant:resume` after context clear:
|
|
605
605
|
|
|
606
606
|
```bash
|
|
607
|
-
|
|
607
|
+
aether session-update --command "/ant:plan" --worker "/ant:build 1" --summary "Plan generated with {confidence}% confidence, {N} phases"
|
|
608
608
|
```
|
|
609
609
|
|
|
610
610
|
### Step 7: Display Plan
|
|
@@ -653,7 +653,7 @@ After displaying the plan, generate the state-based Next Up block:
|
|
|
653
653
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
654
654
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
655
655
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
656
|
-
|
|
656
|
+
aether print-next-up
|
|
657
657
|
```
|
|
658
658
|
|
|
659
659
|
---
|
|
@@ -33,7 +33,7 @@ Stop here.
|
|
|
33
33
|
|
|
34
34
|
Run using the Bash tool with description "Naming scout...":
|
|
35
35
|
```bash
|
|
36
|
-
|
|
36
|
+
aether generate-ant-name --caste "scout"
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
Capture the output as `scout_name`.
|
|
@@ -48,7 +48,7 @@ Spawning {scout_name} — {query truncated to 50 chars}
|
|
|
48
48
|
|
|
49
49
|
Run using the Bash tool with description "Dispatching scout...":
|
|
50
50
|
```bash
|
|
51
|
-
|
|
51
|
+
aether spawn-log --name "Queen" --caste "scout" --id "{scout_name}" --description "Quick query: {query}"
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
|
|
@@ -82,14 +82,14 @@ Display the Scout's answer directly to the user.
|
|
|
82
82
|
|
|
83
83
|
Run using the Bash tool with description "Recording scout completion...":
|
|
84
84
|
```bash
|
|
85
|
-
|
|
85
|
+
aether spawn-complete --id "{scout_name}" --status "completed" --summary "Quick query answered"
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
### Step 5: Update Session (lightweight)
|
|
89
89
|
|
|
90
90
|
Run using the Bash tool with description "Updating session...":
|
|
91
91
|
```bash
|
|
92
|
-
|
|
92
|
+
aether session-update --command "/ant:quick" --worker "" --summary "Quick query: {query truncated to 60 chars}" 2>/dev/null || true
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
**NOTE:** This command does NOT:
|
|
@@ -32,7 +32,7 @@ If `goal: null` -> "No colony initialized.", stop.
|
|
|
32
32
|
|
|
33
33
|
Run using the Bash tool with description "Setting colony redirect...":
|
|
34
34
|
```bash
|
|
35
|
-
|
|
35
|
+
aether pheromone-write --type REDIRECT --content "<content>" --strength 0.9 --reason "User warned colony away from pattern" --ttl <ttl>
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Parse the returned JSON for the signal ID.
|
|
@@ -41,14 +41,14 @@ Parse the returned JSON for the signal ID.
|
|
|
41
41
|
|
|
42
42
|
Run using the Bash tool with description "Updating context document...":
|
|
43
43
|
```bash
|
|
44
|
-
|
|
44
|
+
aether context-update --section constraint --key redirect --content "<content>" "user" 2>/dev/null || true
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
### Step 3: Get Active Counts
|
|
48
48
|
|
|
49
49
|
Run using the Bash tool with description "Counting active signals...":
|
|
50
50
|
```bash
|
|
51
|
-
|
|
51
|
+
aether pheromone-count
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
### Step 4: Confirm
|
|
@@ -71,6 +71,6 @@ Generate the state-based Next Up block by running using the Bash tool with descr
|
|
|
71
71
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
72
72
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
73
73
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
74
|
-
|
|
74
|
+
aether print-next-up
|
|
75
75
|
```
|
|
76
76
|
|
|
@@ -17,13 +17,13 @@ Parse `$ARGUMENTS`:
|
|
|
17
17
|
If `visual_mode` is true, run using the Bash tool with description "Initializing resume display...":
|
|
18
18
|
### Step 0.5: Version Check (Non-blocking)
|
|
19
19
|
|
|
20
|
-
Run using the Bash tool with description "Checking colony version...": `
|
|
20
|
+
Run using the Bash tool with description "Checking colony version...": `aether version-check-cached 2>/dev/null || true`
|
|
21
21
|
|
|
22
22
|
If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
|
|
23
23
|
|
|
24
24
|
### Step 1: Load State and Validate
|
|
25
25
|
|
|
26
|
-
Run using the Bash tool with description "Restoring colony session...": `
|
|
26
|
+
Run using the Bash tool with description "Restoring colony session...": `aether load-state`
|
|
27
27
|
|
|
28
28
|
If successful:
|
|
29
29
|
1. Parse state from result
|
|
@@ -38,7 +38,7 @@ Keep state loaded (don't unload yet) - we'll need it for the full display.
|
|
|
38
38
|
|
|
39
39
|
Run using the Bash tool with description "Loading active pheromones...":
|
|
40
40
|
```bash
|
|
41
|
-
|
|
41
|
+
aether pheromone-read
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
|
|
@@ -130,7 +130,7 @@ Use Write tool to update COLONY_STATE.json:
|
|
|
130
130
|
|
|
131
131
|
Use Bash tool with description "Cleaning up handoff file..." to remove HANDOFF.md: `rm -f .aether/HANDOFF.md`
|
|
132
132
|
|
|
133
|
-
Run using the Bash tool with description "Releasing colony lock...": `
|
|
133
|
+
Run using the Bash tool with description "Releasing colony lock...": `aether unload-state` to release lock.
|
|
134
134
|
|
|
135
135
|
### Step 7: Next Up
|
|
136
136
|
|
|
@@ -139,7 +139,7 @@ Generate the state-based Next Up block by running using the Bash tool with descr
|
|
|
139
139
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
140
140
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
141
141
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
142
|
-
|
|
142
|
+
aether print-next-up
|
|
143
143
|
```
|
|
144
144
|
|
|
145
145
|
---
|
|
@@ -26,7 +26,7 @@ Execute the following steps in order when the user runs `/ant:resume`.
|
|
|
26
26
|
|
|
27
27
|
Run using the Bash tool with description "Restoring colony session..."::
|
|
28
28
|
```bash
|
|
29
|
-
|
|
29
|
+
aether session-read
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
Parse the JSON result.
|
|
@@ -96,18 +96,18 @@ Do NOT proceed with stale or fabricated data.
|
|
|
96
96
|
|
|
97
97
|
### Step 3: Read Pheromone Signals
|
|
98
98
|
|
|
99
|
+
Run using the Bash tool with description "Loading active pheromone signals..."::
|
|
100
|
+
```bash
|
|
101
|
+
aether pheromone-read all
|
|
102
|
+
```
|
|
99
103
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
Extract the following top-level keys:
|
|
103
|
-
- `focus` array — active focus signals (if key missing, treat as empty array)
|
|
104
|
-
- `constraints` array — active redirect/constraint signals (if key missing, treat as empty array)
|
|
105
|
-
|
|
106
|
-
If the file is missing: skip silently (no pheromones active).
|
|
107
|
-
|
|
108
|
-
Pheromones persist until explicitly cleared — no decay.
|
|
104
|
+
Parse the JSON result. Extract `.result.signals` array.
|
|
109
105
|
|
|
106
|
+
- If `ok` is `true` and `.result.signals` is non-empty: store signals for dashboard rendering in Step 8
|
|
107
|
+
- If `ok` is `true` and `.result.signals` is empty: no active pheromones (skip in dashboard)
|
|
108
|
+
- If the command fails or returns an error: skip silently (no pheromones active)
|
|
110
109
|
|
|
110
|
+
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.
|
|
111
111
|
|
|
112
112
|
---
|
|
113
113
|
|
|
@@ -290,15 +290,9 @@ Recent Decisions:
|
|
|
290
290
|
|
|
291
291
|
{if signals array from Step 3 is not empty:}
|
|
292
292
|
Active Signals:
|
|
293
|
-
|
|
294
|
-
{
|
|
295
|
-
FOCUS: {focus text}
|
|
293
|
+
{for each signal in signals:}
|
|
294
|
+
{signal.type}: "{signal.content}" [{signal.effective_strength * 100 | floor}%]
|
|
296
295
|
{end}
|
|
297
|
-
{for each constraint signal:}
|
|
298
|
-
REDIRECT: {constraint text}
|
|
299
|
-
{end}
|
|
300
|
-
|
|
301
|
-
|
|
302
296
|
{end}
|
|
303
297
|
```
|
|
304
298
|
|
|
@@ -308,7 +302,7 @@ Active Signals:
|
|
|
308
302
|
|
|
309
303
|
Run using the Bash tool with description "Loading memory health..."::
|
|
310
304
|
```bash
|
|
311
|
-
|
|
305
|
+
aether resume-dashboard
|
|
312
306
|
```
|
|
313
307
|
|
|
314
308
|
Extract memory_health from the JSON result:
|
|
@@ -340,7 +334,7 @@ Session: {session_id}
|
|
|
340
334
|
|
|
341
335
|
Run using the Bash tool with description "Marking session as resumed..."::
|
|
342
336
|
```bash
|
|
343
|
-
|
|
337
|
+
aether session-mark-resumed
|
|
344
338
|
```
|
|
345
339
|
|
|
346
340
|
### Step 10: Next Up
|
|
@@ -350,7 +344,7 @@ Generate the state-based Next Up block by Run using the Bash tool with descripti
|
|
|
350
344
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
351
345
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
352
346
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
353
|
-
|
|
347
|
+
aether print-next-up
|
|
354
348
|
```
|
|
355
349
|
|
|
356
350
|
---
|
|
@@ -361,10 +355,7 @@ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_pha
|
|
|
361
355
|
|-----------|----------|
|
|
362
356
|
| session.json missing (exists=false) | "No previous session found" — offer /ant:init and /ant:status |
|
|
363
357
|
| COLONY_STATE.json missing or corrupted | Pause, ask user: start fresh or recover |
|
|
364
|
-
|
|
365
|
-
| constraints.json missing | Skip silently (no pheromones) |
|
|
366
|
-
|
|
367
|
-
|
|
358
|
+
| pheromone-read fails | Skip silently (no pheromones) |
|
|
368
359
|
| CONTEXT.md missing | Fall back to COLONY_STATE.json narrative |
|
|
369
360
|
| No plan phases, no generated_at | BLOCK — redirect to /ant:plan |
|
|
370
361
|
| Plan attempted but no phases | BLOCK — redirect to /ant:plan |
|
|
@@ -376,10 +367,7 @@ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_pha
|
|
|
376
367
|
|
|
377
368
|
## Key Constraints
|
|
378
369
|
|
|
379
|
-
|
|
380
|
-
- Use Read tool for COLONY_STATE.json and constraints.json (not bash cat/jq).
|
|
381
|
-
|
|
382
|
-
|
|
370
|
+
- Use Read tool for COLONY_STATE.json (not bash cat/jq). Use Bash tool for pheromone-read (applies decay calculation).
|
|
383
371
|
- Use Bash tool only for aether-utils.sh commands and git commands
|
|
384
372
|
- Handle ALL missing/corrupted file cases gracefully
|
|
385
373
|
- Time-agnostic: restore identically regardless of how long ago the session was
|