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
@@ -37,7 +37,7 @@ Extract: `goal`, `state`, `current_phase`, `plan.phases`, `errors`, `memory`, `e
37
37
 
38
38
  ### Step 1.5: Load State and Show Resumption Context
39
39
 
40
- Run using Bash tool: `bash .aether/aether-utils.sh load-state`
40
+ Run using Bash tool: `aether load-state`
41
41
 
42
42
  If successful and goal is not null:
43
43
  1. Extract current_phase from state
@@ -52,7 +52,7 @@ If .aether/HANDOFF.md exists (detected in load-state output):
52
52
  - Read .aether/HANDOFF.md for additional context
53
53
  - Remove .aether/HANDOFF.md after display (cleanup)
54
54
 
55
- Run: `bash .aether/aether-utils.sh unload-state` to release lock.
55
+ Run: `aether unload-state` to release lock.
56
56
 
57
57
  **Error handling:**
58
58
  - If E_FILE_NOT_FOUND: "No colony initialized. Run /ant:init first." and stop
@@ -78,7 +78,7 @@ If `state != "EXECUTING"`:
78
78
 
79
79
  Run:
80
80
  ```bash
81
- survey_check=$(bash .aether/aether-utils.sh survey-verify 2>/dev/null || true)
81
+ survey_check=$(aether survey-verify 2>/dev/null || true)
82
82
  survey_docs=$(ls -1 .aether/data/survey/*.md 2>/dev/null | wc -l | tr -d ' ')
83
83
  survey_latest=$(ls -t .aether/data/survey/*.md 2>/dev/null | head -1)
84
84
  if [[ -n "$survey_latest" ]]; then
@@ -187,7 +187,7 @@ Continue to Phase 5: Secrets Scan.
187
187
  3. **If spawning Probe:**
188
188
 
189
189
  a. Generate Probe name and dispatch:
190
- Run using the Bash tool with description "Generating Probe name...": `probe_name=$(bash .aether/aether-utils.sh generate-ant-name "probe") && bash .aether/aether-utils.sh spawn-log "Queen" "probe" "$probe_name" "Coverage improvement: ${coverage_percent}%" && echo "{\"name\":\"$probe_name\"}"`
190
+ Run using the Bash tool with description "Generating Probe name...": `probe_name=$(aether generate-ant-name --caste "probe") && aether spawn-log --name "Queen" --caste "probe" --id "$probe_name" --description "Coverage improvement: ${coverage_percent}%" && echo "{\"name\":\"$probe_name\"}"`
191
191
 
192
192
  b. Display:
193
193
  ```
@@ -217,10 +217,10 @@ Continue to Phase 5: Secrets Scan.
217
217
  f. Parse Probe JSON output and log completion:
218
218
  Extract: `tests_added`, `coverage.lines`, `coverage.branches`, `coverage.functions`, `edge_cases_discovered`
219
219
 
220
- Run using the Bash tool with description "Logging Probe completion...": `bash .aether/aether-utils.sh spawn-complete "$probe_name" "completed" "{probe_summary}"`
220
+ Run using the Bash tool with description "Logging Probe completion...": `aether spawn-complete --id "$probe_name" --status "completed" --summary "{probe_summary}"`
221
221
 
222
222
  g. Log findings to midden:
223
- Run using the Bash tool with description "Logging Probe findings to midden...": `bash .aether/aether-utils.sh midden-write "coverage" "Probe generated tests, coverage: ${coverage_lines}%/${coverage_branches}%/${coverage_functions}%" "probe"`
223
+ Run using the Bash tool with description "Logging Probe findings to midden...": `aether midden-write "coverage" "Probe generated tests, coverage: ${coverage_lines}%/${coverage_branches}%/${coverage_functions}%" "probe"`
224
224
 
225
225
  4. **NON-BLOCKING continuation:**
226
226
  Display Probe findings summary:
@@ -369,8 +369,8 @@ The phase will NOT advance until spawning occurs.
369
369
  **CRITICAL:** Do NOT proceed to Step 1.7. Do NOT advance the phase.
370
370
  Log the violation:
371
371
  ```bash
372
- bash .aether/aether-utils.sh activity-log "BLOCKED" "colony" "Spawn gate failed: {task_count} tasks, 0 spawns"
373
- bash .aether/aether-utils.sh error-flag-pattern "no-spawn-violation" "Prime Worker completed phase without spawning specialists" "critical"
372
+ aether activity-log "BLOCKED" "colony" "Spawn gate failed: {task_count} tasks, 0 spawns"
373
+ aether error-flag-pattern "no-spawn-violation" "Prime Worker completed phase without spawning specialists" "critical"
374
374
  ```
375
375
 
376
376
  **HARD REJECTION - If watcher_count == 0 (no testing separation):**
@@ -411,7 +411,7 @@ Continue to Step 1.7.
411
411
  Scan all modified/created files for known anti-patterns. This catches recurring bugs before they reach production.
412
412
 
413
413
  ```bash
414
- bash .aether/aether-utils.sh check-antipattern "{file_path}"
414
+ aether check-antipattern "{file_path}"
415
415
  ```
416
416
 
417
417
  Run for each file in `files_created` and `files_modified` from Prime Worker output.
@@ -520,7 +520,7 @@ If no CRITICAL issues, continue to Step 1.7.1.
520
520
  Run using the Bash tool with description "Establishing test baseline...": `test_output_before=$(npm test 2>&1 || echo "TEST_FAILED") && tests_passing_before=$(echo "$test_output_before" | grep -oE '[0-9]+ passing' | grep -oE '[0-9]+' || echo "0") && echo "Baseline: $tests_passing_before tests passing"`
521
521
 
522
522
  b. **Generate Weaver name and dispatch:**
523
- Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(bash .aether/aether-utils.sh generate-ant-name "weaver") && bash .aether/aether-utils.sh spawn-log "Queen" "weaver" "$weaver_name" "Proactive refactoring" && echo "{\"name\":\"$weaver_name\"}"`
523
+ Run using the Bash tool with description "Generating Weaver name...": `weaver_name=$(aether generate-ant-name --caste "weaver") && aether spawn-log --name "Queen" --caste "weaver" --id "$weaver_name" --description "Proactive refactoring" && echo "{\"name\":\"$weaver_name\"}"`
524
524
 
525
525
  c. **Display:**
526
526
  ```
@@ -566,10 +566,10 @@ If no CRITICAL issues, continue to Step 1.7.1.
566
566
  ```
567
567
 
568
568
  g. **Log completion:**
569
- Run using the Bash tool with description "Logging Weaver completion...": `bash .aether/aether-utils.sh spawn-complete "$weaver_name" "$weaver_status" "Refactoring $weaver_status"`
569
+ Run using the Bash tool with description "Logging Weaver completion...": `aether spawn-complete --id "$weaver_name" --status "$weaver_status" --summary "Refactoring $weaver_status"`
570
570
 
571
571
  h. **Log to midden:**
572
- Run using the Bash tool with description "Logging refactoring activity to midden...": `bash .aether/aether-utils.sh midden-write "refactoring" "Weaver refactored files, complexity before/after: ${complexity_before}/${complexity_after}" "weaver"`
572
+ Run using the Bash tool with description "Logging refactoring activity to midden...": `aether midden-write "refactoring" "Weaver refactored files, complexity before/after: ${complexity_before}/${complexity_after}" "weaver"`
573
573
 
574
574
  5. **Display completion:**
575
575
  ```
@@ -598,7 +598,7 @@ Continue to Step 1.9.
598
598
  **If package.json exists:**
599
599
 
600
600
  1. Generate Gatekeeper name and log spawn:
601
- Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(bash .aether/aether-utils.sh generate-ant-name "gatekeeper") && bash .aether/aether-utils.sh spawn-log "Queen" "gatekeeper" "$gatekeeper_name" "Supply chain security audit" && echo "{\"name\":\"$gatekeeper_name\"}"`
601
+ Run using the Bash tool with description "Generating Gatekeeper name...": `gatekeeper_name=$(aether generate-ant-name --caste "gatekeeper") && aether spawn-log --name "Queen" --caste "gatekeeper" --id "$gatekeeper_name" --description "Supply chain security audit" && echo "{\"name\":\"$gatekeeper_name\"}"`
602
602
 
603
603
  2. Display:
604
604
  ```
@@ -620,7 +620,7 @@ Gatekeeper mission: Perform supply chain security audit on this codebase.
620
620
  5. Parse Gatekeeper JSON output and log completion:
621
621
  Extract: `security.critical`, `security.high`, `status`
622
622
 
623
- Run using the Bash tool with description "Logging Gatekeeper completion...": `bash .aether/aether-utils.sh spawn-complete "$gatekeeper_name" "completed" "{gatekeeper_summary}"`
623
+ Run using the Bash tool with description "Logging Gatekeeper completion...": `aether spawn-complete --id "$gatekeeper_name" --status "completed" --summary "{gatekeeper_summary}"`
624
624
 
625
625
  **Gate Decision Logic:**
626
626
 
@@ -648,7 +648,7 @@ Gatekeeper: {high_count} high-severity issues found
648
648
  Security warnings logged to midden for later review.
649
649
  Proceeding with caution...
650
650
  ```
651
- Run using the Bash tool with description "Logging high-severity warnings...": `bash .aether/aether-utils.sh midden-write "security" "High CVEs found: $high_count" "gatekeeper"`
651
+ Run using the Bash tool with description "Logging high-severity warnings...": `aether midden-write "security" "High CVEs found: $high_count" "gatekeeper"`
652
652
  Continue to Step 1.9.
653
653
 
654
654
  - **If clean (no critical or high):**
@@ -662,7 +662,7 @@ Continue to Step 1.9.
662
662
  **Code quality audit -- runs on every `/ant:continue` for consistent coverage.**
663
663
 
664
664
  1. Generate Auditor name and log spawn:
665
- Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(bash .aether/aether-utils.sh generate-ant-name "auditor") && bash .aether/aether-utils.sh spawn-log "Queen" "auditor" "$auditor_name" "Code quality audit" && echo "{\"name\":\"$auditor_name\"}"`
665
+ Run using the Bash tool with description "Generating Auditor name...": `auditor_name=$(aether generate-ant-name --caste "auditor") && aether spawn-log --name "Queen" --caste "auditor" --id "$auditor_name" --description "Code quality audit" && echo "{\"name\":\"$auditor_name\"}"`
666
666
 
667
667
  2. Display:
668
668
  ```
@@ -687,7 +687,7 @@ Auditor mission: Perform comprehensive code quality audit on this codebase.
687
687
  6. Parse Auditor JSON output and log completion:
688
688
  Extract: `findings.critical`, `findings.high`, `findings.medium`, `findings.low`, `findings.info`, `overall_score`, `dimensions_audited`
689
689
 
690
- Run using the Bash tool with description "Logging Auditor completion...": `bash .aether/aether-utils.sh spawn-complete "$auditor_name" "completed" "{auditor_summary}"`
690
+ Run using the Bash tool with description "Logging Auditor completion...": `aether spawn-complete --id "$auditor_name" --status "completed" --summary "{auditor_summary}"`
691
691
 
692
692
  **Gate Decision Logic:**
693
693
 
@@ -709,7 +709,7 @@ Critical Findings:
709
709
 
710
710
  The phase will NOT advance with critical quality issues.
711
711
  ```
712
- Run using the Bash tool with description "Logging critical quality block...": `bash .aether/aether-utils.sh error-flag-pattern "auditor-critical-findings" "$critical_count critical quality issues found" "critical"`
712
+ Run using the Bash tool with description "Logging critical quality block...": `aether error-flag-pattern "auditor-critical-findings" "$critical_count critical quality issues found" "critical"`
713
713
  **CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
714
714
 
715
715
  - **Else if `overall_score < 60`:**
@@ -727,7 +727,7 @@ Required Actions:
727
727
 
728
728
  The phase will NOT advance with quality score below 60.
729
729
  ```
730
- Run using the Bash tool with description "Logging quality score block...": `bash .aether/aether-utils.sh error-flag-pattern "auditor-quality-score" "Score $overall_score below threshold 60" "critical"`
730
+ Run using the Bash tool with description "Logging quality score block...": `aether error-flag-pattern "auditor-quality-score" "Score $overall_score below threshold 60" "critical"`
731
731
  **CRITICAL:** Do NOT proceed to Step 1.10. Stop here.
732
732
 
733
733
  - **Else if `findings.high > 0`:**
@@ -740,7 +740,7 @@ Auditor: Quality score {overall_score}/100 -- PASSED with warnings
740
740
  Quality warnings logged to midden for later review.
741
741
  Proceeding with caution...
742
742
  ```
743
- Run using the Bash tool with description "Logging high-quality warnings...": `bash .aether/aether-utils.sh midden-write "quality" "High severity issues: $high_count (score: $overall_score)" "auditor"`
743
+ Run using the Bash tool with description "Logging high-quality warnings...": `aether midden-write "quality" "High severity issues: $high_count (score: $overall_score)" "auditor"`
744
744
  Continue to Step 1.10.
745
745
 
746
746
  - **If clean (score >= 60, no critical):**
@@ -786,7 +786,7 @@ The phase will NOT advance with fabricated metrics.
786
786
 
787
787
  **CRITICAL:** Do NOT proceed. Log the violation:
788
788
  ```bash
789
- bash .aether/aether-utils.sh error-flag-pattern "fabricated-tdd" "Prime Worker reported TDD metrics without creating test files" "critical"
789
+ aether error-flag-pattern "fabricated-tdd" "Prime Worker reported TDD metrics without creating test files" "critical"
790
790
  ```
791
791
 
792
792
  **If tests_added == 0 or test files exist matching claims:**
@@ -832,7 +832,7 @@ Please describe the issues so they can be addressed:
832
832
 
833
833
  Use AskUserQuestion to get issue details. Log to errors.records:
834
834
  ```bash
835
- bash .aether/aether-utils.sh error-add "runtime" "critical" "{user_description}" {phase}
835
+ aether error-add "runtime" "critical" "{user_description}" {phase}
836
836
  ```
837
837
 
838
838
  Do NOT proceed to Step 2.
@@ -868,12 +868,12 @@ Continue to Step 1.12.
868
868
 
869
869
  First, auto-resolve any flags eligible for resolution now that verification has passed:
870
870
  ```bash
871
- bash .aether/aether-utils.sh flag-auto-resolve "build_pass"
871
+ aether flag-auto-resolve "build_pass"
872
872
  ```
873
873
 
874
874
  Then check for remaining blocking flags:
875
875
  ```bash
876
- bash .aether/aether-utils.sh flag-check-blockers {current_phase}
876
+ aether flag-check-blockers {current_phase}
877
877
  ```
878
878
 
879
879
  Parse result for `blockers`, `issues`, and `notes` counts.
@@ -975,7 +975,7 @@ Update COLONY_STATE.json:
975
975
 
976
976
  Run using the Bash tool with description "Recording learning observations...":
977
977
  ```bash
978
- colony_name=$(bash .aether/aether-utils.sh colony-name 2>/dev/null | jq -r '.result.name // ""')
978
+ colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
979
979
  [[ -z "$colony_name" ]] && colony_name="unknown"
980
980
 
981
981
  # Get learnings from the current phase
@@ -985,7 +985,7 @@ Update COLONY_STATE.json:
985
985
  echo "$current_phase_learnings" | jq -r '.learnings[]?.claim // empty' 2>/dev/null | while read -r claim; do
986
986
  if [[ -n "$claim" ]]; then
987
987
  # Default wisdom_type to "pattern" (threshold: 3 observations)
988
- bash .aether/aether-utils.sh memory-capture "learning" "$claim" "pattern" "worker:continue" 2>/dev/null || true
988
+ aether memory-capture "learning" "$claim" "pattern" "worker:continue" 2>/dev/null || true
989
989
  fi
990
990
  done
991
991
  echo "Recorded observations for threshold tracking"
@@ -1061,7 +1061,7 @@ Update COLONY_STATE.json:
1061
1061
  Write COLONY_STATE.json.
1062
1062
 
1063
1063
  Validate the state file:
1064
- Run using the Bash tool with description "Validating colony state...": `bash .aether/aether-utils.sh validate-state colony`
1064
+ Run using the Bash tool with description "Validating colony state...": `aether validate-state colony`
1065
1065
 
1066
1066
  ### Step 2.1: Auto-Emit Phase Pheromones (SILENT)
1067
1067
 
@@ -1079,7 +1079,7 @@ After learning extraction completes in Step 2, auto-emit a FEEDBACK signal summa
1079
1079
  phase_feedback="Phase $phase_id ($phase_name) completed. Key patterns: {brief summary of 1-3 learnings from Step 2}"
1080
1080
  # Fallback if no learnings: "Phase $phase_id ($phase_name) completed without notable patterns."
1081
1081
 
1082
- bash .aether/aether-utils.sh pheromone-write FEEDBACK "$phase_feedback" \
1082
+ aether pheromone-write --type FEEDBACK --content "$phase_feedback" \
1083
1083
  --strength 0.6 \
1084
1084
  --source "worker:continue" \
1085
1085
  --reason "Auto-emitted on phase advance: captures what worked and what was learned" \
@@ -1099,7 +1099,7 @@ flagged_patterns=$(jq -r '.errors.flagged_patterns[]? | select(.count >= 2) | .p
1099
1099
  For each pattern returned by the above query, emit a REDIRECT signal:
1100
1100
 
1101
1101
  ```bash
1102
- bash .aether/aether-utils.sh pheromone-write REDIRECT "$pattern_text" \
1102
+ aether pheromone-write --type REDIRECT --content "$pattern_text" \
1103
1103
  --strength 0.7 \
1104
1104
  --source "system" \
1105
1105
  --reason "Auto-emitted: error pattern recurred across 2+ phases" \
@@ -1109,7 +1109,7 @@ bash .aether/aether-utils.sh pheromone-write REDIRECT "$pattern_text" \
1109
1109
  Also capture each recurring pattern as a resolution candidate:
1110
1110
 
1111
1111
  ```bash
1112
- bash .aether/aether-utils.sh memory-capture \
1112
+ aether memory-capture \
1113
1113
  "resolution" \
1114
1114
  "$pattern_text" \
1115
1115
  "pattern" \
@@ -1122,7 +1122,7 @@ If `errors.flagged_patterns` doesn't exist or is empty, skip silently.
1122
1122
 
1123
1123
  After auto-emission, expire all signals with `expires_at == "phase_end"`:
1124
1124
 
1125
- Run using the Bash tool with description "Maintaining pheromone memory...": `bash .aether/aether-utils.sh pheromone-expire --phase-end-only 2>/dev/null && bash .aether/aether-utils.sh eternal-init 2>/dev/null`
1125
+ Run using the Bash tool with description "Maintaining pheromone memory...": `aether pheromone-expire --phase-end-only 2>/dev/null && aether eternal-init 2>/dev/null`
1126
1126
 
1127
1127
  ### Step 2.1.5: Check for Promotion Proposals
1128
1128
 
@@ -1132,7 +1132,7 @@ After extracting learnings, check for observations that have met promotion thres
1132
1132
 
1133
1133
  1. **Check for proposals:**
1134
1134
  ```bash
1135
- proposals=$(bash .aether/aether-utils.sh learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
1135
+ proposals=$(aether learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
1136
1136
  proposal_count=$(echo "$proposals" | jq '.proposals | length')
1137
1137
  ```
1138
1138
 
@@ -1142,7 +1142,7 @@ After extracting learnings, check for observations that have met promotion thres
1142
1142
 
1143
1143
  ```bash
1144
1144
  if [[ "$proposal_count" -gt 0 ]]; then
1145
- bash .aether/aether-utils.sh learning-approve-proposals
1145
+ aether learning-approve-proposals
1146
1146
  fi
1147
1147
  # If no proposals, silently skip without notice
1148
1148
  ```
@@ -1211,7 +1211,7 @@ If no `CHANGELOG.md` exists, `changelog-append` creates one automatically.
1211
1211
  **Step 2.3.1: Collect plan data**
1212
1212
 
1213
1213
  ```bash
1214
- bash .aether/aether-utils.sh changelog-collect-plan-data "{phase_identifier}" "{plan_number}"
1214
+ aether changelog-collect-plan-data "{phase_identifier}" "{plan_number}"
1215
1215
  ```
1216
1216
 
1217
1217
  Parse the returned JSON to extract `files`, `decisions`, `worked`, and `requirements` arrays.
@@ -1227,7 +1227,7 @@ If the command fails (e.g., no plan file found), fall back to collecting data ma
1227
1227
  **Step 2.3.2: Append changelog entry**
1228
1228
 
1229
1229
  ```bash
1230
- bash .aether/aether-utils.sh changelog-append \
1230
+ aether changelog-append \
1231
1231
  "$(date +%Y-%m-%d)" \
1232
1232
  "{phase_identifier}" \
1233
1233
  "{plan_number}" \
@@ -1249,7 +1249,7 @@ After the phase is advanced and changelog updated, suggest a commit to preserve
1249
1249
 
1250
1250
  1. **Generate the commit message:**
1251
1251
  ```bash
1252
- bash .aether/aether-utils.sh generate-commit-message "milestone" {phase_id} "{phase_name}" "{one_line_summary}"
1252
+ aether generate-commit-message --type "milestone" --phase {phase_id} --subject "{phase_name}" "{one_line_summary}"
1253
1253
  ```
1254
1254
  Parse the returned JSON to extract `message` and `files_changed`.
1255
1255
 
@@ -1350,18 +1350,18 @@ After phase advancement is complete, update `.aether/CONTEXT.md`:
1350
1350
 
1351
1351
  **Log the activity:**
1352
1352
  ```bash
1353
- bash .aether/aether-utils.sh context-update activity "continue" "Phase {prev_id} completed, advanced to {next_id}" "---"
1353
+ aether context-update activity "continue" "Phase {prev_id} completed, advanced to {next_id}" "---"
1354
1354
  ```
1355
1355
 
1356
1356
  **Update the phase:**
1357
1357
  ```bash
1358
- bash .aether/aether-utils.sh context-update update-phase {next_id} "{next_phase_name}" "YES" "Phase advanced, ready to build"
1358
+ aether context-update update-phase {next_id} "{next_phase_name}" "YES" "Phase advanced, ready to build"
1359
1359
  ```
1360
1360
 
1361
1361
  **Log any decisions from this session:**
1362
1362
  If any architectural decisions were made during verification, also run:
1363
1363
  ```bash
1364
- bash .aether/aether-utils.sh context-update decision "{decision_description}" "{rationale}" "Queen"
1364
+ aether context-update decision "{decision_description}" "{rationale}" "Queen"
1365
1365
  ```
1366
1366
 
1367
1367
  ### Step 2.7: Project Completion
@@ -1433,4 +1433,4 @@ Output:
1433
1433
 
1434
1434
  Update the session tracking file to enable `/ant:resume` after context clear:
1435
1435
 
1436
- Run using the Bash tool with description "Saving session state...": `bash .aether/aether-utils.sh session-update "/ant:continue" "/ant:build {next_id}" "Phase {prev_id} completed, advanced to Phase {next_id}"`
1436
+ Run using the Bash tool with description "Saving session state...": `aether session-update --command "/ant:continue" --worker "/ant:build {next_id}" --summary "Phase {prev_id} completed, advanced to Phase {next_id}"`
@@ -31,7 +31,7 @@ When `--deliberate "<proposal>"` is passed, run a structured Advocate/Challenger
31
31
 
32
32
  Run using the Bash tool with description "Checking deliberation budget...":
33
33
  ```bash
34
- bash .aether/aether-utils.sh council-budget-check
34
+ aether council-budget-check
35
35
  ```
36
36
 
37
37
  Parse result. If `allowed` is `false`:
@@ -47,7 +47,7 @@ Stop here.
47
47
 
48
48
  Run using the Bash tool with description "Opening deliberation...":
49
49
  ```bash
50
- bash .aether/aether-utils.sh council-deliberate --proposal "<proposal>"
50
+ aether council-deliberate --proposal "<proposal>"
51
51
  ```
52
52
 
53
53
  Capture `deliberation_id` from `result.id`.
@@ -71,7 +71,7 @@ Spawn an Advocate scout to argue **in favor** of the proposal.
71
71
 
72
72
  Record the argument:
73
73
  ```bash
74
- bash .aether/aether-utils.sh council-advocate \
74
+ aether council-advocate \
75
75
  --deliberation-id "<deliberation_id>" \
76
76
  --argument "<advocate_argument>"
77
77
  ```
@@ -90,7 +90,7 @@ Spawn a Challenger scout to argue **against** the proposal.
90
90
 
91
91
  Record the argument:
92
92
  ```bash
93
- bash .aether/aether-utils.sh council-challenger \
93
+ aether council-challenger \
94
94
  --deliberation-id "<deliberation_id>" \
95
95
  --argument "<challenger_argument>"
96
96
  ```
@@ -109,7 +109,7 @@ Spawn a Sage scout to synthesize both positions and provide a recommendation.
109
109
 
110
110
  Record the sage synthesis:
111
111
  ```bash
112
- bash .aether/aether-utils.sh council-sage \
112
+ aether council-sage \
113
113
  --deliberation-id "<deliberation_id>" \
114
114
  --synthesis "<synthesis>" \
115
115
  --recommendation "<recommendation>"
@@ -23,7 +23,7 @@ You are the **Queen Ant Colony**. Run the data cleaner to scan for and remove te
23
23
 
24
24
  Run using the Bash tool with description "Scanning colony data for test artifacts...":
25
25
  ```bash
26
- bash .aether/aether-utils.sh data-clean --dry-run
26
+ aether data-clean --dry-run
27
27
  ```
28
28
 
29
29
  Display the output to the user. This shows artifact counts per data file without modifying anything.
@@ -52,7 +52,7 @@ If user says no, display "No changes made." and skip to Step 5.
52
52
 
53
53
  If user confirmed, run using the Bash tool with description "Removing test artifacts...":
54
54
  ```bash
55
- bash .aether/aether-utils.sh data-clean --confirm
55
+ aether data-clean --confirm
56
56
  ```
57
57
 
58
58
  ### Step 4: Summary
@@ -228,7 +228,7 @@ Colony status: /ant:status
228
228
 
229
229
 
230
230
  ```bash
231
- bash .aether/aether-utils.sh activity-log "DREAM" "Dreamer" "Dream session: {N} observations, {concerns} concerns, {pheromones} pheromone suggestions"
231
+ aether activity-log "DREAM" "Dreamer" "Dream session: {N} observations, {concerns} concerns, {pheromones} pheromone suggestions"
232
232
  ```
233
233
 
234
234
 
@@ -194,7 +194,7 @@ version=$(jq -r '.version // "3.0"' .aether/data/COLONY_STATE.json)
194
194
 
195
195
  Create the chamber:
196
196
  ```bash
197
- bash .aether/aether-utils.sh chamber-create \
197
+ aether chamber-create \
198
198
  ".aether/chambers/{chamber_name}" \
199
199
  ".aether/data/COLONY_STATE.json" \
200
200
  "{goal}" \
@@ -212,7 +212,7 @@ Export combined XML archive to the chamber. This is a HARD REQUIREMENT — entom
212
212
 
213
213
  ```bash
214
214
  chamber_dir=".aether/chambers/$chamber_name"
215
- xml_result=$(bash .aether/aether-utils.sh colony-archive-xml "$chamber_dir/colony-archive.xml" 2>&1)
215
+ xml_result=$(aether colony-archive-xml --output "$chamber_dir/colony-archive.xml" 2>&1)
216
216
  xml_ok=$(echo "$xml_result" | jq -r '.ok // false' 2>/dev/null)
217
217
 
218
218
  if [[ "$xml_ok" != "true" ]]; then
@@ -248,7 +248,7 @@ done
248
248
 
249
249
  Run verification:
250
250
  ```bash
251
- bash .aether/aether-utils.sh chamber-verify ".aether/chambers/{chamber_name}"
251
+ aether chamber-verify --path ".aether/chambers/{chamber_name}"
252
252
  ```
253
253
 
254
254
  If verification fails, display error and stop:
@@ -29,7 +29,7 @@ Parse `$normalized_args`:
29
29
 
30
30
  Run using the Bash tool with description "Exporting pheromone signals to XML...":
31
31
  ```bash
32
- bash .aether/aether-utils.sh pheromone-export-xml "<output_path>"
32
+ aether pheromone-export-xml --output "<output_path>"
33
33
  ```
34
34
 
35
35
  Parse the returned JSON:
@@ -70,8 +70,8 @@ Write COLONY_STATE.json.
70
70
 
71
71
  **Write pheromone signal and update context:**
72
72
  ```bash
73
- bash .aether/aether-utils.sh pheromone-write FEEDBACK "$normalized_args" --strength 0.7 --reason "User feedback guidance" 2>/dev/null || true
74
- bash .aether/aether-utils.sh context-update constraint feedback "$normalized_args" "user" 2>/dev/null || true
73
+ aether pheromone-write --type FEEDBACK --content "$normalized_args" --strength 0.7 --reason "User feedback guidance" 2>/dev/null || true
74
+ aether context-update --section constraint --key feedback --content "$normalized_args" "user" 2>/dev/null || true
75
75
  ```
76
76
 
77
77
  ### Step 3: Confirm
@@ -57,7 +57,7 @@ Stop here.
57
57
 
58
58
  Run:
59
59
  ```bash
60
- bash .aether/aether-utils.sh flag-add "{type}" "{title}" "{description}" "manual" {phase_or_null}
60
+ aether flag-add --severity "{type}" --title "{title}" --description "{description}" --source "manual" --phase {phase_or_null}
61
61
  ```
62
62
 
63
63
  Parse the result for the flag ID.
@@ -39,7 +39,7 @@ Examples:
39
39
  If `--resolve` was provided:
40
40
 
41
41
  ```bash
42
- bash .aether/aether-utils.sh flag-resolve "{flag_id}" "{resolution_message}"
42
+ aether flag-resolve --id "{flag_id}" --message "{resolution_message}"
43
43
  ```
44
44
  Output:
45
45
  ```
@@ -54,7 +54,7 @@ Stop here.
54
54
  If `--ack` was provided:
55
55
 
56
56
  ```bash
57
- bash .aether/aether-utils.sh flag-acknowledge "{flag_id}"
57
+ aether flag-acknowledge --id "{flag_id}"
58
58
  ```
59
59
  Output:
60
60
  ```
@@ -71,7 +71,7 @@ Stop here.
71
71
  Run:
72
72
 
73
73
  ```bash
74
- bash .aether/aether-utils.sh flag-list {options}
74
+ aether flag-list {options}
75
75
  ```
76
76
 
77
77
  Parse result for flags array.
@@ -46,8 +46,8 @@ Write constraints.json.
46
46
 
47
47
  **Write pheromone signal and update context:**
48
48
  ```bash
49
- bash .aether/aether-utils.sh pheromone-write FOCUS "$normalized_args" --strength 0.8 --reason "User directed colony attention" 2>/dev/null || true
50
- bash .aether/aether-utils.sh context-update constraint focus "$normalized_args" "user" 2>/dev/null || true
49
+ aether pheromone-write --type FOCUS --content "$normalized_args" --strength 0.8 --reason "User directed colony attention" 2>/dev/null || true
50
+ aether context-update --section constraint --key focus --content "$normalized_args" "user" 2>/dev/null || true
51
51
  ```
52
52
 
53
53
  ### Step 3: Confirm
@@ -42,7 +42,7 @@ Verify the XML file exists. If not -> "File not found: <path>", stop.
42
42
 
43
43
  Run using the Bash tool with description "Importing pheromone signals from XML...":
44
44
  ```bash
45
- bash .aether/aether-utils.sh pheromone-import-xml "<xml_path>" "<colony_prefix>"
45
+ aether pheromone-import-xml --input "<xml_path>" --colony "<colony_prefix>"
46
46
  ```
47
47
 
48
48
  Parse the returned JSON: