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.
Files changed (378) hide show
  1. package/.aether/aether-utils.sh +5354 -0
  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 +438 -0
  30. package/.aether/commands/continue.yaml +1484 -0
  31. package/.aether/commands/council.yaml +304 -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 +469 -0
  44. package/.aether/commands/insert-phase.yaml +98 -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 +1313 -0
  57. package/.aether/commands/preferences.yaml +63 -0
  58. package/.aether/commands/redirect.yaml +123 -0
  59. package/.aether/commands/resume-colony.yaml +373 -0
  60. package/.aether/commands/resume.yaml +398 -0
  61. package/.aether/commands/run.yaml +193 -0
  62. package/.aether/commands/seal.yaml +1205 -0
  63. package/.aether/commands/skill-create.yaml +337 -0
  64. package/.aether/commands/status.yaml +364 -0
  65. package/.aether/commands/swarm.yaml +352 -0
  66. package/.aether/commands/tunnels.yaml +814 -0
  67. package/.aether/commands/update.yaml +131 -0
  68. package/.aether/commands/verify-castes.yaml +159 -0
  69. package/.aether/commands/watch.yaml +454 -0
  70. package/.aether/docs/INCIDENT_TEMPLATE.md +32 -0
  71. package/.aether/docs/QUEEN-SYSTEM.md +211 -0
  72. package/.aether/docs/README.md +98 -0
  73. package/.aether/docs/caste-system.md +48 -0
  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 +1682 -0
  78. package/.aether/docs/command-playbooks/build-prep.md +283 -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 +1724 -0
  84. package/.aether/docs/command-playbooks/continue-gates.md +686 -0
  85. package/.aether/docs/command-playbooks/continue-verify.md +406 -0
  86. package/.aether/docs/context-continuity.md +84 -0
  87. package/{runtime → .aether/docs/disciplines}/DISCIPLINES.md +13 -11
  88. package/.aether/docs/error-codes.md +268 -0
  89. package/.aether/docs/known-issues.md +94 -0
  90. package/{runtime → .aether}/docs/pheromones.md +86 -6
  91. package/.aether/docs/plans/pheromone-display-plan.md +257 -0
  92. package/.aether/docs/queen-commands.md +98 -0
  93. package/.aether/docs/source-of-truth-map.md +132 -0
  94. package/.aether/docs/xml-utilities.md +47 -0
  95. package/{runtime → .aether}/exchange/pheromone-xml.sh +2 -1
  96. package/{runtime → .aether}/exchange/registry-xml.sh +7 -3
  97. package/{runtime → .aether}/exchange/wisdom-xml.sh +11 -4
  98. package/.aether/rules/aether-colony.md +144 -0
  99. package/.aether/schemas/example-prompt-builder.xml +234 -0
  100. package/.aether/scripts/incident-test-add.sh +47 -0
  101. package/.aether/scripts/weekly-audit.sh +79 -0
  102. package/.aether/skills/.index.json +649 -0
  103. package/.aether/skills/colony/.manifest.json +16 -0
  104. package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
  105. package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
  106. package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
  107. package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
  108. package/.aether/skills/colony/context-management/SKILL.md +80 -0
  109. package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
  110. package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
  111. package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
  112. package/.aether/skills/colony/state-safety/SKILL.md +84 -0
  113. package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
  114. package/.aether/skills/domain/.manifest.json +24 -0
  115. package/.aether/skills/domain/README.md +33 -0
  116. package/.aether/skills/domain/django/SKILL.md +49 -0
  117. package/.aether/skills/domain/docker/SKILL.md +52 -0
  118. package/.aether/skills/domain/golang/SKILL.md +52 -0
  119. package/.aether/skills/domain/graphql/SKILL.md +51 -0
  120. package/.aether/skills/domain/html-css/SKILL.md +48 -0
  121. package/.aether/skills/domain/nextjs/SKILL.md +45 -0
  122. package/.aether/skills/domain/nodejs/SKILL.md +53 -0
  123. package/.aether/skills/domain/postgresql/SKILL.md +53 -0
  124. package/.aether/skills/domain/prisma/SKILL.md +59 -0
  125. package/.aether/skills/domain/python/SKILL.md +50 -0
  126. package/.aether/skills/domain/rails/SKILL.md +52 -0
  127. package/.aether/skills/domain/react/SKILL.md +45 -0
  128. package/.aether/skills/domain/rest-api/SKILL.md +58 -0
  129. package/.aether/skills/domain/svelte/SKILL.md +47 -0
  130. package/.aether/skills/domain/tailwind/SKILL.md +45 -0
  131. package/.aether/skills/domain/testing/SKILL.md +53 -0
  132. package/.aether/skills/domain/typescript/SKILL.md +58 -0
  133. package/.aether/skills/domain/vue/SKILL.md +49 -0
  134. package/.aether/templates/QUEEN.md.template +61 -0
  135. package/.aether/templates/colony-state-reset.jq.template +23 -0
  136. package/.aether/templates/colony-state.template.json +39 -0
  137. package/.aether/templates/constraints.template.json +9 -0
  138. package/.aether/templates/crowned-anthill.template.md +36 -0
  139. package/.aether/templates/handoff-build-error.template.md +30 -0
  140. package/.aether/templates/handoff-build-success.template.md +39 -0
  141. package/.aether/templates/handoff.template.md +40 -0
  142. package/.aether/templates/learning-observations.template.json +6 -0
  143. package/.aether/templates/midden.template.json +13 -0
  144. package/.aether/templates/pheromones.template.json +6 -0
  145. package/.aether/templates/session.template.json +9 -0
  146. package/{runtime → .aether}/utils/atomic-write.sh +68 -22
  147. package/{runtime → .aether}/utils/chamber-compare.sh +23 -10
  148. package/.aether/utils/chamber-utils.sh +440 -0
  149. package/.aether/utils/emoji-audit.sh +166 -0
  150. package/{runtime → .aether}/utils/error-handler.sh +34 -8
  151. package/.aether/utils/file-lock.sh +313 -0
  152. package/.aether/utils/flag.sh +267 -0
  153. package/.aether/utils/hive.sh +572 -0
  154. package/.aether/utils/learning.sh +1928 -0
  155. package/.aether/utils/midden.sh +342 -0
  156. package/.aether/utils/oracle/oracle.md +168 -0
  157. package/.aether/utils/oracle/oracle.sh +1023 -0
  158. package/.aether/utils/pheromone.sh +2029 -0
  159. package/.aether/utils/queen.sh +1698 -0
  160. package/.aether/utils/scan.sh +860 -0
  161. package/.aether/utils/semantic-cli.sh +415 -0
  162. package/.aether/utils/session.sh +552 -0
  163. package/.aether/utils/skills.sh +509 -0
  164. package/.aether/utils/spawn-tree.sh +260 -0
  165. package/.aether/utils/spawn.sh +260 -0
  166. package/.aether/utils/state-api.sh +199 -0
  167. package/{runtime → .aether}/utils/state-loader.sh +8 -6
  168. package/.aether/utils/suggest.sh +611 -0
  169. package/{runtime → .aether}/utils/swarm-display.sh +10 -1
  170. package/.aether/utils/swarm.sh +1004 -0
  171. package/{runtime → .aether}/utils/watch-spawn-tree.sh +11 -2
  172. package/{runtime → .aether}/utils/xml-compose.sh +9 -3
  173. package/.aether/utils/xml-convert.sh +277 -0
  174. package/{runtime → .aether}/utils/xml-core.sh +5 -9
  175. package/.aether/utils/xml-query.sh +201 -0
  176. package/.aether/utils/xml-utils.sh +110 -0
  177. package/{runtime → .aether}/workers.md +97 -81
  178. package/.claude/agents/ant/aether-ambassador.md +265 -0
  179. package/.claude/agents/ant/aether-archaeologist.md +327 -0
  180. package/.claude/agents/ant/aether-architect.md +236 -0
  181. package/.claude/agents/ant/aether-auditor.md +271 -0
  182. package/.claude/agents/ant/aether-builder.md +224 -0
  183. package/.claude/agents/ant/aether-chaos.md +269 -0
  184. package/.claude/agents/ant/aether-chronicler.md +305 -0
  185. package/.claude/agents/ant/aether-gatekeeper.md +330 -0
  186. package/.claude/agents/ant/aether-includer.md +374 -0
  187. package/.claude/agents/ant/aether-keeper.md +272 -0
  188. package/.claude/agents/ant/aether-measurer.md +322 -0
  189. package/.claude/agents/ant/aether-oracle.md +237 -0
  190. package/.claude/agents/ant/aether-probe.md +211 -0
  191. package/.claude/agents/ant/aether-queen.md +330 -0
  192. package/.claude/agents/ant/aether-route-setter.md +178 -0
  193. package/.claude/agents/ant/aether-sage.md +418 -0
  194. package/.claude/agents/ant/aether-scout.md +179 -0
  195. package/.claude/agents/ant/aether-surveyor-disciplines.md +417 -0
  196. package/.claude/agents/ant/aether-surveyor-nest.md +355 -0
  197. package/.claude/agents/ant/aether-surveyor-pathogens.md +289 -0
  198. package/.claude/agents/ant/aether-surveyor-provisions.md +360 -0
  199. package/.claude/agents/ant/aether-tracker.md +270 -0
  200. package/.claude/agents/ant/aether-watcher.md +280 -0
  201. package/.claude/agents/ant/aether-weaver.md +248 -0
  202. package/.claude/commands/ant/archaeology.md +16 -14
  203. package/.claude/commands/ant/build.md +43 -1028
  204. package/.claude/commands/ant/chaos.md +19 -23
  205. package/.claude/commands/ant/colonize.md +52 -31
  206. package/.claude/commands/ant/continue.md +40 -1016
  207. package/.claude/commands/ant/council.md +21 -18
  208. package/.claude/commands/ant/data-clean.md +81 -0
  209. package/.claude/commands/ant/dream.md +27 -15
  210. package/.claude/commands/ant/entomb.md +317 -225
  211. package/.claude/commands/ant/export-signals.md +57 -0
  212. package/.claude/commands/ant/feedback.md +48 -26
  213. package/.claude/commands/ant/flag.md +30 -10
  214. package/.claude/commands/ant/flags.md +34 -12
  215. package/.claude/commands/ant/focus.md +45 -19
  216. package/.claude/commands/ant/help.md +50 -8
  217. package/.claude/commands/ant/history.md +13 -0
  218. package/.claude/commands/ant/import-signals.md +71 -0
  219. package/.claude/commands/ant/init.md +345 -194
  220. package/.claude/commands/ant/insert-phase.md +101 -0
  221. package/.claude/commands/ant/interpret.md +26 -4
  222. package/.claude/commands/ant/lay-eggs.md +184 -127
  223. package/.claude/commands/ant/maturity.md +32 -11
  224. package/.claude/commands/ant/memory-details.md +77 -0
  225. package/.claude/commands/ant/migrate-state.md +20 -2
  226. package/.claude/commands/ant/oracle.md +337 -74
  227. package/.claude/commands/ant/organize.md +39 -25
  228. package/.claude/commands/ant/patrol.md +620 -0
  229. package/.claude/commands/ant/pause-colony.md +23 -27
  230. package/.claude/commands/ant/phase.md +40 -42
  231. package/.claude/commands/ant/pheromones.md +156 -0
  232. package/.claude/commands/ant/plan.md +185 -51
  233. package/.claude/commands/ant/preferences.md +65 -0
  234. package/.claude/commands/ant/redirect.md +45 -30
  235. package/.claude/commands/ant/resume-colony.md +51 -27
  236. package/.claude/commands/ant/resume.md +314 -94
  237. package/.claude/commands/ant/run.md +195 -0
  238. package/.claude/commands/ant/seal.md +650 -221
  239. package/.claude/commands/ant/skill-create.md +286 -0
  240. package/.claude/commands/ant/status.md +196 -31
  241. package/.claude/commands/ant/swarm.md +16 -46
  242. package/.claude/commands/ant/tunnels.md +280 -105
  243. package/.claude/commands/ant/update.md +73 -89
  244. package/.claude/commands/ant/verify-castes.md +100 -42
  245. package/.claude/commands/ant/watch.md +14 -12
  246. package/.opencode/agents/aether-ambassador.md +63 -20
  247. package/.opencode/agents/aether-archaeologist.md +29 -12
  248. package/.opencode/agents/aether-architect.md +103 -36
  249. package/.opencode/agents/aether-auditor.md +51 -18
  250. package/.opencode/agents/aether-builder.md +70 -20
  251. package/.opencode/agents/aether-chaos.md +29 -12
  252. package/.opencode/agents/aether-chronicler.md +60 -18
  253. package/.opencode/agents/aether-gatekeeper.md +27 -18
  254. package/.opencode/agents/aether-includer.md +27 -18
  255. package/.opencode/agents/aether-keeper.md +89 -18
  256. package/.opencode/agents/aether-measurer.md +27 -18
  257. package/.opencode/agents/aether-oracle.md +137 -0
  258. package/.opencode/agents/aether-probe.md +60 -18
  259. package/.opencode/agents/aether-queen.md +172 -24
  260. package/.opencode/agents/aether-route-setter.md +57 -12
  261. package/.opencode/agents/aether-sage.md +26 -18
  262. package/.opencode/agents/aether-scout.md +28 -20
  263. package/.opencode/agents/aether-surveyor-disciplines.md +59 -2
  264. package/.opencode/agents/aether-surveyor-nest.md +59 -2
  265. package/.opencode/agents/aether-surveyor-pathogens.md +57 -2
  266. package/.opencode/agents/aether-surveyor-provisions.md +59 -2
  267. package/.opencode/agents/aether-tracker.md +64 -18
  268. package/.opencode/agents/aether-watcher.md +66 -19
  269. package/.opencode/agents/aether-weaver.md +61 -18
  270. package/.opencode/commands/ant/archaeology.md +7 -14
  271. package/.opencode/commands/ant/build.md +437 -257
  272. package/.opencode/commands/ant/chaos.md +7 -24
  273. package/.opencode/commands/ant/colonize.md +8 -17
  274. package/.opencode/commands/ant/continue.md +661 -142
  275. package/.opencode/commands/ant/council.md +11 -22
  276. package/.opencode/commands/ant/data-clean.md +77 -0
  277. package/.opencode/commands/ant/dream.md +15 -17
  278. package/.opencode/commands/ant/entomb.md +133 -62
  279. package/.opencode/commands/ant/export-signals.md +54 -0
  280. package/.opencode/commands/ant/feedback.md +24 -5
  281. package/.opencode/commands/ant/flag.md +16 -4
  282. package/.opencode/commands/ant/flags.md +24 -10
  283. package/.opencode/commands/ant/focus.md +22 -5
  284. package/.opencode/commands/ant/help.md +41 -8
  285. package/.opencode/commands/ant/history.md +9 -0
  286. package/.opencode/commands/ant/import-signals.md +68 -0
  287. package/.opencode/commands/ant/init.md +374 -167
  288. package/.opencode/commands/ant/insert-phase.md +107 -0
  289. package/.opencode/commands/ant/interpret.md +16 -0
  290. package/.opencode/commands/ant/lay-eggs.md +184 -112
  291. package/.opencode/commands/ant/maturity.md +18 -2
  292. package/.opencode/commands/ant/memory-details.md +83 -0
  293. package/.opencode/commands/ant/migrate-state.md +12 -0
  294. package/.opencode/commands/ant/oracle.md +322 -67
  295. package/.opencode/commands/ant/organize.md +18 -16
  296. package/.opencode/commands/ant/patrol.md +626 -0
  297. package/.opencode/commands/ant/pause-colony.md +12 -29
  298. package/.opencode/commands/ant/phase.md +30 -40
  299. package/.opencode/commands/ant/pheromones.md +162 -0
  300. package/.opencode/commands/ant/plan.md +184 -56
  301. package/.opencode/commands/ant/preferences.md +71 -0
  302. package/.opencode/commands/ant/redirect.md +22 -5
  303. package/.opencode/commands/ant/resume-colony.md +38 -27
  304. package/.opencode/commands/ant/resume.md +385 -0
  305. package/.opencode/commands/ant/run.md +201 -0
  306. package/.opencode/commands/ant/seal.md +259 -45
  307. package/.opencode/commands/ant/skill-create.md +63 -0
  308. package/.opencode/commands/ant/status.md +135 -31
  309. package/.opencode/commands/ant/swarm.md +3 -345
  310. package/.opencode/commands/ant/tunnels.md +152 -9
  311. package/.opencode/commands/ant/update.md +70 -91
  312. package/.opencode/commands/ant/verify-castes.md +96 -42
  313. package/.opencode/commands/ant/watch.md +7 -0
  314. package/CHANGELOG.md +356 -0
  315. package/README.md +203 -573
  316. package/bin/cli.js +455 -527
  317. package/bin/generate-commands.js +186 -0
  318. package/bin/generate-commands.sh +127 -88
  319. package/bin/lib/init.js +13 -3
  320. package/bin/lib/spawn-logger.js +0 -15
  321. package/bin/lib/update-transaction.js +392 -140
  322. package/bin/npx-install.js +178 -0
  323. package/bin/sync-to-runtime.sh +5 -137
  324. package/bin/validate-package.sh +166 -0
  325. package/package.json +14 -7
  326. package/.opencode/agents/aether-guardian.md +0 -107
  327. package/.opencode/agents/workers.md +0 -1034
  328. package/bin/lib/model-profiles.js +0 -445
  329. package/bin/lib/model-verify.js +0 -288
  330. package/bin/lib/proxy-health.js +0 -253
  331. package/bin/lib/telemetry.js +0 -441
  332. package/runtime/CONTEXT.md +0 -160
  333. package/runtime/QUEEN_ANT_ARCHITECTURE.md +0 -402
  334. package/runtime/aether-utils.sh +0 -3879
  335. package/runtime/data/signatures.json +0 -41
  336. package/runtime/docs/AETHER-2.0-IMPLEMENTATION-PLAN.md +0 -1343
  337. package/runtime/docs/AETHER-PHEROMONE-SYSTEM-MASTER-SPEC.md +0 -2642
  338. package/runtime/docs/PHEROMONE-INJECTION.md +0 -240
  339. package/runtime/docs/PHEROMONE-INTEGRATION.md +0 -192
  340. package/runtime/docs/PHEROMONE-SYSTEM-DESIGN.md +0 -426
  341. package/runtime/docs/README.md +0 -94
  342. package/runtime/docs/VISUAL-OUTPUT-SPEC.md +0 -219
  343. package/runtime/docs/biological-reference.md +0 -272
  344. package/runtime/docs/codebase-review.md +0 -399
  345. package/runtime/docs/command-sync.md +0 -164
  346. package/runtime/docs/constraints.md +0 -116
  347. package/runtime/docs/implementation-learnings.md +0 -89
  348. package/runtime/docs/known-issues.md +0 -217
  349. package/runtime/docs/namespace.md +0 -148
  350. package/runtime/docs/pathogen-schema-example.json +0 -36
  351. package/runtime/docs/pathogen-schema.md +0 -111
  352. package/runtime/docs/planning-discipline.md +0 -159
  353. package/runtime/docs/progressive-disclosure.md +0 -184
  354. package/runtime/lib/queen-utils.sh +0 -729
  355. package/runtime/model-profiles.yaml +0 -100
  356. package/runtime/planning.md +0 -159
  357. package/runtime/recover.sh +0 -136
  358. package/runtime/templates/QUEEN.md.template +0 -79
  359. package/runtime/utils/chamber-utils.sh +0 -285
  360. package/runtime/utils/file-lock.sh +0 -122
  361. package/runtime/utils/spawn-tree.sh +0 -428
  362. package/runtime/utils/spawn-with-model.sh +0 -56
  363. package/runtime/utils/xml-utils.sh +0 -2196
  364. package/runtime/workers-new-castes.md +0 -516
  365. /package/{runtime → .aether/docs/disciplines}/coding-standards.md +0 -0
  366. /package/{runtime → .aether/docs/disciplines}/debugging.md +0 -0
  367. /package/{runtime → .aether/docs/disciplines}/learning.md +0 -0
  368. /package/{runtime → .aether/docs/disciplines}/tdd.md +0 -0
  369. /package/{runtime → .aether/docs/disciplines}/verification-loop.md +0 -0
  370. /package/{runtime → .aether/docs/disciplines}/verification.md +0 -0
  371. /package/{runtime → .aether}/schemas/aether-types.xsd +0 -0
  372. /package/{runtime → .aether}/schemas/colony-registry.xsd +0 -0
  373. /package/{runtime → .aether}/schemas/pheromone.xsd +0 -0
  374. /package/{runtime → .aether}/schemas/prompt.xsd +0 -0
  375. /package/{runtime → .aether}/schemas/queen-wisdom.xsd +0 -0
  376. /package/{runtime → .aether}/schemas/worker-priming.xsd +0 -0
  377. /package/{runtime → .aether}/utils/colorize-log.sh +0 -0
  378. /package/{runtime → .aether}/utils/queen-to-md.xsl +0 -0
@@ -1,441 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Telemetry Module
4
- *
5
- * Tracks model performance and routing decisions for data-driven model selection.
6
- * Records every spawn with model, caste, task, and routing source.
7
- * Tracks success/failure rates per model-caste combination.
8
- * Rotates at 1000 routing decisions to prevent unbounded growth.
9
- * Uses atomic writes (temp file + rename) for data integrity.
10
- */
11
-
12
- const fs = require('fs');
13
- const path = require('path');
14
-
15
- const TELEMETRY_VERSION = '1.0';
16
- const MAX_ROUTING_DECISIONS = 1000;
17
- const DEFAULT_TELEMETRY_FILE = 'telemetry.json';
18
-
19
- /**
20
- * Get the telemetry file path
21
- * @param {string} repoPath - Repository root path
22
- * @returns {string} Full path to telemetry.json
23
- */
24
- function getTelemetryPath(repoPath) {
25
- return path.join(repoPath, '.aether', 'data', DEFAULT_TELEMETRY_FILE);
26
- }
27
-
28
- /**
29
- * Load telemetry data from file
30
- * @param {string} repoPath - Repository root path
31
- * @returns {Object} Parsed telemetry data or default structure
32
- */
33
- function loadTelemetry(repoPath) {
34
- const telemetryPath = getTelemetryPath(repoPath);
35
-
36
- try {
37
- if (!fs.existsSync(telemetryPath)) {
38
- return createDefaultTelemetry();
39
- }
40
-
41
- const content = fs.readFileSync(telemetryPath, 'utf8');
42
- const data = JSON.parse(content);
43
-
44
- // Validate structure
45
- if (!data.version || !data.models || !Array.isArray(data.routing_decisions)) {
46
- return createDefaultTelemetry();
47
- }
48
-
49
- return data;
50
- } catch (error) {
51
- // Return default on any error (corrupted file, permission issues, etc.)
52
- return createDefaultTelemetry();
53
- }
54
- }
55
-
56
- /**
57
- * Create default telemetry structure
58
- * @returns {Object} Default telemetry object
59
- */
60
- function createDefaultTelemetry() {
61
- return {
62
- version: TELEMETRY_VERSION,
63
- last_updated: new Date().toISOString(),
64
- models: {},
65
- routing_decisions: []
66
- };
67
- }
68
-
69
- /**
70
- * Save telemetry data atomically
71
- * @param {string} repoPath - Repository root path
72
- * @param {Object} data - Telemetry data to save
73
- * @returns {boolean} True if saved successfully
74
- */
75
- function saveTelemetry(repoPath, data) {
76
- const telemetryPath = getTelemetryPath(repoPath);
77
-
78
- try {
79
- // Ensure directory exists
80
- const dataDir = path.dirname(telemetryPath);
81
- if (!fs.existsSync(dataDir)) {
82
- fs.mkdirSync(dataDir, { recursive: true });
83
- }
84
-
85
- // Update timestamp
86
- data.last_updated = new Date().toISOString();
87
-
88
- // Atomic write: write to temp file, then rename
89
- const tempPath = `${telemetryPath}.tmp`;
90
- fs.writeFileSync(tempPath, JSON.stringify(data, null, 2), 'utf8');
91
- fs.renameSync(tempPath, telemetryPath);
92
-
93
- return true;
94
- } catch (error) {
95
- // Silent fail - don't cascade errors from telemetry
96
- return false;
97
- }
98
- }
99
-
100
- /**
101
- * Record spawn telemetry
102
- * @param {string} repoPath - Repository root path
103
- * @param {Object} spawnInfo - Spawn details
104
- * @param {string} spawnInfo.task - Task description
105
- * @param {string} spawnInfo.caste - Worker caste (e.g., "builder")
106
- * @param {string} spawnInfo.model - Model used (e.g., "kimi-k2.5")
107
- * @param {string} spawnInfo.source - Routing source (e.g., "caste-default", "task-based")
108
- * @param {string} [spawnInfo.timestamp] - Optional timestamp (defaults to now)
109
- * @returns {Object} Result with success flag and decision_id
110
- */
111
- function recordSpawnTelemetry(repoPath, { task, caste, model, source, timestamp }) {
112
- try {
113
- const data = loadTelemetry(repoPath);
114
- const decisionTimestamp = timestamp || new Date().toISOString();
115
-
116
- // Initialize model stats if not exists
117
- if (!data.models[model]) {
118
- data.models[model] = {
119
- total_spawns: 0,
120
- successful_completions: 0,
121
- failed_completions: 0,
122
- blocked: 0,
123
- by_caste: {}
124
- };
125
- }
126
-
127
- const modelStats = data.models[model];
128
-
129
- // Increment total spawns
130
- modelStats.total_spawns++;
131
-
132
- // Initialize caste stats if not exists
133
- if (!modelStats.by_caste[caste]) {
134
- modelStats.by_caste[caste] = {
135
- spawns: 0,
136
- success: 0,
137
- failures: 0,
138
- blocked: 0
139
- };
140
- }
141
-
142
- // Increment caste spawns
143
- modelStats.by_caste[caste].spawns++;
144
-
145
- // Create routing decision record with activity tracking fields
146
- const decision = {
147
- timestamp: decisionTimestamp,
148
- task: task || 'unknown',
149
- caste: caste || 'unknown',
150
- selected_model: model || 'default',
151
- source: source || 'unknown',
152
- tools: { read: 0, grep: 0, edit: 0, bash: 0 },
153
- tokens: 0,
154
- started_at: decisionTimestamp
155
- };
156
-
157
- // Append to routing decisions
158
- data.routing_decisions.push(decision);
159
-
160
- // Rotate if exceeds max
161
- if (data.routing_decisions.length > MAX_ROUTING_DECISIONS) {
162
- data.routing_decisions = data.routing_decisions.slice(-MAX_ROUTING_DECISIONS);
163
- }
164
-
165
- // Save atomically
166
- const saved = saveTelemetry(repoPath, data);
167
-
168
- return {
169
- success: saved,
170
- decision_id: decisionTimestamp
171
- };
172
- } catch (error) {
173
- return {
174
- success: false,
175
- decision_id: null,
176
- error: error.message
177
- };
178
- }
179
- }
180
-
181
- /**
182
- * Update spawn outcome
183
- * @param {string} repoPath - Repository root path
184
- * @param {string} spawnId - Spawn identifier (timestamp from recordSpawnTelemetry)
185
- * @param {string} outcome - Outcome: 'completed' | 'failed' | 'blocked'
186
- * @returns {boolean} True if updated successfully
187
- */
188
- function updateSpawnOutcome(repoPath, spawnId, outcome) {
189
- try {
190
- const data = loadTelemetry(repoPath);
191
-
192
- // Find the routing decision by timestamp
193
- const decision = data.routing_decisions.find(d => d.timestamp === spawnId);
194
-
195
- if (!decision) {
196
- return false;
197
- }
198
-
199
- const { selected_model: model, caste } = decision;
200
-
201
- // Ensure model exists
202
- if (!data.models[model]) {
203
- return false;
204
- }
205
-
206
- const modelStats = data.models[model];
207
-
208
- // Update model-level counters
209
- switch (outcome) {
210
- case 'completed':
211
- modelStats.successful_completions++;
212
- break;
213
- case 'failed':
214
- modelStats.failed_completions++;
215
- break;
216
- case 'blocked':
217
- modelStats.blocked++;
218
- break;
219
- default:
220
- return false;
221
- }
222
-
223
- // Update caste-level counters
224
- if (modelStats.by_caste[caste]) {
225
- switch (outcome) {
226
- case 'completed':
227
- modelStats.by_caste[caste].success++;
228
- break;
229
- case 'failed':
230
- modelStats.by_caste[caste].failures++;
231
- break;
232
- case 'blocked':
233
- modelStats.by_caste[caste].blocked++;
234
- break;
235
- }
236
- }
237
-
238
- // Save atomically
239
- return saveTelemetry(repoPath, data);
240
- } catch (error) {
241
- return false;
242
- }
243
- }
244
-
245
- /**
246
- * Get telemetry summary
247
- * @param {string} repoPath - Repository root path
248
- * @returns {Object} Summary of telemetry data
249
- */
250
- function getTelemetrySummary(repoPath) {
251
- const data = loadTelemetry(repoPath);
252
-
253
- const totalSpawns = Object.values(data.models).reduce(
254
- (sum, model) => sum + (model.total_spawns || 0),
255
- 0
256
- );
257
-
258
- const models = {};
259
- for (const [modelName, stats] of Object.entries(data.models)) {
260
- const successRate = stats.total_spawns > 0
261
- ? (stats.successful_completions / stats.total_spawns)
262
- : 0;
263
-
264
- models[modelName] = {
265
- total_spawns: stats.total_spawns,
266
- success_rate: Math.round(successRate * 100) / 100,
267
- by_caste: stats.by_caste || {}
268
- };
269
- }
270
-
271
- // Get last 10 routing decisions
272
- const recentDecisions = data.routing_decisions.slice(-10);
273
-
274
- return {
275
- total_spawns: totalSpawns,
276
- total_models: Object.keys(data.models).length,
277
- models,
278
- recent_decisions: recentDecisions
279
- };
280
- }
281
-
282
- /**
283
- * Get detailed performance for a specific model
284
- * @param {string} repoPath - Repository root path
285
- * @param {string} model - Model name
286
- * @returns {Object|null} Model performance data or null if not found
287
- */
288
- function getModelPerformance(repoPath, model) {
289
- const data = loadTelemetry(repoPath);
290
-
291
- if (!data.models[model]) {
292
- return null;
293
- }
294
-
295
- const stats = data.models[model];
296
- const successRate = stats.total_spawns > 0
297
- ? (stats.successful_completions / stats.total_spawns)
298
- : 0;
299
-
300
- return {
301
- model,
302
- total_spawns: stats.total_spawns,
303
- successful_completions: stats.successful_completions || 0,
304
- failed_completions: stats.failed_completions || 0,
305
- blocked: stats.blocked || 0,
306
- success_rate: Math.round(successRate * 100) / 100,
307
- by_caste: stats.by_caste || {}
308
- };
309
- }
310
-
311
- /**
312
- * Get routing statistics with optional filtering
313
- * @param {string} repoPath - Repository root path
314
- * @param {Object} options - Filter options
315
- * @param {number} [options.days] - Filter to last N days
316
- * @param {string} [options.caste] - Filter by caste
317
- * @returns {Object} Routing statistics
318
- */
319
- function getRoutingStats(repoPath, options = {}) {
320
- const data = loadTelemetry(repoPath);
321
- const { days, caste } = options;
322
-
323
- let decisions = [...data.routing_decisions];
324
-
325
- // Filter by days
326
- if (days && days > 0) {
327
- const cutoffDate = new Date();
328
- cutoffDate.setDate(cutoffDate.getDate() - days);
329
-
330
- decisions = decisions.filter(d => new Date(d.timestamp) >= cutoffDate);
331
- }
332
-
333
- // Filter by caste
334
- if (caste) {
335
- decisions = decisions.filter(d => d.caste === caste);
336
- }
337
-
338
- // Calculate stats
339
- const bySource = {};
340
- const byModel = {};
341
-
342
- for (const decision of decisions) {
343
- // Count by source
344
- bySource[decision.source] = (bySource[decision.source] || 0) + 1;
345
-
346
- // Count by model
347
- byModel[decision.selected_model] = (byModel[decision.selected_model] || 0) + 1;
348
- }
349
-
350
- return {
351
- total_decisions: decisions.length,
352
- by_source: bySource,
353
- by_model: byModel,
354
- date_range: decisions.length > 0 ? {
355
- earliest: decisions[0].timestamp,
356
- latest: decisions[decisions.length - 1].timestamp
357
- } : null
358
- };
359
- }
360
-
361
- /**
362
- * Update tool usage counter for a spawn
363
- * @param {string} repoPath - Repository root path
364
- * @param {string} spawnId - Spawn identifier (timestamp from recordSpawnTelemetry)
365
- * @param {string} toolType - Tool type: 'read', 'grep', 'edit', 'bash'
366
- * @param {number} [count=1] - Number to increment by
367
- * @returns {boolean} True if updated successfully
368
- */
369
- function updateToolUsage(repoPath, spawnId, toolType, count = 1) {
370
- try {
371
- const data = loadTelemetry(repoPath);
372
-
373
- // Find the routing decision by timestamp
374
- const decision = data.routing_decisions.find(d => d.timestamp === spawnId);
375
-
376
- if (!decision) {
377
- return false;
378
- }
379
-
380
- // Initialize tools object if not exists
381
- if (!decision.tools) {
382
- decision.tools = { read: 0, grep: 0, edit: 0, bash: 0 };
383
- }
384
-
385
- // Validate tool type
386
- const validTools = ['read', 'grep', 'edit', 'bash'];
387
- if (!validTools.includes(toolType)) {
388
- return false;
389
- }
390
-
391
- // Increment the specified tool counter
392
- decision.tools[toolType] += count;
393
-
394
- // Save atomically
395
- return saveTelemetry(repoPath, data);
396
- } catch (error) {
397
- return false;
398
- }
399
- }
400
-
401
- /**
402
- * Update token usage (trophallaxis metrics) for a spawn
403
- * @param {string} repoPath - Repository root path
404
- * @param {string} spawnId - Spawn identifier (timestamp from recordSpawnTelemetry)
405
- * @param {number} tokens - Number of tokens to add (cumulative)
406
- * @returns {boolean} True if updated successfully
407
- */
408
- function updateTokenUsage(repoPath, spawnId, tokens) {
409
- try {
410
- const data = loadTelemetry(repoPath);
411
-
412
- // Find the routing decision by timestamp
413
- const decision = data.routing_decisions.find(d => d.timestamp === spawnId);
414
-
415
- if (!decision) {
416
- return false;
417
- }
418
-
419
- // Add tokens to existing count (cumulative)
420
- decision.tokens = (decision.tokens || 0) + tokens;
421
-
422
- // Save atomically
423
- return saveTelemetry(repoPath, data);
424
- } catch (error) {
425
- return false;
426
- }
427
- }
428
-
429
- module.exports = {
430
- recordSpawnTelemetry,
431
- updateSpawnOutcome,
432
- updateToolUsage,
433
- updateTokenUsage,
434
- getTelemetrySummary,
435
- getModelPerformance,
436
- getRoutingStats,
437
- loadTelemetry,
438
- saveTelemetry,
439
- TELEMETRY_VERSION,
440
- MAX_ROUTING_DECISIONS
441
- };
@@ -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 — `runtime/` is auto-populated on publish | 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
-