aether-colony 5.3.2 โ 5.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.aether/aether-utils.sh +181 -5
- package/.aether/commands/build.yaml +35 -0
- package/.aether/commands/entomb.yaml +1 -1
- package/.aether/commands/init.yaml +29 -12
- package/.aether/commands/oracle.yaml +70 -0
- package/.aether/commands/patrol.yaml +2 -2
- package/.aether/commands/run.yaml +3 -3
- package/.aether/commands/swarm.yaml +1 -1
- package/.aether/docs/command-playbooks/build-complete.md +41 -8
- package/.aether/docs/command-playbooks/build-full.md +7 -7
- package/.aether/docs/command-playbooks/build-prep.md +1 -1
- package/.aether/docs/command-playbooks/continue-advance.md +33 -0
- package/.aether/docs/command-playbooks/continue-finalize.md +15 -1
- package/.aether/docs/command-playbooks/continue-full.md +15 -1
- package/.aether/docs/source-of-truth-map.md +10 -10
- package/.aether/docs/structural-learning-stack.md +283 -0
- package/.aether/utils/consolidation-seal.sh +196 -0
- package/.aether/utils/consolidation.sh +127 -0
- package/.aether/utils/curation-ants/archivist.sh +97 -0
- package/.aether/utils/curation-ants/critic.sh +214 -0
- package/.aether/utils/curation-ants/herald.sh +102 -0
- package/.aether/utils/curation-ants/janitor.sh +121 -0
- package/.aether/utils/curation-ants/librarian.sh +99 -0
- package/.aether/utils/curation-ants/nurse.sh +153 -0
- package/.aether/utils/curation-ants/orchestrator.sh +181 -0
- package/.aether/utils/curation-ants/scribe.sh +164 -0
- package/.aether/utils/curation-ants/sentinel.sh +119 -0
- package/.aether/utils/event-bus.sh +301 -0
- package/.aether/utils/graph.sh +559 -0
- package/.aether/utils/instinct-store.sh +401 -0
- package/.aether/utils/learning.sh +79 -7
- package/.aether/utils/session.sh +13 -0
- package/.aether/utils/state-api.sh +1 -1
- package/.aether/utils/trust-scoring.sh +347 -0
- package/.aether/utils/worktree.sh +97 -0
- package/.claude/commands/ant/entomb.md +1 -1
- package/.claude/commands/ant/init.md +29 -12
- package/.claude/commands/ant/oracle.md +35 -0
- package/.claude/commands/ant/patrol.md +2 -2
- package/.claude/commands/ant/run.md +3 -3
- package/.claude/commands/ant/swarm.md +1 -1
- package/.opencode/commands/ant/build.md +35 -0
- package/.opencode/commands/ant/init.md +29 -12
- package/.opencode/commands/ant/oracle.md +35 -0
- package/.opencode/commands/ant/patrol.md +2 -2
- package/.opencode/commands/ant/run.md +3 -3
- package/CHANGELOG.md +83 -0
- package/README.md +22 -9
- package/bin/lib/update-transaction.js +8 -3
- package/bin/npx-entry.js +0 -0
- package/package.json +1 -1
- package/.aether/agents/aether-ambassador.md +0 -140
- package/.aether/agents/aether-archaeologist.md +0 -108
- package/.aether/agents/aether-architect.md +0 -133
- package/.aether/agents/aether-auditor.md +0 -144
- package/.aether/agents/aether-builder.md +0 -184
- package/.aether/agents/aether-chaos.md +0 -115
- package/.aether/agents/aether-chronicler.md +0 -122
- package/.aether/agents/aether-gatekeeper.md +0 -116
- package/.aether/agents/aether-includer.md +0 -117
- package/.aether/agents/aether-keeper.md +0 -177
- package/.aether/agents/aether-measurer.md +0 -128
- package/.aether/agents/aether-oracle.md +0 -137
- package/.aether/agents/aether-probe.md +0 -133
- package/.aether/agents/aether-queen.md +0 -286
- package/.aether/agents/aether-route-setter.md +0 -130
- package/.aether/agents/aether-sage.md +0 -106
- package/.aether/agents/aether-scout.md +0 -101
- package/.aether/agents/aether-surveyor-disciplines.md +0 -391
- package/.aether/agents/aether-surveyor-nest.md +0 -329
- package/.aether/agents/aether-surveyor-pathogens.md +0 -264
- package/.aether/agents/aether-surveyor-provisions.md +0 -334
- package/.aether/agents/aether-tracker.md +0 -137
- package/.aether/agents/aether-watcher.md +0 -174
- package/.aether/agents/aether-weaver.md +0 -130
- package/.aether/commands/claude/archaeology.md +0 -334
- package/.aether/commands/claude/build.md +0 -65
- package/.aether/commands/claude/chaos.md +0 -336
- package/.aether/commands/claude/colonize.md +0 -259
- package/.aether/commands/claude/continue.md +0 -60
- package/.aether/commands/claude/council.md +0 -507
- package/.aether/commands/claude/data-clean.md +0 -81
- package/.aether/commands/claude/dream.md +0 -268
- package/.aether/commands/claude/entomb.md +0 -498
- package/.aether/commands/claude/export-signals.md +0 -57
- package/.aether/commands/claude/feedback.md +0 -96
- package/.aether/commands/claude/flag.md +0 -151
- package/.aether/commands/claude/flags.md +0 -169
- package/.aether/commands/claude/focus.md +0 -76
- package/.aether/commands/claude/help.md +0 -154
- package/.aether/commands/claude/history.md +0 -140
- package/.aether/commands/claude/import-signals.md +0 -71
- package/.aether/commands/claude/init.md +0 -505
- package/.aether/commands/claude/insert-phase.md +0 -105
- package/.aether/commands/claude/interpret.md +0 -278
- package/.aether/commands/claude/lay-eggs.md +0 -210
- package/.aether/commands/claude/maturity.md +0 -113
- package/.aether/commands/claude/memory-details.md +0 -77
- package/.aether/commands/claude/migrate-state.md +0 -171
- package/.aether/commands/claude/oracle.md +0 -642
- package/.aether/commands/claude/organize.md +0 -232
- package/.aether/commands/claude/patrol.md +0 -620
- package/.aether/commands/claude/pause-colony.md +0 -233
- package/.aether/commands/claude/phase.md +0 -115
- package/.aether/commands/claude/pheromones.md +0 -156
- package/.aether/commands/claude/plan.md +0 -693
- package/.aether/commands/claude/preferences.md +0 -65
- package/.aether/commands/claude/quick.md +0 -100
- package/.aether/commands/claude/redirect.md +0 -76
- package/.aether/commands/claude/resume-colony.md +0 -197
- package/.aether/commands/claude/resume.md +0 -388
- package/.aether/commands/claude/run.md +0 -231
- package/.aether/commands/claude/seal.md +0 -774
- package/.aether/commands/claude/skill-create.md +0 -286
- package/.aether/commands/claude/status.md +0 -410
- package/.aether/commands/claude/swarm.md +0 -349
- package/.aether/commands/claude/tunnels.md +0 -426
- package/.aether/commands/claude/update.md +0 -132
- package/.aether/commands/claude/verify-castes.md +0 -143
- package/.aether/commands/claude/watch.md +0 -239
- package/.aether/commands/opencode/archaeology.md +0 -331
- package/.aether/commands/opencode/build.md +0 -1168
- package/.aether/commands/opencode/chaos.md +0 -329
- package/.aether/commands/opencode/colonize.md +0 -195
- package/.aether/commands/opencode/continue.md +0 -1436
- package/.aether/commands/opencode/council.md +0 -437
- package/.aether/commands/opencode/data-clean.md +0 -77
- package/.aether/commands/opencode/dream.md +0 -260
- package/.aether/commands/opencode/entomb.md +0 -377
- package/.aether/commands/opencode/export-signals.md +0 -54
- package/.aether/commands/opencode/feedback.md +0 -99
- package/.aether/commands/opencode/flag.md +0 -149
- package/.aether/commands/opencode/flags.md +0 -167
- package/.aether/commands/opencode/focus.md +0 -73
- package/.aether/commands/opencode/help.md +0 -157
- package/.aether/commands/opencode/history.md +0 -136
- package/.aether/commands/opencode/import-signals.md +0 -68
- package/.aether/commands/opencode/init.md +0 -518
- package/.aether/commands/opencode/insert-phase.md +0 -111
- package/.aether/commands/opencode/interpret.md +0 -272
- package/.aether/commands/opencode/lay-eggs.md +0 -213
- package/.aether/commands/opencode/maturity.md +0 -108
- package/.aether/commands/opencode/memory-details.md +0 -83
- package/.aether/commands/opencode/migrate-state.md +0 -165
- package/.aether/commands/opencode/oracle.md +0 -593
- package/.aether/commands/opencode/organize.md +0 -226
- package/.aether/commands/opencode/patrol.md +0 -626
- package/.aether/commands/opencode/pause-colony.md +0 -203
- package/.aether/commands/opencode/phase.md +0 -113
- package/.aether/commands/opencode/pheromones.md +0 -162
- package/.aether/commands/opencode/plan.md +0 -684
- package/.aether/commands/opencode/preferences.md +0 -71
- package/.aether/commands/opencode/quick.md +0 -91
- package/.aether/commands/opencode/redirect.md +0 -84
- package/.aether/commands/opencode/resume-colony.md +0 -190
- package/.aether/commands/opencode/resume.md +0 -394
- package/.aether/commands/opencode/run.md +0 -237
- package/.aether/commands/opencode/seal.md +0 -452
- package/.aether/commands/opencode/skill-create.md +0 -63
- package/.aether/commands/opencode/status.md +0 -307
- package/.aether/commands/opencode/swarm.md +0 -15
- package/.aether/commands/opencode/tunnels.md +0 -400
- package/.aether/commands/opencode/update.md +0 -127
- package/.aether/commands/opencode/verify-castes.md +0 -139
- package/.aether/commands/opencode/watch.md +0 -227
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
<!-- Generated from .aether/commands/pause-colony.yaml - DO NOT EDIT DIRECTLY -->
|
|
2
|
-
---
|
|
3
|
-
name: ant:pause-colony
|
|
4
|
-
description: "๐พ๐โธ๏ธ๐๐พ Pause colony work and create handoff document for resuming later"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
You are the **Queen Ant Colony**. Save current state for session handoff.
|
|
8
|
-
|
|
9
|
-
## Instructions
|
|
10
|
-
|
|
11
|
-
Parse `$ARGUMENTS`:
|
|
12
|
-
- If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
|
|
13
|
-
- Otherwise: set `visual_mode = true`
|
|
14
|
-
|
|
15
|
-
### Step 0: Initialize Visual Mode (if enabled)
|
|
16
|
-
|
|
17
|
-
If `visual_mode` is true, run using the Bash tool with description "Initializing pause display...":
|
|
18
|
-
### Step 1: Read State
|
|
19
|
-
|
|
20
|
-
Use the Read tool to read `.aether/data/COLONY_STATE.json`.
|
|
21
|
-
|
|
22
|
-
If `goal` is null, output `No colony initialized. Nothing to pause.` and stop.
|
|
23
|
-
|
|
24
|
-
### Step 2: Compute Active Signals
|
|
25
|
-
|
|
26
|
-
Run using the Bash tool with description "Loading active pheromones...":
|
|
27
|
-
```bash
|
|
28
|
-
bash .aether/aether-utils.sh pheromone-read
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
|
|
32
|
-
If empty, treat as "no active pheromones."
|
|
33
|
-
|
|
34
|
-
### Step 3: Build Handoff Summary
|
|
35
|
-
|
|
36
|
-
Gather context for the handoff from `COLONY_STATE.json`:
|
|
37
|
-
- `goal` from top level
|
|
38
|
-
- `state` and `current_phase` from top level
|
|
39
|
-
- `workers` object
|
|
40
|
-
- Active signals from `pheromone-read` output (with current decayed strengths from Step 2)
|
|
41
|
-
- Phase progress from `plan.phases` (how many complete, current phase tasks)
|
|
42
|
-
- What was in progress or pending
|
|
43
|
-
|
|
44
|
-
### Step 4: Write Handoff
|
|
45
|
-
|
|
46
|
-
Use the Write tool to update `.aether/HANDOFF.md` with a session handoff section at the top. The format:
|
|
47
|
-
|
|
48
|
-
```markdown
|
|
49
|
-
# Colony Session Paused
|
|
50
|
-
|
|
51
|
-
## Quick Resume
|
|
52
|
-
Run `/ant:resume-colony` in a new session.
|
|
53
|
-
|
|
54
|
-
## State at Pause
|
|
55
|
-
- Goal: "<goal>"
|
|
56
|
-
- State: <state>
|
|
57
|
-
- Current Phase: <phase_number> โ <phase_name>
|
|
58
|
-
- Session: <session_id>
|
|
59
|
-
- Paused: <ISO-8601 timestamp>
|
|
60
|
-
|
|
61
|
-
## Active Pheromones
|
|
62
|
-
- <TYPE> (strength <current>): "<content>"
|
|
63
|
-
(list each non-expired signal)
|
|
64
|
-
|
|
65
|
-
## Phase Progress
|
|
66
|
-
(for each phase, show status)
|
|
67
|
-
- Phase <id>: <name> [<status>]
|
|
68
|
-
|
|
69
|
-
## Current Phase Tasks
|
|
70
|
-
(list tasks in the current phase with their statuses)
|
|
71
|
-
- [<icon>] <task_id>: <description>
|
|
72
|
-
|
|
73
|
-
## What Was Happening
|
|
74
|
-
<brief description of what the colony was doing>
|
|
75
|
-
|
|
76
|
-
## Next Steps on Resume
|
|
77
|
-
<what should happen next>
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Step 4.5: Set Paused Flag in State
|
|
81
|
-
|
|
82
|
-
Use Read tool to get current COLONY_STATE.json.
|
|
83
|
-
|
|
84
|
-
Use Write tool to update COLONY_STATE.json with paused flag:
|
|
85
|
-
- Add field: `"paused": true`
|
|
86
|
-
- Add field: `"paused_at": "<ISO-8601 timestamp>"`
|
|
87
|
-
- Update last_updated timestamp
|
|
88
|
-
|
|
89
|
-
This flag indicates the colony is in a paused state and will be cleared on resume.
|
|
90
|
-
|
|
91
|
-
### Step 4.6: Commit Suggestion (Optional)
|
|
92
|
-
|
|
93
|
-
**This step is non-blocking. Skipping does not affect the pause or any subsequent steps. Failure to commit has zero consequences.**
|
|
94
|
-
|
|
95
|
-
Before displaying the pause confirmation, check if the user has uncommitted work worth preserving.
|
|
96
|
-
|
|
97
|
-
**1. Check for uncommitted changes:**
|
|
98
|
-
```bash
|
|
99
|
-
git status --porcelain 2>/dev/null
|
|
100
|
-
```
|
|
101
|
-
If the output is empty (nothing to commit) or the command fails (not a git repo), skip this step silently and continue to Step 5.
|
|
102
|
-
|
|
103
|
-
**2. Check for double-prompting:**
|
|
104
|
-
Read `last_commit_suggestion_phase` from COLONY_STATE.json (already loaded in Step 1).
|
|
105
|
-
If `last_commit_suggestion_phase` equals the current phase, skip this step silently โ the user was already prompted at POST-ADVANCE. Continue to Step 5.
|
|
106
|
-
|
|
107
|
-
**3. Capture AI Description:**
|
|
108
|
-
|
|
109
|
-
**As the AI, briefly describe what was in progress when pausing.**
|
|
110
|
-
|
|
111
|
-
Examples:
|
|
112
|
-
- "Mid-implementation of task-based routing, tests passing"
|
|
113
|
-
- "Completed model selection logic, integration tests pending"
|
|
114
|
-
- "Fixed file locking, ready for verification"
|
|
115
|
-
|
|
116
|
-
Store this as `ai_description`. If no clear description emerges, leave empty (will use fallback).
|
|
117
|
-
|
|
118
|
-
**4. Generate Enhanced Commit Message:**
|
|
119
|
-
```bash
|
|
120
|
-
bash .aether/aether-utils.sh generate-commit-message "contextual" {current_phase} "{phase_name}" "{ai_description}" {plan_number}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Parse the returned JSON to extract `message`, `body`, `files_changed`, `subsystem`, and `scope`.
|
|
124
|
-
|
|
125
|
-
**5. Display the enhanced suggestion:**
|
|
126
|
-
```
|
|
127
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
128
|
-
Commit Suggestion
|
|
129
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
130
|
-
|
|
131
|
-
AI Description: {ai_description}
|
|
132
|
-
|
|
133
|
-
Formatted Message:
|
|
134
|
-
{message}
|
|
135
|
-
|
|
136
|
-
Metadata:
|
|
137
|
-
Scope: {scope}
|
|
138
|
-
Files: {files_changed} files changed
|
|
139
|
-
|
|
140
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
**6. Use AskUserQuestion:**
|
|
144
|
-
```
|
|
145
|
-
Commit your work before pausing?
|
|
146
|
-
|
|
147
|
-
1. Yes, commit with this message
|
|
148
|
-
2. Yes, but let me edit the description
|
|
149
|
-
3. No, I'll commit later
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
**7. If option 1 ("Yes, commit with this message"):**
|
|
153
|
-
```bash
|
|
154
|
-
git add -A && git commit -m "{message}" -m "{body}"
|
|
155
|
-
```
|
|
156
|
-
Display: `Committed: {message} ({files_changed} files)`
|
|
157
|
-
|
|
158
|
-
**8. If option 2 ("Yes, but let me edit"):**
|
|
159
|
-
Prompt for custom description, then regenerate and commit.
|
|
160
|
-
|
|
161
|
-
**9. If option 3 ("No, I'll commit later"):**
|
|
162
|
-
Display: `Skipped. Your changes are saved on disk but not committed.`
|
|
163
|
-
|
|
164
|
-
**10. Record the suggestion:**
|
|
165
|
-
Set `last_commit_suggestion_phase` to `{current_phase}` in COLONY_STATE.json.
|
|
166
|
-
|
|
167
|
-
**Error handling:** If any git command fails, display the error and continue to Step 5.
|
|
168
|
-
|
|
169
|
-
Continue to Step 5.
|
|
170
|
-
|
|
171
|
-
### Step 4.8: Update Context Document
|
|
172
|
-
|
|
173
|
-
Log this pause activity to `.aether/CONTEXT.md` by running using the Bash tool with description "Updating context document...":
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
bash .aether/aether-utils.sh context-update activity "pause-colony" "Colony paused โ handoff created" "โ"
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
Update safe-to-clear status by running using the Bash tool with description "Marking safe to clear...":
|
|
180
|
-
```bash
|
|
181
|
-
bash .aether/aether-utils.sh context-update safe-to-clear "YES" "Colony paused โ safe to /clear, run /ant:resume-colony to continue"
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
### Step 5: Display Confirmation
|
|
185
|
-
|
|
186
|
-
Output header:
|
|
187
|
-
|
|
188
|
-
```
|
|
189
|
-
๐พ๐โธ๏ธ๐๐พ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
190
|
-
C O L O N Y P A U S E D
|
|
191
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๐พ๐โธ๏ธ๐๐พ
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
Then output:
|
|
195
|
-
+=====================================================+
|
|
196
|
-
| AETHER COLONY :: PAUSED |
|
|
197
|
-
+=====================================================+
|
|
198
|
-
|
|
199
|
-
Goal: "<goal>"
|
|
200
|
-
Phase: <current_phase> โ <phase_name>
|
|
201
|
-
Pheromones: <active_count> active
|
|
202
|
-
|
|
203
|
-
Handoff saved to .aether/HANDOFF.md
|
|
204
|
-
Paused state saved to COLONY_STATE.json
|
|
205
|
-
|
|
206
|
-
To resume in a new session:
|
|
207
|
-
/ant:resume-colony
|
|
208
|
-
|
|
209
|
-
๐พ State persisted โ safe to /clear
|
|
210
|
-
|
|
211
|
-
๐ Context document updated at `.aether/CONTEXT.md`
|
|
212
|
-
|
|
213
|
-
๐ What would you like to do next?
|
|
214
|
-
1. /ant:resume-colony โ Resume work in this session
|
|
215
|
-
2. /ant:lay-eggs "<new goal>" โ Start a new colony
|
|
216
|
-
3. /clear โ Clear context and continue
|
|
217
|
-
|
|
218
|
-
Use AskUserQuestion with these three options.
|
|
219
|
-
|
|
220
|
-
If option 1 selected: proceed to run /ant:resume-colony flow
|
|
221
|
-
If option 2 selected: run /ant:lay-eggs flow
|
|
222
|
-
If option 3 selected: display "Run /ant:resume-colony when ready to continue, or /ant:lay-eggs to start fresh"
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
### Step 6: Next Up
|
|
226
|
-
|
|
227
|
-
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
228
|
-
```bash
|
|
229
|
-
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
230
|
-
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
231
|
-
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
232
|
-
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
233
|
-
```
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
<!-- Generated from .aether/commands/phase.yaml - DO NOT EDIT DIRECTLY -->
|
|
2
|
-
---
|
|
3
|
-
name: ant:phase
|
|
4
|
-
description: "๐๐๐๐๐ Show phase details - Queen reviews phase status, tasks, and caste assignment"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
You are the **Queen Ant Colony**. Display phase details from the project plan.
|
|
8
|
-
|
|
9
|
-
## Instructions
|
|
10
|
-
|
|
11
|
-
The argument is: `$ARGUMENTS`
|
|
12
|
-
|
|
13
|
-
### Step 1: Read State
|
|
14
|
-
|
|
15
|
-
Use the Read tool to read `.aether/data/COLONY_STATE.json`.
|
|
16
|
-
|
|
17
|
-
If `goal` is null, output `No colony initialized. Run /ant:init first.` and stop.
|
|
18
|
-
|
|
19
|
-
If `plan.phases` is an empty array, output `No project plan. Run /ant:plan first.` and stop.
|
|
20
|
-
|
|
21
|
-
### Step 2: Determine What to Show
|
|
22
|
-
|
|
23
|
-
- If `$ARGUMENTS` is empty -> show the current phase (from `current_phase`). If `current_phase` is 0 or beyond the last phase, show phase 1.
|
|
24
|
-
- If `$ARGUMENTS` is a number -> show that specific phase
|
|
25
|
-
- If `$ARGUMENTS` is "list" or "all" -> show all phases in summary
|
|
26
|
-
|
|
27
|
-
### Step 3a: Single Phase View
|
|
28
|
-
|
|
29
|
-
Find the phase by ID in `plan.phases`.
|
|
30
|
-
|
|
31
|
-
**Calculate next phase ID:**
|
|
32
|
-
- Let `total_phases` = length of `plan.phases` array
|
|
33
|
-
- If current phase ID < total_phases, then `next_id` = current phase ID + 1
|
|
34
|
-
- If current phase ID >= total_phases (viewing last phase), omit the "View next phase" suggestion
|
|
35
|
-
|
|
36
|
-
Output this header:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
41
|
-
๐๐๐๐๐ P H A S E {id} D E T A I L S
|
|
42
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
Then display:
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
๐ Phase <id>: <name>
|
|
50
|
-
๐ Status: <status>
|
|
51
|
-
|
|
52
|
-
<description>
|
|
53
|
-
|
|
54
|
-
๐ Tasks:
|
|
55
|
-
{status_icon} <task_id>: <description>
|
|
56
|
-
โณ depends on: <deps or "none">
|
|
57
|
-
|
|
58
|
-
โ
Success Criteria:
|
|
59
|
-
โข <criterion>
|
|
60
|
-
|
|
61
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
62
|
-
|
|
63
|
-
๐ Next Up
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
67
|
-
/ant:build <id> ๐จ Phase <id>: <phase_name>
|
|
68
|
-
/ant:phase <next_id> ๐ Phase <next_id>: <next_phase_name> (only if not last phase)
|
|
69
|
-
/ant:status ๐ Colony status
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
After displaying phase details, generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
74
|
-
```bash
|
|
75
|
-
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
76
|
-
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
77
|
-
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
78
|
-
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
Status icons: `[ ]` pending, `[~]` in_progress, `[โ]` completed
|
|
83
|
-
|
|
84
|
-
### Step 3b: List View
|
|
85
|
-
|
|
86
|
-
Output this header:
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
91
|
-
๐๐๐๐๐ A L L P H A S E S
|
|
92
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
For each phase in `plan.phases`, display:
|
|
97
|
-
```
|
|
98
|
-
[{id}] {name} [{status}]
|
|
99
|
-
{short_description}
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
Display phases grouped by status:
|
|
103
|
-
```
|
|
104
|
-
โ Completed
|
|
105
|
-
[{id}] {name}
|
|
106
|
-
~ In Progress
|
|
107
|
-
[{id}] {name}
|
|
108
|
-
[ ] Pending
|
|
109
|
-
[{id}] {name}
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
Display completion progress:
|
|
113
|
-
```
|
|
114
|
-
๐ Overall: {completed_count}/{total_count} phases complete
|
|
115
|
-
```
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
<!-- Generated from .aether/commands/pheromones.yaml - DO NOT EDIT DIRECTLY -->
|
|
2
|
-
---
|
|
3
|
-
name: ant:pheromones
|
|
4
|
-
description: "๐ฏ๐๐ซ๐๐ฌ View and manage active pheromone signals"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
You are the **Queen**. Display and manage the colony's pheromone signals.
|
|
8
|
-
|
|
9
|
-
## Instructions
|
|
10
|
-
|
|
11
|
-
Parse `$ARGUMENTS`:
|
|
12
|
-
- If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
|
|
13
|
-
- Otherwise: set `visual_mode = true`
|
|
14
|
-
|
|
15
|
-
Extract subcommand from `$ARGUMENTS`:
|
|
16
|
-
- No argument or `all`: Show all active pheromones
|
|
17
|
-
- `focus`: Show only FOCUS signals
|
|
18
|
-
- `redirect`: Show only REDIRECT signals
|
|
19
|
-
- `feedback`: Show only FEEDBACK signals
|
|
20
|
-
- `clear`: Clear expired/inactive signals
|
|
21
|
-
- `expire <id>`: Expire a specific signal by ID
|
|
22
|
-
|
|
23
|
-
### Step 1: Read Colony State
|
|
24
|
-
|
|
25
|
-
Read `.aether/data/COLONY_STATE.json`.
|
|
26
|
-
|
|
27
|
-
If file missing or `goal: null`:
|
|
28
|
-
```
|
|
29
|
-
No colony initialized. Run /ant:init first.
|
|
30
|
-
```
|
|
31
|
-
Stop here.
|
|
32
|
-
|
|
33
|
-
### Step 2: Handle Subcommands
|
|
34
|
-
|
|
35
|
-
**If subcommand is `clear`:**
|
|
36
|
-
|
|
37
|
-
Run using the Bash tool:
|
|
38
|
-
```bash
|
|
39
|
-
# Count signals before
|
|
40
|
-
before_count=$(jq '[.signals[] | select(.active == true)] | length' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
41
|
-
|
|
42
|
-
# Mark expired/inactive signals as inactive
|
|
43
|
-
now=$(date +%s)
|
|
44
|
-
jq --argjson now "$now" '
|
|
45
|
-
def to_epoch(ts):
|
|
46
|
-
if ts == null or ts == "" or ts == "phase_end" then null
|
|
47
|
-
else
|
|
48
|
-
(ts | split("T")) as $parts |
|
|
49
|
-
($parts[0] | split("-")) as $d |
|
|
50
|
-
($parts[1] | rtrimstr("Z") | split(":")) as $t |
|
|
51
|
-
(($d[0] | tonumber) - 1970) * 365 * 86400 +
|
|
52
|
-
(($d[1] | tonumber) - 1) * 30 * 86400 +
|
|
53
|
-
(($d[2] | tonumber) - 1) * 86400 +
|
|
54
|
-
($t[0] | tonumber) * 3600 +
|
|
55
|
-
($t[1] | tonumber) * 60 +
|
|
56
|
-
($t[2] | rtrimstr("Z") | tonumber)
|
|
57
|
-
end;
|
|
58
|
-
|
|
59
|
-
def decay_days(t):
|
|
60
|
-
if t == "FOCUS" then 30
|
|
61
|
-
elif t == "REDIRECT" then 60
|
|
62
|
-
else 90
|
|
63
|
-
end;
|
|
64
|
-
|
|
65
|
-
.signals = [.signals[] |
|
|
66
|
-
(to_epoch(.created_at)) as $created_epoch |
|
|
67
|
-
(if $created_epoch != null then ($now - $created_epoch) / 86400 else 0 end) as $elapsed_days |
|
|
68
|
-
(decay_days(.type)) as $dd |
|
|
69
|
-
((.strength // 0.8) * (1 - ($elapsed_days / $dd))) as $eff_raw |
|
|
70
|
-
(if $eff_raw < 0 then 0 else $eff_raw end) as $eff |
|
|
71
|
-
if $eff < 0.1 then . + {active: false} else . end
|
|
72
|
-
]
|
|
73
|
-
' .aether/data/pheromones.json > .aether/data/pheromones.json.tmp && mv .aether/data/pheromones.json.tmp .aether/data/pheromones.json
|
|
74
|
-
|
|
75
|
-
# Count signals after
|
|
76
|
-
after_count=$(jq '[.signals[] | select(.active == true)] | length' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
77
|
-
cleared=$((before_count - after_count))
|
|
78
|
-
|
|
79
|
-
echo "before=$before_count after=$after_count cleared=$cleared"
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Display:
|
|
83
|
-
```
|
|
84
|
-
๐งน Pheromone Cleanup
|
|
85
|
-
|
|
86
|
-
Before: {before_count} active signals
|
|
87
|
-
After: {after_count} active signals
|
|
88
|
-
Cleared: {cleared} expired signal(s)
|
|
89
|
-
|
|
90
|
-
Run /ant:pheromones to see remaining signals.
|
|
91
|
-
```
|
|
92
|
-
Stop here.
|
|
93
|
-
|
|
94
|
-
**If subcommand is `expire <id>`:**
|
|
95
|
-
|
|
96
|
-
Extract the signal ID from arguments.
|
|
97
|
-
Run using the Bash tool:
|
|
98
|
-
```bash
|
|
99
|
-
signal_id="{extracted_id}"
|
|
100
|
-
jq --arg id "$signal_id" '.signals = [.signals[] | if .id == $id then . + {active: false} else . end]' .aether/data/pheromones.json > .aether/data/pheromones.json.tmp && mv .aether/data/pheromones.json.tmp .aether/data/pheromones.json && echo "expired=$signal_id"
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Display:
|
|
104
|
-
```
|
|
105
|
-
โ Signal expired: {signal_id}
|
|
106
|
-
|
|
107
|
-
Run /ant:pheromones to see remaining signals.
|
|
108
|
-
```
|
|
109
|
-
Stop here.
|
|
110
|
-
|
|
111
|
-
### Step 3: Display Active Pheromones (default or filter)
|
|
112
|
-
|
|
113
|
-
Run using the Bash tool with description "Displaying pheromones...":
|
|
114
|
-
```bash
|
|
115
|
-
bash .aether/aether-utils.sh pheromone-display "{subcommand or 'all'}"
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
The output will be the formatted pheromone table.
|
|
119
|
-
|
|
120
|
-
### Step 4: Summary and Next Steps
|
|
121
|
-
|
|
122
|
-
Display guidance:
|
|
123
|
-
```
|
|
124
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
125
|
-
|
|
126
|
-
๐ก Managing Pheromones
|
|
127
|
-
|
|
128
|
-
/ant:focus "area" ๐ฏ Guide attention
|
|
129
|
-
/ant:redirect "avoid" ๐ซ Set hard constraint
|
|
130
|
-
/ant:feedback "note" ๐ฌ Provide guidance
|
|
131
|
-
/ant:pheromones clear ๐งน Clear expired signals
|
|
132
|
-
|
|
133
|
-
๐ Signals decay over time: FOCUS 30d, REDIRECT 60d, FEEDBACK 90d
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### Edge Cases
|
|
137
|
-
|
|
138
|
-
**No pheromones file:**
|
|
139
|
-
```
|
|
140
|
-
No pheromones active. Colony has no signals.
|
|
141
|
-
|
|
142
|
-
Inject signals with:
|
|
143
|
-
/ant:focus "area" - Guide attention
|
|
144
|
-
/ant:redirect "avoid" - Set hard constraint
|
|
145
|
-
/ant:feedback "note" - Provide guidance
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
**No active signals of filtered type:**
|
|
149
|
-
```
|
|
150
|
-
No active {type} signals found.
|
|
151
|
-
|
|
152
|
-
Try: /ant:pheromones (to see all)
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
**Invalid subcommand:**
|
|
156
|
-
Display help showing valid subcommands.
|