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
@@ -306,7 +306,7 @@ body_claude: |
306
306
 
307
307
  Run using the Bash tool with description "Logging excavation activity...":
308
308
  ```bash
309
- bash .aether/aether-utils.sh activity-log "ARCHAEOLOGY" "Archaeologist" "Excavated {target}: {total_commits} commits, {author_count} authors, {findings_count} findings, {tech_debt_count} debt markers"
309
+ aether activity-log "ARCHAEOLOGY" "Archaeologist" "Excavated {target}: {total_commits} commits, {author_count} authors, {findings_count} findings, {tech_debt_count} debt markers"
310
310
  ```
311
311
 
312
312
  Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
@@ -314,7 +314,7 @@ body_claude: |
314
314
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
315
315
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
316
316
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
317
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
317
+ aether print-next-up
318
318
  ```
319
319
 
320
320
  ## Investigation Guidelines
@@ -635,7 +635,7 @@ body_opencode: |
635
635
  ### Step 8: Log Activity
636
636
 
637
637
  ```bash
638
- bash .aether/aether-utils.sh activity-log "ARCHAEOLOGY" "Archaeologist" "Excavated {target}: {total_commits} commits, {author_count} authors, {findings_count} findings, {tech_debt_count} debt markers"
638
+ aether activity-log "ARCHAEOLOGY" "Archaeologist" "Excavated {target}: {total_commits} commits, {author_count} authors, {findings_count} findings, {tech_debt_count} debt markers"
639
639
  ```
640
640
 
641
641
  ## Investigation Guidelines
@@ -70,7 +70,7 @@ body_opencode: |
70
70
 
71
71
  ### Step 0.5: Load Colony State
72
72
 
73
- Run using Bash tool: `bash .aether/aether-utils.sh load-state`
73
+ Run using Bash tool: `aether load-state`
74
74
 
75
75
  If the command fails (non-zero exit or JSON has ok: false):
76
76
  1. Parse error JSON
@@ -88,7 +88,7 @@ body_opencode: |
88
88
  ```
89
89
  (If HANDOFF.md exists, this provides orientation before the build proceeds)
90
90
 
91
- After displaying context, run: `bash .aether/aether-utils.sh unload-state` to release the lock.
91
+ After displaying context, run: `aether unload-state` to release the lock.
92
92
 
93
93
  ### Step 1: Validate + Read State
94
94
 
@@ -121,7 +121,7 @@ body_opencode: |
121
121
 
122
122
  **Set colony depth (if --depth flag provided):**
123
123
  If `cli_depth_override` is set:
124
- 1. Run using Bash tool: `bash .aether/aether-utils.sh colony-depth set "$cli_depth_override"`
124
+ 1. Run using Bash tool: `aether colony-depth set "$cli_depth_override"`
125
125
  2. Parse JSON result - if `.ok` is false:
126
126
  - Display: `Error: Invalid depth "$cli_depth_override". Use: light, standard, deep, full`
127
127
  - Stop here
@@ -150,7 +150,7 @@ body_opencode: |
150
150
  Check for unresolved blocker flags on the requested phase:
151
151
 
152
152
  ```bash
153
- bash .aether/aether-utils.sh flag-check-blockers {phase_number}
153
+ aether flag-check-blockers {phase_number}
154
154
  ```
155
155
 
156
156
  Parse the JSON result (`.result.blockers`):
@@ -158,7 +158,7 @@ body_opencode: |
158
158
  - **If blockers == 0:** Display nothing (or optionally a brief `No active blockers for Phase {id}.` line). Proceed to Step 2.
159
159
  - **If blockers > 0:** Retrieve blocker details:
160
160
  ```bash
161
- bash .aether/aether-utils.sh flag-list --type blocker --phase {phase_number}
161
+ aether flag-list --type blocker --json --phase {phase_number}
162
162
  ```
163
163
  Parse `.result.flags` and display an advisory warning:
164
164
  ```
@@ -219,7 +219,7 @@ body_opencode: |
219
219
 
220
220
  Run using the Bash tool with description "Showing phase progress...":
221
221
  ```bash
222
- progress_bar=$(bash .aether/aether-utils.sh generate-progress-bar "$current_phase" "$total_phases" 20 2>/dev/null || echo "")
222
+ progress_bar=$(aether generate-progress-bar "$current_phase" "$total_phases" 20 2>/dev/null || echo "")
223
223
  if [[ -n "$progress_bar" ]]; then
224
224
  echo "[Phase ${current_phase}/${total_phases}] ${progress_bar}"
225
225
  fi
@@ -246,7 +246,7 @@ body_opencode: |
246
246
  Check if territory survey exists and load relevant documents:
247
247
 
248
248
  ```bash
249
- bash .aether/aether-utils.sh survey-load "{phase_name}" 2>/dev/null
249
+ aether survey-load "{phase_name}" 2>/dev/null
250
250
  ```
251
251
 
252
252
  **Parse the JSON response:**
@@ -292,7 +292,7 @@ body_opencode: |
292
292
  Call `queen-read` to extract eternal wisdom for worker priming:
293
293
 
294
294
  ```bash
295
- bash .aether/aether-utils.sh queen-read 2>/dev/null
295
+ aether queen-read 2>/dev/null
296
296
  ```
297
297
 
298
298
  **Parse the JSON response:**
@@ -327,7 +327,7 @@ body_opencode: |
327
327
  Call `pheromone-read` to extract active colony signals for worker priming:
328
328
 
329
329
  ```bash
330
- bash .aether/aether-utils.sh pheromone-read 2>/dev/null
330
+ aether pheromone-read 2>/dev/null
331
331
  ```
332
332
 
333
333
  **Parse the JSON response:**
@@ -381,8 +381,8 @@ body_opencode: |
381
381
 
382
382
  Generate archaeologist name and log:
383
383
  ```bash
384
- bash .aether/aether-utils.sh generate-ant-name "archaeologist"
385
- bash .aether/aether-utils.sh spawn-log "Queen" "scout" "{archaeologist_name}" "Pre-build archaeology scan"
384
+ aether generate-ant-name --caste "archaeologist"
385
+ aether spawn-log --name "Queen" --caste "scout" --id "{archaeologist_name}" --description "Pre-build archaeology scan"
386
386
  ```
387
387
 
388
388
  Display:
@@ -407,7 +407,7 @@ body_opencode: |
407
407
  4. Run: git blame "{file_path}" | head -40 for authorship
408
408
  5. Note TODO/FIXME/HACK markers
409
409
 
410
- Log activity: bash .aether/aether-utils.sh activity-log "READ" "{Ant-Name}" "description"
410
+ Log activity: aether activity-log "READ" "{Ant-Name}" "description"
411
411
 
412
412
  Report (plain text):
413
413
  - WHY key code sections exist (from commits)
@@ -421,7 +421,7 @@ body_opencode: |
421
421
 
422
422
  Log completion:
423
423
  ```bash
424
- bash .aether/aether-utils.sh spawn-complete "{archaeologist_name}" "completed" "Pre-build archaeology scan"
424
+ aether spawn-complete --id "{archaeologist_name}" --status "completed" --summary "Pre-build archaeology scan"
425
425
  ```
426
426
 
427
427
  3. **Store and display findings:**
@@ -472,9 +472,9 @@ body_opencode: |
472
472
 
473
473
  3. **Generate ant names for each worker:**
474
474
  ```bash
475
- bash .aether/aether-utils.sh generate-ant-name "builder"
476
- bash .aether/aether-utils.sh generate-ant-name "watcher"
477
- bash .aether/aether-utils.sh generate-ant-name "chaos"
475
+ aether generate-ant-name --caste "builder"
476
+ aether generate-ant-name --caste "watcher"
477
+ aether generate-ant-name --caste "chaos"
478
478
  ```
479
479
 
480
480
  Display spawn plan with caste emojis:
@@ -553,12 +553,12 @@ body_opencode: |
553
553
 
554
554
  **First, mark build start in context:**
555
555
  ```bash
556
- bash .aether/aether-utils.sh context-update build-start {phase_id} {wave_1_worker_count} {wave_1_task_count}
556
+ aether context-update build-start {phase_id} {wave_1_worker_count} {wave_1_task_count}
557
557
  ```
558
558
 
559
559
  Before dispatching each worker, refresh colony context so new pheromones/memory are visible:
560
560
  ```bash
561
- prime_result=$(bash .aether/aether-utils.sh colony-prime --compact 2>/dev/null)
561
+ prime_result=$(aether colony-prime --compact 2>/dev/null)
562
562
  ```
563
563
  Update `prompt_section` from `prime_result.result.prompt_section`.
564
564
 
@@ -566,8 +566,8 @@ body_opencode: |
566
566
 
567
567
  Log each spawn and update swarm display:
568
568
  ```bash
569
- bash .aether/aether-utils.sh spawn-log "Queen" "builder" "{ant_name}" "{task_description}"
570
- bash .aether/aether-utils.sh context-update worker-spawn "{ant_name}" "builder" "{task_description}"
569
+ aether spawn-log --name "Queen" --caste "builder" --id "{ant_name}" --description "{task_description}"
570
+ aether context-update worker-spawn "{ant_name}" "builder" "{task_description}"
571
571
  ```
572
572
 
573
573
  **Builder Worker Prompt (CLEAN OUTPUT):**
@@ -587,13 +587,13 @@ body_opencode: |
587
587
  Work:
588
588
  1. Read .aether/workers.md for Builder discipline
589
589
  2. Implement task, write tests
590
- 3. Log activity: bash .aether/aether-utils.sh activity-log "ACTION" "{Ant-Name}" "description"
590
+ 3. Log activity: aether activity-log "ACTION" "{Ant-Name}" "description"
591
591
 
592
592
  Spawn sub-workers ONLY if 3x complexity:
593
- - Check: bash .aether/aether-utils.sh spawn-can-spawn {depth} --enforce
594
- - Generate name: bash .aether/aether-utils.sh generate-ant-name "builder"
593
+ - Check: aether spawn-can-spawn {depth} --enforce
594
+ - Generate name: aether generate-ant-name --caste "builder"
595
595
  - Announce: "🐜 Spawning {child_name} for {reason}"
596
- - Log: bash .aether/aether-utils.sh spawn-log "{Ant-Name}" "builder" "{child_name}" "{task}"
596
+ - Log: aether spawn-log --name "{Ant-Name}" --caste "builder" --id "{child_name}" --description "{task}"
597
597
 
598
598
  Count your total tool calls (Read + Grep + Edit + Bash + Write) and report as tool_count.
599
599
 
@@ -676,7 +676,7 @@ body_opencode: |
676
676
 
677
677
  Before using any worker payload, validate schema:
678
678
  ```bash
679
- bash .aether/aether-utils.sh validate-worker-response builder '{worker_json}'
679
+ aether validate-worker-response builder '{worker_json}'
680
680
  ```
681
681
  If validation fails, treat the worker as failed with blocker `invalid_worker_response`.
682
682
 
@@ -696,8 +696,8 @@ body_opencode: |
696
696
 
697
697
  Log and update swarm display:
698
698
  ```bash
699
- bash .aether/aether-utils.sh spawn-complete "{ant_name}" "completed" "{summary}"
700
- bash .aether/aether-utils.sh context-update worker-complete "{ant_name}" "completed"
699
+ aether spawn-complete --id "{ant_name}" --status "completed" --summary "{summary}"
700
+ aether context-update worker-complete "{ant_name}" "completed"
701
701
  ```
702
702
 
703
703
  **Check for total wave failure:**
@@ -754,7 +754,7 @@ body_opencode: |
754
754
 
755
755
  Log escalation as flag:
756
756
  ```bash
757
- bash .aether/aether-utils.sh flag-add "blocker" "{task title}" "{failure summary}" "escalation" {phase_number}
757
+ aether flag-add --severity "blocker" --title "{task title}" --description "{failure summary}" --source "escalation" --phase {phase_number}
758
758
  ```
759
759
 
760
760
  If at least one worker succeeded, continue normally to the next wave.
@@ -784,7 +784,7 @@ body_opencode: |
784
784
  Spawn the Watcher using Task tool with `subagent_type="aether-watcher"`, include `description: "👁️ Watcher {Watcher-Name}: Independent verification"` (DO NOT use run_in_background - task blocks until complete):
785
785
 
786
786
  ```bash
787
- bash .aether/aether-utils.sh spawn-log "Queen" "watcher" "{watcher_name}" "Independent verification"
787
+ aether spawn-log --name "Queen" --caste "watcher" --id "{watcher_name}" --description "Independent verification"
788
788
  ```
789
789
 
790
790
  **Watcher Worker Prompt (CLEAN OUTPUT):**
@@ -804,7 +804,7 @@ body_opencode: |
804
804
  4. Check success criteria: {list}
805
805
 
806
806
  Spawn sub-workers if needed:
807
- - Log: bash .aether/aether-utils.sh spawn-log "{Watcher-Name}" "watcher" "{child}" "{task}"
807
+ - Log: aether spawn-log --name "{Watcher-Name}" --caste "watcher" --id "{child}" --description "{task}"
808
808
  - Announce: "🐜 Spawning {child} to investigate {issue}"
809
809
 
810
810
  Count your total tool calls (Read + Grep + Edit + Bash + Write) and report as tool_count.
@@ -819,7 +819,7 @@ body_opencode: |
819
819
 
820
820
  Validate watcher payload first:
821
821
  ```bash
822
- bash .aether/aether-utils.sh validate-worker-response watcher '{watcher_json}'
822
+ aether validate-worker-response watcher '{watcher_json}'
823
823
  ```
824
824
 
825
825
  **Parse the Watcher's validated JSON response:** verification_passed, issues_found, quality_score, recommendation
@@ -844,13 +844,13 @@ body_opencode: |
844
844
 
845
845
  Generate a chaos ant name and log the spawn:
846
846
  ```bash
847
- bash .aether/aether-utils.sh generate-ant-name "chaos"
848
- bash .aether/aether-utils.sh spawn-log "Queen" "chaos" "{chaos_name}" "Resilience testing of Phase {id} work"
847
+ aether generate-ant-name --caste "chaos"
848
+ aether spawn-log --name "Queen" --caste "chaos" --id "{chaos_name}" --description "Resilience testing of Phase {id} work"
849
849
  ```
850
850
 
851
851
  **Retrieve existing flags for this phase** (to avoid duplicate findings):
852
852
  ```bash
853
- bash .aether/aether-utils.sh flag-list --phase {phase_number}
853
+ aether flag-list --phase {phase_number}
854
854
  ```
855
855
  Parse the result and extract unresolved flag titles into a list: `{existing_flag_titles}` (comma-separated titles from `.result.flags[].title`). If no flags exist, set `{existing_flag_titles}` to "None".
856
856
 
@@ -901,17 +901,17 @@ body_opencode: |
901
901
  If any findings have severity `"critical"` or `"high"`:
902
902
  ```bash
903
903
  # Create a blocker flag for each critical/high chaos finding
904
- bash .aether/aether-utils.sh flag-add "blocker" "{finding.title}" "{finding.description}" "chaos-testing" {phase_number}
904
+ aether flag-add --severity "blocker" --title "{finding.title}" --description "{finding.description}" --source "chaos-testing" --phase {phase_number}
905
905
  ```
906
906
 
907
907
  Log the flag:
908
908
  ```bash
909
- bash .aether/aether-utils.sh activity-log "FLAG" "Chaos" "Created blocker: {finding.title}"
909
+ aether activity-log "FLAG" "Chaos" "Created blocker: {finding.title}"
910
910
  ```
911
911
 
912
912
  Log chaos ant completion and update swarm display:
913
913
  ```bash
914
- bash .aether/aether-utils.sh spawn-complete "{chaos_name}" "completed" "{summary}"
914
+ aether spawn-complete --id "{chaos_name}" --status "completed" --summary "{summary}"
915
915
  ```
916
916
 
917
917
  ### Step 5.8: Create Flags for Verification Failures
@@ -921,12 +921,12 @@ body_opencode: |
921
921
  For each issue in `issues_found`:
922
922
  ```bash
923
923
  # Create a blocker flag for each verification failure
924
- bash .aether/aether-utils.sh flag-add "blocker" "{issue_title}" "{issue_description}" "verification" {phase_number}
924
+ aether flag-add --severity "blocker" --title "{issue_title}" --description "{issue_description}" --source "verification" --phase {phase_number}
925
925
  ```
926
926
 
927
927
  Log the flag creation:
928
928
  ```bash
929
- bash .aether/aether-utils.sh activity-log "FLAG" "Watcher" "Created blocker: {issue_title}"
929
+ aether activity-log "FLAG" "Watcher" "Created blocker: {issue_title}"
930
930
  ```
931
931
 
932
932
  This ensures verification failures are persisted as blockers that survive context resets. Chaos Ant findings are flagged in Step 5.7.
@@ -1005,11 +1005,11 @@ body_opencode: |
1005
1005
  For each worker that returned `status: "failed"`:
1006
1006
  For each file in that worker's `files_modified` or `files_created`:
1007
1007
  ```bash
1008
- bash .aether/aether-utils.sh grave-add "{file}" "{ant_name}" "{task_id}" {phase} "{first blocker or summary}"
1008
+ aether grave-add "{file}" "{ant_name}" "{task_id}" {phase} "{first blocker or summary}"
1009
1009
  ```
1010
1010
  Log the grave marker:
1011
1011
  ```bash
1012
- bash .aether/aether-utils.sh activity-log "GRAVE" "Queen" "Grave marker placed at {file} — {ant_name} failed: {summary}"
1012
+ aether activity-log "GRAVE" "Queen" "Grave marker placed at {file} — {ant_name} failed: {summary}"
1013
1013
  ```
1014
1014
 
1015
1015
  **Error Handoff Update:**
@@ -1184,12 +1184,12 @@ body_opencode: |
1184
1184
  Log this build activity to `.aether/CONTEXT.md`:
1185
1185
 
1186
1186
  ```bash
1187
- bash .aether/aether-utils.sh context-update activity "build {phase_id}" "{synthesis.status}" "{files_created_count + files_modified_count}"
1187
+ aether context-update activity "build {phase_id}" "{synthesis.status}" "{files_created_count + files_modified_count}"
1188
1188
  ```
1189
1189
 
1190
1190
  Mark build as complete in context:
1191
1191
  ```bash
1192
- bash .aether/aether-utils.sh context-update build-complete "{synthesis.status}" "{synthesis.status == 'completed' ? 'success' : 'failed'}"
1192
+ aether context-update build-complete "{synthesis.status}" "{synthesis.status == 'completed' ? 'success' : 'failed'}"
1193
1193
  ```
1194
1194
 
1195
1195
  Also update safe-to-clear status:
@@ -1236,7 +1236,7 @@ body_opencode: |
1236
1236
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "IDLE")
1237
1237
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
1238
1238
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
1239
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
1239
+ aether print-next-up
1240
1240
  ```
1241
1241
 
1242
1242
  **Routing Note:** The state-based Next Up block above routes based on colony state. If verification failed or blockers exist, review `/ant:flags` before continuing.
@@ -1251,6 +1251,6 @@ body_opencode: |
1251
1251
  Update the session tracking file to enable `/ant:resume` after context clear:
1252
1252
 
1253
1253
  ```bash
1254
- bash .aether/aether-utils.sh session-update "/ant:build {phase_id}" "/ant:continue" "Phase {phase_id} build completed: {synthesis.status}"
1254
+ aether session-update --command "/ant:build {phase_id}" --worker "/ant:continue" --summary "Phase {phase_id} build completed: {synthesis.status}"
1255
1255
  ```
1256
1256
 
@@ -292,12 +292,12 @@ body_claude: |
292
292
 
293
293
  ```bash
294
294
  # For each scenario where status == "finding" AND severity is "CRITICAL" or "HIGH":
295
- bash .aether/aether-utils.sh flag-add "blocker" "{scenario.title}" "{scenario.description}" "chaos-standalone" {current_phase_number}
295
+ aether flag-add --severity "blocker" --title "{scenario.title}" --description "{scenario.description}" --source "chaos-standalone" --phase {current_phase_number}
296
296
  ```
297
297
 
298
298
  Log each flag creation by running using the Bash tool with description "Logging chaos flag...":
299
299
  ```bash
300
- bash .aether/aether-utils.sh activity-log "FLAG" "Chaos Ant" "Created blocker: {scenario.title}"
300
+ aether activity-log "FLAG" "Chaos Ant" "Created blocker: {scenario.title}"
301
301
  ```
302
302
 
303
303
  The `{current_phase_number}` comes from the colony state loaded in Step 1 (`.aether/data/COLONY_STATE.json` field `current_phase`).
@@ -308,7 +308,7 @@ body_claude: |
308
308
 
309
309
  Run using the Bash tool with description "Logging chaos activity...":
310
310
  ```bash
311
- bash .aether/aether-utils.sh activity-log "CHAOS" "Chaos Ant" "Resilience test on {target}: {findings_count} finding(s) ({critical} critical, {high} high, {medium} medium, {low} low), {resilient_count} resilient"
311
+ aether activity-log "CHAOS" "Chaos Ant" "Resilience test on {target}: {findings_count} finding(s) ({critical} critical, {high} high, {medium} medium, {low} low), {resilient_count} resilient"
312
312
  ```
313
313
 
314
314
  Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
@@ -316,7 +316,7 @@ body_claude: |
316
316
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
317
317
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
318
318
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
319
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
319
+ aether print-next-up
320
320
  ```
321
321
 
322
322
  ## Investigation Guidelines
@@ -620,12 +620,12 @@ body_opencode: |
620
620
 
621
621
  ```bash
622
622
  # For each scenario where status == "finding" AND severity is "CRITICAL" or "HIGH":
623
- bash .aether/aether-utils.sh flag-add "blocker" "{scenario.title}" "{scenario.description}" "chaos-standalone" {current_phase_number}
623
+ aether flag-add --severity "blocker" --title "{scenario.title}" --description "{scenario.description}" --source "chaos-standalone" --phase {current_phase_number}
624
624
  ```
625
625
 
626
626
  Log each flag creation:
627
627
  ```bash
628
- bash .aether/aether-utils.sh activity-log "FLAG" "Chaos Ant" "Created blocker: {scenario.title}"
628
+ aether activity-log "FLAG" "Chaos Ant" "Created blocker: {scenario.title}"
629
629
  ```
630
630
 
631
631
  The `{current_phase_number}` comes from the colony state loaded in Step 1 (`.aether/data/COLONY_STATE.json` field `current_phase`).
@@ -635,7 +635,7 @@ body_opencode: |
635
635
  ### Step 7: Log Activity
636
636
 
637
637
  ```bash
638
- bash .aether/aether-utils.sh activity-log "CHAOS" "Chaos Ant" "Resilience test on {target}: {findings_count} finding(s) ({critical} critical, {high} high, {medium} medium, {low} low), {resilient_count} resilient"
638
+ aether activity-log "CHAOS" "Chaos Ant" "Resilience test on {target}: {findings_count} finding(s) ({critical} critical, {high} high, {medium} medium, {low} low), {resilient_count} resilient"
639
639
  ```
640
640
 
641
641
  ## Investigation Guidelines
@@ -106,14 +106,14 @@ body_claude: |
106
106
  SURVEY_START=$(date +%s)
107
107
 
108
108
  # Check for stale survey files
109
- stale_check=$(bash .aether/aether-utils.sh session-verify-fresh --command survey "" "$SURVEY_START")
109
+ stale_check=$(aether session-verify-fresh --command survey "" "$SURVEY_START")
110
110
  has_stale=$(echo "$stale_check" | jq -r '.stale | length')
111
111
  has_fresh=$(echo "$stale_check" | jq -r '.fresh | length')
112
112
 
113
113
  if [[ "$has_stale" -gt 0 ]] || [[ "$has_fresh" -gt 0 ]]; then
114
114
  # Found existing survey files
115
115
  if [[ "$force_resurvey" == "true" ]]; then
116
- bash .aether/aether-utils.sh session-clear --command survey
116
+ aether session-clear --command survey
117
117
  echo "Cleared existing survey files for fresh territory mapping"
118
118
  else
119
119
  echo "Found existing territory survey. Use --force-resurvey to remap."
@@ -124,15 +124,15 @@ body_claude: |
124
124
 
125
125
  Generate unique names for the 4 Surveyor Ants (each name must be captured separately):
126
126
  ```bash
127
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
128
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
129
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
130
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
127
+ aether generate-ant-name --caste "surveyor"
128
+ aether generate-ant-name --caste "surveyor"
129
+ aether generate-ant-name --caste "surveyor"
130
+ aether generate-ant-name --caste "surveyor"
131
131
  ```
132
132
 
133
133
  Log the dispatches (consolidated - fire-and-forget logging):
134
134
  ```bash
135
- bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{provisions_name}" "Mapping provisions and trails" && bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{nest_name}" "Mapping nest structure" && bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{disciplines_name}" "Mapping disciplines and sentinels" && bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{pathogens_name}" "Identifying pathogens"
135
+ aether spawn-log --name "Queen" --caste "surveyor" --id "{provisions_name}" --description "Mapping provisions and trails" && aether spawn-log --name "Queen" --caste "surveyor" --id "{nest_name}" --description "Mapping nest structure" && aether spawn-log --name "Queen" --caste "surveyor" --id "{disciplines_name}" --description "Mapping disciplines and sentinels" && aether spawn-log --name "Queen" --caste "surveyor" --id "{pathogens_name}" --description "Identifying pathogens"
136
136
  ```
137
137
 
138
138
  **Spawn 4 Surveyor Ants in parallel using the Task tool:**
@@ -176,7 +176,7 @@ body_claude: |
176
176
 
177
177
  Verify that all survey files were created after the session start:
178
178
  ```bash
179
- verify_result=$(bash .aether/aether-utils.sh session-verify-fresh --command survey "" "$SURVEY_START")
179
+ verify_result=$(aether session-verify-fresh --command survey "" "$SURVEY_START")
180
180
  fresh_count=$(echo "$verify_result" | jq -r '.fresh | length')
181
181
 
182
182
  if [[ "$fresh_count" -lt 7 ]]; then
@@ -252,7 +252,7 @@ body_claude: |
252
252
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
253
253
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
254
254
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
255
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
255
+ aether print-next-up
256
256
  ```
257
257
 
258
258
  body_opencode: |
@@ -323,18 +323,18 @@ body_opencode: |
323
323
 
324
324
  Generate unique names for the 4 Surveyor Ants and log their dispatch:
325
325
  ```bash
326
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
327
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
328
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
329
- bash .aether/aether-utils.sh generate-ant-name "surveyor"
326
+ aether generate-ant-name --caste "surveyor"
327
+ aether generate-ant-name --caste "surveyor"
328
+ aether generate-ant-name --caste "surveyor"
329
+ aether generate-ant-name --caste "surveyor"
330
330
  ```
331
331
 
332
332
  Log the dispatch:
333
333
  ```bash
334
- bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{provisions_name}" "Mapping provisions and trails"
335
- bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{nest_name}" "Mapping nest structure"
336
- bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{disciplines_name}" "Mapping disciplines and sentinels"
337
- bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{pathogens_name}" "Identifying pathogens"
334
+ aether spawn-log --name "Queen" --caste "surveyor" --id "{provisions_name}" --description "Mapping provisions and trails"
335
+ aether spawn-log --name "Queen" --caste "surveyor" --id "{nest_name}" --description "Mapping nest structure"
336
+ aether spawn-log --name "Queen" --caste "surveyor" --id "{disciplines_name}" --description "Mapping disciplines and sentinels"
337
+ aether spawn-log --name "Queen" --caste "surveyor" --id "{pathogens_name}" --description "Identifying pathogens"
338
338
  ```
339
339
 
340
340
  **Spawn 4 Surveyor Ants in parallel using the Task tool:**