aether-colony 5.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/.aether/aether-utils.sh +3150 -3349
  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 +11 -11
  72. package/.aether/docs/README.md +32 -2
  73. package/.aether/docs/command-playbooks/README.md +23 -0
  74. package/.aether/docs/command-playbooks/build-complete.md +349 -0
  75. package/.aether/docs/command-playbooks/build-context.md +282 -0
  76. package/.aether/docs/command-playbooks/build-full.md +1682 -0
  77. package/.aether/docs/command-playbooks/build-prep.md +283 -0
  78. package/.aether/docs/command-playbooks/build-verify.md +405 -0
  79. package/.aether/docs/command-playbooks/build-wave.md +749 -0
  80. package/.aether/docs/command-playbooks/continue-advance.md +524 -0
  81. package/.aether/docs/command-playbooks/continue-finalize.md +447 -0
  82. package/.aether/docs/command-playbooks/continue-full.md +1724 -0
  83. package/.aether/docs/command-playbooks/continue-gates.md +686 -0
  84. package/.aether/docs/command-playbooks/continue-verify.md +406 -0
  85. package/.aether/docs/context-continuity.md +84 -0
  86. package/.aether/docs/disciplines/DISCIPLINES.md +9 -7
  87. package/.aether/docs/error-codes.md +1 -1
  88. package/.aether/docs/known-issues.md +34 -173
  89. package/.aether/docs/pheromones.md +86 -6
  90. package/.aether/docs/plans/pheromone-display-plan.md +257 -0
  91. package/.aether/docs/queen-commands.md +10 -9
  92. package/.aether/docs/source-of-truth-map.md +132 -0
  93. package/.aether/docs/xml-utilities.md +47 -0
  94. package/.aether/rules/aether-colony.md +23 -13
  95. package/.aether/scripts/incident-test-add.sh +47 -0
  96. package/.aether/scripts/weekly-audit.sh +79 -0
  97. package/.aether/skills/.index.json +649 -0
  98. package/.aether/skills/colony/.manifest.json +16 -0
  99. package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
  100. package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
  101. package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
  102. package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
  103. package/.aether/skills/colony/context-management/SKILL.md +80 -0
  104. package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
  105. package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
  106. package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
  107. package/.aether/skills/colony/state-safety/SKILL.md +84 -0
  108. package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
  109. package/.aether/skills/domain/.manifest.json +24 -0
  110. package/.aether/skills/domain/README.md +33 -0
  111. package/.aether/skills/domain/django/SKILL.md +49 -0
  112. package/.aether/skills/domain/docker/SKILL.md +52 -0
  113. package/.aether/skills/domain/golang/SKILL.md +52 -0
  114. package/.aether/skills/domain/graphql/SKILL.md +51 -0
  115. package/.aether/skills/domain/html-css/SKILL.md +48 -0
  116. package/.aether/skills/domain/nextjs/SKILL.md +45 -0
  117. package/.aether/skills/domain/nodejs/SKILL.md +53 -0
  118. package/.aether/skills/domain/postgresql/SKILL.md +53 -0
  119. package/.aether/skills/domain/prisma/SKILL.md +59 -0
  120. package/.aether/skills/domain/python/SKILL.md +50 -0
  121. package/.aether/skills/domain/rails/SKILL.md +52 -0
  122. package/.aether/skills/domain/react/SKILL.md +45 -0
  123. package/.aether/skills/domain/rest-api/SKILL.md +58 -0
  124. package/.aether/skills/domain/svelte/SKILL.md +47 -0
  125. package/.aether/skills/domain/tailwind/SKILL.md +45 -0
  126. package/.aether/skills/domain/testing/SKILL.md +53 -0
  127. package/.aether/skills/domain/typescript/SKILL.md +58 -0
  128. package/.aether/skills/domain/vue/SKILL.md +49 -0
  129. package/.aether/templates/QUEEN.md.template +23 -41
  130. package/.aether/templates/colony-state-reset.jq.template +1 -0
  131. package/.aether/templates/colony-state.template.json +4 -0
  132. package/.aether/templates/learning-observations.template.json +6 -0
  133. package/.aether/templates/midden.template.json +13 -0
  134. package/.aether/templates/pheromones.template.json +6 -0
  135. package/.aether/templates/session.template.json +9 -0
  136. package/.aether/utils/atomic-write.sh +63 -17
  137. package/.aether/utils/chamber-utils.sh +145 -2
  138. package/.aether/utils/emoji-audit.sh +166 -0
  139. package/.aether/utils/error-handler.sh +21 -7
  140. package/.aether/utils/file-lock.sh +182 -27
  141. package/.aether/utils/flag.sh +267 -0
  142. package/.aether/utils/hive.sh +572 -0
  143. package/.aether/utils/learning.sh +1928 -0
  144. package/.aether/utils/midden.sh +342 -0
  145. package/.aether/utils/oracle/oracle.md +168 -0
  146. package/.aether/utils/oracle/oracle.sh +1023 -0
  147. package/.aether/utils/pheromone.sh +2029 -0
  148. package/.aether/utils/queen.sh +1698 -0
  149. package/.aether/utils/scan.sh +860 -0
  150. package/.aether/utils/semantic-cli.sh +10 -8
  151. package/.aether/utils/session.sh +552 -0
  152. package/.aether/utils/skills.sh +509 -0
  153. package/.aether/utils/spawn-tree.sh +103 -271
  154. package/.aether/utils/spawn.sh +260 -0
  155. package/.aether/utils/state-api.sh +199 -0
  156. package/.aether/utils/state-loader.sh +8 -6
  157. package/.aether/utils/suggest.sh +611 -0
  158. package/.aether/utils/swarm-display.sh +10 -1
  159. package/.aether/utils/swarm.sh +1004 -0
  160. package/.aether/utils/watch-spawn-tree.sh +11 -2
  161. package/.aether/utils/xml-compose.sh +2 -2
  162. package/.aether/utils/xml-convert.sh +9 -5
  163. package/.aether/utils/xml-core.sh +5 -9
  164. package/.aether/utils/xml-query.sh +4 -4
  165. package/.aether/workers.md +86 -67
  166. package/.claude/agents/ant/aether-ambassador.md +2 -1
  167. package/.claude/agents/ant/aether-archaeologist.md +6 -1
  168. package/.claude/agents/ant/aether-architect.md +236 -0
  169. package/.claude/agents/ant/aether-auditor.md +6 -1
  170. package/.claude/agents/ant/aether-builder.md +38 -1
  171. package/.claude/agents/ant/aether-chaos.md +2 -1
  172. package/.claude/agents/ant/aether-chronicler.md +1 -0
  173. package/.claude/agents/ant/aether-gatekeeper.md +6 -1
  174. package/.claude/agents/ant/aether-includer.md +1 -0
  175. package/.claude/agents/ant/aether-keeper.md +1 -0
  176. package/.claude/agents/ant/aether-measurer.md +6 -1
  177. package/.claude/agents/ant/aether-oracle.md +237 -0
  178. package/.claude/agents/ant/aether-probe.md +2 -1
  179. package/.claude/agents/ant/aether-queen.md +6 -1
  180. package/.claude/agents/ant/aether-route-setter.md +6 -1
  181. package/.claude/agents/ant/aether-sage.md +68 -3
  182. package/.claude/agents/ant/aether-scout.md +38 -1
  183. package/.claude/agents/ant/aether-surveyor-disciplines.md +2 -1
  184. package/.claude/agents/ant/aether-surveyor-nest.md +2 -1
  185. package/.claude/agents/ant/aether-surveyor-pathogens.md +2 -1
  186. package/.claude/agents/ant/aether-surveyor-provisions.md +2 -1
  187. package/.claude/agents/ant/aether-tracker.md +6 -1
  188. package/.claude/agents/ant/aether-watcher.md +37 -1
  189. package/.claude/agents/ant/aether-weaver.md +2 -1
  190. package/.claude/commands/ant/archaeology.md +1 -8
  191. package/.claude/commands/ant/build.md +43 -1159
  192. package/.claude/commands/ant/chaos.md +1 -14
  193. package/.claude/commands/ant/colonize.md +1 -14
  194. package/.claude/commands/ant/continue.md +40 -1026
  195. package/.claude/commands/ant/council.md +9 -16
  196. package/.claude/commands/ant/data-clean.md +81 -0
  197. package/.claude/commands/ant/dream.md +12 -9
  198. package/.claude/commands/ant/entomb.md +62 -87
  199. package/.claude/commands/ant/export-signals.md +57 -0
  200. package/.claude/commands/ant/feedback.md +18 -0
  201. package/.claude/commands/ant/flag.md +12 -0
  202. package/.claude/commands/ant/flags.md +22 -8
  203. package/.claude/commands/ant/focus.md +18 -0
  204. package/.claude/commands/ant/help.md +40 -8
  205. package/.claude/commands/ant/history.md +3 -0
  206. package/.claude/commands/ant/import-signals.md +71 -0
  207. package/.claude/commands/ant/init.md +316 -191
  208. package/.claude/commands/ant/insert-phase.md +101 -0
  209. package/.claude/commands/ant/interpret.md +11 -0
  210. package/.claude/commands/ant/lay-eggs.md +167 -158
  211. package/.claude/commands/ant/maturity.md +22 -11
  212. package/.claude/commands/ant/memory-details.md +77 -0
  213. package/.claude/commands/ant/migrate-state.md +6 -0
  214. package/.claude/commands/ant/oracle.md +317 -62
  215. package/.claude/commands/ant/organize.md +10 -5
  216. package/.claude/commands/ant/patrol.md +620 -0
  217. package/.claude/commands/ant/pause-colony.md +8 -22
  218. package/.claude/commands/ant/phase.md +26 -37
  219. package/.claude/commands/ant/pheromones.md +156 -0
  220. package/.claude/commands/ant/plan.md +175 -52
  221. package/.claude/commands/ant/preferences.md +65 -0
  222. package/.claude/commands/ant/redirect.md +18 -0
  223. package/.claude/commands/ant/resume-colony.md +34 -20
  224. package/.claude/commands/ant/resume.md +51 -7
  225. package/.claude/commands/ant/run.md +195 -0
  226. package/.claude/commands/ant/seal.md +497 -78
  227. package/.claude/commands/ant/skill-create.md +286 -0
  228. package/.claude/commands/ant/status.md +127 -1
  229. package/.claude/commands/ant/swarm.md +11 -23
  230. package/.claude/commands/ant/tunnels.md +1 -0
  231. package/.claude/commands/ant/update.md +58 -135
  232. package/.claude/commands/ant/verify-castes.md +90 -42
  233. package/.claude/commands/ant/watch.md +1 -0
  234. package/.opencode/agents/aether-ambassador.md +1 -1
  235. package/.opencode/agents/aether-architect.md +133 -0
  236. package/.opencode/agents/aether-builder.md +3 -3
  237. package/.opencode/agents/aether-oracle.md +137 -0
  238. package/.opencode/agents/aether-queen.md +1 -1
  239. package/.opencode/agents/aether-route-setter.md +1 -1
  240. package/.opencode/agents/aether-scout.md +1 -1
  241. package/.opencode/agents/aether-surveyor-disciplines.md +6 -1
  242. package/.opencode/agents/aether-surveyor-nest.md +6 -1
  243. package/.opencode/agents/aether-surveyor-pathogens.md +6 -1
  244. package/.opencode/agents/aether-surveyor-provisions.md +6 -1
  245. package/.opencode/agents/aether-tracker.md +1 -1
  246. package/.opencode/agents/aether-watcher.md +1 -1
  247. package/.opencode/agents/aether-weaver.md +1 -1
  248. package/.opencode/commands/ant/archaeology.md +7 -14
  249. package/.opencode/commands/ant/build.md +54 -88
  250. package/.opencode/commands/ant/chaos.md +7 -24
  251. package/.opencode/commands/ant/colonize.md +8 -17
  252. package/.opencode/commands/ant/continue.md +595 -66
  253. package/.opencode/commands/ant/council.md +11 -22
  254. package/.opencode/commands/ant/data-clean.md +77 -0
  255. package/.opencode/commands/ant/dream.md +15 -17
  256. package/.opencode/commands/ant/entomb.md +28 -18
  257. package/.opencode/commands/ant/export-signals.md +54 -0
  258. package/.opencode/commands/ant/feedback.md +24 -5
  259. package/.opencode/commands/ant/flag.md +16 -4
  260. package/.opencode/commands/ant/flags.md +24 -10
  261. package/.opencode/commands/ant/focus.md +22 -5
  262. package/.opencode/commands/ant/help.md +41 -8
  263. package/.opencode/commands/ant/history.md +9 -0
  264. package/.opencode/commands/ant/import-signals.md +68 -0
  265. package/.opencode/commands/ant/init.md +365 -156
  266. package/.opencode/commands/ant/insert-phase.md +107 -0
  267. package/.opencode/commands/ant/interpret.md +16 -0
  268. package/.opencode/commands/ant/lay-eggs.md +184 -112
  269. package/.opencode/commands/ant/maturity.md +18 -2
  270. package/.opencode/commands/ant/memory-details.md +83 -0
  271. package/.opencode/commands/ant/migrate-state.md +12 -0
  272. package/.opencode/commands/ant/oracle.md +322 -67
  273. package/.opencode/commands/ant/organize.md +14 -12
  274. package/.opencode/commands/ant/patrol.md +626 -0
  275. package/.opencode/commands/ant/pause-colony.md +12 -29
  276. package/.opencode/commands/ant/phase.md +30 -40
  277. package/.opencode/commands/ant/pheromones.md +162 -0
  278. package/.opencode/commands/ant/plan.md +184 -56
  279. package/.opencode/commands/ant/preferences.md +71 -0
  280. package/.opencode/commands/ant/redirect.md +22 -5
  281. package/.opencode/commands/ant/resume-colony.md +38 -27
  282. package/.opencode/commands/ant/resume.md +71 -20
  283. package/.opencode/commands/ant/run.md +201 -0
  284. package/.opencode/commands/ant/seal.md +230 -25
  285. package/.opencode/commands/ant/skill-create.md +63 -0
  286. package/.opencode/commands/ant/status.md +124 -31
  287. package/.opencode/commands/ant/swarm.md +3 -345
  288. package/.opencode/commands/ant/tunnels.md +3 -9
  289. package/.opencode/commands/ant/update.md +63 -127
  290. package/.opencode/commands/ant/verify-castes.md +96 -42
  291. package/.opencode/commands/ant/watch.md +7 -0
  292. package/CHANGELOG.md +278 -1
  293. package/README.md +188 -340
  294. package/bin/cli.js +236 -429
  295. package/bin/generate-commands.js +186 -0
  296. package/bin/generate-commands.sh +128 -89
  297. package/bin/lib/spawn-logger.js +0 -15
  298. package/bin/lib/update-transaction.js +285 -35
  299. package/bin/npx-install.js +178 -0
  300. package/bin/validate-package.sh +85 -3
  301. package/package.json +7 -3
  302. package/.aether/CONTEXT.md +0 -160
  303. package/.aether/docs/QUEEN.md +0 -84
  304. package/.aether/exchange/colony-registry.xml +0 -11
  305. package/.aether/exchange/pheromones.xml +0 -87
  306. package/.aether/exchange/queen-wisdom.xml +0 -14
  307. package/.aether/model-profiles.yaml +0 -100
  308. package/.aether/utils/spawn-with-model.sh +0 -56
  309. package/bin/lib/model-profiles.js +0 -445
  310. package/bin/lib/model-verify.js +0 -288
  311. package/bin/lib/proxy-health.js +0 -253
  312. package/bin/lib/telemetry.js +0 -441
@@ -0,0 +1,63 @@
1
+ name: "ant:preferences"
2
+ description: "Add or list user preferences in hub QUEEN.md"
3
+ description_opencode: "📝🐜👑🐜📝 Add or list user preferences in hub QUEEN.md"
4
+ body: |
5
+ You are the **Queen**. Manage user preferences in the hub `~/.aether/QUEEN.md`.
6
+
7
+ ## Instructions
8
+
9
+ The input is: `{{ARGUMENTS}}`
10
+
11
+ ### Step 1: Validate
12
+
13
+ If `{{ARGUMENTS}}` empty -> show usage: `/ant:preferences "preference text"` or `/ant:preferences --list`, stop.
14
+
15
+ ### Step 2: Route
16
+
17
+ - `{{ARGUMENTS}}` is `--list` -> **List mode**
18
+ - Otherwise -> **Add mode**
19
+
20
+ ### List Mode
21
+
22
+ Read `~/.aether/QUEEN.md`. If missing -> "No hub QUEEN.md found. Run /ant:init to create one.", stop.
23
+
24
+ Find the `## User Preferences` section (with or without emoji). Extract bullet lines (`- ...`) between that heading and the next `---`.
25
+
26
+ If user-added bullets exist, output each. Otherwise:
27
+ ```
28
+ No user preferences set yet.
29
+ Add one with: /ant:preferences "your preference"
30
+ ```
31
+ Stop.
32
+
33
+ ### Add Mode
34
+
35
+ Set `PREF` to `{{ARGUMENTS}}` (strip surrounding quotes).
36
+ If length > 500 chars -> "Preference too long (max 500 chars)", stop.
37
+
38
+ Read `~/.aether/QUEEN.md`. If missing -> "No hub QUEEN.md found. Run /ant:init to create one.", stop.
39
+
40
+ **If `## User Preferences` section exists** (with or without emoji):
41
+ 1. Remove `*No user preferences recorded yet.*` placeholder if present
42
+ 2. Append `- $PREF` at end of section (before next `---`)
43
+
44
+ **If section missing** (migration case):
45
+ 1. Insert before `## Evolution Log` (with or without emoji):
46
+ ```
47
+ ## User Preferences
48
+
49
+ - $PREF
50
+
51
+ ---
52
+
53
+ ```
54
+
55
+ Update METADATA comment: increment `stats.total_user_prefs` by 1.
56
+
57
+ ### Confirm
58
+
59
+ Output (2 lines, no banners):
60
+ ```
61
+ Preference saved to hub QUEEN.md
62
+ "$PREF"
63
+ ```
@@ -0,0 +1,123 @@
1
+ name: "ant:redirect"
2
+ description: "Emit REDIRECT signal to warn colony away from patterns"
3
+ description_opencode: "⚠️🐜🚧🐜⚠️ Emit REDIRECT signal to warn colony away from patterns"
4
+ body: |
5
+ {{#claude}}
6
+ You are the **Queen**. Emit a REDIRECT pheromone signal.
7
+ {{/claude}}
8
+ {{#opencode}}
9
+ You are the **Queen**. Add an AVOID constraint.
10
+ {{/opencode}}
11
+
12
+ ## Instructions
13
+
14
+ The pattern to avoid is: `{{ARGUMENTS}}`
15
+
16
+ ### Step 1: Validate
17
+
18
+ If `{{ARGUMENTS}}` empty -> show usage: `/ant:redirect <pattern to avoid>`, stop.
19
+ If content > 500 chars -> "Redirect content too long (max 500 chars)", stop.
20
+
21
+ {{#claude}}
22
+ Parse optional flags from `$ARGUMENTS`:
23
+ - `--ttl <value>`: signal lifetime (e.g., `2h`, `1d`, `7d`). Default: `phase_end`.
24
+ - Strip flags from content before using it as the pattern.
25
+ {{/claude}}
26
+
27
+ ### Step 2: Write Signal
28
+
29
+ Read `.aether/data/COLONY_STATE.json`.
30
+ If `goal: null` -> "No colony initialized.", stop.
31
+
32
+ {{#claude}}
33
+ {{TOOL_PREFIX "Setting colony redirect..."}}
34
+ ```bash
35
+ bash .aether/aether-utils.sh pheromone-write REDIRECT "<content>" --strength 0.9 --reason "User warned colony away from pattern" --ttl <ttl>
36
+ ```
37
+
38
+ Parse the returned JSON for the signal ID.
39
+
40
+ ### Step 2.5: Update Context Document
41
+
42
+ {{TOOL_PREFIX "Updating context document..."}}
43
+ ```bash
44
+ bash .aether/aether-utils.sh context-update constraint redirect "<content>" "user" 2>/dev/null || true
45
+ ```
46
+
47
+ ### Step 3: Get Active Counts
48
+
49
+ {{TOOL_PREFIX "Counting active signals..."}}
50
+ ```bash
51
+ bash .aether/aether-utils.sh pheromone-count
52
+ ```
53
+
54
+ ### Step 4: Confirm
55
+
56
+ Output (3-4 lines, no banners):
57
+ ```
58
+ REDIRECT signal emitted
59
+ Avoid: "<content truncated to 60 chars>"
60
+ Strength: 0.9 | Expires: <phase end or ttl value>
61
+ Active signals: <focus_count> FOCUS, <redirect_count> REDIRECT, <feedback_count> FEEDBACK
62
+ ```
63
+ {{/claude}}
64
+ {{#opencode}}
65
+ Read `.aether/data/constraints.json`. If file doesn't exist, create it with:
66
+ ```json
67
+ {"version": "1.0", "focus": [], "constraints": []}
68
+ ```
69
+
70
+ Generate constraint ID: `c_<unix_timestamp_ms>`
71
+
72
+ Append to `constraints` array:
73
+ ```json
74
+ {
75
+ "id": "<generated_id>",
76
+ "type": "AVOID",
77
+ "content": "<pattern to avoid>",
78
+ "source": "user:redirect",
79
+ "created_at": "<ISO-8601 timestamp>"
80
+ }
81
+ ```
82
+
83
+ If `constraints` array exceeds 10 entries, remove the oldest entries to keep only 10.
84
+
85
+ Write constraints.json.
86
+
87
+ **Write pheromone signal and update context:**
88
+ ```bash
89
+ bash .aether/aether-utils.sh pheromone-write REDIRECT "$normalized_args" --strength 0.9 --reason "User warned colony away from pattern" 2>/dev/null || true
90
+ bash .aether/aether-utils.sh context-update constraint redirect "$normalized_args" "user" 2>/dev/null || true
91
+ ```
92
+
93
+ ### Step 3: Confirm
94
+
95
+ Output header:
96
+
97
+ ```
98
+ ⚠️🐜🚧🐜⚠️ ═══════════════════════════════════════════════════
99
+ R E D I R E C T S I G N A L
100
+ ═══════════════════════════════════════════════════ ⚠️🐜🚧🐜⚠️
101
+ ```
102
+
103
+ Then output:
104
+ ```
105
+ 🚫 REDIRECT signal emitted
106
+
107
+ Avoid: "{content preview}"
108
+
109
+ 🐜 Colony warned away from this pattern.
110
+ ```
111
+ {{/opencode}}
112
+
113
+ {{#claude}}
114
+ ### Step 5: Next Up
115
+
116
+ Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
117
+ ```bash
118
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
119
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
120
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
121
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
122
+ ```
123
+ {{/claude}}
@@ -0,0 +1,373 @@
1
+ name: "ant:resume-colony"
2
+ description: "🚦➡️🐜💨💨 Resume colony from saved session - restores all state"
3
+ body_claude: |
4
+ You are the **Queen Ant Colony**. Restore state from a paused session.
5
+
6
+ ## Instructions
7
+
8
+ Parse `$ARGUMENTS`:
9
+ - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
10
+ - Otherwise: set `visual_mode = true`
11
+
12
+ ### Step 0: Initialize Visual Mode (if enabled)
13
+
14
+ If `visual_mode` is true, run using the Bash tool with description "Initializing resume display...":
15
+ ### Step 0.5: Version Check (Non-blocking)
16
+
17
+ Run using the Bash tool with description "Checking colony version...": `bash .aether/aether-utils.sh version-check-cached 2>/dev/null || true`
18
+
19
+ If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
20
+
21
+ ### Step 1: Load State and Validate
22
+
23
+ Run using the Bash tool with description "Restoring colony session...": `bash .aether/aether-utils.sh load-state`
24
+
25
+ If successful:
26
+ 1. Parse state from result
27
+ 2. If goal is null: Show "No colony state found..." message and stop
28
+ 3. Check if paused flag is true - if not, note "Colony was not paused, but resuming anyway"
29
+ 4. Extract all state fields for display
30
+
31
+ Keep state loaded (don't unload yet) - we'll need it for the full display.
32
+
33
+ ### Step 2: Compute Active Signals
34
+
35
+ Run using the Bash tool with description "Loading active pheromones...":
36
+ ```bash
37
+ bash .aether/aether-utils.sh pheromone-read
38
+ ```
39
+
40
+ Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
41
+ If empty, treat as "no active pheromones."
42
+
43
+ ### Step 2.5: Load Survey Context (Advisory)
44
+
45
+ Run using the Bash tool with description "Loading survey context...":
46
+ ```bash
47
+ survey_docs=$(ls -1 .aether/data/survey/*.md 2>/dev/null | wc -l | tr -d ' ')
48
+ survey_latest=$(ls -t .aether/data/survey/*.md 2>/dev/null | head -1)
49
+ if [[ -n "$survey_latest" ]]; then
50
+ now_epoch=$(date +%s)
51
+ modified_epoch=$(stat -f %m "$survey_latest" 2>/dev/null || stat -c %Y "$survey_latest" 2>/dev/null || echo 0)
52
+ survey_age_days=$(( (now_epoch - modified_epoch) / 86400 ))
53
+ else
54
+ survey_age_days=-1
55
+ fi
56
+ echo "survey_docs=$survey_docs"
57
+ echo "survey_age_days=$survey_age_days"
58
+ ```
59
+
60
+ Interpretation:
61
+ - `survey_docs == 0` => survey missing
62
+ - `survey_age_days > 14` => survey stale
63
+ - otherwise survey fresh
64
+
65
+ ### Step 3: Display Restored State
66
+
67
+ **Note:** Other ant commands (`/ant:status`, `/ant:build`, `/ant:plan`, `/ant:continue`) also show brief resumption context automatically. This full resume provides complete state restoration for explicit session recovery.
68
+
69
+ Output header:
70
+
71
+ ```
72
+ 🚦➡️🐜💨💨 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
73
+ C O L O N Y R E S U M E D
74
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🚦➡️🐜💨💨
75
+ ```
76
+
77
+ Read the .aether/HANDOFF.md for context about what was happening, then display:
78
+
79
+ ```
80
+ +=====================================================+
81
+ | AETHER COLONY :: RESUMED |
82
+ +=====================================================+
83
+
84
+ Goal: "<goal>"
85
+ State: <state>
86
+ Session: <session_id>
87
+ Phase: <current_phase>
88
+
89
+ ACTIVE PHEROMONES
90
+ {TYPE padded to 10 chars} [{bar of 20 chars using filled/empty}] {current_strength:.2f}
91
+ "{content}"
92
+
93
+ Where the bar uses round(current_strength * 20) filled characters and spaces for the remainder.
94
+
95
+ If no active signals: (no active pheromones)
96
+
97
+ PHASE PROGRESS
98
+ Phase <id>: <name> [<status>]
99
+ (list all phases from plan.phases)
100
+
101
+ SURVEY CONTEXT
102
+ Docs: <survey_docs>
103
+ Age: <survey_age_days> days
104
+ Status: <fresh|stale|missing>
105
+ Recommendation: <if missing or stale, suggest /ant:colonize --force-resurvey>
106
+
107
+ CONTEXT FROM HANDOFF
108
+ <summarize what was happening from .aether/HANDOFF.md>
109
+
110
+ NEXT ACTIONS
111
+ ```
112
+
113
+ Route to next action based on state:
114
+ - If state is `READY` and there's a pending phase -> suggest `/ant:build <phase>`
115
+ - If state is `EXECUTING` -> note that a build was interrupted, suggest restarting with `/ant:build <phase>`
116
+ - If state is `PLANNING` -> note that planning was interrupted, suggest `/ant:plan`
117
+ - Otherwise -> suggest `/ant:status` for full overview
118
+
119
+ ### Step 6: Clear Paused State and Cleanup
120
+
121
+ Use Write tool to update COLONY_STATE.json:
122
+ - Remove or set to false: `"paused": false`
123
+ - Remove: `"paused_at"` field
124
+ - Update last_updated timestamp
125
+ - Add event: `{timestamp, type: "colony_resumed", worker: "resume", details: "Session resumed"}`
126
+
127
+ Use Bash tool with description "Cleaning up handoff file..." to remove HANDOFF.md: `rm -f .aether/HANDOFF.md`
128
+
129
+ Run using the Bash tool with description "Releasing colony lock...": `bash .aether/aether-utils.sh unload-state` to release lock.
130
+
131
+ ### Step 7: Next Up
132
+
133
+ Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
134
+ ```bash
135
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
136
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
137
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
138
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
139
+ ```
140
+
141
+ ---
142
+
143
+ ## Auto-Recovery Pattern Reference
144
+
145
+ The colony uses a tiered auto-recovery pattern to maintain context across session boundaries:
146
+
147
+ ### Format Tiers
148
+
149
+ | Context | Format | When Used |
150
+ |---------|--------|-----------|
151
+ | Brief | `🔄 Resuming: Phase X - Name` | Action commands (build, plan, continue) |
152
+ | Extended | Brief + last activity timestamp | Status command |
153
+ | Full | Complete state with pheromones, workers, context | resume-colony command |
154
+
155
+ ### Brief Format (Action Commands)
156
+
157
+ Used by `/ant:build`, `/ant:plan`, `/ant:continue`:
158
+
159
+ ```
160
+ 🔄 Resuming: Phase <current_phase> - <phase_name>
161
+ ```
162
+
163
+ Provides minimal orientation before executing the command's primary function.
164
+
165
+ ### Extended Format (Status Command)
166
+
167
+ Used by `/ant:status` Step 1.5:
168
+
169
+ ```
170
+ 🔄 Resuming: Phase <current_phase> - <phase_name>
171
+ Last activity: <last_event_timestamp>
172
+ ```
173
+
174
+ Adds temporal context to help gauge session staleness.
175
+
176
+ ### Full Format (Resume-Colony)
177
+
178
+ Used by `/ant:resume-colony`:
179
+
180
+ - Complete header with ASCII art
181
+ - Goal, state, session ID, phase
182
+ - Active pheromones with strength bars
183
+ - Worker status by caste
184
+ - Phase progress for all phases
185
+ - Handoff context summary
186
+ - Next action routing
187
+
188
+ ### Implementation Notes
189
+
190
+ 1. **State Source:** All formats read from `.aether/data/COLONY_STATE.json`
191
+ 2. **Phase Name:** Extracted from `plan.phases[current_phase - 1].name`
192
+ 3. **Last Activity:** Parsed from the last entry in `events` array
193
+ 4. **Edge Cases:** Handle missing phase names, empty events, phase 0
194
+
195
+ body_opencode: |
196
+ You are the **Queen Ant Colony**. Restore state from a paused session.
197
+
198
+ ## Instructions
199
+
200
+ Parse `$normalized_args`:
201
+ - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
202
+ - Otherwise: set `visual_mode = true`
203
+
204
+ ### Step 0.5: Version Check (Non-blocking)
205
+
206
+ Run using the Bash tool: `bash .aether/aether-utils.sh version-check 2>/dev/null || true`
207
+
208
+ If the command succeeds and the JSON result contains a non-empty string, display it as a one-line notice. Proceed regardless of outcome.
209
+
210
+ ### Step 1: Load State and Validate
211
+
212
+ Run using Bash tool: `bash .aether/aether-utils.sh load-state`
213
+
214
+ If successful:
215
+ 1. Parse state from result
216
+ 2. If goal is null: Show "No colony state found..." message and stop
217
+ 3. Check if paused flag is true - if not, note "Colony was not paused, but resuming anyway"
218
+ 4. Extract all state fields for display
219
+
220
+ Keep state loaded (don't unload yet) - we'll need it for the full display.
221
+
222
+ ### Step 2: Compute Active Signals
223
+
224
+ Run using the Bash tool:
225
+ ```bash
226
+ bash .aether/aether-utils.sh pheromone-read
227
+ ```
228
+
229
+ Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
230
+ If empty, treat as "no active pheromones."
231
+
232
+ ### Step 2.5: Load Survey Context (Advisory)
233
+
234
+ Run:
235
+ ```bash
236
+ survey_docs=$(ls -1 .aether/data/survey/*.md 2>/dev/null | wc -l | tr -d ' ')
237
+ survey_latest=$(ls -t .aether/data/survey/*.md 2>/dev/null | head -1)
238
+ if [[ -n "$survey_latest" ]]; then
239
+ now_epoch=$(date +%s)
240
+ modified_epoch=$(stat -f %m "$survey_latest" 2>/dev/null || stat -c %Y "$survey_latest" 2>/dev/null || echo 0)
241
+ survey_age_days=$(( (now_epoch - modified_epoch) / 86400 ))
242
+ else
243
+ survey_age_days=-1
244
+ fi
245
+ echo "survey_docs=$survey_docs"
246
+ echo "survey_age_days=$survey_age_days"
247
+ ```
248
+
249
+ Interpretation:
250
+ - `survey_docs == 0` => survey missing
251
+ - `survey_age_days > 14` => survey stale
252
+ - otherwise survey fresh
253
+
254
+ ### Step 3: Display Restored State
255
+
256
+ **Note:** Other ant commands (`/ant:status`, `/ant:build`, `/ant:plan`, `/ant:continue`) also show brief resumption context automatically. This full resume provides complete state restoration for explicit session recovery.
257
+
258
+ Output header:
259
+
260
+ ```
261
+ 🚦➡️🐜💨💨 ═══════════════════════════════════════════════════
262
+ C O L O N Y R E S U M E D
263
+ ═══════════════════════════════════════════════════ 🚦➡️🐜💨💨
264
+ ```
265
+
266
+ Read the .aether/HANDOFF.md for context about what was happening, then display:
267
+
268
+ ```
269
+ +=====================================================+
270
+ | AETHER COLONY :: RESUMED |
271
+ +=====================================================+
272
+
273
+ Goal: "<goal>"
274
+ State: <state>
275
+ Session: <session_id>
276
+ Phase: <current_phase>
277
+
278
+ ACTIVE PHEROMONES
279
+ {TYPE padded to 10 chars} [{bar of 20 chars using filled/empty}] {current_strength:.2f}
280
+ "{content}"
281
+
282
+ Where the bar uses round(current_strength * 20) filled characters and spaces for the remainder.
283
+
284
+ If no active signals: (no active pheromones)
285
+
286
+ PHASE PROGRESS
287
+ Phase <id>: <name> [<status>]
288
+ (list all phases from plan.phases)
289
+
290
+ SURVEY CONTEXT
291
+ Docs: <survey_docs>
292
+ Age: <survey_age_days> days
293
+ Status: <fresh|stale|missing>
294
+ Recommendation: <if missing or stale, suggest /ant:colonize --force-resurvey>
295
+
296
+ CONTEXT FROM HANDOFF
297
+ <summarize what was happening from .aether/HANDOFF.md>
298
+
299
+ NEXT ACTIONS
300
+ ```
301
+
302
+ Route to next action based on state:
303
+ - If state is `READY` and there's a pending phase -> suggest `/ant:build <phase>`
304
+ - If state is `EXECUTING` -> note that a build was interrupted, suggest restarting with `/ant:build <phase>`
305
+ - If state is `PLANNING` -> note that planning was interrupted, suggest `/ant:plan`
306
+ - Otherwise -> suggest `/ant:status` for full overview
307
+
308
+ ### Step 6: Clear Paused State and Cleanup
309
+
310
+ Use Write tool to update COLONY_STATE.json:
311
+ - Remove or set to false: `"paused": false`
312
+ - Remove: `"paused_at"` field
313
+ - Update last_updated timestamp
314
+ - Add event: `{timestamp, type: "colony_resumed", worker: "resume", details: "Session resumed"}`
315
+
316
+ Use Bash tool to remove HANDOFF.md: `rm -f .aether/HANDOFF.md`
317
+
318
+ Run: `bash .aether/aether-utils.sh unload-state` to release lock.
319
+
320
+ ---
321
+
322
+ ## Auto-Recovery Pattern Reference
323
+
324
+ The colony uses a tiered auto-recovery pattern to maintain context across session boundaries:
325
+
326
+ ### Format Tiers
327
+
328
+ | Context | Format | When Used |
329
+ |---------|--------|-----------|
330
+ | Brief | `🔄 Resuming: Phase X - Name` | Action commands (build, plan, continue) |
331
+ | Extended | Brief + last activity timestamp | Status command |
332
+ | Full | Complete state with pheromones, workers, context | resume-colony command |
333
+
334
+ ### Brief Format (Action Commands)
335
+
336
+ Used by `/ant:build`, `/ant:plan`, `/ant:continue`:
337
+
338
+ ```
339
+ 🔄 Resuming: Phase <current_phase> - <phase_name>
340
+ ```
341
+
342
+ Provides minimal orientation before executing the command's primary function.
343
+
344
+ ### Extended Format (Status Command)
345
+
346
+ Used by `/ant:status` Step 1.5:
347
+
348
+ ```
349
+ 🔄 Resuming: Phase <current_phase> - <phase_name>
350
+ Last activity: <last_event_timestamp>
351
+ ```
352
+
353
+ Adds temporal context to help gauge session staleness.
354
+
355
+ ### Full Format (Resume-Colony)
356
+
357
+ Used by `/ant:resume-colony`:
358
+
359
+ - Complete header with ASCII art
360
+ - Goal, state, session ID, phase
361
+ - Active pheromones with strength bars
362
+ - Worker status by caste
363
+ - Phase progress for all phases
364
+ - Handoff context summary
365
+ - Next action routing
366
+
367
+ ### Implementation Notes
368
+
369
+ 1. **State Source:** All formats read from `.aether/data/COLONY_STATE.json`
370
+ 2. **Phase Name:** Extracted from `plan.phases[current_phase - 1].name`
371
+ 3. **Last Activity:** Parsed from the last entry in `events` array
372
+ 4. **Edge Cases:** Handle missing phase names, empty events, phase 0
373
+