aether-colony 5.3.2 → 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 (281) hide show
  1. package/.aether/aether-utils.sh +181 -5
  2. package/.aether/commands/archaeology.yaml +3 -3
  3. package/.aether/commands/build.yaml +80 -45
  4. package/.aether/commands/chaos.yaml +7 -7
  5. package/.aether/commands/colonize.yaml +17 -17
  6. package/.aether/commands/continue.yaml +40 -40
  7. package/.aether/commands/council.yaml +6 -6
  8. package/.aether/commands/data-clean.yaml +3 -3
  9. package/.aether/commands/dream.yaml +2 -2
  10. package/.aether/commands/entomb.yaml +12 -12
  11. package/.aether/commands/export-signals.yaml +2 -2
  12. package/.aether/commands/feedback.yaml +6 -6
  13. package/.aether/commands/flag.yaml +2 -2
  14. package/.aether/commands/flags.yaml +4 -4
  15. package/.aether/commands/focus.yaml +6 -6
  16. package/.aether/commands/help.yaml +1 -1
  17. package/.aether/commands/history.yaml +1 -1
  18. package/.aether/commands/import-signals.yaml +2 -2
  19. package/.aether/commands/init.yaml +44 -27
  20. package/.aether/commands/insert-phase.yaml +1 -1
  21. package/.aether/commands/interpret.yaml +2 -2
  22. package/.aether/commands/lay-eggs.yaml +3 -3
  23. package/.aether/commands/maturity.yaml +2 -2
  24. package/.aether/commands/memory-details.yaml +1 -1
  25. package/.aether/commands/migrate-state.yaml +1 -1
  26. package/.aether/commands/oracle.yaml +147 -82
  27. package/.aether/commands/organize.yaml +5 -5
  28. package/.aether/commands/patrol.yaml +8 -8
  29. package/.aether/commands/pause-colony.yaml +7 -7
  30. package/.aether/commands/phase.yaml +1 -1
  31. package/.aether/commands/pheromones.yaml +1 -1
  32. package/.aether/commands/plan.yaml +14 -14
  33. package/.aether/commands/quick.yaml +4 -4
  34. package/.aether/commands/redirect.yaml +6 -6
  35. package/.aether/commands/resume-colony.yaml +9 -9
  36. package/.aether/commands/resume.yaml +5 -38
  37. package/.aether/commands/run.yaml +10 -10
  38. package/.aether/commands/seal.yaml +33 -33
  39. package/.aether/commands/skill-create.yaml +4 -4
  40. package/.aether/commands/status.yaml +14 -14
  41. package/.aether/commands/swarm.yaml +14 -14
  42. package/.aether/commands/tunnels.yaml +7 -7
  43. package/.aether/commands/update.yaml +1 -1
  44. package/.aether/commands/verify-castes.yaml +3 -3
  45. package/.aether/commands/watch.yaml +15 -15
  46. package/.aether/docs/command-playbooks/build-complete.md +48 -15
  47. package/.aether/docs/command-playbooks/build-context.md +11 -11
  48. package/.aether/docs/command-playbooks/build-full.md +76 -76
  49. package/.aether/docs/command-playbooks/build-prep.md +10 -10
  50. package/.aether/docs/command-playbooks/build-verify.md +27 -27
  51. package/.aether/docs/command-playbooks/build-wave.md +38 -38
  52. package/.aether/docs/command-playbooks/continue-advance.md +60 -27
  53. package/.aether/docs/command-playbooks/continue-finalize.md +25 -11
  54. package/.aether/docs/command-playbooks/continue-full.md +60 -46
  55. package/.aether/docs/command-playbooks/continue-gates.md +18 -18
  56. package/.aether/docs/command-playbooks/continue-verify.md +10 -10
  57. package/.aether/docs/source-of-truth-map.md +10 -10
  58. package/.aether/docs/structural-learning-stack.md +283 -0
  59. package/.aether/templates/colony-state-template.json +1 -0
  60. package/.aether/utils/consolidation-seal.sh +196 -0
  61. package/.aether/utils/consolidation.sh +127 -0
  62. package/.aether/utils/curation-ants/archivist.sh +97 -0
  63. package/.aether/utils/curation-ants/critic.sh +214 -0
  64. package/.aether/utils/curation-ants/herald.sh +102 -0
  65. package/.aether/utils/curation-ants/janitor.sh +121 -0
  66. package/.aether/utils/curation-ants/librarian.sh +99 -0
  67. package/.aether/utils/curation-ants/nurse.sh +153 -0
  68. package/.aether/utils/curation-ants/orchestrator.sh +181 -0
  69. package/.aether/utils/curation-ants/scribe.sh +164 -0
  70. package/.aether/utils/curation-ants/sentinel.sh +119 -0
  71. package/.aether/utils/event-bus.sh +301 -0
  72. package/.aether/utils/graph.sh +559 -0
  73. package/.aether/utils/instinct-store.sh +401 -0
  74. package/.aether/utils/learning.sh +79 -7
  75. package/.aether/utils/oracle/oracle-stop-hook.sh +896 -0
  76. package/.aether/utils/session.sh +13 -0
  77. package/.aether/utils/state-api.sh +1 -1
  78. package/.aether/utils/trust-scoring.sh +347 -0
  79. package/.aether/utils/worktree.sh +97 -0
  80. package/.claude/commands/ant/archaeology.md +2 -2
  81. package/.claude/commands/ant/chaos.md +4 -4
  82. package/.claude/commands/ant/colonize.md +9 -9
  83. package/.claude/commands/ant/council.md +6 -6
  84. package/.claude/commands/ant/data-clean.md +3 -3
  85. package/.claude/commands/ant/dream.md +2 -2
  86. package/.claude/commands/ant/entomb.md +9 -9
  87. package/.claude/commands/ant/export-signals.md +2 -2
  88. package/.claude/commands/ant/feedback.md +4 -4
  89. package/.claude/commands/ant/flag.md +2 -2
  90. package/.claude/commands/ant/flags.md +4 -4
  91. package/.claude/commands/ant/focus.md +4 -4
  92. package/.claude/commands/ant/help.md +1 -1
  93. package/.claude/commands/ant/history.md +1 -1
  94. package/.claude/commands/ant/import-signals.md +2 -2
  95. package/.claude/commands/ant/init.md +44 -27
  96. package/.claude/commands/ant/insert-phase.md +1 -1
  97. package/.claude/commands/ant/interpret.md +2 -2
  98. package/.claude/commands/ant/lay-eggs.md +2 -2
  99. package/.claude/commands/ant/maturity.md +2 -2
  100. package/.claude/commands/ant/memory-details.md +1 -1
  101. package/.claude/commands/ant/migrate-state.md +1 -1
  102. package/.claude/commands/ant/oracle.md +78 -42
  103. package/.claude/commands/ant/organize.md +3 -3
  104. package/.claude/commands/ant/patrol.md +8 -8
  105. package/.claude/commands/ant/pause-colony.md +5 -5
  106. package/.claude/commands/ant/phase.md +1 -1
  107. package/.claude/commands/ant/pheromones.md +1 -1
  108. package/.claude/commands/ant/plan.md +8 -8
  109. package/.claude/commands/ant/quick.md +4 -4
  110. package/.claude/commands/ant/redirect.md +4 -4
  111. package/.claude/commands/ant/resume-colony.md +5 -5
  112. package/.claude/commands/ant/resume.md +17 -29
  113. package/.claude/commands/ant/run.md +10 -10
  114. package/.claude/commands/ant/seal.md +25 -25
  115. package/.claude/commands/ant/skill-create.md +2 -2
  116. package/.claude/commands/ant/status.md +14 -14
  117. package/.claude/commands/ant/swarm.md +14 -14
  118. package/.claude/commands/ant/tunnels.md +4 -4
  119. package/.claude/commands/ant/update.md +1 -1
  120. package/.claude/commands/ant/verify-castes.md +2 -2
  121. package/.claude/commands/ant/watch.md +8 -8
  122. package/.opencode/commands/ant/archaeology.md +1 -1
  123. package/.opencode/commands/ant/build.md +80 -45
  124. package/.opencode/commands/ant/chaos.md +3 -3
  125. package/.opencode/commands/ant/colonize.md +8 -8
  126. package/.opencode/commands/ant/continue.md +40 -40
  127. package/.opencode/commands/ant/council.md +5 -5
  128. package/.opencode/commands/ant/data-clean.md +2 -2
  129. package/.opencode/commands/ant/dream.md +1 -1
  130. package/.opencode/commands/ant/entomb.md +3 -3
  131. package/.opencode/commands/ant/export-signals.md +1 -1
  132. package/.opencode/commands/ant/feedback.md +2 -2
  133. package/.opencode/commands/ant/flag.md +1 -1
  134. package/.opencode/commands/ant/flags.md +3 -3
  135. package/.opencode/commands/ant/focus.md +2 -2
  136. package/.opencode/commands/ant/import-signals.md +1 -1
  137. package/.opencode/commands/ant/init.md +44 -27
  138. package/.opencode/commands/ant/insert-phase.md +1 -1
  139. package/.opencode/commands/ant/interpret.md +1 -1
  140. package/.opencode/commands/ant/lay-eggs.md +2 -2
  141. package/.opencode/commands/ant/maturity.md +1 -1
  142. package/.opencode/commands/ant/memory-details.md +1 -1
  143. package/.opencode/commands/ant/oracle.md +69 -40
  144. package/.opencode/commands/ant/organize.md +2 -2
  145. package/.opencode/commands/ant/patrol.md +8 -8
  146. package/.opencode/commands/ant/pause-colony.md +2 -2
  147. package/.opencode/commands/ant/pheromones.md +1 -1
  148. package/.opencode/commands/ant/plan.md +6 -6
  149. package/.opencode/commands/ant/quick.md +4 -4
  150. package/.opencode/commands/ant/redirect.md +2 -2
  151. package/.opencode/commands/ant/resume-colony.md +4 -4
  152. package/.opencode/commands/ant/resume.md +5 -17
  153. package/.opencode/commands/ant/run.md +10 -10
  154. package/.opencode/commands/ant/seal.md +8 -8
  155. package/.opencode/commands/ant/skill-create.md +2 -2
  156. package/.opencode/commands/ant/status.md +10 -10
  157. package/.opencode/commands/ant/tunnels.md +3 -3
  158. package/.opencode/commands/ant/verify-castes.md +1 -1
  159. package/.opencode/commands/ant/watch.md +7 -7
  160. package/CHANGELOG.md +83 -0
  161. package/README.md +22 -9
  162. package/bin/cli.js +118 -3
  163. package/bin/lib/binary-downloader.js +267 -0
  164. package/bin/lib/update-transaction.js +27 -3
  165. package/bin/lib/version-gate.js +179 -0
  166. package/bin/npx-entry.js +0 -0
  167. package/package.json +1 -1
  168. package/.aether/agents/aether-ambassador.md +0 -140
  169. package/.aether/agents/aether-archaeologist.md +0 -108
  170. package/.aether/agents/aether-architect.md +0 -133
  171. package/.aether/agents/aether-auditor.md +0 -144
  172. package/.aether/agents/aether-builder.md +0 -184
  173. package/.aether/agents/aether-chaos.md +0 -115
  174. package/.aether/agents/aether-chronicler.md +0 -122
  175. package/.aether/agents/aether-gatekeeper.md +0 -116
  176. package/.aether/agents/aether-includer.md +0 -117
  177. package/.aether/agents/aether-keeper.md +0 -177
  178. package/.aether/agents/aether-measurer.md +0 -128
  179. package/.aether/agents/aether-oracle.md +0 -137
  180. package/.aether/agents/aether-probe.md +0 -133
  181. package/.aether/agents/aether-queen.md +0 -286
  182. package/.aether/agents/aether-route-setter.md +0 -130
  183. package/.aether/agents/aether-sage.md +0 -106
  184. package/.aether/agents/aether-scout.md +0 -101
  185. package/.aether/agents/aether-surveyor-disciplines.md +0 -391
  186. package/.aether/agents/aether-surveyor-nest.md +0 -329
  187. package/.aether/agents/aether-surveyor-pathogens.md +0 -264
  188. package/.aether/agents/aether-surveyor-provisions.md +0 -334
  189. package/.aether/agents/aether-tracker.md +0 -137
  190. package/.aether/agents/aether-watcher.md +0 -174
  191. package/.aether/agents/aether-weaver.md +0 -130
  192. package/.aether/commands/claude/archaeology.md +0 -334
  193. package/.aether/commands/claude/build.md +0 -65
  194. package/.aether/commands/claude/chaos.md +0 -336
  195. package/.aether/commands/claude/colonize.md +0 -259
  196. package/.aether/commands/claude/continue.md +0 -60
  197. package/.aether/commands/claude/council.md +0 -507
  198. package/.aether/commands/claude/data-clean.md +0 -81
  199. package/.aether/commands/claude/dream.md +0 -268
  200. package/.aether/commands/claude/entomb.md +0 -498
  201. package/.aether/commands/claude/export-signals.md +0 -57
  202. package/.aether/commands/claude/feedback.md +0 -96
  203. package/.aether/commands/claude/flag.md +0 -151
  204. package/.aether/commands/claude/flags.md +0 -169
  205. package/.aether/commands/claude/focus.md +0 -76
  206. package/.aether/commands/claude/help.md +0 -154
  207. package/.aether/commands/claude/history.md +0 -140
  208. package/.aether/commands/claude/import-signals.md +0 -71
  209. package/.aether/commands/claude/init.md +0 -505
  210. package/.aether/commands/claude/insert-phase.md +0 -105
  211. package/.aether/commands/claude/interpret.md +0 -278
  212. package/.aether/commands/claude/lay-eggs.md +0 -210
  213. package/.aether/commands/claude/maturity.md +0 -113
  214. package/.aether/commands/claude/memory-details.md +0 -77
  215. package/.aether/commands/claude/migrate-state.md +0 -171
  216. package/.aether/commands/claude/oracle.md +0 -642
  217. package/.aether/commands/claude/organize.md +0 -232
  218. package/.aether/commands/claude/patrol.md +0 -620
  219. package/.aether/commands/claude/pause-colony.md +0 -233
  220. package/.aether/commands/claude/phase.md +0 -115
  221. package/.aether/commands/claude/pheromones.md +0 -156
  222. package/.aether/commands/claude/plan.md +0 -693
  223. package/.aether/commands/claude/preferences.md +0 -65
  224. package/.aether/commands/claude/quick.md +0 -100
  225. package/.aether/commands/claude/redirect.md +0 -76
  226. package/.aether/commands/claude/resume-colony.md +0 -197
  227. package/.aether/commands/claude/resume.md +0 -388
  228. package/.aether/commands/claude/run.md +0 -231
  229. package/.aether/commands/claude/seal.md +0 -774
  230. package/.aether/commands/claude/skill-create.md +0 -286
  231. package/.aether/commands/claude/status.md +0 -410
  232. package/.aether/commands/claude/swarm.md +0 -349
  233. package/.aether/commands/claude/tunnels.md +0 -426
  234. package/.aether/commands/claude/update.md +0 -132
  235. package/.aether/commands/claude/verify-castes.md +0 -143
  236. package/.aether/commands/claude/watch.md +0 -239
  237. package/.aether/commands/opencode/archaeology.md +0 -331
  238. package/.aether/commands/opencode/build.md +0 -1168
  239. package/.aether/commands/opencode/chaos.md +0 -329
  240. package/.aether/commands/opencode/colonize.md +0 -195
  241. package/.aether/commands/opencode/continue.md +0 -1436
  242. package/.aether/commands/opencode/council.md +0 -437
  243. package/.aether/commands/opencode/data-clean.md +0 -77
  244. package/.aether/commands/opencode/dream.md +0 -260
  245. package/.aether/commands/opencode/entomb.md +0 -377
  246. package/.aether/commands/opencode/export-signals.md +0 -54
  247. package/.aether/commands/opencode/feedback.md +0 -99
  248. package/.aether/commands/opencode/flag.md +0 -149
  249. package/.aether/commands/opencode/flags.md +0 -167
  250. package/.aether/commands/opencode/focus.md +0 -73
  251. package/.aether/commands/opencode/help.md +0 -157
  252. package/.aether/commands/opencode/history.md +0 -136
  253. package/.aether/commands/opencode/import-signals.md +0 -68
  254. package/.aether/commands/opencode/init.md +0 -518
  255. package/.aether/commands/opencode/insert-phase.md +0 -111
  256. package/.aether/commands/opencode/interpret.md +0 -272
  257. package/.aether/commands/opencode/lay-eggs.md +0 -213
  258. package/.aether/commands/opencode/maturity.md +0 -108
  259. package/.aether/commands/opencode/memory-details.md +0 -83
  260. package/.aether/commands/opencode/migrate-state.md +0 -165
  261. package/.aether/commands/opencode/oracle.md +0 -593
  262. package/.aether/commands/opencode/organize.md +0 -226
  263. package/.aether/commands/opencode/patrol.md +0 -626
  264. package/.aether/commands/opencode/pause-colony.md +0 -203
  265. package/.aether/commands/opencode/phase.md +0 -113
  266. package/.aether/commands/opencode/pheromones.md +0 -162
  267. package/.aether/commands/opencode/plan.md +0 -684
  268. package/.aether/commands/opencode/preferences.md +0 -71
  269. package/.aether/commands/opencode/quick.md +0 -91
  270. package/.aether/commands/opencode/redirect.md +0 -84
  271. package/.aether/commands/opencode/resume-colony.md +0 -190
  272. package/.aether/commands/opencode/resume.md +0 -394
  273. package/.aether/commands/opencode/run.md +0 -237
  274. package/.aether/commands/opencode/seal.md +0 -452
  275. package/.aether/commands/opencode/skill-create.md +0 -63
  276. package/.aether/commands/opencode/status.md +0 -307
  277. package/.aether/commands/opencode/swarm.md +0 -15
  278. package/.aether/commands/opencode/tunnels.md +0 -400
  279. package/.aether/commands/opencode/update.md +0 -127
  280. package/.aether/commands/opencode/verify-castes.md +0 -139
  281. package/.aether/commands/opencode/watch.md +0 -227
@@ -49,7 +49,7 @@ If `--dry-run`: read COLONY_STATE.json, list remaining incomplete phases
49
49
  (applying `--max-phases` cap), display the plan, then stop without executing.
50
50
 
51
51
  ```
52
- ━━━ A U T O P I L O T P R E V I E W ━━━
52
+ ━━━ 🤖 A U T O P I L O T P R E V I E W ━━━
53
53
  Goal: {goal} | Current: Phase {N} | Remaining: {count} | Max: {max or "all"}
54
54
 
55
55
  Phase {id}: {name} ({task_count} tasks) -> build -> continue -> advance
@@ -68,9 +68,9 @@ replan suggestion (every {replan_interval} phases)
68
68
  - If `milestone` == `"Crowned Anthill"`: output "This colony has been sealed. Start a new colony with `/ant:init \"new goal\"`." and stop
69
69
  2. Determine remaining incomplete phases; apply `--max-phases` cap
70
70
  3. Set `phases_completed = 0`, `autopilot_start = $(date +%s)`
71
- 4. Record pre-build blocker count: `bash .aether/aether-utils.sh flag-check-blockers {phase}`
71
+ 4. Record pre-build blocker count: `aether flag-check-blockers {phase}`
72
72
  5. If `--headless` flag is present:
73
- - Run: `bash .aether/aether-utils.sh autopilot-set-headless true`
73
+ - Run: `aether autopilot-set-headless true`
74
74
  - Display: `Headless mode: ON — interactive prompts will be queued as pending decisions`
75
75
  6. Display: `AUTOPILOT ENGAGED | Goal: {goal} | Phase {N} | Max: {max or "all"}`
76
76
 
@@ -107,7 +107,7 @@ Log: `"<timestamp>|autopilot_paused|run|Paused at Phase {id}: {reason}"`
107
107
  visual checkpoint prompt would normally be shown to the user, instead queue it as
108
108
  a pending decision:
109
109
  ```bash
110
- bash .aether/aether-utils.sh pending-decision-add \
110
+ aether pending-decision-add \
111
111
  --title "Visual checkpoint: Phase {id}" \
112
112
  --type "checkpoint" \
113
113
  --description "{checkpoint_description}" \
@@ -136,7 +136,7 @@ Skip the AskUserQuestion prompt. Instead, auto-PAUSE with reason
136
136
  **Headless override for runtime verification:** If headless mode is active and
137
137
  runtime verification would normally pause, queue as a pending decision instead:
138
138
  ```bash
139
- bash .aether/aether-utils.sh pending-decision-add \
139
+ aether pending-decision-add \
140
140
  --title "Runtime verification needed: Phase {id}" \
141
141
  --type "runtime-verification" \
142
142
  --description "Manual testing required before advancing past Phase {id}" \
@@ -167,7 +167,7 @@ replan suggestion (see Step 5.5). For all others: PAUSE with reason, log event,
167
167
  ### Step 5: Auto-Advance and Loop
168
168
 
169
169
  1. Increment `phases_completed`
170
- 2. Update autopilot state: `bash .aether/aether-utils.sh autopilot-update --action advance --phase {next} --result success`
170
+ 2. Update autopilot state: `aether autopilot-update --action advance --phase {next} --result success`
171
171
  3. Log: `"<timestamp>|autopilot_advance|run|Phase {prev} -> {next} ({phases_completed}/{max})"`
172
172
  4. Display: `--- Autopilot: Phase {prev} done -> Phase {next} ({N}/{max}) ---`
173
173
  5. **Replan check** (see Step 5.5)
@@ -179,7 +179,7 @@ replan suggestion (see Step 5.5). For all others: PAUSE with reason, log event,
179
179
  After each successful phase advance, check if a replan pause should fire:
180
180
 
181
181
  ```bash
182
- bash .aether/aether-utils.sh autopilot-check-replan --interval {replan_interval}
182
+ aether autopilot-check-replan --interval {replan_interval}
183
183
  ```
184
184
 
185
185
  If `--continue` flag was passed: skip this check entirely (user dismissed replan).
@@ -187,7 +187,7 @@ If `--continue` flag was passed: skip this check entirely (user dismissed replan
187
187
  If `result.should_replan == true`: **PAUSE** with replan suggestion banner:
188
188
 
189
189
  ```
190
- ━━━ R E P L A N S U G G E S T E D ━━━
190
+ ━━━ 🔄 R E P L A N S U G G E S T E D ━━━
191
191
  Phases auto-completed: {N} | Learnings accumulated: {learnings_since_last}
192
192
 
193
193
  The colony has completed {N} phases since the last plan review.
@@ -205,7 +205,7 @@ If `result.should_replan == false`: proceed normally (no pause).
205
205
  ### Step 6: Final Summary
206
206
 
207
207
  ```
208
- ━━━ A U T O P I L O T C O M P L E T E ━━━
208
+ ━━━ A U T O P I L O T C O M P L E T E ━━━
209
209
  Phases completed: {N} | Elapsed: {Xm Ys} | Now at: Phase {current}
210
210
 
211
211
  {all complete} -> Colony goal achieved! Run /ant:seal
@@ -220,7 +220,7 @@ Pending decisions: {N} — run `pending-decision-list` to review
220
220
  ```
221
221
 
222
222
  Update session:
223
- `bash .aether/aether-utils.sh session-update "/ant:run" "/ant:run" "Autopilot: {N} phases, now Phase {current}"`
223
+ `aether session-update --command "/ant:run" --worker "/ant:run" --summary "Autopilot: {N} phases, now Phase {current}"`
224
224
 
225
225
  ## Execution Contract
226
226
 
@@ -60,7 +60,7 @@ Extract: `goal`, `state`, `current_phase`, `plan.phases`, `milestone`, `version`
60
60
 
61
61
  ### Step 2: Maturity Gate
62
62
 
63
- Run `bash .aether/aether-utils.sh milestone-detect` to get `milestone`, `phases_completed`, `total_phases`.
63
+ Run `aether milestone-detect` to get `milestone`, `phases_completed`, `total_phases`.
64
64
 
65
65
  **If milestone is already "Crowned Anthill":**
66
66
  ```
@@ -122,8 +122,8 @@ phases_completed=$(jq '[.plan.phases[] | select(.status == "completed")] | lengt
122
122
 
123
123
  if [[ "$phases_completed" -ge 3 ]]; then
124
124
  # Generate Sage name and dispatch
125
- sage_name=$(bash .aether/aether-utils.sh generate-ant-name "sage")
126
- bash .aether/aether-utils.sh spawn-log "Queen" "sage" "$sage_name" "Colony analytics review"
125
+ sage_name=$(aether generate-ant-name --caste "sage")
126
+ aether spawn-log --name "Queen" --caste "sage" --id "$sage_name" --description "Colony analytics review"
127
127
 
128
128
  # Display spawn notification
129
129
  echo ""
@@ -162,7 +162,7 @@ Work:
162
162
 
163
163
  **IMPORTANT:** You are strictly read-only. Do not modify any files.
164
164
 
165
- Log activity: bash .aether/aether-utils.sh activity-log "ANALYZING" "{sage_name}" "description"
165
+ Log activity: aether activity-log "ANALYZING" "{sage_name}" "description"
166
166
 
167
167
  Return ONLY this JSON (no other text):
168
168
  {{
@@ -195,7 +195,7 @@ After spawn, extract from response: `key_findings`, `trends`, `recommendations`
195
195
 
196
196
  Log completion and update swarm display:
197
197
  ```bash
198
- bash .aether/aether-utils.sh spawn-complete "$sage_name" "completed" "Analytics review complete"
198
+ aether spawn-complete --id "$sage_name" --status "completed" --summary "Analytics review complete"
199
199
  ```
200
200
 
201
201
  **Display Sage completion line:**
@@ -207,7 +207,7 @@ bash .aether/aether-utils.sh spawn-complete "$sage_name" "completed" "Analytics
207
207
  **Log high-priority recommendations to midden (non-blocking):**
208
208
  For each recommendation with priority <= 2:
209
209
  ```bash
210
- bash .aether/aether-utils.sh midden-write "analytics" "Sage recommendation (P{priority}): {action}" "sage"
210
+ aether midden-write "analytics" "Sage recommendation (P{priority}): {action}" "sage"
211
211
  ```
212
212
 
213
213
  **Display insights summary:**
@@ -242,7 +242,7 @@ if [[ -f "$obs_file" ]]; then
242
242
  colony=$(echo "$encoded" | base64 -d | jq -r '.colonies[0] // "unknown"')
243
243
  [[ -z "$content" ]] && continue
244
244
 
245
- result=$(bash .aether/aether-utils.sh learning-promote-auto "$wisdom_type" "$content" "$colony" "learning" 2>/dev/null || echo '{}')
245
+ result=$(aether learning-promote-auto "$wisdom_type" "$content" "$colony" "learning" 2>/dev/null || echo '{}')
246
246
  was_promoted=$(echo "$result" | jq -r '.result.promoted // false' 2>/dev/null || echo "false")
247
247
  if [[ "$was_promoted" == "true" ]]; then
248
248
  auto_promoted_count=$((auto_promoted_count + 1))
@@ -257,7 +257,7 @@ fi
257
257
  # --- END Batch auto-promotion ---
258
258
 
259
259
  # Check for pending proposals
260
- proposals=$(bash .aether/aether-utils.sh learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
260
+ proposals=$(aether learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
261
261
  proposal_count=$(echo "$proposals" | jq '.proposals | length')
262
262
 
263
263
  if [[ "$proposal_count" -gt 0 ]]; then
@@ -271,7 +271,7 @@ if [[ "$proposal_count" -gt 0 ]]; then
271
271
  echo ""
272
272
 
273
273
  # Run approval workflow (blocking)
274
- bash .aether/aether-utils.sh learning-approve-proposals
274
+ aether learning-approve-proposals
275
275
 
276
276
  echo ""
277
277
  echo "Wisdom review complete. Proceeding with sealing ceremony..."
@@ -321,7 +321,7 @@ for encoded in $high_conf_instincts; do
321
321
  [[ -n "$repo_domain_tags" ]] && promote_args+=(--domain "$repo_domain_tags")
322
322
 
323
323
  # Call hive-promote which orchestrates abstract + store
324
- result=$(bash .aether/aether-utils.sh "${promote_args[@]}" 2>/dev/null || echo '{}')
324
+ result=$(aether "${promote_args[@]}" 2>/dev/null || echo '{}')
325
325
  was_promoted=$(echo "$result" | jq -r '.result.action // "skipped"' 2>/dev/null || echo "skipped")
326
326
 
327
327
  if [[ "$was_promoted" == "promoted" || "$was_promoted" == "merged" ]]; then
@@ -341,7 +341,7 @@ Proceed to Step 4 regardless of hive promotion results — hive promotion is str
341
341
 
342
342
  Log the seal ceremony to activity log:
343
343
  ```bash
344
- bash .aether/aether-utils.sh activity-log "MODIFIED" "Queen" "Colony sealed - wisdom review completed"
344
+ aether activity-log "MODIFIED" "Queen" "Colony sealed - wisdom review completed"
345
345
  ```
346
346
 
347
347
  ### Step 4.4: Checkpoint State
@@ -350,7 +350,7 @@ Before modifying colony state, create a rolling backup:
350
350
 
351
351
  Run using the Bash tool with description "Checkpointing colony state before seal...":
352
352
  ```bash
353
- bash .aether/aether-utils.sh state-checkpoint "pre-seal" 2>/dev/null || echo "Warning: State checkpoint failed -- continuing without backup" >&2
353
+ aether state-checkpoint "pre-seal" 2>/dev/null || echo "Warning: State checkpoint failed -- continuing without backup" >&2
354
354
  ```
355
355
 
356
356
  ### Step 4.5: Increment Colony Version
@@ -385,7 +385,7 @@ Update COLONY_STATE.json:
385
385
  2. Set `milestone_updated_at` to current ISO-8601 timestamp
386
386
  3. Append event: `"<timestamp>|milestone_reached|seal|Achieved Crowned Anthill milestone"`
387
387
 
388
- Run `bash .aether/aether-utils.sh validate-state colony` after write.
388
+ Run `aether validate-state colony` after write.
389
389
 
390
390
  ### Step 5.1: Update Changelog
391
391
 
@@ -398,7 +398,7 @@ Build a summary of what the colony accomplished across all phases:
398
398
  - Summarize the goal and key outcomes in one line
399
399
 
400
400
  ```bash
401
- bash .aether/aether-utils.sh changelog-append \
401
+ aether changelog-append \
402
402
  "$(date +%Y-%m-%d)" \
403
403
  "seal-crowned-anthill" \
404
404
  "00" \
@@ -419,7 +419,7 @@ Mark the colony as inactive in the global registry. This is silent on failure
419
419
 
420
420
  Run using the Bash tool (ignore errors):
421
421
  ```bash
422
- 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
422
+ aether registry-add --path "$(pwd)" "$(jq -r '.version // "unknown"' ~/.aether/version.json 2>/dev/null || echo 'unknown')" --active false 2>/dev/null || true
423
423
  ```
424
424
 
425
425
  If the command fails, proceed silently. This is optional bookkeeping.
@@ -431,10 +431,10 @@ Before writing the seal document, spawn a Chronicler to survey documentation cov
431
431
  **Generate Chronicler name and dispatch:**
432
432
  ```bash
433
433
  # Generate unique chronicler name
434
- chronicler_name=$(bash .aether/aether-utils.sh generate-ant-name "chronicler")
434
+ chronicler_name=$(aether generate-ant-name --caste "chronicler")
435
435
 
436
436
  # Log spawn and update swarm display
437
- bash .aether/aether-utils.sh spawn-log "Queen" "chronicler" "$chronicler_name" "Documentation coverage audit"
437
+ aether spawn-log --name "Queen" --caste "chronicler" --id "$chronicler_name" --description "Documentation coverage audit"
438
438
  ```
439
439
 
440
440
  **Display:**
@@ -472,7 +472,7 @@ Work:
472
472
 
473
473
  **IMPORTANT:** You are strictly read-only. Do not modify any files.
474
474
 
475
- Log activity: bash .aether/aether-utils.sh activity-log "SURVEYING" "{chronicler_name}" "description"
475
+ Log activity: aether activity-log "SURVEYING" "{chronicler_name}" "description"
476
476
 
477
477
  Return ONLY this JSON (no other text):
478
478
  {
@@ -501,7 +501,7 @@ Extract from response: `coverage_percent`, `gaps_identified`, `pages_documented`
501
501
 
502
502
  Log completion and update swarm display:
503
503
  ```bash
504
- bash .aether/aether-utils.sh spawn-complete "$chronicler_name" "completed" "Documentation audit complete"
504
+ aether spawn-complete --id "$chronicler_name" --status "completed" --summary "Documentation audit complete"
505
505
  ```
506
506
 
507
507
  **Display Chronicler completion line:**
@@ -512,7 +512,7 @@ bash .aether/aether-utils.sh spawn-complete "$chronicler_name" "completed" "Docu
512
512
  **Log gaps to midden (non-blocking):**
513
513
  For each gap in `gaps_identified` with severity "high" or "medium":
514
514
  ```bash
515
- bash .aether/aether-utils.sh midden-write "documentation" "Gap ({severity}): {description} at {location}" "chronicler"
515
+ aether midden-write "documentation" "Gap ({severity}): {description} at {location}" "chronicler"
516
516
  ```
517
517
 
518
518
  **Display summary:**
@@ -583,7 +583,7 @@ Export colony data as a combined XML archive and a standalone pheromones.xml. Bo
583
583
  ```bash
584
584
  # Check if xmllint is available
585
585
  if command -v xmllint >/dev/null 2>&1; then
586
- xml_result=$(bash .aether/aether-utils.sh colony-archive-xml ".aether/exchange/colony-archive.xml" 2>&1)
586
+ xml_result=$(aether colony-archive-xml --output ".aether/exchange/colony-archive.xml" 2>&1)
587
587
  xml_ok=$(echo "$xml_result" | jq -r '.ok // false' 2>/dev/null)
588
588
  if [[ "$xml_ok" == "true" ]]; then
589
589
  xml_pheromone_count=$(echo "$xml_result" | jq -r '.result.pheromone_count // 0' 2>/dev/null)
@@ -593,7 +593,7 @@ if command -v xmllint >/dev/null 2>&1; then
593
593
  fi
594
594
 
595
595
  # Also export standalone pheromones.xml for cross-colony sharing
596
- pher_result=$(bash .aether/aether-utils.sh pheromone-export-xml ".aether/exchange/pheromones.xml" 2>&1)
596
+ pher_result=$(aether pheromone-export-xml --output ".aether/exchange/pheromones.xml" 2>&1)
597
597
  pher_ok=$(echo "$pher_result" | jq -r '.ok // false' 2>/dev/null)
598
598
  if [[ "$pher_ok" == "true" ]]; then
599
599
  pher_signal_count=$(jq '[.signals[] | select(.active != false)] | length' .aether/data/pheromones.json 2>/dev/null || echo "0")
@@ -603,7 +603,7 @@ if command -v xmllint >/dev/null 2>&1; then
603
603
  fi
604
604
 
605
605
  # Export standalone queen-wisdom.xml for cross-colony wisdom sharing
606
- wisdom_result=$(bash .aether/aether-utils.sh wisdom-export-xml ".aether/exchange/queen-wisdom.xml" 2>&1)
606
+ wisdom_result=$(aether wisdom-export-xml ".aether/exchange/queen-wisdom.xml" 2>&1)
607
607
  wisdom_ok=$(echo "$wisdom_result" | jq -r '.ok // false' 2>/dev/null)
608
608
  if [[ "$wisdom_ok" == "true" ]]; then
609
609
  wisdom_count=$(echo "$wisdom_result" | jq -r '.result.entries // 0' 2>/dev/null)
@@ -613,7 +613,7 @@ if command -v xmllint >/dev/null 2>&1; then
613
613
  fi
614
614
 
615
615
  # Export standalone colony-registry.xml for lineage tracking
616
- registry_result=$(bash .aether/aether-utils.sh registry-export-xml ".aether/exchange/colony-registry.xml" 2>&1)
616
+ registry_result=$(aether registry-export-xml ".aether/exchange/colony-registry.xml" 2>&1)
617
617
  registry_ok=$(echo "$registry_result" | jq -r '.ok // false' 2>/dev/null)
618
618
  if [[ "$registry_ok" == "true" ]]; then
619
619
  registry_count=$(echo "$registry_result" | jq -r '.result.colonies // 0' 2>/dev/null)
@@ -692,7 +692,7 @@ After the ceremony, offer to commit all colony work.
692
692
 
693
693
  Generate a seal commit message:
694
694
  ```bash
695
- seal_commit=$(bash .aether/aether-utils.sh generate-commit-message seal "$phases_completed" "$goal" "$colony_age_days" 2>/dev/null)
695
+ seal_commit=$(aether generate-commit-message seal "$phases_completed" "$goal" "$colony_age_days" 2>/dev/null)
696
696
  seal_message=$(echo "$seal_commit" | jq -r '.result.message // "aether-seal: colony sealed"')
697
697
  seal_body=$(echo "$seal_commit" | jq -r '.result.body // ""')
698
698
  ```
@@ -228,7 +228,7 @@ Use the Write tool to create `~/.aether/skills/domain/{SKILL_NAME}/SKILL.md` wit
228
228
  Run using the Bash tool with description "Verifying skill frontmatter...":
229
229
 
230
230
  ```bash
231
- bash .aether/aether-utils.sh skill-parse-frontmatter ~/.aether/skills/domain/{SKILL_NAME}/SKILL.md
231
+ aether skill-parse-frontmatter ~/.aether/skills/domain/{SKILL_NAME}/SKILL.md
232
232
  ```
233
233
 
234
234
  Check the output. If the result contains `"ok": true` (or the parsed JSON shows the correct name and type), the skill is valid. If parsing fails, fix the frontmatter and retry once.
@@ -238,7 +238,7 @@ Check the output. If the result contains `"ok": true` (or the parsed JSON shows
238
238
  Run using the Bash tool with description "Rebuilding skill cache...":
239
239
 
240
240
  ```bash
241
- bash .aether/aether-utils.sh skill-cache-rebuild
241
+ aether skill-cache-rebuild
242
242
  ```
243
243
 
244
244
  **4d. Show the result**
@@ -10,7 +10,7 @@ You are the **Queen**. Show colony status.
10
10
 
11
11
  ### Step 0: Version Check (Non-blocking)
12
12
 
13
- Run using the Bash tool with description "Checking colony version...": `bash .aether/aether-utils.sh version-check-cached 2>/dev/null || true`
13
+ Run using the Bash tool with description "Checking colony version...": `aether version-check-cached 2>/dev/null || true`
14
14
 
15
15
  If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
16
16
 
@@ -52,7 +52,7 @@ If `version` field is missing, "1.0", or "2.0":
52
52
 
53
53
  ### Step 1.5: Load State and Show Resumption Context
54
54
 
55
- Run using the Bash tool with description "Loading colony state...": `bash .aether/aether-utils.sh load-state`
55
+ Run using the Bash tool with description "Loading colony state...": `aether load-state`
56
56
 
57
57
  If successful and goal is not null:
58
58
  1. Extract current_phase from state
@@ -70,7 +70,7 @@ If successful and goal is not null:
70
70
  - Read .aether/HANDOFF.md content for additional context
71
71
  - Remove .aether/HANDOFF.md after displaying (cleanup)
72
72
 
73
- Run using the Bash tool with description "Releasing colony lock...": `bash .aether/aether-utils.sh unload-state` to release lock.
73
+ Run using the Bash tool with description "Releasing colony lock...": `aether unload-state` to release lock.
74
74
 
75
75
  ### Step 2: Compute Summary
76
76
 
@@ -118,7 +118,7 @@ Format the timestamp as: YYYY-MM-DD HH:MM
118
118
 
119
119
  Run using the Bash tool with description "Reading colony depth...":
120
120
  ```bash
121
- depth_result=$(bash .aether/aether-utils.sh colony-depth get 2>/dev/null || echo '{"ok":true,"result":{"depth":"standard","source":"default"}}')
121
+ depth_result=$(aether colony-depth get 2>/dev/null || echo '{"ok":true,"result":{"depth":"standard","source":"default"}}')
122
122
  colony_depth=$(echo "$depth_result" | jq -r '.result.depth // "standard"')
123
123
  depth_source=$(echo "$depth_result" | jq -r '.result.source // "default"')
124
124
  echo "colony_depth=$colony_depth"
@@ -152,7 +152,7 @@ Read `.aether/data/constraints.json` if exists:
152
152
  - Constraints count: `constraints.length`
153
153
 
154
154
  **Flags:**
155
- Run using the Bash tool with description "Checking for blockers...": `bash .aether/aether-utils.sh flag-check-blockers`
155
+ Run using the Bash tool with description "Checking for blockers...": `aether flag-check-blockers`
156
156
  Extract:
157
157
  - Blockers count (critical, block advancement)
158
158
  - Issues count (high, warnings)
@@ -163,7 +163,7 @@ Count escalated flags by checking for blocker flags with source "escalation":
163
163
 
164
164
  Run using the Bash tool with description "Checking escalation state...":
165
165
  ```bash
166
- escalated_count=$(bash .aether/aether-utils.sh flag-list --type blocker 2>/dev/null | jq '[.result.flags[] | select(.source == "escalation")] | length' 2>/dev/null || echo "0")
166
+ escalated_count=$(aether flag-list --type blocker --json 2>/dev/null | jq '[.result.flags[] | select(.source == "escalation")] | length' 2>/dev/null || echo "0")
167
167
  echo "escalated_count=$escalated_count"
168
168
  ```
169
169
 
@@ -182,7 +182,7 @@ From `memory.instincts`:
182
182
 
183
183
  ### Step 2.6: Detect Milestone
184
184
 
185
- Run using the Bash tool with description "Detecting colony milestone...": `bash .aether/aether-utils.sh milestone-detect`
185
+ Run using the Bash tool with description "Detecting colony milestone...": `aether milestone-detect`
186
186
 
187
187
  Extract from JSON result:
188
188
  - `milestone`: Current milestone name
@@ -194,7 +194,7 @@ Extract from JSON result:
194
194
 
195
195
  Run using the Bash tool with description "Loading memory health metrics...":
196
196
  ```bash
197
- bash .aether/aether-utils.sh memory-metrics
197
+ aether memory-metrics
198
198
  ```
199
199
 
200
200
  Extract from JSON result:
@@ -228,8 +228,8 @@ else
228
228
  fi
229
229
 
230
230
  # Generate progress bars
231
- phase_bar=$(bash .aether/aether-utils.sh generate-progress-bar "$current_phase" "$total_phases" 20)
232
- task_bar=$(bash .aether/aether-utils.sh generate-progress-bar "$tasks_completed" "$tasks_total" 20)
231
+ phase_bar=$(aether generate-progress-bar "$current_phase" "$total_phases" 20)
232
+ task_bar=$(aether generate-progress-bar "$tasks_completed" "$tasks_total" 20)
233
233
 
234
234
  echo "phase_bar=$phase_bar"
235
235
  echo "task_bar=$task_bar"
@@ -305,7 +305,7 @@ Use the `phase_bar` and `task_bar` values computed in Step 2.7 for the actual ba
305
305
  **Colony Vital Signs:**
306
306
  After the Memory Health table, run:
307
307
  ```bash
308
- bash .aether/aether-utils.sh colony-vital-signs
308
+ aether colony-vital-signs
309
309
  ```
310
310
 
311
311
  Extract from JSON result:
@@ -349,7 +349,7 @@ If the command fails or returns no data, display:
349
349
  **Data Safety:**
350
350
  After the Colony Vital Signs panel, run:
351
351
  ```bash
352
- bash .aether/aether-utils.sh data-safety-stats
352
+ aether data-safety-stats
353
353
  ```
354
354
 
355
355
  If the result contains non-zero counts, display:
@@ -367,7 +367,7 @@ If all counts are 0 or the subcommand returns no data, display:
367
367
  **Pheromone Summary:**
368
368
  After the Data Safety section, run:
369
369
  ```bash
370
- bash .aether/aether-utils.sh pheromone-count
370
+ aether pheromone-count
371
371
  ```
372
372
 
373
373
  Display:
@@ -404,7 +404,7 @@ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
404
404
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
405
405
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
406
406
 
407
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
407
+ aether print-next-up
408
408
  ```
409
409
 
410
410
  This auto-generates state-based recommendations (IDLE → init, READY → build, EXECUTING → continue, PLANNING → plan).
@@ -60,7 +60,7 @@ Generate swarm ID: `swarm-<unix_timestamp>`
60
60
 
61
61
  Initialize swarm findings:
62
62
  ```bash
63
- bash .aether/aether-utils.sh swarm-findings-init "<swarm_id>"
63
+ aether swarm-findings-init --id "<swarm_id>"
64
64
  ```
65
65
 
66
66
  #### Step 2.5: Check for Stale Swarm Session
@@ -72,19 +72,19 @@ SWARM_START=$(date +%s)
72
72
 
73
73
  Check for stale swarm files:
74
74
  ```bash
75
- stale_check=$(bash .aether/aether-utils.sh session-verify-fresh --command swarm "" "$SWARM_START")
75
+ stale_check=$(aether session-verify-fresh --command swarm "" "$SWARM_START")
76
76
  has_stale=$(echo "$stale_check" | jq -r '.stale | length')
77
77
 
78
78
  if [[ "$has_stale" -gt 0 ]]; then
79
79
  # Auto-clear stale swarm findings (safe - findings are temporary)
80
- bash .aether/aether-utils.sh session-clear --command swarm
80
+ aether session-clear --command swarm
81
81
  echo "Cleared stale swarm findings for fresh investigation"
82
82
  fi
83
83
  ```
84
84
 
85
85
  After initializing findings, verify swarm files are fresh:
86
86
  ```bash
87
- verify_result=$(bash .aether/aether-utils.sh session-verify-fresh --command swarm "" "$SWARM_START")
87
+ verify_result=$(aether session-verify-fresh --command swarm "" "$SWARM_START")
88
88
  if [[ $(echo "$verify_result" | jq -r '.missing | length') -gt 0 ]]; then
89
89
  echo "Warning: Swarm files not properly initialized"
90
90
  fi
@@ -106,7 +106,7 @@ Display header:
106
106
 
107
107
  Before any investigation that might lead to fixes, run using the Bash tool:
108
108
  ```bash
109
- bash .aether/aether-utils.sh autofix-checkpoint "pre-swarm-$SWARM_ID"
109
+ aether autofix-checkpoint --name "pre-swarm-$SWARM_ID"
110
110
  ```
111
111
 
112
112
  Store the result for potential rollback:
@@ -121,7 +121,7 @@ Store the result for potential rollback:
121
121
 
122
122
  Read existing blockers for context:
123
123
  ```bash
124
- bash .aether/aether-utils.sh flag-list --type blocker
124
+ aether flag-list --type blocker --json
125
125
  ```
126
126
 
127
127
  Read recent activity:
@@ -209,7 +209,7 @@ Wait for all 4 scouts to complete.
209
209
 
210
210
  As each scout returns, add their findings:
211
211
  ```bash
212
- bash .aether/aether-utils.sh swarm-findings-add "{swarm_id}" "{scout_type}" "{confidence}" '{finding_json}'
212
+ aether swarm-findings-add "{swarm_id}" "{scout_type}" "{confidence}" '{finding_json}'
213
213
  ```
214
214
 
215
215
  Display each scout's report as they complete:
@@ -238,7 +238,7 @@ Cross-compare all findings:
238
238
  Rank fix options:
239
239
  ```
240
240
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
241
- S O L U T I O N R A N K I N G
241
+ 🏆 S O L U T I O N R A N K I N G
242
242
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
243
243
 
244
244
  #1 [0.85 confidence] {best solution}
@@ -294,8 +294,8 @@ Inject learnings:
294
294
 
295
295
  Set solution in swarm findings and log success:
296
296
  ```bash
297
- bash .aether/aether-utils.sh swarm-solution-set "{swarm_id}" '{solution_json}'
298
- bash .aether/aether-utils.sh activity-log "SWARM_SUCCESS" "Queen" "Swarm {swarm_id} fixed: {brief description}"
297
+ aether swarm-solution-set "{swarm_id}" '{solution_json}'
298
+ aether activity-log "SWARM_SUCCESS" "Queen" "Swarm {swarm_id} fixed: {brief description}"
299
299
  ```
300
300
 
301
301
  **If verification fails:**
@@ -310,8 +310,8 @@ Attempting rollback...
310
310
 
311
311
  Rollback and log failure:
312
312
  ```bash
313
- bash .aether/aether-utils.sh autofix-rollback "{checkpoint_type}" "{checkpoint_ref}"
314
- bash .aether/aether-utils.sh activity-log "SWARM_FAILED" "Queen" "Swarm {swarm_id} fix failed verification"
313
+ aether autofix-rollback --type "{checkpoint_type}" --ref "{checkpoint_ref}"
314
+ aether activity-log "SWARM_FAILED" "Queen" "Swarm {swarm_id} fix failed verification"
315
315
  ```
316
316
 
317
317
  Track attempt count. If this is the 3rd failure on the same issue:
@@ -337,7 +337,7 @@ Swarm will not attempt further fixes on this issue.
337
337
 
338
338
  Archive findings:
339
339
  ```bash
340
- bash .aether/aether-utils.sh swarm-cleanup "{swarm_id}" --archive
340
+ aether swarm-cleanup "{swarm_id}" --archive
341
341
  ```
342
342
 
343
343
  Generate the state-based Next Up block:
@@ -345,5 +345,5 @@ Generate the state-based Next Up block:
345
345
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
346
346
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
347
347
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
348
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
348
+ aether print-next-up
349
349
  ```
@@ -31,7 +31,7 @@ Stop here.
31
31
 
32
32
  ### Step 2: List All Chambers
33
33
 
34
- Run using the Bash tool with description "Loading chamber list...": `bash .aether/aether-utils.sh chamber-list`
34
+ Run using the Bash tool with description "Loading chamber list...": `aether chamber-list`
35
35
 
36
36
  Parse JSON result into array of chambers.
37
37
 
@@ -129,7 +129,7 @@ Run /ant:tunnels {chamber_a} {chamber_b} to compare chambers
129
129
  ```
130
130
 
131
131
  To get the hash status, run using the Bash tool with description "Verifying chamber integrity...":
132
- - Run `bash .aether/aether-utils.sh chamber-verify .aether/chambers/{chamber_name}`
132
+ - Run `aether chamber-verify --path .aether/chambers/{chamber_name}`
133
133
  - If verified: hash_status = "verified"
134
134
  - If not verified: hash_status = "hash mismatch"
135
135
  - If error: hash_status = "error"
@@ -344,7 +344,7 @@ Run using the Bash tool with description "Importing pheromone signals...":
344
344
  # Import the EXTRACTED pheromone-only XML (NOT the combined colony-archive.xml)
345
345
  # $import_tmp_pheromones has <pheromones> as root — the format pheromone-import-xml expects
346
346
  # Second argument triggers prefix-tagging — imported signal IDs become "{source_colony}:original_id"
347
- import_result=$(bash .aether/aether-utils.sh pheromone-import-xml "$import_tmp_pheromones" "$source_colony" 2>&1)
347
+ import_result=$(aether pheromone-import-xml --input "$import_tmp_pheromones" --colony "$source_colony" 2>&1)
348
348
  import_ok=$(echo "$import_result" | jq -r '.ok // false' 2>/dev/null)
349
349
 
350
350
  if [[ "$import_ok" == "true" ]]; then
@@ -397,7 +397,7 @@ Generate the state-based Next Up block by running using the Bash tool with descr
397
397
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
398
398
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
399
399
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
400
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
400
+ aether print-next-up
401
401
  ```
402
402
 
403
403
  ## Implementation Notes
@@ -127,6 +127,6 @@ Generate the state-based Next Up block by running:
127
127
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
128
128
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
129
129
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
130
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
130
+ aether print-next-up
131
131
  ```
132
132
 
@@ -62,7 +62,7 @@ Caste slots come from agent frontmatter (`model:` field).
62
62
  ## Step 2: Check System Status
63
63
 
64
64
 
65
- Run using the Bash tool with description "Checking colony version...": `bash .aether/aether-utils.sh version-check-cached 2>/dev/null || echo "Utils available"`
65
+ Run using the Bash tool with description "Checking colony version...": `aether version-check-cached 2>/dev/null || echo "Utils available"`
66
66
 
67
67
 
68
68
 
@@ -122,7 +122,7 @@ Generate the state-based Next Up block by running using the Bash tool with descr
122
122
  state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
123
123
  current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
124
124
  total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
125
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
125
+ aether print-next-up
126
126
  ```
127
127
 
128
128
 
@@ -43,7 +43,7 @@ WATCH_START=$(date +%s)
43
43
 
44
44
  Check for stale watch files by running using the Bash tool with description "Checking for stale watch session...":
45
45
  ```bash
46
- stale_check=$(bash .aether/aether-utils.sh session-verify-fresh --command watch "" "$WATCH_START")
46
+ stale_check=$(aether session-verify-fresh --command watch "" "$WATCH_START")
47
47
  has_stale=$(echo "$stale_check" | jq -r '.stale | length' 2>/dev/null || echo "0")
48
48
  ```
49
49
 
@@ -195,21 +195,21 @@ Generate the state-based Next Up block by running using the Bash tool with descr
195
195
  Workers and commands update watch files as they work:
196
196
 
197
197
  ### Activity Log
198
- Workers write via: `bash .aether/aether-utils.sh activity-log "ACTION" "caste" "description"`
198
+ Workers write via: `aether activity-log "ACTION" "caste" "description"`
199
199
 
200
200
  For named ants (recommended):
201
201
  ```bash
202
202
  # Generate a name first
203
- ant_name=$(bash .aether/aether-utils.sh generate-ant-name "builder" | jq -r '.result')
203
+ ant_name=$(aether generate-ant-name --caste "builder" | jq -r '.result')
204
204
  # Log with ant name
205
- bash .aether/aether-utils.sh activity-log "CREATED" "$ant_name (Builder)" "Implemented auth module"
205
+ aether activity-log "CREATED" "$ant_name (Builder)" "Implemented auth module"
206
206
  ```
207
207
 
208
208
  ### Spawn Tracking
209
209
  Log spawns for tree visualization:
210
210
  ```bash
211
- bash .aether/aether-utils.sh spawn-log "Prime" "builder" "Hammer-42" "implementing auth"
212
- bash .aether/aether-utils.sh spawn-complete "Hammer-42" "completed" "auth module done"
211
+ aether spawn-log --name "Prime" --caste "builder" --id "Hammer-42" --description "implementing auth"
212
+ aether spawn-complete --id "Hammer-42" --status "completed" --summary "auth module done"
213
213
  ```
214
214
 
215
215
  ### Status File
@@ -220,11 +220,11 @@ Commands update `.aether/data/watch-status.txt` with current state:
220
220
  - Last Activity: most recent log entry
221
221
 
222
222
  ### Progress File
223
- Update via: `bash .aether/aether-utils.sh update-progress <percent> "<message>" <phase> <total>`
223
+ Update via: `aether update-progress <percent> "<message>" <phase> <total>`
224
224
 
225
225
  Example:
226
226
  ```bash
227
- bash .aether/aether-utils.sh update-progress 45 "Building auth module..." 2 5
227
+ aether update-progress 45 "Building auth module..." 2 5
228
228
  ```
229
229
 
230
230
  ---
@@ -314,7 +314,7 @@ Excavation date: {YYYY-MM-DD}
314
314
  ### Step 8: Log Activity
315
315
 
316
316
  ```bash
317
- 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"
317
+ aether activity-log "ARCHAEOLOGY" "Archaeologist" "Excavated {target}: {total_commits} commits, {author_count} authors, {findings_count} findings, {tech_debt_count} debt markers"
318
318
  ```
319
319
 
320
320
  ## Investigation Guidelines