aether-colony 3.1.17 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.aether/aether-utils.sh +5354 -0
- 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 +438 -0
- package/.aether/commands/continue.yaml +1484 -0
- package/.aether/commands/council.yaml +304 -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 +469 -0
- package/.aether/commands/insert-phase.yaml +98 -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 +1313 -0
- package/.aether/commands/preferences.yaml +63 -0
- package/.aether/commands/redirect.yaml +123 -0
- package/.aether/commands/resume-colony.yaml +373 -0
- package/.aether/commands/resume.yaml +398 -0
- package/.aether/commands/run.yaml +193 -0
- package/.aether/commands/seal.yaml +1205 -0
- package/.aether/commands/skill-create.yaml +337 -0
- package/.aether/commands/status.yaml +364 -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 +211 -0
- package/.aether/docs/README.md +98 -0
- package/.aether/docs/caste-system.md +48 -0
- 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 +1682 -0
- package/.aether/docs/command-playbooks/build-prep.md +283 -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 +1724 -0
- package/.aether/docs/command-playbooks/continue-gates.md +686 -0
- package/.aether/docs/command-playbooks/continue-verify.md +406 -0
- package/.aether/docs/context-continuity.md +84 -0
- package/{runtime → .aether/docs/disciplines}/DISCIPLINES.md +13 -11
- package/.aether/docs/error-codes.md +268 -0
- package/.aether/docs/known-issues.md +94 -0
- package/{runtime → .aether}/docs/pheromones.md +86 -6
- package/.aether/docs/plans/pheromone-display-plan.md +257 -0
- package/.aether/docs/queen-commands.md +98 -0
- package/.aether/docs/source-of-truth-map.md +132 -0
- package/.aether/docs/xml-utilities.md +47 -0
- package/{runtime → .aether}/exchange/pheromone-xml.sh +2 -1
- package/{runtime → .aether}/exchange/registry-xml.sh +7 -3
- package/{runtime → .aether}/exchange/wisdom-xml.sh +11 -4
- package/.aether/rules/aether-colony.md +144 -0
- package/.aether/schemas/example-prompt-builder.xml +234 -0
- 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 +61 -0
- package/.aether/templates/colony-state-reset.jq.template +23 -0
- package/.aether/templates/colony-state.template.json +39 -0
- package/.aether/templates/constraints.template.json +9 -0
- package/.aether/templates/crowned-anthill.template.md +36 -0
- package/.aether/templates/handoff-build-error.template.md +30 -0
- package/.aether/templates/handoff-build-success.template.md +39 -0
- package/.aether/templates/handoff.template.md +40 -0
- package/.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/{runtime → .aether}/utils/atomic-write.sh +68 -22
- package/{runtime → .aether}/utils/chamber-compare.sh +23 -10
- package/.aether/utils/chamber-utils.sh +440 -0
- package/.aether/utils/emoji-audit.sh +166 -0
- package/{runtime → .aether}/utils/error-handler.sh +34 -8
- package/.aether/utils/file-lock.sh +313 -0
- package/.aether/utils/flag.sh +267 -0
- package/.aether/utils/hive.sh +572 -0
- package/.aether/utils/learning.sh +1928 -0
- package/.aether/utils/midden.sh +342 -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 +1698 -0
- package/.aether/utils/scan.sh +860 -0
- package/.aether/utils/semantic-cli.sh +415 -0
- package/.aether/utils/session.sh +552 -0
- package/.aether/utils/skills.sh +509 -0
- package/.aether/utils/spawn-tree.sh +260 -0
- package/.aether/utils/spawn.sh +260 -0
- package/.aether/utils/state-api.sh +199 -0
- package/{runtime → .aether}/utils/state-loader.sh +8 -6
- package/.aether/utils/suggest.sh +611 -0
- package/{runtime → .aether}/utils/swarm-display.sh +10 -1
- package/.aether/utils/swarm.sh +1004 -0
- package/{runtime → .aether}/utils/watch-spawn-tree.sh +11 -2
- package/{runtime → .aether}/utils/xml-compose.sh +9 -3
- package/.aether/utils/xml-convert.sh +277 -0
- package/{runtime → .aether}/utils/xml-core.sh +5 -9
- package/.aether/utils/xml-query.sh +201 -0
- package/.aether/utils/xml-utils.sh +110 -0
- package/{runtime → .aether}/workers.md +97 -81
- package/.claude/agents/ant/aether-ambassador.md +265 -0
- package/.claude/agents/ant/aether-archaeologist.md +327 -0
- package/.claude/agents/ant/aether-architect.md +236 -0
- package/.claude/agents/ant/aether-auditor.md +271 -0
- package/.claude/agents/ant/aether-builder.md +224 -0
- package/.claude/agents/ant/aether-chaos.md +269 -0
- package/.claude/agents/ant/aether-chronicler.md +305 -0
- package/.claude/agents/ant/aether-gatekeeper.md +330 -0
- package/.claude/agents/ant/aether-includer.md +374 -0
- package/.claude/agents/ant/aether-keeper.md +272 -0
- package/.claude/agents/ant/aether-measurer.md +322 -0
- package/.claude/agents/ant/aether-oracle.md +237 -0
- package/.claude/agents/ant/aether-probe.md +211 -0
- package/.claude/agents/ant/aether-queen.md +330 -0
- package/.claude/agents/ant/aether-route-setter.md +178 -0
- package/.claude/agents/ant/aether-sage.md +418 -0
- package/.claude/agents/ant/aether-scout.md +179 -0
- package/.claude/agents/ant/aether-surveyor-disciplines.md +417 -0
- package/.claude/agents/ant/aether-surveyor-nest.md +355 -0
- package/.claude/agents/ant/aether-surveyor-pathogens.md +289 -0
- package/.claude/agents/ant/aether-surveyor-provisions.md +360 -0
- package/.claude/agents/ant/aether-tracker.md +270 -0
- package/.claude/agents/ant/aether-watcher.md +280 -0
- package/.claude/agents/ant/aether-weaver.md +248 -0
- package/.claude/commands/ant/archaeology.md +16 -14
- package/.claude/commands/ant/build.md +43 -1028
- package/.claude/commands/ant/chaos.md +19 -23
- package/.claude/commands/ant/colonize.md +52 -31
- package/.claude/commands/ant/continue.md +40 -1016
- package/.claude/commands/ant/council.md +21 -18
- package/.claude/commands/ant/data-clean.md +81 -0
- package/.claude/commands/ant/dream.md +27 -15
- package/.claude/commands/ant/entomb.md +317 -225
- package/.claude/commands/ant/export-signals.md +57 -0
- package/.claude/commands/ant/feedback.md +48 -26
- package/.claude/commands/ant/flag.md +30 -10
- package/.claude/commands/ant/flags.md +34 -12
- package/.claude/commands/ant/focus.md +45 -19
- package/.claude/commands/ant/help.md +50 -8
- package/.claude/commands/ant/history.md +13 -0
- package/.claude/commands/ant/import-signals.md +71 -0
- package/.claude/commands/ant/init.md +345 -194
- package/.claude/commands/ant/insert-phase.md +101 -0
- package/.claude/commands/ant/interpret.md +26 -4
- package/.claude/commands/ant/lay-eggs.md +184 -127
- package/.claude/commands/ant/maturity.md +32 -11
- package/.claude/commands/ant/memory-details.md +77 -0
- package/.claude/commands/ant/migrate-state.md +20 -2
- package/.claude/commands/ant/oracle.md +337 -74
- package/.claude/commands/ant/organize.md +39 -25
- package/.claude/commands/ant/patrol.md +620 -0
- package/.claude/commands/ant/pause-colony.md +23 -27
- package/.claude/commands/ant/phase.md +40 -42
- package/.claude/commands/ant/pheromones.md +156 -0
- package/.claude/commands/ant/plan.md +185 -51
- package/.claude/commands/ant/preferences.md +65 -0
- package/.claude/commands/ant/redirect.md +45 -30
- package/.claude/commands/ant/resume-colony.md +51 -27
- package/.claude/commands/ant/resume.md +314 -94
- package/.claude/commands/ant/run.md +195 -0
- package/.claude/commands/ant/seal.md +650 -221
- package/.claude/commands/ant/skill-create.md +286 -0
- package/.claude/commands/ant/status.md +196 -31
- package/.claude/commands/ant/swarm.md +16 -46
- package/.claude/commands/ant/tunnels.md +280 -105
- package/.claude/commands/ant/update.md +73 -89
- package/.claude/commands/ant/verify-castes.md +100 -42
- package/.claude/commands/ant/watch.md +14 -12
- package/.opencode/agents/aether-ambassador.md +63 -20
- package/.opencode/agents/aether-archaeologist.md +29 -12
- package/.opencode/agents/aether-architect.md +103 -36
- package/.opencode/agents/aether-auditor.md +51 -18
- package/.opencode/agents/aether-builder.md +70 -20
- package/.opencode/agents/aether-chaos.md +29 -12
- package/.opencode/agents/aether-chronicler.md +60 -18
- package/.opencode/agents/aether-gatekeeper.md +27 -18
- package/.opencode/agents/aether-includer.md +27 -18
- package/.opencode/agents/aether-keeper.md +89 -18
- package/.opencode/agents/aether-measurer.md +27 -18
- package/.opencode/agents/aether-oracle.md +137 -0
- package/.opencode/agents/aether-probe.md +60 -18
- package/.opencode/agents/aether-queen.md +172 -24
- package/.opencode/agents/aether-route-setter.md +57 -12
- package/.opencode/agents/aether-sage.md +26 -18
- package/.opencode/agents/aether-scout.md +28 -20
- package/.opencode/agents/aether-surveyor-disciplines.md +59 -2
- package/.opencode/agents/aether-surveyor-nest.md +59 -2
- package/.opencode/agents/aether-surveyor-pathogens.md +57 -2
- package/.opencode/agents/aether-surveyor-provisions.md +59 -2
- package/.opencode/agents/aether-tracker.md +64 -18
- package/.opencode/agents/aether-watcher.md +66 -19
- package/.opencode/agents/aether-weaver.md +61 -18
- package/.opencode/commands/ant/archaeology.md +7 -14
- package/.opencode/commands/ant/build.md +437 -257
- package/.opencode/commands/ant/chaos.md +7 -24
- package/.opencode/commands/ant/colonize.md +8 -17
- package/.opencode/commands/ant/continue.md +661 -142
- package/.opencode/commands/ant/council.md +11 -22
- package/.opencode/commands/ant/data-clean.md +77 -0
- package/.opencode/commands/ant/dream.md +15 -17
- package/.opencode/commands/ant/entomb.md +133 -62
- 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 +374 -167
- package/.opencode/commands/ant/insert-phase.md +107 -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 +18 -16
- 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 +184 -56
- package/.opencode/commands/ant/preferences.md +71 -0
- package/.opencode/commands/ant/redirect.md +22 -5
- package/.opencode/commands/ant/resume-colony.md +38 -27
- package/.opencode/commands/ant/resume.md +385 -0
- package/.opencode/commands/ant/run.md +201 -0
- package/.opencode/commands/ant/seal.md +259 -45
- package/.opencode/commands/ant/skill-create.md +63 -0
- package/.opencode/commands/ant/status.md +135 -31
- package/.opencode/commands/ant/swarm.md +3 -345
- package/.opencode/commands/ant/tunnels.md +152 -9
- package/.opencode/commands/ant/update.md +70 -91
- package/.opencode/commands/ant/verify-castes.md +96 -42
- package/.opencode/commands/ant/watch.md +7 -0
- package/CHANGELOG.md +356 -0
- package/README.md +203 -573
- package/bin/cli.js +455 -527
- package/bin/generate-commands.js +186 -0
- package/bin/generate-commands.sh +127 -88
- package/bin/lib/init.js +13 -3
- package/bin/lib/spawn-logger.js +0 -15
- package/bin/lib/update-transaction.js +392 -140
- package/bin/npx-install.js +178 -0
- package/bin/sync-to-runtime.sh +5 -137
- package/bin/validate-package.sh +166 -0
- package/package.json +14 -7
- package/.opencode/agents/aether-guardian.md +0 -107
- package/.opencode/agents/workers.md +0 -1034
- 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
- package/runtime/CONTEXT.md +0 -160
- package/runtime/QUEEN_ANT_ARCHITECTURE.md +0 -402
- package/runtime/aether-utils.sh +0 -3879
- package/runtime/data/signatures.json +0 -41
- package/runtime/docs/AETHER-2.0-IMPLEMENTATION-PLAN.md +0 -1343
- package/runtime/docs/AETHER-PHEROMONE-SYSTEM-MASTER-SPEC.md +0 -2642
- package/runtime/docs/PHEROMONE-INJECTION.md +0 -240
- package/runtime/docs/PHEROMONE-INTEGRATION.md +0 -192
- package/runtime/docs/PHEROMONE-SYSTEM-DESIGN.md +0 -426
- package/runtime/docs/README.md +0 -94
- package/runtime/docs/VISUAL-OUTPUT-SPEC.md +0 -219
- package/runtime/docs/biological-reference.md +0 -272
- package/runtime/docs/codebase-review.md +0 -399
- package/runtime/docs/command-sync.md +0 -164
- package/runtime/docs/constraints.md +0 -116
- package/runtime/docs/implementation-learnings.md +0 -89
- package/runtime/docs/known-issues.md +0 -217
- package/runtime/docs/namespace.md +0 -148
- package/runtime/docs/pathogen-schema-example.json +0 -36
- package/runtime/docs/pathogen-schema.md +0 -111
- package/runtime/docs/planning-discipline.md +0 -159
- package/runtime/docs/progressive-disclosure.md +0 -184
- package/runtime/lib/queen-utils.sh +0 -729
- package/runtime/model-profiles.yaml +0 -100
- package/runtime/planning.md +0 -159
- package/runtime/recover.sh +0 -136
- package/runtime/templates/QUEEN.md.template +0 -79
- package/runtime/utils/chamber-utils.sh +0 -285
- package/runtime/utils/file-lock.sh +0 -122
- package/runtime/utils/spawn-tree.sh +0 -428
- package/runtime/utils/spawn-with-model.sh +0 -56
- package/runtime/utils/xml-utils.sh +0 -2196
- package/runtime/workers-new-castes.md +0 -516
- /package/{runtime → .aether/docs/disciplines}/coding-standards.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/debugging.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/learning.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/tdd.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/verification-loop.md +0 -0
- /package/{runtime → .aether/docs/disciplines}/verification.md +0 -0
- /package/{runtime → .aether}/schemas/aether-types.xsd +0 -0
- /package/{runtime → .aether}/schemas/colony-registry.xsd +0 -0
- /package/{runtime → .aether}/schemas/pheromone.xsd +0 -0
- /package/{runtime → .aether}/schemas/prompt.xsd +0 -0
- /package/{runtime → .aether}/schemas/queen-wisdom.xsd +0 -0
- /package/{runtime → .aether}/schemas/worker-priming.xsd +0 -0
- /package/{runtime → .aether}/utils/colorize-log.sh +0 -0
- /package/{runtime → .aether}/utils/queen-to-md.xsl +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- Generated from .aether/commands/swarm.yaml - DO NOT EDIT DIRECTLY -->
|
|
1
2
|
---
|
|
2
3
|
name: ant:swarm
|
|
3
4
|
description: "🔥🐜🗡️🐜🔥 Real-time colony swarm display + stubborn bug destroyer"
|
|
@@ -62,11 +63,6 @@ Initialize swarm findings:
|
|
|
62
63
|
bash .aether/aether-utils.sh swarm-findings-init "<swarm_id>"
|
|
63
64
|
```
|
|
64
65
|
|
|
65
|
-
Initialize swarm display for real-time tracking:
|
|
66
|
-
```bash
|
|
67
|
-
bash .aether/aether-utils.sh swarm-display-init "<swarm_id>"
|
|
68
|
-
```
|
|
69
|
-
|
|
70
66
|
#### Step 2.5: Check for Stale Swarm Session
|
|
71
67
|
|
|
72
68
|
Capture session start time:
|
|
@@ -96,9 +92,9 @@ fi
|
|
|
96
92
|
|
|
97
93
|
Display header:
|
|
98
94
|
```
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
95
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
96
|
+
🔥🐜🗡️🐜🔥 S W A R M D E P L O Y E D
|
|
97
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
102
98
|
|
|
103
99
|
🎯 Target: "{problem description}"
|
|
104
100
|
📍 Swarm ID: {swarm_id}
|
|
@@ -108,7 +104,7 @@ Display header:
|
|
|
108
104
|
|
|
109
105
|
#### Step 3: Create Git Checkpoint
|
|
110
106
|
|
|
111
|
-
Before any investigation that might lead to fixes:
|
|
107
|
+
Before any investigation that might lead to fixes, run using the Bash tool:
|
|
112
108
|
```bash
|
|
113
109
|
bash .aether/aether-utils.sh autofix-checkpoint "pre-swarm-$SWARM_ID"
|
|
114
110
|
```
|
|
@@ -142,14 +138,6 @@ git log --oneline -20 2>/dev/null || echo "(no git history)"
|
|
|
142
138
|
|
|
143
139
|
Use the **Task** tool to spawn 4 scouts **in a single message** (parallel execution):
|
|
144
140
|
|
|
145
|
-
Log each scout to swarm display before spawning:
|
|
146
|
-
```bash
|
|
147
|
-
bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-Archaeologist" "scout" "excavating" "Git history investigation" "Queen" '{"read":0,"grep":0,"edit":0,"bash":3}' 0
|
|
148
|
-
bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-PatternHunter" "scout" "excavating" "Pattern search for similar code" "Queen" '{"read":5,"grep":10,"edit":0,"bash":0}' 0
|
|
149
|
-
bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-ErrorAnalyst" "scout" "excavating" "Error chain analysis" "Queen" '{"read":3,"grep":5,"edit":0,"bash":2}' 0
|
|
150
|
-
bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-WebResearcher" "scout" "excavating" "External source research" "Queen" '{"read":0,"grep":0,"edit":0,"bash":0}' 0
|
|
151
|
-
```
|
|
152
|
-
|
|
153
141
|
**Scout 1: 🏛️ Git Archaeologist** (use Task tool with `subagent_type="aether-archaeologist"`)
|
|
154
142
|
# FALLBACK: If "Agent type not found", use general-purpose and inject role: "You are an Archaeologist Ant - git historian that excavates why code exists."
|
|
155
143
|
```
|
|
@@ -224,11 +212,6 @@ As each scout returns, add their findings:
|
|
|
224
212
|
bash .aether/aether-utils.sh swarm-findings-add "{swarm_id}" "{scout_type}" "{confidence}" '{finding_json}'
|
|
225
213
|
```
|
|
226
214
|
|
|
227
|
-
Update scout status in swarm display to "completed":
|
|
228
|
-
```bash
|
|
229
|
-
bash .aether/aether-utils.sh swarm-display-update "{swarm_id}-Archaeologist" "scout" "completed" "Git history investigation" "Queen" '{"read":3,"grep":0,"edit":0,"bash":5}' 150
|
|
230
|
-
```
|
|
231
|
-
|
|
232
215
|
Display each scout's report as they complete:
|
|
233
216
|
```
|
|
234
217
|
🏛️ Archaeologist [{confidence}]
|
|
@@ -254,9 +237,9 @@ Cross-compare all findings:
|
|
|
254
237
|
|
|
255
238
|
Rank fix options:
|
|
256
239
|
```
|
|
257
|
-
|
|
240
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
258
241
|
S O L U T I O N R A N K I N G
|
|
259
|
-
|
|
242
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
260
243
|
|
|
261
244
|
#1 [0.85 confidence] {best solution}
|
|
262
245
|
Evidence: {supporting scouts}
|
|
@@ -309,13 +292,9 @@ Inject learnings:
|
|
|
309
292
|
- Add FOCUS for the pattern that worked (to constraints.json)
|
|
310
293
|
- Add REDIRECT for the anti-pattern that caused the bug (to constraints.json)
|
|
311
294
|
|
|
312
|
-
Set solution in swarm findings:
|
|
295
|
+
Set solution in swarm findings and log success:
|
|
313
296
|
```bash
|
|
314
297
|
bash .aether/aether-utils.sh swarm-solution-set "{swarm_id}" '{solution_json}'
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
Log success:
|
|
318
|
-
```bash
|
|
319
298
|
bash .aether/aether-utils.sh activity-log "SWARM_SUCCESS" "Queen" "Swarm {swarm_id} fixed: {brief description}"
|
|
320
299
|
```
|
|
321
300
|
|
|
@@ -329,13 +308,9 @@ Tests: {status}
|
|
|
329
308
|
Attempting rollback...
|
|
330
309
|
```
|
|
331
310
|
|
|
332
|
-
Rollback:
|
|
311
|
+
Rollback and log failure:
|
|
333
312
|
```bash
|
|
334
313
|
bash .aether/aether-utils.sh autofix-rollback "{checkpoint_type}" "{checkpoint_ref}"
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
Log failure:
|
|
338
|
-
```bash
|
|
339
314
|
bash .aether/aether-utils.sh activity-log "SWARM_FAILED" "Queen" "Swarm {swarm_id} fix failed verification"
|
|
340
315
|
```
|
|
341
316
|
|
|
@@ -360,20 +335,15 @@ Swarm will not attempt further fixes on this issue.
|
|
|
360
335
|
|
|
361
336
|
#### Step 10: Cleanup
|
|
362
337
|
|
|
363
|
-
|
|
364
|
-
```bash
|
|
365
|
-
bash .aether/aether-utils.sh swarm-display-init "complete-{swarm_id}"
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
Archive swarm findings:
|
|
338
|
+
Archive findings:
|
|
369
339
|
```bash
|
|
370
340
|
bash .aether/aether-utils.sh swarm-cleanup "{swarm_id}" --archive
|
|
371
341
|
```
|
|
372
342
|
|
|
373
|
-
|
|
374
|
-
```
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
343
|
+
Generate the state-based Next Up block:
|
|
344
|
+
```bash
|
|
345
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
346
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
347
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
348
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
379
349
|
```
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- Generated from .aether/commands/tunnels.yaml - DO NOT EDIT DIRECTLY -->
|
|
1
2
|
---
|
|
2
3
|
name: ant:tunnels
|
|
3
4
|
description: "🕳️🐜🕳️ Explore tunnels (browse archived colonies, compare chambers)"
|
|
@@ -9,9 +10,9 @@ You are the **Queen**. Browse the colony history.
|
|
|
9
10
|
|
|
10
11
|
### Argument Handling
|
|
11
12
|
|
|
12
|
-
- No arguments: Show
|
|
13
|
-
- One argument: Show single chamber detail (Step 3)
|
|
14
|
-
- Two arguments: Compare two chambers (Step 5)
|
|
13
|
+
- No arguments: Show timeline view (Step 4)
|
|
14
|
+
- One argument: Show single chamber detail with seal document (Step 3)
|
|
15
|
+
- Two arguments: Compare two chambers side-by-side (Step 5)
|
|
15
16
|
- More than two: "Too many arguments. Use: /ant:tunnels [chamber1] [chamber2]"
|
|
16
17
|
|
|
17
18
|
### Step 1: Check for Chambers Directory
|
|
@@ -20,9 +21,7 @@ Check if `.aether/chambers/` exists.
|
|
|
20
21
|
|
|
21
22
|
If not:
|
|
22
23
|
```
|
|
23
|
-
|
|
24
|
-
T U N N E L S (Colony History)
|
|
25
|
-
══════════════════════════════════════════════════ 🕳️
|
|
24
|
+
TUNNELS — Colony Timeline
|
|
26
25
|
|
|
27
26
|
No chambers found.
|
|
28
27
|
|
|
@@ -32,26 +31,24 @@ Stop here.
|
|
|
32
31
|
|
|
33
32
|
### Step 2: List All Chambers
|
|
34
33
|
|
|
35
|
-
Run: `bash .aether/aether-utils.sh chamber-list`
|
|
34
|
+
Run using the Bash tool with description "Loading chamber list...": `bash .aether/aether-utils.sh chamber-list`
|
|
36
35
|
|
|
37
36
|
Parse JSON result into array of chambers.
|
|
38
37
|
|
|
39
38
|
If no chambers (empty array):
|
|
40
39
|
```
|
|
41
|
-
|
|
42
|
-
T U N N E L S (Colony History)
|
|
43
|
-
══════════════════════════════════════════════════ 🕳️
|
|
40
|
+
TUNNELS — Colony Timeline
|
|
44
41
|
|
|
45
|
-
|
|
42
|
+
0 colonies archived
|
|
46
43
|
|
|
47
44
|
The tunnel network is empty.
|
|
48
45
|
Archive colonies with /ant:entomb to preserve history.
|
|
49
46
|
```
|
|
50
47
|
Stop here.
|
|
51
48
|
|
|
52
|
-
### Step 3:
|
|
49
|
+
### Step 3: Detail View — Show Seal Document (if one argument provided)
|
|
53
50
|
|
|
54
|
-
If `$ARGUMENTS` is not empty:
|
|
51
|
+
If `$ARGUMENTS` is not empty and contains exactly one argument:
|
|
55
52
|
- Treat it as chamber name
|
|
56
53
|
- Check if `.aether/chambers/{arguments}/` exists
|
|
57
54
|
- If not found:
|
|
@@ -62,43 +59,111 @@ If `$ARGUMENTS` is not empty:
|
|
|
62
59
|
```
|
|
63
60
|
Stop here.
|
|
64
61
|
|
|
65
|
-
|
|
62
|
+
**If CROWNED-ANTHILL.md exists in the chamber:**
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
seal_doc=".aether/chambers/{arguments}/CROWNED-ANTHILL.md"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Display the header:
|
|
69
|
+
```
|
|
70
|
+
CHAMBER DETAILS — {chamber_name}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Then display the FULL content of `CROWNED-ANTHILL.md` (read and output the file contents — this IS the seal ceremony record).
|
|
74
|
+
|
|
75
|
+
After the seal document, check if `colony-archive.xml` exists in the chamber:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
chamber_has_xml=false
|
|
79
|
+
[[ -f ".aether/chambers/{chamber_name}/colony-archive.xml" ]] && chamber_has_xml=true
|
|
66
80
|
```
|
|
67
|
-
🕳️ ═══════════════════════════════════════════════════
|
|
68
|
-
C H A M B E R D E T A I L S
|
|
69
|
-
══════════════════════════════════════════════════ 🕳️
|
|
70
81
|
|
|
71
|
-
|
|
82
|
+
**If `colony-archive.xml` exists in the chamber**, show footer with import option:
|
|
83
|
+
```
|
|
84
|
+
Chamber integrity: {hash_status from chamber-verify}
|
|
85
|
+
Chamber location: .aether/chambers/{chamber_name}/
|
|
86
|
+
XML Archive: colony-archive.xml found
|
|
87
|
+
|
|
88
|
+
Actions:
|
|
89
|
+
1. Import signals from this colony into current colony
|
|
90
|
+
2. Return to timeline
|
|
91
|
+
3. Compare with another chamber
|
|
92
|
+
|
|
93
|
+
Select an action (1/2/3)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Use AskUserQuestion with three options.
|
|
72
97
|
|
|
73
|
-
|
|
74
|
-
|
|
98
|
+
If option 1 selected: proceed to Step 6 (Import Signals from Chamber).
|
|
99
|
+
If option 2 selected: return to timeline (run /ant:tunnels).
|
|
100
|
+
If option 3 selected: prompt for second chamber name then run /ant:tunnels {chamber_a} {chamber_b}.
|
|
75
101
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
102
|
+
**If `colony-archive.xml` does NOT exist in the chamber**, show the existing footer unchanged:
|
|
103
|
+
```
|
|
104
|
+
Chamber integrity: {hash_status from chamber-verify}
|
|
105
|
+
Chamber location: .aether/chambers/{chamber_name}/
|
|
79
106
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
{End if}
|
|
107
|
+
Run /ant:tunnels to return to timeline
|
|
108
|
+
Run /ant:tunnels {chamber_a} {chamber_b} to compare chambers
|
|
109
|
+
```
|
|
84
110
|
|
|
85
|
-
|
|
86
|
-
💡 Learnings Preserved:
|
|
87
|
-
{N} validated learnings recorded
|
|
88
|
-
{End if}
|
|
111
|
+
**If CROWNED-ANTHILL.md does NOT exist (older chamber):**
|
|
89
112
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
113
|
+
Display the header:
|
|
114
|
+
```
|
|
115
|
+
CHAMBER DETAILS — {chamber_name}
|
|
93
116
|
|
|
94
|
-
|
|
117
|
+
(No seal document — this chamber was created before the sealing ceremony was introduced)
|
|
95
118
|
```
|
|
96
119
|
|
|
97
|
-
|
|
120
|
+
Fall back to manifest data display:
|
|
121
|
+
- Read `manifest.json` and show: goal, milestone, version, phases_completed, total_phases, entombed_at
|
|
122
|
+
- Show decisions count and learnings count from manifest
|
|
123
|
+
- Show hash status from `chamber-verify`
|
|
124
|
+
|
|
125
|
+
Footer with navigation guidance:
|
|
126
|
+
```
|
|
127
|
+
Run /ant:tunnels to return to timeline
|
|
128
|
+
Run /ant:tunnels {chamber_a} {chamber_b} to compare chambers
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
To get the hash status, run using the Bash tool with description "Verifying chamber integrity...":
|
|
98
132
|
- Run `bash .aether/aether-utils.sh chamber-verify .aether/chambers/{chamber_name}`
|
|
99
|
-
- If verified: hash_status = "
|
|
100
|
-
- If not verified: hash_status = "
|
|
101
|
-
- If error: hash_status = "
|
|
133
|
+
- If verified: hash_status = "verified"
|
|
134
|
+
- If not verified: hash_status = "hash mismatch"
|
|
135
|
+
- If error: hash_status = "error"
|
|
136
|
+
|
|
137
|
+
Stop here.
|
|
138
|
+
|
|
139
|
+
### Step 4: Timeline View (default, no arguments)
|
|
140
|
+
|
|
141
|
+
Display header:
|
|
142
|
+
```
|
|
143
|
+
TUNNELS — Colony Timeline
|
|
144
|
+
|
|
145
|
+
{count} colonies archived
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
For each chamber in sorted list (already sorted by `chamber-list` — newest first), display as a timeline entry:
|
|
149
|
+
```
|
|
150
|
+
[{date}] {milestone_emoji} {chamber_name}
|
|
151
|
+
{goal (truncated to 60 chars)}
|
|
152
|
+
{phases_completed} phases | {milestone}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Where `milestone_emoji` is:
|
|
156
|
+
- Crowned Anthill: crown emoji
|
|
157
|
+
- Sealed Chambers: lock emoji
|
|
158
|
+
- Other: circle emoji
|
|
159
|
+
|
|
160
|
+
After the timeline entries, show:
|
|
161
|
+
```
|
|
162
|
+
Run /ant:tunnels <chamber_name> to view seal document
|
|
163
|
+
Run /ant:tunnels <chamber_a> <chamber_b> to compare two colonies
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Use the entombed_at field from the chamber-list JSON to extract the date (first 10 chars of ISO timestamp).
|
|
102
167
|
|
|
103
168
|
Stop here.
|
|
104
169
|
|
|
@@ -106,9 +171,8 @@ Stop here.
|
|
|
106
171
|
|
|
107
172
|
If two arguments provided (chamber names separated by space):
|
|
108
173
|
- Treat as: `/ant:tunnels <chamber_a> <chamber_b>`
|
|
109
|
-
- Run comparison: `bash .aether/utils/chamber-compare.sh compare <chamber_a> <chamber_b>`
|
|
110
174
|
|
|
111
|
-
If either
|
|
175
|
+
Check both chambers exist. If either missing:
|
|
112
176
|
```
|
|
113
177
|
Chamber not found: {chamber_name}
|
|
114
178
|
|
|
@@ -117,73 +181,75 @@ Available chambers:
|
|
|
117
181
|
```
|
|
118
182
|
Stop here.
|
|
119
183
|
|
|
184
|
+
Run comparison using the Bash tool with description "Comparing chambers...":
|
|
185
|
+
```bash
|
|
186
|
+
bash .aether/utils/chamber-compare.sh compare <chamber_a> <chamber_b>
|
|
187
|
+
bash .aether/utils/chamber-compare.sh stats <chamber_a> <chamber_b>
|
|
188
|
+
```
|
|
189
|
+
|
|
120
190
|
Display comparison header:
|
|
121
191
|
```
|
|
122
|
-
|
|
123
|
-
C H A M B E R C O M P A R I S O N
|
|
124
|
-
══════════════════════════════════════════════════ 🕳️
|
|
192
|
+
CHAMBER COMPARISON
|
|
125
193
|
|
|
126
|
-
|
|
194
|
+
{chamber_a} vs {chamber_b}
|
|
127
195
|
```
|
|
128
196
|
|
|
129
197
|
Display side-by-side comparison:
|
|
130
198
|
```
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
199
|
+
+---------------------+---------------------+
|
|
200
|
+
| {chamber_a} | {chamber_b} |
|
|
201
|
+
+---------------------+---------------------+
|
|
202
|
+
| Goal: {goal_a} | Goal: {goal_b} |
|
|
203
|
+
| | |
|
|
204
|
+
| {milestone_a} | {milestone_b} |
|
|
205
|
+
| {version_a} | {version_b} |
|
|
206
|
+
| | |
|
|
207
|
+
| {phases_a} done | {phases_b} done |
|
|
208
|
+
| of {total_a} | of {total_b} |
|
|
209
|
+
| | |
|
|
210
|
+
| {decisions_a} | {decisions_b} |
|
|
211
|
+
| decisions | decisions |
|
|
212
|
+
| | |
|
|
213
|
+
| {learnings_a} | {learnings_b} |
|
|
214
|
+
| learnings | learnings |
|
|
215
|
+
| | |
|
|
216
|
+
| {date_a} | {date_b} |
|
|
217
|
+
+---------------------+---------------------+
|
|
150
218
|
```
|
|
151
219
|
|
|
152
220
|
Display growth metrics:
|
|
153
221
|
```
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
222
|
+
Growth Between Chambers:
|
|
223
|
+
Phases: +{phases_diff} ({phases_a} -> {phases_b})
|
|
224
|
+
Decisions: +{decisions_diff} new
|
|
225
|
+
Learnings: +{learnings_diff} new
|
|
226
|
+
Time: {time_between} days apart
|
|
159
227
|
```
|
|
160
228
|
|
|
161
|
-
If phases_diff > 0: show "
|
|
162
|
-
If phases_diff < 0: show "
|
|
163
|
-
If same_milestone: show "
|
|
164
|
-
If milestone changed: show "
|
|
229
|
+
If phases_diff > 0: show "Colony grew"
|
|
230
|
+
If phases_diff < 0: show "Colony reduced (unusual)"
|
|
231
|
+
If same_milestone: show "Same milestone reached"
|
|
232
|
+
If milestone changed: show "Milestone advanced: {milestone_a} -> {milestone_b}"
|
|
165
233
|
|
|
166
|
-
Display pheromone trail diff (new decisions/learnings in B):
|
|
234
|
+
Display pheromone trail diff (new decisions/learnings in B) by running using the Bash tool with description "Analyzing pheromone differences...":
|
|
167
235
|
```bash
|
|
168
236
|
bash .aether/utils/chamber-compare.sh diff <chamber_a> <chamber_b>
|
|
169
237
|
```
|
|
170
238
|
|
|
171
239
|
Parse result and show:
|
|
172
240
|
```
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
241
|
+
New Decisions in {chamber_b}:
|
|
242
|
+
{N} new architectural decisions
|
|
243
|
+
{if N <= 5, list them; else show first 3 + "...and {N-3} more"}
|
|
176
244
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
245
|
+
New Learnings in {chamber_b}:
|
|
246
|
+
{N} new validated learnings
|
|
247
|
+
{if N <= 5, list them; else show first 3 + "...and {N-3} more"}
|
|
180
248
|
```
|
|
181
249
|
|
|
182
|
-
|
|
250
|
+
If both chambers have `CROWNED-ANTHILL.md`, note:
|
|
183
251
|
```
|
|
184
|
-
|
|
185
|
-
{preserved_decisions} decisions carried forward
|
|
186
|
-
{preserved_learnings} learnings carried forward
|
|
252
|
+
Both colonies have seal documents. Run /ant:tunnels <name> to view individually.
|
|
187
253
|
```
|
|
188
254
|
|
|
189
255
|
Footer:
|
|
@@ -194,36 +260,145 @@ Run /ant:tunnels <chamber> to view single chamber details
|
|
|
194
260
|
|
|
195
261
|
Stop here.
|
|
196
262
|
|
|
197
|
-
### Step
|
|
263
|
+
### Step 6: Import Signals from Chamber
|
|
264
|
+
|
|
265
|
+
When user selects "Import signals" from Step 3:
|
|
266
|
+
|
|
267
|
+
**Step 6.1: Check XML tools** by running using the Bash tool with description "Checking XML tools...":
|
|
268
|
+
```bash
|
|
269
|
+
if command -v xmllint >/dev/null 2>&1; then
|
|
270
|
+
xmllint_available=true
|
|
271
|
+
else
|
|
272
|
+
xmllint_available=false
|
|
273
|
+
fi
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
If xmllint not available:
|
|
277
|
+
```
|
|
278
|
+
Import requires xmllint. Install it first:
|
|
279
|
+
macOS: xcode-select --install
|
|
280
|
+
Linux: apt-get install libxml2-utils
|
|
281
|
+
```
|
|
282
|
+
Stop here (return to timeline).
|
|
283
|
+
|
|
284
|
+
**Step 6.2: Extract source colony name** by running using the Bash tool with description "Extracting colony info...":
|
|
285
|
+
```bash
|
|
286
|
+
chamber_xml=".aether/chambers/{chamber_name}/colony-archive.xml"
|
|
287
|
+
# Extract colony_id from the archive root element
|
|
288
|
+
source_colony=$(xmllint --xpath "string(/*/@colony_id)" "$chamber_xml" 2>/dev/null)
|
|
289
|
+
[[ -z "$source_colony" ]] && source_colony="{chamber_name}"
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**Step 6.3: Extract pheromone section and show import preview**
|
|
293
|
+
|
|
294
|
+
The combined `colony-archive.xml` contains pheromones, wisdom, and registry sections. Extract the pheromone section to a temp file before counting or importing. This prevents over-counting signals from wisdom/registry sections and ensures `pheromone-import-xml` receives the format it expects (`<pheromones>` as root element).
|
|
198
295
|
|
|
296
|
+
Run using the Bash tool with description "Extracting pheromone signals...":
|
|
297
|
+
```bash
|
|
298
|
+
# Extract the <pheromones> section from the combined archive into a standalone temp file
|
|
299
|
+
import_tmp_dir=$(mktemp -d)
|
|
300
|
+
import_tmp_pheromones="$import_tmp_dir/pheromones-extracted.xml"
|
|
301
|
+
|
|
302
|
+
# Use xmllint to extract the pheromones element (with its namespace)
|
|
303
|
+
xmllint --xpath "//*[local-name()='pheromones']" "$chamber_xml" > "$import_tmp_pheromones" 2>/dev/null
|
|
304
|
+
|
|
305
|
+
# Add XML declaration to make it a standalone well-formed document
|
|
306
|
+
if [[ -s "$import_tmp_pheromones" ]]; then
|
|
307
|
+
# Portable approach: prepend declaration via temp file (avoids macOS/Linux sed -i differences)
|
|
308
|
+
{ echo '<?xml version="1.0" encoding="UTF-8"?>'; cat "$import_tmp_pheromones"; } > "$import_tmp_dir/tmp_decl.xml"
|
|
309
|
+
mv "$import_tmp_dir/tmp_decl.xml" "$import_tmp_pheromones"
|
|
310
|
+
fi
|
|
311
|
+
|
|
312
|
+
# Count pheromone signals in extracted pheromone-only XML
|
|
313
|
+
# Scoped to pheromone section only — no over-counting from wisdom/registry sections
|
|
314
|
+
pheromone_count=$(xmllint --xpath "count(//*[local-name()='signal'])" "$import_tmp_pheromones" 2>/dev/null || echo "unknown")
|
|
199
315
|
```
|
|
200
|
-
🕳️ ═══════════════════════════════════════════════════
|
|
201
|
-
T U N N E L S (Colony History)
|
|
202
|
-
══════════════════════════════════════════════════ 🕳️
|
|
203
316
|
|
|
204
|
-
|
|
317
|
+
Display:
|
|
318
|
+
```
|
|
319
|
+
IMPORT FROM COLONY: {source_colony}
|
|
205
320
|
|
|
206
|
-
{
|
|
207
|
-
|
|
208
|
-
👑 {goal (truncated to 50 chars)}
|
|
209
|
-
🏆 {milestone} ({version})
|
|
210
|
-
📍 {phases_completed} phases | 📅 {date}
|
|
321
|
+
Source: .aether/chambers/{chamber_name}/colony-archive.xml
|
|
322
|
+
Signals available: ~{pheromone_count} pheromone signals
|
|
211
323
|
|
|
212
|
-
|
|
324
|
+
Import behavior:
|
|
325
|
+
- Signals tagged with prefix "{source_colony}:" to identify origin
|
|
326
|
+
- Additive merge — your current signals are never overwritten
|
|
327
|
+
- On conflict, your current colony wins
|
|
213
328
|
|
|
214
|
-
|
|
329
|
+
Import these signals? (yes/no)
|
|
215
330
|
```
|
|
216
331
|
|
|
217
|
-
|
|
218
|
-
- Sort by entombed_at descending (newest first) - already sorted by chamber-list
|
|
219
|
-
- Truncate goal to 50 characters with "..." if longer
|
|
220
|
-
- Format date as YYYY-MM-DD from ISO timestamp (extract first 10 chars of entombed_at)
|
|
221
|
-
- Show chamber count at top
|
|
332
|
+
Use AskUserQuestion with yes/no options.
|
|
222
333
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
334
|
+
If no: "Import cancelled." Clean up: `rm -rf "$import_tmp_dir"`. Return to timeline.
|
|
335
|
+
|
|
336
|
+
**Step 6.4: Perform import**
|
|
337
|
+
|
|
338
|
+
Pass the extracted pheromone-only temp file (NOT the combined `colony-archive.xml`) to `pheromone-import-xml`, along with `$source_colony` as the second argument. This ensures:
|
|
339
|
+
1. `pheromone-import-xml` receives XML with `<pheromones>` as root element (the format it expects)
|
|
340
|
+
2. The prefix-tagging logic prepends `${source_colony}:` to each imported signal's ID before the merge
|
|
341
|
+
|
|
342
|
+
Run using the Bash tool with description "Importing pheromone signals...":
|
|
343
|
+
```bash
|
|
344
|
+
# Import the EXTRACTED pheromone-only XML (NOT the combined colony-archive.xml)
|
|
345
|
+
# $import_tmp_pheromones has <pheromones> as root — the format pheromone-import-xml expects
|
|
346
|
+
# Second argument triggers prefix-tagging — imported signal IDs become "{source_colony}:original_id"
|
|
347
|
+
import_result=$(bash .aether/aether-utils.sh pheromone-import-xml "$import_tmp_pheromones" "$source_colony" 2>&1)
|
|
348
|
+
import_ok=$(echo "$import_result" | jq -r '.ok // false' 2>/dev/null)
|
|
349
|
+
|
|
350
|
+
if [[ "$import_ok" == "true" ]]; then
|
|
351
|
+
imported_count=$(echo "$import_result" | jq -r '.result.signal_count // 0' 2>/dev/null)
|
|
352
|
+
else
|
|
353
|
+
imported_count=0
|
|
354
|
+
import_error=$(echo "$import_result" | jq -r '.error // "Unknown error"' 2>/dev/null)
|
|
355
|
+
fi
|
|
356
|
+
|
|
357
|
+
# Clean up temp files
|
|
358
|
+
rm -rf "$import_tmp_dir"
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
**Step 6.5: Display result**
|
|
362
|
+
|
|
363
|
+
If import succeeded:
|
|
364
|
+
```
|
|
365
|
+
SIGNALS IMPORTED
|
|
366
|
+
|
|
367
|
+
Source: {source_colony}
|
|
368
|
+
Imported: {imported_count} pheromone signals
|
|
369
|
+
Tagged with: "{source_colony}:" prefix
|
|
370
|
+
|
|
371
|
+
Your colony now carries wisdom from {source_colony}.
|
|
372
|
+
Run /ant:status to see current colony state.
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
If import failed:
|
|
376
|
+
```
|
|
377
|
+
Import failed: {import_error}
|
|
378
|
+
|
|
379
|
+
The archive may be malformed. Check:
|
|
380
|
+
.aether/chambers/{chamber_name}/colony-archive.xml
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### Edge Cases
|
|
384
|
+
|
|
385
|
+
**Malformed manifest:** show "Invalid manifest" for that chamber and skip it.
|
|
386
|
+
|
|
387
|
+
**Missing COLONY_STATE.json:** show "Incomplete chamber" for that chamber.
|
|
388
|
+
|
|
389
|
+
**Very long chamber list:** display all (no pagination for now).
|
|
390
|
+
|
|
391
|
+
**Older chambers without CROWNED-ANTHILL.md:** Fall back to manifest data in detail view.
|
|
392
|
+
|
|
393
|
+
### Step 7: Next Up
|
|
394
|
+
|
|
395
|
+
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
396
|
+
```bash
|
|
397
|
+
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
398
|
+
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
399
|
+
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
400
|
+
bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
|
|
401
|
+
```
|
|
227
402
|
|
|
228
403
|
## Implementation Notes
|
|
229
404
|
|