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
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
<!-- Generated from .aether/commands/council.yaml - DO NOT EDIT DIRECTLY -->
|
|
2
|
+
---
|
|
3
|
+
name: ant:council
|
|
4
|
+
description: "📜🐜🏛️🐜📜 Convene council for intent clarification via multi-choice questions"
|
|
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**. Convene the council to clarify user intent and inject guidance as pheromones.
|
|
14
|
+
|
|
15
|
+
## Instructions
|
|
16
|
+
|
|
17
|
+
Parse `$normalized_args`:
|
|
18
|
+
- If starts with `--deliberate`: set `deliberate_mode = true`, extract proposal text after `--deliberate`
|
|
19
|
+
- If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
|
|
20
|
+
- Otherwise: set `visual_mode = true`
|
|
21
|
+
|
|
22
|
+
**If `deliberate_mode` is true:** Skip to [Deliberation Mode](#deliberation-mode) and stop after it.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Deliberation Mode
|
|
27
|
+
|
|
28
|
+
When `--deliberate "<proposal>"` is passed, run a structured Advocate/Challenger/Sage deliberation.
|
|
29
|
+
|
|
30
|
+
### Step D1: Check Budget
|
|
31
|
+
|
|
32
|
+
Run using the Bash tool with description "Checking deliberation budget...":
|
|
33
|
+
```bash
|
|
34
|
+
bash .aether/aether-utils.sh council-budget-check
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Parse result. If `allowed` is `false`:
|
|
38
|
+
```
|
|
39
|
+
📜🐜🏛️🐜📜 COUNCIL — BUDGET EXHAUSTED
|
|
40
|
+
|
|
41
|
+
Spawn budget is fully allocated. Complete or close existing deliberations before starting new ones.
|
|
42
|
+
Run /ant:council to review existing deliberations.
|
|
43
|
+
```
|
|
44
|
+
Stop here.
|
|
45
|
+
|
|
46
|
+
### Step D2: Open Deliberation
|
|
47
|
+
|
|
48
|
+
Run using the Bash tool with description "Opening deliberation...":
|
|
49
|
+
```bash
|
|
50
|
+
bash .aether/aether-utils.sh council-deliberate --proposal "<proposal>"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Capture `deliberation_id` from `result.id`.
|
|
54
|
+
|
|
55
|
+
Display:
|
|
56
|
+
```
|
|
57
|
+
📜🐜🏛️🐜📜 COUNCIL DELIBERATION OPENED
|
|
58
|
+
|
|
59
|
+
Proposal: "<proposal>"
|
|
60
|
+
ID: {deliberation_id}
|
|
61
|
+
Budget: {budget} spawns available
|
|
62
|
+
|
|
63
|
+
Convening Advocate, Challenger, and Sage...
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Step D3: Spawn Advocate Scout
|
|
67
|
+
|
|
68
|
+
Spawn an Advocate scout to argue **in favor** of the proposal.
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
Record the argument:
|
|
73
|
+
```bash
|
|
74
|
+
bash .aether/aether-utils.sh council-advocate \
|
|
75
|
+
--deliberation-id "<deliberation_id>" \
|
|
76
|
+
--argument "<advocate_argument>"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Display:
|
|
80
|
+
```
|
|
81
|
+
⚖️ ADVOCATE:
|
|
82
|
+
{advocate_argument}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Step D4: Spawn Challenger Scout
|
|
86
|
+
|
|
87
|
+
Spawn a Challenger scout to argue **against** the proposal.
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
Record the argument:
|
|
92
|
+
```bash
|
|
93
|
+
bash .aether/aether-utils.sh council-challenger \
|
|
94
|
+
--deliberation-id "<deliberation_id>" \
|
|
95
|
+
--argument "<challenger_argument>"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Display:
|
|
99
|
+
```
|
|
100
|
+
⚔️ CHALLENGER:
|
|
101
|
+
{challenger_argument}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Step D5: Spawn Sage Scout
|
|
105
|
+
|
|
106
|
+
Spawn a Sage scout to synthesize both positions and provide a recommendation.
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
Record the sage synthesis:
|
|
111
|
+
```bash
|
|
112
|
+
bash .aether/aether-utils.sh council-sage \
|
|
113
|
+
--deliberation-id "<deliberation_id>" \
|
|
114
|
+
--synthesis "<synthesis>" \
|
|
115
|
+
--recommendation "<recommendation>"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Step D6: Display Result
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
📜🐜🏛️🐜📜 COUNCIL DELIBERATION COMPLETE
|
|
122
|
+
|
|
123
|
+
Proposal: "<proposal>"
|
|
124
|
+
|
|
125
|
+
⚖️ Advocate:
|
|
126
|
+
{advocate_argument}
|
|
127
|
+
|
|
128
|
+
⚔️ Challenger:
|
|
129
|
+
{challenger_argument}
|
|
130
|
+
|
|
131
|
+
🧙 Sage Synthesis:
|
|
132
|
+
{synthesis}
|
|
133
|
+
|
|
134
|
+
Recommendation: {recommendation}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
If recommendation is `adopt` or `adopt-with-conditions`:
|
|
138
|
+
```
|
|
139
|
+
✅ Council recommends proceeding.
|
|
140
|
+
Run /ant:focus "<proposal summary>" to inject guidance for the colony.
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
If recommendation is `reject`:
|
|
144
|
+
```
|
|
145
|
+
❌ Council recommends against this proposal.
|
|
146
|
+
Run /ant:redirect "<proposal summary>" if you want to make this a hard constraint.
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
If recommendation is `defer`:
|
|
150
|
+
```
|
|
151
|
+
⏸️ Council recommends deferring this decision.
|
|
152
|
+
Return when more context is available.
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
### Step 1: Read Current State
|
|
160
|
+
|
|
161
|
+
Read `.aether/data/COLONY_STATE.json`.
|
|
162
|
+
|
|
163
|
+
If file doesn't exist or `goal` is null:
|
|
164
|
+
```
|
|
165
|
+
📜🐜🏛️🐜📜 COUNCIL
|
|
166
|
+
|
|
167
|
+
No colony initialized. Run /ant:init first.
|
|
168
|
+
```
|
|
169
|
+
Stop here.
|
|
170
|
+
|
|
171
|
+
If `milestone` == `"Crowned Anthill"`:
|
|
172
|
+
```
|
|
173
|
+
This colony has been sealed. Start a new colony with /ant:init "new goal".
|
|
174
|
+
```
|
|
175
|
+
Stop here.
|
|
176
|
+
|
|
177
|
+
Capture the current state for context:
|
|
178
|
+
- `prior_state` = state field value (READY, EXECUTING, PLANNING, etc.)
|
|
179
|
+
- `current_phase` = current_phase field value
|
|
180
|
+
- `goal` = goal field value
|
|
181
|
+
|
|
182
|
+
### Step 2: Display Council Header
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
📜🐜🏛️🐜📜 ═══════════════════════════════════════════════
|
|
188
|
+
A N T C O U N C I L
|
|
189
|
+
═══════════════════════════════════════════════ 📜🐜🏛️🐜📜
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
👑 Queen convenes the council for guidance
|
|
193
|
+
|
|
194
|
+
Colony Goal: "{goal}"
|
|
195
|
+
Current State: {prior_state}
|
|
196
|
+
Phase: {current_phase}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
If `prior_state` is `EXECUTING`:
|
|
200
|
+
```
|
|
201
|
+
⚡ Note: Build in progress. New guidance will apply to future work.
|
|
202
|
+
Current workers continue with existing constraints.
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Step 3: Present Category Menu
|
|
206
|
+
|
|
207
|
+
Use the **AskUserQuestion** tool to ask:
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
question: "What would you like to clarify with the council?"
|
|
211
|
+
header: "Topic"
|
|
212
|
+
options:
|
|
213
|
+
- label: "Project Direction"
|
|
214
|
+
description: "Clarify project type, architecture, or tech stack choices"
|
|
215
|
+
- label: "Quality Priorities"
|
|
216
|
+
description: "Define tradeoffs: speed vs robustness vs simplicity"
|
|
217
|
+
- label: "Constraints & Boundaries"
|
|
218
|
+
description: "Set rules about what to avoid or require"
|
|
219
|
+
- label: "Custom Topic"
|
|
220
|
+
description: "Describe something specific you want to discuss"
|
|
221
|
+
multiSelect: false
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Wait for user response.
|
|
225
|
+
|
|
226
|
+
### Step 4: Drill Down Based on Selection
|
|
227
|
+
|
|
228
|
+
Based on the user's selection, ask follow-up questions:
|
|
229
|
+
|
|
230
|
+
**If "Project Direction":**
|
|
231
|
+
```
|
|
232
|
+
question: "What aspect of project direction needs clarification?"
|
|
233
|
+
header: "Direction"
|
|
234
|
+
options:
|
|
235
|
+
- label: "Architecture Pattern"
|
|
236
|
+
description: "Monolith vs microservices, MVC vs functional, etc."
|
|
237
|
+
- label: "Tech Stack"
|
|
238
|
+
description: "Framework, database, or library choices"
|
|
239
|
+
- label: "Code Style"
|
|
240
|
+
description: "Naming conventions, file organization, patterns"
|
|
241
|
+
- label: "Testing Approach"
|
|
242
|
+
description: "TDD, integration-first, coverage requirements"
|
|
243
|
+
multiSelect: true
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**If "Quality Priorities":**
|
|
247
|
+
```
|
|
248
|
+
question: "What's most important for this project?"
|
|
249
|
+
header: "Priority"
|
|
250
|
+
options:
|
|
251
|
+
- label: "Speed of Development"
|
|
252
|
+
description: "Get it working fast, iterate later"
|
|
253
|
+
- label: "Robustness"
|
|
254
|
+
description: "Handle edge cases, thorough error handling"
|
|
255
|
+
- label: "Simplicity"
|
|
256
|
+
description: "Minimal code, easy to understand and maintain"
|
|
257
|
+
- label: "Performance"
|
|
258
|
+
description: "Optimize for speed and efficiency"
|
|
259
|
+
multiSelect: true
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**If "Constraints & Boundaries":**
|
|
263
|
+
```
|
|
264
|
+
question: "What constraints should the colony follow?"
|
|
265
|
+
header: "Constraints"
|
|
266
|
+
options:
|
|
267
|
+
- label: "Security Requirements"
|
|
268
|
+
description: "Auth patterns, data handling, secrets management"
|
|
269
|
+
- label: "Compatibility"
|
|
270
|
+
description: "Browser support, Node version, API compatibility"
|
|
271
|
+
- label: "Dependencies"
|
|
272
|
+
description: "Prefer/avoid certain libraries or frameworks"
|
|
273
|
+
- label: "Patterns to Avoid"
|
|
274
|
+
description: "Anti-patterns, deprecated approaches"
|
|
275
|
+
multiSelect: true
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
**If "Custom Topic":**
|
|
279
|
+
```
|
|
280
|
+
question: "Describe what you want to clarify:"
|
|
281
|
+
header: "Custom"
|
|
282
|
+
options:
|
|
283
|
+
- label: "Type your topic below"
|
|
284
|
+
description: "Use the 'Other' option to enter your specific topic"
|
|
285
|
+
multiSelect: false
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Wait for user response. Based on answers, ask 1-2 more specific follow-up questions to get actionable guidance.
|
|
289
|
+
|
|
290
|
+
### Step 5: Translate Answers to Pheromones
|
|
291
|
+
|
|
292
|
+
Based on all gathered answers, determine which pheromones to inject:
|
|
293
|
+
|
|
294
|
+
**FOCUS signals** (areas to emphasize):
|
|
295
|
+
- Architecture choices → FOCUS on that pattern
|
|
296
|
+
- Quality priorities → FOCUS on that approach
|
|
297
|
+
- Specific requirements → FOCUS on those areas
|
|
298
|
+
|
|
299
|
+
**REDIRECT signals** (patterns to avoid):
|
|
300
|
+
- Patterns to avoid → REDIRECT away
|
|
301
|
+
- Incompatible approaches → REDIRECT away
|
|
302
|
+
- Security concerns → REDIRECT away from risky patterns
|
|
303
|
+
|
|
304
|
+
**FEEDBACK signals** (guidance to remember):
|
|
305
|
+
- Style preferences → FEEDBACK as instinct
|
|
306
|
+
- General guidance → FEEDBACK for colony memory
|
|
307
|
+
|
|
308
|
+
### Step 6: Inject Pheromones
|
|
309
|
+
|
|
310
|
+
Read `.aether/data/constraints.json`. Create if doesn't exist:
|
|
311
|
+
```json
|
|
312
|
+
{"version": "1.0", "focus": [], "constraints": []}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
**For each FOCUS area identified:**
|
|
316
|
+
- Check for duplicates (case-insensitive match in existing focus array)
|
|
317
|
+
- If not duplicate, append to `focus` array
|
|
318
|
+
- Keep max 5 entries (remove oldest if exceeded)
|
|
319
|
+
|
|
320
|
+
**For each REDIRECT pattern identified:**
|
|
321
|
+
- Generate ID: `c_<unix_timestamp_ms>`
|
|
322
|
+
- Append to `constraints` array:
|
|
323
|
+
```json
|
|
324
|
+
{
|
|
325
|
+
"id": "<generated_id>",
|
|
326
|
+
"type": "AVOID",
|
|
327
|
+
"content": "<pattern to avoid>",
|
|
328
|
+
"source": "council:redirect",
|
|
329
|
+
"created_at": "<ISO-8601 timestamp>"
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
- Keep max 10 constraints (remove oldest if exceeded)
|
|
333
|
+
|
|
334
|
+
Write constraints.json.
|
|
335
|
+
|
|
336
|
+
**For each FEEDBACK identified:**
|
|
337
|
+
Read `.aether/data/COLONY_STATE.json`.
|
|
338
|
+
|
|
339
|
+
Append to `signals` array:
|
|
340
|
+
```json
|
|
341
|
+
{
|
|
342
|
+
"id": "feedback_<timestamp_ms>",
|
|
343
|
+
"type": "FEEDBACK",
|
|
344
|
+
"content": "<feedback message>",
|
|
345
|
+
"priority": "low",
|
|
346
|
+
"source": "council:feedback",
|
|
347
|
+
"created_at": "<ISO-8601>",
|
|
348
|
+
"expires_at": "phase_end"
|
|
349
|
+
}
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
Create instinct in `memory.instincts`:
|
|
353
|
+
```json
|
|
354
|
+
{
|
|
355
|
+
"id": "instinct_<timestamp>",
|
|
356
|
+
"trigger": "<inferred from context>",
|
|
357
|
+
"action": "<the guidance>",
|
|
358
|
+
"confidence": 0.7,
|
|
359
|
+
"domain": "<inferred: testing|architecture|code-style|debugging|workflow>",
|
|
360
|
+
"source": "council:feedback",
|
|
361
|
+
"evidence": ["Council session guidance"],
|
|
362
|
+
"created_at": "<ISO-8601>",
|
|
363
|
+
"last_applied": null,
|
|
364
|
+
"applications": 0,
|
|
365
|
+
"successes": 0
|
|
366
|
+
}
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
Keep max 30 instincts (remove lowest confidence if exceeded).
|
|
370
|
+
|
|
371
|
+
Write COLONY_STATE.json.
|
|
372
|
+
|
|
373
|
+
### Step 7: Log Council Event
|
|
374
|
+
|
|
375
|
+
Append to COLONY_STATE.json `events` array:
|
|
376
|
+
```
|
|
377
|
+
<ISO-8601>|council_session|council|Council convened: <brief summary of topics discussed>
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
Keep max 100 events.
|
|
381
|
+
|
|
382
|
+
### Step 8: Display Summary
|
|
383
|
+
|
|
384
|
+
```
|
|
385
|
+
📜🐜🏛️🐜📜 COUNCIL ADJOURNED
|
|
386
|
+
|
|
387
|
+
Pheromones Injected:
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
For each FOCUS added:
|
|
391
|
+
```
|
|
392
|
+
🎯 FOCUS: "{content}"
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
For each REDIRECT added:
|
|
396
|
+
```
|
|
397
|
+
🚫 REDIRECT: "{content}"
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
For each FEEDBACK added:
|
|
401
|
+
```
|
|
402
|
+
💬 FEEDBACK: "{content}"
|
|
403
|
+
🧠 Instinct: [{confidence}] {domain}: {action summary}
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
If no pheromones were injected:
|
|
407
|
+
```
|
|
408
|
+
(No new constraints needed based on discussion)
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
Then:
|
|
412
|
+
```
|
|
413
|
+
🐜 Colony guidance updated. Resuming {prior_state} state.
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
If `prior_state` was EXECUTING:
|
|
417
|
+
```
|
|
418
|
+
⚡ Active workers will complete with prior constraints.
|
|
419
|
+
New spawns will use updated guidance.
|
|
420
|
+
|
|
421
|
+
/ant:status 📊 View current progress
|
|
422
|
+
/ant:continue ⏭️ Check for phase completion
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
If `prior_state` was READY:
|
|
426
|
+
```
|
|
427
|
+
/ant:plan 📋 Generate or refine plan
|
|
428
|
+
/ant:build 🔨 Start building a phase
|
|
429
|
+
/ant:status 📊 View colony status
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
If `prior_state` was PLANNING:
|
|
433
|
+
```
|
|
434
|
+
Planning will continue with new guidance.
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!-- Generated from .aether/commands/data-clean.yaml - DO NOT EDIT DIRECTLY -->
|
|
2
|
+
---
|
|
3
|
+
name: ant:data-clean
|
|
4
|
+
description: "Scan and remove test artifacts from colony data files"
|
|
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**. Run the data cleaner to scan for and remove test/synthetic artifacts from colony data files.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
> **Note:** Arguments are unused. This command always scans all data files.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## Instructions
|
|
21
|
+
|
|
22
|
+
### Step 1: Scan
|
|
23
|
+
|
|
24
|
+
Run using the Bash tool with description "Scanning colony data for test artifacts...":
|
|
25
|
+
```bash
|
|
26
|
+
bash .aether/aether-utils.sh data-clean --dry-run
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Display the output to the user. This shows artifact counts per data file without modifying anything.
|
|
30
|
+
|
|
31
|
+
### Step 2: Decision Gate
|
|
32
|
+
|
|
33
|
+
Parse the scan output for "Total artifacts: N".
|
|
34
|
+
|
|
35
|
+
**If total is 0:**
|
|
36
|
+
Display:
|
|
37
|
+
```
|
|
38
|
+
Colony data is clean. No artifacts found.
|
|
39
|
+
```
|
|
40
|
+
Skip to Step 5.
|
|
41
|
+
|
|
42
|
+
**If total is greater than 0:**
|
|
43
|
+
Ask the user:
|
|
44
|
+
```
|
|
45
|
+
Found {N} test artifacts across colony data files.
|
|
46
|
+
Remove these artifacts? (yes/no)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
If user says no, display "No changes made." and skip to Step 5.
|
|
50
|
+
|
|
51
|
+
### Step 3: Clean
|
|
52
|
+
|
|
53
|
+
If user confirmed, run using the Bash tool with description "Removing test artifacts...":
|
|
54
|
+
```bash
|
|
55
|
+
bash .aether/aether-utils.sh data-clean --confirm
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Step 4: Summary
|
|
59
|
+
|
|
60
|
+
Display the cleanup results showing what was removed from each file.
|
|
61
|
+
|
|
62
|
+
For example:
|
|
63
|
+
```
|
|
64
|
+
Data Clean Complete
|
|
65
|
+
===================
|
|
66
|
+
Removed {total} artifacts:
|
|
67
|
+
- pheromones.json: {N} test signals
|
|
68
|
+
- QUEEN.md: {N} test entries
|
|
69
|
+
- learning-observations.json: {N} test observations
|
|
70
|
+
- midden.json: {N} test entries
|
|
71
|
+
- spawn-tree.txt: {N} test worker lines
|
|
72
|
+
- constraints.json: {N} test focus entries
|
|
73
|
+
|
|
74
|
+
Run /ant:status to verify colony state.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
|