aether-colony 5.0.0 → 5.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/.aether/aether-utils.sh +3226 -3345
  2. package/.aether/agents-claude/aether-ambassador.md +265 -0
  3. package/.aether/agents-claude/aether-archaeologist.md +327 -0
  4. package/.aether/agents-claude/aether-architect.md +236 -0
  5. package/.aether/agents-claude/aether-auditor.md +271 -0
  6. package/.aether/agents-claude/aether-builder.md +224 -0
  7. package/.aether/agents-claude/aether-chaos.md +269 -0
  8. package/.aether/agents-claude/aether-chronicler.md +305 -0
  9. package/.aether/agents-claude/aether-gatekeeper.md +330 -0
  10. package/.aether/agents-claude/aether-includer.md +374 -0
  11. package/.aether/agents-claude/aether-keeper.md +272 -0
  12. package/.aether/agents-claude/aether-measurer.md +322 -0
  13. package/.aether/agents-claude/aether-oracle.md +237 -0
  14. package/.aether/agents-claude/aether-probe.md +211 -0
  15. package/.aether/agents-claude/aether-queen.md +330 -0
  16. package/.aether/agents-claude/aether-route-setter.md +178 -0
  17. package/.aether/agents-claude/aether-sage.md +418 -0
  18. package/.aether/agents-claude/aether-scout.md +179 -0
  19. package/.aether/agents-claude/aether-surveyor-disciplines.md +417 -0
  20. package/.aether/agents-claude/aether-surveyor-nest.md +355 -0
  21. package/.aether/agents-claude/aether-surveyor-pathogens.md +289 -0
  22. package/.aether/agents-claude/aether-surveyor-provisions.md +360 -0
  23. package/.aether/agents-claude/aether-tracker.md +270 -0
  24. package/.aether/agents-claude/aether-watcher.md +280 -0
  25. package/.aether/agents-claude/aether-weaver.md +248 -0
  26. package/.aether/commands/archaeology.yaml +653 -0
  27. package/.aether/commands/build.yaml +1221 -0
  28. package/.aether/commands/chaos.yaml +653 -0
  29. package/.aether/commands/colonize.yaml +442 -0
  30. package/.aether/commands/continue.yaml +1484 -0
  31. package/.aether/commands/council.yaml +509 -0
  32. package/.aether/commands/data-clean.yaml +80 -0
  33. package/.aether/commands/dream.yaml +275 -0
  34. package/.aether/commands/entomb.yaml +863 -0
  35. package/.aether/commands/export-signals.yaml +64 -0
  36. package/.aether/commands/feedback.yaml +158 -0
  37. package/.aether/commands/flag.yaml +160 -0
  38. package/.aether/commands/flags.yaml +177 -0
  39. package/.aether/commands/focus.yaml +112 -0
  40. package/.aether/commands/help.yaml +167 -0
  41. package/.aether/commands/history.yaml +137 -0
  42. package/.aether/commands/import-signals.yaml +79 -0
  43. package/.aether/commands/init.yaml +502 -0
  44. package/.aether/commands/insert-phase.yaml +102 -0
  45. package/.aether/commands/interpret.yaml +285 -0
  46. package/.aether/commands/lay-eggs.yaml +224 -0
  47. package/.aether/commands/maturity.yaml +122 -0
  48. package/.aether/commands/memory-details.yaml +74 -0
  49. package/.aether/commands/migrate-state.yaml +174 -0
  50. package/.aether/commands/oracle.yaml +1224 -0
  51. package/.aether/commands/organize.yaml +446 -0
  52. package/.aether/commands/patrol.yaml +621 -0
  53. package/.aether/commands/pause-colony.yaml +424 -0
  54. package/.aether/commands/phase.yaml +124 -0
  55. package/.aether/commands/pheromones.yaml +153 -0
  56. package/.aether/commands/plan.yaml +1364 -0
  57. package/.aether/commands/preferences.yaml +63 -0
  58. package/.aether/commands/quick.yaml +104 -0
  59. package/.aether/commands/redirect.yaml +123 -0
  60. package/.aether/commands/resume-colony.yaml +375 -0
  61. package/.aether/commands/resume.yaml +407 -0
  62. package/.aether/commands/run.yaml +229 -0
  63. package/.aether/commands/seal.yaml +1214 -0
  64. package/.aether/commands/skill-create.yaml +337 -0
  65. package/.aether/commands/status.yaml +408 -0
  66. package/.aether/commands/swarm.yaml +352 -0
  67. package/.aether/commands/tunnels.yaml +814 -0
  68. package/.aether/commands/update.yaml +131 -0
  69. package/.aether/commands/verify-castes.yaml +159 -0
  70. package/.aether/commands/watch.yaml +454 -0
  71. package/.aether/docs/INCIDENT_TEMPLATE.md +32 -0
  72. package/.aether/docs/QUEEN-SYSTEM.md +11 -11
  73. package/.aether/docs/README.md +32 -2
  74. package/.aether/docs/command-playbooks/README.md +23 -0
  75. package/.aether/docs/command-playbooks/build-complete.md +349 -0
  76. package/.aether/docs/command-playbooks/build-context.md +282 -0
  77. package/.aether/docs/command-playbooks/build-full.md +1683 -0
  78. package/.aether/docs/command-playbooks/build-prep.md +284 -0
  79. package/.aether/docs/command-playbooks/build-verify.md +405 -0
  80. package/.aether/docs/command-playbooks/build-wave.md +749 -0
  81. package/.aether/docs/command-playbooks/continue-advance.md +524 -0
  82. package/.aether/docs/command-playbooks/continue-finalize.md +447 -0
  83. package/.aether/docs/command-playbooks/continue-full.md +1725 -0
  84. package/.aether/docs/command-playbooks/continue-gates.md +686 -0
  85. package/.aether/docs/command-playbooks/continue-verify.md +407 -0
  86. package/.aether/docs/context-continuity.md +84 -0
  87. package/.aether/docs/disciplines/DISCIPLINES.md +9 -7
  88. package/.aether/docs/error-codes.md +1 -1
  89. package/.aether/docs/known-issues.md +34 -173
  90. package/.aether/docs/pheromones.md +86 -6
  91. package/.aether/docs/plans/pheromone-display-plan.md +257 -0
  92. package/.aether/docs/queen-commands.md +10 -9
  93. package/.aether/docs/source-of-truth-map.md +132 -0
  94. package/.aether/docs/xml-utilities.md +47 -0
  95. package/.aether/rules/aether-colony.md +23 -13
  96. package/.aether/scripts/incident-test-add.sh +47 -0
  97. package/.aether/scripts/weekly-audit.sh +79 -0
  98. package/.aether/skills/.index.json +649 -0
  99. package/.aether/skills/colony/.manifest.json +16 -0
  100. package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
  101. package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
  102. package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
  103. package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
  104. package/.aether/skills/colony/context-management/SKILL.md +80 -0
  105. package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
  106. package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
  107. package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
  108. package/.aether/skills/colony/state-safety/SKILL.md +84 -0
  109. package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
  110. package/.aether/skills/domain/.manifest.json +24 -0
  111. package/.aether/skills/domain/README.md +33 -0
  112. package/.aether/skills/domain/django/SKILL.md +49 -0
  113. package/.aether/skills/domain/docker/SKILL.md +52 -0
  114. package/.aether/skills/domain/golang/SKILL.md +52 -0
  115. package/.aether/skills/domain/graphql/SKILL.md +51 -0
  116. package/.aether/skills/domain/html-css/SKILL.md +48 -0
  117. package/.aether/skills/domain/nextjs/SKILL.md +45 -0
  118. package/.aether/skills/domain/nodejs/SKILL.md +53 -0
  119. package/.aether/skills/domain/postgresql/SKILL.md +53 -0
  120. package/.aether/skills/domain/prisma/SKILL.md +59 -0
  121. package/.aether/skills/domain/python/SKILL.md +50 -0
  122. package/.aether/skills/domain/rails/SKILL.md +52 -0
  123. package/.aether/skills/domain/react/SKILL.md +45 -0
  124. package/.aether/skills/domain/rest-api/SKILL.md +58 -0
  125. package/.aether/skills/domain/svelte/SKILL.md +47 -0
  126. package/.aether/skills/domain/tailwind/SKILL.md +45 -0
  127. package/.aether/skills/domain/testing/SKILL.md +53 -0
  128. package/.aether/skills/domain/typescript/SKILL.md +58 -0
  129. package/.aether/skills/domain/vue/SKILL.md +49 -0
  130. package/.aether/templates/QUEEN.md.template +23 -41
  131. package/.aether/templates/colony-state-reset.jq.template +1 -0
  132. package/.aether/templates/colony-state.template.json +4 -0
  133. package/.aether/templates/learning-observations.template.json +6 -0
  134. package/.aether/templates/midden.template.json +13 -0
  135. package/.aether/templates/pheromones.template.json +6 -0
  136. package/.aether/templates/session.template.json +9 -0
  137. package/.aether/utils/atomic-write.sh +63 -17
  138. package/.aether/utils/chamber-utils.sh +145 -2
  139. package/.aether/utils/council.sh +425 -0
  140. package/.aether/utils/emoji-audit.sh +166 -0
  141. package/.aether/utils/error-handler.sh +21 -7
  142. package/.aether/utils/file-lock.sh +182 -27
  143. package/.aether/utils/flag.sh +278 -0
  144. package/.aether/utils/hive.sh +572 -0
  145. package/.aether/utils/immune.sh +508 -0
  146. package/.aether/utils/learning.sh +1928 -0
  147. package/.aether/utils/midden.sh +520 -0
  148. package/.aether/utils/oracle/oracle.md +168 -0
  149. package/.aether/utils/oracle/oracle.sh +1023 -0
  150. package/.aether/utils/pheromone.sh +2029 -0
  151. package/.aether/utils/queen.sh +1710 -0
  152. package/.aether/utils/scan.sh +860 -0
  153. package/.aether/utils/semantic-cli.sh +10 -8
  154. package/.aether/utils/session.sh +816 -0
  155. package/.aether/utils/skills.sh +509 -0
  156. package/.aether/utils/spawn-tree.sh +103 -271
  157. package/.aether/utils/spawn.sh +260 -0
  158. package/.aether/utils/state-api.sh +389 -0
  159. package/.aether/utils/state-loader.sh +8 -6
  160. package/.aether/utils/suggest.sh +611 -0
  161. package/.aether/utils/swarm-display.sh +10 -1
  162. package/.aether/utils/swarm.sh +1004 -0
  163. package/.aether/utils/watch-spawn-tree.sh +11 -2
  164. package/.aether/utils/xml-compose.sh +2 -2
  165. package/.aether/utils/xml-convert.sh +9 -5
  166. package/.aether/utils/xml-core.sh +5 -9
  167. package/.aether/utils/xml-query.sh +4 -4
  168. package/.aether/workers.md +86 -67
  169. package/.claude/agents/ant/aether-ambassador.md +2 -1
  170. package/.claude/agents/ant/aether-archaeologist.md +6 -1
  171. package/.claude/agents/ant/aether-architect.md +236 -0
  172. package/.claude/agents/ant/aether-auditor.md +6 -1
  173. package/.claude/agents/ant/aether-builder.md +38 -1
  174. package/.claude/agents/ant/aether-chaos.md +2 -1
  175. package/.claude/agents/ant/aether-chronicler.md +1 -0
  176. package/.claude/agents/ant/aether-gatekeeper.md +6 -1
  177. package/.claude/agents/ant/aether-includer.md +1 -0
  178. package/.claude/agents/ant/aether-keeper.md +1 -0
  179. package/.claude/agents/ant/aether-measurer.md +6 -1
  180. package/.claude/agents/ant/aether-oracle.md +237 -0
  181. package/.claude/agents/ant/aether-probe.md +2 -1
  182. package/.claude/agents/ant/aether-queen.md +6 -1
  183. package/.claude/agents/ant/aether-route-setter.md +6 -1
  184. package/.claude/agents/ant/aether-sage.md +68 -3
  185. package/.claude/agents/ant/aether-scout.md +38 -1
  186. package/.claude/agents/ant/aether-surveyor-disciplines.md +2 -1
  187. package/.claude/agents/ant/aether-surveyor-nest.md +2 -1
  188. package/.claude/agents/ant/aether-surveyor-pathogens.md +2 -1
  189. package/.claude/agents/ant/aether-surveyor-provisions.md +2 -1
  190. package/.claude/agents/ant/aether-tracker.md +6 -1
  191. package/.claude/agents/ant/aether-watcher.md +37 -1
  192. package/.claude/agents/ant/aether-weaver.md +2 -1
  193. package/.claude/commands/ant/archaeology.md +1 -8
  194. package/.claude/commands/ant/build.md +43 -1159
  195. package/.claude/commands/ant/chaos.md +1 -14
  196. package/.claude/commands/ant/colonize.md +3 -14
  197. package/.claude/commands/ant/continue.md +40 -1026
  198. package/.claude/commands/ant/council.md +213 -15
  199. package/.claude/commands/ant/data-clean.md +81 -0
  200. package/.claude/commands/ant/dream.md +12 -9
  201. package/.claude/commands/ant/entomb.md +62 -87
  202. package/.claude/commands/ant/export-signals.md +57 -0
  203. package/.claude/commands/ant/feedback.md +18 -0
  204. package/.claude/commands/ant/flag.md +12 -0
  205. package/.claude/commands/ant/flags.md +22 -8
  206. package/.claude/commands/ant/focus.md +18 -0
  207. package/.claude/commands/ant/help.md +40 -8
  208. package/.claude/commands/ant/history.md +3 -0
  209. package/.claude/commands/ant/import-signals.md +71 -0
  210. package/.claude/commands/ant/init.md +349 -191
  211. package/.claude/commands/ant/insert-phase.md +105 -0
  212. package/.claude/commands/ant/interpret.md +11 -0
  213. package/.claude/commands/ant/lay-eggs.md +167 -158
  214. package/.claude/commands/ant/maturity.md +22 -11
  215. package/.claude/commands/ant/memory-details.md +77 -0
  216. package/.claude/commands/ant/migrate-state.md +6 -0
  217. package/.claude/commands/ant/oracle.md +317 -62
  218. package/.claude/commands/ant/organize.md +10 -5
  219. package/.claude/commands/ant/patrol.md +620 -0
  220. package/.claude/commands/ant/pause-colony.md +8 -22
  221. package/.claude/commands/ant/phase.md +26 -37
  222. package/.claude/commands/ant/pheromones.md +156 -0
  223. package/.claude/commands/ant/plan.md +199 -50
  224. package/.claude/commands/ant/preferences.md +65 -0
  225. package/.claude/commands/ant/quick.md +100 -0
  226. package/.claude/commands/ant/redirect.md +18 -0
  227. package/.claude/commands/ant/resume-colony.md +37 -22
  228. package/.claude/commands/ant/resume.md +60 -7
  229. package/.claude/commands/ant/run.md +231 -0
  230. package/.claude/commands/ant/seal.md +506 -78
  231. package/.claude/commands/ant/skill-create.md +286 -0
  232. package/.claude/commands/ant/status.md +171 -1
  233. package/.claude/commands/ant/swarm.md +11 -23
  234. package/.claude/commands/ant/tunnels.md +1 -0
  235. package/.claude/commands/ant/update.md +58 -135
  236. package/.claude/commands/ant/verify-castes.md +90 -42
  237. package/.claude/commands/ant/watch.md +1 -0
  238. package/.opencode/agents/aether-ambassador.md +1 -1
  239. package/.opencode/agents/aether-architect.md +133 -0
  240. package/.opencode/agents/aether-builder.md +3 -3
  241. package/.opencode/agents/aether-oracle.md +137 -0
  242. package/.opencode/agents/aether-queen.md +1 -1
  243. package/.opencode/agents/aether-route-setter.md +1 -1
  244. package/.opencode/agents/aether-scout.md +1 -1
  245. package/.opencode/agents/aether-surveyor-disciplines.md +6 -1
  246. package/.opencode/agents/aether-surveyor-nest.md +6 -1
  247. package/.opencode/agents/aether-surveyor-pathogens.md +6 -1
  248. package/.opencode/agents/aether-surveyor-provisions.md +6 -1
  249. package/.opencode/agents/aether-tracker.md +1 -1
  250. package/.opencode/agents/aether-watcher.md +1 -1
  251. package/.opencode/agents/aether-weaver.md +1 -1
  252. package/.opencode/commands/ant/archaeology.md +7 -14
  253. package/.opencode/commands/ant/build.md +54 -88
  254. package/.opencode/commands/ant/chaos.md +7 -24
  255. package/.opencode/commands/ant/colonize.md +10 -17
  256. package/.opencode/commands/ant/continue.md +595 -66
  257. package/.opencode/commands/ant/council.md +150 -18
  258. package/.opencode/commands/ant/data-clean.md +77 -0
  259. package/.opencode/commands/ant/dream.md +15 -17
  260. package/.opencode/commands/ant/entomb.md +28 -18
  261. package/.opencode/commands/ant/export-signals.md +54 -0
  262. package/.opencode/commands/ant/feedback.md +24 -5
  263. package/.opencode/commands/ant/flag.md +16 -4
  264. package/.opencode/commands/ant/flags.md +24 -10
  265. package/.opencode/commands/ant/focus.md +22 -5
  266. package/.opencode/commands/ant/help.md +41 -8
  267. package/.opencode/commands/ant/history.md +9 -0
  268. package/.opencode/commands/ant/import-signals.md +68 -0
  269. package/.opencode/commands/ant/init.md +396 -154
  270. package/.opencode/commands/ant/insert-phase.md +111 -0
  271. package/.opencode/commands/ant/interpret.md +16 -0
  272. package/.opencode/commands/ant/lay-eggs.md +184 -112
  273. package/.opencode/commands/ant/maturity.md +18 -2
  274. package/.opencode/commands/ant/memory-details.md +83 -0
  275. package/.opencode/commands/ant/migrate-state.md +12 -0
  276. package/.opencode/commands/ant/oracle.md +322 -67
  277. package/.opencode/commands/ant/organize.md +14 -12
  278. package/.opencode/commands/ant/patrol.md +626 -0
  279. package/.opencode/commands/ant/pause-colony.md +12 -29
  280. package/.opencode/commands/ant/phase.md +30 -40
  281. package/.opencode/commands/ant/pheromones.md +162 -0
  282. package/.opencode/commands/ant/plan.md +210 -57
  283. package/.opencode/commands/ant/preferences.md +71 -0
  284. package/.opencode/commands/ant/quick.md +91 -0
  285. package/.opencode/commands/ant/redirect.md +22 -5
  286. package/.opencode/commands/ant/resume-colony.md +41 -29
  287. package/.opencode/commands/ant/resume.md +80 -20
  288. package/.opencode/commands/ant/run.md +237 -0
  289. package/.opencode/commands/ant/seal.md +230 -25
  290. package/.opencode/commands/ant/skill-create.md +63 -0
  291. package/.opencode/commands/ant/status.md +125 -30
  292. package/.opencode/commands/ant/swarm.md +3 -345
  293. package/.opencode/commands/ant/tunnels.md +3 -9
  294. package/.opencode/commands/ant/update.md +63 -127
  295. package/.opencode/commands/ant/verify-castes.md +96 -42
  296. package/.opencode/commands/ant/watch.md +7 -0
  297. package/CHANGELOG.md +368 -1
  298. package/README.md +195 -324
  299. package/bin/cli.js +236 -429
  300. package/bin/generate-commands.js +186 -0
  301. package/bin/generate-commands.sh +128 -89
  302. package/bin/lib/spawn-logger.js +0 -15
  303. package/bin/lib/update-transaction.js +285 -35
  304. package/bin/npx-install.js +178 -0
  305. package/bin/validate-package.sh +85 -3
  306. package/package.json +16 -4
  307. package/.aether/CONTEXT.md +0 -160
  308. package/.aether/docs/QUEEN.md +0 -84
  309. package/.aether/exchange/colony-registry.xml +0 -11
  310. package/.aether/exchange/pheromones.xml +0 -87
  311. package/.aether/exchange/queen-wisdom.xml +0 -14
  312. package/.aether/model-profiles.yaml +0 -100
  313. package/.aether/utils/spawn-with-model.sh +0 -56
  314. package/bin/lib/model-profiles.js +0 -445
  315. package/bin/lib/model-verify.js +0 -288
  316. package/bin/lib/proxy-health.js +0 -253
  317. package/bin/lib/telemetry.js +0 -441
@@ -28,11 +28,28 @@ fi
28
28
  REQUIRED_FILES=(
29
29
  "aether-utils.sh"
30
30
  "workers.md"
31
- "CONTEXT.md"
32
- "model-profiles.yaml"
33
31
  "docs/README.md"
34
32
  "utils/atomic-write.sh"
35
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"
36
53
  "utils/file-lock.sh"
37
54
  "templates/QUEEN.md.template"
38
55
  "templates/colony-state.template.json"
@@ -42,6 +59,10 @@ REQUIRED_FILES=(
42
59
  "templates/handoff.template.md"
43
60
  "templates/handoff-build-error.template.md"
44
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"
45
66
  "rules/aether-colony.md"
46
67
  )
47
68
 
@@ -81,4 +102,65 @@ for dir in "${PRIVATE_DIRS[@]}"; do
81
102
  fi
82
103
  done
83
104
 
84
- echo "Package validation passed."
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,9 +1,10 @@
1
1
  {
2
2
  "name": "aether-colony",
3
- "version": "5.0.0",
3
+ "version": "5.2.1",
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/",
@@ -23,11 +24,14 @@
23
24
  "postinstall": "node bin/cli.js install --quiet",
24
25
  "prepublishOnly": "bash bin/validate-package.sh",
25
26
  "test": "npm run test:unit",
26
- "test:all": "npm run test:unit && npm run test:bash",
27
+ "test:all": "npm run test:unit && npm run test:bash && npm run test:intelligence",
27
28
  "test:unit": "ava",
28
29
  "test:bash": "bash tests/bash/test-aether-utils.sh",
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",
29
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",
30
- "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')\"",
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=>{const s=fs.readFileSync(f,'utf8'); if(s.trim()) JSON.parse(s)}); console.log('JSON valid')\"",
31
35
  "lint:sync": "bash bin/generate-commands.sh check",
32
36
  "lint": "npm run lint:shell && npm run lint:json && npm run lint:sync"
33
37
  },
@@ -65,5 +69,13 @@
65
69
  "commander": "^12.1.0",
66
70
  "js-yaml": "^4.1.0",
67
71
  "picocolors": "^1.1.1"
72
+ },
73
+ "overrides": {
74
+ "minimatch": "^9.0.7",
75
+ "brace-expansion": "^2.0.3",
76
+ "path-to-regexp": "^8.4.0",
77
+ "picomatch": "^4.0.4",
78
+ "tar": "^7.5.11",
79
+ "diff": "^8.0.3"
68
80
  }
69
81
  }
@@ -1,160 +0,0 @@
1
- # Aether Colony — Current Context
2
-
3
- > **This document is the colony's memory. If context collapses, read this file first.**
4
-
5
- ---
6
-
7
- ## 🚦 System Status
8
-
9
- | Field | Value |
10
- |-------|-------|
11
- | **Last Updated** | 2026-02-16T20:49:16Z |
12
- | **Current Phase** | - |
13
- | **Phase Name** | Shellcheck Fixes |
14
- | **Milestone** | Open Chambers |
15
- | **Colony Status** | IDLE (No active colony) |
16
- | **Safe to Clear?** | YES — No active colony - test fixes complete, hooks simplified |
17
-
18
- ---
19
-
20
- ## 📝 Session Notes (2026-02-21)
21
-
22
- ### Completed This Session
23
- - Fixed shellcheck SC2168 warnings in `.aether/aether-utils.sh`
24
- - Removed duplicate context-update code (~388 lines)
25
- - Fixed 8 remaining `local` keyword errors in case handlers
26
- - All 383 tests pass, 0 SC2168 errors
27
-
28
- ### Pending Work
29
- - Commit the shellcheck fixes
30
- - Resume XML integration work (see prior session handoff)
31
-
32
- ---
33
-
34
- ## 🎯 Prior Goal (2026-02-16)
35
-
36
- Implement XML exchange system integration into existing colony lifecycle (pause/resume/seal/init) rather than as separate commands.
37
-
38
- **Decision needed:** Choose integration approach:
39
- - **Option A:** Auto-export on pause, auto-import on resume
40
- - **Option B:** Export to eternal memory on seal, import on init
41
- - **Option C:** Hybrid approach (recommended)
42
-
43
- ---
44
-
45
- ## 📍 What's In Progress
46
-
47
- ### Phase 4: XML Exchange System ✅ COMPLETE
48
-
49
- **Built but not yet integrated:**
50
-
51
- 1. **Exchange Modules** (`.aether/exchange/`)
52
- - `pheromone-xml.sh` - Signal export/import/merge with namespace prefixing
53
- - `wisdom-xml.sh` - Queen wisdom with promotion pipeline (0.8 threshold)
54
- - `registry-xml.sh` - Colony lineage and ancestry tracking
55
-
56
- 2. **Core Utilities** (`.aether/utils/xml-core.sh`)
57
- - Feature detection for xmllint/xmlstarlet/xsltproc
58
- - JSON output helpers
59
- - Validation, formatting, escaping
60
-
61
- 3. **Schemas** (`.aether/schemas/`)
62
- - `pheromone.xsd` - 22 castes, 4 priority levels
63
- - `queen-wisdom.xsd` - Philosophy/pattern validation
64
- - `colony-registry.xsd` - Lineage validation
65
- - `aether-types.xsd` - Shared types
66
-
67
- 4. **Tests**
68
- - `tests/bash/test-xml-roundtrip.sh` - 19/19 tests passing
69
-
70
- ---
71
-
72
- ## ✅ Completed Work
73
-
74
- ### Phase 1: Foundation ✅
75
- - XML validation utilities (xml-validate, xml-query, xml-convert)
76
- - XSD schemas (pheromone.xsd, queen-wisdom.xsd, colony-registry.xsd)
77
- - 20/20 tests passing
78
-
79
- ### Phase 2: Pheromone XML ✅
80
- - Pheromone export to XML with namespaces
81
- - XInclude composition for worker priming
82
- - Colony namespace generation functions
83
- - 15/15 pheromone tests + 6/6 XInclude tests passing
84
-
85
- ### Phase 3: Wisdom Evolution ✅
86
- - XSLT transformation queen-wisdom.xml → QUEEN.md
87
- - Validation workflow using queen-wisdom.xsd
88
- - Wisdom promotion pipeline (pattern → philosophy at 0.8 confidence)
89
-
90
- ### Phase 4: Exchange System ✅
91
- - Round-trip conversion (JSON ↔ XML)
92
- - Namespace prefixing for collision prevention
93
- - Merge with deduplication
94
- - 19/19 round-trip tests passing
95
-
96
- ---
97
-
98
- ## ⚠️ Active Constraints (REDIRECT Signals)
99
-
100
- | Constraint | Source | Date Set |
101
- |------------|--------|----------|
102
- | In the Aether repo, `.aether/` IS the source of truth — published directly to npm (private dirs excluded by .npmignore) | CLAUDE.md | Permanent |
103
- | Never push without explicit user approval | CLAUDE.md Safety | Permanent |
104
- | XML exchange should be automatic, not separate commands | User | 2026-02-16 |
105
-
106
- ---
107
-
108
- ## 💭 Active Pheromones (FOCUS Signals)
109
-
110
- *None active*
111
-
112
- ---
113
-
114
- ## 📝 Recent Decisions
115
-
116
- | Date | Decision | Rationale | Made By |
117
- |------|----------|-----------|---------|
118
- | 2026-02-16 | Remove /ant:export and /ant:import commands | User wants system integration, not new commands | User |
119
- | 2026-02-16 | Complete Phase 4 | All exchange modules built and tested | Queen |
120
- | 2026-02-16 | Pause for integration decision | Need user input on approach (A, B, or C) | Queen |
121
-
122
- ---
123
-
124
- ## 📊 Recent Activity (Last 10 Actions)
125
-
126
- | Timestamp | Command | Result | Files Changed |
127
- |-----------|---------|--------|---------------|
128
- | 2026-02-16T20:49:04Z | pause-colony | Colony paused — test fixes and hook debugging completed | tests fixed: 18→0, hooks simplified |
129
- | 2026-02-16T20:20:00Z | export/import removed | Commands deleted as requested | -2 files |
130
- | 2026-02-16T20:18:00Z | registry-xml.sh | Created registry exchange module | +1 file |
131
- | 2026-02-16T20:15:00Z | wisdom-xml.sh | Created wisdom exchange module | +1 file |
132
- | 2026-02-16T20:14:00Z | pheromone-xml.sh | Fixed merge tests, 19/19 passing | 1 file |
133
- | 2026-02-16T20:10:00Z | test-xml-roundtrip.sh | Comprehensive test suite | +1 file |
134
- | 2026-02-16T20:00:00Z | xml-core.sh | Core XML utilities | +1 file |
135
- | 2026-02-16T19:50:00Z | schemas/* | XSD schemas for validation | +4 files |
136
-
137
- ---
138
-
139
- ## 🔄 Next Steps
140
-
141
- **AWAITING USER DECISION:**
142
-
143
- How should XML exchange integrate into existing commands?
144
-
145
- ### Option A: Pause/Resume Integration
146
- - `/ant:pause-colony` → Auto-export to `.aether/exports/`
147
- - `/ant:resume-colony` → Check for exports, offer to import
148
-
149
- ### Option B: Seal/Init Integration
150
- - `/ant:seal` → Export to `~/.aether/eternal/` (cross-colony)
151
- - `/ant/init` → Check eternal memory, offer to seed new colony
152
-
153
- ### Option C: Hybrid (Recommended)
154
- - **Pause** → Export to `.aether/exports/` (local handoff)
155
- - **Seal** → Export to `~/.aether/eternal/` (eternal memory)
156
- - **Resume** → Import from both locations
157
- - **Init** → Offer eternal memory as seed
158
-
159
- ---
160
-
@@ -1,84 +0,0 @@
1
- # QUEEN.md — Colony Wisdom
2
-
3
- > Last evolved: 2026-02-15T13:08:15Z
4
- > Colonies contributed: 0
5
- > Wisdom version: 1.0.0
6
-
7
- ---
8
-
9
- ## 📜 Philosophies
10
-
11
- Core beliefs that guide all colony work. These are validated through repeated successful application across multiple colonies.
12
-
13
- - **colony-a** (2026-02-15T13:08:24Z): Test-driven development ensures quality
14
-
15
- ---
16
-
17
- ## 🧭 Patterns
18
-
19
- Validated approaches that consistently work. These represent discovered best practices that have proven themselves in the field.
20
-
21
- - **colony-b** (2026-02-15T13:08:28Z): Always validate inputs
22
-
23
- ---
24
-
25
- ## ⚠️ Redirects
26
-
27
- Anti-patterns to avoid. These represent approaches that have caused problems and should be redirected away from.
28
-
29
- - **colony-c** (2026-02-15T13:08:31Z): Never skip security checks
30
-
31
- ---
32
-
33
- ## 🔧 Stack Wisdom
34
-
35
- Technology-specific insights and constraints detected through codebase analysis.
36
-
37
- - **colony-d** (2026-02-15T13:08:36Z): Use jq for JSON in bash
38
-
39
- ---
40
-
41
- ## 🏛️ Decrees
42
-
43
- User-mandated rules that override other guidance. These represent explicit directives from the Queen.
44
-
45
- - **colony-e** (2026-02-15T13:08:40Z): All code must have tests
46
-
47
- ---
48
-
49
- ## 📊 Evolution Log
50
-
51
- Track how wisdom has evolved over time.
52
-
53
- | Date | Colony | Change | Details |
54
- |------|--------|--------|---------|
55
- | 2026-02-15T13:08:40Z | colony-e | promoted_decree | Added: All code must have tests... |
56
- | 2026-02-15T13:08:36Z | colony-d | promoted_stack | Added: Use jq for JSON in bash... |
57
- | 2026-02-15T13:08:31Z | colony-c | promoted_redirect | Added: Never skip security checks... |
58
- | 2026-02-15T13:08:28Z | colony-b | promoted_pattern | Added: Always validate inputs... |
59
- | 2026-02-15T13:08:24Z | colony-a | promoted_philosophy | Added: Test-driven development ensures quality... |
60
- | 2026-02-15T13:08:15Z | system | initialized | QUEEN.md created from template |
61
-
62
- ---
63
-
64
- <!-- METADATA
65
- {
66
- "version": "1.0.0",
67
- "last_evolved": "2026-02-15T13:08:40Z",
68
- "colonies_contributed": ["colony-a"],
69
- "promotion_thresholds": {
70
- "philosophy": 5,
71
- "pattern": 3,
72
- "redirect": 2,
73
- "stack": 1,
74
- "decree": 0
75
- },
76
- "stats": {
77
- "total_philosophies": 1,
78
- "total_patterns": 1,
79
- "total_redirects": 1,
80
- "total_stack_entries": 1,
81
- "total_decrees": 1
82
- }
83
- }
84
- -->
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <colony-registry xmlns="http://aether.colony/schemas/registry/1.0"
3
- version="1.0.0"
4
- generated_at="2026-02-18T01:48:47Z">
5
- <colony id="Remove Aether developing Aether self-reference while preserving findings" status="active" created_at="2026-02-15T15:59:13Z">
6
- <name>Remove Aether developing Aether self-reference while preserving findings</name>
7
- </colony>
8
- <colony id="v1.1 Bug Fixes &amp; Update System Repair" status="active" created_at="unknown">
9
- <name>v1.1 Bug Fixes &amp; Update System Repair</name>
10
- </colony>
11
- </colony-registry>
@@ -1,87 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <pheromones xmlns="http://aether.colony/schemas/pheromones"
3
- xmlns:ph="http://aether.colony/schemas/pheromones"
4
- version="1.0.0"
5
- generated_at="2026-02-17T23:51:44Z"
6
- colony_id="aether-dev">
7
- <metadata>
8
- <source type="system">aether-pheromone-converter</source>
9
- <context>Colony pheromone signals</context>
10
- </metadata>
11
- <signal id="sig_focus_001"
12
- type="FOCUS"
13
- priority="normal"
14
- source="user"
15
- created_at="2026-02-16T10:00:00Z"
16
- expires_at="2026-02-17T10:00:00Z"
17
- active="true">
18
- <content>
19
- <text>XML migration and pheromone system implementation</text>
20
- </content>
21
- </signal>
22
- <signal id="sig_redirect_001"
23
- type="REDIRECT"
24
- priority="high"
25
- source="system"
26
- created_at="2026-02-16T08:00:00Z"
27
- expires_at="2026-03-16T08:00:00Z"
28
- active="true">
29
- <content>
30
- <text>Avoid editing runtime/ directly - edit .aether/ instead</text>
31
- </content>
32
- </signal>
33
- <signal id="sig_feedback_001"
34
- type="FEEDBACK"
35
- priority="low"
36
- source="worker_builder"
37
- created_at="2026-02-16T12:00:00Z"
38
- active="true">
39
- <content>
40
- <text>Test coverage is good, continue maintaining 80%+ coverage</text>
41
- </content>
42
- </signal>
43
- <signal id="sig_focus_1771366307000"
44
- type="FOCUS"
45
- priority="normal"
46
- source="user"
47
- created_at="2026-02-17T22:11:47Z"
48
- expires_at="phase_end"
49
- active="true">
50
- <content>
51
- <text>test area for pheromone unification</text>
52
- </content>
53
- </signal>
54
- <signal id="sig_focus_1771366386000"
55
- type="FOCUS"
56
- priority="normal"
57
- source="user"
58
- created_at="2026-02-17T22:13:06Z"
59
- expires_at="phase_end"
60
- active="true">
61
- <content>
62
- <text>test area</text>
63
- </content>
64
- </signal>
65
- <signal id="sig_redirect_1771366398000"
66
- type="REDIRECT"
67
- priority="high"
68
- source="user"
69
- created_at="2026-02-17T22:13:18Z"
70
- expires_at="phase_end"
71
- active="true">
72
- <content>
73
- <text>avoid direct runtime edits</text>
74
- </content>
75
- </signal>
76
- <signal id="sig_feedback_1771366398000"
77
- type="FEEDBACK"
78
- priority="low"
79
- source="user"
80
- created_at="2026-02-17T22:13:18Z"
81
- expires_at="phase_end"
82
- active="true">
83
- <content>
84
- <text>keep commits small</text>
85
- </content>
86
- </signal>
87
- </pheromones>
@@ -1,14 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <queen-wisdom xmlns="http://aether.colony/schemas/queen-wisdom/1.0"
3
- xmlns:qw="http://aether.colony/schemas/queen-wisdom/1.0">
4
- <metadata>
5
- <version>1.0.0</version>
6
- <created>2026-02-18T01:48:47Z</created>
7
- <modified>2026-02-18T01:48:47Z</modified>
8
- <colony_id></colony_id>
9
- </metadata>
10
- <philosophies>
11
- </philosophies>
12
- <patterns>
13
- </patterns>
14
- </queen-wisdom>
@@ -1,100 +0,0 @@
1
- version: '1.0'
2
- description: Default model assignments for Aether colony workers
3
- profile: default
4
- worker_models:
5
- prime: glm-5
6
- archaeologist: glm-5
7
- architect: glm-5
8
- oracle: minimax-2.5
9
- route_setter: kimi-k2.5
10
- builder: kimi-k2.5
11
- watcher: kimi-k2.5
12
- scout: kimi-k2.5
13
- chaos: kimi-k2.5
14
- colonizer: kimi-k2.5
15
- model_metadata:
16
- glm-5:
17
- description: '744B MoE model (40B active), long-horizon agentic engineering'
18
- provider: z_ai
19
- capabilities:
20
- - planning
21
- - coordination
22
- - long_context
23
- - complex_reasoning
24
- - agentic_workflows
25
- context_window: 200000
26
- speed: medium
27
- cost_tier: high
28
- best_for:
29
- - 'Long-horizon task execution (tested: 1 year business simulation)'
30
- - Strategic coordination and planning
31
- - Historical pattern analysis across large contexts
32
- - Multi-step autonomous workflows
33
- minimax-2.5:
34
- description: Frontier model for architectural planning and agentic tool use
35
- provider: minimax
36
- capabilities:
37
- - system_design
38
- - architecture
39
- - browse
40
- - search
41
- - task_decomposition
42
- context_window: 200000
43
- speed: fast
44
- cost_tier: medium
45
- best_for:
46
- - Architectural-level planning and system design
47
- - Research with browse/search (76.3% BrowseComp)
48
- - Efficient task decomposition (20% fewer search rounds)
49
- - Full-stack development (80.2% SWE-Bench Verified)
50
- kimi-k2.5:
51
- description: '1T MoE model (32B active), multimodal agent with swarm capabilities'
52
- provider: kimi
53
- capabilities:
54
- - coding
55
- - multimodal
56
- - agent_swarm
57
- - visual_coding
58
- - validation
59
- context_window: 256000
60
- speed: fast
61
- cost_tier: low
62
- best_for:
63
- - Code generation and refactoring (76.8% SWE-Bench)
64
- - Visual coding (screenshots to code)
65
- - Parallel exploration (up to 100 sub-agents)
66
- - Validation and testing workflows
67
- task_routing:
68
- default_model: kimi-k2.5
69
- complexity_indicators:
70
- complex:
71
- keywords:
72
- - design
73
- - architecture
74
- - plan
75
- - coordinate
76
- - synthesize
77
- - strategize
78
- - optimize
79
- model: glm-5
80
- simple:
81
- keywords:
82
- - implement
83
- - code
84
- - refactor
85
- - write
86
- - create
87
- model: kimi-k2.5
88
- validate:
89
- keywords:
90
- - test
91
- - validate
92
- - verify
93
- - check
94
- - review
95
- - audit
96
- model: minimax-2.5
97
- proxy:
98
- endpoint: 'http://localhost:4000'
99
- auth_token: ${LITELLM_AUTH_TOKEN:-sk-litellm-local}
100
- health_check: 'http://localhost:4000/health'
@@ -1,56 +0,0 @@
1
- #!/bin/bash
2
- # Aether Colony Spawn Helper with Model Assignment
3
- # Usage: spawn-with-model.sh <caste> <task_description> [project_root]
4
- #
5
- # This script sets up the correct environment variables for model routing
6
- # through the LiteLLM proxy before spawning Claude Code.
7
-
8
- set -euo pipefail
9
-
10
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
11
- AETHER_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
12
-
13
- # Arguments
14
- CASTE="${1:-}"
15
- TASK="${2:-}"
16
- PROJECT_ROOT="${3:-$AETHER_ROOT}"
17
-
18
- # Validate arguments
19
- [[ -z "$CASTE" ]] && { echo "Usage: spawn-with-model.sh <caste> <task_description> [project_root]" >&2; exit 1; }
20
- [[ -z "$TASK" ]] && { echo "Usage: spawn-with-model.sh <caste> <task_description> [project_root]" >&2; exit 1; }
21
-
22
- # Get model for this caste
23
- model_info=$(bash "$AETHER_ROOT/.aether/aether-utils.sh" model-profile get "$CASTE" 2>/dev/null || echo '{"ok":true,"result":{"model":"kimi-k2.5"}}')
24
- model=$(echo "$model_info" | jq -r '.result.model // "kimi-k2.5"')
25
-
26
- # Log the spawn with model
27
- ant_name=$(bash "$AETHER_ROOT/.aether/aether-utils.sh" generate-ant-name "$CASTE" 2>/dev/null || echo "${CASTE}-$(date +%s)")
28
- bash "$AETHER_ROOT/.aether/aether-utils.sh" spawn-log "Queen" "$CASTE" "$ant_name" "$TASK" 2>/dev/null || true
29
- bash "$AETHER_ROOT/.aether/aether-utils.sh" activity-log "SPAWN" "$ant_name ($CASTE)" "Model: $model - $TASK" 2>/dev/null || true
30
-
31
- # Export environment for Claude Code
32
- export ANTHROPIC_BASE_URL="${ANTHROPIC_BASE_URL:-http://localhost:4000}"
33
- export ANTHROPIC_AUTH_TOKEN="${ANTHROPIC_AUTH_TOKEN:-sk-litellm-local}"
34
- export ANTHROPIC_MODEL="$model"
35
-
36
- echo "[$(date '+%H:%M:%S')] Spawning $ant_name ($CASTE) with model: $model"
37
- echo " Task: $TASK"
38
- echo " Project: $PROJECT_ROOT"
39
-
40
- # Check proxy health
41
- if curl -s http://localhost:4000/health | grep -q "healthy" 2>/dev/null; then
42
- echo " Proxy: healthy"
43
- else
44
- echo " Proxy: unavailable (will use default routing)"
45
- fi
46
-
47
- # Start Claude Code with the environment set
48
- # Note: This assumes claude is in PATH
49
- if command -v claude &> /dev/null; then
50
- claude --cwd "$PROJECT_ROOT"
51
- else
52
- echo "Claude Code not found in PATH. Environment prepared:"
53
- echo " ANTHROPIC_BASE_URL=$ANTHROPIC_BASE_URL"
54
- echo " ANTHROPIC_MODEL=$ANTHROPIC_MODEL"
55
- exit 0
56
- fi