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
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
<!-- Generated from .aether/commands/run.yaml - DO NOT EDIT DIRECTLY -->
|
|
2
|
+
---
|
|
3
|
+
name: ant:run
|
|
4
|
+
description: "🤖🐜🔄🐜🤖 Autopilot — builds, verifies, learns, and advances through phases automatically with smart pausing"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
### Step -1: Normalize Arguments
|
|
8
|
+
|
|
9
|
+
Run: `normalized_args=$(bash .aether/aether-utils.sh normalize-args "$@")`
|
|
10
|
+
|
|
11
|
+
This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
|
|
12
|
+
|
|
13
|
+
You are the **Queen**. Execute `/ant:run` — the adaptive autopilot loop.
|
|
14
|
+
|
|
15
|
+
The arguments are: `$normalized_args`
|
|
16
|
+
|
|
17
|
+
## Purpose
|
|
18
|
+
|
|
19
|
+
This command automates the build-continue-advance cycle across multiple phases.
|
|
20
|
+
It reads and executes the same playbooks used by `/ant:build` and `/ant:continue`,
|
|
21
|
+
chaining them in a loop with intelligent pause conditions.
|
|
22
|
+
|
|
23
|
+
## Rules
|
|
24
|
+
|
|
25
|
+
1. Do **not** invoke nested slash commands (`/ant:build`, `/ant:continue`, etc.).
|
|
26
|
+
2. Use the Read tool to load each playbook file, then execute it inline.
|
|
27
|
+
3. Preserve variables/results from prior stages and pass them forward.
|
|
28
|
+
4. Stop immediately on any pause condition (defined below).
|
|
29
|
+
5. Keep existing behavior and output format from the playbooks.
|
|
30
|
+
6. Log `autopilot_advance` events after each successful phase transition.
|
|
31
|
+
|
|
32
|
+
## Arguments
|
|
33
|
+
|
|
34
|
+
Parse `$normalized_args` for:
|
|
35
|
+
- `--max-phases N` — Max phases to process (default: all remaining)
|
|
36
|
+
- `--replan-interval N` — Pause for replan suggestion every N phases (default: 2)
|
|
37
|
+
- `--continue` — Resume after a replan pause without replanning
|
|
38
|
+
- `--dry-run` — Preview plan without executing
|
|
39
|
+
- `--verbose` / `-v`, `--no-visual`, `--no-suggest` — Pass through to playbooks
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
/ant:run Run all remaining phases
|
|
43
|
+
/ant:run --max-phases 2 Run at most 2 phases then stop
|
|
44
|
+
/ant:run --replan-interval 3 Suggest replan every 3 phases instead of 2
|
|
45
|
+
/ant:run --continue Resume after replan pause without replanning
|
|
46
|
+
/ant:run --dry-run Preview the autopilot plan
|
|
47
|
+
/ant:run --max-phases 3 -v Run 3 phases with verbose output
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Dry Run Mode
|
|
51
|
+
|
|
52
|
+
If `--dry-run`: read COLONY_STATE.json, list remaining incomplete phases
|
|
53
|
+
(applying `--max-phases` cap), display the plan, then stop without executing.
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
━━━ A U T O P I L O T P R E V I E W ━━━
|
|
57
|
+
Goal: {goal} | Current: Phase {N} | Remaining: {count} | Max: {max or "all"}
|
|
58
|
+
|
|
59
|
+
Phase {id}: {name} ({task_count} tasks) -> build -> continue -> advance
|
|
60
|
+
...
|
|
61
|
+
|
|
62
|
+
Pause triggers: test failures, critical Chaos findings, new blockers,
|
|
63
|
+
security gate failures, quality gate failures, runtime verification needed,
|
|
64
|
+
replan suggestion (every {replan_interval} phases)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Autopilot Loop
|
|
68
|
+
|
|
69
|
+
### Step 0: Initialize
|
|
70
|
+
|
|
71
|
+
1. Read `.aether/data/COLONY_STATE.json`; validate goal + plan.phases exist
|
|
72
|
+
2. Determine remaining incomplete phases; apply `--max-phases` cap
|
|
73
|
+
3. Set `phases_completed = 0`, `autopilot_start = $(date +%s)`
|
|
74
|
+
4. Record pre-build blocker count: `bash .aether/aether-utils.sh flag-check-blockers {phase}`
|
|
75
|
+
5. Display: `AUTOPILOT ENGAGED | Goal: {goal} | Phase {N} | Max: {max or "all"}`
|
|
76
|
+
|
|
77
|
+
### Step 1: Build Phase
|
|
78
|
+
|
|
79
|
+
Execute build playbooks in order, carrying cross-stage state
|
|
80
|
+
(`phase_id`, `visual_mode`, `verbose_mode`, `suggest_enabled`,
|
|
81
|
+
`prompt_section`, `wave_results`,
|
|
82
|
+
`verification_status`, `synthesis_status`, `next_action`):
|
|
83
|
+
|
|
84
|
+
1. `.aether/docs/command-playbooks/build-prep.md`
|
|
85
|
+
2. `.aether/docs/command-playbooks/build-context.md`
|
|
86
|
+
3. `.aether/docs/command-playbooks/build-wave.md`
|
|
87
|
+
4. `.aether/docs/command-playbooks/build-verify.md`
|
|
88
|
+
5. `.aether/docs/command-playbooks/build-complete.md`
|
|
89
|
+
|
|
90
|
+
Capture the synthesis result for pause evaluation.
|
|
91
|
+
|
|
92
|
+
### Step 2: Build Pause Check
|
|
93
|
+
|
|
94
|
+
**PAUSE if ANY of these are true** (display reason, log event, STOP):
|
|
95
|
+
|
|
96
|
+
| # | Condition | Source |
|
|
97
|
+
|---|-----------|--------|
|
|
98
|
+
| 1 | Watcher `verification_passed == false` | build-verify synthesis |
|
|
99
|
+
| 2 | Any Chaos finding severity `critical` or `high` | build-verify synthesis |
|
|
100
|
+
| 3 | New blocker flags created (count increased since Step 0.4) | flag-check-blockers |
|
|
101
|
+
|
|
102
|
+
On pause, display the AUTOPILOT PAUSED banner with reason, affected phase,
|
|
103
|
+
specific issues, and instruction: "Fix issues, then run /ant:run to resume."
|
|
104
|
+
Log: `"<timestamp>|autopilot_paused|run|Paused at Phase {id}: {reason}"`
|
|
105
|
+
|
|
106
|
+
**If no pause:** proceed to Step 3.
|
|
107
|
+
|
|
108
|
+
### Step 3: Continue (Verify + Advance)
|
|
109
|
+
|
|
110
|
+
Execute continue playbooks in order, carrying cross-stage state
|
|
111
|
+
(`visual_mode`, `state`, `current_phase`, `verification_results`,
|
|
112
|
+
`gate_results`, `advancement_result`, `next_phase_id`, `completion_state`):
|
|
113
|
+
|
|
114
|
+
1. `.aether/docs/command-playbooks/continue-verify.md`
|
|
115
|
+
2. `.aether/docs/command-playbooks/continue-gates.md`
|
|
116
|
+
3. `.aether/docs/command-playbooks/continue-advance.md`
|
|
117
|
+
4. `.aether/docs/command-playbooks/continue-finalize.md`
|
|
118
|
+
|
|
119
|
+
**Autopilot override for runtime verification (Step 1.11 in continue-gates):**
|
|
120
|
+
Skip the AskUserQuestion prompt. Instead, auto-PAUSE with reason
|
|
121
|
+
"Runtime verification required" so the user can test manually before resuming.
|
|
122
|
+
|
|
123
|
+
### Step 4: Continue Pause Check
|
|
124
|
+
|
|
125
|
+
**PAUSE if ANY of these are true:**
|
|
126
|
+
|
|
127
|
+
| # | Condition | Source |
|
|
128
|
+
|---|-----------|--------|
|
|
129
|
+
| 4 | Verification loop reported NOT READY | continue-verify |
|
|
130
|
+
| 5 | Gatekeeper found critical CVEs | continue-gates |
|
|
131
|
+
| 6 | Auditor critical findings or score < 60 | continue-gates |
|
|
132
|
+
| 7 | Unresolved blocker flags remain | continue-gates |
|
|
133
|
+
| 8 | Runtime verification needed | continue-gates Step 1.11 |
|
|
134
|
+
| 9 | All phases complete (no next phase) | continue-advance |
|
|
135
|
+
| 10 | Replan trigger fires (unless `--continue`) | autopilot-check-replan (Step 5.5) |
|
|
136
|
+
|
|
137
|
+
For condition 9: jump to Step 6 (celebration). For condition 10: PAUSE with
|
|
138
|
+
replan suggestion (see Step 5.5). For all others: PAUSE with reason, log event, STOP.
|
|
139
|
+
|
|
140
|
+
**If no pause:** proceed to Step 5.
|
|
141
|
+
|
|
142
|
+
### Step 5: Auto-Advance and Loop
|
|
143
|
+
|
|
144
|
+
1. Increment `phases_completed`
|
|
145
|
+
2. Update autopilot state: `bash .aether/aether-utils.sh autopilot-update --action advance --phase {next} --result success`
|
|
146
|
+
3. Log: `"<timestamp>|autopilot_advance|run|Phase {prev} -> {next} ({phases_completed}/{max})"`
|
|
147
|
+
4. Display: `--- Autopilot: Phase {prev} done -> Phase {next} ({N}/{max}) ---`
|
|
148
|
+
5. **Replan check** (see Step 5.5)
|
|
149
|
+
6. If `phases_completed >= max_phases` or no incomplete phases: go to Step 6
|
|
150
|
+
7. Otherwise: update `current_phase`, return to Step 1
|
|
151
|
+
|
|
152
|
+
### Step 5.5: Replan Trigger Check
|
|
153
|
+
|
|
154
|
+
After each successful phase advance, check if a replan pause should fire:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
bash .aether/aether-utils.sh autopilot-check-replan --interval {replan_interval}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
If `--continue` flag was passed: skip this check entirely (user dismissed replan).
|
|
161
|
+
|
|
162
|
+
If `result.should_replan == true`: **PAUSE** with replan suggestion banner:
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
━━━ R E P L A N S U G G E S T E D ━━━
|
|
166
|
+
Phases auto-completed: {N} | Learnings accumulated: {learnings_since_last}
|
|
167
|
+
|
|
168
|
+
The colony has completed {N} phases since the last plan review.
|
|
169
|
+
New learnings may have changed the optimal path forward.
|
|
170
|
+
|
|
171
|
+
Options:
|
|
172
|
+
/ant:plan Regenerate phases with current learnings
|
|
173
|
+
/ant:run --continue Dismiss and continue without replanning
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Log: `"<timestamp>|autopilot_replan_pause|run|Replan suggested after {N} phases ({learnings} learnings)"`
|
|
177
|
+
|
|
178
|
+
If `result.should_replan == false`: proceed normally (no pause).
|
|
179
|
+
|
|
180
|
+
### Step 6: Final Summary
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
━━━ A U T O P I L O T C O M P L E T E ━━━
|
|
184
|
+
Phases completed: {N} | Elapsed: {Xm Ys} | Now at: Phase {current}
|
|
185
|
+
|
|
186
|
+
{all complete} -> Colony goal achieved! Run /ant:seal
|
|
187
|
+
{max reached} -> Run /ant:run to continue
|
|
188
|
+
{replan} -> Run /ant:plan to replan, or /ant:run --continue to dismiss
|
|
189
|
+
{paused} -> Fix {reason}, then /ant:run to resume
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Update session:
|
|
193
|
+
`bash .aether/aether-utils.sh session-update "/ant:run" "/ant:run" "Autopilot: {N} phases, now Phase {current}"`
|
|
194
|
+
|
|
195
|
+
## Execution Contract
|
|
196
|
+
|
|
197
|
+
For each playbook stage: Read file, execute inline, track `{stage_name, status, key_outputs}`.
|
|
198
|
+
If `status == failed`: evaluate pause conditions. Pause = graceful stop with saved state.
|
|
199
|
+
Hard failure (e.g., state corruption) = halt immediately, no recovery attempt.
|
|
200
|
+
|
|
201
|
+
On every pause: save COLONY_STATE.json, log event, update session, display resume instructions.
|
|
@@ -1,34 +1,23 @@
|
|
|
1
|
+
<!-- Generated from .aether/commands/seal.yaml - DO NOT EDIT DIRECTLY -->
|
|
1
2
|
---
|
|
2
3
|
name: ant:seal
|
|
3
4
|
description: "🏺🐜🏺 Seal the colony with Crowned Anthill milestone"
|
|
4
5
|
---
|
|
5
6
|
|
|
6
|
-
You are the **Queen**. Seal the colony when all work is complete.
|
|
7
|
-
|
|
8
|
-
## Instructions
|
|
9
|
-
|
|
10
7
|
### Step -1: Normalize Arguments
|
|
11
8
|
|
|
12
9
|
Run: `normalized_args=$(bash .aether/aether-utils.sh normalize-args "$@")`
|
|
13
10
|
|
|
14
11
|
This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
|
|
15
12
|
|
|
13
|
+
You are the **Queen**. Seal the colony when all work is complete.
|
|
14
|
+
|
|
15
|
+
## Instructions
|
|
16
|
+
|
|
16
17
|
Parse `$normalized_args`:
|
|
17
18
|
- If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
|
|
18
19
|
- Otherwise: set `visual_mode = true`
|
|
19
20
|
|
|
20
|
-
### Step 0: Initialize Visual Mode (if enabled)
|
|
21
|
-
|
|
22
|
-
If `visual_mode` is true:
|
|
23
|
-
```bash
|
|
24
|
-
# Generate session ID
|
|
25
|
-
seal_id="seal-$(date +%s)"
|
|
26
|
-
|
|
27
|
-
# Initialize swarm display
|
|
28
|
-
bash .aether/aether-utils.sh swarm-display-init "$seal_id"
|
|
29
|
-
bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "excavating" "Sealing colony" "Colony" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 0
|
|
30
|
-
```
|
|
31
|
-
|
|
32
21
|
### Step 1: Read State
|
|
33
22
|
|
|
34
23
|
Read `.aether/data/COLONY_STATE.json`.
|
|
@@ -139,6 +128,31 @@ Create archive manifest file `$archive_dir/manifest.json`:
|
|
|
139
128
|
}
|
|
140
129
|
```
|
|
141
130
|
|
|
131
|
+
### Step 4.5: Increment Colony Version
|
|
132
|
+
|
|
133
|
+
Before writing the Crowned Anthill milestone, increment `colony_version` in COLONY_STATE.json.
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Read current colony_version (default to 0 for backward compat with older colonies)
|
|
137
|
+
current_colony_version=$(jq -r '.colony_version // 0' .aether/data/COLONY_STATE.json 2>/dev/null || echo 0)
|
|
138
|
+
# Guard against non-integer values (floats, strings)
|
|
139
|
+
[[ "$current_colony_version" =~ ^[0-9]+$ ]] || current_colony_version=0
|
|
140
|
+
new_colony_version=$(( current_colony_version + 1 ))
|
|
141
|
+
|
|
142
|
+
# Write incremented value back — guard against empty output destroying the file
|
|
143
|
+
updated=$(jq --argjson v "$new_colony_version" '.colony_version = $v' .aether/data/COLONY_STATE.json 2>/dev/null)
|
|
144
|
+
if [[ -n "$updated" && ${#updated} -gt 10 ]]; then
|
|
145
|
+
echo "$updated" > .aether/data/COLONY_STATE.json
|
|
146
|
+
else
|
|
147
|
+
echo "Warning: jq update failed — colony_version defaults to 1, state file unchanged"
|
|
148
|
+
new_colony_version=1
|
|
149
|
+
fi
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Use `new_colony_version` as `{colony_version}` throughout the rest of the seal ceremony (e.g., display as "Crowned Anthill v{colony_version}").
|
|
153
|
+
|
|
154
|
+
**Error handling:** If jq fails or produces empty/short output, COLONY_STATE.json is NOT overwritten and `new_colony_version` defaults to 1. Never let version increment failures block the seal.
|
|
155
|
+
|
|
142
156
|
### Step 5: Update Milestone to Crowned Anthill
|
|
143
157
|
|
|
144
158
|
Update COLONY_STATE.json:
|
|
@@ -146,60 +160,188 @@ Update COLONY_STATE.json:
|
|
|
146
160
|
2. Set `milestone_updated_at` to current ISO-8601 timestamp
|
|
147
161
|
3. Append event: `"<timestamp>|milestone_reached|archive|Achieved Crowned Anthill milestone - colony archived"`
|
|
148
162
|
|
|
149
|
-
### Step 5.
|
|
163
|
+
### Step 5.1: Update Changelog
|
|
150
164
|
|
|
151
|
-
|
|
165
|
+
**MANDATORY: Record the seal in the project changelog. This step is never skipped.**
|
|
166
|
+
|
|
167
|
+
If no `CHANGELOG.md` exists, `changelog-append` creates one automatically.
|
|
168
|
+
|
|
169
|
+
Build a summary of what the colony accomplished across all phases:
|
|
170
|
+
- Collect completed phase names from COLONY_STATE.json
|
|
171
|
+
- Summarize the goal and key outcomes in one line
|
|
152
172
|
|
|
153
173
|
```bash
|
|
154
|
-
|
|
155
|
-
|
|
174
|
+
bash .aether/aether-utils.sh changelog-append \
|
|
175
|
+
"$(date +%Y-%m-%d)" \
|
|
176
|
+
"seal-crowned-anthill" \
|
|
177
|
+
"00" \
|
|
178
|
+
"{key_files_csv}" \
|
|
179
|
+
"Colony sealed at Crowned Anthill;{goal}" \
|
|
180
|
+
"{phases_completed} phases completed;Colony wisdom promoted to QUEEN.md" \
|
|
181
|
+
""
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
- `{key_files_csv}` — list the most significant files created or modified across the colony's lifetime (derive from phase plans or git log)
|
|
185
|
+
- `{goal}` — the colony goal from COLONY_STATE.json
|
|
186
|
+
|
|
187
|
+
**Error handling:** If `changelog-append` fails, log to midden and continue — changelog failure never blocks sealing.
|
|
188
|
+
|
|
189
|
+
### Step 5.2: Update Registry (Silent)
|
|
190
|
+
|
|
191
|
+
Mark the colony as inactive in the global registry. This is silent on failure — registry is not required for the colony to work.
|
|
192
|
+
|
|
193
|
+
Run using the Bash tool (ignore errors):
|
|
194
|
+
```bash
|
|
195
|
+
bash .aether/aether-utils.sh registry-add "$(pwd)" "$(jq -r '.version // "unknown"' ~/.aether/version.json 2>/dev/null || echo 'unknown')" --active false 2>/dev/null || true
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
If the command fails, proceed silently. This is optional bookkeeping.
|
|
199
|
+
|
|
200
|
+
### Step 5.25: Hive Promotion (NON-BLOCKING)
|
|
201
|
+
|
|
202
|
+
After wisdom promotion, promote abstracted instincts to the cross-colony hive.
|
|
203
|
+
|
|
204
|
+
**Extract high-confidence instincts for hive promotion:**
|
|
205
|
+
```bash
|
|
206
|
+
# Get instincts with confidence >= 0.8
|
|
207
|
+
high_conf_instincts=$(jq -r '.memory.instincts[] | select(.confidence >= 0.8) | @base64' .aether/data/COLONY_STATE.json 2>/dev/null || echo "")
|
|
208
|
+
|
|
209
|
+
# Derive source repo name from current directory
|
|
210
|
+
source_repo="$(pwd)"
|
|
211
|
+
|
|
212
|
+
# Read domain tags from registry (NOT from instinct.domain which is a category, not a repo domain)
|
|
213
|
+
repo_domain_tags=$(jq -r --arg repo "$(pwd)" \
|
|
214
|
+
'[.repos[] | select(.path == $repo) | .domain_tags // []] | .[0] // [] | join(",")' \
|
|
215
|
+
"$HOME/.aether/registry.json" 2>/dev/null || echo "")
|
|
216
|
+
|
|
217
|
+
hive_promoted_count=0
|
|
218
|
+
hive_errors=0
|
|
219
|
+
for encoded in $high_conf_instincts; do
|
|
220
|
+
[[ -z "$encoded" ]] && continue
|
|
221
|
+
|
|
222
|
+
# Extract trigger and action fields from the instinct object
|
|
223
|
+
trigger=$(echo "$encoded" | base64 -d | jq -r '.trigger // empty')
|
|
224
|
+
action=$(echo "$encoded" | base64 -d | jq -r '.action // empty')
|
|
225
|
+
confidence=$(echo "$encoded" | base64 -d | jq -r '.confidence // 0.7')
|
|
226
|
+
|
|
227
|
+
[[ -z "$trigger" || -z "$action" ]] && continue
|
|
156
228
|
|
|
157
|
-
|
|
158
|
-
|
|
229
|
+
# Strip leading "When " or "when " from trigger to avoid "When When..." stutter
|
|
230
|
+
trigger_clean=$(echo "$trigger" | sed 's/^[Ww]hen //')
|
|
159
231
|
|
|
160
|
-
|
|
161
|
-
{
|
|
232
|
+
# Build the promotion text in "When {trigger}: {action}" format
|
|
233
|
+
promote_text="When ${trigger_clean}: ${action}"
|
|
162
234
|
|
|
163
|
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
166
|
-
- Milestone: Crowned Anthill
|
|
167
|
-
- Sealed At: {timestamp}
|
|
235
|
+
# Build hive-promote args with --text and --source-repo (required)
|
|
236
|
+
promote_args=(hive-promote --text "$promote_text" --source-repo "$source_repo" --confidence "$confidence")
|
|
237
|
+
[[ -n "$repo_domain_tags" ]] && promote_args+=(--domain "$repo_domain_tags")
|
|
168
238
|
|
|
169
|
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
172
|
-
- spawn-tree.txt
|
|
173
|
-
- flags.json (if existed)
|
|
174
|
-
- constraints.json (if existed)
|
|
239
|
+
# Call hive-promote which orchestrates abstract + store
|
|
240
|
+
result=$(bash .aether/aether-utils.sh "${promote_args[@]}" 2>/dev/null || echo '{}')
|
|
241
|
+
was_promoted=$(echo "$result" | jq -r '.result.action // "skipped"' 2>/dev/null || echo "skipped")
|
|
175
242
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
243
|
+
if [[ "$was_promoted" == "promoted" || "$was_promoted" == "merged" ]]; then
|
|
244
|
+
hive_promoted_count=$((hive_promoted_count + 1))
|
|
245
|
+
fi
|
|
246
|
+
done
|
|
247
|
+
|
|
248
|
+
if [[ "$hive_promoted_count" -gt 0 ]]; then
|
|
249
|
+
echo "Hive promotion: $hive_promoted_count instinct(s) promoted to cross-colony hive"
|
|
250
|
+
fi
|
|
180
251
|
```
|
|
181
252
|
|
|
253
|
+
**Continue to Step 5.5 (non-blocking):**
|
|
254
|
+
Proceed to Step 5.5 regardless of hive promotion results — hive promotion is strictly non-blocking.
|
|
255
|
+
|
|
256
|
+
### Step 5.5: Write Final Handoff
|
|
257
|
+
|
|
258
|
+
After archiving, write the final handoff documenting the completed colony:
|
|
259
|
+
|
|
260
|
+
Resolve the handoff template path:
|
|
261
|
+
Check ~/.aether/system/templates/handoff.template.md first,
|
|
262
|
+
then .aether/templates/handoff.template.md.
|
|
263
|
+
|
|
264
|
+
If no template found: output "Template missing: handoff.template.md. Run aether update to fix." and stop.
|
|
265
|
+
|
|
266
|
+
Read the template file. Fill all {{PLACEHOLDER}} values:
|
|
267
|
+
- {{CHAMBER_NAME}} → archive directory name
|
|
268
|
+
- {{GOAL}} → goal
|
|
269
|
+
- {{PHASES_COMPLETED}} → total_phases (OpenCode seal archives completed colonies)
|
|
270
|
+
- {{TOTAL_PHASES}} → total_phases
|
|
271
|
+
- {{MILESTONE}} → "Crowned Anthill"
|
|
272
|
+
- {{ENTOMB_TIMESTAMP}} → seal timestamp
|
|
273
|
+
|
|
274
|
+
Remove the HTML comment lines at the top of the template.
|
|
275
|
+
Write the result to .aether/HANDOFF.md using the Write tool.
|
|
276
|
+
|
|
182
277
|
This handoff serves as the final record of the completed colony.
|
|
183
278
|
|
|
184
|
-
### Step
|
|
279
|
+
### Step 5.75: Export XML Archive (best-effort)
|
|
280
|
+
|
|
281
|
+
Export colony data as a combined XML archive and a standalone pheromones.xml. Both are best-effort — seal proceeds even if XML export fails.
|
|
185
282
|
|
|
186
|
-
**If visual_mode is true, render final swarm display:**
|
|
187
283
|
```bash
|
|
188
|
-
|
|
189
|
-
|
|
284
|
+
# Check if xmllint is available
|
|
285
|
+
if command -v xmllint >/dev/null 2>&1; then
|
|
286
|
+
xml_result=$(bash .aether/aether-utils.sh colony-archive-xml ".aether/exchange/colony-archive.xml" 2>&1)
|
|
287
|
+
xml_ok=$(echo "$xml_result" | jq -r '.ok // false' 2>/dev/null)
|
|
288
|
+
if [[ "$xml_ok" == "true" ]]; then
|
|
289
|
+
xml_pheromone_count=$(echo "$xml_result" | jq -r '.result.pheromone_count // 0' 2>/dev/null)
|
|
290
|
+
xml_export_line="XML Archive: colony-archive.xml (${xml_pheromone_count} active signals)"
|
|
291
|
+
else
|
|
292
|
+
xml_export_line="XML Archive: export failed (non-blocking)"
|
|
293
|
+
fi
|
|
294
|
+
|
|
295
|
+
# Also export standalone pheromones.xml for cross-colony sharing
|
|
296
|
+
pher_result=$(bash .aether/aether-utils.sh pheromone-export-xml ".aether/exchange/pheromones.xml" 2>&1)
|
|
297
|
+
pher_ok=$(echo "$pher_result" | jq -r '.ok // false' 2>/dev/null)
|
|
298
|
+
if [[ "$pher_ok" == "true" ]]; then
|
|
299
|
+
pher_signal_count=$(jq '[.signals[] | select(.active != false)] | length' .aether/data/pheromones.json 2>/dev/null || echo "0")
|
|
300
|
+
pher_export_line="Signal Export: pheromones.xml (${pher_signal_count} signals, importable by other colonies)"
|
|
301
|
+
else
|
|
302
|
+
pher_export_line="Signal Export: failed (non-blocking)"
|
|
303
|
+
fi
|
|
304
|
+
|
|
305
|
+
# Export standalone queen-wisdom.xml for cross-colony wisdom sharing
|
|
306
|
+
wisdom_result=$(bash .aether/aether-utils.sh wisdom-export-xml ".aether/exchange/queen-wisdom.xml" 2>&1)
|
|
307
|
+
wisdom_ok=$(echo "$wisdom_result" | jq -r '.ok // false' 2>/dev/null)
|
|
308
|
+
if [[ "$wisdom_ok" == "true" ]]; then
|
|
309
|
+
wisdom_count=$(echo "$wisdom_result" | jq -r '.result.entries // 0' 2>/dev/null)
|
|
310
|
+
wisdom_export_line="Wisdom Export: queen-wisdom.xml (${wisdom_count} entries)"
|
|
311
|
+
else
|
|
312
|
+
wisdom_export_line="Wisdom Export: failed (non-blocking)"
|
|
313
|
+
fi
|
|
314
|
+
|
|
315
|
+
# Export standalone colony-registry.xml for lineage tracking
|
|
316
|
+
registry_result=$(bash .aether/aether-utils.sh registry-export-xml ".aether/exchange/colony-registry.xml" 2>&1)
|
|
317
|
+
registry_ok=$(echo "$registry_result" | jq -r '.ok // false' 2>/dev/null)
|
|
318
|
+
if [[ "$registry_ok" == "true" ]]; then
|
|
319
|
+
registry_count=$(echo "$registry_result" | jq -r '.result.colonies // 0' 2>/dev/null)
|
|
320
|
+
registry_export_line="Registry Export: colony-registry.xml (${registry_count} colonies)"
|
|
321
|
+
else
|
|
322
|
+
registry_export_line="Registry Export: failed (non-blocking)"
|
|
323
|
+
fi
|
|
324
|
+
else
|
|
325
|
+
xml_export_line="XML Archive: skipped (xmllint not available)"
|
|
326
|
+
pher_export_line="Signal Export: skipped (xmllint not available)"
|
|
327
|
+
wisdom_export_line="Wisdom Export: skipped (xmllint not available)"
|
|
328
|
+
registry_export_line="Registry Export: skipped (xmllint not available)"
|
|
329
|
+
fi
|
|
190
330
|
```
|
|
191
331
|
|
|
332
|
+
### Step 6: Display Result
|
|
333
|
+
|
|
192
334
|
Output:
|
|
193
335
|
```
|
|
194
336
|
🏺 ════════════════════════════════════════════════════
|
|
195
|
-
C R O W N E D A N T H I L L
|
|
337
|
+
C R O W N E D A N T H I L L v{colony_version}
|
|
196
338
|
══════════════════════════════════════════════════ 🏺
|
|
197
339
|
|
|
198
340
|
✅ Colony archived successfully!
|
|
199
341
|
|
|
200
342
|
👑 Goal: {goal (truncated to 60 chars)}
|
|
201
343
|
📍 Phases: {total_phases} completed
|
|
202
|
-
🏆 Milestone: Crowned Anthill
|
|
344
|
+
🏆 Milestone: Crowned Anthill v{colony_version}
|
|
203
345
|
|
|
204
346
|
📦 Archive Location: {archive_dir}
|
|
205
347
|
- COLONY_STATE.json
|
|
@@ -207,6 +349,10 @@ Output:
|
|
|
207
349
|
- spawn-tree.txt
|
|
208
350
|
- flags.json (if existed)
|
|
209
351
|
- constraints.json (if existed)
|
|
352
|
+
{xml_export_line}
|
|
353
|
+
{pher_export_line}
|
|
354
|
+
{wisdom_export_line}
|
|
355
|
+
{registry_export_line}
|
|
210
356
|
|
|
211
357
|
🐜 The colony has reached its final form.
|
|
212
358
|
The anthill stands crowned and sealed.
|
|
@@ -226,6 +372,74 @@ If option 2 selected: run /ant:tunnels
|
|
|
226
372
|
If option 3 selected: display "Run /ant:lay-eggs to begin anew after clearing"
|
|
227
373
|
```
|
|
228
374
|
|
|
375
|
+
### Step 6.5: Commit Suggestion (Non-blocking)
|
|
376
|
+
|
|
377
|
+
After the ceremony, offer to commit all colony work.
|
|
378
|
+
|
|
379
|
+
**Gate check — skip silently if any fail:**
|
|
380
|
+
1. Not a git repo: `git rev-parse --git-dir 2>/dev/null` fails -> skip
|
|
381
|
+
2. Clean working tree: `git status --porcelain 2>/dev/null` is empty -> skip to Step 6.6
|
|
382
|
+
|
|
383
|
+
**If uncommitted changes exist:**
|
|
384
|
+
|
|
385
|
+
Generate a seal commit message:
|
|
386
|
+
```bash
|
|
387
|
+
seal_commit=$(bash .aether/aether-utils.sh generate-commit-message seal "$phases_completed" "$goal" "$colony_age_days" 2>/dev/null)
|
|
388
|
+
seal_message=$(echo "$seal_commit" | jq -r '.result.message // "aether-seal: colony sealed"')
|
|
389
|
+
seal_body=$(echo "$seal_commit" | jq -r '.result.body // ""')
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
Display the suggestion:
|
|
393
|
+
```
|
|
394
|
+
Commit suggestion:
|
|
395
|
+
$seal_message
|
|
396
|
+
$seal_body
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
Prompt with AskUserQuestion (3 options):
|
|
400
|
+
1. **Commit with this message** — Run `git add -A && git commit -m "$seal_message" -m "$seal_body"`
|
|
401
|
+
2. **Edit message** — Ask user for their preferred message, then commit with that
|
|
402
|
+
3. **Skip** — Do not commit
|
|
403
|
+
|
|
404
|
+
If the user chooses option 1 or 2 and the commit succeeds, set `seal_committed = true`.
|
|
405
|
+
If the commit fails or user skips, set `seal_committed = false`.
|
|
406
|
+
|
|
407
|
+
**Error handling:** If `generate-commit-message` fails, fall back to message `"aether-seal: colony sealed"`. Never let commit suggestion failures stop the seal flow.
|
|
408
|
+
|
|
409
|
+
### Step 6.6: Push Suggestion (Non-blocking)
|
|
410
|
+
|
|
411
|
+
Only show if a commit was just made in Step 6.5 (`seal_committed == true`) OR if there are unpushed commits.
|
|
412
|
+
|
|
413
|
+
**Gate check — skip silently if any fail:**
|
|
414
|
+
1. Not a git repo -> skip
|
|
415
|
+
2. No remote configured: `git remote -v 2>/dev/null` is empty -> skip
|
|
416
|
+
|
|
417
|
+
**Check for unpushed commits:**
|
|
418
|
+
```bash
|
|
419
|
+
unpushed=$(git log --oneline @{u}..HEAD 2>/dev/null | wc -l | tr -d ' ')
|
|
420
|
+
```
|
|
421
|
+
If `unpushed == 0` and `seal_committed == false` -> skip
|
|
422
|
+
|
|
423
|
+
**If there are commits to push:**
|
|
424
|
+
|
|
425
|
+
Detect current branch and upstream status:
|
|
426
|
+
```bash
|
|
427
|
+
current_branch=$(git branch --show-current)
|
|
428
|
+
has_upstream=$(git rev-parse --abbrev-ref @{u} 2>/dev/null && echo "yes" || echo "no")
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
Display: `Push {unpushed} commit(s) to remote? Branch: {current_branch}`
|
|
432
|
+
|
|
433
|
+
Prompt with AskUserQuestion (2 options):
|
|
434
|
+
1. **Push now** — If upstream exists: `git push`. If no upstream: `git push -u origin $current_branch`
|
|
435
|
+
2. **I'll push later** — Skip
|
|
436
|
+
|
|
437
|
+
Display result on success or skip.
|
|
438
|
+
|
|
439
|
+
**Error handling:** If push fails, display the error but do not stop the seal flow.
|
|
440
|
+
|
|
441
|
+
**Safety:** Never auto-push. Always require explicit user approval.
|
|
442
|
+
|
|
229
443
|
### Edge Cases
|
|
230
444
|
|
|
231
445
|
**If milestone is already "Sealed Chambers" but phases are complete:**
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<!-- Generated from .aether/commands/skill-create.yaml - DO NOT EDIT DIRECTLY -->
|
|
2
|
+
---
|
|
3
|
+
name: ant:skill-create
|
|
4
|
+
description: "Create a custom domain skill using Oracle mini-research and a guided wizard"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
### Step -1: Normalize Arguments
|
|
8
|
+
|
|
9
|
+
Run: `normalized_args=$(bash .aether/aether-utils.sh normalize-args "$@")`
|
|
10
|
+
|
|
11
|
+
This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
|
|
12
|
+
|
|
13
|
+
You are the **Builder**. Create a custom domain skill by researching best practices and guiding the user through a wizard.
|
|
14
|
+
|
|
15
|
+
## Instructions
|
|
16
|
+
|
|
17
|
+
### Step 0: Parse Arguments
|
|
18
|
+
|
|
19
|
+
If `$normalized_args` is empty:
|
|
20
|
+
```
|
|
21
|
+
Usage: /ant:skill-create "<topic>"
|
|
22
|
+
|
|
23
|
+
Creates a custom domain skill using Oracle mini-research.
|
|
24
|
+
|
|
25
|
+
Examples:
|
|
26
|
+
/ant:skill-create "tailwind"
|
|
27
|
+
/ant:skill-create "react native"
|
|
28
|
+
/ant:skill-create "kubernetes"
|
|
29
|
+
```
|
|
30
|
+
Stop here.
|
|
31
|
+
|
|
32
|
+
### Step 1: Oracle Mini-Research
|
|
33
|
+
|
|
34
|
+
Launch a focused research session on the topic (5 iterations max):
|
|
35
|
+
1. Web search for best practices, common patterns, and gotchas
|
|
36
|
+
2. Codebase scan for existing usage of the technology
|
|
37
|
+
3. Compile findings into structured notes
|
|
38
|
+
|
|
39
|
+
### Step 2: Wizard Questions
|
|
40
|
+
|
|
41
|
+
Ask the user:
|
|
42
|
+
1. What aspect to focus on? (provide 2-4 options based on findings)
|
|
43
|
+
2. Experience level? (beginner / intermediate / advanced)
|
|
44
|
+
3. Any specific rules or constraints? (free text)
|
|
45
|
+
|
|
46
|
+
### Step 3: Generate SKILL.md
|
|
47
|
+
|
|
48
|
+
Create the skill file with proper frontmatter and body:
|
|
49
|
+
- name: derived from topic
|
|
50
|
+
- description: "Use when working with {topic}"
|
|
51
|
+
- type: domain
|
|
52
|
+
- domains: inferred from research
|
|
53
|
+
- agent_roles: [builder]
|
|
54
|
+
- detect_files / detect_packages: inferred from research
|
|
55
|
+
- Body: practical best-practices guide from research + wizard answers
|
|
56
|
+
|
|
57
|
+
### Step 4: Write and Verify
|
|
58
|
+
|
|
59
|
+
1. Write to `~/.aether/skills/domain/{name}/SKILL.md`
|
|
60
|
+
2. Run: `bash .aether/aether-utils.sh skill-parse-frontmatter ~/.aether/skills/domain/{name}/SKILL.md`
|
|
61
|
+
3. Run: `bash .aether/aether-utils.sh skill-cache-rebuild`
|
|
62
|
+
4. Show the generated skill to the user
|
|
63
|
+
5. Ask if they want to adjust anything
|