aether-colony 5.3.3 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/.aether/commands/archaeology.yaml +3 -3
  2. package/.aether/commands/build.yaml +45 -45
  3. package/.aether/commands/chaos.yaml +7 -7
  4. package/.aether/commands/colonize.yaml +17 -17
  5. package/.aether/commands/continue.yaml +40 -40
  6. package/.aether/commands/council.yaml +6 -6
  7. package/.aether/commands/data-clean.yaml +3 -3
  8. package/.aether/commands/dream.yaml +2 -2
  9. package/.aether/commands/entomb.yaml +11 -11
  10. package/.aether/commands/export-signals.yaml +2 -2
  11. package/.aether/commands/feedback.yaml +6 -6
  12. package/.aether/commands/flag.yaml +2 -2
  13. package/.aether/commands/flags.yaml +4 -4
  14. package/.aether/commands/focus.yaml +6 -6
  15. package/.aether/commands/help.yaml +1 -1
  16. package/.aether/commands/history.yaml +1 -1
  17. package/.aether/commands/import-signals.yaml +2 -2
  18. package/.aether/commands/init.yaml +16 -16
  19. package/.aether/commands/insert-phase.yaml +1 -1
  20. package/.aether/commands/interpret.yaml +2 -2
  21. package/.aether/commands/lay-eggs.yaml +3 -3
  22. package/.aether/commands/maturity.yaml +2 -2
  23. package/.aether/commands/memory-details.yaml +1 -1
  24. package/.aether/commands/migrate-state.yaml +1 -1
  25. package/.aether/commands/oracle.yaml +77 -82
  26. package/.aether/commands/organize.yaml +5 -5
  27. package/.aether/commands/patrol.yaml +6 -6
  28. package/.aether/commands/pause-colony.yaml +7 -7
  29. package/.aether/commands/phase.yaml +1 -1
  30. package/.aether/commands/pheromones.yaml +1 -1
  31. package/.aether/commands/plan.yaml +14 -14
  32. package/.aether/commands/quick.yaml +4 -4
  33. package/.aether/commands/redirect.yaml +6 -6
  34. package/.aether/commands/resume-colony.yaml +9 -9
  35. package/.aether/commands/resume.yaml +5 -38
  36. package/.aether/commands/run.yaml +7 -7
  37. package/.aether/commands/seal.yaml +33 -33
  38. package/.aether/commands/skill-create.yaml +4 -4
  39. package/.aether/commands/status.yaml +14 -14
  40. package/.aether/commands/swarm.yaml +13 -13
  41. package/.aether/commands/tunnels.yaml +7 -7
  42. package/.aether/commands/update.yaml +1 -1
  43. package/.aether/commands/verify-castes.yaml +3 -3
  44. package/.aether/commands/watch.yaml +15 -15
  45. package/.aether/docs/command-playbooks/build-complete.md +7 -7
  46. package/.aether/docs/command-playbooks/build-context.md +11 -11
  47. package/.aether/docs/command-playbooks/build-full.md +69 -69
  48. package/.aether/docs/command-playbooks/build-prep.md +9 -9
  49. package/.aether/docs/command-playbooks/build-verify.md +27 -27
  50. package/.aether/docs/command-playbooks/build-wave.md +38 -38
  51. package/.aether/docs/command-playbooks/continue-advance.md +28 -28
  52. package/.aether/docs/command-playbooks/continue-finalize.md +12 -12
  53. package/.aether/docs/command-playbooks/continue-full.md +47 -47
  54. package/.aether/docs/command-playbooks/continue-gates.md +18 -18
  55. package/.aether/docs/command-playbooks/continue-verify.md +10 -10
  56. package/.aether/templates/colony-state-template.json +1 -0
  57. package/.aether/utils/oracle/oracle-stop-hook.sh +896 -0
  58. package/.claude/commands/ant/archaeology.md +2 -2
  59. package/.claude/commands/ant/chaos.md +4 -4
  60. package/.claude/commands/ant/colonize.md +9 -9
  61. package/.claude/commands/ant/council.md +6 -6
  62. package/.claude/commands/ant/data-clean.md +3 -3
  63. package/.claude/commands/ant/dream.md +2 -2
  64. package/.claude/commands/ant/entomb.md +8 -8
  65. package/.claude/commands/ant/export-signals.md +2 -2
  66. package/.claude/commands/ant/feedback.md +4 -4
  67. package/.claude/commands/ant/flag.md +2 -2
  68. package/.claude/commands/ant/flags.md +4 -4
  69. package/.claude/commands/ant/focus.md +4 -4
  70. package/.claude/commands/ant/help.md +1 -1
  71. package/.claude/commands/ant/history.md +1 -1
  72. package/.claude/commands/ant/import-signals.md +2 -2
  73. package/.claude/commands/ant/init.md +16 -16
  74. package/.claude/commands/ant/insert-phase.md +1 -1
  75. package/.claude/commands/ant/interpret.md +2 -2
  76. package/.claude/commands/ant/lay-eggs.md +2 -2
  77. package/.claude/commands/ant/maturity.md +2 -2
  78. package/.claude/commands/ant/memory-details.md +1 -1
  79. package/.claude/commands/ant/migrate-state.md +1 -1
  80. package/.claude/commands/ant/oracle.md +43 -42
  81. package/.claude/commands/ant/organize.md +3 -3
  82. package/.claude/commands/ant/patrol.md +6 -6
  83. package/.claude/commands/ant/pause-colony.md +5 -5
  84. package/.claude/commands/ant/phase.md +1 -1
  85. package/.claude/commands/ant/pheromones.md +1 -1
  86. package/.claude/commands/ant/plan.md +8 -8
  87. package/.claude/commands/ant/quick.md +4 -4
  88. package/.claude/commands/ant/redirect.md +4 -4
  89. package/.claude/commands/ant/resume-colony.md +5 -5
  90. package/.claude/commands/ant/resume.md +17 -29
  91. package/.claude/commands/ant/run.md +7 -7
  92. package/.claude/commands/ant/seal.md +25 -25
  93. package/.claude/commands/ant/skill-create.md +2 -2
  94. package/.claude/commands/ant/status.md +14 -14
  95. package/.claude/commands/ant/swarm.md +13 -13
  96. package/.claude/commands/ant/tunnels.md +4 -4
  97. package/.claude/commands/ant/update.md +1 -1
  98. package/.claude/commands/ant/verify-castes.md +2 -2
  99. package/.claude/commands/ant/watch.md +8 -8
  100. package/.opencode/commands/ant/archaeology.md +1 -1
  101. package/.opencode/commands/ant/build.md +45 -45
  102. package/.opencode/commands/ant/chaos.md +3 -3
  103. package/.opencode/commands/ant/colonize.md +8 -8
  104. package/.opencode/commands/ant/continue.md +40 -40
  105. package/.opencode/commands/ant/council.md +5 -5
  106. package/.opencode/commands/ant/data-clean.md +2 -2
  107. package/.opencode/commands/ant/dream.md +1 -1
  108. package/.opencode/commands/ant/entomb.md +3 -3
  109. package/.opencode/commands/ant/export-signals.md +1 -1
  110. package/.opencode/commands/ant/feedback.md +2 -2
  111. package/.opencode/commands/ant/flag.md +1 -1
  112. package/.opencode/commands/ant/flags.md +3 -3
  113. package/.opencode/commands/ant/focus.md +2 -2
  114. package/.opencode/commands/ant/import-signals.md +1 -1
  115. package/.opencode/commands/ant/init.md +16 -16
  116. package/.opencode/commands/ant/insert-phase.md +1 -1
  117. package/.opencode/commands/ant/interpret.md +1 -1
  118. package/.opencode/commands/ant/lay-eggs.md +2 -2
  119. package/.opencode/commands/ant/maturity.md +1 -1
  120. package/.opencode/commands/ant/memory-details.md +1 -1
  121. package/.opencode/commands/ant/oracle.md +34 -40
  122. package/.opencode/commands/ant/organize.md +2 -2
  123. package/.opencode/commands/ant/patrol.md +6 -6
  124. package/.opencode/commands/ant/pause-colony.md +2 -2
  125. package/.opencode/commands/ant/pheromones.md +1 -1
  126. package/.opencode/commands/ant/plan.md +6 -6
  127. package/.opencode/commands/ant/quick.md +4 -4
  128. package/.opencode/commands/ant/redirect.md +2 -2
  129. package/.opencode/commands/ant/resume-colony.md +4 -4
  130. package/.opencode/commands/ant/resume.md +5 -17
  131. package/.opencode/commands/ant/run.md +7 -7
  132. package/.opencode/commands/ant/seal.md +8 -8
  133. package/.opencode/commands/ant/skill-create.md +2 -2
  134. package/.opencode/commands/ant/status.md +10 -10
  135. package/.opencode/commands/ant/tunnels.md +3 -3
  136. package/.opencode/commands/ant/verify-castes.md +1 -1
  137. package/.opencode/commands/ant/watch.md +7 -7
  138. package/bin/cli.js +118 -3
  139. package/bin/lib/binary-downloader.js +267 -0
  140. package/bin/lib/update-transaction.js +19 -0
  141. package/bin/lib/version-gate.js +179 -0
  142. package/package.json +1 -1
@@ -74,7 +74,7 @@ Update COLONY_STATE.json:
74
74
 
75
75
  if [[ "$patterns_count" -eq 0 ]]; then
76
76
  # Builder skipped learning output -- fire deterministic fallback
77
- fallback_result=$(bash .aether/aether-utils.sh learning-extract-fallback 2>/dev/null || echo '{"learnings":[],"count":0}')
77
+ fallback_result=$(aether learning-extract-fallback 2>/dev/null || echo '{"learnings":[],"count":0}')
78
78
  fallback_count=$(echo "$fallback_result" | jq '.result.count // 0')
79
79
  fi
80
80
 
@@ -92,7 +92,7 @@ Update COLONY_STATE.json:
92
92
 
93
93
  Run using the Bash tool with description "Recording learning observations...":
94
94
  ```bash
95
- colony_name=$(bash .aether/aether-utils.sh colony-name 2>/dev/null | jq -r '.result.name // ""')
95
+ colony_name=$(aether colony-name 2>/dev/null | jq -r '.result.name // ""')
96
96
  [[ -z "$colony_name" ]] && colony_name="unknown"
97
97
 
98
98
  # Get learnings from the current phase
@@ -101,7 +101,7 @@ Update COLONY_STATE.json:
101
101
  if [[ -n "$current_phase_learnings" ]]; then
102
102
  echo "$current_phase_learnings" | jq -r '.learnings[]?.claim // empty' 2>/dev/null | while read -r claim; do
103
103
  if [[ -n "$claim" ]]; then
104
- bash .aether/aether-utils.sh memory-capture "learning" "$claim" "pattern" "worker:continue" 2>/dev/null || true
104
+ aether memory-capture "learning" "$claim" "pattern" "worker:continue" 2>/dev/null || true
105
105
  fi
106
106
  done
107
107
  echo "Recorded observations for threshold tracking"
@@ -123,7 +123,7 @@ Update COLONY_STATE.json:
123
123
 
124
124
  Run using the Bash tool with description "Creating instinct from pattern...":
125
125
  ```bash
126
- bash .aether/aether-utils.sh instinct-create \
126
+ aether instinct-create \
127
127
  --trigger "<when this situation arises>" \
128
128
  --action "<what worked or should be done>" \
129
129
  --confidence <0.7-0.9 based on evidence strength> \
@@ -147,7 +147,7 @@ Update COLONY_STATE.json:
147
147
 
148
148
  Run using the Bash tool with description "Checking midden for error patterns...":
149
149
  ```bash
150
- midden_result=$(bash .aether/aether-utils.sh midden-recent-failures 10 2>/dev/null || echo '{"count":0,"failures":[]}')
150
+ midden_result=$(aether midden-recent-failures 10 2>/dev/null || echo '{"count":0,"failures":[]}')
151
151
  midden_count=$(echo "$midden_result" | jq '.count // 0')
152
152
  ```
153
153
 
@@ -155,7 +155,7 @@ Update COLONY_STATE.json:
155
155
 
156
156
  Run using the Bash tool with description "Creating instinct from error pattern...":
157
157
  ```bash
158
- bash .aether/aether-utils.sh instinct-create \
158
+ aether instinct-create \
159
159
  --trigger "<when this error condition arises>" \
160
160
  --action "<how to avoid or handle this error>" \
161
161
  --confidence 0.8 \
@@ -173,7 +173,7 @@ Update COLONY_STATE.json:
173
173
 
174
174
  Run using the Bash tool with description "Creating instinct from success pattern...":
175
175
  ```bash
176
- bash .aether/aether-utils.sh instinct-create \
176
+ aether instinct-create \
177
177
  --trigger "<when this type of task arises>" \
178
178
  --action "<the approach that worked well>" \
179
179
  --confidence 0.7 \ # Base value; increase if observation_count > 1 per formula
@@ -203,7 +203,7 @@ Update COLONY_STATE.json:
203
203
  domain=$(echo "$encoded" | base64 -d | jq -r '.domain // "workflow"')
204
204
 
205
205
  # queen-promote-instinct handles dedup internally (skips if already in QUEEN.md)
206
- result=$(bash .aether/aether-utils.sh queen-promote-instinct \
206
+ result=$(aether queen-promote-instinct \
207
207
  "$trigger" "$action" "$confidence" "$domain" 2>/dev/null || echo '{"ok":false}')
208
208
 
209
209
  was_promoted=$(echo "$result" | jq -r '.result.promoted // false' 2>/dev/null || echo "false")
@@ -260,7 +260,7 @@ Update COLONY_STATE.json:
260
260
  [[ -n "$repo_domain_tags" ]] && promote_args+=(--domain "$repo_domain_tags")
261
261
 
262
262
  # Call hive-promote which orchestrates abstract + store
263
- result=$(bash .aether/aether-utils.sh "${promote_args[@]}" 2>/dev/null || echo '{}')
263
+ result=$(aether "${promote_args[@]}" 2>/dev/null || echo '{}')
264
264
  was_promoted=$(echo "$result" | jq -r '.result.action // "skipped"' 2>/dev/null || echo "skipped")
265
265
 
266
266
  if [[ "$was_promoted" == "promoted" || "$was_promoted" == "merged" ]]; then
@@ -303,15 +303,15 @@ Write the updated state through targeted `state-mutate` calls. Each call acquire
303
303
  Run using the Bash tool with description "Advancing colony state...":
304
304
  ```bash
305
305
  # Mark current phase completed
306
- bash .aether/aether-utils.sh state-mutate --argjson pid "$current_phase" \
306
+ aether state-mutate --argjson pid "$current_phase" \
307
307
  '.plan.phases |= map(if .id == $pid then .status = "completed" else . end)'
308
308
 
309
309
  # Append learning (if any — skip if no learnings were extracted in Step 2)
310
- # bash .aether/aether-utils.sh state-mutate --argjson learning "$learning_json" \
310
+ # aether state-mutate --argjson learning "$learning_json" \
311
311
  # '.memory.phase_learnings += [$learning]'
312
312
 
313
313
  # Advance to next phase
314
- bash .aether/aether-utils.sh state-mutate \
314
+ aether state-mutate \
315
315
  --argjson pid "$current_phase" \
316
316
  --argjson next "$next_phase" \
317
317
  --arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
@@ -321,12 +321,12 @@ bash .aether/aether-utils.sh state-mutate \
321
321
  Run using the Bash tool with description "Enforcing memory caps...":
322
322
  ```bash
323
323
  # Cap enforcement — keep arrays bounded
324
- bash .aether/aether-utils.sh state-mutate \
324
+ aether state-mutate \
325
325
  '.memory.phase_learnings = (.memory.phase_learnings[-20:]) | .memory.decisions = (.memory.decisions[-30:]) | .memory.instincts = (.memory.instincts | sort_by(.confidence) | .[-30:]) | .events = (.events[-100:])'
326
326
  ```
327
327
 
328
328
  Validate the state file:
329
- Run using the Bash tool with description "Validating colony state...": `bash .aether/aether-utils.sh validate-state colony`
329
+ Run using the Bash tool with description "Validating colony state...": `aether validate-state colony`
330
330
 
331
331
  ### Step 2.0.4: Worktree Merge-Back (NON-BLOCKING)
332
332
 
@@ -345,7 +345,7 @@ merged_count=0
345
345
 
346
346
  for branch in $branches; do
347
347
  [[ -z "$branch" ]] && continue
348
- result=$(bash "$AETHER_UTILS" worktree-merge --branch "$branch" 2>/dev/null || echo '{"ok":false}')
348
+ result=$(aether worktree-merge --branch "$branch" 2>/dev/null || echo '{"ok":false}')
349
349
  ok=$(echo "$result" | jq -r '.ok // false')
350
350
  if [[ "$ok" == "true" ]]; then
351
351
  last_merged_branch="$branch"
@@ -370,7 +370,7 @@ Run using the Bash tool with description "Checking for pheromone merge-back file
370
370
  # Check if a branch pheromone export was merged into main
371
371
  export_file=".aether/exchange/pheromone-branch-export.json"
372
372
  if [[ -f "$export_file" ]]; then
373
- merge_result=$(bash .aether/aether-utils.sh pheromone-merge-back --export-file "$export_file" 2>/dev/null || echo '{"ok":false}')
373
+ merge_result=$(aether pheromone-merge-back --export-file "$export_file" 2>/dev/null || echo '{"ok":false}')
374
374
  merge_ok=$(echo "$merge_result" | jq -r '.ok // false' 2>/dev/null)
375
375
  if [[ "$merge_ok" == "true" ]]; then
376
376
  new_count=$(echo "$merge_result" | jq -r '.result.new_signals_written // 0' 2>/dev/null)
@@ -403,7 +403,7 @@ last_merge_branch="${last_merged_branch:-}"
403
403
  last_merge_sha="${last_merge_sha:-}"
404
404
 
405
405
  if [[ -n "$last_merge_branch" && -n "$last_merge_sha" ]]; then
406
- collect_result=$(bash .aether/aether-utils.sh midden-collect \
406
+ collect_result=$(aether midden-collect \
407
407
  --branch "$last_merge_branch" --merge-sha "$last_merge_sha" \
408
408
  2>/dev/null || echo '{"ok":false}')
409
409
  collect_ok=$(echo "$collect_result" | jq -r '.ok // false' 2>/dev/null)
@@ -427,7 +427,7 @@ After midden collection (Step 2.0.6), run cross-PR analysis to detect systemic f
427
427
 
428
428
  Run using the Bash tool with description "Running cross-PR midden analysis...":
429
429
  ```bash
430
- analysis_result=$(bash .aether/aether-utils.sh midden-cross-pr-analysis --window 14 \
430
+ analysis_result=$(aether midden-cross-pr-analysis --window 14 \
431
431
  2>/dev/null || echo '{"ok":false}')
432
432
  analysis_ok=$(echo "$analysis_result" | jq -r '.ok // false' 2>/dev/null)
433
433
  if [[ "$analysis_ok" == "true" ]]; then
@@ -459,7 +459,7 @@ After learning extraction completes in Step 2, auto-emit a FEEDBACK signal summa
459
459
  phase_feedback="Phase $phase_id ($phase_name) completed. Key patterns: {brief summary of 1-3 learnings from Step 2}"
460
460
  # Fallback if no learnings: "Phase $phase_id ($phase_name) completed without notable patterns."
461
461
 
462
- bash .aether/aether-utils.sh pheromone-write FEEDBACK "$phase_feedback" \
462
+ aether pheromone-write FEEDBACK "$phase_feedback" \
463
463
  --strength 0.6 \
464
464
  --source "worker:continue" \
465
465
  --reason "Auto-emitted on phase advance: captures what worked and what was learned" \
@@ -495,7 +495,7 @@ if [[ -n "$decisions" ]]; then
495
495
  [.signals[] | select(.active == true and (.source == "auto:decision" or .source == "system:decision") and (.content.text | contains($text)))] | length
496
496
  ' .aether/data/pheromones.json 2>/dev/null || echo "0")
497
497
  if [[ "$existing" == "0" ]]; then
498
- bash .aether/aether-utils.sh pheromone-write FEEDBACK \
498
+ aether pheromone-write FEEDBACK \
499
499
  "[decision] $dec" \
500
500
  --strength 0.6 \
501
501
  --source "auto:decision" \
@@ -514,7 +514,7 @@ Strength is 0.6 (auto-emitted = lower than user-emitted). Source is `"auto:decis
514
514
  Query the actual failure store (`midden.json`) for recurring error categories. Categories with 3+ occurrences indicate persistent issues that should steer workers away from known failure modes.
515
515
 
516
516
  ```bash
517
- midden_result=$(bash .aether/aether-utils.sh midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
517
+ midden_result=$(aether midden-recent-failures 50 2>/dev/null || echo '{"count":0,"failures":[]}')
518
518
  midden_count=$(echo "$midden_result" | jq '.count // 0')
519
519
 
520
520
  if [[ "$midden_count" -gt 0 ]]; then
@@ -541,7 +541,7 @@ if [[ "$midden_count" -gt 0 ]]; then
541
541
  ' .aether/data/pheromones.json 2>/dev/null || echo "0")
542
542
 
543
543
  if [[ "$existing" == "0" ]]; then
544
- bash .aether/aether-utils.sh pheromone-write REDIRECT \
544
+ aether pheromone-write REDIRECT \
545
545
  "[error-pattern] Category \"$category\" recurring ($count occurrences)" \
546
546
  --strength 0.7 \
547
547
  --source "auto:error" \
@@ -550,7 +550,7 @@ if [[ "$midden_count" -gt 0 ]]; then
550
550
  emit_count=$((emit_count + 1))
551
551
 
552
552
  # Capture as resolution candidate for promotion tracking
553
- bash .aether/aether-utils.sh memory-capture \
553
+ aether memory-capture \
554
554
  "resolution" \
555
555
  "Recurring error pattern: $category ($count occurrences)" \
556
556
  "pattern" \
@@ -597,7 +597,7 @@ for encoded in $recurring_criteria; do
597
597
  ' .aether/data/pheromones.json 2>/dev/null || echo "0")
598
598
 
599
599
  if [[ "$existing" == "0" ]]; then
600
- bash .aether/aether-utils.sh pheromone-write FEEDBACK \
600
+ aether pheromone-write FEEDBACK \
601
601
  "[success-pattern] \"$text\" recurs across phases $phases" \
602
602
  --strength 0.6 \
603
603
  --source "auto:success" \
@@ -613,7 +613,7 @@ Strength is 0.6 (auto-emitted). Source is `"auto:success"`. Cap: max 2 success c
613
613
 
614
614
  After auto-emission, expire all signals with `expires_at == "phase_end"`. The FEEDBACK from 2.1a uses a 30d TTL and is not affected by this step.
615
615
 
616
- 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`
616
+ 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`
617
617
 
618
618
  This is idempotent — runs every time continue fires but only creates the directory/file once.
619
619
 
@@ -627,7 +627,7 @@ If `$ARGUMENTS` contains `--deferred`:
627
627
  ```bash
628
628
  if [[ "$ARGUMENTS" == *"--deferred"* ]] && [[ -f .aether/data/learning-deferred.json ]]; then
629
629
  echo "📦 Reviewing deferred proposals..."
630
- bash .aether/aether-utils.sh learning-approve-proposals --deferred ${verbose:+--verbose}
630
+ aether learning-approve-proposals --deferred ${verbose:+--verbose}
631
631
  fi
632
632
  ```
633
633
 
@@ -635,7 +635,7 @@ fi
635
635
 
636
636
  1. **Check for proposals:**
637
637
  ```bash
638
- proposals=$(bash .aether/aether-utils.sh learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
638
+ proposals=$(aether learning-check-promotion 2>/dev/null || echo '{"proposals":[]}')
639
639
  proposal_count=$(echo "$proposals" | jq '.proposals | length')
640
640
  ```
641
641
 
@@ -647,7 +647,7 @@ fi
647
647
  if [[ "$proposal_count" -gt 0 ]]; then
648
648
  verbose_flag=""
649
649
  [[ "$ARGUMENTS" == *"--verbose"* ]] && verbose_flag="--verbose"
650
- bash .aether/aether-utils.sh learning-approve-proposals $verbose_flag
650
+ aether learning-approve-proposals $verbose_flag
651
651
  fi
652
652
  # If no proposals, silently skip without notice (per user decision)
653
653
  ```
@@ -20,7 +20,7 @@ if [[ -f "$obs_file" ]]; then
20
20
  colony=$(echo "$encoded" | base64 -d | jq -r '.colonies[0] // "unknown"')
21
21
  [[ -z "$content" ]] && continue
22
22
 
23
- result=$(bash .aether/aether-utils.sh learning-promote-auto "$wisdom_type" "$content" "$colony" "learning" 2>/dev/null || echo '{}')
23
+ result=$(aether learning-promote-auto "$wisdom_type" "$content" "$colony" "learning" 2>/dev/null || echo '{}')
24
24
  was_promoted=$(echo "$result" | jq -r '.result.promoted // false' 2>/dev/null || echo "false")
25
25
  if [[ "$was_promoted" == "true" ]]; then
26
26
  promoted_count=$((promoted_count + 1))
@@ -63,7 +63,7 @@ learnings_count=$(echo "$learnings_json" | jq 'length' 2>/dev/null || echo "0")
63
63
  if [[ "$learnings_count" -gt 0 ]] && [[ "$learnings_json" != "[]" ]]; then
64
64
  prev_phase=$((current_phase - 1))
65
65
  queen_error="false"
66
- result=$(bash .aether/aether-utils.sh queen-write-learnings \
66
+ result=$(aether queen-write-learnings \
67
67
  "$prev_phase" "$phase_name" "$learnings_json" 2>/dev/null || echo '{"ok":false}')
68
68
  [[ "$result" == '{"ok":false}' ]] && queen_error="true"
69
69
 
@@ -170,7 +170,7 @@ If no `CHANGELOG.md` exists, `changelog-append` creates one automatically.
170
170
  **Step 2.3.1: Collect plan data**
171
171
 
172
172
  ```bash
173
- bash .aether/aether-utils.sh changelog-collect-plan-data "{phase_identifier}" "{plan_number}"
173
+ aether changelog-collect-plan-data "{phase_identifier}" "{plan_number}"
174
174
  ```
175
175
 
176
176
  Parse the returned JSON to extract `files`, `decisions`, `worked`, and `requirements` arrays.
@@ -186,7 +186,7 @@ If the command fails (e.g., no plan file found), fall back to collecting data ma
186
186
  **Step 2.3.2: Append changelog entry**
187
187
 
188
188
  ```bash
189
- bash .aether/aether-utils.sh changelog-append \
189
+ aether changelog-append \
190
190
  "$(date +%Y-%m-%d)" \
191
191
  "{phase_identifier}" \
192
192
  "{plan_number}" \
@@ -227,7 +227,7 @@ Store this as `ai_description` for the commit message.
227
227
  #### Step 2.4.2: Generate Enhanced Commit Message
228
228
 
229
229
  ```bash
230
- bash .aether/aether-utils.sh generate-commit-message "contextual" {phase_id} "{phase_name}" "{ai_description}" {plan_number}
230
+ aether generate-commit-message "contextual" {phase_id} "{phase_name}" "{ai_description}" {plan_number}
231
231
  ```
232
232
 
233
233
  Parse the returned JSON to extract:
@@ -342,18 +342,18 @@ After phase advancement is complete, update `.aether/CONTEXT.md`:
342
342
 
343
343
  **Log the activity:**
344
344
  ```bash
345
- bash .aether/aether-utils.sh context-update activity "continue" "Phase {prev_id} completed, advanced to {next_id}" "—"
345
+ aether context-update activity "continue" "Phase {prev_id} completed, advanced to {next_id}" "—"
346
346
  ```
347
347
 
348
348
  **Update the phase:**
349
349
  ```bash
350
- bash .aether/aether-utils.sh context-update update-phase {next_id} "{next_phase_name}" "YES" "Phase advanced, ready to build"
350
+ aether context-update update-phase {next_id} "{next_phase_name}" "YES" "Phase advanced, ready to build"
351
351
  ```
352
352
 
353
353
  **Log any decisions from this session:**
354
354
  If any architectural decisions were made during verification, also run:
355
355
  ```bash
356
- bash .aether/aether-utils.sh context-update decision "{decision_description}" "{rationale}" "Queen"
356
+ aether context-update decision "{decision_description}" "{rationale}" "Queen"
357
357
  ```
358
358
 
359
359
  ### Step 2.7: Project Completion
@@ -441,10 +441,10 @@ Output:
441
441
  Update the session tracking file to enable `/ant:resume` after context clear:
442
442
 
443
443
  ```bash
444
- bash .aether/aether-utils.sh session-update "/ant:continue" "/ant:build {next_id}" "Phase {prev_id} completed, advanced to Phase {next_id}"
444
+ aether session-update "/ant:continue" "/ant:build {next_id}" "Phase {prev_id} completed, advanced to Phase {next_id}"
445
445
  ```
446
446
 
447
- 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}"`
447
+ Run using the Bash tool with description "Saving session state...": `aether session-update "/ant:continue" "/ant:build {next_id}" "Phase {prev_id} completed, advanced to Phase {next_id}"`
448
448
 
449
449
  ### Step 4.5: Housekeeping (Non-Blocking)
450
450
 
@@ -452,10 +452,10 @@ Prune stale backups and temp files. This runs automatically — failures never a
452
452
 
453
453
  Run using the Bash tool with description "Pruning stale backups...":
454
454
  ```bash
455
- bash .aether/aether-utils.sh backup-prune-global 2>/dev/null || true
455
+ aether backup-prune-global 2>/dev/null || true
456
456
  ```
457
457
 
458
458
  Run using the Bash tool with description "Cleaning temp files...":
459
459
  ```bash
460
- bash .aether/aether-utils.sh temp-clean 2>/dev/null || true
460
+ aether temp-clean 2>/dev/null || true
461
461
  ```