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.
Files changed (142) hide show
  1. package/.aether/commands/archaeology.yaml +3 -3
  2. package/.aether/commands/build.yaml +45 -45
  3. package/.aether/commands/chaos.yaml +7 -7
  4. package/.aether/commands/colonize.yaml +17 -17
  5. package/.aether/commands/continue.yaml +40 -40
  6. package/.aether/commands/council.yaml +6 -6
  7. package/.aether/commands/data-clean.yaml +3 -3
  8. package/.aether/commands/dream.yaml +2 -2
  9. package/.aether/commands/entomb.yaml +11 -11
  10. package/.aether/commands/export-signals.yaml +2 -2
  11. package/.aether/commands/feedback.yaml +6 -6
  12. package/.aether/commands/flag.yaml +2 -2
  13. package/.aether/commands/flags.yaml +4 -4
  14. package/.aether/commands/focus.yaml +6 -6
  15. package/.aether/commands/help.yaml +1 -1
  16. package/.aether/commands/history.yaml +1 -1
  17. package/.aether/commands/import-signals.yaml +2 -2
  18. package/.aether/commands/init.yaml +16 -16
  19. package/.aether/commands/insert-phase.yaml +1 -1
  20. package/.aether/commands/interpret.yaml +2 -2
  21. package/.aether/commands/lay-eggs.yaml +3 -3
  22. package/.aether/commands/maturity.yaml +2 -2
  23. package/.aether/commands/memory-details.yaml +1 -1
  24. package/.aether/commands/migrate-state.yaml +1 -1
  25. package/.aether/commands/oracle.yaml +77 -82
  26. package/.aether/commands/organize.yaml +5 -5
  27. package/.aether/commands/patrol.yaml +6 -6
  28. package/.aether/commands/pause-colony.yaml +7 -7
  29. package/.aether/commands/phase.yaml +1 -1
  30. package/.aether/commands/pheromones.yaml +1 -1
  31. package/.aether/commands/plan.yaml +14 -14
  32. package/.aether/commands/quick.yaml +4 -4
  33. package/.aether/commands/redirect.yaml +6 -6
  34. package/.aether/commands/resume-colony.yaml +9 -9
  35. package/.aether/commands/resume.yaml +5 -38
  36. package/.aether/commands/run.yaml +7 -7
  37. package/.aether/commands/seal.yaml +33 -33
  38. package/.aether/commands/skill-create.yaml +4 -4
  39. package/.aether/commands/status.yaml +14 -14
  40. package/.aether/commands/swarm.yaml +13 -13
  41. package/.aether/commands/tunnels.yaml +7 -7
  42. package/.aether/commands/update.yaml +1 -1
  43. package/.aether/commands/verify-castes.yaml +3 -3
  44. package/.aether/commands/watch.yaml +15 -15
  45. package/.aether/docs/command-playbooks/build-complete.md +7 -7
  46. package/.aether/docs/command-playbooks/build-context.md +11 -11
  47. package/.aether/docs/command-playbooks/build-full.md +69 -69
  48. package/.aether/docs/command-playbooks/build-prep.md +9 -9
  49. package/.aether/docs/command-playbooks/build-verify.md +27 -27
  50. package/.aether/docs/command-playbooks/build-wave.md +38 -38
  51. package/.aether/docs/command-playbooks/continue-advance.md +28 -28
  52. package/.aether/docs/command-playbooks/continue-finalize.md +12 -12
  53. package/.aether/docs/command-playbooks/continue-full.md +47 -47
  54. package/.aether/docs/command-playbooks/continue-gates.md +18 -18
  55. package/.aether/docs/command-playbooks/continue-verify.md +10 -10
  56. package/.aether/templates/colony-state-template.json +1 -0
  57. package/.aether/utils/oracle/oracle-stop-hook.sh +896 -0
  58. package/.claude/commands/ant/archaeology.md +2 -2
  59. package/.claude/commands/ant/chaos.md +4 -4
  60. package/.claude/commands/ant/colonize.md +9 -9
  61. package/.claude/commands/ant/council.md +6 -6
  62. package/.claude/commands/ant/data-clean.md +3 -3
  63. package/.claude/commands/ant/dream.md +2 -2
  64. package/.claude/commands/ant/entomb.md +8 -8
  65. package/.claude/commands/ant/export-signals.md +2 -2
  66. package/.claude/commands/ant/feedback.md +4 -4
  67. package/.claude/commands/ant/flag.md +2 -2
  68. package/.claude/commands/ant/flags.md +4 -4
  69. package/.claude/commands/ant/focus.md +4 -4
  70. package/.claude/commands/ant/help.md +1 -1
  71. package/.claude/commands/ant/history.md +1 -1
  72. package/.claude/commands/ant/import-signals.md +2 -2
  73. package/.claude/commands/ant/init.md +16 -16
  74. package/.claude/commands/ant/insert-phase.md +1 -1
  75. package/.claude/commands/ant/interpret.md +2 -2
  76. package/.claude/commands/ant/lay-eggs.md +2 -2
  77. package/.claude/commands/ant/maturity.md +2 -2
  78. package/.claude/commands/ant/memory-details.md +1 -1
  79. package/.claude/commands/ant/migrate-state.md +1 -1
  80. package/.claude/commands/ant/oracle.md +43 -42
  81. package/.claude/commands/ant/organize.md +3 -3
  82. package/.claude/commands/ant/patrol.md +6 -6
  83. package/.claude/commands/ant/pause-colony.md +5 -5
  84. package/.claude/commands/ant/phase.md +1 -1
  85. package/.claude/commands/ant/pheromones.md +1 -1
  86. package/.claude/commands/ant/plan.md +8 -8
  87. package/.claude/commands/ant/quick.md +4 -4
  88. package/.claude/commands/ant/redirect.md +4 -4
  89. package/.claude/commands/ant/resume-colony.md +5 -5
  90. package/.claude/commands/ant/resume.md +17 -29
  91. package/.claude/commands/ant/run.md +7 -7
  92. package/.claude/commands/ant/seal.md +25 -25
  93. package/.claude/commands/ant/skill-create.md +2 -2
  94. package/.claude/commands/ant/status.md +14 -14
  95. package/.claude/commands/ant/swarm.md +13 -13
  96. package/.claude/commands/ant/tunnels.md +4 -4
  97. package/.claude/commands/ant/update.md +1 -1
  98. package/.claude/commands/ant/verify-castes.md +2 -2
  99. package/.claude/commands/ant/watch.md +8 -8
  100. package/.opencode/commands/ant/archaeology.md +1 -1
  101. package/.opencode/commands/ant/build.md +45 -45
  102. package/.opencode/commands/ant/chaos.md +3 -3
  103. package/.opencode/commands/ant/colonize.md +8 -8
  104. package/.opencode/commands/ant/continue.md +40 -40
  105. package/.opencode/commands/ant/council.md +5 -5
  106. package/.opencode/commands/ant/data-clean.md +2 -2
  107. package/.opencode/commands/ant/dream.md +1 -1
  108. package/.opencode/commands/ant/entomb.md +3 -3
  109. package/.opencode/commands/ant/export-signals.md +1 -1
  110. package/.opencode/commands/ant/feedback.md +2 -2
  111. package/.opencode/commands/ant/flag.md +1 -1
  112. package/.opencode/commands/ant/flags.md +3 -3
  113. package/.opencode/commands/ant/focus.md +2 -2
  114. package/.opencode/commands/ant/import-signals.md +1 -1
  115. package/.opencode/commands/ant/init.md +16 -16
  116. package/.opencode/commands/ant/insert-phase.md +1 -1
  117. package/.opencode/commands/ant/interpret.md +1 -1
  118. package/.opencode/commands/ant/lay-eggs.md +2 -2
  119. package/.opencode/commands/ant/maturity.md +1 -1
  120. package/.opencode/commands/ant/memory-details.md +1 -1
  121. package/.opencode/commands/ant/oracle.md +34 -40
  122. package/.opencode/commands/ant/organize.md +2 -2
  123. package/.opencode/commands/ant/patrol.md +6 -6
  124. package/.opencode/commands/ant/pause-colony.md +2 -2
  125. package/.opencode/commands/ant/pheromones.md +1 -1
  126. package/.opencode/commands/ant/plan.md +6 -6
  127. package/.opencode/commands/ant/quick.md +4 -4
  128. package/.opencode/commands/ant/redirect.md +2 -2
  129. package/.opencode/commands/ant/resume-colony.md +4 -4
  130. package/.opencode/commands/ant/resume.md +5 -17
  131. package/.opencode/commands/ant/run.md +7 -7
  132. package/.opencode/commands/ant/seal.md +8 -8
  133. package/.opencode/commands/ant/skill-create.md +2 -2
  134. package/.opencode/commands/ant/status.md +10 -10
  135. package/.opencode/commands/ant/tunnels.md +3 -3
  136. package/.opencode/commands/ant/verify-castes.md +1 -1
  137. package/.opencode/commands/ant/watch.md +7 -7
  138. package/bin/cli.js +118 -3
  139. package/bin/lib/binary-downloader.js +267 -0
  140. package/bin/lib/update-transaction.js +19 -0
  141. package/bin/lib/version-gate.js +179 -0
  142. package/package.json +1 -1
@@ -147,7 +147,7 @@ echo "System files copied."
147
147
 
148
148
 
149
149
 
150
- Run: `bash .aether/aether-utils.sh queen-init`
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
- bash .aether/aether-utils.sh registry-add "$(pwd)" "$(jq -r '.version // "unknown"' ~/.aether/version.json 2>/dev/null || echo 'unknown')" 2>/dev/null || true
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
- `bash .aether/aether-utils.sh milestone-detect`
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
- bash .aether/aether-utils.sh memory-metrics
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
- Create the stop signal file:
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
- The research loop will halt at the end of the current iteration.
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
- bash .aether/aether-utils.sh pheromone-write FOCUS "$focus_area" \
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
- Now launch the loop. Try tmux first, fall back to manual.
580
-
581
- **Try tmux:**
580
+ **Create the loop marker file:**
582
581
 
583
582
  ```bash
584
- tmux new-session -d -s oracle "cd $(pwd) && bash .aether/utils/oracle/oracle.sh; echo ''; echo '🔮 Oracle loop finished. Press any key to close.'; read -n1" 2>/dev/null && echo "TMUX_OK" || echo "TMUX_FAIL"
585
- ```
586
-
587
- **If TMUX_OK:**
588
-
589
- ```
590
- 🔮 Oracle Launched
591
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
592
-
593
- The Oracle is researching in a background tmux session.
594
-
595
- 👁️ Watch live: tmux attach -t oracle
596
- 📊 Check status: /ant:oracle status
597
- 🛑 Stop early: /ant:oracle stop
598
-
599
- Research progress visible at .aether/oracle/research-plan.md
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
- Stop here.
609
-
610
- **If TMUX_FAIL** (tmux not installed or error):
601
+ Output:
611
602
 
612
603
  ```
613
- 🔮 Ready to Launch
604
+ 🔮 Oracle Research Started (In-Session Loop)
614
605
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
615
606
 
616
- tmux not available. Run this in a separate terminal:
607
+ The Oracle is researching IN THIS SESSION.
617
608
 
618
- cd {current_working_directory}
619
- bash .aether/utils/oracle/oracle.sh
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
- Stop here.
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
- bash .aether/aether-utils.sh pheromone-read
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
- bash .aether/aether-utils.sh activity-log "COMPLETE" "queen" "Hygiene report generated"
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
- bash .aether/aether-utils.sh flag-list 2>/dev/null || echo '{"result":{"flags":[]}}'
258
+ aether flag-list --json 2>/dev/null || echo '{"result":{"flags":[]}}'
259
259
  ```
260
260
 
261
261
  **Midden check:**
262
262
  ```bash
263
- bash .aether/aether-utils.sh midden-recent-failures 2>/dev/null || echo '{"result":{"failures":[]}}'
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
- bash .aether/aether-utils.sh pheromone-expire 2>/dev/null || true
341
+ aether pheromone-expire 2>/dev/null || true
342
342
  ```
343
343
 
344
344
  **Load memory metrics:**
345
345
  ```bash
346
- bash .aether/aether-utils.sh memory-metrics 2>/dev/null || echo '{}'
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
- bash .aether/aether-utils.sh pheromone-count 2>/dev/null || echo '{"result":{"count":0}}'
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
- bash .aether/aether-utils.sh activity-log "COMPLETE" "queen" "Colony audit completed - {recommendation}"
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
- bash .aether/aether-utils.sh pheromone-read
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
- bash .aether/aether-utils.sh generate-commit-message "pause" {current_phase} "{phase_name}"
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
- bash .aether/aether-utils.sh pheromone-display "{subcommand or 'all'}"
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: `bash .aether/aether-utils.sh load-state`
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: `bash .aether/aether-utils.sh unload-state` to release lock.
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
- bash .aether/aether-utils.sh context-capsule --compact --json 2>/dev/null
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=$(bash .aether/aether-utils.sh hive-read --limit 5 --format text 2>/dev/null)
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
- bash .aether/aether-utils.sh 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)"
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: `bash .aether/aether-utils.sh activity-log "PLAN_COMPLETE" "queen" "Plan finalized with {confidence}% confidence"`
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
- bash .aether/aether-utils.sh generate-ant-name "scout"
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
- bash .aether/aether-utils.sh spawn-log "Queen" "scout" "{scout_name}" "Quick query: {query}"
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
- bash .aether/aether-utils.sh spawn-complete "{scout_name}" "completed" "Quick query answered"
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
- bash .aether/aether-utils.sh session-update "/ant:quick" "" "Quick query: {query truncated to 60 chars}" 2>/dev/null || true
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
- bash .aether/aether-utils.sh pheromone-write REDIRECT "$normalized_args" --strength 0.9 --reason "User warned colony away from pattern" 2>/dev/null || true
61
- bash .aether/aether-utils.sh context-update constraint redirect "$normalized_args" "user" 2>/dev/null || true
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: `bash .aether/aether-utils.sh version-check 2>/dev/null || true`
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: `bash .aether/aether-utils.sh load-state`
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
- bash .aether/aether-utils.sh pheromone-read
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: `bash .aether/aether-utils.sh unload-state` to release lock.
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
- bash .aether/aether-utils.sh session-read
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
- bash .aether/aether-utils.sh pheromone-read all
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
- bash .aether/aether-utils.sh resume-dashboard
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
- bash .aether/aether-utils.sh session-mark-resumed
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
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
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: `bash .aether/aether-utils.sh flag-check-blockers {phase}`
77
+ 4. Record pre-build blocker count: `aether flag-check-blockers {phase}`
78
78
  5. If `--headless` flag is present:
79
- - Run: `bash .aether/aether-utils.sh autopilot-set-headless true`
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
- bash .aether/aether-utils.sh pending-decision-add \
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
- bash .aether/aether-utils.sh pending-decision-add \
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: `bash .aether/aether-utils.sh autopilot-update --action advance --phase {next} --result success`
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
- bash .aether/aether-utils.sh autopilot-check-replan --interval {replan_interval}
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
- `bash .aether/aether-utils.sh session-update "/ant:run" "/ant:run" "Autopilot: {N} phases, now Phase {current}"`
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
- bash .aether/aether-utils.sh changelog-append \
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
- bash .aether/aether-utils.sh registry-add "$(pwd)" "$(jq -r '.version // "unknown"' ~/.aether/version.json 2>/dev/null || echo 'unknown')" --active false 2>/dev/null || true
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=$(bash .aether/aether-utils.sh "${promote_args[@]}" 2>/dev/null || echo '{}')
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=$(bash .aether/aether-utils.sh colony-archive-xml ".aether/exchange/colony-archive.xml" 2>&1)
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=$(bash .aether/aether-utils.sh pheromone-export-xml ".aether/exchange/pheromones.xml" 2>&1)
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=$(bash .aether/aether-utils.sh wisdom-export-xml ".aether/exchange/queen-wisdom.xml" 2>&1)
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=$(bash .aether/aether-utils.sh registry-export-xml ".aether/exchange/colony-registry.xml" 2>&1)
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=$(bash .aether/aether-utils.sh generate-commit-message seal "$phases_completed" "$goal" "$colony_age_days" 2>/dev/null)
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: `bash .aether/aether-utils.sh skill-parse-frontmatter ~/.aether/skills/domain/{name}/SKILL.md`
61
- 3. Run: `bash .aether/aether-utils.sh skill-cache-rebuild`
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