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,442 @@
|
|
|
1
|
+
name: "ant:colonize"
|
|
2
|
+
description: "📊🐜🗺️🐜📊 Survey territory with 4 parallel scouts for comprehensive colony intelligence"
|
|
3
|
+
body_claude: |
|
|
4
|
+
You are the **Queen**. Dispatch Surveyor Ants to map the territory.
|
|
5
|
+
|
|
6
|
+
The arguments are: `$ARGUMENTS`
|
|
7
|
+
|
|
8
|
+
**Parse arguments:**
|
|
9
|
+
- If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
|
|
10
|
+
- If contains `--force` or `--force-resurvey`: set `force_resurvey = true`
|
|
11
|
+
- Otherwise: set `visual_mode = true`, `force_resurvey = false`
|
|
12
|
+
|
|
13
|
+
<failure_modes>
|
|
14
|
+
### Existing Survey Overwrite
|
|
15
|
+
If .aether/data/survey/ already contains survey documents:
|
|
16
|
+
- Warn before overwriting: "Existing survey found from [date]. Re-surveying will replace it."
|
|
17
|
+
- Options: (1) Continue and overwrite, (2) Keep existing survey, (3) Merge (re-survey only outdated sections)
|
|
18
|
+
|
|
19
|
+
### Surveyor Spawn Failure
|
|
20
|
+
If a surveyor agent fails during codebase exploration:
|
|
21
|
+
- Report which survey document was not produced
|
|
22
|
+
- Partial surveys are acceptable -- note which documents are complete vs. missing
|
|
23
|
+
- Recovery: user can re-run /ant:colonize to regenerate missing surveys
|
|
24
|
+
</failure_modes>
|
|
25
|
+
|
|
26
|
+
<success_criteria>
|
|
27
|
+
Command is complete when:
|
|
28
|
+
- All surveyor agents have completed their exploration
|
|
29
|
+
- Survey documents exist in .aether/data/survey/
|
|
30
|
+
- COLONY_STATE.json reflects colonized status
|
|
31
|
+
- User sees summary of survey findings
|
|
32
|
+
</success_criteria>
|
|
33
|
+
|
|
34
|
+
<read_only>
|
|
35
|
+
Do not touch during colonize:
|
|
36
|
+
- .aether/dreams/ (user notes)
|
|
37
|
+
- .aether/chambers/ (archived colonies)
|
|
38
|
+
- Source code files (survey is read-only exploration)
|
|
39
|
+
- .env* files
|
|
40
|
+
- .claude/settings.json
|
|
41
|
+
- COLONY_STATE.json structure beyond colonize-specific fields
|
|
42
|
+
</read_only>
|
|
43
|
+
|
|
44
|
+
## Instructions
|
|
45
|
+
|
|
46
|
+
### Step 0: Initialize Visual Mode (if enabled)
|
|
47
|
+
|
|
48
|
+
Display header:
|
|
49
|
+
```
|
|
50
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
51
|
+
📊🐜🗺️🐜📊 C O L O N I Z E — T e r r i t o r y S u r v e y
|
|
52
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
53
|
+
|
|
54
|
+
Queen dispatching Surveyor Ants...
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Step 1: Validate
|
|
58
|
+
|
|
59
|
+
Read `.aether/data/COLONY_STATE.json`.
|
|
60
|
+
|
|
61
|
+
**If the file does not exist or cannot be read:**
|
|
62
|
+
1. Create `.aether/data/` directory if it does not exist.
|
|
63
|
+
2. Write a minimal COLONY_STATE.json:
|
|
64
|
+
`{"version": "3.0", "goal": null, "state": "IDLE", "current_phase": 0, "session_id": null, "initialized_at": null, "build_started_at": null, "plan": {"generated_at": null, "confidence": null, "phases": []}, "memory": {"phase_learnings": [], "decisions": [], "instincts": []}, "errors": {"records": [], "flagged_patterns": []}, "signals": [], "graveyards": [], "events": []}`
|
|
65
|
+
3. Output: "No colony state found. Bootstrapping minimal state for territory survey."
|
|
66
|
+
|
|
67
|
+
**If the file exists:** continue.
|
|
68
|
+
|
|
69
|
+
**If `milestone` == `"Crowned Anthill"`:** output "This colony has been sealed. Start a new colony with `/ant:init \"new goal\"`.", stop.
|
|
70
|
+
|
|
71
|
+
**If `plan.phases` is not empty:** output "Colony already has phases. Use /ant:continue.", stop.
|
|
72
|
+
|
|
73
|
+
### Step 2: Quick Surface Scan (for session context)
|
|
74
|
+
|
|
75
|
+
Use Glob to find key files (read up to 20 total) to provide context for the survey.
|
|
76
|
+
|
|
77
|
+
**Package manifests:**
|
|
78
|
+
- package.json, Cargo.toml, pyproject.toml, go.mod, Gemfile, pom.xml, build.gradle
|
|
79
|
+
|
|
80
|
+
**Documentation:**
|
|
81
|
+
- README.md, README.*, docs/README.md
|
|
82
|
+
|
|
83
|
+
**Entry points:**
|
|
84
|
+
- src/index.*, src/main.*, main.*, app.*, lib/index.*, index.*
|
|
85
|
+
|
|
86
|
+
**Config:**
|
|
87
|
+
- tsconfig.json, .eslintrc.*, jest.config.*, vite.config.*, webpack.config.*
|
|
88
|
+
|
|
89
|
+
Read found files. Extract basic info:
|
|
90
|
+
- Tech stack (language, framework)
|
|
91
|
+
- Entry points (main files)
|
|
92
|
+
- Key directories
|
|
93
|
+
|
|
94
|
+
### Step 3: Dispatch Surveyor Ants (Parallel)
|
|
95
|
+
|
|
96
|
+
Create the survey directory:
|
|
97
|
+
```bash
|
|
98
|
+
mkdir -p .aether/data/survey
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Step 3.1: Check for Stale Survey Session
|
|
102
|
+
|
|
103
|
+
Before dispatching surveyors, check for existing survey files and capture session start time:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
SURVEY_START=$(date +%s)
|
|
107
|
+
|
|
108
|
+
# Check for stale survey files
|
|
109
|
+
stale_check=$(bash .aether/aether-utils.sh session-verify-fresh --command survey "" "$SURVEY_START")
|
|
110
|
+
has_stale=$(echo "$stale_check" | jq -r '.stale | length')
|
|
111
|
+
has_fresh=$(echo "$stale_check" | jq -r '.fresh | length')
|
|
112
|
+
|
|
113
|
+
if [[ "$has_stale" -gt 0 ]] || [[ "$has_fresh" -gt 0 ]]; then
|
|
114
|
+
# Found existing survey files
|
|
115
|
+
if [[ "$force_resurvey" == "true" ]]; then
|
|
116
|
+
bash .aether/aether-utils.sh session-clear --command survey
|
|
117
|
+
echo "Cleared existing survey files for fresh territory mapping"
|
|
118
|
+
else
|
|
119
|
+
echo "Found existing territory survey. Use --force-resurvey to remap."
|
|
120
|
+
# Continue - will use existing survey files
|
|
121
|
+
fi
|
|
122
|
+
fi
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Generate unique names for the 4 Surveyor Ants (each name must be captured separately):
|
|
126
|
+
```bash
|
|
127
|
+
bash .aether/aether-utils.sh generate-ant-name "surveyor"
|
|
128
|
+
bash .aether/aether-utils.sh generate-ant-name "surveyor"
|
|
129
|
+
bash .aether/aether-utils.sh generate-ant-name "surveyor"
|
|
130
|
+
bash .aether/aether-utils.sh generate-ant-name "surveyor"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Log the dispatches (consolidated - fire-and-forget logging):
|
|
134
|
+
```bash
|
|
135
|
+
bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{provisions_name}" "Mapping provisions and trails" && bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{nest_name}" "Mapping nest structure" && bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{disciplines_name}" "Mapping disciplines and sentinels" && bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{pathogens_name}" "Identifying pathogens"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Spawn 4 Surveyor Ants in parallel using the Task tool:**
|
|
139
|
+
|
|
140
|
+
Each Task should use `subagent_type="aether-surveyor-{focus}"`:
|
|
141
|
+
1. `aether-surveyor-provisions` — Maps PROVISIONS.md and TRAILS.md
|
|
142
|
+
2. `aether-surveyor-nest` — Maps BLUEPRINT.md and CHAMBERS.md
|
|
143
|
+
3. `aether-surveyor-disciplines` — Maps DISCIPLINES.md and SENTINEL-PROTOCOLS.md
|
|
144
|
+
4. `aether-surveyor-pathogens` — Maps PATHOGENS.md
|
|
145
|
+
|
|
146
|
+
**Prompt for each surveyor:**
|
|
147
|
+
```
|
|
148
|
+
You are Surveyor Ant {name}. Explore this codebase and write your survey documents.
|
|
149
|
+
|
|
150
|
+
Focus: {provisions|nest|disciplines|pathogens}
|
|
151
|
+
|
|
152
|
+
The surface scan found:
|
|
153
|
+
- Language: {language}
|
|
154
|
+
- Framework: {framework}
|
|
155
|
+
- Key directories: {dirs}
|
|
156
|
+
|
|
157
|
+
Write your documents to `.aether/data/survey/` following your agent template.
|
|
158
|
+
Return only confirmation when complete — do not include document contents.
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Collect confirmations from all 4 surveyors. Each should return:
|
|
162
|
+
- Document name(s) written
|
|
163
|
+
- Line count(s)
|
|
164
|
+
- Brief status
|
|
165
|
+
|
|
166
|
+
### Step 4: Verify Survey Completeness
|
|
167
|
+
|
|
168
|
+
Check that all 7 documents were created (consolidated):
|
|
169
|
+
```bash
|
|
170
|
+
ls .aether/data/survey/PROVISIONS.md .aether/data/survey/TRAILS.md .aether/data/survey/BLUEPRINT.md .aether/data/survey/CHAMBERS.md .aether/data/survey/DISCIPLINES.md .aether/data/survey/SENTINEL-PROTOCOLS.md .aether/data/survey/PATHOGENS.md 2>&1 | grep -q "No such file" && echo "Some documents missing" || echo "All survey documents present"
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
If any documents are missing, note which ones in the output.
|
|
174
|
+
|
|
175
|
+
#### Step 4.5: Verify Survey Files Are Fresh
|
|
176
|
+
|
|
177
|
+
Verify that all survey files were created after the session start:
|
|
178
|
+
```bash
|
|
179
|
+
verify_result=$(bash .aether/aether-utils.sh session-verify-fresh --command survey "" "$SURVEY_START")
|
|
180
|
+
fresh_count=$(echo "$verify_result" | jq -r '.fresh | length')
|
|
181
|
+
|
|
182
|
+
if [[ "$fresh_count" -lt 7 ]]; then
|
|
183
|
+
echo "Warning: Some survey files may be stale or missing"
|
|
184
|
+
echo "$verify_result" | jq -r '.stale[], .missing[]' | while read doc; do
|
|
185
|
+
echo " - $doc"
|
|
186
|
+
done
|
|
187
|
+
fi
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Step 5: Update State
|
|
191
|
+
|
|
192
|
+
Read `.aether/data/COLONY_STATE.json`. Update:
|
|
193
|
+
- Set `state` to `"IDLE"` (ready for planning)
|
|
194
|
+
- Set `territory_surveyed` to `"<ISO-8601 UTC>"`
|
|
195
|
+
|
|
196
|
+
Write Event: Append to the `events` array as pipe-delimited string:
|
|
197
|
+
`"<ISO-8601 UTC>|territory_surveyed|colonize|Territory surveyed: 7 documents"`
|
|
198
|
+
|
|
199
|
+
If the `events` array exceeds 100 entries, remove the oldest entries to keep only 100.
|
|
200
|
+
|
|
201
|
+
Write the updated COLONY_STATE.json.
|
|
202
|
+
|
|
203
|
+
### Step 6: Confirm
|
|
204
|
+
|
|
205
|
+
Output header:
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
209
|
+
📊🐜🗺️🐜📊 T E R R I T O R Y S U R V E Y C O M P L E T E
|
|
210
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Then output:
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
🗺️ Colony territory has been surveyed.
|
|
217
|
+
|
|
218
|
+
Survey Reports:
|
|
219
|
+
📦 PROVISIONS.md — Tech stack & dependencies
|
|
220
|
+
🛤️ TRAILS.md — External integrations
|
|
221
|
+
📐 BLUEPRINT.md — Architecture patterns
|
|
222
|
+
🏠 CHAMBERS.md — Directory structure
|
|
223
|
+
📜 DISCIPLINES.md — Coding conventions
|
|
224
|
+
🛡️ SENTINEL-PROTOCOLS.md — Testing patterns
|
|
225
|
+
⚠️ PATHOGENS.md — Tech debt & concerns
|
|
226
|
+
|
|
227
|
+
Location: .aether/data/survey/
|
|
228
|
+
|
|
229
|
+
{If any docs missing:}
|
|
230
|
+
⚠️ Missing: {list missing documents}
|
|
231
|
+
{/if}
|
|
232
|
+
|
|
233
|
+
Stack: <language> + <framework>
|
|
234
|
+
Entry: <main entry point>
|
|
235
|
+
Files: <total count> across <N> directories
|
|
236
|
+
|
|
237
|
+
{Read the goal from COLONY_STATE.json. If goal is null:}
|
|
238
|
+
Next:
|
|
239
|
+
/ant:init "<goal>" Set colony goal (required before planning)
|
|
240
|
+
/ant:focus "<area>" Inject focus before planning
|
|
241
|
+
/ant:redirect "<pat>" Inject constraint before planning
|
|
242
|
+
|
|
243
|
+
{If goal is not null:}
|
|
244
|
+
Next:
|
|
245
|
+
/ant:plan Generate project plan (will load relevant survey docs)
|
|
246
|
+
/ant:focus "<area>" Inject focus before planning
|
|
247
|
+
/ant:redirect "<pat>" Inject constraint before planning
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Generate the state-based Next Up block:
|
|
251
|
+
```bash
|
|
252
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
253
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
254
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
255
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
body_opencode: |
|
|
259
|
+
You are the **Queen**. Dispatch Surveyor Ants to map the territory.
|
|
260
|
+
|
|
261
|
+
The arguments are: `$normalized_args`
|
|
262
|
+
|
|
263
|
+
**Parse arguments:**
|
|
264
|
+
- If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
|
|
265
|
+
- Otherwise: set `visual_mode = true`
|
|
266
|
+
|
|
267
|
+
## Instructions
|
|
268
|
+
|
|
269
|
+
### Step 0: Display Header
|
|
270
|
+
|
|
271
|
+
Display header:
|
|
272
|
+
```
|
|
273
|
+
📊🐜🗺️🐜📊 ═══════════════════════════════════════════════
|
|
274
|
+
C O L O N I Z E — T e r r i t o r y S u r v e y
|
|
275
|
+
═══════════════════════════════════════════════ 📊🐜🗺️🐜📊
|
|
276
|
+
|
|
277
|
+
Queen dispatching Surveyor Ants...
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Step 1: Validate
|
|
281
|
+
|
|
282
|
+
Read `.aether/data/COLONY_STATE.json`.
|
|
283
|
+
|
|
284
|
+
**If the file does not exist or cannot be read:**
|
|
285
|
+
1. Create `.aether/data/` directory if it does not exist.
|
|
286
|
+
2. Write a minimal COLONY_STATE.json:
|
|
287
|
+
`{"version": "3.0", "goal": null, "state": "IDLE", "current_phase": 0, "session_id": null, "initialized_at": null, "build_started_at": null, "plan": {"generated_at": null, "confidence": null, "phases": []}, "memory": {"phase_learnings": [], "decisions": [], "instincts": []}, "errors": {"records": [], "flagged_patterns": []}, "signals": [], "graveyards": [], "events": []}`
|
|
288
|
+
3. Output: "No colony state found. Bootstrapping minimal state for territory survey."
|
|
289
|
+
|
|
290
|
+
**If the file exists:** continue.
|
|
291
|
+
|
|
292
|
+
**If `milestone` == `"Crowned Anthill"`:** output "This colony has been sealed. Start a new colony with `/ant:init \"new goal\"`.", stop.
|
|
293
|
+
|
|
294
|
+
**If `plan.phases` is not empty:** output "Colony already has phases. Use /ant:continue.", stop.
|
|
295
|
+
|
|
296
|
+
### Step 2: Quick Surface Scan (for session context)
|
|
297
|
+
|
|
298
|
+
Use Glob to find key files (read up to 20 total) to provide context for the survey.
|
|
299
|
+
|
|
300
|
+
**Package manifests:**
|
|
301
|
+
- package.json, Cargo.toml, pyproject.toml, go.mod, Gemfile, pom.xml, build.gradle
|
|
302
|
+
|
|
303
|
+
**Documentation:**
|
|
304
|
+
- README.md, README.*, docs/README.md
|
|
305
|
+
|
|
306
|
+
**Entry points:**
|
|
307
|
+
- src/index.*, src/main.*, main.*, app.*, lib/index.*, index.*
|
|
308
|
+
|
|
309
|
+
**Config:**
|
|
310
|
+
- tsconfig.json, .eslintrc.*, jest.config.*, vite.config.*, webpack.config.*
|
|
311
|
+
|
|
312
|
+
Read found files. Extract basic info:
|
|
313
|
+
- Tech stack (language, framework)
|
|
314
|
+
- Entry points (main files)
|
|
315
|
+
- Key directories
|
|
316
|
+
|
|
317
|
+
### Step 3: Dispatch Surveyor Ants (Parallel)
|
|
318
|
+
|
|
319
|
+
Create the survey directory:
|
|
320
|
+
```bash
|
|
321
|
+
mkdir -p .aether/data/survey
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
Generate unique names for the 4 Surveyor Ants and log their dispatch:
|
|
325
|
+
```bash
|
|
326
|
+
bash .aether/aether-utils.sh generate-ant-name "surveyor"
|
|
327
|
+
bash .aether/aether-utils.sh generate-ant-name "surveyor"
|
|
328
|
+
bash .aether/aether-utils.sh generate-ant-name "surveyor"
|
|
329
|
+
bash .aether/aether-utils.sh generate-ant-name "surveyor"
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
Log the dispatch:
|
|
333
|
+
```bash
|
|
334
|
+
bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{provisions_name}" "Mapping provisions and trails"
|
|
335
|
+
bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{nest_name}" "Mapping nest structure"
|
|
336
|
+
bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{disciplines_name}" "Mapping disciplines and sentinels"
|
|
337
|
+
bash .aether/aether-utils.sh spawn-log "Queen" "surveyor" "{pathogens_name}" "Identifying pathogens"
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**Spawn 4 Surveyor Ants in parallel using the Task tool:**
|
|
341
|
+
|
|
342
|
+
Each Task should use `subagent_type="aether-surveyor-{focus}"`:
|
|
343
|
+
1. `aether-surveyor-provisions` — Maps PROVISIONS.md and TRAILS.md
|
|
344
|
+
2. `aether-surveyor-nest` — Maps BLUEPRINT.md and CHAMBERS.md
|
|
345
|
+
3. `aether-surveyor-disciplines` — Maps DISCIPLINES.md and SENTINEL-PROTOCOLS.md
|
|
346
|
+
4. `aether-surveyor-pathogens` — Maps PATHOGENS.md
|
|
347
|
+
|
|
348
|
+
**Prompt for each surveyor:**
|
|
349
|
+
```
|
|
350
|
+
You are Surveyor Ant {name}. Explore this codebase and write your survey documents.
|
|
351
|
+
|
|
352
|
+
Focus: {provisions|nest|disciplines|pathogens}
|
|
353
|
+
|
|
354
|
+
The surface scan found:
|
|
355
|
+
- Language: {language}
|
|
356
|
+
- Framework: {framework}
|
|
357
|
+
- Key directories: {dirs}
|
|
358
|
+
|
|
359
|
+
Write your documents to `.aether/data/survey/` following your agent template.
|
|
360
|
+
Return only confirmation when complete — do not include document contents.
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
Collect confirmations from all 4 surveyors. Each should return:
|
|
364
|
+
- Document name(s) written
|
|
365
|
+
- Line count(s)
|
|
366
|
+
- Brief status
|
|
367
|
+
|
|
368
|
+
### Step 4: Verify Survey Completeness
|
|
369
|
+
|
|
370
|
+
Check that all 7 documents were created:
|
|
371
|
+
```bash
|
|
372
|
+
ls .aether/data/survey/PROVISIONS.md 2>/dev/null && echo "PROVISIONS: OK" || echo "PROVISIONS: MISSING"
|
|
373
|
+
ls .aether/data/survey/TRAILS.md 2>/dev/null && echo "TRAILS: OK" || echo "TRAILS: MISSING"
|
|
374
|
+
ls .aether/data/survey/BLUEPRINT.md 2>/dev/null && echo "BLUEPRINT: OK" || echo "BLUEPRINT: MISSING"
|
|
375
|
+
ls .aether/data/survey/CHAMBERS.md 2>/dev/null && echo "CHAMBERS: OK" || echo "CHAMBERS: MISSING"
|
|
376
|
+
ls .aether/data/survey/DISCIPLINES.md 2>/dev/null && echo "DISCIPLINES: OK" || echo "DISCIPLINES: MISSING"
|
|
377
|
+
ls .aether/data/survey/SENTINEL-PROTOCOLS.md 2>/dev/null && echo "SENTINEL: OK" || echo "SENTINEL: MISSING"
|
|
378
|
+
ls .aether/data/survey/PATHOGENS.md 2>/dev/null && echo "PATHOGENS: OK" || echo "PATHOGENS: MISSING"
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
If any documents are missing, note which ones in the output.
|
|
382
|
+
|
|
383
|
+
### Step 5: Update State
|
|
384
|
+
|
|
385
|
+
Read `.aether/data/COLONY_STATE.json`. Update:
|
|
386
|
+
- Set `state` to `"IDLE"` (ready for planning)
|
|
387
|
+
- Set `territory_surveyed` to `"<ISO-8601 UTC>"`
|
|
388
|
+
|
|
389
|
+
Write Event: Append to the `events` array as pipe-delimited string:
|
|
390
|
+
`"<ISO-8601 UTC>|territory_surveyed|colonize|Territory surveyed: 7 documents"`
|
|
391
|
+
|
|
392
|
+
If the `events` array exceeds 100 entries, remove the oldest entries to keep only 100.
|
|
393
|
+
|
|
394
|
+
Write the updated COLONY_STATE.json.
|
|
395
|
+
|
|
396
|
+
### Step 6: Confirm
|
|
397
|
+
|
|
398
|
+
Output header:
|
|
399
|
+
|
|
400
|
+
```
|
|
401
|
+
📊🐜🗺️🐜📊 ═══════════════════════════════════════════════════
|
|
402
|
+
T E R R I T O R Y S U R V E Y C O M P L E T E
|
|
403
|
+
═══════════════════════════════════════════════════ 📊🐜🗺️🐜📊
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
Then output:
|
|
407
|
+
|
|
408
|
+
```
|
|
409
|
+
🗺️ Colony territory has been surveyed.
|
|
410
|
+
|
|
411
|
+
Survey Reports:
|
|
412
|
+
📦 PROVISIONS.md — Tech stack & dependencies
|
|
413
|
+
🛤️ TRAILS.md — External integrations
|
|
414
|
+
📐 BLUEPRINT.md — Architecture patterns
|
|
415
|
+
🏠 CHAMBERS.md — Directory structure
|
|
416
|
+
📜 DISCIPLINES.md — Coding conventions
|
|
417
|
+
🛡️ SENTINEL-PROTOCOLS.md — Testing patterns
|
|
418
|
+
⚠️ PATHOGENS.md — Tech debt & concerns
|
|
419
|
+
|
|
420
|
+
Location: .aether/data/survey/
|
|
421
|
+
|
|
422
|
+
{If any docs missing:}
|
|
423
|
+
⚠️ Missing: {list missing documents}
|
|
424
|
+
{/if}
|
|
425
|
+
|
|
426
|
+
Stack: <language> + <framework>
|
|
427
|
+
Entry: <main entry point>
|
|
428
|
+
Files: <total count> across <N> directories
|
|
429
|
+
|
|
430
|
+
{Read the goal from COLONY_STATE.json. If goal is null:}
|
|
431
|
+
Next:
|
|
432
|
+
/ant:init "<goal>" Set colony goal (required before planning)
|
|
433
|
+
/ant:focus "<area>" Inject focus before planning
|
|
434
|
+
/ant:redirect "<pat>" Inject constraint before planning
|
|
435
|
+
|
|
436
|
+
{If goal is not null:}
|
|
437
|
+
Next:
|
|
438
|
+
/ant:plan Generate project plan (will load relevant survey docs)
|
|
439
|
+
/ant:focus "<area>" Inject focus before planning
|
|
440
|
+
/ant:redirect "<pat>" Inject constraint before planning
|
|
441
|
+
```
|
|
442
|
+
|