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,178 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* npx-install.js — Professional installer for Aether Colony
|
|
5
|
+
*
|
|
6
|
+
* Usage: npx aether-colony install
|
|
7
|
+
*
|
|
8
|
+
* Creates the global hub at ~/.aether/ with all system files,
|
|
9
|
+
* slash commands, and agent definitions.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const fs = require('fs');
|
|
13
|
+
const path = require('path');
|
|
14
|
+
const os = require('os');
|
|
15
|
+
|
|
16
|
+
const BANNER = `
|
|
17
|
+
█████╗ ███████╗████████╗██╗ ██╗███████╗██████╗
|
|
18
|
+
██╔══██╗██╔════╝╚══██╔══╝██║ ██║██╔════╝██╔══██╗
|
|
19
|
+
███████║█████╗ ██║ ███████║█████╗ ██████╔╝
|
|
20
|
+
██╔══██║██╔══╝ ██║ ██╔══██║██╔══╝ ██╔══██╗
|
|
21
|
+
██║ ██║███████╗ ██║ ██║ ██║███████╗██║ ██║
|
|
22
|
+
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
|
|
23
|
+
`;
|
|
24
|
+
|
|
25
|
+
const AETHER_VERSION = require('../package.json').version;
|
|
26
|
+
const HOME_DIR = os.homedir();
|
|
27
|
+
const HUB_DIR = path.join(HOME_DIR, '.aether');
|
|
28
|
+
const CLAUDE_COMMANDS_DIR = path.join(HOME_DIR, '.claude', 'commands', 'ant');
|
|
29
|
+
const CLAUDE_AGENTS_DIR = path.join(HOME_DIR, '.claude', 'agents', 'ant');
|
|
30
|
+
|
|
31
|
+
// Get the package root (where this script is located)
|
|
32
|
+
const PACKAGE_ROOT = path.resolve(__dirname, '..');
|
|
33
|
+
const AETHER_SRC = path.join(PACKAGE_ROOT, '.aether');
|
|
34
|
+
const CLAUDE_COMMANDS_SRC = path.join(PACKAGE_ROOT, '.claude', 'commands', 'ant');
|
|
35
|
+
const OPENCODE_AGENTS_SRC = path.join(PACKAGE_ROOT, '.opencode', 'agents');
|
|
36
|
+
const OPENCODE_COMMANDS_SRC = path.join(PACKAGE_ROOT, '.opencode', 'commands', 'ant');
|
|
37
|
+
|
|
38
|
+
function log(message, type = 'info') {
|
|
39
|
+
const icons = {
|
|
40
|
+
info: 'ℹ',
|
|
41
|
+
success: '✓',
|
|
42
|
+
warning: '⚠',
|
|
43
|
+
error: '✗',
|
|
44
|
+
ant: '🐜'
|
|
45
|
+
};
|
|
46
|
+
console.log(`${icons[type] || '•'} ${message}`);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function ensureDir(dir) {
|
|
50
|
+
if (!fs.existsSync(dir)) {
|
|
51
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function copyDir(src, dest, options = {}) {
|
|
58
|
+
const { exclude = [] } = options;
|
|
59
|
+
ensureDir(dest);
|
|
60
|
+
|
|
61
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
62
|
+
let copied = 0;
|
|
63
|
+
|
|
64
|
+
for (const entry of entries) {
|
|
65
|
+
const srcPath = path.join(src, entry.name);
|
|
66
|
+
const destPath = path.join(dest, entry.name);
|
|
67
|
+
|
|
68
|
+
// Skip excluded directories
|
|
69
|
+
if (exclude.includes(entry.name)) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (entry.isDirectory()) {
|
|
74
|
+
copied += copyDir(srcPath, destPath, options);
|
|
75
|
+
} else {
|
|
76
|
+
fs.copyFileSync(srcPath, destPath);
|
|
77
|
+
copied++;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return copied;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function copyFile(src, dest) {
|
|
85
|
+
const destDir = path.dirname(dest);
|
|
86
|
+
ensureDir(destDir);
|
|
87
|
+
fs.copyFileSync(src, dest);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function install() {
|
|
91
|
+
console.log(BANNER);
|
|
92
|
+
console.log('\n');
|
|
93
|
+
|
|
94
|
+
let filesCopied = 0;
|
|
95
|
+
|
|
96
|
+
// Step 1: Create hub directory structure
|
|
97
|
+
log('Creating hub directory structure...', 'ant');
|
|
98
|
+
const hubDirs = [
|
|
99
|
+
path.join(HUB_DIR, 'system'),
|
|
100
|
+
path.join(HUB_DIR, 'system', 'docs'),
|
|
101
|
+
path.join(HUB_DIR, 'system', 'utils'),
|
|
102
|
+
path.join(HUB_DIR, 'system', 'templates'),
|
|
103
|
+
path.join(HUB_DIR, 'system', 'schemas'),
|
|
104
|
+
path.join(HUB_DIR, 'system', 'exchange'),
|
|
105
|
+
path.join(HUB_DIR, 'system', 'rules'),
|
|
106
|
+
path.join(HUB_DIR, 'data'),
|
|
107
|
+
path.join(HUB_DIR, 'chambers')
|
|
108
|
+
];
|
|
109
|
+
|
|
110
|
+
for (const dir of hubDirs) {
|
|
111
|
+
if (ensureDir(dir)) {
|
|
112
|
+
log(` Created ${path.relative(HOME_DIR, dir)}`, 'info');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Step 2: Copy system files from .aether/
|
|
117
|
+
log('Copying system files to hub...', 'ant');
|
|
118
|
+
if (fs.existsSync(AETHER_SRC)) {
|
|
119
|
+
// Private directories to exclude
|
|
120
|
+
const excludeDirs = ['data', 'dreams', 'oracle', 'checkpoints', 'locks', 'temp', 'archive', 'chambers'];
|
|
121
|
+
filesCopied += copyDir(AETHER_SRC, path.join(HUB_DIR, 'system'), { exclude: excludeDirs });
|
|
122
|
+
log(` Copied ${filesCopied} files from .aether/`, 'success');
|
|
123
|
+
} else {
|
|
124
|
+
log(' Warning: .aether/ source not found', 'warning');
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Step 3: Copy Claude Code commands
|
|
128
|
+
log('Installing Claude Code commands...', 'ant');
|
|
129
|
+
if (fs.existsSync(CLAUDE_COMMANDS_SRC)) {
|
|
130
|
+
const cmdCount = copyDir(CLAUDE_COMMANDS_SRC, CLAUDE_COMMANDS_DIR);
|
|
131
|
+
log(` Installed ${cmdCount} slash commands to ~/.claude/commands/ant/`, 'success');
|
|
132
|
+
filesCopied += cmdCount;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Step 4: Copy Claude Code agents (from OpenCode agents)
|
|
136
|
+
log('Installing Claude Code agents...', 'ant');
|
|
137
|
+
if (fs.existsSync(OPENCODE_AGENTS_SRC)) {
|
|
138
|
+
const agentCount = copyDir(OPENCODE_AGENTS_SRC, CLAUDE_AGENTS_DIR);
|
|
139
|
+
log(` Installed ${agentCount} agents to ~/.claude/agents/ant/`, 'success');
|
|
140
|
+
filesCopied += agentCount;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Step 5: Write version file
|
|
144
|
+
const versionData = {
|
|
145
|
+
version: AETHER_VERSION,
|
|
146
|
+
installed_at: new Date().toISOString(),
|
|
147
|
+
package_root: PACKAGE_ROOT
|
|
148
|
+
};
|
|
149
|
+
fs.writeFileSync(
|
|
150
|
+
path.join(HUB_DIR, 'version.json'),
|
|
151
|
+
JSON.stringify(versionData, null, 2)
|
|
152
|
+
);
|
|
153
|
+
log(' Version info written', 'success');
|
|
154
|
+
|
|
155
|
+
// Step 6: Create global QUEEN.md if missing
|
|
156
|
+
const globalQueen = path.join(HUB_DIR, 'QUEEN.md');
|
|
157
|
+
if (!fs.existsSync(globalQueen)) {
|
|
158
|
+
const queenTemplate = path.join(HUB_DIR, 'system', 'templates', 'QUEEN.md.template');
|
|
159
|
+
if (fs.existsSync(queenTemplate)) {
|
|
160
|
+
let content = fs.readFileSync(queenTemplate, 'utf8');
|
|
161
|
+
content = content.replace(/{TIMESTAMP}/g, new Date().toISOString());
|
|
162
|
+
fs.writeFileSync(globalQueen, content);
|
|
163
|
+
log(' Created global QUEEN.md', 'success');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Summary
|
|
168
|
+
console.log('\n ─────────────────────────────────────────────\n');
|
|
169
|
+
log(`Installation complete! ${filesCopied} files installed.`, 'success');
|
|
170
|
+
console.log('\n Next steps:\n');
|
|
171
|
+
console.log(' 1. Run /ant:init "your goal" in any project');
|
|
172
|
+
console.log(' 2. Use /ant:build to execute phases');
|
|
173
|
+
console.log(' 3. Run /ant:help for command reference\n');
|
|
174
|
+
console.log(' ─────────────────────────────────────────────\n');
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Run installer
|
|
178
|
+
install();
|
package/bin/sync-to-runtime.sh
CHANGED
|
@@ -1,138 +1,6 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
# sync-to-runtime.sh —
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
#
|
|
8
|
-
# Usage: bash bin/sync-to-runtime.sh [--reverse]
|
|
9
|
-
# --reverse Copy FROM runtime/ TO .aether/ (one-time seed operation)
|
|
10
|
-
#
|
|
11
|
-
# This script is safe to run multiple times (idempotent).
|
|
12
|
-
# It only copies allowlisted files — it never deletes extras in runtime/.
|
|
13
|
-
|
|
14
|
-
set -e
|
|
15
|
-
|
|
16
|
-
# Resolve repo root (one level up from bin/)
|
|
17
|
-
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
18
|
-
AETHER_DIR="$REPO_ROOT/.aether"
|
|
19
|
-
RUNTIME_DIR="$REPO_ROOT/runtime"
|
|
20
|
-
|
|
21
|
-
# Allowlist: these are the system files that sync between .aether/ and runtime/
|
|
22
|
-
# Must match the SYSTEM_FILES array in bin/lib/update-transaction.js
|
|
23
|
-
SYSTEM_FILES=(
|
|
24
|
-
"aether-utils.sh"
|
|
25
|
-
"coding-standards.md"
|
|
26
|
-
"debugging.md"
|
|
27
|
-
"DISCIPLINES.md"
|
|
28
|
-
"learning.md"
|
|
29
|
-
"planning.md"
|
|
30
|
-
"QUEEN_ANT_ARCHITECTURE.md"
|
|
31
|
-
"tdd.md"
|
|
32
|
-
"verification-loop.md"
|
|
33
|
-
"verification.md"
|
|
34
|
-
"workers.md"
|
|
35
|
-
"workers-new-castes.md"
|
|
36
|
-
"CONTEXT.md"
|
|
37
|
-
"model-profiles.yaml"
|
|
38
|
-
"recover.sh"
|
|
39
|
-
"docs/biological-reference.md"
|
|
40
|
-
"docs/command-sync.md"
|
|
41
|
-
"docs/constraints.md"
|
|
42
|
-
"docs/namespace.md"
|
|
43
|
-
"docs/pathogen-schema-example.json"
|
|
44
|
-
"docs/pathogen-schema.md"
|
|
45
|
-
"docs/PHEROMONE-INJECTION.md"
|
|
46
|
-
"docs/PHEROMONE-INTEGRATION.md"
|
|
47
|
-
"docs/PHEROMONE-SYSTEM-DESIGN.md"
|
|
48
|
-
"docs/pheromones.md"
|
|
49
|
-
"docs/progressive-disclosure.md"
|
|
50
|
-
"docs/README.md"
|
|
51
|
-
"docs/VISUAL-OUTPUT-SPEC.md"
|
|
52
|
-
"docs/known-issues.md"
|
|
53
|
-
"docs/implementation-learnings.md"
|
|
54
|
-
"docs/codebase-review.md"
|
|
55
|
-
"docs/planning-discipline.md"
|
|
56
|
-
"utils/atomic-write.sh"
|
|
57
|
-
"utils/chamber-compare.sh"
|
|
58
|
-
"utils/chamber-utils.sh"
|
|
59
|
-
"utils/colorize-log.sh"
|
|
60
|
-
"utils/error-handler.sh"
|
|
61
|
-
"utils/file-lock.sh"
|
|
62
|
-
"utils/spawn-tree.sh"
|
|
63
|
-
"utils/spawn-with-model.sh"
|
|
64
|
-
"utils/state-loader.sh"
|
|
65
|
-
"utils/swarm-display.sh"
|
|
66
|
-
"utils/watch-spawn-tree.sh"
|
|
67
|
-
"utils/xml-utils.sh"
|
|
68
|
-
"utils/xml-core.sh"
|
|
69
|
-
"utils/xml-compose.sh"
|
|
70
|
-
"utils/queen-to-md.xsl"
|
|
71
|
-
"exchange/pheromone-xml.sh"
|
|
72
|
-
"exchange/wisdom-xml.sh"
|
|
73
|
-
"exchange/registry-xml.sh"
|
|
74
|
-
"schemas/aether-types.xsd"
|
|
75
|
-
"schemas/pheromone.xsd"
|
|
76
|
-
"schemas/queen-wisdom.xsd"
|
|
77
|
-
"schemas/colony-registry.xsd"
|
|
78
|
-
"schemas/worker-priming.xsd"
|
|
79
|
-
"schemas/prompt.xsd"
|
|
80
|
-
"templates/QUEEN.md.template"
|
|
81
|
-
)
|
|
82
|
-
|
|
83
|
-
# Determine direction
|
|
84
|
-
REVERSE=false
|
|
85
|
-
if [ "${1:-}" = "--reverse" ]; then
|
|
86
|
-
REVERSE=true
|
|
87
|
-
fi
|
|
88
|
-
|
|
89
|
-
if [ "$REVERSE" = true ]; then
|
|
90
|
-
SRC_DIR="$RUNTIME_DIR"
|
|
91
|
-
DST_DIR="$AETHER_DIR"
|
|
92
|
-
LABEL="runtime/ -> .aether/ (seeding)"
|
|
93
|
-
else
|
|
94
|
-
SRC_DIR="$AETHER_DIR"
|
|
95
|
-
DST_DIR="$RUNTIME_DIR"
|
|
96
|
-
LABEL=".aether/ -> runtime/ (staging)"
|
|
97
|
-
fi
|
|
98
|
-
|
|
99
|
-
# Check source directory exists
|
|
100
|
-
if [ ! -d "$SRC_DIR" ]; then
|
|
101
|
-
# Silently exit if source doesn't exist (e.g. installed from npm, no .aether/)
|
|
102
|
-
exit 0
|
|
103
|
-
fi
|
|
104
|
-
|
|
105
|
-
copied=0
|
|
106
|
-
skipped=0
|
|
107
|
-
|
|
108
|
-
for file in "${SYSTEM_FILES[@]}"; do
|
|
109
|
-
src="$SRC_DIR/$file"
|
|
110
|
-
dst="$DST_DIR/$file"
|
|
111
|
-
|
|
112
|
-
# Skip if source file doesn't exist
|
|
113
|
-
if [ ! -f "$src" ]; then
|
|
114
|
-
continue
|
|
115
|
-
fi
|
|
116
|
-
|
|
117
|
-
# Create destination directory if needed
|
|
118
|
-
dst_dir="$(dirname "$dst")"
|
|
119
|
-
mkdir -p "$dst_dir"
|
|
120
|
-
|
|
121
|
-
# Skip if files are identical (compare hashes)
|
|
122
|
-
if [ -f "$dst" ]; then
|
|
123
|
-
src_hash=$(shasum -a 256 "$src" 2>/dev/null | cut -d' ' -f1)
|
|
124
|
-
dst_hash=$(shasum -a 256 "$dst" 2>/dev/null | cut -d' ' -f1)
|
|
125
|
-
if [ "$src_hash" = "$dst_hash" ]; then
|
|
126
|
-
skipped=$((skipped + 1))
|
|
127
|
-
continue
|
|
128
|
-
fi
|
|
129
|
-
fi
|
|
130
|
-
|
|
131
|
-
cp "$src" "$dst"
|
|
132
|
-
copied=$((copied + 1))
|
|
133
|
-
done
|
|
134
|
-
|
|
135
|
-
# Only print output if not running in quiet mode (npm postinstall suppresses)
|
|
136
|
-
if [ -t 1 ] || [ "${VERBOSE:-}" = "1" ]; then
|
|
137
|
-
echo "Sync ($LABEL): $copied copied, $skipped unchanged"
|
|
138
|
-
fi
|
|
2
|
+
# sync-to-runtime.sh — DEPRECATED (v4.0)
|
|
3
|
+
# runtime/ staging was eliminated in v4.0. .aether/ is packaged directly.
|
|
4
|
+
# This script exists only for CI backward compatibility.
|
|
5
|
+
echo "runtime/ sync skipped — deprecated in v4.0 (direct .aether/ packaging)"
|
|
6
|
+
exit 0
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# validate-package.sh — Pre-packaging validation for aether-colony npm package
|
|
3
|
+
#
|
|
4
|
+
# Purpose: Replaces sync-to-runtime.sh (removed in v4.0). Instead of copying files
|
|
5
|
+
# to a staging directory, this script validates that .aether/ is ready for
|
|
6
|
+
# direct packaging: required files exist, private directories are excluded.
|
|
7
|
+
#
|
|
8
|
+
# Usage: bash bin/validate-package.sh [--dry-run]
|
|
9
|
+
# --dry-run Run npm pack --dry-run to show what would be published
|
|
10
|
+
#
|
|
11
|
+
# This script is safe to run multiple times (idempotent).
|
|
12
|
+
|
|
13
|
+
set -euo pipefail
|
|
14
|
+
|
|
15
|
+
# Resolve paths relative to script location
|
|
16
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
17
|
+
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
18
|
+
AETHER_DIR="$(cd "$SCRIPT_DIR/../.aether" && pwd)"
|
|
19
|
+
|
|
20
|
+
# --dry-run mode: delegate to npm pack and exit
|
|
21
|
+
if [ "${1:-}" = "--dry-run" ]; then
|
|
22
|
+
cd "$REPO_ROOT"
|
|
23
|
+
npm pack --dry-run 2>&1
|
|
24
|
+
exit 0
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
# Required files that must exist in .aether/ before packaging
|
|
28
|
+
REQUIRED_FILES=(
|
|
29
|
+
"aether-utils.sh"
|
|
30
|
+
"workers.md"
|
|
31
|
+
"docs/README.md"
|
|
32
|
+
"utils/atomic-write.sh"
|
|
33
|
+
"utils/error-handler.sh"
|
|
34
|
+
# Domain modules extracted in Phase 13
|
|
35
|
+
"utils/pheromone.sh"
|
|
36
|
+
"utils/learning.sh"
|
|
37
|
+
"utils/state-api.sh"
|
|
38
|
+
"utils/flag.sh"
|
|
39
|
+
"utils/session.sh"
|
|
40
|
+
"utils/spawn.sh"
|
|
41
|
+
"utils/queen.sh"
|
|
42
|
+
"utils/suggest.sh"
|
|
43
|
+
"utils/swarm.sh"
|
|
44
|
+
# Skills system (v2.0)
|
|
45
|
+
"utils/skills.sh"
|
|
46
|
+
# Hive and midden modules
|
|
47
|
+
"utils/hive.sh"
|
|
48
|
+
"utils/midden.sh"
|
|
49
|
+
# Skills manifests
|
|
50
|
+
"skills/.index.json"
|
|
51
|
+
"skills/colony/.manifest.json"
|
|
52
|
+
"skills/domain/.manifest.json"
|
|
53
|
+
"utils/file-lock.sh"
|
|
54
|
+
"templates/QUEEN.md.template"
|
|
55
|
+
"templates/colony-state.template.json"
|
|
56
|
+
"templates/constraints.template.json"
|
|
57
|
+
"templates/colony-state-reset.jq.template"
|
|
58
|
+
"templates/crowned-anthill.template.md"
|
|
59
|
+
"templates/handoff.template.md"
|
|
60
|
+
"templates/handoff-build-error.template.md"
|
|
61
|
+
"templates/handoff-build-success.template.md"
|
|
62
|
+
"templates/session.template.json"
|
|
63
|
+
"templates/pheromones.template.json"
|
|
64
|
+
"templates/midden.template.json"
|
|
65
|
+
"templates/learning-observations.template.json"
|
|
66
|
+
"rules/aether-colony.md"
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
# Verify required files exist
|
|
70
|
+
for file in "${REQUIRED_FILES[@]}"; do
|
|
71
|
+
if [ ! -f "$AETHER_DIR/$file" ]; then
|
|
72
|
+
echo "ERROR: Required file missing from .aether/: $file" >&2
|
|
73
|
+
echo " Run this from the Aether repo root after editing .aether/ files." >&2
|
|
74
|
+
exit 1
|
|
75
|
+
fi
|
|
76
|
+
done
|
|
77
|
+
|
|
78
|
+
# Private directories that must never be published
|
|
79
|
+
PRIVATE_DIRS=(
|
|
80
|
+
"data"
|
|
81
|
+
"dreams"
|
|
82
|
+
"oracle"
|
|
83
|
+
"checkpoints"
|
|
84
|
+
"locks"
|
|
85
|
+
"temp"
|
|
86
|
+
"archive"
|
|
87
|
+
"chambers"
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
# .aether/.npmignore is the effective ignore file for the .aether/ subdirectory.
|
|
91
|
+
# npm-packlist reads subdirectory .npmignore files when walking included directories.
|
|
92
|
+
AETHER_NPMIGNORE="$AETHER_DIR/.npmignore"
|
|
93
|
+
|
|
94
|
+
# Verify each private directory is excluded in .aether/.npmignore (hard block)
|
|
95
|
+
for dir in "${PRIVATE_DIRS[@]}"; do
|
|
96
|
+
if [ -d "$AETHER_DIR/$dir" ]; then
|
|
97
|
+
if ! grep -qF "$dir/" "$AETHER_NPMIGNORE" 2>/dev/null; then
|
|
98
|
+
echo "ERROR: Private directory .aether/$dir/ exists but is NOT excluded in .aether/.npmignore" >&2
|
|
99
|
+
echo " Add '$dir/' to .aether/.npmignore to prevent publishing private data." >&2
|
|
100
|
+
exit 1
|
|
101
|
+
fi
|
|
102
|
+
fi
|
|
103
|
+
done
|
|
104
|
+
|
|
105
|
+
# Content-aware checks: verify specific files are excluded from the package
|
|
106
|
+
cd "$REPO_ROOT"
|
|
107
|
+
PACK_LIST=$(npm pack --dry-run 2>&1)
|
|
108
|
+
|
|
109
|
+
# Check 1: QUEEN.md must not be in the package (template and docs versions are fine)
|
|
110
|
+
if echo "$PACK_LIST" | grep -qE '\.aether/QUEEN\.md$'; then
|
|
111
|
+
echo "ERROR: .aether/QUEEN.md would be included in package" >&2
|
|
112
|
+
echo " QUEEN.md should be created from template during install, not shipped." >&2
|
|
113
|
+
echo " Add 'QUEEN.md' to .aether/.npmignore" >&2
|
|
114
|
+
exit 1
|
|
115
|
+
fi
|
|
116
|
+
|
|
117
|
+
# Check 2: No temp files in .aether/
|
|
118
|
+
if echo "$PACK_LIST" | grep -qE '\.aether/.*\.tmp'; then
|
|
119
|
+
echo "ERROR: Temp files would be included in package:" >&2
|
|
120
|
+
echo "$PACK_LIST" | grep -E '\.aether/.*\.tmp' >&2
|
|
121
|
+
echo " Delete temp files or add '*.tmp*' to .aether/.npmignore" >&2
|
|
122
|
+
exit 1
|
|
123
|
+
fi
|
|
124
|
+
|
|
125
|
+
# Check 3: CONTEXT.md must not be in the package
|
|
126
|
+
if echo "$PACK_LIST" | grep -qE '\.aether/CONTEXT\.md'; then
|
|
127
|
+
echo "ERROR: .aether/CONTEXT.md would be included in package" >&2
|
|
128
|
+
echo " CONTEXT.md is per-colony. Add 'CONTEXT.md' to .aether/.npmignore" >&2
|
|
129
|
+
exit 1
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
# Check 4: No .aether/data/ files in the package (covers pheromones.json, constraints.json, midden/, etc.)
|
|
133
|
+
if echo "$PACK_LIST" | grep -qE '\.aether/data/'; then
|
|
134
|
+
echo "ERROR: .aether/data/ files would be included in package:" >&2
|
|
135
|
+
echo "$PACK_LIST" | grep -E '\.aether/data/' >&2
|
|
136
|
+
echo " data/ is local-only. Ensure 'data/' is in .aether/.npmignore" >&2
|
|
137
|
+
exit 1
|
|
138
|
+
fi
|
|
139
|
+
|
|
140
|
+
# Check 5: CROWNED-ANTHILL.md must not be in the package
|
|
141
|
+
if echo "$PACK_LIST" | grep -qE '\.aether/CROWNED-ANTHILL\.md'; then
|
|
142
|
+
echo "ERROR: .aether/CROWNED-ANTHILL.md would be included in package" >&2
|
|
143
|
+
echo " CROWNED-ANTHILL.md is a sealed colony record. Add it to .aether/.npmignore" >&2
|
|
144
|
+
exit 1
|
|
145
|
+
fi
|
|
146
|
+
|
|
147
|
+
# Check 6: No exchange XML data files in the package
|
|
148
|
+
if echo "$PACK_LIST" | grep -qE '\.aether/exchange/.*\.xml'; then
|
|
149
|
+
echo "ERROR: Exchange XML data files would be included in package:" >&2
|
|
150
|
+
echo "$PACK_LIST" | grep -E '\.aether/exchange/.*\.xml' >&2
|
|
151
|
+
echo " Add 'exchange/*.xml' to .aether/.npmignore" >&2
|
|
152
|
+
exit 1
|
|
153
|
+
fi
|
|
154
|
+
|
|
155
|
+
# Check 7: Exchange modules must be present in distribution
|
|
156
|
+
# Per D-03: exchange/ modules must be included in npm package
|
|
157
|
+
for module in pheromone-xml.sh wisdom-xml.sh registry-xml.sh; do
|
|
158
|
+
if [ ! -f "$AETHER_DIR/exchange/$module" ]; then
|
|
159
|
+
echo "ERROR: Required exchange module missing from .aether/exchange/: $module" >&2
|
|
160
|
+
echo " Exchange modules are required for XML export/import functionality." >&2
|
|
161
|
+
echo " Run this from the Aether repo root after editing .aether/ files." >&2
|
|
162
|
+
exit 1
|
|
163
|
+
fi
|
|
164
|
+
done
|
|
165
|
+
|
|
166
|
+
echo "Package validation passed (files + content checks + exchange module check)."
|
package/package.json
CHANGED
|
@@ -1,30 +1,37 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aether-colony",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "Multi-agent system using ant colony intelligence for Claude Code and OpenCode — workers self-organize via pheromone signals",
|
|
5
5
|
"bin": {
|
|
6
|
-
"aether": "bin/cli.js"
|
|
6
|
+
"aether": "bin/cli.js",
|
|
7
|
+
"aether-colony": "bin/npx-install.js"
|
|
7
8
|
},
|
|
8
9
|
"files": [
|
|
9
10
|
"bin/",
|
|
10
11
|
".claude/commands/ant/",
|
|
12
|
+
".claude/agents/ant/",
|
|
11
13
|
".opencode/commands/ant/",
|
|
12
14
|
".opencode/agents/",
|
|
13
15
|
".opencode/opencode.json",
|
|
14
|
-
"
|
|
16
|
+
".aether/",
|
|
15
17
|
"README.md",
|
|
16
18
|
"LICENSE",
|
|
17
19
|
"DISCLAIMER.md",
|
|
18
20
|
"CHANGELOG.md"
|
|
19
21
|
],
|
|
20
22
|
"scripts": {
|
|
21
|
-
"preinstall": "bash bin/
|
|
23
|
+
"preinstall": "bash bin/validate-package.sh 2>/dev/null || true",
|
|
22
24
|
"postinstall": "node bin/cli.js install --quiet",
|
|
23
|
-
"
|
|
25
|
+
"prepublishOnly": "bash bin/validate-package.sh",
|
|
26
|
+
"test": "npm run test:unit",
|
|
27
|
+
"test:all": "npm run test:unit && npm run test:bash && npm run test:intelligence",
|
|
24
28
|
"test:unit": "ava",
|
|
25
29
|
"test:bash": "bash tests/bash/test-aether-utils.sh",
|
|
26
|
-
"
|
|
27
|
-
"
|
|
30
|
+
"test:skills": "bash tests/bash/test-skills.sh",
|
|
31
|
+
"test:intelligence": "bash tests/bash/test-intelligence.sh",
|
|
32
|
+
"generate": "node bin/generate-commands.js",
|
|
33
|
+
"lint:shell": "shellcheck --severity=error .aether/aether-utils.sh bin/generate-commands.sh .aether/utils/file-lock.sh .aether/utils/atomic-write.sh .aether/utils/colorize-log.sh .aether/utils/watch-spawn-tree.sh",
|
|
34
|
+
"lint:json": "node -e \"const fs=require('fs'); const files=['.aether/data/constraints.json','.aether/data/COLONY_STATE.json']; files.filter(f=>fs.existsSync(f)).forEach(f=>{JSON.parse(fs.readFileSync(f,'utf8'))}); console.log('JSON valid')\"",
|
|
28
35
|
"lint:sync": "bash bin/generate-commands.sh check",
|
|
29
36
|
"lint": "npm run lint:shell && npm run lint:json && npm run lint:sync"
|
|
30
37
|
},
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: aether-guardian
|
|
3
|
-
description: "Use this agent for security audits, vulnerability scanning, and threat assessment. The guardian patrols for security vulnerabilities and protects the codebase."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
You are **🛡️ Guardian Ant** in the Aether Colony. You patrol for security vulnerabilities and defend against threats.
|
|
7
|
-
|
|
8
|
-
## Aether Integration
|
|
9
|
-
|
|
10
|
-
This agent operates as a **specialist worker** within the Aether Colony system. You:
|
|
11
|
-
- Report to the Queen/Prime worker who spawns you
|
|
12
|
-
- Log activity using Aether utilities
|
|
13
|
-
- Follow depth-based spawning rules
|
|
14
|
-
- Output structured JSON reports
|
|
15
|
-
|
|
16
|
-
## Activity Logging
|
|
17
|
-
|
|
18
|
-
Log progress as you work:
|
|
19
|
-
```bash
|
|
20
|
-
bash .aether/aether-utils.sh activity-log "ACTION" "{your_name} (Guardian)" "description"
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Actions: RECONNAISSANCE, SCANNING, ASSESSING, REPORTING, ERROR
|
|
24
|
-
|
|
25
|
-
## Your Role
|
|
26
|
-
|
|
27
|
-
As Guardian, you:
|
|
28
|
-
1. Understand the application architecture
|
|
29
|
-
2. Scan for OWASP Top 10 vulnerabilities
|
|
30
|
-
3. Check dependencies for CVEs
|
|
31
|
-
4. Assess threats with severity
|
|
32
|
-
5. Verify fixes
|
|
33
|
-
|
|
34
|
-
## Security Domains
|
|
35
|
-
|
|
36
|
-
### Authentication & Authorization
|
|
37
|
-
- Session management
|
|
38
|
-
- Token handling (JWT, OAuth)
|
|
39
|
-
- Permission checks
|
|
40
|
-
- Role-based access control
|
|
41
|
-
- Multi-factor authentication
|
|
42
|
-
|
|
43
|
-
### Input Validation
|
|
44
|
-
- SQL injection prevention
|
|
45
|
-
- XSS (Cross-Site Scripting)
|
|
46
|
-
- CSRF (Cross-Site Request Forgery)
|
|
47
|
-
- Command injection
|
|
48
|
-
- Path traversal
|
|
49
|
-
- File upload validation
|
|
50
|
-
|
|
51
|
-
### Data Protection
|
|
52
|
-
- Encryption at rest
|
|
53
|
-
- Encryption in transit (TLS)
|
|
54
|
-
- Secret management
|
|
55
|
-
- PII handling
|
|
56
|
-
- Data retention
|
|
57
|
-
|
|
58
|
-
### Infrastructure
|
|
59
|
-
- Dependency vulnerabilities (CVEs)
|
|
60
|
-
- Container security
|
|
61
|
-
- Network security
|
|
62
|
-
- Logging security (no secrets)
|
|
63
|
-
- Configuration security
|
|
64
|
-
|
|
65
|
-
## Severity Ratings
|
|
66
|
-
|
|
67
|
-
- **CRITICAL**: Immediate exploitation possible, high impact
|
|
68
|
-
- **HIGH**: Exploitation likely, significant impact
|
|
69
|
-
- **MEDIUM**: Exploitation possible, moderate impact
|
|
70
|
-
- **LOW**: Exploitation difficult, low impact
|
|
71
|
-
- **INFO**: Security observation, no immediate risk
|
|
72
|
-
|
|
73
|
-
## Depth-Based Behavior
|
|
74
|
-
|
|
75
|
-
| Depth | Role | Can Spawn? |
|
|
76
|
-
|-------|------|------------|
|
|
77
|
-
| 1 | Prime Guardian | Yes (max 4) |
|
|
78
|
-
| 2 | Specialist | Only if surprised |
|
|
79
|
-
| 3 | Deep Specialist | No |
|
|
80
|
-
|
|
81
|
-
## Output Format
|
|
82
|
-
|
|
83
|
-
```json
|
|
84
|
-
{
|
|
85
|
-
"ant_name": "{your name}",
|
|
86
|
-
"caste": "guardian",
|
|
87
|
-
"status": "completed" | "failed" | "blocked",
|
|
88
|
-
"summary": "What you accomplished",
|
|
89
|
-
"domains_reviewed": [],
|
|
90
|
-
"findings": {
|
|
91
|
-
"critical": 0,
|
|
92
|
-
"high": 0,
|
|
93
|
-
"medium": 0,
|
|
94
|
-
"low": 0
|
|
95
|
-
},
|
|
96
|
-
"vulnerabilities": [
|
|
97
|
-
{"severity": "HIGH", "location": "", "issue": "", "remediation": ""}
|
|
98
|
-
],
|
|
99
|
-
"overall_risk": "",
|
|
100
|
-
"recommendations": [],
|
|
101
|
-
"blockers": []
|
|
102
|
-
}
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
## Reference
|
|
106
|
-
|
|
107
|
-
Full worker specifications: `.aether/workers.md`
|