aether-colony 5.3.2 → 5.3.3

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 (165) hide show
  1. package/.aether/aether-utils.sh +181 -5
  2. package/.aether/commands/build.yaml +35 -0
  3. package/.aether/commands/entomb.yaml +1 -1
  4. package/.aether/commands/init.yaml +29 -12
  5. package/.aether/commands/oracle.yaml +70 -0
  6. package/.aether/commands/patrol.yaml +2 -2
  7. package/.aether/commands/run.yaml +3 -3
  8. package/.aether/commands/swarm.yaml +1 -1
  9. package/.aether/docs/command-playbooks/build-complete.md +41 -8
  10. package/.aether/docs/command-playbooks/build-full.md +7 -7
  11. package/.aether/docs/command-playbooks/build-prep.md +1 -1
  12. package/.aether/docs/command-playbooks/continue-advance.md +33 -0
  13. package/.aether/docs/command-playbooks/continue-finalize.md +15 -1
  14. package/.aether/docs/command-playbooks/continue-full.md +15 -1
  15. package/.aether/docs/source-of-truth-map.md +10 -10
  16. package/.aether/docs/structural-learning-stack.md +283 -0
  17. package/.aether/utils/consolidation-seal.sh +196 -0
  18. package/.aether/utils/consolidation.sh +127 -0
  19. package/.aether/utils/curation-ants/archivist.sh +97 -0
  20. package/.aether/utils/curation-ants/critic.sh +214 -0
  21. package/.aether/utils/curation-ants/herald.sh +102 -0
  22. package/.aether/utils/curation-ants/janitor.sh +121 -0
  23. package/.aether/utils/curation-ants/librarian.sh +99 -0
  24. package/.aether/utils/curation-ants/nurse.sh +153 -0
  25. package/.aether/utils/curation-ants/orchestrator.sh +181 -0
  26. package/.aether/utils/curation-ants/scribe.sh +164 -0
  27. package/.aether/utils/curation-ants/sentinel.sh +119 -0
  28. package/.aether/utils/event-bus.sh +301 -0
  29. package/.aether/utils/graph.sh +559 -0
  30. package/.aether/utils/instinct-store.sh +401 -0
  31. package/.aether/utils/learning.sh +79 -7
  32. package/.aether/utils/session.sh +13 -0
  33. package/.aether/utils/state-api.sh +1 -1
  34. package/.aether/utils/trust-scoring.sh +347 -0
  35. package/.aether/utils/worktree.sh +97 -0
  36. package/.claude/commands/ant/entomb.md +1 -1
  37. package/.claude/commands/ant/init.md +29 -12
  38. package/.claude/commands/ant/oracle.md +35 -0
  39. package/.claude/commands/ant/patrol.md +2 -2
  40. package/.claude/commands/ant/run.md +3 -3
  41. package/.claude/commands/ant/swarm.md +1 -1
  42. package/.opencode/commands/ant/build.md +35 -0
  43. package/.opencode/commands/ant/init.md +29 -12
  44. package/.opencode/commands/ant/oracle.md +35 -0
  45. package/.opencode/commands/ant/patrol.md +2 -2
  46. package/.opencode/commands/ant/run.md +3 -3
  47. package/CHANGELOG.md +83 -0
  48. package/README.md +22 -9
  49. package/bin/lib/update-transaction.js +8 -3
  50. package/bin/npx-entry.js +0 -0
  51. package/package.json +1 -1
  52. package/.aether/agents/aether-ambassador.md +0 -140
  53. package/.aether/agents/aether-archaeologist.md +0 -108
  54. package/.aether/agents/aether-architect.md +0 -133
  55. package/.aether/agents/aether-auditor.md +0 -144
  56. package/.aether/agents/aether-builder.md +0 -184
  57. package/.aether/agents/aether-chaos.md +0 -115
  58. package/.aether/agents/aether-chronicler.md +0 -122
  59. package/.aether/agents/aether-gatekeeper.md +0 -116
  60. package/.aether/agents/aether-includer.md +0 -117
  61. package/.aether/agents/aether-keeper.md +0 -177
  62. package/.aether/agents/aether-measurer.md +0 -128
  63. package/.aether/agents/aether-oracle.md +0 -137
  64. package/.aether/agents/aether-probe.md +0 -133
  65. package/.aether/agents/aether-queen.md +0 -286
  66. package/.aether/agents/aether-route-setter.md +0 -130
  67. package/.aether/agents/aether-sage.md +0 -106
  68. package/.aether/agents/aether-scout.md +0 -101
  69. package/.aether/agents/aether-surveyor-disciplines.md +0 -391
  70. package/.aether/agents/aether-surveyor-nest.md +0 -329
  71. package/.aether/agents/aether-surveyor-pathogens.md +0 -264
  72. package/.aether/agents/aether-surveyor-provisions.md +0 -334
  73. package/.aether/agents/aether-tracker.md +0 -137
  74. package/.aether/agents/aether-watcher.md +0 -174
  75. package/.aether/agents/aether-weaver.md +0 -130
  76. package/.aether/commands/claude/archaeology.md +0 -334
  77. package/.aether/commands/claude/build.md +0 -65
  78. package/.aether/commands/claude/chaos.md +0 -336
  79. package/.aether/commands/claude/colonize.md +0 -259
  80. package/.aether/commands/claude/continue.md +0 -60
  81. package/.aether/commands/claude/council.md +0 -507
  82. package/.aether/commands/claude/data-clean.md +0 -81
  83. package/.aether/commands/claude/dream.md +0 -268
  84. package/.aether/commands/claude/entomb.md +0 -498
  85. package/.aether/commands/claude/export-signals.md +0 -57
  86. package/.aether/commands/claude/feedback.md +0 -96
  87. package/.aether/commands/claude/flag.md +0 -151
  88. package/.aether/commands/claude/flags.md +0 -169
  89. package/.aether/commands/claude/focus.md +0 -76
  90. package/.aether/commands/claude/help.md +0 -154
  91. package/.aether/commands/claude/history.md +0 -140
  92. package/.aether/commands/claude/import-signals.md +0 -71
  93. package/.aether/commands/claude/init.md +0 -505
  94. package/.aether/commands/claude/insert-phase.md +0 -105
  95. package/.aether/commands/claude/interpret.md +0 -278
  96. package/.aether/commands/claude/lay-eggs.md +0 -210
  97. package/.aether/commands/claude/maturity.md +0 -113
  98. package/.aether/commands/claude/memory-details.md +0 -77
  99. package/.aether/commands/claude/migrate-state.md +0 -171
  100. package/.aether/commands/claude/oracle.md +0 -642
  101. package/.aether/commands/claude/organize.md +0 -232
  102. package/.aether/commands/claude/patrol.md +0 -620
  103. package/.aether/commands/claude/pause-colony.md +0 -233
  104. package/.aether/commands/claude/phase.md +0 -115
  105. package/.aether/commands/claude/pheromones.md +0 -156
  106. package/.aether/commands/claude/plan.md +0 -693
  107. package/.aether/commands/claude/preferences.md +0 -65
  108. package/.aether/commands/claude/quick.md +0 -100
  109. package/.aether/commands/claude/redirect.md +0 -76
  110. package/.aether/commands/claude/resume-colony.md +0 -197
  111. package/.aether/commands/claude/resume.md +0 -388
  112. package/.aether/commands/claude/run.md +0 -231
  113. package/.aether/commands/claude/seal.md +0 -774
  114. package/.aether/commands/claude/skill-create.md +0 -286
  115. package/.aether/commands/claude/status.md +0 -410
  116. package/.aether/commands/claude/swarm.md +0 -349
  117. package/.aether/commands/claude/tunnels.md +0 -426
  118. package/.aether/commands/claude/update.md +0 -132
  119. package/.aether/commands/claude/verify-castes.md +0 -143
  120. package/.aether/commands/claude/watch.md +0 -239
  121. package/.aether/commands/opencode/archaeology.md +0 -331
  122. package/.aether/commands/opencode/build.md +0 -1168
  123. package/.aether/commands/opencode/chaos.md +0 -329
  124. package/.aether/commands/opencode/colonize.md +0 -195
  125. package/.aether/commands/opencode/continue.md +0 -1436
  126. package/.aether/commands/opencode/council.md +0 -437
  127. package/.aether/commands/opencode/data-clean.md +0 -77
  128. package/.aether/commands/opencode/dream.md +0 -260
  129. package/.aether/commands/opencode/entomb.md +0 -377
  130. package/.aether/commands/opencode/export-signals.md +0 -54
  131. package/.aether/commands/opencode/feedback.md +0 -99
  132. package/.aether/commands/opencode/flag.md +0 -149
  133. package/.aether/commands/opencode/flags.md +0 -167
  134. package/.aether/commands/opencode/focus.md +0 -73
  135. package/.aether/commands/opencode/help.md +0 -157
  136. package/.aether/commands/opencode/history.md +0 -136
  137. package/.aether/commands/opencode/import-signals.md +0 -68
  138. package/.aether/commands/opencode/init.md +0 -518
  139. package/.aether/commands/opencode/insert-phase.md +0 -111
  140. package/.aether/commands/opencode/interpret.md +0 -272
  141. package/.aether/commands/opencode/lay-eggs.md +0 -213
  142. package/.aether/commands/opencode/maturity.md +0 -108
  143. package/.aether/commands/opencode/memory-details.md +0 -83
  144. package/.aether/commands/opencode/migrate-state.md +0 -165
  145. package/.aether/commands/opencode/oracle.md +0 -593
  146. package/.aether/commands/opencode/organize.md +0 -226
  147. package/.aether/commands/opencode/patrol.md +0 -626
  148. package/.aether/commands/opencode/pause-colony.md +0 -203
  149. package/.aether/commands/opencode/phase.md +0 -113
  150. package/.aether/commands/opencode/pheromones.md +0 -162
  151. package/.aether/commands/opencode/plan.md +0 -684
  152. package/.aether/commands/opencode/preferences.md +0 -71
  153. package/.aether/commands/opencode/quick.md +0 -91
  154. package/.aether/commands/opencode/redirect.md +0 -84
  155. package/.aether/commands/opencode/resume-colony.md +0 -190
  156. package/.aether/commands/opencode/resume.md +0 -394
  157. package/.aether/commands/opencode/run.md +0 -237
  158. package/.aether/commands/opencode/seal.md +0 -452
  159. package/.aether/commands/opencode/skill-create.md +0 -63
  160. package/.aether/commands/opencode/status.md +0 -307
  161. package/.aether/commands/opencode/swarm.md +0 -15
  162. package/.aether/commands/opencode/tunnels.md +0 -400
  163. package/.aether/commands/opencode/update.md +0 -127
  164. package/.aether/commands/opencode/verify-castes.md +0 -139
  165. package/.aether/commands/opencode/watch.md +0 -227
@@ -1,426 +0,0 @@
1
- <!-- Generated from .aether/commands/tunnels.yaml - DO NOT EDIT DIRECTLY -->
2
- ---
3
- name: ant:tunnels
4
- description: "🕳️🐜🕳️ Explore tunnels (browse archived colonies, compare chambers)"
5
- ---
6
-
7
- You are the **Queen**. Browse the colony history.
8
-
9
- ## Instructions
10
-
11
- ### Argument Handling
12
-
13
- - No arguments: Show timeline view (Step 4)
14
- - One argument: Show single chamber detail with seal document (Step 3)
15
- - Two arguments: Compare two chambers side-by-side (Step 5)
16
- - More than two: "Too many arguments. Use: /ant:tunnels [chamber1] [chamber2]"
17
-
18
- ### Step 1: Check for Chambers Directory
19
-
20
- Check if `.aether/chambers/` exists.
21
-
22
- If not:
23
- ```
24
- TUNNELS — Colony Timeline
25
-
26
- No chambers found.
27
-
28
- Archive colonies with /ant:entomb to build the tunnel network.
29
- ```
30
- Stop here.
31
-
32
- ### Step 2: List All Chambers
33
-
34
- Run using the Bash tool with description "Loading chamber list...": `bash .aether/aether-utils.sh chamber-list`
35
-
36
- Parse JSON result into array of chambers.
37
-
38
- If no chambers (empty array):
39
- ```
40
- TUNNELS — Colony Timeline
41
-
42
- 0 colonies archived
43
-
44
- The tunnel network is empty.
45
- Archive colonies with /ant:entomb to preserve history.
46
- ```
47
- Stop here.
48
-
49
- ### Step 3: Detail View — Show Seal Document (if one argument provided)
50
-
51
- If `$ARGUMENTS` is not empty and contains exactly one argument:
52
- - Treat it as chamber name
53
- - Check if `.aether/chambers/{arguments}/` exists
54
- - If not found:
55
- ```
56
- Chamber not found: {arguments}
57
-
58
- Run /ant:tunnels to see available chambers.
59
- ```
60
- Stop here.
61
-
62
- **If CROWNED-ANTHILL.md exists in the chamber:**
63
-
64
- ```bash
65
- seal_doc=".aether/chambers/{arguments}/CROWNED-ANTHILL.md"
66
- ```
67
-
68
- Display the header:
69
- ```
70
- CHAMBER DETAILS — {chamber_name}
71
- ```
72
-
73
- Then display the FULL content of `CROWNED-ANTHILL.md` (read and output the file contents — this IS the seal ceremony record).
74
-
75
- After the seal document, check if `colony-archive.xml` exists in the chamber:
76
-
77
- ```bash
78
- chamber_has_xml=false
79
- [[ -f ".aether/chambers/{chamber_name}/colony-archive.xml" ]] && chamber_has_xml=true
80
- ```
81
-
82
- **If `colony-archive.xml` exists in the chamber**, show footer with import option:
83
- ```
84
- Chamber integrity: {hash_status from chamber-verify}
85
- Chamber location: .aether/chambers/{chamber_name}/
86
- XML Archive: colony-archive.xml found
87
-
88
- Actions:
89
- 1. Import signals from this colony into current colony
90
- 2. Return to timeline
91
- 3. Compare with another chamber
92
-
93
- Select an action (1/2/3)
94
- ```
95
-
96
- Use AskUserQuestion with three options.
97
-
98
- If option 1 selected: proceed to Step 6 (Import Signals from Chamber).
99
- If option 2 selected: return to timeline (run /ant:tunnels).
100
- If option 3 selected: prompt for second chamber name then run /ant:tunnels {chamber_a} {chamber_b}.
101
-
102
- **If `colony-archive.xml` does NOT exist in the chamber**, show the existing footer unchanged:
103
- ```
104
- Chamber integrity: {hash_status from chamber-verify}
105
- Chamber location: .aether/chambers/{chamber_name}/
106
-
107
- Run /ant:tunnels to return to timeline
108
- Run /ant:tunnels {chamber_a} {chamber_b} to compare chambers
109
- ```
110
-
111
- **If CROWNED-ANTHILL.md does NOT exist (older chamber):**
112
-
113
- Display the header:
114
- ```
115
- CHAMBER DETAILS — {chamber_name}
116
-
117
- (No seal document — this chamber was created before the sealing ceremony was introduced)
118
- ```
119
-
120
- Fall back to manifest data display:
121
- - Read `manifest.json` and show: goal, milestone, version, phases_completed, total_phases, entombed_at
122
- - Show decisions count and learnings count from manifest
123
- - Show hash status from `chamber-verify`
124
-
125
- Footer with navigation guidance:
126
- ```
127
- Run /ant:tunnels to return to timeline
128
- Run /ant:tunnels {chamber_a} {chamber_b} to compare chambers
129
- ```
130
-
131
- To get the hash status, run using the Bash tool with description "Verifying chamber integrity...":
132
- - Run `bash .aether/aether-utils.sh chamber-verify .aether/chambers/{chamber_name}`
133
- - If verified: hash_status = "verified"
134
- - If not verified: hash_status = "hash mismatch"
135
- - If error: hash_status = "error"
136
-
137
- Stop here.
138
-
139
- ### Step 4: Timeline View (default, no arguments)
140
-
141
- Display header:
142
- ```
143
- TUNNELS — Colony Timeline
144
-
145
- {count} colonies archived
146
- ```
147
-
148
- For each chamber in sorted list (already sorted by `chamber-list` — newest first), display as a timeline entry:
149
- ```
150
- [{date}] {milestone_emoji} {chamber_name}
151
- {goal (truncated to 60 chars)}
152
- {phases_completed} phases | {milestone}
153
- ```
154
-
155
- Where `milestone_emoji` is:
156
- - Crowned Anthill: crown emoji
157
- - Sealed Chambers: lock emoji
158
- - Other: circle emoji
159
-
160
- After the timeline entries, show:
161
- ```
162
- Run /ant:tunnels <chamber_name> to view seal document
163
- Run /ant:tunnels <chamber_a> <chamber_b> to compare two colonies
164
- ```
165
-
166
- Use the entombed_at field from the chamber-list JSON to extract the date (first 10 chars of ISO timestamp).
167
-
168
- Stop here.
169
-
170
- ### Step 5: Chamber Comparison Mode (Two Arguments)
171
-
172
- If two arguments provided (chamber names separated by space):
173
- - Treat as: `/ant:tunnels <chamber_a> <chamber_b>`
174
-
175
- Check both chambers exist. If either missing:
176
- ```
177
- Chamber not found: {chamber_name}
178
-
179
- Available chambers:
180
- {list from chamber-list}
181
- ```
182
- Stop here.
183
-
184
- Run comparison using the Bash tool with description "Comparing chambers...":
185
- ```bash
186
- bash .aether/utils/chamber-compare.sh compare <chamber_a> <chamber_b>
187
- bash .aether/utils/chamber-compare.sh stats <chamber_a> <chamber_b>
188
- ```
189
-
190
- Display comparison header:
191
- ```
192
- CHAMBER COMPARISON
193
-
194
- {chamber_a} vs {chamber_b}
195
- ```
196
-
197
- Display side-by-side comparison:
198
- ```
199
- +---------------------+---------------------+
200
- | {chamber_a} | {chamber_b} |
201
- +---------------------+---------------------+
202
- | Goal: {goal_a} | Goal: {goal_b} |
203
- | | |
204
- | {milestone_a} | {milestone_b} |
205
- | {version_a} | {version_b} |
206
- | | |
207
- | {phases_a} done | {phases_b} done |
208
- | of {total_a} | of {total_b} |
209
- | | |
210
- | {decisions_a} | {decisions_b} |
211
- | decisions | decisions |
212
- | | |
213
- | {learnings_a} | {learnings_b} |
214
- | learnings | learnings |
215
- | | |
216
- | {date_a} | {date_b} |
217
- +---------------------+---------------------+
218
- ```
219
-
220
- Display growth metrics:
221
- ```
222
- Growth Between Chambers:
223
- Phases: +{phases_diff} ({phases_a} -> {phases_b})
224
- Decisions: +{decisions_diff} new
225
- Learnings: +{learnings_diff} new
226
- Time: {time_between} days apart
227
- ```
228
-
229
- If phases_diff > 0: show "Colony grew"
230
- If phases_diff < 0: show "Colony reduced (unusual)"
231
- If same_milestone: show "Same milestone reached"
232
- If milestone changed: show "Milestone advanced: {milestone_a} -> {milestone_b}"
233
-
234
- Display pheromone trail diff (new decisions/learnings in B) by running using the Bash tool with description "Analyzing pheromone differences...":
235
- ```bash
236
- bash .aether/utils/chamber-compare.sh diff <chamber_a> <chamber_b>
237
- ```
238
-
239
- Parse result and show:
240
- ```
241
- New Decisions in {chamber_b}:
242
- {N} new architectural decisions
243
- {if N <= 5, list them; else show first 3 + "...and {N-3} more"}
244
-
245
- New Learnings in {chamber_b}:
246
- {N} new validated learnings
247
- {if N <= 5, list them; else show first 3 + "...and {N-3} more"}
248
- ```
249
-
250
- If both chambers have `CROWNED-ANTHILL.md`, note:
251
- ```
252
- Both colonies have seal documents. Run /ant:tunnels <name> to view individually.
253
- ```
254
-
255
- Footer:
256
- ```
257
- Run /ant:tunnels to see all chambers
258
- Run /ant:tunnels <chamber> to view single chamber details
259
- ```
260
-
261
- Stop here.
262
-
263
- ### Step 6: Import Signals from Chamber
264
-
265
- When user selects "Import signals" from Step 3:
266
-
267
- **Step 6.1: Check XML tools** by running using the Bash tool with description "Checking XML tools...":
268
- ```bash
269
- if command -v xmllint >/dev/null 2>&1; then
270
- xmllint_available=true
271
- else
272
- xmllint_available=false
273
- fi
274
- ```
275
-
276
- If xmllint not available:
277
- ```
278
- Import requires xmllint. Install it first:
279
- macOS: xcode-select --install
280
- Linux: apt-get install libxml2-utils
281
- ```
282
- Stop here (return to timeline).
283
-
284
- **Step 6.2: Extract source colony name** by running using the Bash tool with description "Extracting colony info...":
285
- ```bash
286
- chamber_xml=".aether/chambers/{chamber_name}/colony-archive.xml"
287
- # Extract colony_id from the archive root element
288
- source_colony=$(xmllint --xpath "string(/*/@colony_id)" "$chamber_xml" 2>/dev/null)
289
- [[ -z "$source_colony" ]] && source_colony="{chamber_name}"
290
- ```
291
-
292
- **Step 6.3: Extract pheromone section and show import preview**
293
-
294
- The combined `colony-archive.xml` contains pheromones, wisdom, and registry sections. Extract the pheromone section to a temp file before counting or importing. This prevents over-counting signals from wisdom/registry sections and ensures `pheromone-import-xml` receives the format it expects (`<pheromones>` as root element).
295
-
296
- Run using the Bash tool with description "Extracting pheromone signals...":
297
- ```bash
298
- # Extract the <pheromones> section from the combined archive into a standalone temp file
299
- import_tmp_dir=$(mktemp -d)
300
- import_tmp_pheromones="$import_tmp_dir/pheromones-extracted.xml"
301
-
302
- # Use xmllint to extract the pheromones element (with its namespace)
303
- xmllint --xpath "//*[local-name()='pheromones']" "$chamber_xml" > "$import_tmp_pheromones" 2>/dev/null
304
-
305
- # Add XML declaration to make it a standalone well-formed document
306
- if [[ -s "$import_tmp_pheromones" ]]; then
307
- # Portable approach: prepend declaration via temp file (avoids macOS/Linux sed -i differences)
308
- { echo '<?xml version="1.0" encoding="UTF-8"?>'; cat "$import_tmp_pheromones"; } > "$import_tmp_dir/tmp_decl.xml"
309
- mv "$import_tmp_dir/tmp_decl.xml" "$import_tmp_pheromones"
310
- fi
311
-
312
- # Count pheromone signals in extracted pheromone-only XML
313
- # Scoped to pheromone section only — no over-counting from wisdom/registry sections
314
- pheromone_count=$(xmllint --xpath "count(//*[local-name()='signal'])" "$import_tmp_pheromones" 2>/dev/null || echo "unknown")
315
- ```
316
-
317
- Display:
318
- ```
319
- IMPORT FROM COLONY: {source_colony}
320
-
321
- Source: .aether/chambers/{chamber_name}/colony-archive.xml
322
- Signals available: ~{pheromone_count} pheromone signals
323
-
324
- Import behavior:
325
- - Signals tagged with prefix "{source_colony}:" to identify origin
326
- - Additive merge — your current signals are never overwritten
327
- - On conflict, your current colony wins
328
-
329
- Import these signals? (yes/no)
330
- ```
331
-
332
- Use AskUserQuestion with yes/no options.
333
-
334
- If no: "Import cancelled." Clean up: `rm -rf "$import_tmp_dir"`. Return to timeline.
335
-
336
- **Step 6.4: Perform import**
337
-
338
- Pass the extracted pheromone-only temp file (NOT the combined `colony-archive.xml`) to `pheromone-import-xml`, along with `$source_colony` as the second argument. This ensures:
339
- 1. `pheromone-import-xml` receives XML with `<pheromones>` as root element (the format it expects)
340
- 2. The prefix-tagging logic prepends `${source_colony}:` to each imported signal's ID before the merge
341
-
342
- Run using the Bash tool with description "Importing pheromone signals...":
343
- ```bash
344
- # Import the EXTRACTED pheromone-only XML (NOT the combined colony-archive.xml)
345
- # $import_tmp_pheromones has <pheromones> as root — the format pheromone-import-xml expects
346
- # Second argument triggers prefix-tagging — imported signal IDs become "{source_colony}:original_id"
347
- import_result=$(bash .aether/aether-utils.sh pheromone-import-xml "$import_tmp_pheromones" "$source_colony" 2>&1)
348
- import_ok=$(echo "$import_result" | jq -r '.ok // false' 2>/dev/null)
349
-
350
- if [[ "$import_ok" == "true" ]]; then
351
- imported_count=$(echo "$import_result" | jq -r '.result.signal_count // 0' 2>/dev/null)
352
- else
353
- imported_count=0
354
- import_error=$(echo "$import_result" | jq -r '.error // "Unknown error"' 2>/dev/null)
355
- fi
356
-
357
- # Clean up temp files
358
- rm -rf "$import_tmp_dir"
359
- ```
360
-
361
- **Step 6.5: Display result**
362
-
363
- If import succeeded:
364
- ```
365
- SIGNALS IMPORTED
366
-
367
- Source: {source_colony}
368
- Imported: {imported_count} pheromone signals
369
- Tagged with: "{source_colony}:" prefix
370
-
371
- Your colony now carries wisdom from {source_colony}.
372
- Run /ant:status to see current colony state.
373
- ```
374
-
375
- If import failed:
376
- ```
377
- Import failed: {import_error}
378
-
379
- The archive may be malformed. Check:
380
- .aether/chambers/{chamber_name}/colony-archive.xml
381
- ```
382
-
383
- ### Edge Cases
384
-
385
- **Malformed manifest:** show "Invalid manifest" for that chamber and skip it.
386
-
387
- **Missing COLONY_STATE.json:** show "Incomplete chamber" for that chamber.
388
-
389
- **Very long chamber list:** display all (no pagination for now).
390
-
391
- **Older chambers without CROWNED-ANTHILL.md:** Fall back to manifest data in detail view.
392
-
393
- ### Step 7: Next Up
394
-
395
- Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
396
- ```bash
397
- state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
398
- current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
399
- total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
400
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
401
- ```
402
-
403
- ## Implementation Notes
404
-
405
- The `chamber-list` utility returns JSON in this format:
406
- ```json
407
- {
408
- "ok": true,
409
- "result": [
410
- {
411
- "name": "add-user-auth-20260214-153022",
412
- "goal": "Add user authentication",
413
- "milestone": "Sealed Chambers",
414
- "phases_completed": 5,
415
- "entombed_at": "2026-02-14T15:30:22Z"
416
- }
417
- ]
418
- }
419
- ```
420
-
421
- Parse with jq: `jq -r '.result[] | "\(.name)|\(.goal)|\(.milestone)|\(.phases_completed)|\(.entombed_at)"'`
422
-
423
- For detail view, read manifest.json directly:
424
- ```bash
425
- jq -r '.goal, .milestone, .version, .phases_completed, .total_phases, .entombed_at, (.decisions | length), (.learnings | length)' .aether/chambers/{name}/manifest.json
426
- ```
@@ -1,132 +0,0 @@
1
- <!-- Generated from .aether/commands/update.yaml - DO NOT EDIT DIRECTLY -->
2
- ---
3
- name: ant:update
4
- description: "🔄🐜📦🐜🔄 Update Aether safely from the global hub (transactional)"
5
- ---
6
-
7
- You are the **Queen Ant Colony**. Update this repo's Aether system files from the global distribution hub.
8
-
9
- ## Safety Rules
10
-
11
- 1. Use the CLI transactional updater (`aether update`) instead of manual `cp` chains.
12
- 2. Never overwrite colony runtime data (`.aether/data/`) or user wisdom (`.aether/QUEEN.md`).
13
- 3. Do **not** assume version numbers are monotonic. Labels may reset; avoid "downgrade" wording.
14
- 4. If update reports dirty managed files, stop and show recovery options unless user requested force.
15
-
16
- ## Instructions
17
-
18
- ### Step 1: Check Hub Availability
19
-
20
- Run using the Bash tool with description "Checking Aether hub...":
21
-
22
- ```bash
23
- test -f ~/.aether/version.json && cat ~/.aether/version.json || echo "__NO_HUB__"
24
- ```
25
-
26
- If output is `__NO_HUB__`, display:
27
-
28
- ```
29
- No Aether distribution hub found at ~/.aether/
30
-
31
- To set up the hub, run:
32
- npx aether-colony install
33
- - or -
34
- aether install
35
- ```
36
-
37
- Stop here.
38
-
39
- Parse `version` from the JSON as `available_version`.
40
-
41
- ### Step 1.5: Verify CLI Availability
42
-
43
- Run using the Bash tool with description "Checking aether CLI...":
44
-
45
- ```bash
46
- command -v aether >/dev/null 2>&1 && echo "__CLI_OK__" || echo "__CLI_MISSING__"
47
- ```
48
-
49
- If output is `__CLI_MISSING__`, display:
50
-
51
- ```
52
- The transactional updater is not available because the `aether` CLI is missing.
53
-
54
- Install/update it, then retry:
55
- npx aether-colony install
56
- - or -
57
- npm i -g aether-colony
58
- ```
59
-
60
- Stop here.
61
-
62
- ### Step 2: Parse Force Flag
63
-
64
- Treat either of these as force:
65
- - `--force`
66
- - `--force-update`
67
-
68
- Set:
69
- - `update_flags="--force"` when force requested
70
- - `update_flags=""` otherwise
71
-
72
- ### Step 3: Dry-Run Preview
73
-
74
- Run using the Bash tool with description "Previewing update...":
75
-
76
- ```bash
77
- aether update --dry-run $update_flags
78
- ```
79
-
80
- If this fails, show the error output and stop.
81
-
82
- ### Step 4: Execute Transactional Update
83
-
84
- Run using the Bash tool with description "Applying update...":
85
-
86
- ```bash
87
- aether update $update_flags
88
- ```
89
-
90
- This command handles:
91
- - checkpoint creation
92
- - safe sync
93
- - integrity verification
94
- - automatic rollback on failure
95
-
96
- ### Step 5: Clear Version Cache
97
-
98
-
99
- Run using the Bash tool:
100
-
101
-
102
-
103
- ```bash
104
- rm -f .aether/data/.version-check-cache
105
- ```
106
-
107
- ### Step 6: Display Summary
108
-
109
- Display a concise summary:
110
-
111
- ```
112
- 🔄🐜📦🐜🔄 AETHER UPDATE COMPLETE
113
-
114
- Hub version label: {available_version}
115
- Update mode: {normal|force}
116
- Colony data (.aether/data/) untouched.
117
-
118
- Note: version labels are treated as identifiers, not strict upgrade/downgrade ordering.
119
- ```
120
-
121
-
122
- ### Next Up
123
-
124
- Generate the state-based Next Up block by running:
125
-
126
- ```bash
127
- state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
128
- current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
129
- total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
130
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
131
- ```
132
-
@@ -1,143 +0,0 @@
1
- <!-- Generated from .aether/commands/verify-castes.yaml - DO NOT EDIT DIRECTLY -->
2
- ---
3
- name: ant:verify-castes
4
- description: "Verify colony caste assignments and system status"
5
- ---
6
-
7
- You are the **Queen**. Display the caste assignments and system status.
8
-
9
- ## Step 1: Show Caste Assignments
10
-
11
- Display the colony caste structure as a compact table:
12
-
13
-
14
- ```
15
- Aether Colony Caste System
16
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
17
-
18
-
19
-
20
- CASTE ASSIGNMENTS
21
- ────────────────────────────────────
22
- Caste Slot Active
23
- ────────────────────────────────────
24
- [reasoning]
25
- Archaeologist opus yes
26
- Architect opus yes
27
- Auditor opus yes
28
- Gatekeeper opus yes
29
- Measurer opus yes
30
- Oracle opus yes
31
- Queen opus yes
32
- Route-setter opus yes
33
- Sage opus yes
34
- Tracker opus yes
35
- ────────────────────────────────────
36
- [execution]
37
- Ambassador sonnet yes
38
- Builder sonnet yes
39
- Chaos sonnet yes
40
- Disciplines sonnet yes
41
- Nest sonnet yes
42
- Pathogens sonnet yes
43
- Probe sonnet yes
44
- Provisions sonnet yes
45
- Scout sonnet yes
46
- Weaver sonnet yes
47
- Watcher sonnet yes
48
- ────────────────────────────────────
49
- [inherit]
50
- Chronicler inherit yes
51
- Includer inherit yes
52
- Keeper inherit yes
53
-
54
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
55
-
56
-
57
- ```
58
-
59
- Source of truth: Agent frontmatter `model:` fields in `.claude/agents/ant/*.md`.
60
- Caste slots come from agent frontmatter (`model:` field).
61
-
62
- ## Step 2: Check System Status
63
-
64
-
65
- Run using the Bash tool with description "Checking colony version...": `bash .aether/aether-utils.sh version-check-cached 2>/dev/null || echo "Utils available"`
66
-
67
-
68
-
69
- Check LiteLLM proxy status:
70
- ```bash
71
- curl -s http://localhost:4000/health 2>/dev/null | grep -q "healthy" && echo "✓ Proxy healthy" || echo "⚠ Proxy not running"
72
- ```
73
-
74
- ## Step 3: Show Current Model Configuration
75
-
76
- Display the active model configuration:
77
-
78
-
79
- ```
80
- MODEL CONFIGURATION
81
- ──────────────────
82
-
83
-
84
- Default: Claude API mode (opus -> claude-opus-4, sonnet -> claude-sonnet-4)
85
-
86
- To switch to GLM Proxy mode:
87
- cp ~/.claude/settings.json.glm ~/.claude/settings.json
88
- (opus -> glm-5, sonnet -> glm-5-turbo, haiku -> glm-4.5-air)
89
-
90
- To switch back to Claude API:
91
- cp ~/.claude/settings.json.claude ~/.claude/settings.json
92
-
93
- ```
94
-
95
-
96
-
97
- Current model mapping from agent frontmatter:
98
- ```bash
99
- grep "^model:" .claude/agents/ant/*.md
100
- ```
101
-
102
- ## Step 4: Summary
103
-
104
-
105
- ```
106
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
107
- System Status
108
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
109
-
110
-
111
- Utils: ✓ Operational
112
- Proxy: {status from Step 2}
113
- Castes: 24 defined (10 opus, 11 sonnet, 3 inherit)
114
- Routing: Per-caste via agent frontmatter model: field
115
- ```
116
-
117
-
118
- ## Step 5: Next Up
119
-
120
- Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
121
- ```bash
122
- state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
123
- current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
124
- total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
125
- bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
126
- ```
127
-
128
-
129
- ## Historical Note
130
-
131
- Per-caste model routing was initially attempted using environment variable
132
- injection at spawn time (archived in `.aether/archive/model-routing/`).
133
- That approach failed due to Claude Code Task tool limitations.
134
-
135
- The current approach uses agent frontmatter `model:` fields, which Claude Code
136
- handles natively. No Aether code intervention is required -- Claude Code reads
137
- the frontmatter and resolves the slot name through `ANTHROPIC_DEFAULT_*_MODEL`
138
- environment variables.
139
-
140
- To view the archived v1 configuration:
141
- ```bash
142
- git show model-routing-v1-archived
143
- ```