aether-colony 3.1.16 → 5.0.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/{runtime → .aether}/CONTEXT.md +1 -1
- package/{runtime → .aether}/aether-utils.sh +2087 -142
- package/.aether/docs/QUEEN-SYSTEM.md +211 -0
- package/.aether/docs/QUEEN.md +84 -0
- package/.aether/docs/README.md +68 -0
- package/.aether/docs/caste-system.md +48 -0
- package/{runtime → .aether/docs/disciplines}/DISCIPLINES.md +8 -8
- package/.aether/docs/error-codes.md +268 -0
- package/{runtime → .aether}/docs/known-issues.md +42 -26
- package/.aether/docs/queen-commands.md +97 -0
- package/.aether/exchange/colony-registry.xml +11 -0
- package/{runtime → .aether}/exchange/pheromone-xml.sh +2 -1
- package/.aether/exchange/pheromones.xml +87 -0
- package/.aether/exchange/queen-wisdom.xml +14 -0
- package/{runtime → .aether}/exchange/registry-xml.sh +7 -3
- package/{runtime → .aether}/exchange/wisdom-xml.sh +11 -4
- package/.aether/rules/aether-colony.md +134 -0
- package/.aether/schemas/example-prompt-builder.xml +234 -0
- package/.aether/templates/colony-state-reset.jq.template +22 -0
- package/.aether/templates/colony-state.template.json +35 -0
- package/.aether/templates/constraints.template.json +9 -0
- package/.aether/templates/crowned-anthill.template.md +36 -0
- package/.aether/templates/handoff-build-error.template.md +30 -0
- package/.aether/templates/handoff-build-success.template.md +39 -0
- package/.aether/templates/handoff.template.md +40 -0
- package/{runtime → .aether}/utils/atomic-write.sh +5 -5
- package/{runtime → .aether}/utils/chamber-compare.sh +23 -10
- package/{runtime → .aether}/utils/chamber-utils.sh +32 -20
- package/{runtime → .aether}/utils/error-handler.sh +13 -1
- package/{runtime → .aether}/utils/file-lock.sh +49 -13
- package/.aether/utils/semantic-cli.sh +413 -0
- package/{runtime → .aether}/utils/xml-compose.sh +7 -1
- package/.aether/utils/xml-convert.sh +273 -0
- package/.aether/utils/xml-query.sh +201 -0
- package/.aether/utils/xml-utils.sh +110 -0
- package/{runtime → .aether}/workers.md +14 -17
- package/.claude/agents/ant/aether-ambassador.md +264 -0
- package/.claude/agents/ant/aether-archaeologist.md +322 -0
- package/.claude/agents/ant/aether-auditor.md +266 -0
- package/.claude/agents/ant/aether-builder.md +187 -0
- package/.claude/agents/ant/aether-chaos.md +268 -0
- package/.claude/agents/ant/aether-chronicler.md +304 -0
- package/.claude/agents/ant/aether-gatekeeper.md +325 -0
- package/.claude/agents/ant/aether-includer.md +373 -0
- package/.claude/agents/ant/aether-keeper.md +271 -0
- package/.claude/agents/ant/aether-measurer.md +317 -0
- package/.claude/agents/ant/aether-probe.md +210 -0
- package/.claude/agents/ant/aether-queen.md +325 -0
- package/.claude/agents/ant/aether-route-setter.md +173 -0
- package/.claude/agents/ant/aether-sage.md +353 -0
- package/.claude/agents/ant/aether-scout.md +142 -0
- package/.claude/agents/ant/aether-surveyor-disciplines.md +416 -0
- package/.claude/agents/ant/aether-surveyor-nest.md +354 -0
- package/.claude/agents/ant/aether-surveyor-pathogens.md +288 -0
- package/.claude/agents/ant/aether-surveyor-provisions.md +359 -0
- package/.claude/agents/ant/aether-tracker.md +265 -0
- package/.claude/agents/ant/aether-watcher.md +244 -0
- package/.claude/agents/ant/aether-weaver.md +247 -0
- package/.claude/commands/ant/archaeology.md +17 -8
- package/.claude/commands/ant/build.md +415 -284
- package/.claude/commands/ant/chaos.md +20 -11
- package/.claude/commands/ant/colonize.md +58 -24
- package/.claude/commands/ant/continue.md +155 -145
- package/.claude/commands/ant/council.md +15 -5
- package/.claude/commands/ant/dream.md +16 -7
- package/.claude/commands/ant/entomb.md +274 -157
- package/.claude/commands/ant/feedback.md +33 -29
- package/.claude/commands/ant/flag.md +18 -10
- package/.claude/commands/ant/flags.md +14 -6
- package/.claude/commands/ant/focus.md +29 -21
- package/.claude/commands/ant/help.md +11 -1
- package/.claude/commands/ant/history.md +10 -0
- package/.claude/commands/ant/init.md +91 -65
- package/.claude/commands/ant/interpret.md +15 -4
- package/.claude/commands/ant/lay-eggs.md +55 -7
- package/.claude/commands/ant/maturity.md +11 -1
- package/.claude/commands/ant/migrate-state.md +14 -2
- package/.claude/commands/ant/oracle.md +23 -15
- package/.claude/commands/ant/organize.md +29 -20
- package/.claude/commands/ant/pause-colony.md +17 -7
- package/.claude/commands/ant/phase.md +17 -8
- package/.claude/commands/ant/plan.md +20 -9
- package/.claude/commands/ant/redirect.md +29 -32
- package/.claude/commands/ant/resume-colony.md +19 -9
- package/.claude/commands/ant/resume.md +272 -96
- package/.claude/commands/ant/seal.md +201 -191
- package/.claude/commands/ant/status.md +71 -32
- package/.claude/commands/ant/swarm.md +26 -44
- package/.claude/commands/ant/tunnels.md +279 -105
- package/.claude/commands/ant/update.md +81 -20
- package/.claude/commands/ant/verify-castes.md +14 -4
- package/.claude/commands/ant/watch.md +13 -12
- package/.opencode/agents/aether-ambassador.md +63 -20
- package/.opencode/agents/aether-archaeologist.md +29 -12
- package/.opencode/agents/aether-auditor.md +51 -18
- package/.opencode/agents/aether-builder.md +69 -19
- package/.opencode/agents/aether-chaos.md +29 -12
- package/.opencode/agents/aether-chronicler.md +60 -18
- package/.opencode/agents/aether-gatekeeper.md +27 -18
- package/.opencode/agents/aether-includer.md +27 -18
- package/.opencode/agents/aether-keeper.md +89 -18
- package/.opencode/agents/aether-measurer.md +27 -18
- package/.opencode/agents/aether-probe.md +60 -18
- package/.opencode/agents/aether-queen.md +172 -24
- package/.opencode/agents/aether-route-setter.md +57 -12
- package/.opencode/agents/aether-sage.md +26 -18
- package/.opencode/agents/aether-scout.md +27 -19
- package/.opencode/agents/aether-surveyor-disciplines.md +53 -1
- package/.opencode/agents/aether-surveyor-nest.md +53 -1
- package/.opencode/agents/aether-surveyor-pathogens.md +51 -1
- package/.opencode/agents/aether-surveyor-provisions.md +53 -1
- package/.opencode/agents/aether-tracker.md +64 -18
- package/.opencode/agents/aether-watcher.md +66 -19
- package/.opencode/agents/aether-weaver.md +61 -18
- package/.opencode/commands/ant/build.md +406 -192
- package/.opencode/commands/ant/continue.md +66 -76
- package/.opencode/commands/ant/entomb.md +106 -45
- package/.opencode/commands/ant/init.md +46 -48
- package/.opencode/commands/ant/organize.md +5 -5
- package/.opencode/commands/ant/resume.md +334 -0
- package/.opencode/commands/ant/seal.md +33 -24
- package/.opencode/commands/ant/status.md +11 -0
- package/.opencode/commands/ant/tunnels.md +149 -0
- package/.opencode/commands/ant/update.md +59 -16
- package/CHANGELOG.md +79 -0
- package/README.md +135 -353
- package/bin/cli.js +243 -122
- package/bin/generate-commands.sh +2 -2
- package/bin/lib/init.js +13 -3
- package/bin/lib/update-transaction.js +119 -117
- package/bin/sync-to-runtime.sh +5 -137
- package/bin/validate-package.sh +84 -0
- package/package.json +9 -6
- package/.opencode/agents/aether-architect.md +0 -66
- package/.opencode/agents/aether-guardian.md +0 -107
- package/.opencode/agents/workers.md +0 -1034
- package/runtime/QUEEN_ANT_ARCHITECTURE.md +0 -402
- package/runtime/data/signatures.json +0 -41
- package/runtime/docs/AETHER-2.0-IMPLEMENTATION-PLAN.md +0 -1343
- package/runtime/docs/AETHER-PHEROMONE-SYSTEM-MASTER-SPEC.md +0 -2642
- package/runtime/docs/PHEROMONE-INJECTION.md +0 -240
- package/runtime/docs/PHEROMONE-INTEGRATION.md +0 -192
- package/runtime/docs/PHEROMONE-SYSTEM-DESIGN.md +0 -426
- package/runtime/docs/README.md +0 -94
- package/runtime/docs/VISUAL-OUTPUT-SPEC.md +0 -219
- package/runtime/docs/biological-reference.md +0 -272
- package/runtime/docs/codebase-review.md +0 -399
- package/runtime/docs/command-sync.md +0 -164
- package/runtime/docs/constraints.md +0 -116
- package/runtime/docs/implementation-learnings.md +0 -89
- package/runtime/docs/namespace.md +0 -148
- package/runtime/docs/pathogen-schema-example.json +0 -36
- package/runtime/docs/pathogen-schema.md +0 -111
- package/runtime/docs/planning-discipline.md +0 -159
- package/runtime/docs/progressive-disclosure.md +0 -184
- package/runtime/lib/queen-utils.sh +0 -729
- package/runtime/planning.md +0 -159
- package/runtime/recover.sh +0 -136
- package/runtime/utils/xml-utils.sh +0 -2196
- package/runtime/workers-new-castes.md +0 -516
- /package/{runtime → .aether/docs/disciplines}/coding-standards.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/debugging.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/learning.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/tdd.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/verification-loop.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/verification.md +0 -0
- /package/{runtime → .aether}/docs/pheromones.md +0 -0
- /package/{runtime → .aether}/model-profiles.yaml +0 -0
- /package/{runtime → .aether}/schemas/aether-types.xsd +0 -0
- /package/{runtime → .aether}/schemas/colony-registry.xsd +0 -0
- /package/{runtime → .aether}/schemas/pheromone.xsd +0 -0
- /package/{runtime → .aether}/schemas/prompt.xsd +0 -0
- /package/{runtime → .aether}/schemas/queen-wisdom.xsd +0 -0
- /package/{runtime → .aether}/schemas/worker-priming.xsd +0 -0
- /package/{runtime → .aether}/templates/QUEEN.md.template +0 -0
- /package/{runtime → .aether}/utils/colorize-log.sh +0 -0
- /package/{runtime → .aether}/utils/queen-to-md.xsl +0 -0
- /package/{runtime → .aether}/utils/spawn-tree.sh +0 -0
- /package/{runtime → .aether}/utils/spawn-with-model.sh +0 -0
- /package/{runtime → .aether}/utils/state-loader.sh +0 -0
- /package/{runtime → .aether}/utils/swarm-display.sh +0 -0
- /package/{runtime → .aether}/utils/watch-spawn-tree.sh +0 -0
- /package/{runtime → .aether}/utils/xml-core.sh +0 -0
|
@@ -11,12 +11,43 @@ Parse `$ARGUMENTS`:
|
|
|
11
11
|
- If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
|
|
12
12
|
- Otherwise: set `visual_mode = true`
|
|
13
13
|
|
|
14
|
+
<failure_modes>
|
|
15
|
+
### Plan File Write Failure
|
|
16
|
+
If writing phase plans to COLONY_STATE.json fails:
|
|
17
|
+
- Do not leave partial plan data in state
|
|
18
|
+
- Report what was successfully written vs. what failed
|
|
19
|
+
- Recovery: user can re-run /ant:lay-eggs to regenerate plans
|
|
20
|
+
|
|
21
|
+
### Goal Parsing Failure
|
|
22
|
+
If the user's goal cannot be parsed into actionable phases:
|
|
23
|
+
- Do not generate placeholder phases
|
|
24
|
+
- Ask user to clarify or simplify the goal
|
|
25
|
+
- Offer examples of well-formed goals
|
|
26
|
+
</failure_modes>
|
|
27
|
+
|
|
28
|
+
<success_criteria>
|
|
29
|
+
Command is complete when:
|
|
30
|
+
- Phase plan is written to COLONY_STATE.json with tasks and success criteria
|
|
31
|
+
- Plan structure is valid (phases have tasks, tasks have descriptions)
|
|
32
|
+
- User sees the plan and can approve or request changes
|
|
33
|
+
</success_criteria>
|
|
34
|
+
|
|
35
|
+
<read_only>
|
|
36
|
+
Do not touch during lay-eggs:
|
|
37
|
+
- .aether/dreams/ (user notes)
|
|
38
|
+
- .aether/chambers/ (archived colonies)
|
|
39
|
+
- Source code files (planning only, no implementation)
|
|
40
|
+
- .env* files
|
|
41
|
+
- .claude/settings.json
|
|
42
|
+
</read_only>
|
|
43
|
+
|
|
14
44
|
### Step 0: Initialize Visual Mode (if enabled)
|
|
15
45
|
|
|
16
|
-
If `visual_mode` is true:
|
|
46
|
+
If `visual_mode` is true, run using the Bash tool with description "Initializing colony display...":
|
|
17
47
|
```bash
|
|
18
|
-
# Generate session ID
|
|
48
|
+
# Generate session ID and persist it for later steps
|
|
19
49
|
layeggs_id="layeggs-$(date +%s)"
|
|
50
|
+
echo "$layeggs_id" > .aether/data/.layeggs_session
|
|
20
51
|
|
|
21
52
|
# Initialize swarm display
|
|
22
53
|
bash .aether/aether-utils.sh swarm-display-init "$layeggs_id"
|
|
@@ -120,21 +151,23 @@ Write `.aether/data/constraints.json`:
|
|
|
120
151
|
|
|
121
152
|
### Step 6: Display Result
|
|
122
153
|
|
|
123
|
-
**If visual_mode is true, render final swarm display
|
|
154
|
+
**If visual_mode is true, render final swarm display** by running using the Bash tool with description "Updating colony display...":
|
|
124
155
|
```bash
|
|
156
|
+
# Read persisted session ID from Step 0
|
|
157
|
+
layeggs_id=$(cat .aether/data/.layeggs_session 2>/dev/null || echo "layeggs-$(date +%s)")
|
|
158
|
+
|
|
125
159
|
bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "completed" "First eggs laid" "Colony" '{"read":3,"grep":0,"edit":2,"bash":1}' 100 "nursery" 100
|
|
126
|
-
bash .aether/aether-utils.sh swarm-display-
|
|
160
|
+
bash .aether/aether-utils.sh swarm-display-text "$layeggs_id"
|
|
127
161
|
```
|
|
128
162
|
|
|
129
163
|
```
|
|
130
|
-
🥚
|
|
164
|
+
🥚 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
131
165
|
F I R S T E G G S L A I D
|
|
132
|
-
|
|
166
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🥚
|
|
133
167
|
|
|
134
168
|
👑 New colony goal:
|
|
135
169
|
"{goal}"
|
|
136
170
|
|
|
137
|
-
📋 Session: {session_id}
|
|
138
171
|
🏆 Milestone: First Mound (v0.1.0)
|
|
139
172
|
|
|
140
173
|
{If inherited knowledge:}
|
|
@@ -151,3 +184,18 @@ bash .aether/aether-utils.sh swarm-display-render "$layeggs_id"
|
|
|
151
184
|
Include edge case handling:
|
|
152
185
|
- If no prior knowledge: omit the inheritance section
|
|
153
186
|
- If prior colony had no phases: allow laying eggs without entombment
|
|
187
|
+
|
|
188
|
+
### Step 7: Next Up
|
|
189
|
+
|
|
190
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
191
|
+
```bash
|
|
192
|
+
if [ -f .aether/data/COLONY_STATE.json ]; then
|
|
193
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json 2>/dev/null || echo "IDLE")
|
|
194
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
|
|
195
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json 2>/dev/null || echo "0")
|
|
196
|
+
else
|
|
197
|
+
state="IDLE"
|
|
198
|
+
current_phase="0"
|
|
199
|
+
total_phases="0"
|
|
200
|
+
fi
|
|
201
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
@@ -9,7 +9,7 @@ You are the **Queen**. Display the colony's maturity journey.
|
|
|
9
9
|
|
|
10
10
|
### Step 1: Detect Current Milestone
|
|
11
11
|
|
|
12
|
-
Run: `bash .aether/aether-utils.sh milestone-detect`
|
|
12
|
+
Run using the Bash tool with description "Detecting colony milestone...": `bash .aether/aether-utils.sh milestone-detect`
|
|
13
13
|
|
|
14
14
|
Parse JSON result to get:
|
|
15
15
|
- `milestone`: Current milestone name (First Mound, Open Chambers, Brood Stable, Ventilated Nest, Sealed Chambers, Crowned Anthill)
|
|
@@ -90,3 +90,13 @@ Colony Statistics:
|
|
|
90
90
|
- If milestone file doesn't exist: Show error "Milestone visualization not found"
|
|
91
91
|
- If COLONY_STATE.json missing: "No colony initialized. Run /ant:init first."
|
|
92
92
|
- If phases_completed is 0: All milestones show as upcoming except First Mound
|
|
93
|
+
|
|
94
|
+
### Step 7: Next Up
|
|
95
|
+
|
|
96
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
97
|
+
```bash
|
|
98
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
99
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
100
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
101
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
102
|
+
```
|
|
@@ -114,9 +114,9 @@ Format the JSON with 2-space indentation for readability.
|
|
|
114
114
|
Output header:
|
|
115
115
|
|
|
116
116
|
```
|
|
117
|
-
🚚🐜📦🐜🚚
|
|
117
|
+
🚚🐜📦🐜🚚 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
118
118
|
S T A T E M I G R A T I O N C O M P L E T E
|
|
119
|
-
|
|
119
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🚚🐜📦🐜🚚
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
Then output a migration summary:
|
|
@@ -151,3 +151,15 @@ All commands now use consolidated state format.
|
|
|
151
151
|
- After v5.1 ships, this command can be removed
|
|
152
152
|
- All 12+ ant commands will be updated to use the new single-file format
|
|
153
153
|
- The backup directory preserves original files for rollback if needed
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Step 7: Next Up
|
|
158
|
+
|
|
159
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
160
|
+
```bash
|
|
161
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
162
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
163
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
164
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
165
|
+
```
|
|
@@ -29,7 +29,7 @@ Parse `$ARGUMENTS` to determine the action:
|
|
|
29
29
|
|
|
30
30
|
### Step 0.5: Initialize Visual Mode (if enabled)
|
|
31
31
|
|
|
32
|
-
If `visual_mode` is true:
|
|
32
|
+
If `visual_mode` is true, run using the Bash tool with description "Initializing oracle display...":
|
|
33
33
|
```bash
|
|
34
34
|
# Generate session ID
|
|
35
35
|
oracle_id="oracle-$(date +%s)"
|
|
@@ -41,9 +41,9 @@ bash .aether/aether-utils.sh swarm-display-update "Oracle" "oracle" "researching
|
|
|
41
41
|
|
|
42
42
|
Display visual header:
|
|
43
43
|
```
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
45
|
+
🔮🐜🧠🐜🔮 O R A C L E — R e s e a r c h M o d e
|
|
46
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
47
47
|
|
|
48
48
|
Oracle peering into the depths...
|
|
49
49
|
```
|
|
@@ -52,7 +52,7 @@ Oracle peering into the depths...
|
|
|
52
52
|
|
|
53
53
|
### Step 0b: Stop Oracle
|
|
54
54
|
|
|
55
|
-
Create the stop signal file:
|
|
55
|
+
Create the stop signal file by running using the Bash tool with description "Stopping oracle research...":
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
58
|
mkdir -p .aether/oracle && touch .aether/oracle/.stop
|
|
@@ -96,7 +96,7 @@ Output:
|
|
|
96
96
|
|
|
97
97
|
```
|
|
98
98
|
🔮🐜 Oracle Status
|
|
99
|
-
|
|
99
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
100
100
|
Topic: {topic from research.json, or "unknown"}
|
|
101
101
|
Confidence: {target_confidence}%
|
|
102
102
|
Iterations: {completed} / {max_iterations}
|
|
@@ -104,7 +104,7 @@ Started: {started_at}
|
|
|
104
104
|
|
|
105
105
|
Progress:
|
|
106
106
|
{last 50 lines of progress.md}
|
|
107
|
-
|
|
107
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
108
108
|
|
|
109
109
|
/ant:oracle stop Halt the loop
|
|
110
110
|
/ant:oracle Start new research
|
|
@@ -121,9 +121,9 @@ This is the setup phase. The Oracle asks questions to configure the research bef
|
|
|
121
121
|
Output the header:
|
|
122
122
|
|
|
123
123
|
```
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
124
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
125
|
+
🔮🐜🧠🐜🔮 O R A C L E A N T — R E S E A R C H W I Z A R D
|
|
126
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
127
127
|
```
|
|
128
128
|
|
|
129
129
|
**If `$ARGUMENTS` is not empty and not a subcommand**, use it as the initial topic suggestion. Otherwise, the topic will be asked in Question 1.
|
|
@@ -201,7 +201,7 @@ Capture session start time:
|
|
|
201
201
|
ORACLE_START=$(date +%s)
|
|
202
202
|
```
|
|
203
203
|
|
|
204
|
-
Check for stale files:
|
|
204
|
+
Check for stale files by running using the Bash tool with description "Checking for stale oracle session...":
|
|
205
205
|
```bash
|
|
206
206
|
stale_check=$(bash .aether/aether-utils.sh session-verify-fresh --command oracle "" "$ORACLE_START")
|
|
207
207
|
has_stale=$(echo "$stale_check" | jq -r '.stale | length')
|
|
@@ -228,7 +228,7 @@ fi
|
|
|
228
228
|
|
|
229
229
|
### Step 2: Configure Research
|
|
230
230
|
|
|
231
|
-
Create the oracle directory structure:
|
|
231
|
+
Create the oracle directory structure by running using the Bash tool with description "Setting up oracle research...":
|
|
232
232
|
|
|
233
233
|
```bash
|
|
234
234
|
mkdir -p .aether/oracle/archive .aether/oracle/discoveries
|
|
@@ -238,7 +238,7 @@ Generate an ISO-8601 UTC timestamp.
|
|
|
238
238
|
|
|
239
239
|
**Archive previous research if it exists:**
|
|
240
240
|
|
|
241
|
-
Check if `.aether/oracle/progress.md` exists. If it does:
|
|
241
|
+
Check if `.aether/oracle/progress.md` exists. If it does, run using the Bash tool with description "Archiving previous research...":
|
|
242
242
|
|
|
243
243
|
```bash
|
|
244
244
|
DATE=$(date +%Y-%m-%d)
|
|
@@ -292,7 +292,7 @@ Use the Write tool to write `.aether/oracle/progress.md`:
|
|
|
292
292
|
|
|
293
293
|
#### Step 2.5: Verify Oracle Files Are Fresh
|
|
294
294
|
|
|
295
|
-
Verify that progress.md and research.json were created successfully:
|
|
295
|
+
Verify that progress.md and research.json were created successfully by running using the Bash tool with description "Verifying oracle files...":
|
|
296
296
|
```bash
|
|
297
297
|
verify_result=$(bash .aether/aether-utils.sh session-verify-fresh --command oracle "" "$ORACLE_START")
|
|
298
298
|
fresh_count=$(echo "$verify_result" | jq -r '.fresh | length')
|
|
@@ -329,7 +329,7 @@ Output the research configuration summary:
|
|
|
329
329
|
|
|
330
330
|
Now launch the loop. Try tmux first, fall back to manual.
|
|
331
331
|
|
|
332
|
-
**Try tmux
|
|
332
|
+
**Try tmux** by running using the Bash tool with description "Launching oracle in tmux...":
|
|
333
333
|
|
|
334
334
|
```bash
|
|
335
335
|
tmux new-session -d -s oracle "cd $(pwd) && bash .aether/oracle/oracle.sh; echo ''; echo '🔮🐜 Oracle loop finished. Press any key to close.'; read -n1" 2>/dev/null && echo "TMUX_OK" || echo "TMUX_FAIL"
|
|
@@ -376,4 +376,12 @@ Stop here.
|
|
|
376
376
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377
377
|
```
|
|
378
378
|
|
|
379
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
380
|
+
```bash
|
|
381
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
382
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
383
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
384
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
385
|
+
```
|
|
386
|
+
|
|
379
387
|
Stop here.
|
|
@@ -44,12 +44,12 @@ If no active signals after filtering:
|
|
|
44
44
|
(no active pheromones)
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
### Step 3: Spawn Archivist (
|
|
47
|
+
### Step 3: Spawn Archivist (Keeper-Ant)
|
|
48
48
|
|
|
49
|
-
Read `.aether/workers.md` and extract the `##
|
|
49
|
+
Read `.aether/workers.md` and extract the `## Keeper` section.
|
|
50
50
|
|
|
51
|
-
Spawn via **Task tool** with `subagent_type="aether-
|
|
52
|
-
# FALLBACK: If "Agent type not found", use general-purpose and inject role: "You are
|
|
51
|
+
Spawn via **Task tool** with `subagent_type="aether-keeper"`:
|
|
52
|
+
# FALLBACK: If "Agent type not found", use general-purpose and inject role: "You are a Keeper Ant - curates knowledge and synthesizes patterns."
|
|
53
53
|
|
|
54
54
|
```
|
|
55
55
|
--- WORKER SPEC ---
|
|
@@ -116,14 +116,14 @@ Check for configuration that may not be connected:
|
|
|
116
116
|
Produce your report in this exact structure:
|
|
117
117
|
|
|
118
118
|
CODEBASE HYGIENE REPORT
|
|
119
|
-
|
|
119
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
120
120
|
|
|
121
121
|
Project: {goal}
|
|
122
122
|
Scanned: {timestamp}
|
|
123
123
|
Confidence threshold: HIGH findings are actionable, MEDIUM/LOW are informational
|
|
124
124
|
|
|
125
125
|
HIGH CONFIDENCE FINDINGS
|
|
126
|
-
|
|
126
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
127
127
|
{For each HIGH confidence finding:}
|
|
128
128
|
[{category}] {description}
|
|
129
129
|
Evidence: {what data/observation supports this}
|
|
@@ -132,7 +132,7 @@ HIGH CONFIDENCE FINDINGS
|
|
|
132
132
|
{If no HIGH findings: "No high-confidence hygiene issues detected."}
|
|
133
133
|
|
|
134
134
|
MEDIUM CONFIDENCE OBSERVATIONS
|
|
135
|
-
|
|
135
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
136
136
|
{For each MEDIUM confidence finding:}
|
|
137
137
|
[{category}] {description}
|
|
138
138
|
Evidence: {what data/observation supports this}
|
|
@@ -141,14 +141,14 @@ MEDIUM CONFIDENCE OBSERVATIONS
|
|
|
141
141
|
{If no MEDIUM findings: "No medium-confidence observations."}
|
|
142
142
|
|
|
143
143
|
LOW CONFIDENCE NOTES
|
|
144
|
-
|
|
144
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
145
145
|
{For each LOW confidence finding:}
|
|
146
146
|
[{category}] {description}
|
|
147
147
|
|
|
148
148
|
{If no LOW findings: "No low-confidence notes."}
|
|
149
149
|
|
|
150
150
|
SUMMARY
|
|
151
|
-
|
|
151
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
152
152
|
High: {count} actionable findings
|
|
153
153
|
Medium: {count} observations
|
|
154
154
|
Low: {count} notes
|
|
@@ -165,23 +165,22 @@ CONSTRAINTS:
|
|
|
165
165
|
|
|
166
166
|
### Step 4: Display Report
|
|
167
167
|
|
|
168
|
-
After the
|
|
168
|
+
After the keeper-ant returns, display header:
|
|
169
169
|
|
|
170
170
|
```
|
|
171
|
-
🧹🐜🏛️🐜🧹
|
|
171
|
+
🧹🐜🏛️🐜🧹 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
172
172
|
C O D E B A S E H Y G I E N E R E P O R T
|
|
173
|
-
|
|
173
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🧹🐜🏛️🐜🧹
|
|
174
174
|
```
|
|
175
175
|
|
|
176
|
-
Then display using Bash tool
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
bash -c 'printf "\
|
|
180
|
-
bash -c 'printf "\
|
|
181
|
-
bash -c 'printf "\e[37m+=====================================================+\e[0m\n\n"'
|
|
176
|
+
Then display using Bash tool with description "Displaying hygiene report header...":
|
|
177
|
+
```bash
|
|
178
|
+
bash -c 'printf "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"'
|
|
179
|
+
bash -c 'printf " C O D E B A S E H Y G I E N E R E P O R T\n"'
|
|
180
|
+
bash -c 'printf "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n"'
|
|
182
181
|
```
|
|
183
182
|
|
|
184
|
-
Then display the
|
|
183
|
+
Then display the keeper-ant's full report verbatim.
|
|
185
184
|
|
|
186
185
|
### Step 5: Persist Report
|
|
187
186
|
|
|
@@ -203,7 +202,7 @@ Next:
|
|
|
203
202
|
|
|
204
203
|
### Step 6: Log Activity
|
|
205
204
|
|
|
206
|
-
Use the Bash tool to run:
|
|
205
|
+
Use the Bash tool with description "Logging hygiene activity..." to run:
|
|
207
206
|
```
|
|
208
207
|
bash .aether/aether-utils.sh activity-log "COMPLETE" "queen" "Hygiene report generated"
|
|
209
208
|
```
|
|
@@ -216,3 +215,13 @@ All state persisted. Safe to /clear context if needed.
|
|
|
216
215
|
Report: .aether/data/hygiene-report.md
|
|
217
216
|
Resume: /ant:resume-colony
|
|
218
217
|
```
|
|
218
|
+
|
|
219
|
+
### Step 7: Next Up
|
|
220
|
+
|
|
221
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
222
|
+
```bash
|
|
223
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
224
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
225
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
226
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
227
|
+
```
|
|
@@ -13,7 +13,7 @@ Parse `$ARGUMENTS`:
|
|
|
13
13
|
|
|
14
14
|
### Step 0: Initialize Visual Mode (if enabled)
|
|
15
15
|
|
|
16
|
-
If `visual_mode` is true:
|
|
16
|
+
If `visual_mode` is true, run using the Bash tool with description "Initializing pause display...":
|
|
17
17
|
```bash
|
|
18
18
|
# Generate session ID
|
|
19
19
|
pause_id="pause-$(date +%s)"
|
|
@@ -178,31 +178,31 @@ Continue to Step 5.
|
|
|
178
178
|
|
|
179
179
|
### Step 4.8: Update Context Document
|
|
180
180
|
|
|
181
|
-
Log this pause activity to `.aether/CONTEXT.md
|
|
181
|
+
Log this pause activity to `.aether/CONTEXT.md` by running using the Bash tool with description "Updating context document...":
|
|
182
182
|
|
|
183
183
|
```bash
|
|
184
184
|
bash .aether/aether-utils.sh context-update activity "pause-colony" "Colony paused — handoff created" "—"
|
|
185
185
|
```
|
|
186
186
|
|
|
187
|
-
Update safe-to-clear status:
|
|
187
|
+
Update safe-to-clear status by running using the Bash tool with description "Marking safe to clear...":
|
|
188
188
|
```bash
|
|
189
189
|
bash .aether/aether-utils.sh context-update safe-to-clear "YES" "Colony paused — safe to /clear, run /ant:resume-colony to continue"
|
|
190
190
|
```
|
|
191
191
|
|
|
192
192
|
### Step 5: Display Confirmation
|
|
193
193
|
|
|
194
|
-
**If visual_mode is true, render final swarm display
|
|
194
|
+
**If visual_mode is true, render final swarm display** by running using the Bash tool with description "Updating pause display...":
|
|
195
195
|
```bash
|
|
196
196
|
bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "completed" "Colony paused" "Colony" '{"read":3,"grep":0,"edit":2,"bash":1}' 100 "fungus_garden" 100
|
|
197
|
-
bash .aether/aether-utils.sh swarm-display-
|
|
197
|
+
bash .aether/aether-utils.sh swarm-display-text "$pause_id"
|
|
198
198
|
```
|
|
199
199
|
|
|
200
200
|
Output header:
|
|
201
201
|
|
|
202
202
|
```
|
|
203
|
-
💾🐜⏸️🐜💾
|
|
203
|
+
💾🐜⏸️🐜💾 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
204
204
|
C O L O N Y P A U S E D
|
|
205
|
-
|
|
205
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 💾🐜⏸️🐜💾
|
|
206
206
|
```
|
|
207
207
|
|
|
208
208
|
Then output:
|
|
@@ -235,3 +235,13 @@ If option 1 selected: proceed to run /ant:resume-colony flow
|
|
|
235
235
|
If option 2 selected: run /ant:lay-eggs flow
|
|
236
236
|
If option 3 selected: display "Run /ant:resume-colony when ready to continue, or /ant:lay-eggs to start fresh"
|
|
237
237
|
```
|
|
238
|
+
|
|
239
|
+
### Step 6: Next Up
|
|
240
|
+
|
|
241
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
242
|
+
```bash
|
|
243
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
244
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
245
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
246
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
247
|
+
```
|
|
@@ -35,9 +35,9 @@ Find the phase by ID in `plan.phases`.
|
|
|
35
35
|
Output this header:
|
|
36
36
|
|
|
37
37
|
```
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
39
|
+
📝🐜📍🐜📝 P H A S E {id} D E T A I L S
|
|
40
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
Then display:
|
|
@@ -55,13 +55,22 @@ Then display:
|
|
|
55
55
|
✅ Success Criteria:
|
|
56
56
|
• <criterion>
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
🐜 Next
|
|
58
|
+
──────────────────────────────────────────────────
|
|
59
|
+
🐜 Next Up
|
|
60
|
+
──────────────────────────────────────────────────
|
|
60
61
|
/ant:build <id> 🔨 Phase <id>: <phase_name>
|
|
61
62
|
/ant:phase <next_id> 📋 Phase <next_id>: <next_phase_name> (only if not last phase)
|
|
62
63
|
/ant:status 📊 Colony status
|
|
63
64
|
```
|
|
64
65
|
|
|
66
|
+
After displaying phase details, generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
67
|
+
```bash
|
|
68
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
69
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
70
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
71
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
72
|
+
```
|
|
73
|
+
|
|
65
74
|
Status icons: `[ ]` pending, `[~]` in_progress, `[✓]` completed
|
|
66
75
|
|
|
67
76
|
### Step 3b: List View
|
|
@@ -69,9 +78,9 @@ Status icons: `[ ]` pending, `[~]` in_progress, `[✓]` completed
|
|
|
69
78
|
Output this header:
|
|
70
79
|
|
|
71
80
|
```
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
81
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
82
|
+
📝🐜📍🐜📝 A L L P H A S E S
|
|
83
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
75
84
|
```
|
|
76
85
|
|
|
77
86
|
Then display all phases as a summary:
|
|
@@ -18,14 +18,13 @@ If `visual_mode` is true:
|
|
|
18
18
|
# Generate session ID
|
|
19
19
|
plan_id="plan-$(date +%s)"
|
|
20
20
|
|
|
21
|
-
# Initialize swarm display
|
|
22
|
-
bash .aether/aether-utils.sh swarm-display-init "$plan_id"
|
|
23
|
-
bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "excavating" "Generating colony plan" "Colony" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 0
|
|
21
|
+
# Initialize swarm display (consolidated)
|
|
22
|
+
bash .aether/aether-utils.sh swarm-display-init "$plan_id" && bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "excavating" "Generating colony plan" "Colony" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 0
|
|
24
23
|
```
|
|
25
24
|
|
|
26
25
|
### Step 0.5: Version Check (Non-blocking)
|
|
27
26
|
|
|
28
|
-
Run using the Bash tool: `bash .aether/aether-utils.sh version-check 2>/dev/null || true`
|
|
27
|
+
Run using the Bash tool with description "Checking colony version...": `bash .aether/aether-utils.sh version-check-cached 2>/dev/null || true`
|
|
29
28
|
|
|
30
29
|
If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
|
|
31
30
|
|
|
@@ -427,6 +426,11 @@ Read current COLONY_STATE.json, then update:
|
|
|
427
426
|
|
|
428
427
|
Write COLONY_STATE.json.
|
|
429
428
|
|
|
429
|
+
Validate the state file:
|
|
430
|
+
```bash
|
|
431
|
+
bash .aether/aether-utils.sh validate-state colony
|
|
432
|
+
```
|
|
433
|
+
|
|
430
434
|
Log: `bash .aether/aether-utils.sh activity-log "PLAN_COMPLETE" "queen" "Plan finalized with {confidence}% confidence"`
|
|
431
435
|
|
|
432
436
|
Update watch-status.txt:
|
|
@@ -451,18 +455,17 @@ bash .aether/aether-utils.sh session-update "/ant:plan" "/ant:build 1" "Plan gen
|
|
|
451
455
|
|
|
452
456
|
### Step 7: Display Plan
|
|
453
457
|
|
|
454
|
-
**If visual_mode is true, render final swarm display:**
|
|
458
|
+
**If visual_mode is true, render final swarm display (consolidated):**
|
|
455
459
|
```bash
|
|
456
|
-
bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "completed" "Plan generated" "Colony" '{"read":8,"grep":4,"edit":2,"bash":1}' 100 "fungus_garden" 100
|
|
457
|
-
bash .aether/aether-utils.sh swarm-display-render "$plan_id"
|
|
460
|
+
bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "completed" "Plan generated" "Colony" '{"read":8,"grep":4,"edit":2,"bash":1}' 100 "fungus_garden" 100 && bash .aether/aether-utils.sh swarm-display-text "$plan_id"
|
|
458
461
|
```
|
|
459
462
|
|
|
460
463
|
Read `plan.phases` from COLONY_STATE.json and display:
|
|
461
464
|
|
|
462
465
|
```
|
|
463
|
-
📊🐜🗺️🐜📊
|
|
466
|
+
📊🐜🗺️🐜📊 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
464
467
|
C O L O N Y P L A N
|
|
465
|
-
|
|
468
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📊🐜🗺️🐜📊
|
|
466
469
|
|
|
467
470
|
👑 Goal: {goal}
|
|
468
471
|
|
|
@@ -496,6 +499,14 @@ Read `plan.phases` from COLONY_STATE.json and display:
|
|
|
496
499
|
|
|
497
500
|
Status icons: pending = `[ ]`, in_progress = `[~]`, completed = `[✓]`
|
|
498
501
|
|
|
502
|
+
After displaying the plan, generate the state-based Next Up block:
|
|
503
|
+
```bash
|
|
504
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
505
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
506
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
507
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
508
|
+
```
|
|
509
|
+
|
|
499
510
|
---
|
|
500
511
|
|
|
501
512
|
## Confidence Scoring Reference
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ant:redirect
|
|
3
|
-
description: "
|
|
3
|
+
description: "Emit REDIRECT signal to warn colony away from patterns"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
You are the **Queen**.
|
|
6
|
+
You are the **Queen**. Emit a REDIRECT pheromone signal.
|
|
7
7
|
|
|
8
8
|
## Instructions
|
|
9
9
|
|
|
@@ -14,48 +14,45 @@ The pattern to avoid is: `$ARGUMENTS`
|
|
|
14
14
|
If `$ARGUMENTS` empty -> show usage: `/ant:redirect <pattern to avoid>`, stop.
|
|
15
15
|
If content > 500 chars -> "Redirect content too long (max 500 chars)", stop.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Parse optional flags from `$ARGUMENTS`:
|
|
18
|
+
- `--ttl <value>`: signal lifetime (e.g., `2h`, `1d`, `7d`). Default: `phase_end`.
|
|
19
|
+
- Strip flags from content before using it as the pattern.
|
|
20
|
+
|
|
21
|
+
### Step 2: Write Signal
|
|
18
22
|
|
|
19
23
|
Read `.aether/data/COLONY_STATE.json`.
|
|
20
24
|
If `goal: null` -> "No colony initialized.", stop.
|
|
21
25
|
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Generate constraint ID: `c_<unix_timestamp_ms>`
|
|
28
|
-
|
|
29
|
-
Append to `constraints` array:
|
|
30
|
-
```json
|
|
31
|
-
{
|
|
32
|
-
"id": "<generated_id>",
|
|
33
|
-
"type": "AVOID",
|
|
34
|
-
"content": "<pattern to avoid>",
|
|
35
|
-
"source": "user:redirect",
|
|
36
|
-
"created_at": "<ISO-8601 timestamp>"
|
|
37
|
-
}
|
|
26
|
+
Run using the Bash tool with description "Setting colony redirect...":
|
|
27
|
+
```bash
|
|
28
|
+
bash .aether/aether-utils.sh pheromone-write REDIRECT "<content>" --strength 0.9 --reason "User warned colony away from pattern" --ttl <ttl>
|
|
38
29
|
```
|
|
39
30
|
|
|
40
|
-
|
|
31
|
+
Parse the returned JSON for the signal ID.
|
|
41
32
|
|
|
42
|
-
|
|
33
|
+
### Step 3: Get Active Counts
|
|
43
34
|
|
|
44
|
-
|
|
35
|
+
Run using the Bash tool with description "Counting active signals...":
|
|
36
|
+
```bash
|
|
37
|
+
bash .aether/aether-utils.sh pheromone-count
|
|
38
|
+
```
|
|
45
39
|
|
|
46
|
-
|
|
40
|
+
### Step 4: Confirm
|
|
47
41
|
|
|
42
|
+
Output (3-4 lines, no banners):
|
|
48
43
|
```
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
Then output:
|
|
44
|
+
REDIRECT signal emitted
|
|
45
|
+
Avoid: "<content truncated to 60 chars>"
|
|
46
|
+
Strength: 0.9 | Expires: <phase end or ttl value>
|
|
47
|
+
Active signals: <focus_count> FOCUS, <redirect_count> REDIRECT, <feedback_count> FEEDBACK
|
|
55
48
|
```
|
|
56
|
-
🚫 REDIRECT signal emitted
|
|
57
49
|
|
|
58
|
-
|
|
50
|
+
### Step 5: Next Up
|
|
59
51
|
|
|
60
|
-
|
|
52
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
53
|
+
```bash
|
|
54
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
55
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
56
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
57
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
61
58
|
```
|