aether-colony 1.1.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 (207) hide show
  1. package/.aether/CONTEXT.md +160 -0
  2. package/.aether/QUEEN.md +84 -0
  3. package/.aether/aether-utils.sh +7749 -0
  4. package/.aether/docs/QUEEN-SYSTEM.md +211 -0
  5. package/.aether/docs/README.md +68 -0
  6. package/.aether/docs/caste-system.md +48 -0
  7. package/.aether/docs/disciplines/DISCIPLINES.md +93 -0
  8. package/.aether/docs/disciplines/coding-standards.md +197 -0
  9. package/.aether/docs/disciplines/debugging.md +207 -0
  10. package/.aether/docs/disciplines/learning.md +254 -0
  11. package/.aether/docs/disciplines/tdd.md +257 -0
  12. package/.aether/docs/disciplines/verification-loop.md +167 -0
  13. package/.aether/docs/disciplines/verification.md +116 -0
  14. package/.aether/docs/error-codes.md +268 -0
  15. package/.aether/docs/known-issues.md +233 -0
  16. package/.aether/docs/pheromones.md +205 -0
  17. package/.aether/docs/queen-commands.md +97 -0
  18. package/.aether/exchange/colony-registry.xml +11 -0
  19. package/.aether/exchange/pheromone-xml.sh +575 -0
  20. package/.aether/exchange/pheromones.xml +87 -0
  21. package/.aether/exchange/queen-wisdom.xml +14 -0
  22. package/.aether/exchange/registry-xml.sh +273 -0
  23. package/.aether/exchange/wisdom-xml.sh +319 -0
  24. package/.aether/midden/approach-changes.md +5 -0
  25. package/.aether/midden/build-failures.md +5 -0
  26. package/.aether/midden/test-failures.md +5 -0
  27. package/.aether/model-profiles.yaml +100 -0
  28. package/.aether/rules/aether-colony.md +134 -0
  29. package/.aether/schemas/aether-types.xsd +255 -0
  30. package/.aether/schemas/colony-registry.xsd +309 -0
  31. package/.aether/schemas/example-prompt-builder.xml +234 -0
  32. package/.aether/schemas/pheromone.xsd +163 -0
  33. package/.aether/schemas/prompt.xsd +416 -0
  34. package/.aether/schemas/queen-wisdom.xsd +325 -0
  35. package/.aether/schemas/worker-priming.xsd +276 -0
  36. package/.aether/templates/QUEEN.md.template +79 -0
  37. package/.aether/templates/colony-state-reset.jq.template +22 -0
  38. package/.aether/templates/colony-state.template.json +35 -0
  39. package/.aether/templates/constraints.template.json +9 -0
  40. package/.aether/templates/crowned-anthill.template.md +36 -0
  41. package/.aether/templates/handoff-build-error.template.md +30 -0
  42. package/.aether/templates/handoff-build-success.template.md +39 -0
  43. package/.aether/templates/handoff.template.md +40 -0
  44. package/.aether/templates/learning-observations.template.json +6 -0
  45. package/.aether/templates/midden.template.json +7 -0
  46. package/.aether/templates/pheromones.template.json +6 -0
  47. package/.aether/templates/session.template.json +9 -0
  48. package/.aether/utils/atomic-write.sh +219 -0
  49. package/.aether/utils/chamber-compare.sh +193 -0
  50. package/.aether/utils/chamber-utils.sh +297 -0
  51. package/.aether/utils/colorize-log.sh +132 -0
  52. package/.aether/utils/error-handler.sh +212 -0
  53. package/.aether/utils/file-lock.sh +158 -0
  54. package/.aether/utils/queen-to-md.xsl +395 -0
  55. package/.aether/utils/semantic-cli.sh +413 -0
  56. package/.aether/utils/spawn-tree.sh +428 -0
  57. package/.aether/utils/spawn-with-model.sh +56 -0
  58. package/.aether/utils/state-loader.sh +215 -0
  59. package/.aether/utils/swarm-display.sh +268 -0
  60. package/.aether/utils/watch-spawn-tree.sh +253 -0
  61. package/.aether/utils/xml-compose.sh +253 -0
  62. package/.aether/utils/xml-convert.sh +273 -0
  63. package/.aether/utils/xml-core.sh +186 -0
  64. package/.aether/utils/xml-query.sh +201 -0
  65. package/.aether/utils/xml-utils.sh +110 -0
  66. package/.aether/workers.md +765 -0
  67. package/.claude/agents/ant/aether-ambassador.md +264 -0
  68. package/.claude/agents/ant/aether-archaeologist.md +322 -0
  69. package/.claude/agents/ant/aether-auditor.md +266 -0
  70. package/.claude/agents/ant/aether-builder.md +187 -0
  71. package/.claude/agents/ant/aether-chaos.md +268 -0
  72. package/.claude/agents/ant/aether-chronicler.md +304 -0
  73. package/.claude/agents/ant/aether-gatekeeper.md +325 -0
  74. package/.claude/agents/ant/aether-includer.md +373 -0
  75. package/.claude/agents/ant/aether-keeper.md +271 -0
  76. package/.claude/agents/ant/aether-measurer.md +317 -0
  77. package/.claude/agents/ant/aether-probe.md +210 -0
  78. package/.claude/agents/ant/aether-queen.md +325 -0
  79. package/.claude/agents/ant/aether-route-setter.md +173 -0
  80. package/.claude/agents/ant/aether-sage.md +353 -0
  81. package/.claude/agents/ant/aether-scout.md +142 -0
  82. package/.claude/agents/ant/aether-surveyor-disciplines.md +416 -0
  83. package/.claude/agents/ant/aether-surveyor-nest.md +354 -0
  84. package/.claude/agents/ant/aether-surveyor-pathogens.md +288 -0
  85. package/.claude/agents/ant/aether-surveyor-provisions.md +359 -0
  86. package/.claude/agents/ant/aether-tracker.md +265 -0
  87. package/.claude/agents/ant/aether-watcher.md +244 -0
  88. package/.claude/agents/ant/aether-weaver.md +247 -0
  89. package/.claude/commands/ant/archaeology.md +341 -0
  90. package/.claude/commands/ant/build.md +1160 -0
  91. package/.claude/commands/ant/chaos.md +349 -0
  92. package/.claude/commands/ant/colonize.md +270 -0
  93. package/.claude/commands/ant/continue.md +1070 -0
  94. package/.claude/commands/ant/council.md +309 -0
  95. package/.claude/commands/ant/dream.md +265 -0
  96. package/.claude/commands/ant/entomb.md +487 -0
  97. package/.claude/commands/ant/feedback.md +78 -0
  98. package/.claude/commands/ant/flag.md +139 -0
  99. package/.claude/commands/ant/flags.md +155 -0
  100. package/.claude/commands/ant/focus.md +58 -0
  101. package/.claude/commands/ant/help.md +122 -0
  102. package/.claude/commands/ant/history.md +137 -0
  103. package/.claude/commands/ant/init.md +409 -0
  104. package/.claude/commands/ant/interpret.md +267 -0
  105. package/.claude/commands/ant/lay-eggs.md +201 -0
  106. package/.claude/commands/ant/maturity.md +102 -0
  107. package/.claude/commands/ant/memory-details.md +77 -0
  108. package/.claude/commands/ant/migrate-state.md +165 -0
  109. package/.claude/commands/ant/oracle.md +387 -0
  110. package/.claude/commands/ant/organize.md +227 -0
  111. package/.claude/commands/ant/pause-colony.md +247 -0
  112. package/.claude/commands/ant/phase.md +126 -0
  113. package/.claude/commands/ant/plan.md +544 -0
  114. package/.claude/commands/ant/redirect.md +58 -0
  115. package/.claude/commands/ant/resume-colony.md +182 -0
  116. package/.claude/commands/ant/resume.md +363 -0
  117. package/.claude/commands/ant/seal.md +306 -0
  118. package/.claude/commands/ant/status.md +272 -0
  119. package/.claude/commands/ant/swarm.md +361 -0
  120. package/.claude/commands/ant/tunnels.md +425 -0
  121. package/.claude/commands/ant/update.md +209 -0
  122. package/.claude/commands/ant/verify-castes.md +95 -0
  123. package/.claude/commands/ant/watch.md +238 -0
  124. package/.opencode/agents/aether-ambassador.md +140 -0
  125. package/.opencode/agents/aether-archaeologist.md +108 -0
  126. package/.opencode/agents/aether-auditor.md +144 -0
  127. package/.opencode/agents/aether-builder.md +184 -0
  128. package/.opencode/agents/aether-chaos.md +115 -0
  129. package/.opencode/agents/aether-chronicler.md +122 -0
  130. package/.opencode/agents/aether-gatekeeper.md +116 -0
  131. package/.opencode/agents/aether-includer.md +117 -0
  132. package/.opencode/agents/aether-keeper.md +177 -0
  133. package/.opencode/agents/aether-measurer.md +128 -0
  134. package/.opencode/agents/aether-probe.md +133 -0
  135. package/.opencode/agents/aether-queen.md +286 -0
  136. package/.opencode/agents/aether-route-setter.md +130 -0
  137. package/.opencode/agents/aether-sage.md +106 -0
  138. package/.opencode/agents/aether-scout.md +101 -0
  139. package/.opencode/agents/aether-surveyor-disciplines.md +386 -0
  140. package/.opencode/agents/aether-surveyor-nest.md +324 -0
  141. package/.opencode/agents/aether-surveyor-pathogens.md +259 -0
  142. package/.opencode/agents/aether-surveyor-provisions.md +329 -0
  143. package/.opencode/agents/aether-tracker.md +137 -0
  144. package/.opencode/agents/aether-watcher.md +174 -0
  145. package/.opencode/agents/aether-weaver.md +130 -0
  146. package/.opencode/commands/ant/archaeology.md +338 -0
  147. package/.opencode/commands/ant/build.md +1200 -0
  148. package/.opencode/commands/ant/chaos.md +346 -0
  149. package/.opencode/commands/ant/colonize.md +202 -0
  150. package/.opencode/commands/ant/continue.md +938 -0
  151. package/.opencode/commands/ant/council.md +305 -0
  152. package/.opencode/commands/ant/dream.md +262 -0
  153. package/.opencode/commands/ant/entomb.md +367 -0
  154. package/.opencode/commands/ant/feedback.md +80 -0
  155. package/.opencode/commands/ant/flag.md +137 -0
  156. package/.opencode/commands/ant/flags.md +153 -0
  157. package/.opencode/commands/ant/focus.md +56 -0
  158. package/.opencode/commands/ant/help.md +124 -0
  159. package/.opencode/commands/ant/history.md +127 -0
  160. package/.opencode/commands/ant/init.md +337 -0
  161. package/.opencode/commands/ant/interpret.md +256 -0
  162. package/.opencode/commands/ant/lay-eggs.md +141 -0
  163. package/.opencode/commands/ant/maturity.md +92 -0
  164. package/.opencode/commands/ant/memory-details.md +77 -0
  165. package/.opencode/commands/ant/migrate-state.md +153 -0
  166. package/.opencode/commands/ant/oracle.md +338 -0
  167. package/.opencode/commands/ant/organize.md +224 -0
  168. package/.opencode/commands/ant/pause-colony.md +220 -0
  169. package/.opencode/commands/ant/phase.md +123 -0
  170. package/.opencode/commands/ant/plan.md +531 -0
  171. package/.opencode/commands/ant/redirect.md +67 -0
  172. package/.opencode/commands/ant/resume-colony.md +178 -0
  173. package/.opencode/commands/ant/resume.md +363 -0
  174. package/.opencode/commands/ant/seal.md +247 -0
  175. package/.opencode/commands/ant/status.md +272 -0
  176. package/.opencode/commands/ant/swarm.md +357 -0
  177. package/.opencode/commands/ant/tunnels.md +406 -0
  178. package/.opencode/commands/ant/update.md +191 -0
  179. package/.opencode/commands/ant/verify-castes.md +85 -0
  180. package/.opencode/commands/ant/watch.md +220 -0
  181. package/.opencode/opencode.json +3 -0
  182. package/CHANGELOG.md +325 -0
  183. package/DISCLAIMER.md +74 -0
  184. package/LICENSE +21 -0
  185. package/README.md +258 -0
  186. package/bin/cli.js +2436 -0
  187. package/bin/generate-commands.sh +291 -0
  188. package/bin/lib/caste-colors.js +57 -0
  189. package/bin/lib/colors.js +76 -0
  190. package/bin/lib/errors.js +255 -0
  191. package/bin/lib/event-types.js +190 -0
  192. package/bin/lib/file-lock.js +695 -0
  193. package/bin/lib/init.js +454 -0
  194. package/bin/lib/logger.js +242 -0
  195. package/bin/lib/model-profiles.js +445 -0
  196. package/bin/lib/model-verify.js +288 -0
  197. package/bin/lib/nestmate-loader.js +130 -0
  198. package/bin/lib/proxy-health.js +253 -0
  199. package/bin/lib/spawn-logger.js +266 -0
  200. package/bin/lib/state-guard.js +602 -0
  201. package/bin/lib/state-sync.js +516 -0
  202. package/bin/lib/telemetry.js +441 -0
  203. package/bin/lib/update-transaction.js +1454 -0
  204. package/bin/npx-install.js +178 -0
  205. package/bin/sync-to-runtime.sh +6 -0
  206. package/bin/validate-package.sh +88 -0
  207. package/package.json +70 -0
@@ -0,0 +1,247 @@
1
+ ---
2
+ name: ant:pause-colony
3
+ description: "💾🐜⏸️🐜💾 Pause colony work and create handoff document for resuming later"
4
+ ---
5
+
6
+ You are the **Queen Ant Colony**. Save current state for session handoff.
7
+
8
+ ## Instructions
9
+
10
+ Parse `$ARGUMENTS`:
11
+ - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
12
+ - Otherwise: set `visual_mode = true`
13
+
14
+ ### Step 0: Initialize Visual Mode (if enabled)
15
+
16
+ If `visual_mode` is true, run using the Bash tool with description "Initializing pause display...":
17
+ ```bash
18
+ # Generate session ID
19
+ pause_id="pause-$(date +%s)"
20
+
21
+ # Initialize swarm display
22
+ bash .aether/aether-utils.sh swarm-display-init "$pause_id"
23
+ bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "excavating" "Pausing colony" "Colony" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 0
24
+ ```
25
+
26
+ ### Step 1: Read State
27
+
28
+ Use the Read tool to read `.aether/data/COLONY_STATE.json`.
29
+
30
+ If `goal` is null, output `No colony initialized. Nothing to pause.` and stop.
31
+
32
+ ### Step 2: Compute Active Signals
33
+
34
+ Read active signals from COLONY_STATE.json `signals` array (already loaded in Step 1).
35
+
36
+ Filter signals where:
37
+ - `expires_at` is null (permanent signals like INIT), OR
38
+ - `expires_at` > current timestamp (not expired)
39
+
40
+ If `signals` array is empty or all expired, treat as "no active pheromones."
41
+
42
+ ### Step 3: Build Handoff Summary
43
+
44
+ Gather context for the handoff from `COLONY_STATE.json`:
45
+ - `goal` from top level
46
+ - `state` and `current_phase` from top level
47
+ - `workers` object
48
+ - Active signals from `signals` array (with current decayed strengths from Step 2)
49
+ - Phase progress from `plan.phases` (how many complete, current phase tasks)
50
+ - What was in progress or pending
51
+
52
+ ### Step 4: Write Handoff
53
+
54
+ Use the Write tool to update `.aether/HANDOFF.md` with a session handoff section at the top. The format:
55
+
56
+ ```markdown
57
+ # Colony Session Paused
58
+
59
+ ## Quick Resume
60
+ Run `/ant:resume-colony` in a new session.
61
+
62
+ ## State at Pause
63
+ - Goal: "<goal>"
64
+ - State: <state>
65
+ - Current Phase: <phase_number> — <phase_name>
66
+ - Session: <session_id>
67
+ - Paused: <ISO-8601 timestamp>
68
+
69
+ ## Active Pheromones
70
+ - <TYPE> (strength <current>): "<content>"
71
+ (list each non-expired signal)
72
+
73
+ ## Phase Progress
74
+ (for each phase, show status)
75
+ - Phase <id>: <name> [<status>]
76
+
77
+ ## Current Phase Tasks
78
+ (list tasks in the current phase with their statuses)
79
+ - [<icon>] <task_id>: <description>
80
+
81
+ ## What Was Happening
82
+ <brief description of what the colony was doing>
83
+
84
+ ## Next Steps on Resume
85
+ <what should happen next>
86
+ ```
87
+
88
+ ### Step 4.5: Set Paused Flag in State
89
+
90
+ Use Read tool to get current COLONY_STATE.json.
91
+
92
+ Use Write tool to update COLONY_STATE.json with paused flag:
93
+ - Add field: `"paused": true`
94
+ - Add field: `"paused_at": "<ISO-8601 timestamp>"`
95
+ - Update last_updated timestamp
96
+
97
+ This flag indicates the colony is in a paused state and will be cleared on resume.
98
+
99
+ ### Step 4.6: Commit Suggestion (Optional)
100
+
101
+ **This step is non-blocking. Skipping does not affect the pause or any subsequent steps. Failure to commit has zero consequences.**
102
+
103
+ Before displaying the pause confirmation, check if the user has uncommitted work worth preserving.
104
+
105
+ **1. Check for uncommitted changes:**
106
+ ```bash
107
+ git status --porcelain 2>/dev/null
108
+ ```
109
+ If the output is empty (nothing to commit) or the command fails (not a git repo), skip this step silently and continue to Step 5.
110
+
111
+ **2. Check for double-prompting:**
112
+ Read `last_commit_suggestion_phase` from COLONY_STATE.json (already loaded in Step 1).
113
+ If `last_commit_suggestion_phase` equals the current phase, skip this step silently — the user was already prompted at POST-ADVANCE. Continue to Step 5.
114
+
115
+ **3. Capture AI Description:**
116
+
117
+ **As the AI, briefly describe what was in progress when pausing.**
118
+
119
+ Examples:
120
+ - "Mid-implementation of task-based routing, tests passing"
121
+ - "Completed model selection logic, integration tests pending"
122
+ - "Fixed file locking, ready for verification"
123
+
124
+ Store this as `ai_description`. If no clear description emerges, leave empty (will use fallback).
125
+
126
+ **4. Generate Enhanced Commit Message:**
127
+ ```bash
128
+ bash .aether/aether-utils.sh generate-commit-message "contextual" {current_phase} "{phase_name}" "{ai_description}" {plan_number}
129
+ ```
130
+
131
+ Parse the returned JSON to extract `message`, `body`, `files_changed`, `subsystem`, and `scope`.
132
+
133
+ **5. Display the enhanced suggestion:**
134
+ ```
135
+ ──────────────────────────────────────────────────
136
+ Commit Suggestion
137
+ ──────────────────────────────────────────────────
138
+
139
+ AI Description: {ai_description}
140
+
141
+ Formatted Message:
142
+ {message}
143
+
144
+ Metadata:
145
+ Scope: {scope}
146
+ Files: {files_changed} files changed
147
+
148
+ ──────────────────────────────────────────────────
149
+ ```
150
+
151
+ **6. Use AskUserQuestion:**
152
+ ```
153
+ Commit your work before pausing?
154
+
155
+ 1. Yes, commit with this message
156
+ 2. Yes, but let me edit the description
157
+ 3. No, I'll commit later
158
+ ```
159
+
160
+ **7. If option 1 ("Yes, commit with this message"):**
161
+ ```bash
162
+ git add -A && git commit -m "{message}" -m "{body}"
163
+ ```
164
+ Display: `Committed: {message} ({files_changed} files)`
165
+
166
+ **8. If option 2 ("Yes, but let me edit"):**
167
+ Prompt for custom description, then regenerate and commit.
168
+
169
+ **9. If option 3 ("No, I'll commit later"):**
170
+ Display: `Skipped. Your changes are saved on disk but not committed.`
171
+
172
+ **10. Record the suggestion:**
173
+ Set `last_commit_suggestion_phase` to `{current_phase}` in COLONY_STATE.json.
174
+
175
+ **Error handling:** If any git command fails, display the error and continue to Step 5.
176
+
177
+ Continue to Step 5.
178
+
179
+ ### Step 4.8: Update Context Document
180
+
181
+ Log this pause activity to `.aether/CONTEXT.md` by running using the Bash tool with description "Updating context document...":
182
+
183
+ ```bash
184
+ bash .aether/aether-utils.sh context-update activity "pause-colony" "Colony paused — handoff created" "—"
185
+ ```
186
+
187
+ Update safe-to-clear status by running using the Bash tool with description "Marking safe to clear...":
188
+ ```bash
189
+ bash .aether/aether-utils.sh context-update safe-to-clear "YES" "Colony paused — safe to /clear, run /ant:resume-colony to continue"
190
+ ```
191
+
192
+ ### Step 5: Display Confirmation
193
+
194
+ **If visual_mode is true, render final swarm display** by running using the Bash tool with description "Updating pause display...":
195
+ ```bash
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-text "$pause_id"
198
+ ```
199
+
200
+ Output header:
201
+
202
+ ```
203
+ 💾🐜⏸️🐜💾 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
204
+ C O L O N Y P A U S E D
205
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 💾🐜⏸️🐜💾
206
+ ```
207
+
208
+ Then output:
209
+ +=====================================================+
210
+ | AETHER COLONY :: PAUSED |
211
+ +=====================================================+
212
+
213
+ Goal: "<goal>"
214
+ Phase: <current_phase> — <phase_name>
215
+ Pheromones: <active_count> active
216
+
217
+ Handoff saved to .aether/HANDOFF.md
218
+ Paused state saved to COLONY_STATE.json
219
+
220
+ To resume in a new session:
221
+ /ant:resume-colony
222
+
223
+ 💾 State persisted — safe to /clear
224
+
225
+ 📋 Context document updated at `.aether/CONTEXT.md`
226
+
227
+ 🐜 What would you like to do next?
228
+ 1. /ant:resume-colony — Resume work in this session
229
+ 2. /ant:lay-eggs "<new goal>" — Start a new colony
230
+ 3. /clear — Clear context and continue
231
+
232
+ Use AskUserQuestion with these three options.
233
+
234
+ If option 1 selected: proceed to run /ant:resume-colony flow
235
+ If option 2 selected: run /ant:lay-eggs flow
236
+ If option 3 selected: display "Run /ant:resume-colony when ready to continue, or /ant:lay-eggs to start fresh"
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
+ ```
@@ -0,0 +1,126 @@
1
+ ---
2
+ name: ant:phase
3
+ description: "📝🐜📍🐜📝 Show phase details - Queen reviews phase status, tasks, and caste assignment"
4
+ ---
5
+
6
+ You are the **Queen Ant Colony**. Display phase details from the project plan.
7
+
8
+ ## Instructions
9
+
10
+ The argument is: `$ARGUMENTS`
11
+
12
+ ### Step 1: Read State
13
+
14
+ Use the Read tool to read `.aether/data/COLONY_STATE.json`.
15
+
16
+ If `goal` is null, output `No colony initialized. Run /ant:init first.` and stop.
17
+
18
+ If `plan.phases` is an empty array, output `No project plan. Run /ant:plan first.` and stop.
19
+
20
+ ### Step 2: Determine What to Show
21
+
22
+ - If `$ARGUMENTS` is empty -> show the current phase (from `current_phase`). If `current_phase` is 0 or beyond the last phase, show phase 1.
23
+ - If `$ARGUMENTS` is a number -> show that specific phase
24
+ - If `$ARGUMENTS` is "list" or "all" -> show all phases in summary
25
+
26
+ ### Step 3a: Single Phase View
27
+
28
+ Find the phase by ID in `plan.phases`.
29
+
30
+ **Calculate next phase ID:**
31
+ - Let `total_phases` = length of `plan.phases` array
32
+ - If current phase ID < total_phases, then `next_id` = current phase ID + 1
33
+ - If current phase ID >= total_phases (viewing last phase), omit the "View next phase" suggestion
34
+
35
+ Output this header:
36
+
37
+ ```
38
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
39
+ 📝🐜📍🐜📝 P H A S E {id} D E T A I L S
40
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
41
+ ```
42
+
43
+ Then display:
44
+
45
+ ```
46
+ 📍 Phase <id>: <name>
47
+ 📊 Status: <status>
48
+
49
+ <description>
50
+
51
+ 🐜 Tasks:
52
+ {status_icon} <task_id>: <description>
53
+ ↳ depends on: <deps or "none">
54
+
55
+ ✅ Success Criteria:
56
+ • <criterion>
57
+
58
+ ──────────────────────────────────────────────────
59
+ 🐜 Next Up
60
+ ──────────────────────────────────────────────────
61
+ /ant:build <id> 🔨 Phase <id>: <phase_name>
62
+ /ant:phase <next_id> 📋 Phase <next_id>: <next_phase_name> (only if not last phase)
63
+ /ant:status 📊 Colony status
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
+
74
+ Status icons: `[ ]` pending, `[~]` in_progress, `[✓]` completed
75
+
76
+ ### Step 3b: List View
77
+
78
+ Output this header:
79
+
80
+ ```
81
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
82
+ 📝🐜📍🐜📝 A L L P H A S E S
83
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
84
+ ```
85
+
86
+ Then display all phases as a summary:
87
+
88
+ ```
89
+ 👑 Goal: "<goal>"
90
+
91
+ {icon} Phase <id>: <name>
92
+ <completed>/<total> tasks | <status>
93
+
94
+ (repeat for each phase)
95
+
96
+ ─────────────────────────────────────────────────────
97
+ Legend: [✓] completed [~] in progress [ ] pending
98
+
99
+ 🐜 /ant:phase <id> for details
100
+ ```
101
+
102
+ ### Step 4: Update Handoff (Optional)
103
+
104
+ After displaying phase details, offer to update the handoff document with review notes:
105
+
106
+ Use AskUserQuestion:
107
+ ```
108
+ Update handoff with phase review notes?
109
+
110
+ 1. Yes — add notes about blockers or decisions
111
+ 2. No — continue without updating
112
+ ```
113
+
114
+ If option 1 selected:
115
+ Use AskUserQuestion to collect notes, then append to handoff:
116
+
117
+ ```bash
118
+ cat >> .aether/HANDOFF.md << 'HANDOFF_EOF'
119
+
120
+ ## Phase {id} Review Notes
121
+ - Reviewed: $(date -u +%Y-%m-%dT%H:%M:%SZ)
122
+ - Notes: {user_notes}
123
+ HANDOFF_EOF
124
+ ```
125
+
126
+ Display: `Handoff updated with review notes.`