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