aether-colony 5.3.2 → 5.4.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.
- package/.aether/aether-utils.sh +181 -5
- package/.aether/commands/archaeology.yaml +3 -3
- package/.aether/commands/build.yaml +80 -45
- package/.aether/commands/chaos.yaml +7 -7
- package/.aether/commands/colonize.yaml +17 -17
- package/.aether/commands/continue.yaml +40 -40
- package/.aether/commands/council.yaml +6 -6
- package/.aether/commands/data-clean.yaml +3 -3
- package/.aether/commands/dream.yaml +2 -2
- package/.aether/commands/entomb.yaml +12 -12
- package/.aether/commands/export-signals.yaml +2 -2
- package/.aether/commands/feedback.yaml +6 -6
- package/.aether/commands/flag.yaml +2 -2
- package/.aether/commands/flags.yaml +4 -4
- package/.aether/commands/focus.yaml +6 -6
- package/.aether/commands/help.yaml +1 -1
- package/.aether/commands/history.yaml +1 -1
- package/.aether/commands/import-signals.yaml +2 -2
- package/.aether/commands/init.yaml +44 -27
- package/.aether/commands/insert-phase.yaml +1 -1
- package/.aether/commands/interpret.yaml +2 -2
- package/.aether/commands/lay-eggs.yaml +3 -3
- package/.aether/commands/maturity.yaml +2 -2
- package/.aether/commands/memory-details.yaml +1 -1
- package/.aether/commands/migrate-state.yaml +1 -1
- package/.aether/commands/oracle.yaml +147 -82
- package/.aether/commands/organize.yaml +5 -5
- package/.aether/commands/patrol.yaml +8 -8
- package/.aether/commands/pause-colony.yaml +7 -7
- package/.aether/commands/phase.yaml +1 -1
- package/.aether/commands/pheromones.yaml +1 -1
- package/.aether/commands/plan.yaml +14 -14
- package/.aether/commands/quick.yaml +4 -4
- package/.aether/commands/redirect.yaml +6 -6
- package/.aether/commands/resume-colony.yaml +9 -9
- package/.aether/commands/resume.yaml +5 -38
- package/.aether/commands/run.yaml +10 -10
- package/.aether/commands/seal.yaml +33 -33
- package/.aether/commands/skill-create.yaml +4 -4
- package/.aether/commands/status.yaml +14 -14
- package/.aether/commands/swarm.yaml +14 -14
- package/.aether/commands/tunnels.yaml +7 -7
- package/.aether/commands/update.yaml +1 -1
- package/.aether/commands/verify-castes.yaml +3 -3
- package/.aether/commands/watch.yaml +15 -15
- package/.aether/docs/command-playbooks/build-complete.md +48 -15
- package/.aether/docs/command-playbooks/build-context.md +11 -11
- package/.aether/docs/command-playbooks/build-full.md +76 -76
- package/.aether/docs/command-playbooks/build-prep.md +10 -10
- package/.aether/docs/command-playbooks/build-verify.md +27 -27
- package/.aether/docs/command-playbooks/build-wave.md +38 -38
- package/.aether/docs/command-playbooks/continue-advance.md +60 -27
- package/.aether/docs/command-playbooks/continue-finalize.md +25 -11
- package/.aether/docs/command-playbooks/continue-full.md +60 -46
- package/.aether/docs/command-playbooks/continue-gates.md +18 -18
- package/.aether/docs/command-playbooks/continue-verify.md +10 -10
- package/.aether/docs/source-of-truth-map.md +10 -10
- package/.aether/docs/structural-learning-stack.md +283 -0
- package/.aether/templates/colony-state-template.json +1 -0
- package/.aether/utils/consolidation-seal.sh +196 -0
- package/.aether/utils/consolidation.sh +127 -0
- package/.aether/utils/curation-ants/archivist.sh +97 -0
- package/.aether/utils/curation-ants/critic.sh +214 -0
- package/.aether/utils/curation-ants/herald.sh +102 -0
- package/.aether/utils/curation-ants/janitor.sh +121 -0
- package/.aether/utils/curation-ants/librarian.sh +99 -0
- package/.aether/utils/curation-ants/nurse.sh +153 -0
- package/.aether/utils/curation-ants/orchestrator.sh +181 -0
- package/.aether/utils/curation-ants/scribe.sh +164 -0
- package/.aether/utils/curation-ants/sentinel.sh +119 -0
- package/.aether/utils/event-bus.sh +301 -0
- package/.aether/utils/graph.sh +559 -0
- package/.aether/utils/instinct-store.sh +401 -0
- package/.aether/utils/learning.sh +79 -7
- package/.aether/utils/oracle/oracle-stop-hook.sh +896 -0
- package/.aether/utils/session.sh +13 -0
- package/.aether/utils/state-api.sh +1 -1
- package/.aether/utils/trust-scoring.sh +347 -0
- package/.aether/utils/worktree.sh +97 -0
- package/.claude/commands/ant/archaeology.md +2 -2
- package/.claude/commands/ant/chaos.md +4 -4
- package/.claude/commands/ant/colonize.md +9 -9
- package/.claude/commands/ant/council.md +6 -6
- package/.claude/commands/ant/data-clean.md +3 -3
- package/.claude/commands/ant/dream.md +2 -2
- package/.claude/commands/ant/entomb.md +9 -9
- package/.claude/commands/ant/export-signals.md +2 -2
- package/.claude/commands/ant/feedback.md +4 -4
- package/.claude/commands/ant/flag.md +2 -2
- package/.claude/commands/ant/flags.md +4 -4
- package/.claude/commands/ant/focus.md +4 -4
- package/.claude/commands/ant/help.md +1 -1
- package/.claude/commands/ant/history.md +1 -1
- package/.claude/commands/ant/import-signals.md +2 -2
- package/.claude/commands/ant/init.md +44 -27
- package/.claude/commands/ant/insert-phase.md +1 -1
- package/.claude/commands/ant/interpret.md +2 -2
- package/.claude/commands/ant/lay-eggs.md +2 -2
- package/.claude/commands/ant/maturity.md +2 -2
- package/.claude/commands/ant/memory-details.md +1 -1
- package/.claude/commands/ant/migrate-state.md +1 -1
- package/.claude/commands/ant/oracle.md +78 -42
- package/.claude/commands/ant/organize.md +3 -3
- package/.claude/commands/ant/patrol.md +8 -8
- package/.claude/commands/ant/pause-colony.md +5 -5
- package/.claude/commands/ant/phase.md +1 -1
- package/.claude/commands/ant/pheromones.md +1 -1
- package/.claude/commands/ant/plan.md +8 -8
- package/.claude/commands/ant/quick.md +4 -4
- package/.claude/commands/ant/redirect.md +4 -4
- package/.claude/commands/ant/resume-colony.md +5 -5
- package/.claude/commands/ant/resume.md +17 -29
- package/.claude/commands/ant/run.md +10 -10
- package/.claude/commands/ant/seal.md +25 -25
- package/.claude/commands/ant/skill-create.md +2 -2
- package/.claude/commands/ant/status.md +14 -14
- package/.claude/commands/ant/swarm.md +14 -14
- package/.claude/commands/ant/tunnels.md +4 -4
- package/.claude/commands/ant/update.md +1 -1
- package/.claude/commands/ant/verify-castes.md +2 -2
- package/.claude/commands/ant/watch.md +8 -8
- package/.opencode/commands/ant/archaeology.md +1 -1
- package/.opencode/commands/ant/build.md +80 -45
- package/.opencode/commands/ant/chaos.md +3 -3
- package/.opencode/commands/ant/colonize.md +8 -8
- package/.opencode/commands/ant/continue.md +40 -40
- package/.opencode/commands/ant/council.md +5 -5
- package/.opencode/commands/ant/data-clean.md +2 -2
- package/.opencode/commands/ant/dream.md +1 -1
- package/.opencode/commands/ant/entomb.md +3 -3
- package/.opencode/commands/ant/export-signals.md +1 -1
- package/.opencode/commands/ant/feedback.md +2 -2
- package/.opencode/commands/ant/flag.md +1 -1
- package/.opencode/commands/ant/flags.md +3 -3
- package/.opencode/commands/ant/focus.md +2 -2
- package/.opencode/commands/ant/import-signals.md +1 -1
- package/.opencode/commands/ant/init.md +44 -27
- package/.opencode/commands/ant/insert-phase.md +1 -1
- package/.opencode/commands/ant/interpret.md +1 -1
- package/.opencode/commands/ant/lay-eggs.md +2 -2
- package/.opencode/commands/ant/maturity.md +1 -1
- package/.opencode/commands/ant/memory-details.md +1 -1
- package/.opencode/commands/ant/oracle.md +69 -40
- package/.opencode/commands/ant/organize.md +2 -2
- package/.opencode/commands/ant/patrol.md +8 -8
- package/.opencode/commands/ant/pause-colony.md +2 -2
- package/.opencode/commands/ant/pheromones.md +1 -1
- package/.opencode/commands/ant/plan.md +6 -6
- package/.opencode/commands/ant/quick.md +4 -4
- package/.opencode/commands/ant/redirect.md +2 -2
- package/.opencode/commands/ant/resume-colony.md +4 -4
- package/.opencode/commands/ant/resume.md +5 -17
- package/.opencode/commands/ant/run.md +10 -10
- package/.opencode/commands/ant/seal.md +8 -8
- package/.opencode/commands/ant/skill-create.md +2 -2
- package/.opencode/commands/ant/status.md +10 -10
- package/.opencode/commands/ant/tunnels.md +3 -3
- package/.opencode/commands/ant/verify-castes.md +1 -1
- package/.opencode/commands/ant/watch.md +7 -7
- package/CHANGELOG.md +83 -0
- package/README.md +22 -9
- package/bin/cli.js +118 -3
- package/bin/lib/binary-downloader.js +267 -0
- package/bin/lib/update-transaction.js +27 -3
- package/bin/lib/version-gate.js +179 -0
- package/bin/npx-entry.js +0 -0
- package/package.json +1 -1
- package/.aether/agents/aether-ambassador.md +0 -140
- package/.aether/agents/aether-archaeologist.md +0 -108
- package/.aether/agents/aether-architect.md +0 -133
- package/.aether/agents/aether-auditor.md +0 -144
- package/.aether/agents/aether-builder.md +0 -184
- package/.aether/agents/aether-chaos.md +0 -115
- package/.aether/agents/aether-chronicler.md +0 -122
- package/.aether/agents/aether-gatekeeper.md +0 -116
- package/.aether/agents/aether-includer.md +0 -117
- package/.aether/agents/aether-keeper.md +0 -177
- package/.aether/agents/aether-measurer.md +0 -128
- package/.aether/agents/aether-oracle.md +0 -137
- package/.aether/agents/aether-probe.md +0 -133
- package/.aether/agents/aether-queen.md +0 -286
- package/.aether/agents/aether-route-setter.md +0 -130
- package/.aether/agents/aether-sage.md +0 -106
- package/.aether/agents/aether-scout.md +0 -101
- package/.aether/agents/aether-surveyor-disciplines.md +0 -391
- package/.aether/agents/aether-surveyor-nest.md +0 -329
- package/.aether/agents/aether-surveyor-pathogens.md +0 -264
- package/.aether/agents/aether-surveyor-provisions.md +0 -334
- package/.aether/agents/aether-tracker.md +0 -137
- package/.aether/agents/aether-watcher.md +0 -174
- package/.aether/agents/aether-weaver.md +0 -130
- package/.aether/commands/claude/archaeology.md +0 -334
- package/.aether/commands/claude/build.md +0 -65
- package/.aether/commands/claude/chaos.md +0 -336
- package/.aether/commands/claude/colonize.md +0 -259
- package/.aether/commands/claude/continue.md +0 -60
- package/.aether/commands/claude/council.md +0 -507
- package/.aether/commands/claude/data-clean.md +0 -81
- package/.aether/commands/claude/dream.md +0 -268
- package/.aether/commands/claude/entomb.md +0 -498
- package/.aether/commands/claude/export-signals.md +0 -57
- package/.aether/commands/claude/feedback.md +0 -96
- package/.aether/commands/claude/flag.md +0 -151
- package/.aether/commands/claude/flags.md +0 -169
- package/.aether/commands/claude/focus.md +0 -76
- package/.aether/commands/claude/help.md +0 -154
- package/.aether/commands/claude/history.md +0 -140
- package/.aether/commands/claude/import-signals.md +0 -71
- package/.aether/commands/claude/init.md +0 -505
- package/.aether/commands/claude/insert-phase.md +0 -105
- package/.aether/commands/claude/interpret.md +0 -278
- package/.aether/commands/claude/lay-eggs.md +0 -210
- package/.aether/commands/claude/maturity.md +0 -113
- package/.aether/commands/claude/memory-details.md +0 -77
- package/.aether/commands/claude/migrate-state.md +0 -171
- package/.aether/commands/claude/oracle.md +0 -642
- package/.aether/commands/claude/organize.md +0 -232
- package/.aether/commands/claude/patrol.md +0 -620
- package/.aether/commands/claude/pause-colony.md +0 -233
- package/.aether/commands/claude/phase.md +0 -115
- package/.aether/commands/claude/pheromones.md +0 -156
- package/.aether/commands/claude/plan.md +0 -693
- package/.aether/commands/claude/preferences.md +0 -65
- package/.aether/commands/claude/quick.md +0 -100
- package/.aether/commands/claude/redirect.md +0 -76
- package/.aether/commands/claude/resume-colony.md +0 -197
- package/.aether/commands/claude/resume.md +0 -388
- package/.aether/commands/claude/run.md +0 -231
- package/.aether/commands/claude/seal.md +0 -774
- package/.aether/commands/claude/skill-create.md +0 -286
- package/.aether/commands/claude/status.md +0 -410
- package/.aether/commands/claude/swarm.md +0 -349
- package/.aether/commands/claude/tunnels.md +0 -426
- package/.aether/commands/claude/update.md +0 -132
- package/.aether/commands/claude/verify-castes.md +0 -143
- package/.aether/commands/claude/watch.md +0 -239
- package/.aether/commands/opencode/archaeology.md +0 -331
- package/.aether/commands/opencode/build.md +0 -1168
- package/.aether/commands/opencode/chaos.md +0 -329
- package/.aether/commands/opencode/colonize.md +0 -195
- package/.aether/commands/opencode/continue.md +0 -1436
- package/.aether/commands/opencode/council.md +0 -437
- package/.aether/commands/opencode/data-clean.md +0 -77
- package/.aether/commands/opencode/dream.md +0 -260
- package/.aether/commands/opencode/entomb.md +0 -377
- package/.aether/commands/opencode/export-signals.md +0 -54
- package/.aether/commands/opencode/feedback.md +0 -99
- package/.aether/commands/opencode/flag.md +0 -149
- package/.aether/commands/opencode/flags.md +0 -167
- package/.aether/commands/opencode/focus.md +0 -73
- package/.aether/commands/opencode/help.md +0 -157
- package/.aether/commands/opencode/history.md +0 -136
- package/.aether/commands/opencode/import-signals.md +0 -68
- package/.aether/commands/opencode/init.md +0 -518
- package/.aether/commands/opencode/insert-phase.md +0 -111
- package/.aether/commands/opencode/interpret.md +0 -272
- package/.aether/commands/opencode/lay-eggs.md +0 -213
- package/.aether/commands/opencode/maturity.md +0 -108
- package/.aether/commands/opencode/memory-details.md +0 -83
- package/.aether/commands/opencode/migrate-state.md +0 -165
- package/.aether/commands/opencode/oracle.md +0 -593
- package/.aether/commands/opencode/organize.md +0 -226
- package/.aether/commands/opencode/patrol.md +0 -626
- package/.aether/commands/opencode/pause-colony.md +0 -203
- package/.aether/commands/opencode/phase.md +0 -113
- package/.aether/commands/opencode/pheromones.md +0 -162
- package/.aether/commands/opencode/plan.md +0 -684
- package/.aether/commands/opencode/preferences.md +0 -71
- package/.aether/commands/opencode/quick.md +0 -91
- package/.aether/commands/opencode/redirect.md +0 -84
- package/.aether/commands/opencode/resume-colony.md +0 -190
- package/.aether/commands/opencode/resume.md +0 -394
- package/.aether/commands/opencode/run.md +0 -237
- package/.aether/commands/opencode/seal.md +0 -452
- package/.aether/commands/opencode/skill-create.md +0 -63
- package/.aether/commands/opencode/status.md +0 -307
- package/.aether/commands/opencode/swarm.md +0 -15
- package/.aether/commands/opencode/tunnels.md +0 -400
- package/.aether/commands/opencode/update.md +0 -127
- package/.aether/commands/opencode/verify-castes.md +0 -139
- package/.aether/commands/opencode/watch.md +0 -227
|
@@ -42,10 +42,10 @@ body_claude: |
|
|
|
42
42
|
|
|
43
43
|
### Step 0b: Stop Oracle
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
Stop any active Oracle research by running using the Bash tool with description "Stopping oracle research...":
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
|
-
mkdir -p .aether/oracle && touch .aether/oracle/.stop
|
|
48
|
+
mkdir -p .aether/oracle && touch .aether/oracle/.stop && rm -f .aether/oracle/.loop-active
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
Output:
|
|
@@ -53,8 +53,11 @@ body_claude: |
|
|
|
53
53
|
```
|
|
54
54
|
🔮🐜 Oracle Stop Signal Sent
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
Removed loop state files.
|
|
57
|
+
- .aether/oracle/.stop (signal for legacy tmux loop)
|
|
58
|
+
- .aether/oracle/.loop-active (signal for in-session loop)
|
|
59
|
+
|
|
60
|
+
Any active research will halt at the next iteration boundary.
|
|
58
61
|
|
|
59
62
|
To check final results: /ant:oracle status
|
|
60
63
|
```
|
|
@@ -276,6 +279,41 @@ body_claude: |
|
|
|
276
279
|
|
|
277
280
|
(The user will type their topic via the "Other" free-text option.)
|
|
278
281
|
|
|
282
|
+
**Question 1.5: Research Brief — Formulate and Approve**
|
|
283
|
+
|
|
284
|
+
Take the user's raw topic (from `$ARGUMENTS` or Question 1) and reformulate it into a structured research brief. The user may have typed casual natural language — your job is to sharpen it into a clear, well-scoped research prompt that will produce better results.
|
|
285
|
+
|
|
286
|
+
Display the brief for approval:
|
|
287
|
+
|
|
288
|
+
```
|
|
289
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
290
|
+
🔮 R E S E A R C H B R I E F
|
|
291
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
292
|
+
|
|
293
|
+
**Topic:** {reformulated topic — clear, specific, actionable}
|
|
294
|
+
**Core Question:** {the single most important question this research should answer}
|
|
295
|
+
**Context:** {what we already know from the codebase or user input}
|
|
296
|
+
**Success Criteria:** {what a good answer looks like — what would make this research useful}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Guidelines for formulation:
|
|
300
|
+
- Turn vague topics into specific ones ("auth stuff" → "Authentication architecture: session-based vs token-based for this Node.js API")
|
|
301
|
+
- Add codebase context if relevant (tech stack, existing patterns)
|
|
302
|
+
- Make the core question answerable — not open-ended philosophy
|
|
303
|
+
- Keep success criteria concrete ("A recommendation with trade-offs" not "understand everything")
|
|
304
|
+
|
|
305
|
+
Then ask the user to approve:
|
|
306
|
+
|
|
307
|
+
```
|
|
308
|
+
Does this capture what you're looking for? (approve / edit)
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
- If the user approves: use the reformulated topic as the research topic going forward
|
|
312
|
+
- If the user edits: incorporate their changes, display the updated brief, and ask again
|
|
313
|
+
- Max 2 revision rounds (same as init). After 2, ask for final approval or cancel.
|
|
314
|
+
|
|
315
|
+
The approved **Topic** from the brief becomes the topic used in all subsequent steps (state.json, plan.json, research-plan.md).
|
|
316
|
+
|
|
279
317
|
**Question 2: Research Template**
|
|
280
318
|
|
|
281
319
|
```
|
|
@@ -372,14 +410,14 @@ body_claude: |
|
|
|
372
410
|
|
|
373
411
|
Check for stale files by running using the Bash tool with description "Checking for stale oracle session...":
|
|
374
412
|
```bash
|
|
375
|
-
stale_check=$(
|
|
413
|
+
stale_check=$(aether session-verify-fresh --command oracle "" "$ORACLE_START")
|
|
376
414
|
has_stale=$(echo "$stale_check" | jq -r '.stale | length')
|
|
377
415
|
has_progress=$(echo "$stale_check" | jq -r '.fresh | length')
|
|
378
416
|
|
|
379
417
|
if [[ "$has_stale" -gt 0 ]] || [[ "$has_progress" -gt 0 ]]; then
|
|
380
418
|
# Found existing oracle session
|
|
381
419
|
if [[ "$force_research" == "true" ]]; then
|
|
382
|
-
|
|
420
|
+
aether session-clear --command oracle
|
|
383
421
|
echo "Cleared stale oracle session for fresh research"
|
|
384
422
|
else
|
|
385
423
|
# Existing session found - prompt user
|
|
@@ -445,7 +483,7 @@ body_claude: |
|
|
|
445
483
|
For each focus area string from Question 7, run using the Bash tool with description "Emitting focus area pheromones...":
|
|
446
484
|
|
|
447
485
|
```bash
|
|
448
|
-
|
|
486
|
+
aether pheromone-write --type FOCUS --content "$focus_area" \
|
|
449
487
|
--strength 0.8 --source "oracle:wizard" \
|
|
450
488
|
--reason "Focus area set in oracle wizard" --ttl "24h" 2>/dev/null || true
|
|
451
489
|
```
|
|
@@ -544,7 +582,7 @@ body_claude: |
|
|
|
544
582
|
|
|
545
583
|
Verify that state.json, plan.json, gaps.md, synthesis.md, and research-plan.md were created successfully by running using the Bash tool with description "Verifying oracle files...":
|
|
546
584
|
```bash
|
|
547
|
-
verify_result=$(
|
|
585
|
+
verify_result=$(aether session-verify-fresh --command oracle "" "$ORACLE_START")
|
|
548
586
|
fresh_count=$(echo "$verify_result" | jq -r '.fresh | length')
|
|
549
587
|
|
|
550
588
|
if [[ "$fresh_count" -lt 5 ]]; then
|
|
@@ -556,7 +594,7 @@ body_claude: |
|
|
|
556
594
|
|
|
557
595
|
---
|
|
558
596
|
|
|
559
|
-
### Step 3: Launch
|
|
597
|
+
### Step 3: Launch (In-Session Loop)
|
|
560
598
|
|
|
561
599
|
Output the research configuration summary, showing the sub-questions from plan.json:
|
|
562
600
|
|
|
@@ -580,65 +618,63 @@ body_claude: |
|
|
|
580
618
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
581
619
|
```
|
|
582
620
|
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
**Try tmux** by running using the Bash tool with description "Launching oracle in tmux...":
|
|
621
|
+
**Create the loop marker file** by running using the Bash tool with description "Creating oracle loop marker...":
|
|
586
622
|
|
|
587
623
|
```bash
|
|
588
|
-
|
|
624
|
+
SESSION_ID="${CLAUDE_SESSION_ID:-$(uuidgen 2>/dev/null || date +%s)}"
|
|
625
|
+
MAX_IT=<max_iterations from wizard>
|
|
626
|
+
TARGET_CONF=<target_confidence from wizard>
|
|
627
|
+
cat > .aether/oracle/.loop-active <<MARKER
|
|
628
|
+
---
|
|
629
|
+
iteration: 0
|
|
630
|
+
max_iterations: $MAX_IT
|
|
631
|
+
session_id: $SESSION_ID
|
|
632
|
+
phase: survey
|
|
633
|
+
target_confidence: $TARGET_CONF
|
|
634
|
+
synthesis_done: false
|
|
635
|
+
oracle_md_path: .aether/utils/oracle/oracle.md
|
|
636
|
+
---
|
|
637
|
+
Oracle research loop active
|
|
638
|
+
MARKER
|
|
639
|
+
echo "LOOP_MARKER_CREATED"
|
|
589
640
|
```
|
|
590
641
|
|
|
591
|
-
|
|
642
|
+
Output:
|
|
592
643
|
|
|
593
644
|
```
|
|
594
|
-
🔮🐜 Oracle
|
|
645
|
+
🔮🐜 Oracle Research Started (In-Session Loop)
|
|
595
646
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
596
647
|
|
|
597
|
-
The Oracle is researching
|
|
648
|
+
The Oracle is researching IN THIS SESSION.
|
|
649
|
+
|
|
650
|
+
The Stop hook will keep the loop running automatically:
|
|
651
|
+
- Each iteration researches one question
|
|
652
|
+
- Phases advance: survey -> investigate -> synthesize -> verify
|
|
653
|
+
- Loop ends when confidence reaches {target_confidence}% or max iterations hit
|
|
654
|
+
- A final synthesis pass produces the research report
|
|
598
655
|
|
|
599
|
-
👁️ Watch live: tmux attach -t oracle
|
|
600
656
|
📊 Check status: /ant:oracle status
|
|
601
657
|
🛑 Stop early: /ant:oracle stop
|
|
602
658
|
|
|
603
659
|
Research progress visible at .aether/oracle/research-plan.md
|
|
604
|
-
The Oracle will stop when it reaches {target_confidence}% confidence
|
|
605
|
-
or completes {max_iterations} iterations.
|
|
606
660
|
|
|
607
661
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
608
662
|
|
|
609
|
-
You can
|
|
610
|
-
```
|
|
611
|
-
|
|
612
|
-
Stop here.
|
|
613
|
-
|
|
614
|
-
**If TMUX_FAIL** (tmux not installed or error):
|
|
615
|
-
|
|
663
|
+
You can continue chatting. The Oracle loop runs between your messages.
|
|
616
664
|
```
|
|
617
|
-
🔮 Ready to Launch
|
|
618
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
619
|
-
|
|
620
|
-
tmux not available. Run this in a separate terminal:
|
|
621
665
|
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
Then come back here:
|
|
626
|
-
📊 Check status: /ant:oracle status
|
|
627
|
-
🛑 Stop early: /ant:oracle stop
|
|
628
|
-
|
|
629
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
630
|
-
```
|
|
666
|
+
**Now begin the first iteration.** Read `.aether/utils/oracle/oracle.md` and start the survey phase research immediately.
|
|
667
|
+
Target the first untouched question from plan.json. Update state files as you go.
|
|
668
|
+
When you try to stop, the Stop hook will check progress and continue the loop if needed.
|
|
631
669
|
|
|
632
670
|
Generate the state-based Next Up block by running using the Bash tool with description "Generating Next Up suggestions...":
|
|
633
671
|
```bash
|
|
634
672
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
635
673
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
636
674
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
637
|
-
|
|
675
|
+
aether print-next-up
|
|
638
676
|
```
|
|
639
677
|
|
|
640
|
-
Stop here.
|
|
641
|
-
|
|
642
678
|
body_opencode: |
|
|
643
679
|
You are the **Oracle Ant** command handler. You configure and launch a deep research loop that runs autonomously in a separate process.
|
|
644
680
|
|
|
@@ -679,10 +715,10 @@ body_opencode: |
|
|
|
679
715
|
|
|
680
716
|
### Step 0b: Stop Oracle
|
|
681
717
|
|
|
682
|
-
|
|
718
|
+
Stop any active Oracle research:
|
|
683
719
|
|
|
684
720
|
```bash
|
|
685
|
-
mkdir -p .aether/oracle && touch .aether/oracle/.stop
|
|
721
|
+
mkdir -p .aether/oracle && touch .aether/oracle/.stop && rm -f .aether/oracle/.loop-active
|
|
686
722
|
```
|
|
687
723
|
|
|
688
724
|
Output:
|
|
@@ -690,8 +726,9 @@ body_opencode: |
|
|
|
690
726
|
```
|
|
691
727
|
🔮 Oracle Stop Signal Sent
|
|
692
728
|
|
|
693
|
-
Created .aether/oracle/.stop
|
|
694
|
-
|
|
729
|
+
Created .aether/oracle/.stop (legacy tmux signal)
|
|
730
|
+
Removed .aether/oracle/.loop-active (in-session loop marker)
|
|
731
|
+
The research loop will halt at the next iteration boundary.
|
|
695
732
|
|
|
696
733
|
To check final results: /ant:oracle status
|
|
697
734
|
```
|
|
@@ -913,6 +950,41 @@ body_opencode: |
|
|
|
913
950
|
|
|
914
951
|
(The user will type their topic via the "Other" free-text option.)
|
|
915
952
|
|
|
953
|
+
**Question 1.5: Research Brief — Formulate and Approve**
|
|
954
|
+
|
|
955
|
+
Take the user's raw topic (from `$normalized_args` or Question 1) and reformulate it into a structured research brief. The user may have typed casual natural language — your job is to sharpen it into a clear, well-scoped research prompt that will produce better results.
|
|
956
|
+
|
|
957
|
+
Display the brief for approval:
|
|
958
|
+
|
|
959
|
+
```
|
|
960
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
961
|
+
🔮 R E S E A R C H B R I E F
|
|
962
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
963
|
+
|
|
964
|
+
**Topic:** {reformulated topic — clear, specific, actionable}
|
|
965
|
+
**Core Question:** {the single most important question this research should answer}
|
|
966
|
+
**Context:** {what we already know from the codebase or user input}
|
|
967
|
+
**Success Criteria:** {what a good answer looks like — what would make this research useful}
|
|
968
|
+
```
|
|
969
|
+
|
|
970
|
+
Guidelines for formulation:
|
|
971
|
+
- Turn vague topics into specific ones ("auth stuff" → "Authentication architecture: session-based vs token-based for this Node.js API")
|
|
972
|
+
- Add codebase context if relevant (tech stack, existing patterns)
|
|
973
|
+
- Make the core question answerable — not open-ended philosophy
|
|
974
|
+
- Keep success criteria concrete ("A recommendation with trade-offs" not "understand everything")
|
|
975
|
+
|
|
976
|
+
Then ask the user to approve:
|
|
977
|
+
|
|
978
|
+
```
|
|
979
|
+
Does this capture what you're looking for? (approve / edit)
|
|
980
|
+
```
|
|
981
|
+
|
|
982
|
+
- If the user approves: use the reformulated topic as the research topic going forward
|
|
983
|
+
- If the user edits: incorporate their changes, display the updated brief, and ask again
|
|
984
|
+
- Max 2 revision rounds (same as init). After 2, ask for final approval or cancel.
|
|
985
|
+
|
|
986
|
+
The approved **Topic** from the brief becomes the topic used in all subsequent steps (state.json, plan.json, research-plan.md).
|
|
987
|
+
|
|
916
988
|
**Question 2: Research Template**
|
|
917
989
|
|
|
918
990
|
```
|
|
@@ -1048,7 +1120,7 @@ body_opencode: |
|
|
|
1048
1120
|
For each focus area string from Question 7:
|
|
1049
1121
|
|
|
1050
1122
|
```bash
|
|
1051
|
-
|
|
1123
|
+
aether pheromone-write --type FOCUS --content "$focus_area" \
|
|
1052
1124
|
--strength 0.8 --source "oracle:wizard" \
|
|
1053
1125
|
--reason "Focus area set in oracle wizard" --ttl "24h" 2>/dev/null || true
|
|
1054
1126
|
```
|
|
@@ -1147,7 +1219,7 @@ body_opencode: |
|
|
|
1147
1219
|
|
|
1148
1220
|
---
|
|
1149
1221
|
|
|
1150
|
-
### Step 3: Launch
|
|
1222
|
+
### Step 3: Launch (In-Session Loop)
|
|
1151
1223
|
|
|
1152
1224
|
Output the research configuration summary, showing the sub-questions from plan.json:
|
|
1153
1225
|
|
|
@@ -1171,54 +1243,47 @@ body_opencode: |
|
|
|
1171
1243
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1172
1244
|
```
|
|
1173
1245
|
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
**Try tmux:**
|
|
1246
|
+
**Create the loop marker file:**
|
|
1177
1247
|
|
|
1178
1248
|
```bash
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
The Oracle will stop when it reaches {target_confidence}% confidence
|
|
1196
|
-
or completes {max_iterations} iterations.
|
|
1197
|
-
|
|
1198
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1199
|
-
|
|
1200
|
-
You can keep working. The Oracle runs independently.
|
|
1249
|
+
SESSION_ID="${CLAUDE_SESSION_ID:-$(uuidgen 2>/dev/null || date +%s)}"
|
|
1250
|
+
MAX_IT=<max_iterations from wizard>
|
|
1251
|
+
TARGET_CONF=<target_confidence from wizard>
|
|
1252
|
+
cat > .aether/oracle/.loop-active <<MARKER
|
|
1253
|
+
---
|
|
1254
|
+
iteration: 0
|
|
1255
|
+
max_iterations: $MAX_IT
|
|
1256
|
+
session_id: $SESSION_ID
|
|
1257
|
+
phase: survey
|
|
1258
|
+
target_confidence: $TARGET_CONF
|
|
1259
|
+
synthesis_done: false
|
|
1260
|
+
oracle_md_path: .aether/utils/oracle/oracle.md
|
|
1261
|
+
---
|
|
1262
|
+
Oracle research loop active
|
|
1263
|
+
MARKER
|
|
1264
|
+
echo "LOOP_MARKER_CREATED"
|
|
1201
1265
|
```
|
|
1202
1266
|
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
**If TMUX_FAIL** (tmux not installed or error):
|
|
1267
|
+
Output:
|
|
1206
1268
|
|
|
1207
1269
|
```
|
|
1208
|
-
🔮
|
|
1270
|
+
🔮 Oracle Research Started (In-Session Loop)
|
|
1209
1271
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1210
1272
|
|
|
1211
|
-
|
|
1273
|
+
The Oracle is researching IN THIS SESSION.
|
|
1212
1274
|
|
|
1213
|
-
|
|
1214
|
-
|
|
1275
|
+
The Stop hook keeps the loop running automatically between iterations.
|
|
1276
|
+
Phases advance: survey -> investigate -> synthesize -> verify
|
|
1277
|
+
Loop ends when confidence target is reached or max iterations hit.
|
|
1215
1278
|
|
|
1216
|
-
Then come back here:
|
|
1217
1279
|
📊 Check status: /ant:oracle status
|
|
1218
1280
|
🛑 Stop early: /ant:oracle stop
|
|
1219
1281
|
|
|
1220
1282
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1283
|
+
|
|
1284
|
+
You can continue chatting. The Oracle loop runs between your messages.
|
|
1221
1285
|
```
|
|
1222
1286
|
|
|
1223
|
-
|
|
1287
|
+
**Now begin the first iteration.** Read `.aether/utils/oracle/oracle.md` and start survey phase research.
|
|
1288
|
+
Target the first untouched question from plan.json. Update state files as you go.
|
|
1224
1289
|
|
|
@@ -30,7 +30,7 @@ body_claude: |
|
|
|
30
30
|
|
|
31
31
|
Run using the Bash tool with description "Loading active pheromones...":
|
|
32
32
|
```bash
|
|
33
|
-
|
|
33
|
+
aether pheromone-read
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
|
|
@@ -206,7 +206,7 @@ body_claude: |
|
|
|
206
206
|
|
|
207
207
|
Use the Bash tool with description "Logging hygiene activity..." to run:
|
|
208
208
|
```
|
|
209
|
-
|
|
209
|
+
aether activity-log "COMPLETE" "queen" "Hygiene report generated"
|
|
210
210
|
```
|
|
211
211
|
|
|
212
212
|
Display persistence confirmation:
|
|
@@ -225,7 +225,7 @@ body_claude: |
|
|
|
225
225
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
226
226
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
227
227
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
228
|
-
|
|
228
|
+
aether print-next-up
|
|
229
229
|
```
|
|
230
230
|
|
|
231
231
|
body_opencode: |
|
|
@@ -255,7 +255,7 @@ body_opencode: |
|
|
|
255
255
|
|
|
256
256
|
Run using the Bash tool:
|
|
257
257
|
```bash
|
|
258
|
-
|
|
258
|
+
aether pheromone-read
|
|
259
259
|
```
|
|
260
260
|
|
|
261
261
|
Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
|
|
@@ -432,7 +432,7 @@ body_opencode: |
|
|
|
432
432
|
|
|
433
433
|
Use the Bash tool to run:
|
|
434
434
|
```
|
|
435
|
-
|
|
435
|
+
aether activity-log "COMPLETE" "queen" "Hygiene report generated"
|
|
436
436
|
```
|
|
437
437
|
|
|
438
438
|
Display persistence confirmation:
|
|
@@ -78,7 +78,7 @@ body: |
|
|
|
78
78
|
Display audit header:
|
|
79
79
|
```
|
|
80
80
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
81
|
-
|
|
81
|
+
🔍 C O L O N Y A U D I T
|
|
82
82
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
83
83
|
|
|
84
84
|
Goal: {goal}
|
|
@@ -248,12 +248,12 @@ body: |
|
|
|
248
248
|
|
|
249
249
|
**Flags check:**
|
|
250
250
|
```bash
|
|
251
|
-
|
|
251
|
+
aether flag-list --json 2>/dev/null || echo '{"result":{"flags":[]}}'
|
|
252
252
|
```
|
|
253
253
|
|
|
254
254
|
**Midden check:**
|
|
255
255
|
```bash
|
|
256
|
-
|
|
256
|
+
aether midden-recent-failures 2>/dev/null || echo '{"result":{"failures":[]}}'
|
|
257
257
|
```
|
|
258
258
|
|
|
259
259
|
**Parse flag results:**
|
|
@@ -333,12 +333,12 @@ body: |
|
|
|
333
333
|
|
|
334
334
|
**Expire stale pheromones:**
|
|
335
335
|
```bash
|
|
336
|
-
|
|
336
|
+
aether pheromone-expire 2>/dev/null || true
|
|
337
337
|
```
|
|
338
338
|
|
|
339
339
|
**Load memory metrics:**
|
|
340
340
|
```bash
|
|
341
|
-
|
|
341
|
+
aether memory-metrics 2>/dev/null || echo '{}'
|
|
342
342
|
```
|
|
343
343
|
|
|
344
344
|
**Load instincts:**
|
|
@@ -358,7 +358,7 @@ body: |
|
|
|
358
358
|
|
|
359
359
|
**Count pheromone signals:**
|
|
360
360
|
```bash
|
|
361
|
-
|
|
361
|
+
aether pheromone-count 2>/dev/null || echo '{"result":{"count":0}}'
|
|
362
362
|
```
|
|
363
363
|
|
|
364
364
|
Display:
|
|
@@ -502,7 +502,7 @@ body: |
|
|
|
502
502
|
|
|
503
503
|
```
|
|
504
504
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
505
|
-
|
|
505
|
+
📋 A U D I T R E S U L T S
|
|
506
506
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
507
507
|
|
|
508
508
|
Goal: {goal}
|
|
@@ -587,7 +587,7 @@ body: |
|
|
|
587
587
|
|
|
588
588
|
Run using the Bash tool:
|
|
589
589
|
```bash
|
|
590
|
-
|
|
590
|
+
aether activity-log "COMPLETE" "queen" "Colony audit completed - {recommendation}"
|
|
591
591
|
```
|
|
592
592
|
|
|
593
593
|
Display persistence confirmation:
|
|
@@ -22,7 +22,7 @@ body_claude: |
|
|
|
22
22
|
|
|
23
23
|
Run using the Bash tool with description "Loading active pheromones...":
|
|
24
24
|
```bash
|
|
25
|
-
|
|
25
|
+
aether pheromone-read
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
|
|
@@ -114,7 +114,7 @@ body_claude: |
|
|
|
114
114
|
|
|
115
115
|
**4. Generate Enhanced Commit Message:**
|
|
116
116
|
```bash
|
|
117
|
-
|
|
117
|
+
aether generate-commit-message --type "contextual" --phase {current_phase} --subject "{phase_name}" "{ai_description}" {plan_number}
|
|
118
118
|
```
|
|
119
119
|
|
|
120
120
|
Parse the returned JSON to extract `message`, `body`, `files_changed`, `subsystem`, and `scope`.
|
|
@@ -170,12 +170,12 @@ body_claude: |
|
|
|
170
170
|
Log this pause activity to `.aether/CONTEXT.md` by running using the Bash tool with description "Updating context document...":
|
|
171
171
|
|
|
172
172
|
```bash
|
|
173
|
-
|
|
173
|
+
aether context-update activity "pause-colony" "Colony paused — handoff created" "—"
|
|
174
174
|
```
|
|
175
175
|
|
|
176
176
|
Update safe-to-clear status by running using the Bash tool with description "Marking safe to clear...":
|
|
177
177
|
```bash
|
|
178
|
-
|
|
178
|
+
aether context-update safe-to-clear "YES" "Colony paused — safe to /clear, run /ant:resume-colony to continue"
|
|
179
179
|
```
|
|
180
180
|
|
|
181
181
|
### Step 5: Display Confirmation
|
|
@@ -226,7 +226,7 @@ body_claude: |
|
|
|
226
226
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
227
227
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
228
228
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
229
|
-
|
|
229
|
+
aether print-next-up
|
|
230
230
|
```
|
|
231
231
|
|
|
232
232
|
body_opencode: |
|
|
@@ -248,7 +248,7 @@ body_opencode: |
|
|
|
248
248
|
|
|
249
249
|
Run using the Bash tool:
|
|
250
250
|
```bash
|
|
251
|
-
|
|
251
|
+
aether pheromone-read
|
|
252
252
|
```
|
|
253
253
|
|
|
254
254
|
Use `.result.signals` as the active signal list (already decay-filtered by runtime logic).
|
|
@@ -329,7 +329,7 @@ body_opencode: |
|
|
|
329
329
|
|
|
330
330
|
3. **Generate the commit message:**
|
|
331
331
|
```bash
|
|
332
|
-
|
|
332
|
+
aether generate-commit-message --type "pause" --phase {current_phase} --subject "{phase_name}"
|
|
333
333
|
```
|
|
334
334
|
Parse the returned JSON to extract `message` and `files_changed`.
|
|
335
335
|
|
|
@@ -79,7 +79,7 @@ body: |
|
|
|
79
79
|
state=$(jq -r '.state // "IDLE"' .aether/data/COLONY_STATE.json)
|
|
80
80
|
current_phase=$(jq -r '.current_phase // 0' .aether/data/COLONY_STATE.json)
|
|
81
81
|
total_phases=$(jq -r '.plan.phases | length' .aether/data/COLONY_STATE.json)
|
|
82
|
-
|
|
82
|
+
aether print-next-up
|
|
83
83
|
```
|
|
84
84
|
{{/claude}}
|
|
85
85
|
|
|
@@ -109,7 +109,7 @@ body: |
|
|
|
109
109
|
|
|
110
110
|
Run using the Bash tool with description "Displaying pheromones...":
|
|
111
111
|
```bash
|
|
112
|
-
|
|
112
|
+
aether pheromone-display "{subcommand or 'all'}"
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
The output will be the formatted pheromone table.
|