aether-colony 3.1.16 → 5.0.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 (183) hide show
  1. package/{runtime → .aether}/CONTEXT.md +1 -1
  2. package/{runtime → .aether}/aether-utils.sh +2087 -142
  3. package/.aether/docs/QUEEN-SYSTEM.md +211 -0
  4. package/.aether/docs/QUEEN.md +84 -0
  5. package/.aether/docs/README.md +68 -0
  6. package/.aether/docs/caste-system.md +48 -0
  7. package/{runtime → .aether/docs/disciplines}/DISCIPLINES.md +8 -8
  8. package/.aether/docs/error-codes.md +268 -0
  9. package/{runtime → .aether}/docs/known-issues.md +42 -26
  10. package/.aether/docs/queen-commands.md +97 -0
  11. package/.aether/exchange/colony-registry.xml +11 -0
  12. package/{runtime → .aether}/exchange/pheromone-xml.sh +2 -1
  13. package/.aether/exchange/pheromones.xml +87 -0
  14. package/.aether/exchange/queen-wisdom.xml +14 -0
  15. package/{runtime → .aether}/exchange/registry-xml.sh +7 -3
  16. package/{runtime → .aether}/exchange/wisdom-xml.sh +11 -4
  17. package/.aether/rules/aether-colony.md +134 -0
  18. package/.aether/schemas/example-prompt-builder.xml +234 -0
  19. package/.aether/templates/colony-state-reset.jq.template +22 -0
  20. package/.aether/templates/colony-state.template.json +35 -0
  21. package/.aether/templates/constraints.template.json +9 -0
  22. package/.aether/templates/crowned-anthill.template.md +36 -0
  23. package/.aether/templates/handoff-build-error.template.md +30 -0
  24. package/.aether/templates/handoff-build-success.template.md +39 -0
  25. package/.aether/templates/handoff.template.md +40 -0
  26. package/{runtime → .aether}/utils/atomic-write.sh +5 -5
  27. package/{runtime → .aether}/utils/chamber-compare.sh +23 -10
  28. package/{runtime → .aether}/utils/chamber-utils.sh +32 -20
  29. package/{runtime → .aether}/utils/error-handler.sh +13 -1
  30. package/{runtime → .aether}/utils/file-lock.sh +49 -13
  31. package/.aether/utils/semantic-cli.sh +413 -0
  32. package/{runtime → .aether}/utils/xml-compose.sh +7 -1
  33. package/.aether/utils/xml-convert.sh +273 -0
  34. package/.aether/utils/xml-query.sh +201 -0
  35. package/.aether/utils/xml-utils.sh +110 -0
  36. package/{runtime → .aether}/workers.md +14 -17
  37. package/.claude/agents/ant/aether-ambassador.md +264 -0
  38. package/.claude/agents/ant/aether-archaeologist.md +322 -0
  39. package/.claude/agents/ant/aether-auditor.md +266 -0
  40. package/.claude/agents/ant/aether-builder.md +187 -0
  41. package/.claude/agents/ant/aether-chaos.md +268 -0
  42. package/.claude/agents/ant/aether-chronicler.md +304 -0
  43. package/.claude/agents/ant/aether-gatekeeper.md +325 -0
  44. package/.claude/agents/ant/aether-includer.md +373 -0
  45. package/.claude/agents/ant/aether-keeper.md +271 -0
  46. package/.claude/agents/ant/aether-measurer.md +317 -0
  47. package/.claude/agents/ant/aether-probe.md +210 -0
  48. package/.claude/agents/ant/aether-queen.md +325 -0
  49. package/.claude/agents/ant/aether-route-setter.md +173 -0
  50. package/.claude/agents/ant/aether-sage.md +353 -0
  51. package/.claude/agents/ant/aether-scout.md +142 -0
  52. package/.claude/agents/ant/aether-surveyor-disciplines.md +416 -0
  53. package/.claude/agents/ant/aether-surveyor-nest.md +354 -0
  54. package/.claude/agents/ant/aether-surveyor-pathogens.md +288 -0
  55. package/.claude/agents/ant/aether-surveyor-provisions.md +359 -0
  56. package/.claude/agents/ant/aether-tracker.md +265 -0
  57. package/.claude/agents/ant/aether-watcher.md +244 -0
  58. package/.claude/agents/ant/aether-weaver.md +247 -0
  59. package/.claude/commands/ant/archaeology.md +17 -8
  60. package/.claude/commands/ant/build.md +415 -284
  61. package/.claude/commands/ant/chaos.md +20 -11
  62. package/.claude/commands/ant/colonize.md +58 -24
  63. package/.claude/commands/ant/continue.md +155 -145
  64. package/.claude/commands/ant/council.md +15 -5
  65. package/.claude/commands/ant/dream.md +16 -7
  66. package/.claude/commands/ant/entomb.md +274 -157
  67. package/.claude/commands/ant/feedback.md +33 -29
  68. package/.claude/commands/ant/flag.md +18 -10
  69. package/.claude/commands/ant/flags.md +14 -6
  70. package/.claude/commands/ant/focus.md +29 -21
  71. package/.claude/commands/ant/help.md +11 -1
  72. package/.claude/commands/ant/history.md +10 -0
  73. package/.claude/commands/ant/init.md +91 -65
  74. package/.claude/commands/ant/interpret.md +15 -4
  75. package/.claude/commands/ant/lay-eggs.md +55 -7
  76. package/.claude/commands/ant/maturity.md +11 -1
  77. package/.claude/commands/ant/migrate-state.md +14 -2
  78. package/.claude/commands/ant/oracle.md +23 -15
  79. package/.claude/commands/ant/organize.md +29 -20
  80. package/.claude/commands/ant/pause-colony.md +17 -7
  81. package/.claude/commands/ant/phase.md +17 -8
  82. package/.claude/commands/ant/plan.md +20 -9
  83. package/.claude/commands/ant/redirect.md +29 -32
  84. package/.claude/commands/ant/resume-colony.md +19 -9
  85. package/.claude/commands/ant/resume.md +272 -96
  86. package/.claude/commands/ant/seal.md +201 -191
  87. package/.claude/commands/ant/status.md +71 -32
  88. package/.claude/commands/ant/swarm.md +26 -44
  89. package/.claude/commands/ant/tunnels.md +279 -105
  90. package/.claude/commands/ant/update.md +81 -20
  91. package/.claude/commands/ant/verify-castes.md +14 -4
  92. package/.claude/commands/ant/watch.md +13 -12
  93. package/.opencode/agents/aether-ambassador.md +63 -20
  94. package/.opencode/agents/aether-archaeologist.md +29 -12
  95. package/.opencode/agents/aether-auditor.md +51 -18
  96. package/.opencode/agents/aether-builder.md +69 -19
  97. package/.opencode/agents/aether-chaos.md +29 -12
  98. package/.opencode/agents/aether-chronicler.md +60 -18
  99. package/.opencode/agents/aether-gatekeeper.md +27 -18
  100. package/.opencode/agents/aether-includer.md +27 -18
  101. package/.opencode/agents/aether-keeper.md +89 -18
  102. package/.opencode/agents/aether-measurer.md +27 -18
  103. package/.opencode/agents/aether-probe.md +60 -18
  104. package/.opencode/agents/aether-queen.md +172 -24
  105. package/.opencode/agents/aether-route-setter.md +57 -12
  106. package/.opencode/agents/aether-sage.md +26 -18
  107. package/.opencode/agents/aether-scout.md +27 -19
  108. package/.opencode/agents/aether-surveyor-disciplines.md +53 -1
  109. package/.opencode/agents/aether-surveyor-nest.md +53 -1
  110. package/.opencode/agents/aether-surveyor-pathogens.md +51 -1
  111. package/.opencode/agents/aether-surveyor-provisions.md +53 -1
  112. package/.opencode/agents/aether-tracker.md +64 -18
  113. package/.opencode/agents/aether-watcher.md +66 -19
  114. package/.opencode/agents/aether-weaver.md +61 -18
  115. package/.opencode/commands/ant/build.md +406 -192
  116. package/.opencode/commands/ant/continue.md +66 -76
  117. package/.opencode/commands/ant/entomb.md +106 -45
  118. package/.opencode/commands/ant/init.md +46 -48
  119. package/.opencode/commands/ant/organize.md +5 -5
  120. package/.opencode/commands/ant/resume.md +334 -0
  121. package/.opencode/commands/ant/seal.md +33 -24
  122. package/.opencode/commands/ant/status.md +11 -0
  123. package/.opencode/commands/ant/tunnels.md +149 -0
  124. package/.opencode/commands/ant/update.md +59 -16
  125. package/CHANGELOG.md +79 -0
  126. package/README.md +135 -353
  127. package/bin/cli.js +243 -122
  128. package/bin/generate-commands.sh +2 -2
  129. package/bin/lib/init.js +13 -3
  130. package/bin/lib/update-transaction.js +119 -117
  131. package/bin/sync-to-runtime.sh +5 -137
  132. package/bin/validate-package.sh +84 -0
  133. package/package.json +9 -6
  134. package/.opencode/agents/aether-architect.md +0 -66
  135. package/.opencode/agents/aether-guardian.md +0 -107
  136. package/.opencode/agents/workers.md +0 -1034
  137. package/runtime/QUEEN_ANT_ARCHITECTURE.md +0 -402
  138. package/runtime/data/signatures.json +0 -41
  139. package/runtime/docs/AETHER-2.0-IMPLEMENTATION-PLAN.md +0 -1343
  140. package/runtime/docs/AETHER-PHEROMONE-SYSTEM-MASTER-SPEC.md +0 -2642
  141. package/runtime/docs/PHEROMONE-INJECTION.md +0 -240
  142. package/runtime/docs/PHEROMONE-INTEGRATION.md +0 -192
  143. package/runtime/docs/PHEROMONE-SYSTEM-DESIGN.md +0 -426
  144. package/runtime/docs/README.md +0 -94
  145. package/runtime/docs/VISUAL-OUTPUT-SPEC.md +0 -219
  146. package/runtime/docs/biological-reference.md +0 -272
  147. package/runtime/docs/codebase-review.md +0 -399
  148. package/runtime/docs/command-sync.md +0 -164
  149. package/runtime/docs/constraints.md +0 -116
  150. package/runtime/docs/implementation-learnings.md +0 -89
  151. package/runtime/docs/namespace.md +0 -148
  152. package/runtime/docs/pathogen-schema-example.json +0 -36
  153. package/runtime/docs/pathogen-schema.md +0 -111
  154. package/runtime/docs/planning-discipline.md +0 -159
  155. package/runtime/docs/progressive-disclosure.md +0 -184
  156. package/runtime/lib/queen-utils.sh +0 -729
  157. package/runtime/planning.md +0 -159
  158. package/runtime/recover.sh +0 -136
  159. package/runtime/utils/xml-utils.sh +0 -2196
  160. package/runtime/workers-new-castes.md +0 -516
  161. /package/{runtime → .aether/docs/disciplines}/coding-standards.md +0 -0
  162. /package/{runtime → .aether/docs/disciplines}/debugging.md +0 -0
  163. /package/{runtime → .aether/docs/disciplines}/learning.md +0 -0
  164. /package/{runtime → .aether/docs/disciplines}/tdd.md +0 -0
  165. /package/{runtime → .aether/docs/disciplines}/verification-loop.md +0 -0
  166. /package/{runtime → .aether/docs/disciplines}/verification.md +0 -0
  167. /package/{runtime → .aether}/docs/pheromones.md +0 -0
  168. /package/{runtime → .aether}/model-profiles.yaml +0 -0
  169. /package/{runtime → .aether}/schemas/aether-types.xsd +0 -0
  170. /package/{runtime → .aether}/schemas/colony-registry.xsd +0 -0
  171. /package/{runtime → .aether}/schemas/pheromone.xsd +0 -0
  172. /package/{runtime → .aether}/schemas/prompt.xsd +0 -0
  173. /package/{runtime → .aether}/schemas/queen-wisdom.xsd +0 -0
  174. /package/{runtime → .aether}/schemas/worker-priming.xsd +0 -0
  175. /package/{runtime → .aether}/templates/QUEEN.md.template +0 -0
  176. /package/{runtime → .aether}/utils/colorize-log.sh +0 -0
  177. /package/{runtime → .aether}/utils/queen-to-md.xsl +0 -0
  178. /package/{runtime → .aether}/utils/spawn-tree.sh +0 -0
  179. /package/{runtime → .aether}/utils/spawn-with-model.sh +0 -0
  180. /package/{runtime → .aether}/utils/state-loader.sh +0 -0
  181. /package/{runtime → .aether}/utils/swarm-display.sh +0 -0
  182. /package/{runtime → .aether}/utils/watch-spawn-tree.sh +0 -0
  183. /package/{runtime → .aether}/utils/xml-core.sh +0 -0
@@ -11,12 +11,43 @@ Parse `$ARGUMENTS`:
11
11
  - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
12
12
  - Otherwise: set `visual_mode = true`
13
13
 
14
+ <failure_modes>
15
+ ### Plan File Write Failure
16
+ If writing phase plans to COLONY_STATE.json fails:
17
+ - Do not leave partial plan data in state
18
+ - Report what was successfully written vs. what failed
19
+ - Recovery: user can re-run /ant:lay-eggs to regenerate plans
20
+
21
+ ### Goal Parsing Failure
22
+ If the user's goal cannot be parsed into actionable phases:
23
+ - Do not generate placeholder phases
24
+ - Ask user to clarify or simplify the goal
25
+ - Offer examples of well-formed goals
26
+ </failure_modes>
27
+
28
+ <success_criteria>
29
+ Command is complete when:
30
+ - Phase plan is written to COLONY_STATE.json with tasks and success criteria
31
+ - Plan structure is valid (phases have tasks, tasks have descriptions)
32
+ - User sees the plan and can approve or request changes
33
+ </success_criteria>
34
+
35
+ <read_only>
36
+ Do not touch during lay-eggs:
37
+ - .aether/dreams/ (user notes)
38
+ - .aether/chambers/ (archived colonies)
39
+ - Source code files (planning only, no implementation)
40
+ - .env* files
41
+ - .claude/settings.json
42
+ </read_only>
43
+
14
44
  ### Step 0: Initialize Visual Mode (if enabled)
15
45
 
16
- If `visual_mode` is true:
46
+ If `visual_mode` is true, run using the Bash tool with description "Initializing colony display...":
17
47
  ```bash
18
- # Generate session ID
48
+ # Generate session ID and persist it for later steps
19
49
  layeggs_id="layeggs-$(date +%s)"
50
+ echo "$layeggs_id" > .aether/data/.layeggs_session
20
51
 
21
52
  # Initialize swarm display
22
53
  bash .aether/aether-utils.sh swarm-display-init "$layeggs_id"
@@ -120,21 +151,23 @@ Write `.aether/data/constraints.json`:
120
151
 
121
152
  ### Step 6: Display Result
122
153
 
123
- **If visual_mode is true, render final swarm display:**
154
+ **If visual_mode is true, render final swarm display** by running using the Bash tool with description "Updating colony display...":
124
155
  ```bash
156
+ # Read persisted session ID from Step 0
157
+ layeggs_id=$(cat .aether/data/.layeggs_session 2>/dev/null || echo "layeggs-$(date +%s)")
158
+
125
159
  bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "completed" "First eggs laid" "Colony" '{"read":3,"grep":0,"edit":2,"bash":1}' 100 "nursery" 100
126
- bash .aether/aether-utils.sh swarm-display-render "$layeggs_id"
160
+ bash .aether/aether-utils.sh swarm-display-text "$layeggs_id"
127
161
  ```
128
162
 
129
163
  ```
130
- 🥚 ═══════════════════════════════════════════════════
164
+ 🥚 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
131
165
  F I R S T E G G S L A I D
132
- ══════════════════════════════════════════════════ 🥚
166
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🥚
133
167
 
134
168
  👑 New colony goal:
135
169
  "{goal}"
136
170
 
137
- 📋 Session: {session_id}
138
171
  🏆 Milestone: First Mound (v0.1.0)
139
172
 
140
173
  {If inherited knowledge:}
@@ -151,3 +184,18 @@ bash .aether/aether-utils.sh swarm-display-render "$layeggs_id"
151
184
  Include edge case handling:
152
185
  - If no prior knowledge: omit the inheritance section
153
186
  - If prior colony had no phases: allow laying eggs without entombment
187
+
188
+ ### Step 7: Next Up
189
+
190
+ Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
191
+ ```bash
192
+ if [ -f .aether/data/COLONY_STATE.json ]; then
193
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "IDLE")
194
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
195
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
196
+ else
197
+ state="IDLE"
198
+ current_phase="0"
199
+ total_phases="0"
200
+ fi
201
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
@@ -9,7 +9,7 @@ You are the **Queen**. Display the colony's maturity journey.
9
9
 
10
10
  ### Step 1: Detect Current Milestone
11
11
 
12
- Run: `bash .aether/aether-utils.sh milestone-detect`
12
+ Run using the Bash tool with description "Detecting colony milestone...": `bash .aether/aether-utils.sh milestone-detect`
13
13
 
14
14
  Parse JSON result to get:
15
15
  - `milestone`: Current milestone name (First Mound, Open Chambers, Brood Stable, Ventilated Nest, Sealed Chambers, Crowned Anthill)
@@ -90,3 +90,13 @@ Colony Statistics:
90
90
  - If milestone file doesn't exist: Show error "Milestone visualization not found"
91
91
  - If COLONY_STATE.json missing: "No colony initialized. Run /ant:init first."
92
92
  - If phases_completed is 0: All milestones show as upcoming except First Mound
93
+
94
+ ### Step 7: Next Up
95
+
96
+ Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
97
+ ```bash
98
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
99
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
100
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
101
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
102
+ ```
@@ -114,9 +114,9 @@ Format the JSON with 2-space indentation for readability.
114
114
  Output header:
115
115
 
116
116
  ```
117
- 🚚🐜📦🐜🚚 ═══════════════════════════════════════════════════
117
+ 🚚🐜📦🐜🚚 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
118
118
  S T A T E M I G R A T I O N C O M P L E T E
119
- ═══════════════════════════════════════════════════ 🚚🐜📦🐜🚚
119
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🚚🐜📦🐜🚚
120
120
  ```
121
121
 
122
122
  Then output a migration summary:
@@ -151,3 +151,15 @@ All commands now use consolidated state format.
151
151
  - After v5.1 ships, this command can be removed
152
152
  - All 12+ ant commands will be updated to use the new single-file format
153
153
  - The backup directory preserves original files for rollback if needed
154
+
155
+ ---
156
+
157
+ ## Step 7: Next Up
158
+
159
+ Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
160
+ ```bash
161
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
162
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
163
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
164
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
165
+ ```
@@ -29,7 +29,7 @@ Parse `$ARGUMENTS` to determine the action:
29
29
 
30
30
  ### Step 0.5: Initialize Visual Mode (if enabled)
31
31
 
32
- If `visual_mode` is true:
32
+ If `visual_mode` is true, run using the Bash tool with description "Initializing oracle display...":
33
33
  ```bash
34
34
  # Generate session ID
35
35
  oracle_id="oracle-$(date +%s)"
@@ -41,9 +41,9 @@ bash .aether/aether-utils.sh swarm-display-update "Oracle" "oracle" "researching
41
41
 
42
42
  Display visual header:
43
43
  ```
44
- 🔮🐜🧠🐜🔮 ═══════════════════════════════════════════════
45
- O R A C L E — R e s e a r c h M o d e
46
- ═══════════════════════════════════════════════ 🔮🐜🧠🐜🔮
44
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
45
+ 🔮🐜🧠🐜🔮 O R A C L E — R e s e a r c h M o d e
46
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
47
47
 
48
48
  Oracle peering into the depths...
49
49
  ```
@@ -52,7 +52,7 @@ Oracle peering into the depths...
52
52
 
53
53
  ### Step 0b: Stop Oracle
54
54
 
55
- Create the stop signal file:
55
+ Create the stop signal file by running using the Bash tool with description "Stopping oracle research...":
56
56
 
57
57
  ```bash
58
58
  mkdir -p .aether/oracle && touch .aether/oracle/.stop
@@ -96,7 +96,7 @@ Output:
96
96
 
97
97
  ```
98
98
  🔮🐜 Oracle Status
99
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
99
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
100
100
  Topic: {topic from research.json, or "unknown"}
101
101
  Confidence: {target_confidence}%
102
102
  Iterations: {completed} / {max_iterations}
@@ -104,7 +104,7 @@ Started: {started_at}
104
104
 
105
105
  Progress:
106
106
  {last 50 lines of progress.md}
107
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
107
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
108
108
 
109
109
  /ant:oracle stop Halt the loop
110
110
  /ant:oracle Start new research
@@ -121,9 +121,9 @@ This is the setup phase. The Oracle asks questions to configure the research bef
121
121
  Output the header:
122
122
 
123
123
  ```
124
- 🔮🐜🧠🐜🔮 ═══════════════════════════════════════════════════
125
- O R A C L E A N T R E S E A R C H W I Z A R D
126
- ═══════════════════════════════════════════════════ 🔮🐜🧠🐜🔮
124
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
125
+ 🔮🐜🧠🐜🔮 O R A C L E A N T R E S E A R C H W I Z A R D
126
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
127
127
  ```
128
128
 
129
129
  **If `$ARGUMENTS` is not empty and not a subcommand**, use it as the initial topic suggestion. Otherwise, the topic will be asked in Question 1.
@@ -201,7 +201,7 @@ Capture session start time:
201
201
  ORACLE_START=$(date +%s)
202
202
  ```
203
203
 
204
- Check for stale files:
204
+ Check for stale files by running using the Bash tool with description "Checking for stale oracle session...":
205
205
  ```bash
206
206
  stale_check=$(bash .aether/aether-utils.sh session-verify-fresh --command oracle "" "$ORACLE_START")
207
207
  has_stale=$(echo "$stale_check" | jq -r '.stale | length')
@@ -228,7 +228,7 @@ fi
228
228
 
229
229
  ### Step 2: Configure Research
230
230
 
231
- Create the oracle directory structure:
231
+ Create the oracle directory structure by running using the Bash tool with description "Setting up oracle research...":
232
232
 
233
233
  ```bash
234
234
  mkdir -p .aether/oracle/archive .aether/oracle/discoveries
@@ -238,7 +238,7 @@ Generate an ISO-8601 UTC timestamp.
238
238
 
239
239
  **Archive previous research if it exists:**
240
240
 
241
- Check if `.aether/oracle/progress.md` exists. If it does:
241
+ Check if `.aether/oracle/progress.md` exists. If it does, run using the Bash tool with description "Archiving previous research...":
242
242
 
243
243
  ```bash
244
244
  DATE=$(date +%Y-%m-%d)
@@ -292,7 +292,7 @@ Use the Write tool to write `.aether/oracle/progress.md`:
292
292
 
293
293
  #### Step 2.5: Verify Oracle Files Are Fresh
294
294
 
295
- Verify that progress.md and research.json were created successfully:
295
+ Verify that progress.md and research.json were created successfully by running using the Bash tool with description "Verifying oracle files...":
296
296
  ```bash
297
297
  verify_result=$(bash .aether/aether-utils.sh session-verify-fresh --command oracle "" "$ORACLE_START")
298
298
  fresh_count=$(echo "$verify_result" | jq -r '.fresh | length')
@@ -329,7 +329,7 @@ Output the research configuration summary:
329
329
 
330
330
  Now launch the loop. Try tmux first, fall back to manual.
331
331
 
332
- **Try tmux:**
332
+ **Try tmux** by running using the Bash tool with description "Launching oracle in tmux...":
333
333
 
334
334
  ```bash
335
335
  tmux new-session -d -s oracle "cd $(pwd) && bash .aether/oracle/oracle.sh; echo ''; echo '🔮🐜 Oracle loop finished. Press any key to close.'; read -n1" 2>/dev/null && echo "TMUX_OK" || echo "TMUX_FAIL"
@@ -376,4 +376,12 @@ Stop here.
376
376
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
377
377
  ```
378
378
 
379
+ Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
380
+ ```bash
381
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
382
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
383
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
384
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
385
+ ```
386
+
379
387
  Stop here.
@@ -44,12 +44,12 @@ If no active signals after filtering:
44
44
  (no active pheromones)
45
45
  ```
46
46
 
47
- ### Step 3: Spawn Archivist (Architect-Ant)
47
+ ### Step 3: Spawn Archivist (Keeper-Ant)
48
48
 
49
- Read `.aether/workers.md` and extract the `## Architect` section.
49
+ Read `.aether/workers.md` and extract the `## Keeper` section.
50
50
 
51
- Spawn via **Task tool** with `subagent_type="aether-architect"`:
52
- # FALLBACK: If "Agent type not found", use general-purpose and inject role: "You are an Architect Ant - synthesizes knowledge and coordinates documentation."
51
+ Spawn via **Task tool** with `subagent_type="aether-keeper"`:
52
+ # FALLBACK: If "Agent type not found", use general-purpose and inject role: "You are a Keeper Ant - curates knowledge and synthesizes patterns."
53
53
 
54
54
  ```
55
55
  --- WORKER SPEC ---
@@ -116,14 +116,14 @@ Check for configuration that may not be connected:
116
116
  Produce your report in this exact structure:
117
117
 
118
118
  CODEBASE HYGIENE REPORT
119
- ========================
119
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
120
120
 
121
121
  Project: {goal}
122
122
  Scanned: {timestamp}
123
123
  Confidence threshold: HIGH findings are actionable, MEDIUM/LOW are informational
124
124
 
125
125
  HIGH CONFIDENCE FINDINGS
126
- -------------------------
126
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
127
127
  {For each HIGH confidence finding:}
128
128
  [{category}] {description}
129
129
  Evidence: {what data/observation supports this}
@@ -132,7 +132,7 @@ HIGH CONFIDENCE FINDINGS
132
132
  {If no HIGH findings: "No high-confidence hygiene issues detected."}
133
133
 
134
134
  MEDIUM CONFIDENCE OBSERVATIONS
135
- -------------------------------
135
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
136
136
  {For each MEDIUM confidence finding:}
137
137
  [{category}] {description}
138
138
  Evidence: {what data/observation supports this}
@@ -141,14 +141,14 @@ MEDIUM CONFIDENCE OBSERVATIONS
141
141
  {If no MEDIUM findings: "No medium-confidence observations."}
142
142
 
143
143
  LOW CONFIDENCE NOTES
144
- ---------------------
144
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
145
145
  {For each LOW confidence finding:}
146
146
  [{category}] {description}
147
147
 
148
148
  {If no LOW findings: "No low-confidence notes."}
149
149
 
150
150
  SUMMARY
151
- --------
151
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
152
152
  High: {count} actionable findings
153
153
  Medium: {count} observations
154
154
  Low: {count} notes
@@ -165,23 +165,22 @@ CONSTRAINTS:
165
165
 
166
166
  ### Step 4: Display Report
167
167
 
168
- After the architect-ant returns, display header:
168
+ After the keeper-ant returns, display header:
169
169
 
170
170
  ```
171
- 🧹🐜🏛️🐜🧹 ═══════════════════════════════════════════════════
171
+ 🧹🐜🏛️🐜🧹 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
172
172
  C O D E B A S E H Y G I E N E R E P O R T
173
- ═══════════════════════════════════════════════════ 🧹🐜🏛️🐜🧹
173
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🧹🐜🏛️🐜🧹
174
174
  ```
175
175
 
176
- Then display using Bash tool (white -- architect color):
177
-
178
- ```
179
- bash -c 'printf "\e[37m+=====================================================+\e[0m\n"'
180
- bash -c 'printf "\e[37m| CODEBASE HYGIENE REPORT |\e[0m\n"'
181
- bash -c 'printf "\e[37m+=====================================================+\e[0m\n\n"'
176
+ Then display using Bash tool with description "Displaying hygiene report header...":
177
+ ```bash
178
+ bash -c 'printf "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"'
179
+ bash -c 'printf " C O D E B A S E H Y G I E N E R E P O R T\n"'
180
+ bash -c 'printf "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n"'
182
181
  ```
183
182
 
184
- Then display the architect-ant's full report verbatim.
183
+ Then display the keeper-ant's full report verbatim.
185
184
 
186
185
  ### Step 5: Persist Report
187
186
 
@@ -203,7 +202,7 @@ Next:
203
202
 
204
203
  ### Step 6: Log Activity
205
204
 
206
- Use the Bash tool to run:
205
+ Use the Bash tool with description "Logging hygiene activity..." to run:
207
206
  ```
208
207
  bash .aether/aether-utils.sh activity-log "COMPLETE" "queen" "Hygiene report generated"
209
208
  ```
@@ -216,3 +215,13 @@ All state persisted. Safe to /clear context if needed.
216
215
  Report: .aether/data/hygiene-report.md
217
216
  Resume: /ant:resume-colony
218
217
  ```
218
+
219
+ ### Step 7: Next Up
220
+
221
+ Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
222
+ ```bash
223
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
224
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
225
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
226
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
227
+ ```
@@ -13,7 +13,7 @@ Parse `$ARGUMENTS`:
13
13
 
14
14
  ### Step 0: Initialize Visual Mode (if enabled)
15
15
 
16
- If `visual_mode` is true:
16
+ If `visual_mode` is true, run using the Bash tool with description "Initializing pause display...":
17
17
  ```bash
18
18
  # Generate session ID
19
19
  pause_id="pause-$(date +%s)"
@@ -178,31 +178,31 @@ Continue to Step 5.
178
178
 
179
179
  ### Step 4.8: Update Context Document
180
180
 
181
- Log this pause activity to `.aether/CONTEXT.md`:
181
+ Log this pause activity to `.aether/CONTEXT.md` by running using the Bash tool with description "Updating context document...":
182
182
 
183
183
  ```bash
184
184
  bash .aether/aether-utils.sh context-update activity "pause-colony" "Colony paused — handoff created" "—"
185
185
  ```
186
186
 
187
- Update safe-to-clear status:
187
+ Update safe-to-clear status by running using the Bash tool with description "Marking safe to clear...":
188
188
  ```bash
189
189
  bash .aether/aether-utils.sh context-update safe-to-clear "YES" "Colony paused — safe to /clear, run /ant:resume-colony to continue"
190
190
  ```
191
191
 
192
192
  ### Step 5: Display Confirmation
193
193
 
194
- **If visual_mode is true, render final swarm display:**
194
+ **If visual_mode is true, render final swarm display** by running using the Bash tool with description "Updating pause display...":
195
195
  ```bash
196
196
  bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "completed" "Colony paused" "Colony" '{"read":3,"grep":0,"edit":2,"bash":1}' 100 "fungus_garden" 100
197
- bash .aether/aether-utils.sh swarm-display-render "$pause_id"
197
+ bash .aether/aether-utils.sh swarm-display-text "$pause_id"
198
198
  ```
199
199
 
200
200
  Output header:
201
201
 
202
202
  ```
203
- 💾🐜⏸️🐜💾 ═══════════════════════════════════════════════════
203
+ 💾🐜⏸️🐜💾 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
204
204
  C O L O N Y P A U S E D
205
- ═══════════════════════════════════════════════════ 💾🐜⏸️🐜💾
205
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 💾🐜⏸️🐜💾
206
206
  ```
207
207
 
208
208
  Then output:
@@ -235,3 +235,13 @@ If option 1 selected: proceed to run /ant:resume-colony flow
235
235
  If option 2 selected: run /ant:lay-eggs flow
236
236
  If option 3 selected: display "Run /ant:resume-colony when ready to continue, or /ant:lay-eggs to start fresh"
237
237
  ```
238
+
239
+ ### Step 6: Next Up
240
+
241
+ Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
242
+ ```bash
243
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
244
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
245
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
246
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
247
+ ```
@@ -35,9 +35,9 @@ Find the phase by ID in `plan.phases`.
35
35
  Output this header:
36
36
 
37
37
  ```
38
- 📝🐜📍🐜📝 ═══════════════════════════════════════════════════
39
- P H A S E {id} D E T A I L S
40
- ═══════════════════════════════════════════════════ 📝🐜📍🐜📝
38
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
39
+ 📝🐜📍🐜📝 P H A S E {id} D E T A I L S
40
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
41
41
  ```
42
42
 
43
43
  Then display:
@@ -55,13 +55,22 @@ Then display:
55
55
  ✅ Success Criteria:
56
56
  • <criterion>
57
57
 
58
- ─────────────────────────────────────────────────────
59
- 🐜 Next Steps:
58
+ ──────────────────────────────────────────────────
59
+ 🐜 Next Up
60
+ ──────────────────────────────────────────────────
60
61
  /ant:build <id> 🔨 Phase <id>: <phase_name>
61
62
  /ant:phase <next_id> 📋 Phase <next_id>: <next_phase_name> (only if not last phase)
62
63
  /ant:status 📊 Colony status
63
64
  ```
64
65
 
66
+ After displaying phase details, generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
67
+ ```bash
68
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
69
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
70
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
71
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
72
+ ```
73
+
65
74
  Status icons: `[ ]` pending, `[~]` in_progress, `[✓]` completed
66
75
 
67
76
  ### Step 3b: List View
@@ -69,9 +78,9 @@ Status icons: `[ ]` pending, `[~]` in_progress, `[✓]` completed
69
78
  Output this header:
70
79
 
71
80
  ```
72
- 📝🐜📍🐜📝 ═══════════════════════════════════════════════════
73
- A L L P H A S E S
74
- ═══════════════════════════════════════════════════ 📝🐜📍🐜📝
81
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
82
+ 📝🐜📍🐜📝 A L L P H A S E S
83
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
75
84
  ```
76
85
 
77
86
  Then display all phases as a summary:
@@ -18,14 +18,13 @@ If `visual_mode` is true:
18
18
  # Generate session ID
19
19
  plan_id="plan-$(date +%s)"
20
20
 
21
- # Initialize swarm display
22
- bash .aether/aether-utils.sh swarm-display-init "$plan_id"
23
- bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "excavating" "Generating colony plan" "Colony" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 0
21
+ # Initialize swarm display (consolidated)
22
+ bash .aether/aether-utils.sh swarm-display-init "$plan_id" && bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "excavating" "Generating colony plan" "Colony" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 0
24
23
  ```
25
24
 
26
25
  ### Step 0.5: Version Check (Non-blocking)
27
26
 
28
- Run using the Bash tool: `bash .aether/aether-utils.sh version-check 2>/dev/null || true`
27
+ Run using the Bash tool with description "Checking colony version...": `bash .aether/aether-utils.sh version-check-cached 2>/dev/null || true`
29
28
 
30
29
  If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
31
30
 
@@ -427,6 +426,11 @@ Read current COLONY_STATE.json, then update:
427
426
 
428
427
  Write COLONY_STATE.json.
429
428
 
429
+ Validate the state file:
430
+ ```bash
431
+ bash .aether/aether-utils.sh validate-state colony
432
+ ```
433
+
430
434
  Log: `bash .aether/aether-utils.sh activity-log "PLAN_COMPLETE" "queen" "Plan finalized with {confidence}% confidence"`
431
435
 
432
436
  Update watch-status.txt:
@@ -451,18 +455,17 @@ bash .aether/aether-utils.sh session-update "/ant:plan" "/ant:build 1" "Plan gen
451
455
 
452
456
  ### Step 7: Display Plan
453
457
 
454
- **If visual_mode is true, render final swarm display:**
458
+ **If visual_mode is true, render final swarm display (consolidated):**
455
459
  ```bash
456
- bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "completed" "Plan generated" "Colony" '{"read":8,"grep":4,"edit":2,"bash":1}' 100 "fungus_garden" 100
457
- bash .aether/aether-utils.sh swarm-display-render "$plan_id"
460
+ bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "completed" "Plan generated" "Colony" '{"read":8,"grep":4,"edit":2,"bash":1}' 100 "fungus_garden" 100 && bash .aether/aether-utils.sh swarm-display-text "$plan_id"
458
461
  ```
459
462
 
460
463
  Read `plan.phases` from COLONY_STATE.json and display:
461
464
 
462
465
  ```
463
- 📊🐜🗺️🐜📊 ═══════════════════════════════════════════════════
466
+ 📊🐜🗺️🐜📊 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
464
467
  C O L O N Y P L A N
465
- ═══════════════════════════════════════════════════ 📊🐜🗺️🐜📊
468
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📊🐜🗺️🐜📊
466
469
 
467
470
  👑 Goal: {goal}
468
471
 
@@ -496,6 +499,14 @@ Read `plan.phases` from COLONY_STATE.json and display:
496
499
 
497
500
  Status icons: pending = `[ ]`, in_progress = `[~]`, completed = `[✓]`
498
501
 
502
+ After displaying the plan, generate the state-based Next Up block:
503
+ ```bash
504
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
505
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
506
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
507
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
508
+ ```
509
+
499
510
  ---
500
511
 
501
512
  ## Confidence Scoring Reference
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: ant:redirect
3
- description: "⚠️🐜🚧🐜⚠️ Emit REDIRECT signal to warn colony away from patterns"
3
+ description: "Emit REDIRECT signal to warn colony away from patterns"
4
4
  ---
5
5
 
6
- You are the **Queen**. Add an AVOID constraint.
6
+ You are the **Queen**. Emit a REDIRECT pheromone signal.
7
7
 
8
8
  ## Instructions
9
9
 
@@ -14,48 +14,45 @@ The pattern to avoid is: `$ARGUMENTS`
14
14
  If `$ARGUMENTS` empty -> show usage: `/ant:redirect <pattern to avoid>`, stop.
15
15
  If content > 500 chars -> "Redirect content too long (max 500 chars)", stop.
16
16
 
17
- ### Step 2: Read + Update Constraints
17
+ Parse optional flags from `$ARGUMENTS`:
18
+ - `--ttl <value>`: signal lifetime (e.g., `2h`, `1d`, `7d`). Default: `phase_end`.
19
+ - Strip flags from content before using it as the pattern.
20
+
21
+ ### Step 2: Write Signal
18
22
 
19
23
  Read `.aether/data/COLONY_STATE.json`.
20
24
  If `goal: null` -> "No colony initialized.", stop.
21
25
 
22
- Read `.aether/data/constraints.json`. If file doesn't exist, create it with:
23
- ```json
24
- {"version": "1.0", "focus": [], "constraints": []}
25
- ```
26
-
27
- Generate constraint ID: `c_<unix_timestamp_ms>`
28
-
29
- Append to `constraints` array:
30
- ```json
31
- {
32
- "id": "<generated_id>",
33
- "type": "AVOID",
34
- "content": "<pattern to avoid>",
35
- "source": "user:redirect",
36
- "created_at": "<ISO-8601 timestamp>"
37
- }
26
+ Run using the Bash tool with description "Setting colony redirect...":
27
+ ```bash
28
+ bash .aether/aether-utils.sh pheromone-write REDIRECT "<content>" --strength 0.9 --reason "User warned colony away from pattern" --ttl <ttl>
38
29
  ```
39
30
 
40
- If `constraints` array exceeds 10 entries, remove the oldest entries to keep only 10.
31
+ Parse the returned JSON for the signal ID.
41
32
 
42
- Write constraints.json.
33
+ ### Step 3: Get Active Counts
43
34
 
44
- ### Step 3: Confirm
35
+ Run using the Bash tool with description "Counting active signals...":
36
+ ```bash
37
+ bash .aether/aether-utils.sh pheromone-count
38
+ ```
45
39
 
46
- Output header:
40
+ ### Step 4: Confirm
47
41
 
42
+ Output (3-4 lines, no banners):
48
43
  ```
49
- ⚠️🐜🚧🐜⚠️ ═══════════════════════════════════════════════════
50
- R E D I R E C T S I G N A L
51
- ═══════════════════════════════════════════════════ ⚠️🐜🚧🐜⚠️
52
- ```
53
-
54
- Then output:
44
+ REDIRECT signal emitted
45
+ Avoid: "<content truncated to 60 chars>"
46
+ Strength: 0.9 | Expires: <phase end or ttl value>
47
+ Active signals: <focus_count> FOCUS, <redirect_count> REDIRECT, <feedback_count> FEEDBACK
55
48
  ```
56
- 🚫 REDIRECT signal emitted
57
49
 
58
- Avoid: "{content preview}"
50
+ ### Step 5: Next Up
59
51
 
60
- 🐜 Colony warned away from this pattern.
52
+ Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
53
+ ```bash
54
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
55
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
56
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
57
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
61
58
  ```