aether-colony 5.0.0 → 5.2.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 +3226 -3345
- package/.aether/agents-claude/aether-ambassador.md +265 -0
- package/.aether/agents-claude/aether-archaeologist.md +327 -0
- package/.aether/agents-claude/aether-architect.md +236 -0
- package/.aether/agents-claude/aether-auditor.md +271 -0
- package/.aether/agents-claude/aether-builder.md +224 -0
- package/.aether/agents-claude/aether-chaos.md +269 -0
- package/.aether/agents-claude/aether-chronicler.md +305 -0
- package/.aether/agents-claude/aether-gatekeeper.md +330 -0
- package/.aether/agents-claude/aether-includer.md +374 -0
- package/.aether/agents-claude/aether-keeper.md +272 -0
- package/.aether/agents-claude/aether-measurer.md +322 -0
- package/.aether/agents-claude/aether-oracle.md +237 -0
- package/.aether/agents-claude/aether-probe.md +211 -0
- package/.aether/agents-claude/aether-queen.md +330 -0
- package/.aether/agents-claude/aether-route-setter.md +178 -0
- package/.aether/agents-claude/aether-sage.md +418 -0
- package/.aether/agents-claude/aether-scout.md +179 -0
- package/.aether/agents-claude/aether-surveyor-disciplines.md +417 -0
- package/.aether/agents-claude/aether-surveyor-nest.md +355 -0
- package/.aether/agents-claude/aether-surveyor-pathogens.md +289 -0
- package/.aether/agents-claude/aether-surveyor-provisions.md +360 -0
- package/.aether/agents-claude/aether-tracker.md +270 -0
- package/.aether/agents-claude/aether-watcher.md +280 -0
- package/.aether/agents-claude/aether-weaver.md +248 -0
- package/.aether/commands/archaeology.yaml +653 -0
- package/.aether/commands/build.yaml +1221 -0
- package/.aether/commands/chaos.yaml +653 -0
- package/.aether/commands/colonize.yaml +442 -0
- package/.aether/commands/continue.yaml +1484 -0
- package/.aether/commands/council.yaml +509 -0
- package/.aether/commands/data-clean.yaml +80 -0
- package/.aether/commands/dream.yaml +275 -0
- package/.aether/commands/entomb.yaml +863 -0
- package/.aether/commands/export-signals.yaml +64 -0
- package/.aether/commands/feedback.yaml +158 -0
- package/.aether/commands/flag.yaml +160 -0
- package/.aether/commands/flags.yaml +177 -0
- package/.aether/commands/focus.yaml +112 -0
- package/.aether/commands/help.yaml +167 -0
- package/.aether/commands/history.yaml +137 -0
- package/.aether/commands/import-signals.yaml +79 -0
- package/.aether/commands/init.yaml +502 -0
- package/.aether/commands/insert-phase.yaml +102 -0
- package/.aether/commands/interpret.yaml +285 -0
- package/.aether/commands/lay-eggs.yaml +224 -0
- package/.aether/commands/maturity.yaml +122 -0
- package/.aether/commands/memory-details.yaml +74 -0
- package/.aether/commands/migrate-state.yaml +174 -0
- package/.aether/commands/oracle.yaml +1224 -0
- package/.aether/commands/organize.yaml +446 -0
- package/.aether/commands/patrol.yaml +621 -0
- package/.aether/commands/pause-colony.yaml +424 -0
- package/.aether/commands/phase.yaml +124 -0
- package/.aether/commands/pheromones.yaml +153 -0
- package/.aether/commands/plan.yaml +1364 -0
- package/.aether/commands/preferences.yaml +63 -0
- package/.aether/commands/quick.yaml +104 -0
- package/.aether/commands/redirect.yaml +123 -0
- package/.aether/commands/resume-colony.yaml +375 -0
- package/.aether/commands/resume.yaml +407 -0
- package/.aether/commands/run.yaml +229 -0
- package/.aether/commands/seal.yaml +1214 -0
- package/.aether/commands/skill-create.yaml +337 -0
- package/.aether/commands/status.yaml +408 -0
- package/.aether/commands/swarm.yaml +352 -0
- package/.aether/commands/tunnels.yaml +814 -0
- package/.aether/commands/update.yaml +131 -0
- package/.aether/commands/verify-castes.yaml +159 -0
- package/.aether/commands/watch.yaml +454 -0
- package/.aether/docs/INCIDENT_TEMPLATE.md +32 -0
- package/.aether/docs/QUEEN-SYSTEM.md +11 -11
- package/.aether/docs/README.md +32 -2
- package/.aether/docs/command-playbooks/README.md +23 -0
- package/.aether/docs/command-playbooks/build-complete.md +349 -0
- package/.aether/docs/command-playbooks/build-context.md +282 -0
- package/.aether/docs/command-playbooks/build-full.md +1683 -0
- package/.aether/docs/command-playbooks/build-prep.md +284 -0
- package/.aether/docs/command-playbooks/build-verify.md +405 -0
- package/.aether/docs/command-playbooks/build-wave.md +749 -0
- package/.aether/docs/command-playbooks/continue-advance.md +524 -0
- package/.aether/docs/command-playbooks/continue-finalize.md +447 -0
- package/.aether/docs/command-playbooks/continue-full.md +1725 -0
- package/.aether/docs/command-playbooks/continue-gates.md +686 -0
- package/.aether/docs/command-playbooks/continue-verify.md +407 -0
- package/.aether/docs/context-continuity.md +84 -0
- package/.aether/docs/disciplines/DISCIPLINES.md +9 -7
- package/.aether/docs/error-codes.md +1 -1
- package/.aether/docs/known-issues.md +34 -173
- package/.aether/docs/pheromones.md +86 -6
- package/.aether/docs/plans/pheromone-display-plan.md +257 -0
- package/.aether/docs/queen-commands.md +10 -9
- package/.aether/docs/source-of-truth-map.md +132 -0
- package/.aether/docs/xml-utilities.md +47 -0
- package/.aether/rules/aether-colony.md +23 -13
- package/.aether/scripts/incident-test-add.sh +47 -0
- package/.aether/scripts/weekly-audit.sh +79 -0
- package/.aether/skills/.index.json +649 -0
- package/.aether/skills/colony/.manifest.json +16 -0
- package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
- package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
- package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
- package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
- package/.aether/skills/colony/context-management/SKILL.md +80 -0
- package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
- package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
- package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
- package/.aether/skills/colony/state-safety/SKILL.md +84 -0
- package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
- package/.aether/skills/domain/.manifest.json +24 -0
- package/.aether/skills/domain/README.md +33 -0
- package/.aether/skills/domain/django/SKILL.md +49 -0
- package/.aether/skills/domain/docker/SKILL.md +52 -0
- package/.aether/skills/domain/golang/SKILL.md +52 -0
- package/.aether/skills/domain/graphql/SKILL.md +51 -0
- package/.aether/skills/domain/html-css/SKILL.md +48 -0
- package/.aether/skills/domain/nextjs/SKILL.md +45 -0
- package/.aether/skills/domain/nodejs/SKILL.md +53 -0
- package/.aether/skills/domain/postgresql/SKILL.md +53 -0
- package/.aether/skills/domain/prisma/SKILL.md +59 -0
- package/.aether/skills/domain/python/SKILL.md +50 -0
- package/.aether/skills/domain/rails/SKILL.md +52 -0
- package/.aether/skills/domain/react/SKILL.md +45 -0
- package/.aether/skills/domain/rest-api/SKILL.md +58 -0
- package/.aether/skills/domain/svelte/SKILL.md +47 -0
- package/.aether/skills/domain/tailwind/SKILL.md +45 -0
- package/.aether/skills/domain/testing/SKILL.md +53 -0
- package/.aether/skills/domain/typescript/SKILL.md +58 -0
- package/.aether/skills/domain/vue/SKILL.md +49 -0
- package/.aether/templates/QUEEN.md.template +23 -41
- package/.aether/templates/colony-state-reset.jq.template +1 -0
- package/.aether/templates/colony-state.template.json +4 -0
- package/.aether/templates/learning-observations.template.json +6 -0
- package/.aether/templates/midden.template.json +13 -0
- package/.aether/templates/pheromones.template.json +6 -0
- package/.aether/templates/session.template.json +9 -0
- package/.aether/utils/atomic-write.sh +63 -17
- package/.aether/utils/chamber-utils.sh +145 -2
- package/.aether/utils/council.sh +425 -0
- package/.aether/utils/emoji-audit.sh +166 -0
- package/.aether/utils/error-handler.sh +21 -7
- package/.aether/utils/file-lock.sh +182 -27
- package/.aether/utils/flag.sh +278 -0
- package/.aether/utils/hive.sh +572 -0
- package/.aether/utils/immune.sh +508 -0
- package/.aether/utils/learning.sh +1928 -0
- package/.aether/utils/midden.sh +520 -0
- package/.aether/utils/oracle/oracle.md +168 -0
- package/.aether/utils/oracle/oracle.sh +1023 -0
- package/.aether/utils/pheromone.sh +2029 -0
- package/.aether/utils/queen.sh +1710 -0
- package/.aether/utils/scan.sh +860 -0
- package/.aether/utils/semantic-cli.sh +10 -8
- package/.aether/utils/session.sh +816 -0
- package/.aether/utils/skills.sh +509 -0
- package/.aether/utils/spawn-tree.sh +103 -271
- package/.aether/utils/spawn.sh +260 -0
- package/.aether/utils/state-api.sh +389 -0
- package/.aether/utils/state-loader.sh +8 -6
- package/.aether/utils/suggest.sh +611 -0
- package/.aether/utils/swarm-display.sh +10 -1
- package/.aether/utils/swarm.sh +1004 -0
- package/.aether/utils/watch-spawn-tree.sh +11 -2
- package/.aether/utils/xml-compose.sh +2 -2
- package/.aether/utils/xml-convert.sh +9 -5
- package/.aether/utils/xml-core.sh +5 -9
- package/.aether/utils/xml-query.sh +4 -4
- package/.aether/workers.md +86 -67
- package/.claude/agents/ant/aether-ambassador.md +2 -1
- package/.claude/agents/ant/aether-archaeologist.md +6 -1
- package/.claude/agents/ant/aether-architect.md +236 -0
- package/.claude/agents/ant/aether-auditor.md +6 -1
- package/.claude/agents/ant/aether-builder.md +38 -1
- package/.claude/agents/ant/aether-chaos.md +2 -1
- package/.claude/agents/ant/aether-chronicler.md +1 -0
- package/.claude/agents/ant/aether-gatekeeper.md +6 -1
- package/.claude/agents/ant/aether-includer.md +1 -0
- package/.claude/agents/ant/aether-keeper.md +1 -0
- package/.claude/agents/ant/aether-measurer.md +6 -1
- package/.claude/agents/ant/aether-oracle.md +237 -0
- package/.claude/agents/ant/aether-probe.md +2 -1
- package/.claude/agents/ant/aether-queen.md +6 -1
- package/.claude/agents/ant/aether-route-setter.md +6 -1
- package/.claude/agents/ant/aether-sage.md +68 -3
- package/.claude/agents/ant/aether-scout.md +38 -1
- package/.claude/agents/ant/aether-surveyor-disciplines.md +2 -1
- package/.claude/agents/ant/aether-surveyor-nest.md +2 -1
- package/.claude/agents/ant/aether-surveyor-pathogens.md +2 -1
- package/.claude/agents/ant/aether-surveyor-provisions.md +2 -1
- package/.claude/agents/ant/aether-tracker.md +6 -1
- package/.claude/agents/ant/aether-watcher.md +37 -1
- package/.claude/agents/ant/aether-weaver.md +2 -1
- package/.claude/commands/ant/archaeology.md +1 -8
- package/.claude/commands/ant/build.md +43 -1159
- package/.claude/commands/ant/chaos.md +1 -14
- package/.claude/commands/ant/colonize.md +3 -14
- package/.claude/commands/ant/continue.md +40 -1026
- package/.claude/commands/ant/council.md +213 -15
- package/.claude/commands/ant/data-clean.md +81 -0
- package/.claude/commands/ant/dream.md +12 -9
- package/.claude/commands/ant/entomb.md +62 -87
- package/.claude/commands/ant/export-signals.md +57 -0
- package/.claude/commands/ant/feedback.md +18 -0
- package/.claude/commands/ant/flag.md +12 -0
- package/.claude/commands/ant/flags.md +22 -8
- package/.claude/commands/ant/focus.md +18 -0
- package/.claude/commands/ant/help.md +40 -8
- package/.claude/commands/ant/history.md +3 -0
- package/.claude/commands/ant/import-signals.md +71 -0
- package/.claude/commands/ant/init.md +349 -191
- package/.claude/commands/ant/insert-phase.md +105 -0
- package/.claude/commands/ant/interpret.md +11 -0
- package/.claude/commands/ant/lay-eggs.md +167 -158
- package/.claude/commands/ant/maturity.md +22 -11
- package/.claude/commands/ant/memory-details.md +77 -0
- package/.claude/commands/ant/migrate-state.md +6 -0
- package/.claude/commands/ant/oracle.md +317 -62
- package/.claude/commands/ant/organize.md +10 -5
- package/.claude/commands/ant/patrol.md +620 -0
- package/.claude/commands/ant/pause-colony.md +8 -22
- package/.claude/commands/ant/phase.md +26 -37
- package/.claude/commands/ant/pheromones.md +156 -0
- package/.claude/commands/ant/plan.md +199 -50
- package/.claude/commands/ant/preferences.md +65 -0
- package/.claude/commands/ant/quick.md +100 -0
- package/.claude/commands/ant/redirect.md +18 -0
- package/.claude/commands/ant/resume-colony.md +37 -22
- package/.claude/commands/ant/resume.md +60 -7
- package/.claude/commands/ant/run.md +231 -0
- package/.claude/commands/ant/seal.md +506 -78
- package/.claude/commands/ant/skill-create.md +286 -0
- package/.claude/commands/ant/status.md +171 -1
- package/.claude/commands/ant/swarm.md +11 -23
- package/.claude/commands/ant/tunnels.md +1 -0
- package/.claude/commands/ant/update.md +58 -135
- package/.claude/commands/ant/verify-castes.md +90 -42
- package/.claude/commands/ant/watch.md +1 -0
- package/.opencode/agents/aether-ambassador.md +1 -1
- package/.opencode/agents/aether-architect.md +133 -0
- package/.opencode/agents/aether-builder.md +3 -3
- package/.opencode/agents/aether-oracle.md +137 -0
- package/.opencode/agents/aether-queen.md +1 -1
- package/.opencode/agents/aether-route-setter.md +1 -1
- package/.opencode/agents/aether-scout.md +1 -1
- package/.opencode/agents/aether-surveyor-disciplines.md +6 -1
- package/.opencode/agents/aether-surveyor-nest.md +6 -1
- package/.opencode/agents/aether-surveyor-pathogens.md +6 -1
- package/.opencode/agents/aether-surveyor-provisions.md +6 -1
- package/.opencode/agents/aether-tracker.md +1 -1
- package/.opencode/agents/aether-watcher.md +1 -1
- package/.opencode/agents/aether-weaver.md +1 -1
- package/.opencode/commands/ant/archaeology.md +7 -14
- package/.opencode/commands/ant/build.md +54 -88
- package/.opencode/commands/ant/chaos.md +7 -24
- package/.opencode/commands/ant/colonize.md +10 -17
- package/.opencode/commands/ant/continue.md +595 -66
- package/.opencode/commands/ant/council.md +150 -18
- package/.opencode/commands/ant/data-clean.md +77 -0
- package/.opencode/commands/ant/dream.md +15 -17
- package/.opencode/commands/ant/entomb.md +28 -18
- package/.opencode/commands/ant/export-signals.md +54 -0
- package/.opencode/commands/ant/feedback.md +24 -5
- package/.opencode/commands/ant/flag.md +16 -4
- package/.opencode/commands/ant/flags.md +24 -10
- package/.opencode/commands/ant/focus.md +22 -5
- package/.opencode/commands/ant/help.md +41 -8
- package/.opencode/commands/ant/history.md +9 -0
- package/.opencode/commands/ant/import-signals.md +68 -0
- package/.opencode/commands/ant/init.md +396 -154
- package/.opencode/commands/ant/insert-phase.md +111 -0
- package/.opencode/commands/ant/interpret.md +16 -0
- package/.opencode/commands/ant/lay-eggs.md +184 -112
- package/.opencode/commands/ant/maturity.md +18 -2
- package/.opencode/commands/ant/memory-details.md +83 -0
- package/.opencode/commands/ant/migrate-state.md +12 -0
- package/.opencode/commands/ant/oracle.md +322 -67
- package/.opencode/commands/ant/organize.md +14 -12
- package/.opencode/commands/ant/patrol.md +626 -0
- package/.opencode/commands/ant/pause-colony.md +12 -29
- package/.opencode/commands/ant/phase.md +30 -40
- package/.opencode/commands/ant/pheromones.md +162 -0
- package/.opencode/commands/ant/plan.md +210 -57
- package/.opencode/commands/ant/preferences.md +71 -0
- package/.opencode/commands/ant/quick.md +91 -0
- package/.opencode/commands/ant/redirect.md +22 -5
- package/.opencode/commands/ant/resume-colony.md +41 -29
- package/.opencode/commands/ant/resume.md +80 -20
- package/.opencode/commands/ant/run.md +237 -0
- package/.opencode/commands/ant/seal.md +230 -25
- package/.opencode/commands/ant/skill-create.md +63 -0
- package/.opencode/commands/ant/status.md +125 -30
- package/.opencode/commands/ant/swarm.md +3 -345
- package/.opencode/commands/ant/tunnels.md +3 -9
- package/.opencode/commands/ant/update.md +63 -127
- package/.opencode/commands/ant/verify-castes.md +96 -42
- package/.opencode/commands/ant/watch.md +7 -0
- package/CHANGELOG.md +368 -1
- package/README.md +195 -324
- package/bin/cli.js +236 -429
- package/bin/generate-commands.js +186 -0
- package/bin/generate-commands.sh +128 -89
- package/bin/lib/spawn-logger.js +0 -15
- package/bin/lib/update-transaction.js +285 -35
- package/bin/npx-install.js +178 -0
- package/bin/validate-package.sh +85 -3
- package/package.json +16 -4
- package/.aether/CONTEXT.md +0 -160
- package/.aether/docs/QUEEN.md +0 -84
- package/.aether/exchange/colony-registry.xml +0 -11
- package/.aether/exchange/pheromones.xml +0 -87
- package/.aether/exchange/queen-wisdom.xml +0 -14
- package/.aether/model-profiles.yaml +0 -100
- package/.aether/utils/spawn-with-model.sh +0 -56
- package/bin/lib/model-profiles.js +0 -445
- package/bin/lib/model-verify.js +0 -288
- package/bin/lib/proxy-health.js +0 -253
- package/bin/lib/telemetry.js +0 -441
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
name: "ant:export-signals"
|
|
2
|
+
description: "Export colony pheromone signals to portable XML format"
|
|
3
|
+
body: |
|
|
4
|
+
You are the **Queen**. Export colony pheromone signals to portable XML format.
|
|
5
|
+
|
|
6
|
+
## Instructions
|
|
7
|
+
|
|
8
|
+
The optional output path is: `{{ARGUMENTS}}`
|
|
9
|
+
|
|
10
|
+
### Step 1: Validate
|
|
11
|
+
|
|
12
|
+
Read `.aether/data/COLONY_STATE.json`.
|
|
13
|
+
If file missing or `goal: null` -> "No colony initialized. Run /ant:init first.", stop.
|
|
14
|
+
|
|
15
|
+
Parse `{{ARGUMENTS}}`:
|
|
16
|
+
- If a path is provided, use it as the output path.
|
|
17
|
+
- If empty, default to `.aether/exchange/pheromones.xml`.
|
|
18
|
+
|
|
19
|
+
### Step 2: Export
|
|
20
|
+
|
|
21
|
+
Run using the Bash tool with description "Exporting pheromone signals to XML...":
|
|
22
|
+
```bash
|
|
23
|
+
bash .aether/aether-utils.sh pheromone-export-xml "<output_path>"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Parse the returned JSON:
|
|
27
|
+
- If `.ok` is `true`: extract `.result.path` and `.result.validated` (if present).
|
|
28
|
+
- If `.ok` is `false`: check `.error` for details. If error mentions `xmllint` or `E_FEATURE_UNAVAILABLE`, display: "XML export requires xmllint. Install with: xcode-select --install (macOS) or apt-get install libxml2-utils (Linux)." Otherwise display the error message and stop.
|
|
29
|
+
|
|
30
|
+
### Step 3: Confirm
|
|
31
|
+
|
|
32
|
+
{{#claude}}
|
|
33
|
+
Output (3-5 lines, no banners):
|
|
34
|
+
```
|
|
35
|
+
Pheromone signals exported to XML
|
|
36
|
+
Path: <output_path>
|
|
37
|
+
Validated: <yes/no based on .result.validated>
|
|
38
|
+
|
|
39
|
+
Share this file with another colony using /ant:import-signals.
|
|
40
|
+
```
|
|
41
|
+
{{/claude}}
|
|
42
|
+
{{#opencode}}
|
|
43
|
+
Output:
|
|
44
|
+
```
|
|
45
|
+
Export colony pheromone signals to portable XML format
|
|
46
|
+
|
|
47
|
+
Path: <output_path>
|
|
48
|
+
Validated: <yes/no based on .result.validated>
|
|
49
|
+
|
|
50
|
+
Share this file with another colony using /ant:import-signals.
|
|
51
|
+
```
|
|
52
|
+
{{/opencode}}
|
|
53
|
+
|
|
54
|
+
{{#claude}}
|
|
55
|
+
### Step 4: Next Up
|
|
56
|
+
|
|
57
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
58
|
+
```bash
|
|
59
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
60
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
61
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
62
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
63
|
+
```
|
|
64
|
+
{{/claude}}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
name: "ant:feedback"
|
|
2
|
+
description: "Emit FEEDBACK signal to provide guidance to colony"
|
|
3
|
+
description_opencode: "💬🐜🧠🐜💬 Emit FEEDBACK signal to provide guidance to colony"
|
|
4
|
+
body: |
|
|
5
|
+
{{#claude}}
|
|
6
|
+
You are the **Queen**. Emit a FEEDBACK pheromone signal.
|
|
7
|
+
{{/claude}}
|
|
8
|
+
{{#opencode}}
|
|
9
|
+
You are the **Queen**. Emit a FEEDBACK signal.
|
|
10
|
+
{{/opencode}}
|
|
11
|
+
|
|
12
|
+
## Instructions
|
|
13
|
+
|
|
14
|
+
The feedback message is: `{{ARGUMENTS}}`
|
|
15
|
+
|
|
16
|
+
### Step 1: Validate
|
|
17
|
+
|
|
18
|
+
If `{{ARGUMENTS}}` empty -> show usage: `/ant:feedback <message>`, stop.
|
|
19
|
+
If content > 500 chars -> "Signal content too long (max 500 chars)", stop.
|
|
20
|
+
|
|
21
|
+
{{#claude}}
|
|
22
|
+
Parse optional flags from `$ARGUMENTS`:
|
|
23
|
+
- `--ttl <value>`: signal lifetime (e.g., `2h`, `1d`, `7d`). Default: `phase_end`.
|
|
24
|
+
- Strip flags from content before using it as the feedback message.
|
|
25
|
+
{{/claude}}
|
|
26
|
+
|
|
27
|
+
### Step 2: Write Signal and Create Instinct
|
|
28
|
+
|
|
29
|
+
Read `.aether/data/COLONY_STATE.json`.
|
|
30
|
+
If `goal: null` -> "No colony initialized.", stop.
|
|
31
|
+
|
|
32
|
+
{{#claude}}
|
|
33
|
+
{{TOOL_PREFIX "Recording colony feedback..."}}
|
|
34
|
+
```bash
|
|
35
|
+
bash .aether/aether-utils.sh pheromone-write FEEDBACK "<content>" --strength 0.7 --reason "User feedback guidance" --ttl <ttl>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Create instinct from feedback:**
|
|
39
|
+
User feedback is high-value learning. Generate ISO-8601 timestamp and append to `memory.instincts` in COLONY_STATE.json:
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"id": "instinct_<timestamp>",
|
|
43
|
+
"trigger": "<infer from feedback context>",
|
|
44
|
+
"action": "<the feedback guidance>",
|
|
45
|
+
"confidence": 0.7,
|
|
46
|
+
"domain": "<infer: testing|architecture|code-style|debugging|workflow>",
|
|
47
|
+
"source": "user_feedback",
|
|
48
|
+
"evidence": ["User feedback: <content>"],
|
|
49
|
+
"created_at": "<ISO-8601>",
|
|
50
|
+
"last_applied": null,
|
|
51
|
+
"applications": 0,
|
|
52
|
+
"successes": 0
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Write COLONY_STATE.json.
|
|
57
|
+
|
|
58
|
+
### Step 2.5: Update Context Document
|
|
59
|
+
|
|
60
|
+
{{TOOL_PREFIX "Updating context document..."}}
|
|
61
|
+
```bash
|
|
62
|
+
bash .aether/aether-utils.sh context-update constraint feedback "<content>" "user" 2>/dev/null || true
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Step 3: Get Active Counts
|
|
66
|
+
|
|
67
|
+
{{TOOL_PREFIX "Counting active signals..."}}
|
|
68
|
+
```bash
|
|
69
|
+
bash .aether/aether-utils.sh pheromone-count
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Step 4: Confirm
|
|
73
|
+
|
|
74
|
+
Output (4 lines, no banners):
|
|
75
|
+
```
|
|
76
|
+
FEEDBACK signal emitted
|
|
77
|
+
Note: "<content truncated to 60 chars>"
|
|
78
|
+
Strength: 0.7 | Expires: <phase end or ttl value>
|
|
79
|
+
Active signals: <focus_count> FOCUS, <redirect_count> REDIRECT, <feedback_count> FEEDBACK
|
|
80
|
+
|
|
81
|
+
Instinct created: [0.7] <domain>: <action summary>
|
|
82
|
+
```
|
|
83
|
+
{{/claude}}
|
|
84
|
+
{{#opencode}}
|
|
85
|
+
Generate ISO-8601 timestamp.
|
|
86
|
+
|
|
87
|
+
**Add signal:**
|
|
88
|
+
Append to `signals` array:
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"id": "feedback_<timestamp_ms>",
|
|
92
|
+
"type": "FEEDBACK",
|
|
93
|
+
"content": "<feedback message>",
|
|
94
|
+
"priority": "low",
|
|
95
|
+
"created_at": "<ISO-8601>",
|
|
96
|
+
"expires_at": "phase_end"
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Create instinct from feedback:**
|
|
101
|
+
User feedback is high-value learning. Append to `memory.instincts`:
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"id": "instinct_<timestamp>",
|
|
105
|
+
"trigger": "<infer from feedback context>",
|
|
106
|
+
"action": "<the feedback guidance>",
|
|
107
|
+
"confidence": 0.7,
|
|
108
|
+
"domain": "<infer: testing|architecture|code-style|debugging|workflow>",
|
|
109
|
+
"source": "user_feedback",
|
|
110
|
+
"evidence": ["User feedback: <content>"],
|
|
111
|
+
"created_at": "<ISO-8601>",
|
|
112
|
+
"last_applied": null,
|
|
113
|
+
"applications": 0,
|
|
114
|
+
"successes": 0
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Write COLONY_STATE.json.
|
|
119
|
+
|
|
120
|
+
**Write pheromone signal and update context:**
|
|
121
|
+
```bash
|
|
122
|
+
bash .aether/aether-utils.sh pheromone-write FEEDBACK "$normalized_args" --strength 0.7 --reason "User feedback guidance" 2>/dev/null || true
|
|
123
|
+
bash .aether/aether-utils.sh context-update constraint feedback "$normalized_args" "user" 2>/dev/null || true
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Step 3: Confirm
|
|
127
|
+
|
|
128
|
+
Output header:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
💬🐜🧠🐜💬 ═══════════════════════════════════════════════════
|
|
132
|
+
F E E D B A C K S I G N A L
|
|
133
|
+
═══════════════════════════════════════════════════ 💬🐜🧠🐜💬
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Then output:
|
|
137
|
+
```
|
|
138
|
+
💬 FEEDBACK signal emitted
|
|
139
|
+
|
|
140
|
+
"{content preview}"
|
|
141
|
+
|
|
142
|
+
🧠 Instinct created: [0.7] <domain>: <action summary>
|
|
143
|
+
|
|
144
|
+
🐜 The colony will remember this guidance.
|
|
145
|
+
```
|
|
146
|
+
{{/opencode}}
|
|
147
|
+
|
|
148
|
+
{{#claude}}
|
|
149
|
+
### Step 5: Next Up
|
|
150
|
+
|
|
151
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
152
|
+
```bash
|
|
153
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
154
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
155
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
156
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
157
|
+
```
|
|
158
|
+
{{/claude}}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
name: "ant:flag"
|
|
2
|
+
description: "🚩🐜📋🐜🚩 Create a project-specific flag (blocker, issue, or note)"
|
|
3
|
+
body: |
|
|
4
|
+
You are the **Queen**. Create a project-specific flag.
|
|
5
|
+
|
|
6
|
+
## Instructions
|
|
7
|
+
|
|
8
|
+
The flag is: `{{ARGUMENTS}}`
|
|
9
|
+
|
|
10
|
+
### Step 1: Parse Arguments
|
|
11
|
+
|
|
12
|
+
Parse `{{ARGUMENTS}}` for:
|
|
13
|
+
- `--type` or `-t`: blocker | issue | note (default: issue)
|
|
14
|
+
- `--phase` or `-p`: phase number (optional)
|
|
15
|
+
- Remaining text: the flag title/description
|
|
16
|
+
|
|
17
|
+
Examples:
|
|
18
|
+
- `/ant:flag "Build fails on auth module"` → issue type
|
|
19
|
+
- `/ant:flag --type blocker "API rate limit hit"` → blocker type
|
|
20
|
+
- `/ant:flag -t note -p 3 "Consider refactoring later"` → note for phase 3
|
|
21
|
+
|
|
22
|
+
If `{{ARGUMENTS}}` is empty:
|
|
23
|
+
```
|
|
24
|
+
Usage: /ant:flag "<description>" [--type blocker|issue|note] [--phase N]
|
|
25
|
+
|
|
26
|
+
Types:
|
|
27
|
+
blocker Critical issue that blocks phase advancement
|
|
28
|
+
issue Warning that should be addressed (default)
|
|
29
|
+
note Informational for future reference
|
|
30
|
+
|
|
31
|
+
Examples:
|
|
32
|
+
/ant:flag "Build fails on auth"
|
|
33
|
+
/ant:flag --type blocker "Tests hanging"
|
|
34
|
+
/ant:flag -t note "Consider refactoring"
|
|
35
|
+
```
|
|
36
|
+
Stop here.
|
|
37
|
+
|
|
38
|
+
### Step 2: Validate Colony
|
|
39
|
+
|
|
40
|
+
Read `.aether/data/COLONY_STATE.json`.
|
|
41
|
+
If file missing or `goal: null`:
|
|
42
|
+
```
|
|
43
|
+
No colony initialized. Run /ant:init first.
|
|
44
|
+
```
|
|
45
|
+
Stop here.
|
|
46
|
+
|
|
47
|
+
### Step 3: Create Flag
|
|
48
|
+
|
|
49
|
+
{{TOOL_PREFIX "Raising colony flag..."}}
|
|
50
|
+
```bash
|
|
51
|
+
bash .aether/aether-utils.sh flag-add "{type}" "{title}" "{description}" "manual" {phase_or_null}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Parse the result for the flag ID.
|
|
55
|
+
|
|
56
|
+
### Step 4: Confirm
|
|
57
|
+
|
|
58
|
+
Output header based on flag type:
|
|
59
|
+
|
|
60
|
+
**For blocker:**
|
|
61
|
+
```
|
|
62
|
+
{{#claude}}
|
|
63
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
64
|
+
🚩🐜📋🐜🚩 B L O C K E R F L A G C R E A T E D
|
|
65
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
66
|
+
{{/claude}}
|
|
67
|
+
{{#opencode}}
|
|
68
|
+
🚩🐜📋🐜🚩 ═══════════════════════════════════════════════════
|
|
69
|
+
B L O C K E R F L A G C R E A T E D
|
|
70
|
+
═══════════════════════════════════════════════════ 🚩🐜📋🐜🚩
|
|
71
|
+
{{/opencode}}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**For issue:**
|
|
75
|
+
```
|
|
76
|
+
{{#claude}}
|
|
77
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
78
|
+
🚩🐜📋🐜🚩 I S S U E F L A G C R E A T E D
|
|
79
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
80
|
+
{{/claude}}
|
|
81
|
+
{{#opencode}}
|
|
82
|
+
🚩🐜📋🐜🚩 ═══════════════════════════════════════════════════
|
|
83
|
+
I S S U E F L A G C R E A T E D
|
|
84
|
+
═══════════════════════════════════════════════════ 🚩🐜📋🐜🚩
|
|
85
|
+
{{/opencode}}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**For note:**
|
|
89
|
+
```
|
|
90
|
+
{{#claude}}
|
|
91
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
92
|
+
🚩🐜📋🐜🚩 N O T E F L A G C R E A T E D
|
|
93
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
94
|
+
{{/claude}}
|
|
95
|
+
{{#opencode}}
|
|
96
|
+
🚩🐜📋🐜🚩 ═══════════════════════════════════════════════════
|
|
97
|
+
N O T E F L A G C R E A T E D
|
|
98
|
+
═══════════════════════════════════════════════════ 🚩🐜📋🐜🚩
|
|
99
|
+
{{/opencode}}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Then output based on flag type:
|
|
103
|
+
|
|
104
|
+
**For blocker:**
|
|
105
|
+
```
|
|
106
|
+
🚫 BLOCKER flag created
|
|
107
|
+
|
|
108
|
+
"{title}"
|
|
109
|
+
|
|
110
|
+
ID: {flag_id}
|
|
111
|
+
Phase: {phase or "all"}
|
|
112
|
+
|
|
113
|
+
⚠️ This will BLOCK phase advancement until resolved.
|
|
114
|
+
Use /ant:flags to view all flags.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**For issue:**
|
|
118
|
+
```
|
|
119
|
+
⚠️ ISSUE flag created
|
|
120
|
+
|
|
121
|
+
"{title}"
|
|
122
|
+
|
|
123
|
+
ID: {flag_id}
|
|
124
|
+
Phase: {phase or "all"}
|
|
125
|
+
|
|
126
|
+
Use /ant:flags to view all flags.
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**For note:**
|
|
130
|
+
```
|
|
131
|
+
📝 NOTE flag created
|
|
132
|
+
|
|
133
|
+
"{title}"
|
|
134
|
+
|
|
135
|
+
ID: {flag_id}
|
|
136
|
+
Phase: {phase or "all"}
|
|
137
|
+
|
|
138
|
+
Use /ant:flags to view all flags.
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
{{#claude}}
|
|
142
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
143
|
+
```bash
|
|
144
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
145
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
146
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
147
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
148
|
+
```
|
|
149
|
+
{{/claude}}
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Flag Lifecycle
|
|
154
|
+
|
|
155
|
+
1. **Created** - Flag is active and visible
|
|
156
|
+
2. **Acknowledged** - Flag noted but continuing (issues/notes only)
|
|
157
|
+
3. **Resolved** - Flag closed with resolution message
|
|
158
|
+
4. **Auto-resolved** - Blockers auto-resolve on build_pass
|
|
159
|
+
|
|
160
|
+
Blockers CANNOT be acknowledged - they must be resolved before phase advancement.
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
name: "ant:flags"
|
|
2
|
+
description: "📋🐜🚩🐜📋 List project flags (blockers, issues, notes)"
|
|
3
|
+
body: |
|
|
4
|
+
You are the **Queen**. Display project flags.
|
|
5
|
+
|
|
6
|
+
## Instructions
|
|
7
|
+
|
|
8
|
+
Arguments: `{{ARGUMENTS}}`
|
|
9
|
+
|
|
10
|
+
### Step 1: Parse Arguments
|
|
11
|
+
|
|
12
|
+
Parse `{{ARGUMENTS}}` for:
|
|
13
|
+
- `--all` or `-a`: Show resolved flags too
|
|
14
|
+
- `--type` or `-t`: Filter by type (blocker|issue|note)
|
|
15
|
+
- `--phase` or `-p`: Filter by phase number
|
|
16
|
+
- `--resolve` or `-r`: Resolve a specific flag ID
|
|
17
|
+
- `--ack` or `-k`: Acknowledge a specific flag ID
|
|
18
|
+
|
|
19
|
+
Examples:
|
|
20
|
+
- `/ant:flags` → Show active flags
|
|
21
|
+
- `/ant:flags --all` → Include resolved flags
|
|
22
|
+
- `/ant:flags -t blocker` → Show only blockers
|
|
23
|
+
- `/ant:flags --resolve flag_123 "Fixed by commit abc"` → Resolve a flag
|
|
24
|
+
- `/ant:flags --ack flag_456` → Acknowledge an issue
|
|
25
|
+
|
|
26
|
+
### Step 2: Handle Resolution/Acknowledgment
|
|
27
|
+
|
|
28
|
+
{{#claude}}
|
|
29
|
+
If `--resolve` was provided, run using the Bash tool with description "Resolving colony flag...":
|
|
30
|
+
{{/claude}}
|
|
31
|
+
{{#opencode}}
|
|
32
|
+
If `--resolve` was provided:
|
|
33
|
+
{{/opencode}}
|
|
34
|
+
```bash
|
|
35
|
+
bash .aether/aether-utils.sh flag-resolve "{flag_id}" "{resolution_message}"
|
|
36
|
+
```
|
|
37
|
+
Output:
|
|
38
|
+
```
|
|
39
|
+
✅ Flag resolved: {flag_id}
|
|
40
|
+
|
|
41
|
+
Resolution: {message}
|
|
42
|
+
```
|
|
43
|
+
Stop here.
|
|
44
|
+
|
|
45
|
+
{{#claude}}
|
|
46
|
+
If `--ack` was provided, run using the Bash tool with description "Acknowledging colony flag...":
|
|
47
|
+
{{/claude}}
|
|
48
|
+
{{#opencode}}
|
|
49
|
+
If `--ack` was provided:
|
|
50
|
+
{{/opencode}}
|
|
51
|
+
```bash
|
|
52
|
+
bash .aether/aether-utils.sh flag-acknowledge "{flag_id}"
|
|
53
|
+
```
|
|
54
|
+
Output:
|
|
55
|
+
```
|
|
56
|
+
👁️ Flag acknowledged: {flag_id}
|
|
57
|
+
|
|
58
|
+
Flag noted. Continuing with work.
|
|
59
|
+
```
|
|
60
|
+
Stop here.
|
|
61
|
+
|
|
62
|
+
### Step 3: List Flags
|
|
63
|
+
|
|
64
|
+
{{#claude}}
|
|
65
|
+
Run using the Bash tool with description "Loading colony flags...":
|
|
66
|
+
{{/claude}}
|
|
67
|
+
{{#opencode}}
|
|
68
|
+
Run:
|
|
69
|
+
{{/opencode}}
|
|
70
|
+
```bash
|
|
71
|
+
bash .aether/aether-utils.sh flag-list {options}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Parse result for flags array.
|
|
75
|
+
|
|
76
|
+
### Step 4: Display
|
|
77
|
+
|
|
78
|
+
Output header:
|
|
79
|
+
|
|
80
|
+
{{#claude}}
|
|
81
|
+
```
|
|
82
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
83
|
+
📋🐜🚩🐜📋 P R O J E C T F L A G S
|
|
84
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
85
|
+
{{/claude}}
|
|
86
|
+
{{#opencode}}
|
|
87
|
+
```
|
|
88
|
+
📋🐜🚩🐜📋 ═══════════════════════════════════════════════════
|
|
89
|
+
P R O J E C T F L A G S
|
|
90
|
+
═══════════════════════════════════════════════════ 📋🐜🚩🐜📋
|
|
91
|
+
{{/opencode}}
|
|
92
|
+
|
|
93
|
+
If no flags:
|
|
94
|
+
```
|
|
95
|
+
.-.
|
|
96
|
+
(o o) AETHER COLONY
|
|
97
|
+
| O | Flags
|
|
98
|
+
`-"
|
|
99
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
100
|
+
|
|
101
|
+
✨ No active flags! Colony is clear.
|
|
102
|
+
|
|
103
|
+
{if --all was used: "No resolved flags either."}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
If flags exist:
|
|
107
|
+
```
|
|
108
|
+
.-.
|
|
109
|
+
(o o) AETHER COLONY
|
|
110
|
+
| O | Flags
|
|
111
|
+
`-"
|
|
112
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
113
|
+
|
|
114
|
+
{for each flag, grouped by type:}
|
|
115
|
+
|
|
116
|
+
🚫 BLOCKERS ({count})
|
|
117
|
+
{flag_id}: {title}
|
|
118
|
+
Phase: {phase or "all"} | Created: {date}
|
|
119
|
+
└─ {description preview}
|
|
120
|
+
|
|
121
|
+
⚠️ ISSUES ({count})
|
|
122
|
+
{flag_id}: {title} {if acknowledged: "[ACK]"}
|
|
123
|
+
Phase: {phase or "all"} | Created: {date}
|
|
124
|
+
└─ {description preview}
|
|
125
|
+
|
|
126
|
+
📝 NOTES ({count})
|
|
127
|
+
{flag_id}: {title}
|
|
128
|
+
Phase: {phase or "all"} | Created: {date}
|
|
129
|
+
└─ {description preview}
|
|
130
|
+
|
|
131
|
+
{if --all and resolved flags exist:}
|
|
132
|
+
|
|
133
|
+
✅ RESOLVED ({count})
|
|
134
|
+
{flag_id}: {title}
|
|
135
|
+
Resolved: {date} | {resolution}
|
|
136
|
+
|
|
137
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
138
|
+
|
|
139
|
+
Summary: {blockers} blockers | {issues} issues | {notes} notes
|
|
140
|
+
|
|
141
|
+
{if blockers > 0:}
|
|
142
|
+
⚠️ Blockers must be resolved before /ant:continue
|
|
143
|
+
|
|
144
|
+
Commands:
|
|
145
|
+
/ant:flags --resolve {id} "message" Resolve a flag
|
|
146
|
+
/ant:flags --ack {id} Acknowledge an issue
|
|
147
|
+
/ant:flag "description" Create new flag
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
{{#claude}}
|
|
151
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
152
|
+
```bash
|
|
153
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
154
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
155
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
156
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
157
|
+
```
|
|
158
|
+
{{/claude}}
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Quick Actions
|
|
163
|
+
|
|
164
|
+
**Resolve a flag:**
|
|
165
|
+
```
|
|
166
|
+
/ant:flags --resolve flag_123456 "Fixed in commit abc123"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**Acknowledge an issue:**
|
|
170
|
+
```
|
|
171
|
+
/ant:flags --ack flag_789012
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Create a new flag:**
|
|
175
|
+
```
|
|
176
|
+
/ant:flag --type blocker "Critical issue here"
|
|
177
|
+
```
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
name: "ant:focus"
|
|
2
|
+
description: "Emit FOCUS signal to guide colony attention"
|
|
3
|
+
description_opencode: "🔦🐜🔍🐜🔦 Emit FOCUS signal to guide colony attention"
|
|
4
|
+
body: |
|
|
5
|
+
{{#claude}}
|
|
6
|
+
You are the **Queen**. Emit a FOCUS pheromone signal.
|
|
7
|
+
{{/claude}}
|
|
8
|
+
{{#opencode}}
|
|
9
|
+
You are the **Queen**. Add a FOCUS constraint.
|
|
10
|
+
{{/opencode}}
|
|
11
|
+
|
|
12
|
+
## Instructions
|
|
13
|
+
|
|
14
|
+
The focus area is: `{{ARGUMENTS}}`
|
|
15
|
+
|
|
16
|
+
### Step 1: Validate
|
|
17
|
+
|
|
18
|
+
If `{{ARGUMENTS}}` empty -> show usage: `/ant:focus <area>`, stop.
|
|
19
|
+
If content > 500 chars -> "Focus content too long (max 500 chars)", stop.
|
|
20
|
+
|
|
21
|
+
{{#claude}}
|
|
22
|
+
Parse optional flags from `$ARGUMENTS`:
|
|
23
|
+
- `--ttl <value>`: signal lifetime (e.g., `2h`, `1d`, `7d`). Default: `phase_end`.
|
|
24
|
+
- Strip flags from content before using it as the focus area.
|
|
25
|
+
{{/claude}}
|
|
26
|
+
|
|
27
|
+
### Step 2: Write Signal
|
|
28
|
+
|
|
29
|
+
Read `.aether/data/COLONY_STATE.json`.
|
|
30
|
+
If `goal: null` -> "No colony initialized.", stop.
|
|
31
|
+
|
|
32
|
+
{{#claude}}
|
|
33
|
+
{{TOOL_PREFIX "Setting colony focus..."}}
|
|
34
|
+
```bash
|
|
35
|
+
bash .aether/aether-utils.sh pheromone-write FOCUS "<content>" --strength 0.8 --reason "User directed colony attention" --ttl <ttl>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Parse the returned JSON for the signal ID.
|
|
39
|
+
|
|
40
|
+
### Step 2.5: Update Context Document
|
|
41
|
+
|
|
42
|
+
{{TOOL_PREFIX "Updating context document..."}}
|
|
43
|
+
```bash
|
|
44
|
+
bash .aether/aether-utils.sh context-update constraint focus "<content>" "user" 2>/dev/null || true
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Step 3: Get Active Counts
|
|
48
|
+
|
|
49
|
+
{{TOOL_PREFIX "Counting active signals..."}}
|
|
50
|
+
```bash
|
|
51
|
+
bash .aether/aether-utils.sh pheromone-count
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Step 4: Confirm
|
|
55
|
+
|
|
56
|
+
Output (3-4 lines, no banners):
|
|
57
|
+
```
|
|
58
|
+
FOCUS signal emitted
|
|
59
|
+
Area: "<content truncated to 60 chars>"
|
|
60
|
+
Strength: 0.8 | Expires: <phase end or ttl value>
|
|
61
|
+
Active signals: <focus_count> FOCUS, <redirect_count> REDIRECT, <feedback_count> FEEDBACK
|
|
62
|
+
```
|
|
63
|
+
{{/claude}}
|
|
64
|
+
{{#opencode}}
|
|
65
|
+
Read `.aether/data/constraints.json`. If file doesn't exist, create it with:
|
|
66
|
+
```json
|
|
67
|
+
{"version": "1.0", "focus": [], "constraints": []}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Append the focus area to the `focus` array.
|
|
71
|
+
|
|
72
|
+
If `focus` array exceeds 5 entries, remove the oldest entries to keep only 5.
|
|
73
|
+
|
|
74
|
+
Write constraints.json.
|
|
75
|
+
|
|
76
|
+
**Write pheromone signal and update context:**
|
|
77
|
+
```bash
|
|
78
|
+
bash .aether/aether-utils.sh pheromone-write FOCUS "$normalized_args" --strength 0.8 --reason "User directed colony attention" 2>/dev/null || true
|
|
79
|
+
bash .aether/aether-utils.sh context-update constraint focus "$normalized_args" "user" 2>/dev/null || true
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Step 3: Confirm
|
|
83
|
+
|
|
84
|
+
Output header:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
🔦🐜🔍🐜🔦 ═══════════════════════════════════════════════════
|
|
88
|
+
F O C U S S I G N A L
|
|
89
|
+
═══════════════════════════════════════════════════ 🔦🐜🔍🐜🔦
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Then output:
|
|
93
|
+
```
|
|
94
|
+
🎯 FOCUS signal emitted
|
|
95
|
+
|
|
96
|
+
"{content preview}"
|
|
97
|
+
|
|
98
|
+
🐜 Colony attention directed.
|
|
99
|
+
```
|
|
100
|
+
{{/opencode}}
|
|
101
|
+
|
|
102
|
+
{{#claude}}
|
|
103
|
+
### Step 5: Next Up
|
|
104
|
+
|
|
105
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
106
|
+
```bash
|
|
107
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
108
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
109
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
110
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
111
|
+
```
|
|
112
|
+
{{/claude}}
|