aether-colony 5.0.0 โ†’ 5.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/.aether/aether-utils.sh +3226 -3345
  2. package/.aether/agents-claude/aether-ambassador.md +265 -0
  3. package/.aether/agents-claude/aether-archaeologist.md +327 -0
  4. package/.aether/agents-claude/aether-architect.md +236 -0
  5. package/.aether/agents-claude/aether-auditor.md +271 -0
  6. package/.aether/agents-claude/aether-builder.md +224 -0
  7. package/.aether/agents-claude/aether-chaos.md +269 -0
  8. package/.aether/agents-claude/aether-chronicler.md +305 -0
  9. package/.aether/agents-claude/aether-gatekeeper.md +330 -0
  10. package/.aether/agents-claude/aether-includer.md +374 -0
  11. package/.aether/agents-claude/aether-keeper.md +272 -0
  12. package/.aether/agents-claude/aether-measurer.md +322 -0
  13. package/.aether/agents-claude/aether-oracle.md +237 -0
  14. package/.aether/agents-claude/aether-probe.md +211 -0
  15. package/.aether/agents-claude/aether-queen.md +330 -0
  16. package/.aether/agents-claude/aether-route-setter.md +178 -0
  17. package/.aether/agents-claude/aether-sage.md +418 -0
  18. package/.aether/agents-claude/aether-scout.md +179 -0
  19. package/.aether/agents-claude/aether-surveyor-disciplines.md +417 -0
  20. package/.aether/agents-claude/aether-surveyor-nest.md +355 -0
  21. package/.aether/agents-claude/aether-surveyor-pathogens.md +289 -0
  22. package/.aether/agents-claude/aether-surveyor-provisions.md +360 -0
  23. package/.aether/agents-claude/aether-tracker.md +270 -0
  24. package/.aether/agents-claude/aether-watcher.md +280 -0
  25. package/.aether/agents-claude/aether-weaver.md +248 -0
  26. package/.aether/commands/archaeology.yaml +653 -0
  27. package/.aether/commands/build.yaml +1221 -0
  28. package/.aether/commands/chaos.yaml +653 -0
  29. package/.aether/commands/colonize.yaml +442 -0
  30. package/.aether/commands/continue.yaml +1484 -0
  31. package/.aether/commands/council.yaml +509 -0
  32. package/.aether/commands/data-clean.yaml +80 -0
  33. package/.aether/commands/dream.yaml +275 -0
  34. package/.aether/commands/entomb.yaml +863 -0
  35. package/.aether/commands/export-signals.yaml +64 -0
  36. package/.aether/commands/feedback.yaml +158 -0
  37. package/.aether/commands/flag.yaml +160 -0
  38. package/.aether/commands/flags.yaml +177 -0
  39. package/.aether/commands/focus.yaml +112 -0
  40. package/.aether/commands/help.yaml +167 -0
  41. package/.aether/commands/history.yaml +137 -0
  42. package/.aether/commands/import-signals.yaml +79 -0
  43. package/.aether/commands/init.yaml +502 -0
  44. package/.aether/commands/insert-phase.yaml +102 -0
  45. package/.aether/commands/interpret.yaml +285 -0
  46. package/.aether/commands/lay-eggs.yaml +224 -0
  47. package/.aether/commands/maturity.yaml +122 -0
  48. package/.aether/commands/memory-details.yaml +74 -0
  49. package/.aether/commands/migrate-state.yaml +174 -0
  50. package/.aether/commands/oracle.yaml +1224 -0
  51. package/.aether/commands/organize.yaml +446 -0
  52. package/.aether/commands/patrol.yaml +621 -0
  53. package/.aether/commands/pause-colony.yaml +424 -0
  54. package/.aether/commands/phase.yaml +124 -0
  55. package/.aether/commands/pheromones.yaml +153 -0
  56. package/.aether/commands/plan.yaml +1364 -0
  57. package/.aether/commands/preferences.yaml +63 -0
  58. package/.aether/commands/quick.yaml +104 -0
  59. package/.aether/commands/redirect.yaml +123 -0
  60. package/.aether/commands/resume-colony.yaml +375 -0
  61. package/.aether/commands/resume.yaml +407 -0
  62. package/.aether/commands/run.yaml +229 -0
  63. package/.aether/commands/seal.yaml +1214 -0
  64. package/.aether/commands/skill-create.yaml +337 -0
  65. package/.aether/commands/status.yaml +408 -0
  66. package/.aether/commands/swarm.yaml +352 -0
  67. package/.aether/commands/tunnels.yaml +814 -0
  68. package/.aether/commands/update.yaml +131 -0
  69. package/.aether/commands/verify-castes.yaml +159 -0
  70. package/.aether/commands/watch.yaml +454 -0
  71. package/.aether/docs/INCIDENT_TEMPLATE.md +32 -0
  72. package/.aether/docs/QUEEN-SYSTEM.md +11 -11
  73. package/.aether/docs/README.md +32 -2
  74. package/.aether/docs/command-playbooks/README.md +23 -0
  75. package/.aether/docs/command-playbooks/build-complete.md +349 -0
  76. package/.aether/docs/command-playbooks/build-context.md +282 -0
  77. package/.aether/docs/command-playbooks/build-full.md +1683 -0
  78. package/.aether/docs/command-playbooks/build-prep.md +284 -0
  79. package/.aether/docs/command-playbooks/build-verify.md +405 -0
  80. package/.aether/docs/command-playbooks/build-wave.md +749 -0
  81. package/.aether/docs/command-playbooks/continue-advance.md +524 -0
  82. package/.aether/docs/command-playbooks/continue-finalize.md +447 -0
  83. package/.aether/docs/command-playbooks/continue-full.md +1725 -0
  84. package/.aether/docs/command-playbooks/continue-gates.md +686 -0
  85. package/.aether/docs/command-playbooks/continue-verify.md +407 -0
  86. package/.aether/docs/context-continuity.md +84 -0
  87. package/.aether/docs/disciplines/DISCIPLINES.md +9 -7
  88. package/.aether/docs/error-codes.md +1 -1
  89. package/.aether/docs/known-issues.md +34 -173
  90. package/.aether/docs/pheromones.md +86 -6
  91. package/.aether/docs/plans/pheromone-display-plan.md +257 -0
  92. package/.aether/docs/queen-commands.md +10 -9
  93. package/.aether/docs/source-of-truth-map.md +132 -0
  94. package/.aether/docs/xml-utilities.md +47 -0
  95. package/.aether/rules/aether-colony.md +23 -13
  96. package/.aether/scripts/incident-test-add.sh +47 -0
  97. package/.aether/scripts/weekly-audit.sh +79 -0
  98. package/.aether/skills/.index.json +649 -0
  99. package/.aether/skills/colony/.manifest.json +16 -0
  100. package/.aether/skills/colony/build-discipline/SKILL.md +78 -0
  101. package/.aether/skills/colony/colony-interaction/SKILL.md +56 -0
  102. package/.aether/skills/colony/colony-lifecycle/SKILL.md +77 -0
  103. package/.aether/skills/colony/colony-visuals/SKILL.md +112 -0
  104. package/.aether/skills/colony/context-management/SKILL.md +80 -0
  105. package/.aether/skills/colony/error-presentation/SKILL.md +99 -0
  106. package/.aether/skills/colony/pheromone-protocol/SKILL.md +79 -0
  107. package/.aether/skills/colony/pheromone-visibility/SKILL.md +81 -0
  108. package/.aether/skills/colony/state-safety/SKILL.md +84 -0
  109. package/.aether/skills/colony/worker-priming/SKILL.md +82 -0
  110. package/.aether/skills/domain/.manifest.json +24 -0
  111. package/.aether/skills/domain/README.md +33 -0
  112. package/.aether/skills/domain/django/SKILL.md +49 -0
  113. package/.aether/skills/domain/docker/SKILL.md +52 -0
  114. package/.aether/skills/domain/golang/SKILL.md +52 -0
  115. package/.aether/skills/domain/graphql/SKILL.md +51 -0
  116. package/.aether/skills/domain/html-css/SKILL.md +48 -0
  117. package/.aether/skills/domain/nextjs/SKILL.md +45 -0
  118. package/.aether/skills/domain/nodejs/SKILL.md +53 -0
  119. package/.aether/skills/domain/postgresql/SKILL.md +53 -0
  120. package/.aether/skills/domain/prisma/SKILL.md +59 -0
  121. package/.aether/skills/domain/python/SKILL.md +50 -0
  122. package/.aether/skills/domain/rails/SKILL.md +52 -0
  123. package/.aether/skills/domain/react/SKILL.md +45 -0
  124. package/.aether/skills/domain/rest-api/SKILL.md +58 -0
  125. package/.aether/skills/domain/svelte/SKILL.md +47 -0
  126. package/.aether/skills/domain/tailwind/SKILL.md +45 -0
  127. package/.aether/skills/domain/testing/SKILL.md +53 -0
  128. package/.aether/skills/domain/typescript/SKILL.md +58 -0
  129. package/.aether/skills/domain/vue/SKILL.md +49 -0
  130. package/.aether/templates/QUEEN.md.template +23 -41
  131. package/.aether/templates/colony-state-reset.jq.template +1 -0
  132. package/.aether/templates/colony-state.template.json +4 -0
  133. package/.aether/templates/learning-observations.template.json +6 -0
  134. package/.aether/templates/midden.template.json +13 -0
  135. package/.aether/templates/pheromones.template.json +6 -0
  136. package/.aether/templates/session.template.json +9 -0
  137. package/.aether/utils/atomic-write.sh +63 -17
  138. package/.aether/utils/chamber-utils.sh +145 -2
  139. package/.aether/utils/council.sh +425 -0
  140. package/.aether/utils/emoji-audit.sh +166 -0
  141. package/.aether/utils/error-handler.sh +21 -7
  142. package/.aether/utils/file-lock.sh +182 -27
  143. package/.aether/utils/flag.sh +278 -0
  144. package/.aether/utils/hive.sh +572 -0
  145. package/.aether/utils/immune.sh +508 -0
  146. package/.aether/utils/learning.sh +1928 -0
  147. package/.aether/utils/midden.sh +520 -0
  148. package/.aether/utils/oracle/oracle.md +168 -0
  149. package/.aether/utils/oracle/oracle.sh +1023 -0
  150. package/.aether/utils/pheromone.sh +2029 -0
  151. package/.aether/utils/queen.sh +1710 -0
  152. package/.aether/utils/scan.sh +860 -0
  153. package/.aether/utils/semantic-cli.sh +10 -8
  154. package/.aether/utils/session.sh +816 -0
  155. package/.aether/utils/skills.sh +509 -0
  156. package/.aether/utils/spawn-tree.sh +103 -271
  157. package/.aether/utils/spawn.sh +260 -0
  158. package/.aether/utils/state-api.sh +389 -0
  159. package/.aether/utils/state-loader.sh +8 -6
  160. package/.aether/utils/suggest.sh +611 -0
  161. package/.aether/utils/swarm-display.sh +10 -1
  162. package/.aether/utils/swarm.sh +1004 -0
  163. package/.aether/utils/watch-spawn-tree.sh +11 -2
  164. package/.aether/utils/xml-compose.sh +2 -2
  165. package/.aether/utils/xml-convert.sh +9 -5
  166. package/.aether/utils/xml-core.sh +5 -9
  167. package/.aether/utils/xml-query.sh +4 -4
  168. package/.aether/workers.md +86 -67
  169. package/.claude/agents/ant/aether-ambassador.md +2 -1
  170. package/.claude/agents/ant/aether-archaeologist.md +6 -1
  171. package/.claude/agents/ant/aether-architect.md +236 -0
  172. package/.claude/agents/ant/aether-auditor.md +6 -1
  173. package/.claude/agents/ant/aether-builder.md +38 -1
  174. package/.claude/agents/ant/aether-chaos.md +2 -1
  175. package/.claude/agents/ant/aether-chronicler.md +1 -0
  176. package/.claude/agents/ant/aether-gatekeeper.md +6 -1
  177. package/.claude/agents/ant/aether-includer.md +1 -0
  178. package/.claude/agents/ant/aether-keeper.md +1 -0
  179. package/.claude/agents/ant/aether-measurer.md +6 -1
  180. package/.claude/agents/ant/aether-oracle.md +237 -0
  181. package/.claude/agents/ant/aether-probe.md +2 -1
  182. package/.claude/agents/ant/aether-queen.md +6 -1
  183. package/.claude/agents/ant/aether-route-setter.md +6 -1
  184. package/.claude/agents/ant/aether-sage.md +68 -3
  185. package/.claude/agents/ant/aether-scout.md +38 -1
  186. package/.claude/agents/ant/aether-surveyor-disciplines.md +2 -1
  187. package/.claude/agents/ant/aether-surveyor-nest.md +2 -1
  188. package/.claude/agents/ant/aether-surveyor-pathogens.md +2 -1
  189. package/.claude/agents/ant/aether-surveyor-provisions.md +2 -1
  190. package/.claude/agents/ant/aether-tracker.md +6 -1
  191. package/.claude/agents/ant/aether-watcher.md +37 -1
  192. package/.claude/agents/ant/aether-weaver.md +2 -1
  193. package/.claude/commands/ant/archaeology.md +1 -8
  194. package/.claude/commands/ant/build.md +43 -1159
  195. package/.claude/commands/ant/chaos.md +1 -14
  196. package/.claude/commands/ant/colonize.md +3 -14
  197. package/.claude/commands/ant/continue.md +40 -1026
  198. package/.claude/commands/ant/council.md +213 -15
  199. package/.claude/commands/ant/data-clean.md +81 -0
  200. package/.claude/commands/ant/dream.md +12 -9
  201. package/.claude/commands/ant/entomb.md +62 -87
  202. package/.claude/commands/ant/export-signals.md +57 -0
  203. package/.claude/commands/ant/feedback.md +18 -0
  204. package/.claude/commands/ant/flag.md +12 -0
  205. package/.claude/commands/ant/flags.md +22 -8
  206. package/.claude/commands/ant/focus.md +18 -0
  207. package/.claude/commands/ant/help.md +40 -8
  208. package/.claude/commands/ant/history.md +3 -0
  209. package/.claude/commands/ant/import-signals.md +71 -0
  210. package/.claude/commands/ant/init.md +349 -191
  211. package/.claude/commands/ant/insert-phase.md +105 -0
  212. package/.claude/commands/ant/interpret.md +11 -0
  213. package/.claude/commands/ant/lay-eggs.md +167 -158
  214. package/.claude/commands/ant/maturity.md +22 -11
  215. package/.claude/commands/ant/memory-details.md +77 -0
  216. package/.claude/commands/ant/migrate-state.md +6 -0
  217. package/.claude/commands/ant/oracle.md +317 -62
  218. package/.claude/commands/ant/organize.md +10 -5
  219. package/.claude/commands/ant/patrol.md +620 -0
  220. package/.claude/commands/ant/pause-colony.md +8 -22
  221. package/.claude/commands/ant/phase.md +26 -37
  222. package/.claude/commands/ant/pheromones.md +156 -0
  223. package/.claude/commands/ant/plan.md +199 -50
  224. package/.claude/commands/ant/preferences.md +65 -0
  225. package/.claude/commands/ant/quick.md +100 -0
  226. package/.claude/commands/ant/redirect.md +18 -0
  227. package/.claude/commands/ant/resume-colony.md +37 -22
  228. package/.claude/commands/ant/resume.md +60 -7
  229. package/.claude/commands/ant/run.md +231 -0
  230. package/.claude/commands/ant/seal.md +506 -78
  231. package/.claude/commands/ant/skill-create.md +286 -0
  232. package/.claude/commands/ant/status.md +171 -1
  233. package/.claude/commands/ant/swarm.md +11 -23
  234. package/.claude/commands/ant/tunnels.md +1 -0
  235. package/.claude/commands/ant/update.md +58 -135
  236. package/.claude/commands/ant/verify-castes.md +90 -42
  237. package/.claude/commands/ant/watch.md +1 -0
  238. package/.opencode/agents/aether-ambassador.md +1 -1
  239. package/.opencode/agents/aether-architect.md +133 -0
  240. package/.opencode/agents/aether-builder.md +3 -3
  241. package/.opencode/agents/aether-oracle.md +137 -0
  242. package/.opencode/agents/aether-queen.md +1 -1
  243. package/.opencode/agents/aether-route-setter.md +1 -1
  244. package/.opencode/agents/aether-scout.md +1 -1
  245. package/.opencode/agents/aether-surveyor-disciplines.md +6 -1
  246. package/.opencode/agents/aether-surveyor-nest.md +6 -1
  247. package/.opencode/agents/aether-surveyor-pathogens.md +6 -1
  248. package/.opencode/agents/aether-surveyor-provisions.md +6 -1
  249. package/.opencode/agents/aether-tracker.md +1 -1
  250. package/.opencode/agents/aether-watcher.md +1 -1
  251. package/.opencode/agents/aether-weaver.md +1 -1
  252. package/.opencode/commands/ant/archaeology.md +7 -14
  253. package/.opencode/commands/ant/build.md +54 -88
  254. package/.opencode/commands/ant/chaos.md +7 -24
  255. package/.opencode/commands/ant/colonize.md +10 -17
  256. package/.opencode/commands/ant/continue.md +595 -66
  257. package/.opencode/commands/ant/council.md +150 -18
  258. package/.opencode/commands/ant/data-clean.md +77 -0
  259. package/.opencode/commands/ant/dream.md +15 -17
  260. package/.opencode/commands/ant/entomb.md +28 -18
  261. package/.opencode/commands/ant/export-signals.md +54 -0
  262. package/.opencode/commands/ant/feedback.md +24 -5
  263. package/.opencode/commands/ant/flag.md +16 -4
  264. package/.opencode/commands/ant/flags.md +24 -10
  265. package/.opencode/commands/ant/focus.md +22 -5
  266. package/.opencode/commands/ant/help.md +41 -8
  267. package/.opencode/commands/ant/history.md +9 -0
  268. package/.opencode/commands/ant/import-signals.md +68 -0
  269. package/.opencode/commands/ant/init.md +396 -154
  270. package/.opencode/commands/ant/insert-phase.md +111 -0
  271. package/.opencode/commands/ant/interpret.md +16 -0
  272. package/.opencode/commands/ant/lay-eggs.md +184 -112
  273. package/.opencode/commands/ant/maturity.md +18 -2
  274. package/.opencode/commands/ant/memory-details.md +83 -0
  275. package/.opencode/commands/ant/migrate-state.md +12 -0
  276. package/.opencode/commands/ant/oracle.md +322 -67
  277. package/.opencode/commands/ant/organize.md +14 -12
  278. package/.opencode/commands/ant/patrol.md +626 -0
  279. package/.opencode/commands/ant/pause-colony.md +12 -29
  280. package/.opencode/commands/ant/phase.md +30 -40
  281. package/.opencode/commands/ant/pheromones.md +162 -0
  282. package/.opencode/commands/ant/plan.md +210 -57
  283. package/.opencode/commands/ant/preferences.md +71 -0
  284. package/.opencode/commands/ant/quick.md +91 -0
  285. package/.opencode/commands/ant/redirect.md +22 -5
  286. package/.opencode/commands/ant/resume-colony.md +41 -29
  287. package/.opencode/commands/ant/resume.md +80 -20
  288. package/.opencode/commands/ant/run.md +237 -0
  289. package/.opencode/commands/ant/seal.md +230 -25
  290. package/.opencode/commands/ant/skill-create.md +63 -0
  291. package/.opencode/commands/ant/status.md +125 -30
  292. package/.opencode/commands/ant/swarm.md +3 -345
  293. package/.opencode/commands/ant/tunnels.md +3 -9
  294. package/.opencode/commands/ant/update.md +63 -127
  295. package/.opencode/commands/ant/verify-castes.md +96 -42
  296. package/.opencode/commands/ant/watch.md +7 -0
  297. package/CHANGELOG.md +368 -1
  298. package/README.md +195 -324
  299. package/bin/cli.js +236 -429
  300. package/bin/generate-commands.js +186 -0
  301. package/bin/generate-commands.sh +128 -89
  302. package/bin/lib/spawn-logger.js +0 -15
  303. package/bin/lib/update-transaction.js +285 -35
  304. package/bin/npx-install.js +178 -0
  305. package/bin/validate-package.sh +85 -3
  306. package/package.json +16 -4
  307. package/.aether/CONTEXT.md +0 -160
  308. package/.aether/docs/QUEEN.md +0 -84
  309. package/.aether/exchange/colony-registry.xml +0 -11
  310. package/.aether/exchange/pheromones.xml +0 -87
  311. package/.aether/exchange/queen-wisdom.xml +0 -14
  312. package/.aether/model-profiles.yaml +0 -100
  313. package/.aether/utils/spawn-with-model.sh +0 -56
  314. package/bin/lib/model-profiles.js +0 -445
  315. package/bin/lib/model-verify.js +0 -288
  316. package/bin/lib/proxy-health.js +0 -253
  317. package/bin/lib/telemetry.js +0 -441
@@ -0,0 +1,424 @@
1
+ name: "ant:pause-colony"
2
+ description: "๐Ÿ’พ๐Ÿœโธ๏ธ๐Ÿœ๐Ÿ’พ Pause colony work and create handoff document for resuming later"
3
+ body_claude: |
4
+ You are the **Queen Ant Colony**. Save current state for session handoff.
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 pause display...":
15
+ ### Step 1: Read State
16
+
17
+ Use the Read tool to read `.aether/data/COLONY_STATE.json`.
18
+
19
+ If `goal` is null, output `No colony initialized. Nothing to pause.` and stop.
20
+
21
+ ### Step 2: Compute Active Signals
22
+
23
+ Run using the Bash tool with description "Loading active pheromones...":
24
+ ```bash
25
+ bash .aether/aether-utils.sh pheromone-read
26
+ ```
27
+
28
+ Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
29
+ If empty, treat as "no active pheromones."
30
+
31
+ ### Step 3: Build Handoff Summary
32
+
33
+ Gather context for the handoff from `COLONY_STATE.json`:
34
+ - `goal` from top level
35
+ - `state` and `current_phase` from top level
36
+ - `workers` object
37
+ - Active signals from `pheromone-read` output (with current decayed strengths from Step 2)
38
+ - Phase progress from `plan.phases` (how many complete, current phase tasks)
39
+ - What was in progress or pending
40
+
41
+ ### Step 4: Write Handoff
42
+
43
+ Use the Write tool to update `.aether/HANDOFF.md` with a session handoff section at the top. The format:
44
+
45
+ ```markdown
46
+ # Colony Session Paused
47
+
48
+ ## Quick Resume
49
+ Run `/ant:resume-colony` in a new session.
50
+
51
+ ## State at Pause
52
+ - Goal: "<goal>"
53
+ - State: <state>
54
+ - Current Phase: <phase_number> โ€” <phase_name>
55
+ - Session: <session_id>
56
+ - Paused: <ISO-8601 timestamp>
57
+
58
+ ## Active Pheromones
59
+ - <TYPE> (strength <current>): "<content>"
60
+ (list each non-expired signal)
61
+
62
+ ## Phase Progress
63
+ (for each phase, show status)
64
+ - Phase <id>: <name> [<status>]
65
+
66
+ ## Current Phase Tasks
67
+ (list tasks in the current phase with their statuses)
68
+ - [<icon>] <task_id>: <description>
69
+
70
+ ## What Was Happening
71
+ <brief description of what the colony was doing>
72
+
73
+ ## Next Steps on Resume
74
+ <what should happen next>
75
+ ```
76
+
77
+ ### Step 4.5: Set Paused Flag in State
78
+
79
+ Use Read tool to get current COLONY_STATE.json.
80
+
81
+ Use Write tool to update COLONY_STATE.json with paused flag:
82
+ - Add field: `"paused": true`
83
+ - Add field: `"paused_at": "<ISO-8601 timestamp>"`
84
+ - Update last_updated timestamp
85
+
86
+ This flag indicates the colony is in a paused state and will be cleared on resume.
87
+
88
+ ### Step 4.6: Commit Suggestion (Optional)
89
+
90
+ **This step is non-blocking. Skipping does not affect the pause or any subsequent steps. Failure to commit has zero consequences.**
91
+
92
+ Before displaying the pause confirmation, check if the user has uncommitted work worth preserving.
93
+
94
+ **1. Check for uncommitted changes:**
95
+ ```bash
96
+ git status --porcelain 2>/dev/null
97
+ ```
98
+ If the output is empty (nothing to commit) or the command fails (not a git repo), skip this step silently and continue to Step 5.
99
+
100
+ **2. Check for double-prompting:**
101
+ Read `last_commit_suggestion_phase` from COLONY_STATE.json (already loaded in Step 1).
102
+ If `last_commit_suggestion_phase` equals the current phase, skip this step silently โ€” the user was already prompted at POST-ADVANCE. Continue to Step 5.
103
+
104
+ **3. Capture AI Description:**
105
+
106
+ **As the AI, briefly describe what was in progress when pausing.**
107
+
108
+ Examples:
109
+ - "Mid-implementation of task-based routing, tests passing"
110
+ - "Completed model selection logic, integration tests pending"
111
+ - "Fixed file locking, ready for verification"
112
+
113
+ Store this as `ai_description`. If no clear description emerges, leave empty (will use fallback).
114
+
115
+ **4. Generate Enhanced Commit Message:**
116
+ ```bash
117
+ bash .aether/aether-utils.sh generate-commit-message "contextual" {current_phase} "{phase_name}" "{ai_description}" {plan_number}
118
+ ```
119
+
120
+ Parse the returned JSON to extract `message`, `body`, `files_changed`, `subsystem`, and `scope`.
121
+
122
+ **5. Display the enhanced suggestion:**
123
+ ```
124
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
125
+ Commit Suggestion
126
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
127
+
128
+ AI Description: {ai_description}
129
+
130
+ Formatted Message:
131
+ {message}
132
+
133
+ Metadata:
134
+ Scope: {scope}
135
+ Files: {files_changed} files changed
136
+
137
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
138
+ ```
139
+
140
+ **6. Use AskUserQuestion:**
141
+ ```
142
+ Commit your work before pausing?
143
+
144
+ 1. Yes, commit with this message
145
+ 2. Yes, but let me edit the description
146
+ 3. No, I'll commit later
147
+ ```
148
+
149
+ **7. If option 1 ("Yes, commit with this message"):**
150
+ ```bash
151
+ git add -A && git commit -m "{message}" -m "{body}"
152
+ ```
153
+ Display: `Committed: {message} ({files_changed} files)`
154
+
155
+ **8. If option 2 ("Yes, but let me edit"):**
156
+ Prompt for custom description, then regenerate and commit.
157
+
158
+ **9. If option 3 ("No, I'll commit later"):**
159
+ Display: `Skipped. Your changes are saved on disk but not committed.`
160
+
161
+ **10. Record the suggestion:**
162
+ Set `last_commit_suggestion_phase` to `{current_phase}` in COLONY_STATE.json.
163
+
164
+ **Error handling:** If any git command fails, display the error and continue to Step 5.
165
+
166
+ Continue to Step 5.
167
+
168
+ ### Step 4.8: Update Context Document
169
+
170
+ Log this pause activity to `.aether/CONTEXT.md` by running using the Bash tool with description "Updating context document...":
171
+
172
+ ```bash
173
+ bash .aether/aether-utils.sh context-update activity "pause-colony" "Colony paused โ€” handoff created" "โ€”"
174
+ ```
175
+
176
+ Update safe-to-clear status by running using the Bash tool with description "Marking safe to clear...":
177
+ ```bash
178
+ bash .aether/aether-utils.sh context-update safe-to-clear "YES" "Colony paused โ€” safe to /clear, run /ant:resume-colony to continue"
179
+ ```
180
+
181
+ ### Step 5: Display Confirmation
182
+
183
+ Output header:
184
+
185
+ ```
186
+ ๐Ÿ’พ๐Ÿœโธ๏ธ๐Ÿœ๐Ÿ’พ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
187
+ C O L O N Y P A U S E D
188
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” ๐Ÿ’พ๐Ÿœโธ๏ธ๐Ÿœ๐Ÿ’พ
189
+ ```
190
+
191
+ Then output:
192
+ +=====================================================+
193
+ | AETHER COLONY :: PAUSED |
194
+ +=====================================================+
195
+
196
+ Goal: "<goal>"
197
+ Phase: <current_phase> โ€” <phase_name>
198
+ Pheromones: <active_count> active
199
+
200
+ Handoff saved to .aether/HANDOFF.md
201
+ Paused state saved to COLONY_STATE.json
202
+
203
+ To resume in a new session:
204
+ /ant:resume-colony
205
+
206
+ ๐Ÿ’พ State persisted โ€” safe to /clear
207
+
208
+ ๐Ÿ“‹ Context document updated at `.aether/CONTEXT.md`
209
+
210
+ ๐Ÿœ What would you like to do next?
211
+ 1. /ant:resume-colony โ€” Resume work in this session
212
+ 2. /ant:lay-eggs "<new goal>" โ€” Start a new colony
213
+ 3. /clear โ€” Clear context and continue
214
+
215
+ Use AskUserQuestion with these three options.
216
+
217
+ If option 1 selected: proceed to run /ant:resume-colony flow
218
+ If option 2 selected: run /ant:lay-eggs flow
219
+ If option 3 selected: display "Run /ant:resume-colony when ready to continue, or /ant:lay-eggs to start fresh"
220
+ ```
221
+
222
+ ### Step 6: Next Up
223
+
224
+ Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
225
+ ```bash
226
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
227
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
228
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
229
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
230
+ ```
231
+
232
+ body_opencode: |
233
+ You are the **Queen Ant Colony**. Save current state for session handoff.
234
+
235
+ ## Instructions
236
+
237
+ Parse `$normalized_args`:
238
+ - If contains `--no-visual`: set `visual_mode = false` (visual is ON by default)
239
+ - Otherwise: set `visual_mode = true`
240
+
241
+ ### Step 1: Read State
242
+
243
+ Use the Read tool to read `.aether/data/COLONY_STATE.json`.
244
+
245
+ If `goal` is null, output `No colony initialized. Nothing to pause.` and stop.
246
+
247
+ ### Step 2: Compute Active Signals
248
+
249
+ Run using the Bash tool:
250
+ ```bash
251
+ bash .aether/aether-utils.sh pheromone-read
252
+ ```
253
+
254
+ Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
255
+ If empty, treat as "no active pheromones."
256
+
257
+ ### Step 3: Build Handoff Summary
258
+
259
+ Gather context for the handoff from `COLONY_STATE.json`:
260
+ - `goal` from top level
261
+ - `state` and `current_phase` from top level
262
+ - `workers` object
263
+ - Active signals from `pheromone-read` output (with current decayed strengths from Step 2)
264
+ - Phase progress from `plan.phases` (how many complete, current phase tasks)
265
+ - What was in progress or pending
266
+
267
+ ### Step 4: Write Handoff
268
+
269
+ Use the Write tool to update `.aether/HANDOFF.md` with a session handoff section at the top. The format:
270
+
271
+ ```markdown
272
+ # Colony Session Paused
273
+
274
+ ## Quick Resume
275
+ Run `/ant:resume-colony` in a new session.
276
+
277
+ ## State at Pause
278
+ - Goal: "<goal>"
279
+ - State: <state>
280
+ - Current Phase: <phase_number> โ€” <phase_name>
281
+ - Session: <session_id>
282
+ - Paused: <ISO-8601 timestamp>
283
+
284
+ ## Active Pheromones
285
+ - <TYPE> (strength <current>): "<content>"
286
+ (list each non-expired signal)
287
+
288
+ ## Phase Progress
289
+ (for each phase, show status)
290
+ - Phase <id>: <name> [<status>]
291
+
292
+ ## Current Phase Tasks
293
+ (list tasks in the current phase with their statuses)
294
+ - [<icon>] <task_id>: <description>
295
+
296
+ ## What Was Happening
297
+ <brief description of what the colony was doing>
298
+
299
+ ## Next Steps on Resume
300
+ <what should happen next>
301
+ ```
302
+
303
+ ### Step 4.5: Set Paused Flag in State
304
+
305
+ Use Read tool to get current COLONY_STATE.json.
306
+
307
+ Use Write tool to update COLONY_STATE.json with paused flag:
308
+ - Add field: `"paused": true`
309
+ - Add field: `"paused_at": "<ISO-8601 timestamp>"`
310
+ - Update last_updated timestamp
311
+
312
+ This flag indicates the colony is in a paused state and will be cleared on resume.
313
+
314
+ ### Step 4.6: Commit Suggestion (Optional)
315
+
316
+ **This step is non-blocking. Skipping does not affect the pause or any subsequent steps. Failure to commit has zero consequences.**
317
+
318
+ Before displaying the pause confirmation, check if the user has uncommitted work worth preserving.
319
+
320
+ 1. **Check for uncommitted changes:**
321
+ ```bash
322
+ git status --porcelain 2>/dev/null
323
+ ```
324
+ If the output is empty (nothing to commit) or the command fails (not a git repo), skip this step silently and continue to Step 5.
325
+
326
+ 2. **Check for double-prompting:**
327
+ Read `last_commit_suggestion_phase` from COLONY_STATE.json (already loaded in Step 1).
328
+ If `last_commit_suggestion_phase` equals the current phase, skip this step silently โ€” the user was already prompted at POST-ADVANCE. Continue to Step 5.
329
+
330
+ 3. **Generate the commit message:**
331
+ ```bash
332
+ bash .aether/aether-utils.sh generate-commit-message "pause" {current_phase} "{phase_name}"
333
+ ```
334
+ Parse the returned JSON to extract `message` and `files_changed`.
335
+
336
+ 4. **Check files changed:**
337
+ ```bash
338
+ git diff --stat HEAD 2>/dev/null | tail -5
339
+ ```
340
+
341
+ 5. **Display the suggestion:**
342
+ ```
343
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
344
+ Commit Suggestion
345
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
346
+
347
+ Message: {generated_message}
348
+ Files: {files_changed} files changed
349
+ Preview: {first 5 lines of git diff --stat}
350
+
351
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
352
+ ```
353
+
354
+ 6. **Use AskUserQuestion:**
355
+ ```
356
+ Commit your work before pausing?
357
+
358
+ 1. Yes, commit with this message
359
+ 2. Yes, but let me write the message
360
+ 3. No, I'll commit later
361
+ ```
362
+
363
+ 7. **If option 1 ("Yes, commit with this message"):**
364
+ ```bash
365
+ git add -A && git commit -m "{generated_message}"
366
+ ```
367
+ Display: `Committed: {generated_message} ({files_changed} files)`
368
+
369
+ 8. **If option 2 ("Yes, but let me write the message"):**
370
+ Use AskUserQuestion to get the user's custom commit message, then:
371
+ ```bash
372
+ git add -A && git commit -m "{custom_message}"
373
+ ```
374
+ Display: `Committed: {custom_message} ({files_changed} files)`
375
+
376
+ 9. **If option 3 ("No, I'll commit later"):**
377
+ Display: `Skipped. Your changes are saved on disk but not committed.`
378
+
379
+ 10. **Record the suggestion to prevent double-prompting:**
380
+ Set `last_commit_suggestion_phase` to `{current_phase}` in COLONY_STATE.json (add the field at the top level if it does not exist).
381
+
382
+ **Error handling:** If any git command fails (not a repo, merge conflict, pre-commit hook rejection), display the error output and continue to Step 5. The commit suggestion is advisory only โ€” it never blocks the pause flow.
383
+
384
+ Continue to Step 5.
385
+
386
+ ### Step 5: Display Confirmation
387
+
388
+ Output header:
389
+
390
+ ```
391
+ ๐Ÿ’พ๐Ÿœโธ๏ธ๐Ÿœ๐Ÿ’พ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
392
+ C O L O N Y P A U S E D
393
+ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿ’พ๐Ÿœโธ๏ธ๐Ÿœ๐Ÿ’พ
394
+ ```
395
+
396
+ Then output:
397
+ +=====================================================+
398
+ | AETHER COLONY :: PAUSED |
399
+ +=====================================================+
400
+
401
+ Goal: "<goal>"
402
+ Phase: <current_phase> โ€” <phase_name>
403
+ Pheromones: <active_count> active
404
+
405
+ Handoff saved to .aether/HANDOFF.md
406
+ Paused state saved to COLONY_STATE.json
407
+
408
+ To resume in a new session:
409
+ /ant:resume-colony
410
+
411
+ ๐Ÿ’พ State persisted โ€” safe to /clear
412
+
413
+ ๐Ÿœ What would you like to do next?
414
+ 1. /ant:resume-colony โ€” Resume work in this session
415
+ 2. /ant:lay-eggs "<new goal>" โ€” Start a new colony
416
+ 3. /clear โ€” Clear context and continue
417
+
418
+ Use AskUserQuestion with these three options.
419
+
420
+ If option 1 selected: proceed to run /ant:resume-colony flow
421
+ If option 2 selected: run /ant:lay-eggs flow
422
+ If option 3 selected: display "Run /ant:resume-colony when ready to continue, or /ant:lay-eggs to start fresh"
423
+ ```
424
+
@@ -0,0 +1,124 @@
1
+ name: "ant:phase"
2
+ description: "๐Ÿ“๐Ÿœ๐Ÿ“๐Ÿœ๐Ÿ“ Show phase details - Queen reviews phase status, tasks, and caste assignment"
3
+ body: |
4
+ You are the **Queen Ant Colony**. Display phase details from the project plan.
5
+
6
+ ## Instructions
7
+
8
+ The argument is: `{{ARGUMENTS}}`
9
+
10
+ ### Step 1: Read State
11
+
12
+ Use the Read tool to read `.aether/data/COLONY_STATE.json`.
13
+
14
+ If `goal` is null, output `No colony initialized. Run /ant:init first.` and stop.
15
+
16
+ If `plan.phases` is an empty array, output `No project plan. Run /ant:plan first.` and stop.
17
+
18
+ ### Step 2: Determine What to Show
19
+
20
+ - If `{{ARGUMENTS}}` is empty -> show the current phase (from `current_phase`). If `current_phase` is 0 or beyond the last phase, show phase 1.
21
+ - If `{{ARGUMENTS}}` is a number -> show that specific phase
22
+ - If `{{ARGUMENTS}}` is "list" or "all" -> show all phases in summary
23
+
24
+ ### Step 3a: Single Phase View
25
+
26
+ Find the phase by ID in `plan.phases`.
27
+
28
+ **Calculate next phase ID:**
29
+ - Let `total_phases` = length of `plan.phases` array
30
+ - If current phase ID < total_phases, then `next_id` = current phase ID + 1
31
+ - If current phase ID >= total_phases (viewing last phase), omit the "View next phase" suggestion
32
+
33
+ Output this header:
34
+
35
+ {{#claude}}
36
+ ```
37
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
38
+ ๐Ÿ“๐Ÿœ๐Ÿ“๐Ÿœ๐Ÿ“ P H A S E {id} D E T A I L S
39
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
40
+ {{/claude}}
41
+ {{#opencode}}
42
+ ```
43
+ ๐Ÿ“๐Ÿœ๐Ÿ“๐Ÿœ๐Ÿ“ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
44
+ P H A S E {id} D E T A I L S
45
+ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿ“๐Ÿœ๐Ÿ“๐Ÿœ๐Ÿ“
46
+ {{/opencode}}
47
+
48
+ Then display:
49
+
50
+ ```
51
+ ๐Ÿ“ Phase <id>: <name>
52
+ ๐Ÿ“Š Status: <status>
53
+
54
+ <description>
55
+
56
+ ๐Ÿœ Tasks:
57
+ {status_icon} <task_id>: <description>
58
+ โ†ณ depends on: <deps or "none">
59
+
60
+ โœ… Success Criteria:
61
+ โ€ข <criterion>
62
+
63
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
64
+ {{#claude}}
65
+ ๐Ÿœ Next Up
66
+ {{/claude}}
67
+ {{#opencode}}
68
+ ๐Ÿœ Next Steps:
69
+ {{/opencode}}
70
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
71
+ /ant:build <id> ๐Ÿ”จ Phase <id>: <phase_name>
72
+ /ant:phase <next_id> ๐Ÿ“‹ Phase <next_id>: <next_phase_name> (only if not last phase)
73
+ /ant:status ๐Ÿ“Š Colony status
74
+ ```
75
+
76
+ {{#claude}}
77
+ After displaying phase details, generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
78
+ ```bash
79
+ state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
80
+ current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
81
+ total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
82
+ bash .aether/aether-utils.sh print-next-up "$state" "$current_phase" "$total_phases"
83
+ ```
84
+ {{/claude}}
85
+
86
+ Status icons: `[ ]` pending, `[~]` in_progress, `[โœ“]` completed
87
+
88
+ ### Step 3b: List View
89
+
90
+ Output this header:
91
+
92
+ {{#claude}}
93
+ ```
94
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
95
+ ๐Ÿ“๐Ÿœ๐Ÿ“๐Ÿœ๐Ÿ“ A L L P H A S E S
96
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
97
+ {{/claude}}
98
+ {{#opencode}}
99
+ ```
100
+ ๐Ÿ“๐Ÿœ๐Ÿ“๐Ÿœ๐Ÿ“ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
101
+ A L L P H A S E S
102
+ โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• ๐Ÿ“๐Ÿœ๐Ÿ“๐Ÿœ๐Ÿ“
103
+ {{/opencode}}
104
+
105
+ For each phase in `plan.phases`, display:
106
+ ```
107
+ [{id}] {name} [{status}]
108
+ {short_description}
109
+ ```
110
+
111
+ Display phases grouped by status:
112
+ ```
113
+ โœ“ Completed
114
+ [{id}] {name}
115
+ ~ In Progress
116
+ [{id}] {name}
117
+ [ ] Pending
118
+ [{id}] {name}
119
+ ```
120
+
121
+ Display completion progress:
122
+ ```
123
+ ๐Ÿ“Š Overall: {completed_count}/{total_count} phases complete
124
+ ```
@@ -0,0 +1,153 @@
1
+ name: "ant:pheromones"
2
+ description: "๐ŸŽฏ๐Ÿœ๐Ÿšซ๐Ÿœ๐Ÿ’ฌ View and manage active pheromone signals"
3
+ body: |
4
+ You are the **Queen**. Display and manage the colony's pheromone signals.
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
+ Extract subcommand from `{{ARGUMENTS}}`:
13
+ - No argument or `all`: Show all active pheromones
14
+ - `focus`: Show only FOCUS signals
15
+ - `redirect`: Show only REDIRECT signals
16
+ - `feedback`: Show only FEEDBACK signals
17
+ - `clear`: Clear expired/inactive signals
18
+ - `expire <id>`: Expire a specific signal by ID
19
+
20
+ ### Step 1: Read Colony State
21
+
22
+ Read `.aether/data/COLONY_STATE.json`.
23
+
24
+ If file missing or `goal: null`:
25
+ ```
26
+ No colony initialized. Run /ant:init first.
27
+ ```
28
+ Stop here.
29
+
30
+ ### Step 2: Handle Subcommands
31
+
32
+ **If subcommand is `clear`:**
33
+
34
+ Run using the Bash tool:
35
+ ```bash
36
+ # Count signals before
37
+ before_count=$(jq '[.signals[] | select(.active == true)] | length' .aether/data/pheromones.json 2>/dev/null || echo "0")
38
+
39
+ # Mark expired/inactive signals as inactive
40
+ now=$(date +%s)
41
+ jq --argjson now "$now" '
42
+ def to_epoch(ts):
43
+ if ts == null or ts == "" or ts == "phase_end" then null
44
+ else
45
+ (ts | split("T")) as $parts |
46
+ ($parts[0] | split("-")) as $d |
47
+ ($parts[1] | rtrimstr("Z") | split(":")) as $t |
48
+ (($d[0] | tonumber) - 1970) * 365 * 86400 +
49
+ (($d[1] | tonumber) - 1) * 30 * 86400 +
50
+ (($d[2] | tonumber) - 1) * 86400 +
51
+ ($t[0] | tonumber) * 3600 +
52
+ ($t[1] | tonumber) * 60 +
53
+ ($t[2] | rtrimstr("Z") | tonumber)
54
+ end;
55
+
56
+ def decay_days(t):
57
+ if t == "FOCUS" then 30
58
+ elif t == "REDIRECT" then 60
59
+ else 90
60
+ end;
61
+
62
+ .signals = [.signals[] |
63
+ (to_epoch(.created_at)) as $created_epoch |
64
+ (if $created_epoch != null then ($now - $created_epoch) / 86400 else 0 end) as $elapsed_days |
65
+ (decay_days(.type)) as $dd |
66
+ ((.strength // 0.8) * (1 - ($elapsed_days / $dd))) as $eff_raw |
67
+ (if $eff_raw < 0 then 0 else $eff_raw end) as $eff |
68
+ if $eff < 0.1 then . + {active: false} else . end
69
+ ]
70
+ ' .aether/data/pheromones.json > .aether/data/pheromones.json.tmp && mv .aether/data/pheromones.json.tmp .aether/data/pheromones.json
71
+
72
+ # Count signals after
73
+ after_count=$(jq '[.signals[] | select(.active == true)] | length' .aether/data/pheromones.json 2>/dev/null || echo "0")
74
+ cleared=$((before_count - after_count))
75
+
76
+ echo "before=$before_count after=$after_count cleared=$cleared"
77
+ ```
78
+
79
+ Display:
80
+ ```
81
+ ๐Ÿงน Pheromone Cleanup
82
+
83
+ Before: {before_count} active signals
84
+ After: {after_count} active signals
85
+ Cleared: {cleared} expired signal(s)
86
+
87
+ Run /ant:pheromones to see remaining signals.
88
+ ```
89
+ Stop here.
90
+
91
+ **If subcommand is `expire <id>`:**
92
+
93
+ Extract the signal ID from arguments.
94
+ Run using the Bash tool:
95
+ ```bash
96
+ signal_id="{extracted_id}"
97
+ jq --arg id "$signal_id" '.signals = [.signals[] | if .id == $id then . + {active: false} else . end]' .aether/data/pheromones.json > .aether/data/pheromones.json.tmp && mv .aether/data/pheromones.json.tmp .aether/data/pheromones.json && echo "expired=$signal_id"
98
+ ```
99
+
100
+ Display:
101
+ ```
102
+ โœ“ Signal expired: {signal_id}
103
+
104
+ Run /ant:pheromones to see remaining signals.
105
+ ```
106
+ Stop here.
107
+
108
+ ### Step 3: Display Active Pheromones (default or filter)
109
+
110
+ Run using the Bash tool with description "Displaying pheromones...":
111
+ ```bash
112
+ bash .aether/aether-utils.sh pheromone-display "{subcommand or 'all'}"
113
+ ```
114
+
115
+ The output will be the formatted pheromone table.
116
+
117
+ ### Step 4: Summary and Next Steps
118
+
119
+ Display guidance:
120
+ ```
121
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
122
+
123
+ ๐Ÿ’ก Managing Pheromones
124
+
125
+ /ant:focus "area" ๐ŸŽฏ Guide attention
126
+ /ant:redirect "avoid" ๐Ÿšซ Set hard constraint
127
+ /ant:feedback "note" ๐Ÿ’ฌ Provide guidance
128
+ /ant:pheromones clear ๐Ÿงน Clear expired signals
129
+
130
+ ๐Ÿœ Signals decay over time: FOCUS 30d, REDIRECT 60d, FEEDBACK 90d
131
+ ```
132
+
133
+ ### Edge Cases
134
+
135
+ **No pheromones file:**
136
+ ```
137
+ No pheromones active. Colony has no signals.
138
+
139
+ Inject signals with:
140
+ /ant:focus "area" - Guide attention
141
+ /ant:redirect "avoid" - Set hard constraint
142
+ /ant:feedback "note" - Provide guidance
143
+ ```
144
+
145
+ **No active signals of filtered type:**
146
+ ```
147
+ No active {type} signals found.
148
+
149
+ Try: /ant:pheromones (to see all)
150
+ ```
151
+
152
+ **Invalid subcommand:**
153
+ Display help showing valid subcommands.