aether-colony 5.2.1 → 5.3.1
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 +35 -0
- package/.aether/agents/aether-ambassador.md +140 -0
- package/.aether/agents/aether-archaeologist.md +108 -0
- package/.aether/agents/aether-architect.md +133 -0
- package/.aether/agents/aether-auditor.md +144 -0
- package/.aether/agents/aether-builder.md +184 -0
- package/.aether/agents/aether-chaos.md +115 -0
- package/.aether/agents/aether-chronicler.md +122 -0
- package/.aether/agents/aether-gatekeeper.md +116 -0
- package/.aether/agents/aether-includer.md +117 -0
- package/.aether/agents/aether-keeper.md +177 -0
- package/.aether/agents/aether-measurer.md +128 -0
- package/.aether/agents/aether-oracle.md +137 -0
- package/.aether/agents/aether-probe.md +133 -0
- package/.aether/agents/aether-queen.md +286 -0
- package/.aether/agents/aether-route-setter.md +130 -0
- package/.aether/agents/aether-sage.md +106 -0
- package/.aether/agents/aether-scout.md +101 -0
- package/.aether/agents/aether-surveyor-disciplines.md +391 -0
- package/.aether/agents/aether-surveyor-nest.md +329 -0
- package/.aether/agents/aether-surveyor-pathogens.md +264 -0
- package/.aether/agents/aether-surveyor-provisions.md +334 -0
- package/.aether/agents/aether-tracker.md +137 -0
- package/.aether/agents/aether-watcher.md +174 -0
- package/.aether/agents/aether-weaver.md +130 -0
- package/.aether/commands/claude/archaeology.md +334 -0
- package/.aether/commands/claude/build.md +65 -0
- package/.aether/commands/claude/chaos.md +336 -0
- package/.aether/commands/claude/colonize.md +259 -0
- package/.aether/commands/claude/continue.md +60 -0
- package/.aether/commands/claude/council.md +507 -0
- package/.aether/commands/claude/data-clean.md +81 -0
- package/.aether/commands/claude/dream.md +268 -0
- package/.aether/commands/claude/entomb.md +498 -0
- package/.aether/commands/claude/export-signals.md +57 -0
- package/.aether/commands/claude/feedback.md +96 -0
- package/.aether/commands/claude/flag.md +151 -0
- package/.aether/commands/claude/flags.md +169 -0
- package/.aether/commands/claude/focus.md +76 -0
- package/.aether/commands/claude/help.md +154 -0
- package/.aether/commands/claude/history.md +140 -0
- package/.aether/commands/claude/import-signals.md +71 -0
- package/.aether/commands/claude/init.md +505 -0
- package/.aether/commands/claude/insert-phase.md +105 -0
- package/.aether/commands/claude/interpret.md +278 -0
- package/.aether/commands/claude/lay-eggs.md +210 -0
- package/.aether/commands/claude/maturity.md +113 -0
- package/.aether/commands/claude/memory-details.md +77 -0
- package/.aether/commands/claude/migrate-state.md +171 -0
- package/.aether/commands/claude/oracle.md +642 -0
- package/.aether/commands/claude/organize.md +232 -0
- package/.aether/commands/claude/patrol.md +620 -0
- package/.aether/commands/claude/pause-colony.md +233 -0
- package/.aether/commands/claude/phase.md +115 -0
- package/.aether/commands/claude/pheromones.md +156 -0
- package/.aether/commands/claude/plan.md +693 -0
- package/.aether/commands/claude/preferences.md +65 -0
- package/.aether/commands/claude/quick.md +100 -0
- package/.aether/commands/claude/redirect.md +76 -0
- package/.aether/commands/claude/resume-colony.md +197 -0
- package/.aether/commands/claude/resume.md +388 -0
- package/.aether/commands/claude/run.md +231 -0
- package/.aether/commands/claude/seal.md +774 -0
- package/.aether/commands/claude/skill-create.md +286 -0
- package/.aether/commands/claude/status.md +410 -0
- package/.aether/commands/claude/swarm.md +349 -0
- package/.aether/commands/claude/tunnels.md +426 -0
- package/.aether/commands/claude/update.md +132 -0
- package/.aether/commands/claude/verify-castes.md +143 -0
- package/.aether/commands/claude/watch.md +239 -0
- package/.aether/commands/opencode/archaeology.md +331 -0
- package/.aether/commands/opencode/build.md +1168 -0
- package/.aether/commands/opencode/chaos.md +329 -0
- package/.aether/commands/opencode/colonize.md +195 -0
- package/.aether/commands/opencode/continue.md +1436 -0
- package/.aether/commands/opencode/council.md +437 -0
- package/.aether/commands/opencode/data-clean.md +77 -0
- package/.aether/commands/opencode/dream.md +260 -0
- package/.aether/commands/opencode/entomb.md +377 -0
- package/.aether/commands/opencode/export-signals.md +54 -0
- package/.aether/commands/opencode/feedback.md +99 -0
- package/.aether/commands/opencode/flag.md +149 -0
- package/.aether/commands/opencode/flags.md +167 -0
- package/.aether/commands/opencode/focus.md +73 -0
- package/.aether/commands/opencode/help.md +157 -0
- package/.aether/commands/opencode/history.md +136 -0
- package/.aether/commands/opencode/import-signals.md +68 -0
- package/.aether/commands/opencode/init.md +518 -0
- package/.aether/commands/opencode/insert-phase.md +111 -0
- package/.aether/commands/opencode/interpret.md +272 -0
- package/.aether/commands/opencode/lay-eggs.md +213 -0
- package/.aether/commands/opencode/maturity.md +108 -0
- package/.aether/commands/opencode/memory-details.md +83 -0
- package/.aether/commands/opencode/migrate-state.md +165 -0
- package/.aether/commands/opencode/oracle.md +593 -0
- package/.aether/commands/opencode/organize.md +226 -0
- package/.aether/commands/opencode/patrol.md +626 -0
- package/.aether/commands/opencode/pause-colony.md +203 -0
- package/.aether/commands/opencode/phase.md +113 -0
- package/.aether/commands/opencode/pheromones.md +162 -0
- package/.aether/commands/opencode/plan.md +684 -0
- package/.aether/commands/opencode/preferences.md +71 -0
- package/.aether/commands/opencode/quick.md +91 -0
- package/.aether/commands/opencode/redirect.md +84 -0
- package/.aether/commands/opencode/resume-colony.md +190 -0
- package/.aether/commands/opencode/resume.md +394 -0
- package/.aether/commands/opencode/run.md +237 -0
- package/.aether/commands/opencode/seal.md +452 -0
- package/.aether/commands/opencode/skill-create.md +63 -0
- package/.aether/commands/opencode/status.md +307 -0
- package/.aether/commands/opencode/swarm.md +15 -0
- package/.aether/commands/opencode/tunnels.md +400 -0
- package/.aether/commands/opencode/update.md +127 -0
- package/.aether/commands/opencode/verify-castes.md +139 -0
- package/.aether/commands/opencode/watch.md +227 -0
- package/.aether/docs/command-playbooks/build-full.md +1 -1
- package/.aether/docs/command-playbooks/build-prep.md +10 -3
- package/.aether/docs/command-playbooks/build-verify.md +51 -0
- package/.aether/docs/command-playbooks/continue-advance.md +115 -6
- package/.aether/docs/command-playbooks/continue-verify.md +32 -0
- package/.aether/utils/clash-detect.sh +239 -0
- package/.aether/utils/hooks/clash-pre-tool-use.js +99 -0
- package/.aether/utils/merge-driver-lockfile.sh +35 -0
- package/.aether/utils/midden.sh +534 -0
- package/.aether/utils/pheromone.sh +1376 -108
- package/.aether/utils/queen.sh +2 -4
- package/.aether/utils/state-api.sh +25 -4
- package/.aether/utils/swarm.sh +1 -1
- package/.aether/utils/worktree.sh +189 -0
- package/CHANGELOG.md +26 -0
- package/README.md +161 -161
- package/bin/cli.js +103 -61
- package/bin/lib/banner.js +14 -0
- package/bin/lib/init.js +8 -7
- package/bin/lib/interactive-setup.js +251 -0
- package/bin/npx-entry.js +21 -0
- package/bin/npx-install.js +9 -167
- package/bin/validate-package.sh +23 -0
- package/package.json +2 -2
- package/.aether/docs/plans/pheromone-display-plan.md +0 -257
- package/.aether/schemas/example-prompt-builder.xml +0 -234
- package/.aether/scripts/incident-test-add.sh +0 -47
- package/.aether/scripts/weekly-audit.sh +0 -79
package/README.md
CHANGED
|
@@ -1,59 +1,54 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<br>
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
<picture>
|
|
6
|
+
<source media="(prefers-color-scheme: dark)" srcset="./AetherLogo.png" />
|
|
7
|
+
<source media="(prefers-color-scheme: light)" srcset="./AetherLogo.png" />
|
|
8
|
+
<img src="./AetherLogo.png" alt="Aether" width="240" />
|
|
9
|
+
</picture>
|
|
6
10
|
|
|
7
|
-
|
|
8
|
-
[](https://www.npmjs.com/package/aether-colony)
|
|
9
|
-
[](LICENSE)
|
|
10
|
-
[](https://github.com/calcosmic/Aether/stargazers)
|
|
11
|
-
[](https://github.com/sponsors/calcosmic)
|
|
11
|
+
<br>
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
1,000+ weekly installs.
|
|
13
|
+
# Aether
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
### Artificial Ecology for Thought and Emergent Reasoning
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
<br>
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
npm
|
|
22
|
-
|
|
19
|
+
[](https://www.npmjs.com/package/aether-colony)
|
|
20
|
+
[](https://www.npmjs.com/package/aether-colony)
|
|
21
|
+
[](LICENSE)
|
|
22
|
+
[](https://github.com/calcosmic/Aether/stargazers)
|
|
23
|
+
[](https://github.com/sponsors/calcosmic)
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
<br>
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
Multi-agent AI development for **Claude Code** and **OpenCode**.
|
|
28
|
+
<br>
|
|
29
|
+
Spawn 24 specialists that self-organize around your goal using pheromone signals.
|
|
30
|
+
|
|
31
|
+
<br>
|
|
29
32
|
|
|
30
33
|
```
|
|
31
|
-
|
|
32
|
-
│
|
|
33
|
-
│ set the goal, steer with pheromone signals
|
|
34
|
-
▼
|
|
35
|
-
┌─────────────────────────────────────────┐
|
|
36
|
-
│ Colony self-organizes │
|
|
37
|
-
│ │
|
|
38
|
-
│ 🔨 Builders write code (TDD) │
|
|
39
|
-
│ 👁️ Watchers verify & test │
|
|
40
|
-
│ 🔍 Scouts research first │
|
|
41
|
-
│ 🐛 Trackers investigate bugs │
|
|
42
|
-
│ 🗺️ Colonizers explore codebases │
|
|
43
|
-
│ 📋 Route-setters plan phases │
|
|
44
|
-
│ 🏺 Archaeologists excavate git history │
|
|
45
|
-
│ 🎲 Chaos Ants resilience testing │
|
|
46
|
-
│ 📚 Keepers preserve knowledge │
|
|
47
|
-
│ 🔮 Oracle deep research │
|
|
48
|
-
│ ...and 24 specialists total │
|
|
49
|
-
└─────────────────────────────────────────┘
|
|
34
|
+
$ npx aether-colony
|
|
50
35
|
```
|
|
51
36
|
|
|
52
|
-
|
|
37
|
+
<br>
|
|
38
|
+
|
|
39
|
+
*The whole is greater than the sum of its ants.*
|
|
40
|
+
|
|
41
|
+
<br>
|
|
42
|
+
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## The Problem
|
|
53
48
|
|
|
54
49
|
AI coding assistants work sequentially — one agent does everything: research, code, test, review. When it hits something complex, it either guesses or asks you. There's no specialization, no parallel work, no memory across sessions.
|
|
55
50
|
|
|
56
|
-
##
|
|
51
|
+
## The Solution
|
|
57
52
|
|
|
58
53
|
Aether brings **ant colony intelligence** to AI-assisted development. Instead of one AI doing everything, you get a colony of specialists that self-organize around your goal.
|
|
59
54
|
|
|
@@ -62,196 +57,201 @@ Workers spawn workers dynamically (max depth 3, max 10 per phase). When a Builde
|
|
|
62
57
|
You steer the colony with **pheromone signals**, not micromanagement:
|
|
63
58
|
|
|
64
59
|
```
|
|
65
|
-
/ant:focus "security" #
|
|
66
|
-
/ant:redirect "no jQuery" #
|
|
67
|
-
/ant:feedback "prefer composition" #
|
|
60
|
+
/ant:focus "security" # "Pay attention here"
|
|
61
|
+
/ant:redirect "no jQuery" # "Don't do this" (hard constraint)
|
|
62
|
+
/ant:feedback "prefer composition" # "Adjust based on this"
|
|
68
63
|
```
|
|
69
64
|
|
|
70
|
-
The colony **remembers**. Wisdom, learnings, and instincts persist across sessions. The
|
|
65
|
+
The colony **remembers**. Wisdom, learnings, and instincts persist across sessions. The Hive Brain shares knowledge across colonies on your machine.
|
|
71
66
|
|
|
72
|
-
##
|
|
67
|
+
## Quick Start
|
|
73
68
|
|
|
74
69
|
```bash
|
|
75
|
-
#
|
|
70
|
+
# Interactive setup (recommended)
|
|
71
|
+
npx aether-colony
|
|
72
|
+
|
|
73
|
+
# Or install globally
|
|
76
74
|
npm install -g aether-colony
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Then in your project:
|
|
77
78
|
|
|
78
|
-
|
|
79
|
-
/ant:lay-eggs #
|
|
80
|
-
/ant:init "Build X" #
|
|
81
|
-
/ant:plan #
|
|
82
|
-
/ant:run #
|
|
83
|
-
/ant:seal #
|
|
79
|
+
```
|
|
80
|
+
/ant:lay-eggs # Set up Aether (one-time)
|
|
81
|
+
/ant:init "Build X" # Start a colony with a goal
|
|
82
|
+
/ant:plan # Generate phased roadmap
|
|
83
|
+
/ant:run # Autopilot: build, verify, advance all phases
|
|
84
|
+
/ant:seal # Done — archive the colony
|
|
84
85
|
```
|
|
85
86
|
|
|
86
|
-
|
|
87
|
+
Five commands from zero to shipped.
|
|
87
88
|
|
|
88
|
-
##
|
|
89
|
+
## Key Features
|
|
89
90
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
91
|
+
| | Feature | Description |
|
|
92
|
+
|---|---------|-------------|
|
|
93
|
+
| **Agents** | 24 Specialized Workers | Builders, Watchers, Scouts, Trackers, Archaeologists, Oracle, and more |
|
|
94
|
+
| **Commands** | 45 Slash Commands | Full lifecycle management across Claude Code and OpenCode |
|
|
95
|
+
| **Signals** | Pheromone System | Guide the colony with FOCUS, REDIRECT, and FEEDBACK signals |
|
|
96
|
+
| **Memory** | Colony Wisdom | Learnings and instincts persist across sessions via QUEEN.md |
|
|
97
|
+
| **Sharing** | Hive Brain | Cross-colony wisdom sharing with domain-scoped retrieval |
|
|
98
|
+
| **Skills** | 28 Skills | 10 colony + 18 domain skills inject knowledge into workers |
|
|
99
|
+
| **Autopilot** | `/ant:run` | Automated build-verify-advance loop with smart pause conditions |
|
|
100
|
+
| **Verification** | 6-Phase Gates | Build, types, lint, tests, security, diff gates before advancing |
|
|
101
|
+
| **Quality** | 4 Gate Agents | Security (Gatekeeper), quality (Auditor), coverage (Probe), performance (Measurer) |
|
|
102
|
+
| **Research** | Oracle + Scouts | Deep autonomous research before task decomposition |
|
|
103
|
+
| **State** | Pause/Resume | Full state serialization for context breaks |
|
|
102
104
|
|
|
103
|
-
##
|
|
105
|
+
## Commands
|
|
104
106
|
|
|
105
107
|
<details>
|
|
106
|
-
<summary><strong
|
|
108
|
+
<summary><strong>Core Lifecycle</strong></summary>
|
|
107
109
|
|
|
108
110
|
| Command | Description |
|
|
109
111
|
|---------|-------------|
|
|
110
|
-
| `/ant:lay-eggs` |
|
|
111
|
-
| `/ant:init "goal"` |
|
|
112
|
-
| `/ant:plan` |
|
|
113
|
-
| `/ant:build N` |
|
|
114
|
-
| `/ant:continue` |
|
|
115
|
-
| `/ant:run` |
|
|
116
|
-
| `/ant:patrol` |
|
|
117
|
-
| `/ant:seal` |
|
|
118
|
-
| `/ant:entomb` |
|
|
119
|
-
| `/ant:pause-colony` |
|
|
120
|
-
| `/ant:resume-colony` |
|
|
112
|
+
| `/ant:lay-eggs` | Set up Aether in this repo (one-time) |
|
|
113
|
+
| `/ant:init "goal"` | Initialize colony with mission |
|
|
114
|
+
| `/ant:plan` | Generate phased roadmap with domain research |
|
|
115
|
+
| `/ant:build N` | Execute phase N with worker waves |
|
|
116
|
+
| `/ant:continue` | 6-phase verification, advance to next phase |
|
|
117
|
+
| `/ant:run` | Autopilot — build, verify, advance automatically |
|
|
118
|
+
| `/ant:patrol` | Pre-seal audit — verify work against plan |
|
|
119
|
+
| `/ant:seal` | Complete and archive colony |
|
|
120
|
+
| `/ant:entomb` | Create chamber from completed colony |
|
|
121
|
+
| `/ant:pause-colony` | Save state for context break |
|
|
122
|
+
| `/ant:resume-colony` | Restore from pause |
|
|
121
123
|
|
|
122
124
|
</details>
|
|
123
125
|
|
|
124
126
|
<details>
|
|
125
|
-
<summary><strong
|
|
127
|
+
<summary><strong>Pheromone Signals</strong></summary>
|
|
126
128
|
|
|
127
129
|
| Command | Description |
|
|
128
130
|
|---------|-------------|
|
|
129
|
-
| `/ant:focus "area"` |
|
|
130
|
-
| `/ant:redirect "pattern"` |
|
|
131
|
-
| `/ant:feedback "note"` |
|
|
132
|
-
| `/ant:pheromones` |
|
|
133
|
-
| `/ant:export-signals` |
|
|
134
|
-
| `/ant:import-signals` |
|
|
131
|
+
| `/ant:focus "area"` | FOCUS — "Pay attention here" |
|
|
132
|
+
| `/ant:redirect "pattern"` | REDIRECT — "Don't do this" (hard constraint) |
|
|
133
|
+
| `/ant:feedback "note"` | FEEDBACK — "Adjust based on this" |
|
|
134
|
+
| `/ant:pheromones` | View active signals |
|
|
135
|
+
| `/ant:export-signals` | Export signals to XML |
|
|
136
|
+
| `/ant:import-signals` | Import signals from XML |
|
|
135
137
|
|
|
136
138
|
</details>
|
|
137
139
|
|
|
138
140
|
<details>
|
|
139
|
-
<summary><strong
|
|
141
|
+
<summary><strong>Research & Analysis</strong></summary>
|
|
140
142
|
|
|
141
143
|
| Command | Description |
|
|
142
144
|
|---------|-------------|
|
|
143
|
-
| `/ant:colonize` |
|
|
144
|
-
| `/ant:oracle "topic"` |
|
|
145
|
-
| `/ant:archaeology <path>` |
|
|
146
|
-
| `/ant:chaos <target>` |
|
|
147
|
-
| `/ant:swarm "problem"` |
|
|
148
|
-
| `/ant:dream` |
|
|
149
|
-
| `/ant:interpret` |
|
|
150
|
-
| `/ant:organize` |
|
|
145
|
+
| `/ant:colonize` | 4 parallel scouts analyze your codebase |
|
|
146
|
+
| `/ant:oracle "topic"` | Deep research with autonomous loop |
|
|
147
|
+
| `/ant:archaeology <path>` | Excavate git history for any file |
|
|
148
|
+
| `/ant:chaos <target>` | Resilience testing, edge case probing |
|
|
149
|
+
| `/ant:swarm "problem"` | 4 parallel scouts for stubborn bugs |
|
|
150
|
+
| `/ant:dream` | Philosophical codebase wanderer |
|
|
151
|
+
| `/ant:interpret` | Grounds dreams in reality |
|
|
152
|
+
| `/ant:organize` | Codebase hygiene report |
|
|
151
153
|
|
|
152
154
|
</details>
|
|
153
155
|
|
|
154
156
|
<details>
|
|
155
|
-
<summary><strong
|
|
157
|
+
<summary><strong>Visibility & Status</strong></summary>
|
|
156
158
|
|
|
157
159
|
| Command | Description |
|
|
158
160
|
|---------|-------------|
|
|
159
|
-
| `/ant:status` |
|
|
160
|
-
| `/ant:memory-details` |
|
|
161
|
-
| `/ant:watch` |
|
|
162
|
-
| `/ant:history` |
|
|
163
|
-
| `/ant:flags` |
|
|
164
|
-
| `/ant:help` |
|
|
161
|
+
| `/ant:status` | Colony overview with memory health |
|
|
162
|
+
| `/ant:memory-details` | Wisdom, pending promotions, recent failures |
|
|
163
|
+
| `/ant:watch` | Real-time swarm display |
|
|
164
|
+
| `/ant:history` | Recent activity log |
|
|
165
|
+
| `/ant:flags` | List blockers and issues |
|
|
166
|
+
| `/ant:help` | Full command reference |
|
|
165
167
|
|
|
166
168
|
</details>
|
|
167
169
|
|
|
168
170
|
<details>
|
|
169
|
-
<summary><strong
|
|
171
|
+
<summary><strong>Coordination & Maintenance</strong></summary>
|
|
170
172
|
|
|
171
173
|
| Command | Description |
|
|
172
174
|
|---------|-------------|
|
|
173
|
-
| `/ant:council` |
|
|
174
|
-
| `/ant:flag "title"` |
|
|
175
|
-
| `/ant:data-clean` |
|
|
176
|
-
| `/ant:preferences` |
|
|
177
|
-
| `/ant:skill-create "topic"` |
|
|
178
|
-
| `/ant:update` |
|
|
175
|
+
| `/ant:council` | Clarify intent via multi-choice questions |
|
|
176
|
+
| `/ant:flag "title"` | Create project-specific flag |
|
|
177
|
+
| `/ant:data-clean` | Remove test artifacts from colony data |
|
|
178
|
+
| `/ant:preferences` | Add or list user preferences |
|
|
179
|
+
| `/ant:skill-create "topic"` | Create custom domain skill |
|
|
180
|
+
| `/ant:update` | Update system files from hub |
|
|
179
181
|
|
|
180
182
|
</details>
|
|
181
183
|
|
|
182
|
-
##
|
|
184
|
+
## The 24 Agents
|
|
183
185
|
|
|
184
186
|
| Tier | Agent | Role |
|
|
185
187
|
|------|-------|------|
|
|
186
|
-
|
|
|
187
|
-
|
|
|
188
|
-
|
|
|
189
|
-
|
|
|
190
|
-
|
|
|
191
|
-
|
|
|
192
|
-
|
|
|
193
|
-
|
|
|
194
|
-
|
|
|
195
|
-
|
|
|
196
|
-
|
|
|
197
|
-
|
|
|
198
|
-
|
|
|
199
|
-
|
|
|
200
|
-
|
|
|
201
|
-
|
|
|
202
|
-
|
|
|
203
|
-
|
|
|
204
|
-
|
|
|
205
|
-
|
|
|
206
|
-
|
|
|
207
|
-
|
|
|
208
|
-
|
|
|
209
|
-
|
|
|
210
|
-
|
|
211
|
-
##
|
|
188
|
+
| **Core** | Builder | Writes code, TDD-first |
|
|
189
|
+
| **Core** | Watcher | Tests, validates, quality gates |
|
|
190
|
+
| **Core** | Scout | Researches, discovers |
|
|
191
|
+
| **Orchestration** | Queen | Orchestrates phases, spawns workers |
|
|
192
|
+
| **Orchestration** | Route-Setter | Plans phases, breaks down goals |
|
|
193
|
+
| **Orchestration** | Architect | Architecture design |
|
|
194
|
+
| **Surveyor** | surveyor-nest | Maps directory structure |
|
|
195
|
+
| **Surveyor** | surveyor-disciplines | Documents conventions |
|
|
196
|
+
| **Surveyor** | surveyor-pathogens | Identifies tech debt |
|
|
197
|
+
| **Surveyor** | surveyor-provisions | Maps dependencies |
|
|
198
|
+
| **Specialist** | Keeper | Preserves knowledge |
|
|
199
|
+
| **Specialist** | Tracker | Investigates bugs |
|
|
200
|
+
| **Specialist** | Probe | Coverage analysis |
|
|
201
|
+
| **Specialist** | Weaver | Refactoring specialist |
|
|
202
|
+
| **Specialist** | Auditor | Quality gate |
|
|
203
|
+
| **Niche** | Chaos | Resilience testing |
|
|
204
|
+
| **Niche** | Archaeologist | Excavates git history |
|
|
205
|
+
| **Niche** | Gatekeeper | Security gate |
|
|
206
|
+
| **Niche** | Includer | Accessibility audits |
|
|
207
|
+
| **Niche** | Measurer | Performance analysis |
|
|
208
|
+
| **Niche** | Sage | Wisdom synthesis |
|
|
209
|
+
| **Niche** | Oracle | Deep research |
|
|
210
|
+
| **Niche** | Ambassador | External integrations |
|
|
211
|
+
| **Niche** | Chronicler | Documentation |
|
|
212
|
+
|
|
213
|
+
## Architecture
|
|
212
214
|
|
|
213
215
|
```
|
|
214
|
-
.aether/
|
|
215
|
-
├── aether-utils.sh
|
|
216
|
-
├── utils/
|
|
217
|
-
├── skills/
|
|
218
|
-
├── commands/
|
|
219
|
-
├── exchange/
|
|
220
|
-
├── docs/
|
|
221
|
-
├── templates/
|
|
222
|
-
└── data/
|
|
223
|
-
|
|
224
|
-
~/.aether/
|
|
225
|
-
├── QUEEN.md
|
|
226
|
-
├── hive/wisdom.json
|
|
227
|
-
└── registry.json
|
|
216
|
+
.aether/ Colony files (repo-local)
|
|
217
|
+
├── aether-utils.sh Dispatcher (~5,500 lines, ~130+ subcommands)
|
|
218
|
+
├── utils/ 35 modular scripts
|
|
219
|
+
├── skills/ 28 skills (10 colony + 18 domain)
|
|
220
|
+
├── commands/ 45 YAML command sources
|
|
221
|
+
├── exchange/ XML exchange modules
|
|
222
|
+
├── docs/ Documentation
|
|
223
|
+
├── templates/ 12 templates
|
|
224
|
+
└── data/ Colony state (local only)
|
|
225
|
+
|
|
226
|
+
~/.aether/ Hub (cross-colony, user-level)
|
|
227
|
+
├── QUEEN.md Wisdom + preferences
|
|
228
|
+
├── hive/wisdom.json Cross-colony wisdom (200 cap)
|
|
229
|
+
└── registry.json All registered colonies
|
|
228
230
|
```
|
|
229
231
|
|
|
230
|
-
##
|
|
232
|
+
## Works With
|
|
231
233
|
|
|
232
|
-
- **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** —
|
|
233
|
-
- **[OpenCode](https://github.com/opencode-ai/opencode)** —
|
|
234
|
+
- **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** — 45 slash commands + 24 agent definitions
|
|
235
|
+
- **[OpenCode](https://github.com/opencode-ai/opencode)** — 45 slash commands + agent definitions
|
|
234
236
|
|
|
235
|
-
##
|
|
237
|
+
## Support
|
|
236
238
|
|
|
237
|
-
If Aether has been useful to you
|
|
239
|
+
If Aether has been useful to you:
|
|
238
240
|
|
|
239
|
-
**[Sponsor on GitHub](https://github.com/sponsors/calcosmic)**
|
|
241
|
+
**[Sponsor on GitHub](https://github.com/sponsors/calcosmic)**
|
|
240
242
|
|
|
241
243
|
<details>
|
|
242
|
-
<summary
|
|
244
|
+
<summary>Crypto</summary>
|
|
243
245
|
|
|
244
246
|
| Network | Address |
|
|
245
247
|
|---------|---------|
|
|
246
|
-
| **ETH**
|
|
247
|
-
| **SOL**
|
|
248
|
+
| **ETH** | `0xE7F8C9BE190c207D49DF01b82747cf7B6Bd1c809` |
|
|
249
|
+
| **SOL** | `6DVTdoZvvi9siUpgmRJZxk5Kqho8TZiN2ZzyVUVC9gX8` |
|
|
248
250
|
|
|
249
251
|
</details>
|
|
250
252
|
|
|
251
253
|
[PayPal](https://www.paypal.com/ncp/payment/RENG7ZMW5F59L) · [Buy Me a Coffee](https://buymeacoffee.com/music5y)
|
|
252
254
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
## 📄 License
|
|
255
|
+
## License
|
|
256
256
|
|
|
257
257
|
MIT
|
package/bin/cli.js
CHANGED
|
@@ -1313,79 +1313,111 @@ program.on('option:quiet', () => {
|
|
|
1313
1313
|
globalQuiet = true;
|
|
1314
1314
|
});
|
|
1315
1315
|
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
log(` Commands: ${result.copied} files -> ${COMMANDS_DEST}`);
|
|
1330
|
-
if (result.removed.length > 0) {
|
|
1331
|
-
log(` Commands: removed ${result.removed.length} stale files`);
|
|
1332
|
-
for (const f of result.removed) log(` - ${f}`);
|
|
1333
|
-
}
|
|
1334
|
-
} else {
|
|
1335
|
-
console.error(' Commands source not found. Skipping.');
|
|
1336
|
-
}
|
|
1337
|
-
} else {
|
|
1338
|
-
const result = syncDirWithCleanup(COMMANDS_SRC, COMMANDS_DEST);
|
|
1316
|
+
/**
|
|
1317
|
+
* Perform a global installation of commands, agents, and hub setup.
|
|
1318
|
+
* Extracted so it can be called from the interactive installer.
|
|
1319
|
+
*/
|
|
1320
|
+
async function performGlobalInstall() {
|
|
1321
|
+
log(c.header(`aether-colony v${VERSION} — installing...`));
|
|
1322
|
+
|
|
1323
|
+
// Sync commands to ~/.claude/commands/ant/ (with orphan cleanup)
|
|
1324
|
+
if (!fs.existsSync(COMMANDS_SRC)) {
|
|
1325
|
+
// Running from source repo — commands are in .claude/commands/ant/
|
|
1326
|
+
const repoCommands = path.join(PACKAGE_DIR, '.claude', 'commands', 'ant');
|
|
1327
|
+
if (fs.existsSync(repoCommands)) {
|
|
1328
|
+
const result = syncDirWithCleanup(repoCommands, COMMANDS_DEST);
|
|
1339
1329
|
log(` Commands: ${result.copied} files -> ${COMMANDS_DEST}`);
|
|
1340
1330
|
if (result.removed.length > 0) {
|
|
1341
1331
|
log(` Commands: removed ${result.removed.length} stale files`);
|
|
1342
1332
|
for (const f of result.removed) log(` - ${f}`);
|
|
1343
1333
|
}
|
|
1334
|
+
} else {
|
|
1335
|
+
console.error(' Commands source not found. Skipping.');
|
|
1336
|
+
}
|
|
1337
|
+
} else {
|
|
1338
|
+
const result = syncDirWithCleanup(COMMANDS_SRC, COMMANDS_DEST);
|
|
1339
|
+
log(` Commands: ${result.copied} files -> ${COMMANDS_DEST}`);
|
|
1340
|
+
if (result.removed.length > 0) {
|
|
1341
|
+
log(` Commands: removed ${result.removed.length} stale files`);
|
|
1342
|
+
for (const f of result.removed) log(` - ${f}`);
|
|
1344
1343
|
}
|
|
1344
|
+
}
|
|
1345
1345
|
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
}
|
|
1346
|
+
// Sync agents to ~/.claude/agents/ant/ (with orphan cleanup)
|
|
1347
|
+
const repoAgents = path.join(PACKAGE_DIR, '.claude', 'agents', 'ant');
|
|
1348
|
+
if (fs.existsSync(repoAgents)) {
|
|
1349
|
+
const result = syncDirWithCleanup(repoAgents, AGENTS_DEST);
|
|
1350
|
+
log(` Agents (claude): ${result.copied} files -> ${AGENTS_DEST}`);
|
|
1351
|
+
if (result.removed.length > 0) {
|
|
1352
|
+
log(` Agents (claude): removed ${result.removed.length} stale files`);
|
|
1353
|
+
for (const f of result.removed) log(` - ${f}`);
|
|
1355
1354
|
}
|
|
1355
|
+
}
|
|
1356
1356
|
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
}
|
|
1357
|
+
// Sync OpenCode commands to ~/.opencode/command/ (with orphan cleanup)
|
|
1358
|
+
const opencodeCmdsSrc = path.join(PACKAGE_DIR, '.opencode', 'commands', 'ant');
|
|
1359
|
+
if (fs.existsSync(opencodeCmdsSrc)) {
|
|
1360
|
+
const result = syncDirWithCleanup(opencodeCmdsSrc, OPENCODE_COMMANDS_DEST);
|
|
1361
|
+
log(` Commands (opencode): ${result.copied} files -> ${OPENCODE_COMMANDS_DEST}`);
|
|
1362
|
+
if (result.removed.length > 0) {
|
|
1363
|
+
log(` Commands (opencode): removed ${result.removed.length} stale files`);
|
|
1364
|
+
for (const f of result.removed) log(` - ${f}`);
|
|
1366
1365
|
}
|
|
1366
|
+
}
|
|
1367
1367
|
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
}
|
|
1368
|
+
// Sync OpenCode agents to ~/.opencode/agent/ (with orphan cleanup)
|
|
1369
|
+
const opencodeAgentsSrc = path.join(PACKAGE_DIR, '.opencode', 'agents');
|
|
1370
|
+
if (fs.existsSync(opencodeAgentsSrc)) {
|
|
1371
|
+
const result = syncDirWithCleanup(opencodeAgentsSrc, OPENCODE_AGENTS_DEST);
|
|
1372
|
+
log(` Agents (opencode): ${result.copied} files -> ${OPENCODE_AGENTS_DEST}`);
|
|
1373
|
+
if (result.removed.length > 0) {
|
|
1374
|
+
log(` Agents (opencode): removed ${result.removed.length} stale files`);
|
|
1375
|
+
for (const f of result.removed) log(` - ${f}`);
|
|
1377
1376
|
}
|
|
1377
|
+
}
|
|
1378
1378
|
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1379
|
+
// Set up distribution hub at ~/.aether/
|
|
1380
|
+
log('');
|
|
1381
|
+
log(c.colony('Setting up distribution hub...'));
|
|
1382
|
+
setupHub();
|
|
1383
1383
|
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1384
|
+
log('');
|
|
1385
|
+
log(c.success('Install complete.'));
|
|
1386
|
+
log(` ${c.queen('Claude Code:')} run /ant to get started`);
|
|
1387
|
+
log(` ${c.colony('OpenCode:')} run /ant to get started`);
|
|
1388
|
+
log(` ${c.colony('Hub:')} ${c.dim('~/.aether/')} (for coordinated updates across repos)`);
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
// Install command
|
|
1392
|
+
program
|
|
1393
|
+
.command('install')
|
|
1394
|
+
.description('Install commands and agents to ~/.claude/ and set up distribution hub')
|
|
1395
|
+
.action(wrapCommand(performGlobalInstall));
|
|
1396
|
+
|
|
1397
|
+
// Setup command — set up Aether in the current directory from hub
|
|
1398
|
+
program
|
|
1399
|
+
.command('setup')
|
|
1400
|
+
.description('Set up Aether in the current directory (copies system files from hub)')
|
|
1401
|
+
.option('-f, --force', 'Overwrite existing setup')
|
|
1402
|
+
.action(wrapCommand(async (options) => {
|
|
1403
|
+
if (!fs.existsSync(HUB_VERSION)) {
|
|
1404
|
+
console.error('Aether hub not installed.');
|
|
1405
|
+
console.error('Run "npx aether-colony" or "aether install" to install the hub first.');
|
|
1406
|
+
process.exit(1);
|
|
1407
|
+
}
|
|
1408
|
+
const repoPath = process.cwd();
|
|
1409
|
+
log(c.header('Setting up Aether in this directory...'));
|
|
1410
|
+
const result = await initializeRepo(repoPath, { setupOnly: true });
|
|
1411
|
+
if (result.success) {
|
|
1412
|
+
log('');
|
|
1413
|
+
log(c.success('Aether is ready.'));
|
|
1414
|
+
log(` ${result.filesCopied} system files synced to .aether/`);
|
|
1415
|
+
log('');
|
|
1416
|
+
log(' Next steps:');
|
|
1417
|
+
log(' In Claude Code: /ant:init "your goal"');
|
|
1418
|
+
log(' Or terminal: aether init --goal "your goal"');
|
|
1419
|
+
log('');
|
|
1420
|
+
}
|
|
1389
1421
|
}));
|
|
1390
1422
|
|
|
1391
1423
|
// Update command
|
|
@@ -2172,10 +2204,20 @@ module.exports = {
|
|
|
2172
2204
|
syncDirWithCleanup,
|
|
2173
2205
|
syncSkillsToHub,
|
|
2174
2206
|
listFilesRecursive,
|
|
2175
|
-
cleanEmptyDirs
|
|
2207
|
+
cleanEmptyDirs,
|
|
2208
|
+
performGlobalInstall,
|
|
2209
|
+
run
|
|
2176
2210
|
};
|
|
2177
2211
|
|
|
2212
|
+
/**
|
|
2213
|
+
* Parse CLI arguments. Called automatically when run directly,
|
|
2214
|
+
* or explicitly by npx-entry.js when delegating a subcommand.
|
|
2215
|
+
*/
|
|
2216
|
+
function run() {
|
|
2217
|
+
program.parse();
|
|
2218
|
+
}
|
|
2219
|
+
|
|
2178
2220
|
// Parse command line arguments only when run directly (not when required as a module)
|
|
2179
2221
|
if (require.main === module) {
|
|
2180
|
-
|
|
2222
|
+
run();
|
|
2181
2223
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared ASCII banner for Aether installers.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const BANNER = `
|
|
6
|
+
█████╗ ███████╗████████╗██╗ ██╗███████╗██████╗
|
|
7
|
+
██╔══██╗██╔════╝╚══██╔══╝██║ ██║██╔════╝██╔══██╗
|
|
8
|
+
███████║█████╗ ██║ ███████║█████╗ ██████╔╝
|
|
9
|
+
██╔══██║██╔══╝ ██║ ██╔══██║██╔══╝ ██╔══██╗
|
|
10
|
+
██║ ██║███████╗ ██║ ██║ ██║███████╗██║ ██║
|
|
11
|
+
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
|
|
12
|
+
`;
|
|
13
|
+
|
|
14
|
+
module.exports = { BANNER };
|