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,285 +0,0 @@
1
- #!/bin/bash
2
- # Aether Chamber Utilities
3
- # Manages entombed colonies — directory management, manifest generation, integrity verification
4
- #
5
- # Usage:
6
- # source .aether/utils/chamber-utils.sh
7
- # chamber_create <chamber_dir> <state_file> <goal> <phases_completed> <total_phases> <milestone> <version> <decisions_json> <learnings_json>
8
- # chamber_verify <chamber_dir>
9
- # chamber_list <chambers_root>
10
- # chamber_sanitize_goal <goal>
11
-
12
- set -euo pipefail
13
-
14
- # Initialize lock state before sourcing (file-lock.sh trap needs these)
15
- LOCK_ACQUIRED=${LOCK_ACQUIRED:-false}
16
- CURRENT_LOCK=${CURRENT_LOCK:-""}
17
-
18
- # Get script directory for sourcing (preserve parent SCRIPT_DIR if set)
19
- __chamber_utils_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
20
- AETHER_ROOT="$(cd "$__chamber_utils_dir/../.." && pwd 2>/dev/null || echo "$__chamber_utils_dir/../..")"
21
-
22
- # Use parent SCRIPT_DIR if available, otherwise use local
23
- SCRIPT_DIR="${SCRIPT_DIR:-$__chamber_utils_dir}"
24
-
25
- # Source atomic-write for safe file operations
26
- [[ -f "$SCRIPT_DIR/atomic-write.sh" ]] && source "$SCRIPT_DIR/atomic-write.sh"
27
-
28
- # --- JSON output helpers ---
29
- json_ok() { printf '{"ok":true,"result":%s}\n' "$1"; }
30
- json_err() {
31
- local message="${2:-$1}"
32
- printf '{"ok":false,"error":"%s"}\n' "$message" >&2
33
- exit 1
34
- }
35
-
36
- # --- Chamber Functions ---
37
-
38
- # Sanitize goal string for use in directory names
39
- # Converts to lowercase, replaces spaces/special chars with hyphens, removes non-alphanumeric
40
- chamber_sanitize_goal() {
41
- local goal="$1"
42
- # Convert to lowercase, replace spaces and special chars with hyphens
43
- local sanitized=$(echo "$goal" | tr '[:upper:]' '[:lower:]' | tr -cs '[:alnum:]' '-')
44
- # Remove leading/trailing hyphens
45
- sanitized=$(echo "$sanitized" | sed 's/^-//;s/-$//')
46
- # Limit length to avoid overly long directory names
47
- if [[ ${#sanitized} -gt 50 ]]; then
48
- sanitized="${sanitized:0:50}"
49
- fi
50
- echo "$sanitized"
51
- }
52
-
53
- # Compute SHA256 hash of a file
54
- # Returns hash string or empty on error
55
- chamber_compute_hash() {
56
- local file_path="$1"
57
- if [[ ! -f "$file_path" ]]; then
58
- echo ""
59
- return 1
60
- fi
61
-
62
- # Try sha256sum first (Linux), then shasum -a 256 (macOS)
63
- if command -v sha256sum >/dev/null 2>&1; then
64
- sha256sum "$file_path" | cut -d' ' -f1
65
- elif command -v shasum >/dev/null 2>&1; then
66
- shasum -a 256 "$file_path" | cut -d' ' -f1
67
- else
68
- echo ""
69
- return 1
70
- fi
71
- }
72
-
73
- # Create a new chamber (entomb a colony)
74
- # Arguments:
75
- # chamber_dir: Directory to create for this chamber
76
- # state_file: Path to COLONY_STATE.json to archive
77
- # goal: Colony goal string
78
- # phases_completed: Number of completed phases
79
- # total_phases: Total number of phases
80
- # milestone: Milestone name
81
- # version: Version string
82
- # decisions_json: JSON array of decisions
83
- # learnings_json: JSON array of learnings
84
- chamber_create() {
85
- local chamber_dir="$1"
86
- local state_file="$2"
87
- local goal="$3"
88
- local phases_completed="$4"
89
- local total_phases="$5"
90
- local milestone="$6"
91
- local version="$7"
92
- local decisions_json="$8"
93
- local learnings_json="$9"
94
-
95
- # Validate inputs
96
- [[ -z "$chamber_dir" ]] && json_err "chamber_dir is required"
97
- [[ -z "$state_file" ]] && json_err "state_file is required"
98
- [[ ! -f "$state_file" ]] && json_err "State file not found: $state_file"
99
-
100
- # Create chamber directory
101
- mkdir -p "$chamber_dir" || json_err "Failed to create chamber directory: $chamber_dir"
102
-
103
- # Copy state file to chamber
104
- local target_state="$chamber_dir/COLONY_STATE.json"
105
- cp "$state_file" "$target_state" || json_err "Failed to copy state file"
106
-
107
- # Compute hash of the copied state file
108
- local state_hash=$(chamber_compute_hash "$target_state")
109
- [[ -z "$state_hash" ]] && json_err "Failed to compute hash of state file"
110
-
111
- # Generate timestamp
112
- local entombed_at=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
113
-
114
- # Create manifest.json
115
- local manifest_file="$chamber_dir/manifest.json"
116
- local manifest_content=$(cat <<EOF
117
- {
118
- "entombed_at": "$entombed_at",
119
- "goal": $(echo "$goal" | jq -Rs '.[:-1]'),
120
- "phases_completed": $phases_completed,
121
- "total_phases": $total_phases,
122
- "milestone": $(echo "$milestone" | jq -Rs '.[:-1]'),
123
- "version": $(echo "$version" | jq -Rs '.[:-1]'),
124
- "decisions": $decisions_json,
125
- "learnings": $learnings_json,
126
- "files": {
127
- "COLONY_STATE.json": "$state_hash"
128
- }
129
- }
130
- EOF
131
- )
132
-
133
- # Write manifest atomically if atomic_write is available, otherwise direct
134
- if type atomic_write &>/dev/null; then
135
- atomic_write "$manifest_file" "$manifest_content" || json_err "Failed to write manifest"
136
- else
137
- echo "$manifest_content" > "$manifest_file" || json_err "Failed to write manifest"
138
- fi
139
-
140
- # Verify the manifest was written correctly
141
- if [[ ! -f "$manifest_file" ]]; then
142
- json_err "Manifest file not created"
143
- fi
144
-
145
- # Return success with chamber info
146
- local result=$(cat <<EOF
147
- {
148
- "chamber_dir": "$chamber_dir",
149
- "manifest": {
150
- "entombed_at": "$entombed_at",
151
- "goal": $(echo "$goal" | jq -Rs '.[:-1]'),
152
- "phases_completed": $phases_completed,
153
- "total_phases": $total_phases,
154
- "milestone": $(echo "$milestone" | jq -Rs '.[:-1]'),
155
- "version": $(echo "$version" | jq -Rs '.[:-1]')
156
- }
157
- }
158
- EOF
159
- )
160
-
161
- json_ok "$result"
162
- }
163
-
164
- # Verify chamber integrity
165
- # Arguments:
166
- # chamber_dir: Directory containing the chamber
167
- chamber_verify() {
168
- local chamber_dir="$1"
169
-
170
- # Validate inputs
171
- [[ -z "$chamber_dir" ]] && json_err "chamber_dir is required"
172
- [[ ! -d "$chamber_dir" ]] && json_err "Chamber directory not found: $chamber_dir"
173
-
174
- local manifest_file="$chamber_dir/manifest.json"
175
- local state_file="$chamber_dir/COLONY_STATE.json"
176
-
177
- # Check required files exist
178
- [[ ! -f "$manifest_file" ]] && json_err "Manifest not found in chamber"
179
- [[ ! -f "$state_file" ]] && json_err "COLONY_STATE.json not found in chamber"
180
-
181
- # Read stored hash from manifest
182
- local stored_hash=$(jq -r '.files["COLONY_STATE.json"] // empty' "$manifest_file" 2>/dev/null)
183
- [[ -z "$stored_hash" ]] && json_err "No hash found in manifest for COLONY_STATE.json"
184
-
185
- # Compute current hash
186
- local current_hash=$(chamber_compute_hash "$state_file")
187
- [[ -z "$current_hash" ]] && json_err "Failed to compute hash of state file"
188
-
189
- # Compare hashes
190
- if [[ "$stored_hash" != "$current_hash" ]]; then
191
- local result=$(cat <<EOF
192
- {
193
- "verified": false,
194
- "chamber_dir": "$chamber_dir",
195
- "error": "hash mismatch",
196
- "stored_hash": "$stored_hash",
197
- "current_hash": "$current_hash"
198
- }
199
- EOF
200
- )
201
- json_ok "$result"
202
- return 0
203
- fi
204
-
205
- # Verification passed
206
- local result=$(cat <<EOF
207
- {
208
- "verified": true,
209
- "chamber_dir": "$chamber_dir",
210
- "hash": "$current_hash"
211
- }
212
- EOF
213
- )
214
-
215
- json_ok "$result"
216
- }
217
-
218
- # List all chambers
219
- # Arguments:
220
- # chambers_root: Root directory containing chambers (default: .aether/chambers/)
221
- chamber_list() {
222
- local chambers_root="${1:-$AETHER_ROOT/.aether/chambers}"
223
-
224
- # Default to current directory's chambers if AETHER_ROOT not set
225
- if [[ -z "$chambers_root" || "$chambers_root" == "/.aether/chambers" ]]; then
226
- chambers_root="$(pwd)/.aether/chambers"
227
- fi
228
-
229
- # Check if chambers directory exists
230
- if [[ ! -d "$chambers_root" ]]; then
231
- json_ok "[]"
232
- return 0
233
- fi
234
-
235
- # Build array of chamber summaries
236
- local chambers="["
237
- local first=true
238
-
239
- # Find all directories in chambers_root
240
- while IFS= read -r -d '' chamber_dir; do
241
- local chamber_name=$(basename "$chamber_dir")
242
- local manifest_file="$chamber_dir/manifest.json"
243
-
244
- # Skip if no manifest
245
- [[ ! -f "$manifest_file" ]] && continue
246
-
247
- # Read manifest fields
248
- local goal=$(jq -r '.goal // "unknown"' "$manifest_file" 2>/dev/null)
249
- local milestone=$(jq -r '.milestone // "unknown"' "$manifest_file" 2>/dev/null)
250
- local phases_completed=$(jq -r '.phases_completed // 0' "$manifest_file" 2>/dev/null)
251
- local entombed_at=$(jq -r '.entombed_at // ""' "$manifest_file" 2>/dev/null)
252
-
253
- # Escape for JSON
254
- goal=$(echo "$goal" | jq -Rs '.[:-1]')
255
- milestone=$(echo "$milestone" | jq -Rs '.[:-1]')
256
-
257
- # Add comma if not first
258
- if [[ "$first" == "true" ]]; then
259
- first=false
260
- else
261
- chambers+=","
262
- fi
263
-
264
- chambers+=$(cat <<EOF
265
- {
266
- "name": $(echo "$chamber_name" | jq -Rs '.[:-1]'),
267
- "goal": $goal,
268
- "milestone": $milestone,
269
- "phases_completed": $phases_completed,
270
- "entombed_at": $(echo "$entombed_at" | jq -Rs '.[:-1]')
271
- }
272
- EOF
273
- )
274
- done < <(find "$chambers_root" -mindepth 1 -maxdepth 1 -type d -print0 2>/dev/null || true)
275
-
276
- chambers+="]"
277
-
278
- # Sort by entombed_at descending using jq
279
- local sorted=$(echo "$chambers" | jq 'sort_by(.entombed_at) | reverse')
280
-
281
- json_ok "$sorted"
282
- }
283
-
284
- # Export functions for use in other scripts
285
- export -f chamber_sanitize_goal chamber_compute_hash chamber_create chamber_verify chamber_list
@@ -1,122 +0,0 @@
1
- #!/bin/bash
2
- # Aether File Lock Utility
3
- # Implements file locking for concurrent colony access prevention
4
- #
5
- # Usage:
6
- # source .aether/utils/file-lock.sh
7
- # acquire_lock /path/to/file.lock
8
- # # ... critical section ...
9
- # release_lock /path/to/file.lock
10
-
11
- # Aether root detection - use git root if available, otherwise use current directory
12
- if git rev-parse --show-toplevel >/dev/null 2>&1; then
13
- AETHER_ROOT="$(git rev-parse --show-toplevel)"
14
- else
15
- AETHER_ROOT="$(pwd)"
16
- fi
17
-
18
- LOCK_DIR="$AETHER_ROOT/.aether/locks"
19
- LOCK_TIMEOUT=300 # 5 minutes max lock time
20
- LOCK_RETRY_INTERVAL=0.5 # Wait 500ms between retries
21
- LOCK_MAX_RETRIES=100 # Total 50 seconds max wait
22
-
23
- # Create lock directory if it doesn't exist
24
- mkdir -p "$LOCK_DIR"
25
-
26
- # Acquire a file lock using flock
27
- # Arguments: file_path (the resource to lock)
28
- # Returns: 0 on success, 1 on failure
29
- # Globals: LOCK_ACQUIRED (set to true when lock acquired)
30
- acquire_lock() {
31
- local file_path="$1"
32
- local lock_file="${LOCK_DIR}/$(basename "$file_path").lock"
33
- local lock_pid_file="${lock_file}.pid"
34
-
35
- # Check if lock file exists and is stale
36
- if [ -f "$lock_file" ]; then
37
- local lock_pid=$(cat "$lock_pid_file" 2>/dev/null || echo "")
38
- if [ -n "$lock_pid" ]; then
39
- # Check if process is still running
40
- if ! kill -0 "$lock_pid" 2>/dev/null; then
41
- echo "Lock stale (PID $lock_pid not running), cleaning up..."
42
- rm -f "$lock_file" "$lock_pid_file"
43
- fi
44
- fi
45
- fi
46
-
47
- # Try to acquire lock with timeout
48
- local retry_count=0
49
- while [ $retry_count -lt $LOCK_MAX_RETRIES ]; do
50
- # Try to create lock file atomically
51
- if (set -o noclobber; echo $$ > "$lock_file") 2>/dev/null; then
52
- echo $$ > "$lock_pid_file"
53
- export LOCK_ACQUIRED=true
54
- export CURRENT_LOCK="$lock_file"
55
- return 0
56
- fi
57
-
58
- retry_count=$((retry_count + 1))
59
- if [ $retry_count -lt $LOCK_MAX_RETRIES ]; then
60
- sleep $LOCK_RETRY_INTERVAL
61
- fi
62
- done
63
-
64
- echo "Failed to acquire lock for $file_path after $LOCK_MAX_RETRIES attempts"
65
- return 1
66
- }
67
-
68
- # Release a file lock
69
- # Arguments: None (uses CURRENT_LOCK from acquire_lock)
70
- release_lock() {
71
- if [ "$LOCK_ACQUIRED" = "true" ] && [ -n "$CURRENT_LOCK" ]; then
72
- rm -f "$CURRENT_LOCK" "${CURRENT_LOCK}.pid"
73
- export LOCK_ACQUIRED=false
74
- export CURRENT_LOCK=""
75
- return 0
76
- fi
77
- return 1
78
- }
79
-
80
- # Cleanup function for script exit
81
- cleanup_locks() {
82
- if [ "$LOCK_ACQUIRED" = "true" ]; then
83
- release_lock
84
- fi
85
- }
86
-
87
- # Register cleanup on exit
88
- trap cleanup_locks EXIT TERM INT
89
-
90
- # Check if a file is currently locked
91
- is_locked() {
92
- local file_path="$1"
93
- local lock_file="${LOCK_DIR}/$(basename "$file_path").lock"
94
- [ -f "$lock_file" ]
95
- }
96
-
97
- # Get PID of process holding lock
98
- get_lock_holder() {
99
- local file_path="$1"
100
- local lock_file="${LOCK_DIR}/$(basename "$file_path").lock.pid"
101
- cat "$lock_file" 2>/dev/null || echo ""
102
- }
103
-
104
- # Wait for lock to be released
105
- wait_for_lock() {
106
- local file_path="$1"
107
- local max_wait=${2:-$LOCK_TIMEOUT}
108
- local waited=0
109
-
110
- while is_locked "$file_path" && [ $waited -lt $max_wait ]; do
111
- sleep 1
112
- waited=$((waited + 1))
113
- done
114
-
115
- if [ $waited -ge $max_wait ]; then
116
- return 1
117
- fi
118
- return 0
119
- }
120
-
121
- # Export functions for use in other scripts
122
- export -f acquire_lock release_lock is_locked get_lock_holder wait_for_lock cleanup_locks