aether-colony 5.0.0 β 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 +3150 -3349
- 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 +11 -11
- package/.aether/docs/README.md +32 -2
- package/.aether/docs/command-playbooks/README.md +23 -0
- package/.aether/docs/command-playbooks/build-complete.md +349 -0
- package/.aether/docs/command-playbooks/build-context.md +282 -0
- package/.aether/docs/command-playbooks/build-full.md +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/.aether/docs/disciplines/DISCIPLINES.md +9 -7
- package/.aether/docs/error-codes.md +1 -1
- package/.aether/docs/known-issues.md +34 -173
- package/.aether/docs/pheromones.md +86 -6
- package/.aether/docs/plans/pheromone-display-plan.md +257 -0
- package/.aether/docs/queen-commands.md +10 -9
- package/.aether/docs/source-of-truth-map.md +132 -0
- package/.aether/docs/xml-utilities.md +47 -0
- package/.aether/rules/aether-colony.md +23 -13
- package/.aether/scripts/incident-test-add.sh +47 -0
- package/.aether/scripts/weekly-audit.sh +79 -0
- package/.aether/skills/.index.json +649 -0
- package/.aether/skills/colony/.manifest.json +16 -0
- package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
- package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
- package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
- package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
- package/.aether/skills/colony/context-management/SKILL.md +80 -0
- package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
- package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
- package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
- package/.aether/skills/colony/state-safety/SKILL.md +84 -0
- package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
- package/.aether/skills/domain/.manifest.json +24 -0
- package/.aether/skills/domain/README.md +33 -0
- package/.aether/skills/domain/django/SKILL.md +49 -0
- package/.aether/skills/domain/docker/SKILL.md +52 -0
- package/.aether/skills/domain/golang/SKILL.md +52 -0
- package/.aether/skills/domain/graphql/SKILL.md +51 -0
- package/.aether/skills/domain/html-css/SKILL.md +48 -0
- package/.aether/skills/domain/nextjs/SKILL.md +45 -0
- package/.aether/skills/domain/nodejs/SKILL.md +53 -0
- package/.aether/skills/domain/postgresql/SKILL.md +53 -0
- package/.aether/skills/domain/prisma/SKILL.md +59 -0
- package/.aether/skills/domain/python/SKILL.md +50 -0
- package/.aether/skills/domain/rails/SKILL.md +52 -0
- package/.aether/skills/domain/react/SKILL.md +45 -0
- package/.aether/skills/domain/rest-api/SKILL.md +58 -0
- package/.aether/skills/domain/svelte/SKILL.md +47 -0
- package/.aether/skills/domain/tailwind/SKILL.md +45 -0
- package/.aether/skills/domain/testing/SKILL.md +53 -0
- package/.aether/skills/domain/typescript/SKILL.md +58 -0
- package/.aether/skills/domain/vue/SKILL.md +49 -0
- package/.aether/templates/QUEEN.md.template +23 -41
- package/.aether/templates/colony-state-reset.jq.template +1 -0
- package/.aether/templates/colony-state.template.json +4 -0
- package/.aether/templates/learning-observations.template.json +6 -0
- package/.aether/templates/midden.template.json +13 -0
- package/.aether/templates/pheromones.template.json +6 -0
- package/.aether/templates/session.template.json +9 -0
- package/.aether/utils/atomic-write.sh +63 -17
- package/.aether/utils/chamber-utils.sh +145 -2
- package/.aether/utils/emoji-audit.sh +166 -0
- package/.aether/utils/error-handler.sh +21 -7
- package/.aether/utils/file-lock.sh +182 -27
- package/.aether/utils/flag.sh +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 +10 -8
- package/.aether/utils/session.sh +552 -0
- package/.aether/utils/skills.sh +509 -0
- package/.aether/utils/spawn-tree.sh +103 -271
- package/.aether/utils/spawn.sh +260 -0
- package/.aether/utils/state-api.sh +199 -0
- package/.aether/utils/state-loader.sh +8 -6
- package/.aether/utils/suggest.sh +611 -0
- package/.aether/utils/swarm-display.sh +10 -1
- package/.aether/utils/swarm.sh +1004 -0
- package/.aether/utils/watch-spawn-tree.sh +11 -2
- package/.aether/utils/xml-compose.sh +2 -2
- package/.aether/utils/xml-convert.sh +9 -5
- package/.aether/utils/xml-core.sh +5 -9
- package/.aether/utils/xml-query.sh +4 -4
- package/.aether/workers.md +86 -67
- package/.claude/agents/ant/aether-ambassador.md +2 -1
- package/.claude/agents/ant/aether-archaeologist.md +6 -1
- package/.claude/agents/ant/aether-architect.md +236 -0
- package/.claude/agents/ant/aether-auditor.md +6 -1
- package/.claude/agents/ant/aether-builder.md +38 -1
- package/.claude/agents/ant/aether-chaos.md +2 -1
- package/.claude/agents/ant/aether-chronicler.md +1 -0
- package/.claude/agents/ant/aether-gatekeeper.md +6 -1
- package/.claude/agents/ant/aether-includer.md +1 -0
- package/.claude/agents/ant/aether-keeper.md +1 -0
- package/.claude/agents/ant/aether-measurer.md +6 -1
- package/.claude/agents/ant/aether-oracle.md +237 -0
- package/.claude/agents/ant/aether-probe.md +2 -1
- package/.claude/agents/ant/aether-queen.md +6 -1
- package/.claude/agents/ant/aether-route-setter.md +6 -1
- package/.claude/agents/ant/aether-sage.md +68 -3
- package/.claude/agents/ant/aether-scout.md +38 -1
- package/.claude/agents/ant/aether-surveyor-disciplines.md +2 -1
- package/.claude/agents/ant/aether-surveyor-nest.md +2 -1
- package/.claude/agents/ant/aether-surveyor-pathogens.md +2 -1
- package/.claude/agents/ant/aether-surveyor-provisions.md +2 -1
- package/.claude/agents/ant/aether-tracker.md +6 -1
- package/.claude/agents/ant/aether-watcher.md +37 -1
- package/.claude/agents/ant/aether-weaver.md +2 -1
- package/.claude/commands/ant/archaeology.md +1 -8
- package/.claude/commands/ant/build.md +43 -1159
- package/.claude/commands/ant/chaos.md +1 -14
- package/.claude/commands/ant/colonize.md +1 -14
- package/.claude/commands/ant/continue.md +40 -1026
- package/.claude/commands/ant/council.md +9 -16
- package/.claude/commands/ant/data-clean.md +81 -0
- package/.claude/commands/ant/dream.md +12 -9
- package/.claude/commands/ant/entomb.md +62 -87
- package/.claude/commands/ant/export-signals.md +57 -0
- package/.claude/commands/ant/feedback.md +18 -0
- package/.claude/commands/ant/flag.md +12 -0
- package/.claude/commands/ant/flags.md +22 -8
- package/.claude/commands/ant/focus.md +18 -0
- package/.claude/commands/ant/help.md +40 -8
- package/.claude/commands/ant/history.md +3 -0
- package/.claude/commands/ant/import-signals.md +71 -0
- package/.claude/commands/ant/init.md +316 -191
- package/.claude/commands/ant/insert-phase.md +101 -0
- package/.claude/commands/ant/interpret.md +11 -0
- package/.claude/commands/ant/lay-eggs.md +167 -158
- package/.claude/commands/ant/maturity.md +22 -11
- package/.claude/commands/ant/memory-details.md +77 -0
- package/.claude/commands/ant/migrate-state.md +6 -0
- package/.claude/commands/ant/oracle.md +317 -62
- package/.claude/commands/ant/organize.md +10 -5
- package/.claude/commands/ant/patrol.md +620 -0
- package/.claude/commands/ant/pause-colony.md +8 -22
- package/.claude/commands/ant/phase.md +26 -37
- package/.claude/commands/ant/pheromones.md +156 -0
- package/.claude/commands/ant/plan.md +175 -52
- package/.claude/commands/ant/preferences.md +65 -0
- package/.claude/commands/ant/redirect.md +18 -0
- package/.claude/commands/ant/resume-colony.md +34 -20
- package/.claude/commands/ant/resume.md +51 -7
- package/.claude/commands/ant/run.md +195 -0
- package/.claude/commands/ant/seal.md +497 -78
- package/.claude/commands/ant/skill-create.md +286 -0
- package/.claude/commands/ant/status.md +127 -1
- package/.claude/commands/ant/swarm.md +11 -23
- package/.claude/commands/ant/tunnels.md +1 -0
- package/.claude/commands/ant/update.md +58 -135
- package/.claude/commands/ant/verify-castes.md +90 -42
- package/.claude/commands/ant/watch.md +1 -0
- package/.opencode/agents/aether-ambassador.md +1 -1
- package/.opencode/agents/aether-architect.md +133 -0
- package/.opencode/agents/aether-builder.md +3 -3
- package/.opencode/agents/aether-oracle.md +137 -0
- package/.opencode/agents/aether-queen.md +1 -1
- package/.opencode/agents/aether-route-setter.md +1 -1
- package/.opencode/agents/aether-scout.md +1 -1
- package/.opencode/agents/aether-surveyor-disciplines.md +6 -1
- package/.opencode/agents/aether-surveyor-nest.md +6 -1
- package/.opencode/agents/aether-surveyor-pathogens.md +6 -1
- package/.opencode/agents/aether-surveyor-provisions.md +6 -1
- package/.opencode/agents/aether-tracker.md +1 -1
- package/.opencode/agents/aether-watcher.md +1 -1
- package/.opencode/agents/aether-weaver.md +1 -1
- package/.opencode/commands/ant/archaeology.md +7 -14
- package/.opencode/commands/ant/build.md +54 -88
- package/.opencode/commands/ant/chaos.md +7 -24
- package/.opencode/commands/ant/colonize.md +8 -17
- package/.opencode/commands/ant/continue.md +595 -66
- 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 +28 -18
- package/.opencode/commands/ant/export-signals.md +54 -0
- package/.opencode/commands/ant/feedback.md +24 -5
- package/.opencode/commands/ant/flag.md +16 -4
- package/.opencode/commands/ant/flags.md +24 -10
- package/.opencode/commands/ant/focus.md +22 -5
- package/.opencode/commands/ant/help.md +41 -8
- package/.opencode/commands/ant/history.md +9 -0
- package/.opencode/commands/ant/import-signals.md +68 -0
- package/.opencode/commands/ant/init.md +365 -156
- 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 +14 -12
- package/.opencode/commands/ant/patrol.md +626 -0
- package/.opencode/commands/ant/pause-colony.md +12 -29
- package/.opencode/commands/ant/phase.md +30 -40
- package/.opencode/commands/ant/pheromones.md +162 -0
- package/.opencode/commands/ant/plan.md +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 +71 -20
- package/.opencode/commands/ant/run.md +201 -0
- package/.opencode/commands/ant/seal.md +230 -25
- package/.opencode/commands/ant/skill-create.md +63 -0
- package/.opencode/commands/ant/status.md +124 -31
- package/.opencode/commands/ant/swarm.md +3 -345
- package/.opencode/commands/ant/tunnels.md +3 -9
- package/.opencode/commands/ant/update.md +63 -127
- package/.opencode/commands/ant/verify-castes.md +96 -42
- package/.opencode/commands/ant/watch.md +7 -0
- package/CHANGELOG.md +278 -1
- package/README.md +188 -340
- package/bin/cli.js +236 -429
- package/bin/generate-commands.js +186 -0
- package/bin/generate-commands.sh +128 -89
- package/bin/lib/spawn-logger.js +0 -15
- package/bin/lib/update-transaction.js +285 -35
- package/bin/npx-install.js +178 -0
- package/bin/validate-package.sh +85 -3
- package/package.json +7 -3
- package/.aether/CONTEXT.md +0 -160
- package/.aether/docs/QUEEN.md +0 -84
- package/.aether/exchange/colony-registry.xml +0 -11
- package/.aether/exchange/pheromones.xml +0 -87
- package/.aether/exchange/queen-wisdom.xml +0 -14
- package/.aether/model-profiles.yaml +0 -100
- package/.aether/utils/spawn-with-model.sh +0 -56
- package/bin/lib/model-profiles.js +0 -445
- package/bin/lib/model-verify.js +0 -288
- package/bin/lib/proxy-health.js +0 -253
- package/bin/lib/telemetry.js +0 -441
|
@@ -1,17 +1,18 @@
|
|
|
1
|
+
<!-- Generated from .aether/commands/init.yaml - DO NOT EDIT DIRECTLY -->
|
|
1
2
|
---
|
|
2
3
|
name: ant:init
|
|
3
|
-
description: "
|
|
4
|
+
description: "Initialize Aether colony - scan repo, approve charter, create colony"
|
|
4
5
|
---
|
|
5
6
|
|
|
6
|
-
You are the **Queen Ant Colony**. Initialize the colony with the Queen's intention.
|
|
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
|
-
This ensures arguments work correctly in both Claude Code and OpenCode.
|
|
11
|
+
This ensures arguments work correctly in both Claude Code and OpenCode. Use `$normalized_args` throughout this command.
|
|
12
|
+
|
|
13
|
+
You are the **Queen Ant Colony**. Initialize the colony with the Queen's intention.
|
|
14
|
+
|
|
15
|
+
## Instructions
|
|
15
16
|
|
|
16
17
|
The user's goal is: `$normalized_args`
|
|
17
18
|
|
|
@@ -19,25 +20,42 @@ Parse `$normalized_args`:
|
|
|
19
20
|
- If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
|
|
20
21
|
- Otherwise: set `visual_mode = true`
|
|
21
22
|
|
|
23
|
+
|
|
22
24
|
Note: Use `$normalized_args` instead of `$ARGUMENTS` throughout this command.
|
|
23
25
|
|
|
24
26
|
### Step 0: Initialize Visual Mode (if enabled)
|
|
25
27
|
|
|
26
28
|
If `visual_mode` is true:
|
|
27
|
-
```bash
|
|
28
|
-
# Generate session ID
|
|
29
|
-
init_id="init-$(date +%s)"
|
|
30
29
|
|
|
31
|
-
# Initialize swarm display
|
|
32
|
-
bash .aether/aether-utils.sh swarm-display-init "$init_id"
|
|
33
|
-
bash .aether/aether-utils.sh swarm-display-update "Queen" "prime" "excavating" "Colony initialization" "Colony" '{"read":0,"grep":0,"edit":0,"bash":0}' 0 "fungus_garden" 0
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
### Step 0.5: Version Check (Non-blocking)
|
|
37
|
-
|
|
38
|
-
Run using the Bash tool: `bash .aether/aether-utils.sh version-check 2>/dev/null || true`
|
|
39
30
|
|
|
40
|
-
|
|
31
|
+
<failure_modes>
|
|
32
|
+
### Colony State Overwrite
|
|
33
|
+
Re-init mode detects existing COLONY_STATE.json and preserves all state. Charter content is updated in-place via charter-write. Colony state, wisdom, instincts, learnings, pheromones, and phase progress are never reset.
|
|
34
|
+
|
|
35
|
+
### Write Failure Mid-Init
|
|
36
|
+
If writing COLONY_STATE.json fails partway:
|
|
37
|
+
- Remove the incomplete file (partial state is worse than no state)
|
|
38
|
+
- Report the error
|
|
39
|
+
- Recovery: user can run /ant:init again safely
|
|
40
|
+
</failure_modes>
|
|
41
|
+
|
|
42
|
+
<success_criteria>
|
|
43
|
+
Command is complete when:
|
|
44
|
+
- User has approved the charter prompt (Charter, Context, Pheromones sections)
|
|
45
|
+
- Charter content is written to QUEEN.md via charter-write
|
|
46
|
+
- COLONY_STATE.json exists and is valid JSON (fresh init only)
|
|
47
|
+
- Session file is written
|
|
48
|
+
- User sees confirmation of colony creation or re-init
|
|
49
|
+
</success_criteria>
|
|
50
|
+
|
|
51
|
+
<read_only>
|
|
52
|
+
Do not touch during init:
|
|
53
|
+
- .aether/dreams/ (user notes)
|
|
54
|
+
- .aether/chambers/ (archived colonies)
|
|
55
|
+
- .env* files
|
|
56
|
+
- .claude/settings.json
|
|
57
|
+
- .github/workflows/
|
|
58
|
+
</read_only>
|
|
41
59
|
|
|
42
60
|
### Step 1: Validate Input
|
|
43
61
|
|
|
@@ -46,8 +64,8 @@ If `$normalized_args` is empty or blank, output:
|
|
|
46
64
|
```
|
|
47
65
|
Aether Colony
|
|
48
66
|
|
|
49
|
-
Initialize the colony with a goal. This
|
|
50
|
-
|
|
67
|
+
Initialize the colony with a goal. This scans the repo, generates
|
|
68
|
+
a charter for your approval, then creates colony files.
|
|
51
69
|
|
|
52
70
|
Usage: /ant:init "<your goal here>"
|
|
53
71
|
|
|
@@ -59,211 +77,402 @@ Aether Colony
|
|
|
59
77
|
|
|
60
78
|
Stop here. Do not proceed.
|
|
61
79
|
|
|
62
|
-
### Step 1.5:
|
|
80
|
+
### Step 1.5: Verify Aether Setup
|
|
63
81
|
|
|
64
82
|
Check if `.aether/aether-utils.sh` exists using the Read tool.
|
|
65
83
|
|
|
66
|
-
**If the file already exists**
|
|
84
|
+
**If the file already exists** -- skip this step entirely. Aether is set up.
|
|
67
85
|
|
|
68
86
|
**If the file does NOT exist:**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
cp -f ~/.aether/system/CONTEXT.md .aether/ 2>/dev/null || true && \
|
|
76
|
-
cp -f ~/.aether/system/model-profiles.yaml .aether/ 2>/dev/null || true && \
|
|
77
|
-
cp -Rf ~/.aether/system/docs/* .aether/docs/ 2>/dev/null || true && \
|
|
78
|
-
cp -Rf ~/.aether/system/utils/* .aether/utils/ 2>/dev/null || true && \
|
|
79
|
-
cp -Rf ~/.aether/system/templates/* .aether/templates/ 2>/dev/null || true && \
|
|
80
|
-
cp -Rf ~/.aether/system/schemas/* .aether/schemas/ 2>/dev/null || true && \
|
|
81
|
-
cp -Rf ~/.aether/system/exchange/* .aether/exchange/ 2>/dev/null || true && \
|
|
82
|
-
cp -Rf ~/.aether/system/rules/* .claude/rules/ 2>/dev/null || true && \
|
|
83
|
-
chmod +x .aether/aether-utils.sh
|
|
84
|
-
```
|
|
85
|
-
This copies system files from the global hub into `.aether/` and rules into `.claude/rules/`. Display:
|
|
86
|
-
```
|
|
87
|
-
Bootstrapped system files from global hub.
|
|
88
|
-
```
|
|
89
|
-
- **If the hub does NOT exist:** Output:
|
|
90
|
-
```
|
|
91
|
-
No Aether system files found locally or in ~/.aether/system/.
|
|
92
|
-
Run `aether install` or `npx aether-colony install` to set up the global hub first.
|
|
93
|
-
```
|
|
94
|
-
Stop here. Do not proceed.
|
|
95
|
-
|
|
96
|
-
### Step 2: Read Current State
|
|
97
|
-
|
|
98
|
-
Use the Read tool to read `.aether/data/COLONY_STATE.json`.
|
|
99
|
-
|
|
100
|
-
If the `goal` field is not null, output:
|
|
87
|
+
```
|
|
88
|
+
Aether is not set up in this repo yet.
|
|
89
|
+
|
|
90
|
+
Run /ant:lay-eggs first to create the .aether/ directory
|
|
91
|
+
with all system files, then run /ant:init "your goal" to
|
|
92
|
+
start a colony.
|
|
101
93
|
|
|
94
|
+
If the global hub isn't installed either:
|
|
95
|
+
npm install -g aether-colony (installs the hub)
|
|
96
|
+
/ant:lay-eggs (sets up this repo)
|
|
97
|
+
/ant:init "your goal" (starts the colony)
|
|
102
98
|
```
|
|
103
|
-
|
|
99
|
+
Stop here. Do not proceed.
|
|
100
|
+
|
|
101
|
+
### Step 2: Initialize QUEEN.md
|
|
104
102
|
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
Run:
|
|
104
|
+
```
|
|
105
|
+
bash .aether/aether-utils.sh queen-init
|
|
107
106
|
```
|
|
108
107
|
|
|
109
|
-
|
|
108
|
+
Parse the JSON result:
|
|
109
|
+
- If `created` is true: Display `QUEEN.md initialized`
|
|
110
|
+
- If `created` is false and `reason` is "already_exists": Display `QUEEN.md already exists`
|
|
110
111
|
|
|
111
|
-
|
|
112
|
+
This step is non-blocking -- proceed regardless of outcome.
|
|
112
113
|
|
|
113
|
-
|
|
114
|
+
### Step 3: Scan Repository
|
|
114
115
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
Run the scan via Bash tool:
|
|
117
|
+
```bash
|
|
118
|
+
scan_result=$(bash .aether/aether-utils.sh init-research 2>/dev/null)
|
|
119
|
+
scan_data=$(echo "$scan_result" | jq '.result')
|
|
120
|
+
```
|
|
118
121
|
|
|
119
|
-
|
|
122
|
+
Extract fields with jq defaults for missing data:
|
|
123
|
+
- `tech_langs`: `.tech_stack.languages | if length > 0 then join(", ") else "not detected" end`
|
|
124
|
+
- `tech_fwks`: `.tech_stack.frameworks | if length > 0 then join(", ") else "none" end`
|
|
125
|
+
- `tech_pkg`: `.tech_stack.package_managers | join(", ")`
|
|
126
|
+
- `complexity`: `.complexity.size`
|
|
127
|
+
- `file_count`: `.complexity.metrics.file_count`
|
|
128
|
+
- `top_dirs`: `.directory_structure.top_level_dirs | if . and length > 0 then join(", ") else "flat" end`
|
|
129
|
+
- `commit_count`: `.git_history.commit_count // "unknown"`
|
|
130
|
+
- `is_git`: `.git_history.is_git_repo // false`
|
|
131
|
+
- `survey_suggestion`: `.survey_status.suggestion.reason // empty`
|
|
132
|
+
- `has_active`: `.prior_colonies.has_active_colony // false`
|
|
133
|
+
- `active_goal`: `.prior_colonies.active_goal // empty`
|
|
120
134
|
|
|
135
|
+
**Intelligence fields (new):**
|
|
136
|
+
- `colony_context_colonies`: `.colony_context.prior_colonies // []` -- array of prior colony summaries (each has goal, phases, outcome, summary)
|
|
137
|
+
- `colony_context_charter`: `.colony_context.existing_charter // {}` -- existing charter content from QUEEN.md
|
|
138
|
+
- `governance_rules`: `.governance.rules // []` -- array of governance rule objects (each has rule, source, strength)
|
|
139
|
+
- `pheromone_suggestions`: `.pheromone_suggestions // []` -- array of suggestion objects (each has type, content, reason, priority)
|
|
140
|
+
|
|
141
|
+
If `scan_result` is empty or `jq` fails, set all fields to fallback values (empty arrays/objects for intelligence fields) and proceed (graceful degradation -- never stop init because scan fails).
|
|
142
|
+
|
|
143
|
+
### Step 4: Detect Re-Init Mode
|
|
144
|
+
|
|
145
|
+
Use Read tool to check `.aether/data/COLONY_STATE.json`.
|
|
146
|
+
|
|
147
|
+
- If file exists AND has a non-null `goal` field: set `reinit_mode = true`, store `existing_goal`
|
|
148
|
+
- Otherwise: set `reinit_mode = false`
|
|
149
|
+
|
|
150
|
+
If re-init mode, read existing charter entries from `.aether/QUEEN.md`:
|
|
151
|
+
```bash
|
|
152
|
+
existing_intent=$(grep '\[charter\] \*\*Intent\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Intent\*\*: //' | sed 's/ (Colony:.*//' || true)
|
|
153
|
+
existing_vision=$(grep '\[charter\] \*\*Vision\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Vision\*\*: //' | sed 's/ (Colony:.*//' || true)
|
|
154
|
+
existing_governance=$(grep '\[charter\] \*\*Governance\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Governance\*\*: //' | sed 's/ (Colony:.*//' || true)
|
|
155
|
+
existing_goals=$(grep '\[charter\] \*\*Goal\*\*:' .aether/QUEEN.md 2>/dev/null | sed 's/.*\*\*Goal\*\*: //' | sed 's/ (Colony:.*//' || true)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Strip `(Colony: ...)` suffixes using sed. If grep finds nothing, variables remain empty.
|
|
159
|
+
|
|
160
|
+
### Step 5: Assemble and Display Approval Prompt
|
|
161
|
+
|
|
162
|
+
Display a brief header:
|
|
121
163
|
```
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
164
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
165
|
+
A E T H E R C O L O N Y I N I T
|
|
166
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
125
167
|
```
|
|
126
168
|
|
|
127
|
-
If
|
|
169
|
+
If re-init mode, display:
|
|
128
170
|
```
|
|
129
|
-
|
|
171
|
+
Re-init mode detected (existing goal: "{existing_goal}")
|
|
172
|
+
Charter will be updated. All colony state, wisdom, instincts, and progress will be preserved.
|
|
130
173
|
```
|
|
131
174
|
|
|
132
|
-
|
|
175
|
+
Then display the approval prompt as formatted Markdown. Section ordering: Prior Context (if any) -> Charter -> Context -> Pheromones.
|
|
133
176
|
|
|
134
|
-
|
|
177
|
+
**Section 1: Prior Context (conditional -- only when prior colonies exist)**
|
|
178
|
+
|
|
179
|
+
If `colony_context_colonies` has entries (length > 0), display:
|
|
180
|
+
```markdown
|
|
181
|
+
## Prior Context
|
|
182
|
+
|
|
183
|
+
Previous colonies in this repo:
|
|
184
|
+
|
|
185
|
+
{For each colony (max 3, most recent first):}
|
|
186
|
+
- **{goal}** -- {outcome} ({phases} phases){if summary is non-empty: ". {summary}"}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Per locked decision: when no prior colonies exist, omit this section entirely. No placeholder, no header.
|
|
190
|
+
|
|
191
|
+
Keep each colony to 1-2 lines. Show goal, outcome (milestone), phase count, and summary from CROWNED-ANTHILL.md if available.
|
|
192
|
+
|
|
193
|
+
**Section 2: Charter**
|
|
194
|
+
```markdown
|
|
195
|
+
## Charter
|
|
196
|
+
|
|
197
|
+
**Intent:** {user's goal from $normalized_args, or existing_intent if re-init}
|
|
198
|
+
**Vision:** {derived from user's goal by Claude, or existing_vision if re-init}
|
|
199
|
+
**Governance:** {see governance logic below}
|
|
200
|
+
**Goals:** {blank for fresh init, or existing_goals if re-init}
|
|
201
|
+
```
|
|
135
202
|
|
|
136
|
-
|
|
203
|
+
For fresh init, Claude should derive a brief Vision from the user's goal (1-2 sentences). Goals start blank. The user fills them in if desired.
|
|
137
204
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
205
|
+
**Governance field logic:**
|
|
206
|
+
- For fresh init with `governance_rules` available (length > 0): pre-populate with semicolon-separated rule text from the detected rules. Format: `"TDD required; ESLint enforced; Follow CONTRIBUTING.md"`. These are editable by the user.
|
|
207
|
+
- For fresh init with no governance_rules: leave blank.
|
|
208
|
+
- For re-init with existing_governance non-empty: pre-populate from existing QUEEN.md charter entries.
|
|
209
|
+
- For re-init with existing_governance empty but governance_rules available: pre-populate from governance_rules.
|
|
141
210
|
|
|
142
|
-
|
|
211
|
+
For re-init, pre-populate Intent, Vision, and Goals from existing QUEEN.md charter entries.
|
|
143
212
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
- `__SESSION_ID__` β the generated session ID (format: `session_{unix_timestamp}_{random}`)
|
|
148
|
-
- `__ISO8601_TIMESTAMP__` β the current ISO-8601 UTC timestamp (used in both `initialized_at` and the events entry)
|
|
149
|
-
- `__PHASE_LEARNINGS__` β JSON array from Step 2.5, or `[]` if none
|
|
150
|
-
- `__INSTINCTS__` β JSON array from Step 2.5, or `[]` if none
|
|
213
|
+
**Section 3: Context**
|
|
214
|
+
```markdown
|
|
215
|
+
## Context
|
|
151
216
|
|
|
152
|
-
|
|
217
|
+
**Tech Stack:** {tech_langs} | {tech_fwks} | {tech_pkg}
|
|
218
|
+
**Project Size:** {complexity} ({file_count} files)
|
|
219
|
+
**Structure:** {top_dirs}
|
|
220
|
+
**Git:** {commit_count} commits
|
|
221
|
+
{if survey_suggestion: **Note:** {survey_suggestion}}
|
|
222
|
+
```
|
|
153
223
|
|
|
154
|
-
**
|
|
155
|
-
- `id`: `instinct_inherited_{index}`
|
|
156
|
-
- `trigger`: inferred from the instinct description
|
|
157
|
-
- `action`: the instinct description
|
|
158
|
-
- `confidence`: the original confidence value (from the completion report)
|
|
159
|
-
- `domain`: the original domain (from the completion report)
|
|
160
|
-
- `source`: `"inherited:completion-report"`
|
|
161
|
-
- `evidence`: `["Validated in prior colony session"]`
|
|
162
|
-
- `created_at`: current ISO-8601 timestamp
|
|
163
|
-
- `last_applied`: null
|
|
164
|
-
- `applications`: 0
|
|
165
|
-
- `successes`: 0
|
|
224
|
+
**Section 4: Pheromones**
|
|
166
225
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
- `status`: `"validated"`
|
|
171
|
-
- `source`: `"inherited:completion-report"`
|
|
226
|
+
If `pheromone_suggestions` has entries (length > 0), display:
|
|
227
|
+
```markdown
|
|
228
|
+
## Pheromones
|
|
172
229
|
|
|
173
|
-
|
|
230
|
+
Suggested signals based on repo analysis:
|
|
174
231
|
|
|
175
|
-
|
|
176
|
-
|
|
232
|
+
1. [FOCUS] Testing infrastructure present (47 test files) -- maintain TDD discipline
|
|
233
|
+
2. [REDIRECT] Environment files detected -- never commit secrets or .env files
|
|
234
|
+
3. [FOCUS] Code quality tools configured -- follow existing lint/format rules
|
|
177
235
|
|
|
178
|
-
|
|
236
|
+
Edit, remove, or add signals as needed. Approved signals will be auto-applied.
|
|
237
|
+
```
|
|
179
238
|
|
|
180
|
-
|
|
181
|
-
Check `~/.aether/system/templates/constraints.template.json` first,
|
|
182
|
-
then `.aether/templates/constraints.template.json`.
|
|
239
|
+
The numbered list uses the actual type and content from `pheromone_suggestions`. Each line format: `{N}. [{type}] {content}`.
|
|
183
240
|
|
|
184
|
-
|
|
241
|
+
Per locked decision: suggestions are fully editable. User can reword, remove, or add their own.
|
|
242
|
+
Per locked decision: all sections look the same -- no visual distinction between auto-generated and user-written content.
|
|
185
243
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
Write the resulting JSON to `.aether/data/constraints.json` using the Write tool.
|
|
244
|
+
If no pheromone suggestions available (empty array), display the existing default:
|
|
245
|
+
```markdown
|
|
246
|
+
## Pheromones
|
|
190
247
|
|
|
191
|
-
|
|
248
|
+
No pheromone suggestions yet -- use /ant:focus and /ant:redirect to guide the colony.
|
|
249
|
+
```
|
|
192
250
|
|
|
193
|
-
|
|
251
|
+
End with clear instructions:
|
|
194
252
|
```
|
|
195
|
-
|
|
253
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
254
|
+
Review the prompt above. You can:
|
|
255
|
+
- Edit any section (just describe your changes)
|
|
256
|
+
- Say "approve" or "looks good" to proceed
|
|
257
|
+
- Say "cancel" to abort
|
|
258
|
+
|
|
259
|
+
If you don't respond, the colony will not be initialized.
|
|
260
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
196
261
|
```
|
|
197
262
|
|
|
198
|
-
|
|
263
|
+
**STOP HERE.** Wait for the user's response. Do NOT proceed to Step 6 until the user responds.
|
|
199
264
|
|
|
200
|
-
### Step
|
|
265
|
+
### Step 6: Handle User Response
|
|
201
266
|
|
|
202
|
-
|
|
267
|
+
Parse the user's response:
|
|
268
|
+
- If the user approves (says "approve", "looks good", "yes", "ok", or similar): proceed to Step 7
|
|
269
|
+
- If the user provides edits: apply the edits to the relevant section(s), re-display the full prompt, increment a revision counter, and wait again
|
|
270
|
+
- If the user cancels: display "Colony initialization cancelled." and stop
|
|
271
|
+
- Max 2 revision rounds. After 2 rejections/edits, display: "Maximum revisions reached. Approve current version, or cancel init?" and wait for final decision
|
|
203
272
|
|
|
204
|
-
|
|
205
|
-
1. Display: `Nestmates found: N related colonies`
|
|
206
|
-
2. List each nestmate with name and truncated goal
|
|
207
|
-
3. Check for shared TO-DOs or cross-project dependencies
|
|
273
|
+
When applying edits, Claude updates the section content in memory (not files) and re-displays the full prompt. Each re-display includes a revision counter: "(Revision {N}/2)"
|
|
208
274
|
|
|
209
|
-
### Step
|
|
275
|
+
### Step 7: Create Colony (Post-Approval)
|
|
210
276
|
|
|
211
|
-
|
|
277
|
+
Only reached after user approval. ALL file writes happen here.
|
|
212
278
|
|
|
213
|
-
|
|
279
|
+
**If re-init mode:**
|
|
280
|
+
|
|
281
|
+
1. Write charter content via:
|
|
282
|
+
```bash
|
|
283
|
+
bash .aether/aether-utils.sh charter-write --intent "{approved_intent}" --vision "{approved_vision}" --governance "{approved_governance}" --goals "{approved_goals}"
|
|
214
284
|
```
|
|
215
|
-
|
|
285
|
+
|
|
286
|
+
2. Auto-apply approved pheromone suggestions (see pheromone auto-apply below).
|
|
287
|
+
|
|
288
|
+
3. Optionally update the goal field in COLONY_STATE.json in-place:
|
|
289
|
+
```bash
|
|
290
|
+
jq --arg new_goal "{approved_intent}" '.goal = $new_goal' .aether/data/COLONY_STATE.json > .aether/data/COLONY_STATE.json.tmp && mv .aether/data/COLONY_STATE.json.tmp .aether/data/COLONY_STATE.json
|
|
216
291
|
```
|
|
217
292
|
|
|
218
|
-
|
|
293
|
+
4. Run `bash .aether/aether-utils.sh session-init "$(jq -r '.session_id' .aether/data/COLONY_STATE.json)" "{approved_intent}"`
|
|
294
|
+
|
|
295
|
+
5. Skip to Step 8 (display result). Do NOT write COLONY_STATE.json from template, do NOT write constraints.json, do NOT write pheromones.json.
|
|
296
|
+
|
|
297
|
+
**If fresh init:**
|
|
298
|
+
|
|
299
|
+
1. Initialize QUEEN.md (already done in Step 2)
|
|
300
|
+
2. Write charter content via charter-write (same command as above)
|
|
301
|
+
3. Auto-apply approved pheromone suggestions (see pheromone auto-apply below).
|
|
302
|
+
4. Write COLONY_STATE.json from template:
|
|
303
|
+
- Generate a session ID in the format `session_{unix_timestamp}_{random}` and an ISO-8601 UTC timestamp
|
|
304
|
+
- Resolve template: check `~/.aether/system/templates/colony-state.template.json` first, then `.aether/templates/colony-state.template.json`
|
|
305
|
+
- If no template found: output "Template missing: colony-state.template.json. Run aether update to fix." and stop
|
|
306
|
+
- Read the template file. Follow its `_instructions` field
|
|
307
|
+
- Replace placeholders: `__GOAL__` with approved intent, `__SESSION_ID__` with generated session ID, `__ISO8601_TIMESTAMP__` with current timestamp, `__PHASE_LEARNINGS__` with `[]`, `__INSTINCTS__` with `[]`
|
|
308
|
+
- Remove ALL keys starting with underscore
|
|
309
|
+
- Write the resulting JSON to `.aether/data/COLONY_STATE.json` using the Write tool
|
|
310
|
+
|
|
311
|
+
5. Write constraints.json from template:
|
|
312
|
+
- Resolve template: check `~/.aether/system/templates/constraints.template.json` first, then `.aether/templates/constraints.template.json`
|
|
313
|
+
- If no template found: output "Template missing: constraints.template.json. Run aether update to fix." and stop
|
|
314
|
+
- Read template, follow `_instructions`, remove `_` prefixed keys, write to `.aether/data/constraints.json`
|
|
315
|
+
|
|
316
|
+
6. Initialize runtime files from templates (non-blocking):
|
|
317
|
+
```bash
|
|
318
|
+
for template in pheromones midden learning-observations; do
|
|
319
|
+
if [[ "$template" == "midden" ]]; then
|
|
320
|
+
target=".aether/data/midden/midden.json"
|
|
321
|
+
else
|
|
322
|
+
target=".aether/data/${template}.json"
|
|
323
|
+
fi
|
|
324
|
+
if [[ ! -f "$target" ]]; then
|
|
325
|
+
template_file=""
|
|
326
|
+
for path in ~/.aether/system/templates/${template}.template.json .aether/templates/${template}.template.json; do
|
|
327
|
+
if [[ -f "$path" ]]; then
|
|
328
|
+
template_file="$path"
|
|
329
|
+
break
|
|
330
|
+
fi
|
|
331
|
+
done
|
|
332
|
+
if [[ -n "$template_file" ]]; then
|
|
333
|
+
jq 'with_entries(select(.key | startswith("_") | not))' "$template_file" > "$target" 2>/dev/null || true
|
|
334
|
+
fi
|
|
335
|
+
fi
|
|
336
|
+
done
|
|
219
337
|
```
|
|
338
|
+
|
|
339
|
+
7. Run `bash .aether/aether-utils.sh context-update init "{approved_intent}"`
|
|
340
|
+
8. Run `bash .aether/aether-utils.sh validate-state colony`
|
|
341
|
+
9. Register repo (silent on failure):
|
|
342
|
+
```bash
|
|
343
|
+
domain_tags=$(bash .aether/aether-utils.sh domain-detect 2>/dev/null | jq -r '.result.tags // ""' || echo "")
|
|
344
|
+
bash .aether/aether-utils.sh registry-add "$(pwd)" "$(jq -r '.version // "unknown"' ~/.aether/version.json 2>/dev/null || echo 'unknown')" --goal "{approved_intent}" --active true --tags "$domain_tags" 2>/dev/null || true
|
|
220
345
|
cp ~/.aether/version.json .aether/version.json 2>/dev/null || true
|
|
221
346
|
```
|
|
347
|
+
10. Seed QUEEN.md from hive (non-blocking):
|
|
348
|
+
```bash
|
|
349
|
+
domain_tags=$(jq -r --arg repo "$(pwd)" \
|
|
350
|
+
'[.repos[] | select(.path == $repo) | .domain_tags // []] | .[0] // [] | join(",")' \
|
|
351
|
+
"$HOME/.aether/registry.json" 2>/dev/null || echo "")
|
|
352
|
+
seed_args="queen-seed-from-hive --limit 5"
|
|
353
|
+
[[ -n "$domain_tags" ]] && seed_args="$seed_args --domain $domain_tags"
|
|
354
|
+
seed_result=$(bash .aether/aether-utils.sh $seed_args 2>/dev/null || echo '{}')
|
|
355
|
+
seeded_count=$(echo "$seed_result" | jq -r '.result.seeded // 0' 2>/dev/null || echo "0")
|
|
356
|
+
```
|
|
357
|
+
11. Run `bash .aether/aether-utils.sh session-init "{session_id}" "{approved_intent}"`
|
|
222
358
|
|
|
223
|
-
|
|
359
|
+
**Pheromone auto-apply (referenced by both re-init and fresh init paths above):**
|
|
224
360
|
|
|
225
|
-
|
|
361
|
+
If approved pheromone suggestions exist (the user kept them in the prompt and didn't remove them during the approval loop):
|
|
226
362
|
|
|
227
|
-
|
|
363
|
+
For each approved pheromone suggestion, call:
|
|
228
364
|
```bash
|
|
229
|
-
bash .aether/aether-utils.sh
|
|
230
|
-
bash .aether/aether-utils.sh swarm-display-render "$init_id"
|
|
365
|
+
bash .aether/aether-utils.sh pheromone-write "{type}" '{content}' --source "system:init" --reason '{reason}' --ttl "30d" 2>/dev/null || true
|
|
231
366
|
```
|
|
232
367
|
|
|
233
|
-
|
|
368
|
+
Implementation notes:
|
|
369
|
+
- Claude (the LLM executing init.md) tracks which pheromones the user kept, edited, or removed during the approval loop (Step 6). Only emit pheromones that survived approval.
|
|
370
|
+
- Use single quotes around pheromone content and reason to avoid shell metacharacter issues (per pitfall 4).
|
|
371
|
+
- Each `pheromone-write` call uses `2>/dev/null || true` to make it non-blocking -- a failed write should never stop colony creation.
|
|
372
|
+
- The `--source "system:init"` tag identifies these as init-derived pheromones.
|
|
373
|
+
- The `--ttl "30d"` gives suggestions a 30-day lifespan (project-level conventions, not phase-specific).
|
|
374
|
+
- `pheromone-write` handles deduplication via content hashing -- if a signal with the same content already exists, it will reinforce rather than duplicate.
|
|
375
|
+
|
|
376
|
+
### Step 7.5: Import Previous Colony Data (optional)
|
|
377
|
+
|
|
378
|
+
Check if previous colony chambers contain importable XML data:
|
|
234
379
|
|
|
380
|
+
```bash
|
|
381
|
+
# Find most recent chamber with XML files (per D-07)
|
|
382
|
+
latest_chamber=$(ls -d .aether/chambers/20* 2>/dev/null | sort -r | head -1)
|
|
383
|
+
xml_import_available=false
|
|
384
|
+
import_summary=""
|
|
385
|
+
|
|
386
|
+
if [[ -n "$latest_chamber" ]]; then
|
|
387
|
+
xml_count=$(find "$latest_chamber" -maxdepth 1 -name "*.xml" ! -name "colony-archive.xml" 2>/dev/null | wc -l | tr -d ' ')
|
|
388
|
+
if [[ "$xml_count" -gt 0 ]] && command -v xmllint >/dev/null 2>&1; then
|
|
389
|
+
xml_import_available=true
|
|
390
|
+
chamber_name=$(basename "$latest_chamber")
|
|
391
|
+
# Count importable items for display
|
|
392
|
+
signal_count=$(jq '.signals | length' "$latest_chamber/pheromones.json" 2>/dev/null || echo "0")
|
|
393
|
+
import_summary="Found ${signal_count} signal(s) and ${xml_count} XML file(s) from colony '${chamber_name}'"
|
|
394
|
+
fi
|
|
395
|
+
fi
|
|
235
396
|
```
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
397
|
+
|
|
398
|
+
**If xml_import_available is true:**
|
|
399
|
+
|
|
400
|
+
Display the import offer (per D-08):
|
|
239
401
|
```
|
|
402
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
403
|
+
PREVIOUS COLONY DATA FOUND
|
|
404
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
405
|
+
|
|
406
|
+
{import_summary}
|
|
240
407
|
|
|
241
|
-
|
|
408
|
+
Import signals and wisdom from this colony?
|
|
409
|
+
This will add to (not replace) your current colony data.
|
|
242
410
|
|
|
411
|
+
Import? (yes/no)
|
|
243
412
|
```
|
|
244
|
-
π Queen has set the colony's intention
|
|
245
413
|
|
|
246
|
-
|
|
414
|
+
Use `AskUserQuestion` with yes/no options.
|
|
415
|
+
|
|
416
|
+
**If user selects "yes":**
|
|
417
|
+
|
|
418
|
+
Import ALL available data types (per D-09 -- no cherry-picking):
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
# Import pheromones (per D-09)
|
|
422
|
+
if [[ -f "$latest_chamber/pheromones.xml" ]]; then
|
|
423
|
+
pher_import=$(bash .aether/aether-utils.sh pheromone-import-xml "$latest_chamber/pheromones.xml" "imported" 2>/dev/null || echo '{"ok":false}')
|
|
424
|
+
pher_imported=$(echo "$pher_import" | jq -r '.result.imported // 0' 2>/dev/null || echo "0")
|
|
425
|
+
echo "Pheromones: ${pher_imported} signal(s) imported"
|
|
426
|
+
fi
|
|
427
|
+
|
|
428
|
+
# Import wisdom to queen-wisdom.json (per D-09)
|
|
429
|
+
if [[ -f "$latest_chamber/queen-wisdom.xml" ]]; then
|
|
430
|
+
wis_import=$(bash .aether/aether-utils.sh wisdom-import-xml "$latest_chamber/queen-wisdom.xml" ".aether/data/queen-wisdom.json" 2>/dev/null || echo '{"ok":false}')
|
|
431
|
+
wis_imported=$(echo "$wis_import" | jq -r '.result.imported // 0' 2>/dev/null || echo "0")
|
|
432
|
+
echo "Wisdom: ${wis_imported} entries(s) imported to queen-wisdom.json"
|
|
433
|
+
fi
|
|
434
|
+
|
|
435
|
+
# Import registry lineage (per D-09)
|
|
436
|
+
if [[ -f "$latest_chamber/colony-registry.xml" ]]; then
|
|
437
|
+
reg_import=$(bash .aether/aether-utils.sh registry-import-xml "$latest_chamber/colony-registry.xml" 2>/dev/null || echo '{"ok":false}')
|
|
438
|
+
reg_imported=$(echo "$reg_import" | jq -r '.result.imported // 0' 2>/dev/null || echo "0")
|
|
439
|
+
echo "Registry: ${reg_imported} colon(ies) lineage imported"
|
|
440
|
+
fi
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
All imports are non-blocking -- log warning and continue if any fails.
|
|
444
|
+
|
|
445
|
+
**If user selects "no":**
|
|
446
|
+
|
|
447
|
+
Display "Import skipped. Starting fresh colony." and proceed to Step 8.
|
|
448
|
+
|
|
449
|
+
**If xml_import_available is false (no chambers, no XML, or no xmllint):**
|
|
450
|
+
|
|
451
|
+
Skip silently -- proceed directly to Step 8 without any mention of import (per D-11).
|
|
452
|
+
### Step 8: Display Result
|
|
453
|
+
|
|
454
|
+
Display the success header and result block:
|
|
455
|
+
|
|
456
|
+
```
|
|
457
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
458
|
+
A E T H E R C O L O N Y
|
|
459
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
247
460
|
|
|
248
|
-
|
|
249
|
-
π Session: <session_id>
|
|
461
|
+
Queen has set the colony's intention
|
|
250
462
|
|
|
251
|
-
{
|
|
252
|
-
π§ Inherited from prior colony:
|
|
253
|
-
{N} instinct(s) | {N} learning(s)
|
|
254
|
-
{End if}
|
|
463
|
+
"{approved_intent}"
|
|
255
464
|
|
|
256
|
-
|
|
257
|
-
ποΈ Nest Context: {N} sibling colonies detected
|
|
258
|
-
Context from related projects will be automatically considered
|
|
259
|
-
during planning and execution.
|
|
260
|
-
{End if}
|
|
465
|
+
Colony Status: READY
|
|
261
466
|
|
|
262
|
-
|
|
467
|
+
{If re-init: " Mode: Re-init (charter updated, state preserved)"}
|
|
468
|
+
{If fresh and seeded_count > 0: " Hive wisdom: {seeded_count} cross-colony pattern(s) seeded into QUEEN.md"}
|
|
263
469
|
|
|
264
|
-
|
|
265
|
-
/ant:colonize πΊοΈ Analyze existing codebase first
|
|
266
|
-
/ant:watch ποΈ Set up live visibility
|
|
470
|
+
State persisted -- safe to /clear, then run /ant:plan
|
|
267
471
|
|
|
268
|
-
|
|
472
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
473
|
+
Next Up
|
|
474
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
475
|
+
/ant:plan Generate execution plan
|
|
476
|
+
/ant:status Check colony state
|
|
477
|
+
/ant:focus Set initial focus
|
|
269
478
|
```
|