aether-colony 5.1.0 → 5.3.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 +157 -42
- package/.aether/agents/aether-ambassador.md +140 -0
- package/.aether/agents/aether-archaeologist.md +108 -0
- package/.aether/agents/aether-architect.md +133 -0
- package/.aether/agents/aether-auditor.md +144 -0
- package/.aether/agents/aether-builder.md +184 -0
- package/.aether/agents/aether-chaos.md +115 -0
- package/.aether/agents/aether-chronicler.md +122 -0
- package/.aether/agents/aether-gatekeeper.md +116 -0
- package/.aether/agents/aether-includer.md +117 -0
- package/.aether/agents/aether-keeper.md +177 -0
- package/.aether/agents/aether-measurer.md +128 -0
- package/.aether/agents/aether-oracle.md +137 -0
- package/.aether/agents/aether-probe.md +133 -0
- package/.aether/agents/aether-queen.md +286 -0
- package/.aether/agents/aether-route-setter.md +130 -0
- package/.aether/agents/aether-sage.md +106 -0
- package/.aether/agents/aether-scout.md +101 -0
- package/.aether/agents/aether-surveyor-disciplines.md +391 -0
- package/.aether/agents/aether-surveyor-nest.md +329 -0
- package/.aether/agents/aether-surveyor-pathogens.md +264 -0
- package/.aether/agents/aether-surveyor-provisions.md +334 -0
- package/.aether/agents/aether-tracker.md +137 -0
- package/.aether/agents/aether-watcher.md +174 -0
- package/.aether/agents/aether-weaver.md +130 -0
- package/.aether/commands/claude/archaeology.md +334 -0
- package/.aether/commands/claude/build.md +65 -0
- package/.aether/commands/claude/chaos.md +336 -0
- package/.aether/commands/claude/colonize.md +259 -0
- package/.aether/commands/claude/continue.md +60 -0
- package/.aether/commands/claude/council.md +507 -0
- package/.aether/commands/claude/data-clean.md +81 -0
- package/.aether/commands/claude/dream.md +268 -0
- package/.aether/commands/claude/entomb.md +498 -0
- package/.aether/commands/claude/export-signals.md +57 -0
- package/.aether/commands/claude/feedback.md +96 -0
- package/.aether/commands/claude/flag.md +151 -0
- package/.aether/commands/claude/flags.md +169 -0
- package/.aether/commands/claude/focus.md +76 -0
- package/.aether/commands/claude/help.md +154 -0
- package/.aether/commands/claude/history.md +140 -0
- package/.aether/commands/claude/import-signals.md +71 -0
- package/.aether/commands/claude/init.md +505 -0
- package/.aether/commands/claude/insert-phase.md +105 -0
- package/.aether/commands/claude/interpret.md +278 -0
- package/.aether/commands/claude/lay-eggs.md +210 -0
- package/.aether/commands/claude/maturity.md +113 -0
- package/.aether/commands/claude/memory-details.md +77 -0
- package/.aether/commands/claude/migrate-state.md +171 -0
- package/.aether/commands/claude/oracle.md +642 -0
- package/.aether/commands/claude/organize.md +232 -0
- package/.aether/commands/claude/patrol.md +620 -0
- package/.aether/commands/claude/pause-colony.md +233 -0
- package/.aether/commands/claude/phase.md +115 -0
- package/.aether/commands/claude/pheromones.md +156 -0
- package/.aether/commands/claude/plan.md +693 -0
- package/.aether/commands/claude/preferences.md +65 -0
- package/.aether/commands/claude/quick.md +100 -0
- package/.aether/commands/claude/redirect.md +76 -0
- package/.aether/commands/claude/resume-colony.md +197 -0
- package/.aether/commands/claude/resume.md +388 -0
- package/.aether/commands/claude/run.md +231 -0
- package/.aether/commands/claude/seal.md +774 -0
- package/.aether/commands/claude/skill-create.md +286 -0
- package/.aether/commands/claude/status.md +410 -0
- package/.aether/commands/claude/swarm.md +349 -0
- package/.aether/commands/claude/tunnels.md +426 -0
- package/.aether/commands/claude/update.md +132 -0
- package/.aether/commands/claude/verify-castes.md +143 -0
- package/.aether/commands/claude/watch.md +239 -0
- package/.aether/commands/colonize.yaml +4 -0
- package/.aether/commands/council.yaml +205 -0
- package/.aether/commands/init.yaml +46 -13
- package/.aether/commands/insert-phase.yaml +4 -0
- package/.aether/commands/opencode/archaeology.md +331 -0
- package/.aether/commands/opencode/build.md +1168 -0
- package/.aether/commands/opencode/chaos.md +329 -0
- package/.aether/commands/opencode/colonize.md +195 -0
- package/.aether/commands/opencode/continue.md +1436 -0
- package/.aether/commands/opencode/council.md +437 -0
- package/.aether/commands/opencode/data-clean.md +77 -0
- package/.aether/commands/opencode/dream.md +260 -0
- package/.aether/commands/opencode/entomb.md +377 -0
- package/.aether/commands/opencode/export-signals.md +54 -0
- package/.aether/commands/opencode/feedback.md +99 -0
- package/.aether/commands/opencode/flag.md +149 -0
- package/.aether/commands/opencode/flags.md +167 -0
- package/.aether/commands/opencode/focus.md +73 -0
- package/.aether/commands/opencode/help.md +157 -0
- package/.aether/commands/opencode/history.md +136 -0
- package/.aether/commands/opencode/import-signals.md +68 -0
- package/.aether/commands/opencode/init.md +518 -0
- package/.aether/commands/opencode/insert-phase.md +111 -0
- package/.aether/commands/opencode/interpret.md +272 -0
- package/.aether/commands/opencode/lay-eggs.md +213 -0
- package/.aether/commands/opencode/maturity.md +108 -0
- package/.aether/commands/opencode/memory-details.md +83 -0
- package/.aether/commands/opencode/migrate-state.md +165 -0
- package/.aether/commands/opencode/oracle.md +593 -0
- package/.aether/commands/opencode/organize.md +226 -0
- package/.aether/commands/opencode/patrol.md +626 -0
- package/.aether/commands/opencode/pause-colony.md +203 -0
- package/.aether/commands/opencode/phase.md +113 -0
- package/.aether/commands/opencode/pheromones.md +162 -0
- package/.aether/commands/opencode/plan.md +684 -0
- package/.aether/commands/opencode/preferences.md +71 -0
- package/.aether/commands/opencode/quick.md +91 -0
- package/.aether/commands/opencode/redirect.md +84 -0
- package/.aether/commands/opencode/resume-colony.md +190 -0
- package/.aether/commands/opencode/resume.md +394 -0
- package/.aether/commands/opencode/run.md +237 -0
- package/.aether/commands/opencode/seal.md +452 -0
- package/.aether/commands/opencode/skill-create.md +63 -0
- package/.aether/commands/opencode/status.md +307 -0
- package/.aether/commands/opencode/swarm.md +15 -0
- package/.aether/commands/opencode/tunnels.md +400 -0
- package/.aether/commands/opencode/update.md +127 -0
- package/.aether/commands/opencode/verify-castes.md +139 -0
- package/.aether/commands/opencode/watch.md +227 -0
- package/.aether/commands/plan.yaml +53 -2
- package/.aether/commands/quick.yaml +104 -0
- package/.aether/commands/resume-colony.yaml +6 -4
- package/.aether/commands/resume.yaml +9 -0
- package/.aether/commands/run.yaml +37 -1
- package/.aether/commands/seal.yaml +9 -0
- package/.aether/commands/status.yaml +45 -1
- package/.aether/docs/command-playbooks/build-full.md +3 -2
- package/.aether/docs/command-playbooks/build-prep.md +12 -4
- package/.aether/docs/command-playbooks/build-verify.md +51 -0
- package/.aether/docs/command-playbooks/continue-advance.md +115 -6
- package/.aether/docs/command-playbooks/continue-full.md +1 -0
- package/.aether/docs/command-playbooks/continue-verify.md +33 -0
- package/.aether/utils/clash-detect.sh +239 -0
- package/.aether/utils/council.sh +425 -0
- package/.aether/utils/error-handler.sh +3 -3
- package/.aether/utils/flag.sh +23 -12
- package/.aether/utils/hive.sh +2 -2
- package/.aether/utils/hooks/clash-pre-tool-use.js +99 -0
- package/.aether/utils/immune.sh +508 -0
- package/.aether/utils/learning.sh +2 -2
- package/.aether/utils/merge-driver-lockfile.sh +35 -0
- package/.aether/utils/midden.sh +712 -0
- package/.aether/utils/pheromone.sh +1376 -108
- package/.aether/utils/queen.sh +31 -21
- package/.aether/utils/session.sh +264 -0
- package/.aether/utils/spawn-tree.sh +7 -7
- package/.aether/utils/spawn.sh +2 -2
- package/.aether/utils/state-api.sh +216 -5
- package/.aether/utils/swarm.sh +1 -1
- package/.aether/utils/worktree.sh +189 -0
- package/.claude/commands/ant/colonize.md +2 -0
- package/.claude/commands/ant/council.md +205 -0
- package/.claude/commands/ant/init.md +53 -14
- package/.claude/commands/ant/insert-phase.md +4 -0
- package/.claude/commands/ant/plan.md +27 -1
- package/.claude/commands/ant/quick.md +100 -0
- package/.claude/commands/ant/resume-colony.md +3 -2
- package/.claude/commands/ant/resume.md +9 -0
- package/.claude/commands/ant/run.md +37 -1
- package/.claude/commands/ant/seal.md +9 -0
- package/.claude/commands/ant/status.md +45 -1
- package/.opencode/commands/ant/colonize.md +2 -0
- package/.opencode/commands/ant/council.md +143 -0
- package/.opencode/commands/ant/init.md +53 -13
- package/.opencode/commands/ant/insert-phase.md +4 -0
- package/.opencode/commands/ant/plan.md +26 -1
- package/.opencode/commands/ant/quick.md +91 -0
- package/.opencode/commands/ant/resume-colony.md +3 -2
- package/.opencode/commands/ant/resume.md +9 -0
- package/.opencode/commands/ant/run.md +37 -1
- package/.opencode/commands/ant/status.md +2 -0
- package/CHANGELOG.md +116 -0
- package/README.md +34 -8
- package/bin/cli.js +103 -61
- package/bin/lib/banner.js +14 -0
- package/bin/lib/init.js +8 -7
- package/bin/lib/interactive-setup.js +251 -0
- package/bin/npx-entry.js +21 -0
- package/bin/npx-install.js +9 -167
- package/bin/validate-package.sh +23 -0
- package/package.json +11 -3
- package/.aether/docs/plans/pheromone-display-plan.md +0 -257
- package/.aether/schemas/example-prompt-builder.xml +0 -234
- package/.aether/scripts/incident-test-add.sh +0 -47
- package/.aether/scripts/weekly-audit.sh +0 -79
package/.aether/aether-utils.sh
CHANGED
|
@@ -44,6 +44,10 @@ CURRENT_LOCK=${CURRENT_LOCK:-""}
|
|
|
44
44
|
[[ -f "$SCRIPT_DIR/utils/pheromone.sh" ]] && source "$SCRIPT_DIR/utils/pheromone.sh"
|
|
45
45
|
[[ -f "$SCRIPT_DIR/utils/scan.sh" ]] && source "$SCRIPT_DIR/utils/scan.sh"
|
|
46
46
|
[[ -f "$SCRIPT_DIR/utils/emoji-audit.sh" ]] && source "$SCRIPT_DIR/utils/emoji-audit.sh"
|
|
47
|
+
[[ -f "$SCRIPT_DIR/utils/immune.sh" ]] && source "$SCRIPT_DIR/utils/immune.sh"
|
|
48
|
+
[[ -f "$SCRIPT_DIR/utils/council.sh" ]] && source "$SCRIPT_DIR/utils/council.sh"
|
|
49
|
+
[[ -f "$SCRIPT_DIR/utils/clash-detect.sh" ]] && source "$SCRIPT_DIR/utils/clash-detect.sh"
|
|
50
|
+
[[ -f "$SCRIPT_DIR/utils/worktree.sh" ]] && source "$SCRIPT_DIR/utils/worktree.sh"
|
|
47
51
|
|
|
48
52
|
# Fallback error constants if error-handler.sh wasn't sourced
|
|
49
53
|
# This prevents "unbound variable" errors in older installations
|
|
@@ -106,7 +110,7 @@ if ! type json_err &>/dev/null; then
|
|
|
106
110
|
local code="${1:-E_UNKNOWN}"
|
|
107
111
|
local message="${2:-An unknown error occurred}"
|
|
108
112
|
printf '[aether] Warning: error-handler.sh not loaded — using minimal fallback\n' >&2
|
|
109
|
-
printf '{
|
|
113
|
+
printf '%s\n' "$(jq -nc --arg c "$code" --arg m "$message" '{ok:false,error:{code:$c,message:$m}}')" >&2
|
|
110
114
|
exit 1
|
|
111
115
|
}
|
|
112
116
|
fi
|
|
@@ -570,7 +574,7 @@ Git Commits: 0
|
|
|
570
574
|
|
|
571
575
|
**Colony Memory Active** 🧠🐜
|
|
572
576
|
EOF
|
|
573
|
-
json_ok "{
|
|
577
|
+
json_ok "$(jq -nc --arg file "$ctx_file" '{updated:true,action:"init",file:$file}')"
|
|
574
578
|
;;
|
|
575
579
|
|
|
576
580
|
update-phase)
|
|
@@ -586,7 +590,7 @@ EOF
|
|
|
586
590
|
sed -i.bak "s/| \*\*Phase Name\*\* | .*/| **Phase Name** | $new_phase_name |/" "$ctx_file" && rm -f "$ctx_file.bak"
|
|
587
591
|
sed -i.bak "s/| \*\*Safe to Clear?\*\* | .*/| **Safe to Clear?** | $safe_clear — $safe_reason |/" "$ctx_file" && rm -f "$ctx_file.bak"
|
|
588
592
|
|
|
589
|
-
json_ok "{
|
|
593
|
+
json_ok "$(jq -nc --argjson phase "$new_phase" '{updated:true,action:"update-phase",phase:$phase}')"
|
|
590
594
|
;;
|
|
591
595
|
|
|
592
596
|
activity)
|
|
@@ -613,7 +617,7 @@ EOF
|
|
|
613
617
|
' "$ctx_file" > "$ctx_tmp"
|
|
614
618
|
|
|
615
619
|
mv "$ctx_tmp" "$ctx_file"
|
|
616
|
-
json_ok "{
|
|
620
|
+
json_ok "$(jq -nc --arg cmd "$cmd" '{updated:true,action:"activity",command:$cmd}')"
|
|
617
621
|
;;
|
|
618
622
|
|
|
619
623
|
safe-to-clear)
|
|
@@ -625,7 +629,7 @@ EOF
|
|
|
625
629
|
sed -i.bak "s/| \*\*Last Updated\*\* | .*/| **Last Updated** | $ctx_ts |/" "$ctx_file" && rm -f "$ctx_file.bak"
|
|
626
630
|
sed -i.bak "s/| \*\*Safe to Clear?\*\* | .*/| **Safe to Clear?** | $safe — $reason |/" "$ctx_file" && rm -f "$ctx_file.bak"
|
|
627
631
|
|
|
628
|
-
json_ok "{
|
|
632
|
+
json_ok "$(jq -nc --arg safe "$safe" '{updated:true,action:"safe-to-clear",safe:$safe}')"
|
|
629
633
|
;;
|
|
630
634
|
|
|
631
635
|
constraint)
|
|
@@ -651,7 +655,7 @@ EOF
|
|
|
651
655
|
}" "$ctx_file" && rm -f "$ctx_file.bak"
|
|
652
656
|
fi
|
|
653
657
|
|
|
654
|
-
json_ok "{
|
|
658
|
+
json_ok "$(jq -nc --arg type "$c_type" '{updated:true,action:"constraint",type:$type}')"
|
|
655
659
|
;;
|
|
656
660
|
|
|
657
661
|
decision)
|
|
@@ -692,7 +696,7 @@ EOF
|
|
|
692
696
|
--ttl "30d" 2>/dev/null \
|
|
693
697
|
|| _aether_log_error "Could not emit feedback signal for decision" # SUPPRESS:OK -- read-default: returns fallback on failure
|
|
694
698
|
|
|
695
|
-
json_ok "{
|
|
699
|
+
json_ok "$(jq -nc '{updated:true,action:"decision"}')"
|
|
696
700
|
;;
|
|
697
701
|
|
|
698
702
|
build-start)
|
|
@@ -706,7 +710,7 @@ EOF
|
|
|
706
710
|
sed -i.bak "s/## 📍 What's In Progress/## 📍 What's In Progress\n\n**Phase $phase_id Build IN PROGRESS**\n- Workers: $worker_count | Tasks: $tasks_count\n- Started: $ctx_ts/" "$ctx_file" && rm -f "$ctx_file.bak"
|
|
707
711
|
sed -i.bak "s/| \*\*Safe to Clear?\*\* | .*/| **Safe to Clear?** | ⚠️ NO — Build in progress |/" "$ctx_file" && rm -f "$ctx_file.bak"
|
|
708
712
|
|
|
709
|
-
json_ok "{
|
|
713
|
+
json_ok "$(jq -nc --argjson workers "$worker_count" '{updated:true,action:"build-start",workers:$workers}')"
|
|
710
714
|
;;
|
|
711
715
|
|
|
712
716
|
worker-spawn)
|
|
@@ -727,7 +731,7 @@ EOF
|
|
|
727
731
|
{ print }
|
|
728
732
|
' "$ctx_file" > "$ctx_tmp" && mv "$ctx_tmp" "$ctx_file"
|
|
729
733
|
|
|
730
|
-
json_ok "{
|
|
734
|
+
json_ok "$(jq -nc --arg ant "$ant_name" '{updated:true,action:"worker-spawn",ant:$ant}')"
|
|
731
735
|
;;
|
|
732
736
|
|
|
733
737
|
worker-complete)
|
|
@@ -738,7 +742,7 @@ EOF
|
|
|
738
742
|
|
|
739
743
|
sed -i.bak "s/- .*$ant_name .*$/- $ant_name: $status (updated $ctx_ts)/" "$ctx_file" && rm -f "$ctx_file.bak"
|
|
740
744
|
|
|
741
|
-
json_ok "{
|
|
745
|
+
json_ok "$(jq -nc --arg ant "$ant_name" '{updated:true,action:"worker-complete",ant:$ant}')"
|
|
742
746
|
;;
|
|
743
747
|
|
|
744
748
|
build-progress)
|
|
@@ -750,7 +754,7 @@ EOF
|
|
|
750
754
|
|
|
751
755
|
sed -i.bak "s/Build IN PROGRESS/Build IN PROGRESS ($percentage% complete)/" "$ctx_file" && rm -f "$ctx_file.bak"
|
|
752
756
|
|
|
753
|
-
json_ok "{
|
|
757
|
+
json_ok "$(jq -nc --argjson percent "$percentage" '{updated:true,action:"build-progress",percent:$percent}')"
|
|
754
758
|
;;
|
|
755
759
|
|
|
756
760
|
build-complete)
|
|
@@ -776,7 +780,7 @@ EOF
|
|
|
776
780
|
|
|
777
781
|
sed -i.bak "s/| \*\*Safe to Clear?\*\* | .*/| **Safe to Clear?** | ✅ YES — Build $status |/" "$ctx_file" && rm -f "$ctx_file.bak"
|
|
778
782
|
|
|
779
|
-
json_ok "{
|
|
783
|
+
json_ok "$(jq -nc --arg status "$status" '{updated:true,action:"build-complete",status:$status}')"
|
|
780
784
|
;;
|
|
781
785
|
|
|
782
786
|
*)
|
|
@@ -953,7 +957,7 @@ EOF
|
|
|
953
957
|
# Atomically replace the file
|
|
954
958
|
mv "$temp_file" "$changelog_file"
|
|
955
959
|
|
|
956
|
-
json_ok
|
|
960
|
+
json_ok "$(jq -nc --arg date "$date_str" --arg phase "$phase" --arg plan "$plan" '{appended:true,date:$date,phase:$phase,plan:$plan}')"
|
|
957
961
|
}
|
|
958
962
|
|
|
959
963
|
# Collect plan data for changelog entry
|
|
@@ -1174,7 +1178,7 @@ case "$cmd" in
|
|
|
1174
1178
|
cat <<'HELP_EOF'
|
|
1175
1179
|
{
|
|
1176
1180
|
"ok": true,
|
|
1177
|
-
"commands": ["help","version","validate-state","validate-oracle-state","load-state","unload-state","error-add","error-pattern-check","error-summary","activity-log","activity-log-init","activity-log-read","learning-promote","learning-inject","learning-observe","learning-check-promotion","learning-promote-auto","memory-capture","queen-thresholds","context-capsule","rolling-summary","generate-ant-name","spawn-log","spawn-complete","spawn-can-spawn","spawn-get-depth","spawn-tree-load","spawn-tree-active","spawn-tree-depth","spawn-efficiency","validate-worker-response","update-progress","check-antipattern","error-flag-pattern","signature-scan","signature-match","flag-add","flag-check-blockers","flag-resolve","flag-acknowledge","flag-list","flag-auto-resolve","autofix-checkpoint","autofix-rollback","spawn-can-spawn-swarm","swarm-findings-init","swarm-findings-add","swarm-findings-read","swarm-solution-set","swarm-cleanup","swarm-activity-log","swarm-display-init","swarm-display-update","swarm-display-get","swarm-display-text","swarm-timing-start","swarm-timing-get","swarm-timing-eta","view-state-init","view-state-get","view-state-set","view-state-toggle","view-state-expand","view-state-collapse","grave-add","grave-check","phase-insert","generate-commit-message","version-check","registry-add","registry-list","bootstrap-system","chamber-create","chamber-verify","chamber-list","milestone-detect","queen-init","queen-read","queen-promote","incident-rule-add","survey-load","survey-verify","pheromone-export","pheromone-write","pheromone-count","pheromone-read","instinct-read","instinct-create","instinct-apply","pheromone-prime","colony-prime","pheromone-expire","eternal-init","eternal-store","pheromone-export-xml","pheromone-import-xml","pheromone-validate-xml","wisdom-export-xml","wisdom-import-xml","registry-export-xml","registry-import-xml","memory-metrics","midden-recent-failures","midden-review","midden-acknowledge","entropy-score","force-unlock","changelog-append","changelog-collect-plan-data","suggest-approve","suggest-quick-dismiss","data-clean","autopilot-init","autopilot-update","autopilot-status","autopilot-stop","autopilot-check-replan","hive-init","hive-store","hive-read","hive-abstract","hive-promote","init-research","charter-write","colony-name","emoji-audit"],
|
|
1181
|
+
"commands": ["help","version","validate-state","validate-oracle-state","load-state","unload-state","error-add","error-pattern-check","error-summary","activity-log","activity-log-init","activity-log-read","learning-promote","learning-inject","learning-observe","learning-check-promotion","learning-promote-auto","memory-capture","queen-thresholds","context-capsule","rolling-summary","generate-ant-name","spawn-log","spawn-complete","spawn-can-spawn","spawn-get-depth","spawn-tree-load","spawn-tree-active","spawn-tree-depth","spawn-efficiency","validate-worker-response","update-progress","check-antipattern","error-flag-pattern","signature-scan","signature-match","flag-add","flag-check-blockers","flag-resolve","flag-acknowledge","flag-list","flag-auto-resolve","autofix-checkpoint","autofix-rollback","spawn-can-spawn-swarm","swarm-findings-init","swarm-findings-add","swarm-findings-read","swarm-solution-set","swarm-cleanup","swarm-activity-log","swarm-display-init","swarm-display-update","swarm-display-get","swarm-display-text","swarm-timing-start","swarm-timing-get","swarm-timing-eta","view-state-init","view-state-get","view-state-set","view-state-toggle","view-state-expand","view-state-collapse","grave-add","grave-check","phase-insert","generate-commit-message","version-check","registry-add","registry-list","bootstrap-system","chamber-create","chamber-verify","chamber-list","milestone-detect","queen-init","queen-read","queen-promote","incident-rule-add","survey-load","survey-verify","pheromone-export","pheromone-write","pheromone-count","pheromone-read","instinct-read","instinct-create","instinct-apply","pheromone-prime","colony-prime","pheromone-expire","eternal-init","eternal-store","pheromone-export-xml","pheromone-import-xml","pheromone-validate-xml","wisdom-export-xml","wisdom-import-xml","registry-export-xml","registry-import-xml","memory-metrics","midden-recent-failures","midden-review","midden-acknowledge","midden-search","midden-tag","entropy-score","force-unlock","changelog-append","changelog-collect-plan-data","suggest-approve","suggest-quick-dismiss","data-clean","autopilot-init","autopilot-update","autopilot-status","autopilot-stop","autopilot-check-replan","autopilot-set-headless","autopilot-headless-check","pending-decision-add","pending-decision-list","pending-decision-resolve","hive-init","hive-store","hive-read","hive-abstract","hive-promote","init-research","charter-write","colony-name","colony-vital-signs","emoji-audit","trophallaxis-diagnose","trophallaxis-retry","scar-add","scar-list","scar-check","immune-auto-scar","council-deliberate","council-advocate","council-challenger","council-sage","council-history","council-budget-check"],
|
|
1178
1182
|
"sections": {
|
|
1179
1183
|
"Core": [
|
|
1180
1184
|
{"name": "help", "description": "List all available commands with sections"},
|
|
@@ -1250,6 +1254,7 @@ case "$cmd" in
|
|
|
1250
1254
|
{"name": "pheromone-count", "description": "Count active pheromone signals"},
|
|
1251
1255
|
{"name": "pheromone-prime", "description": "Prime the pheromone system"},
|
|
1252
1256
|
{"name": "colony-prime", "description": "Assemble unified worker priming payload"},
|
|
1257
|
+
{"name": "pr-context", "description": "Generate CI-ready colony context as structured JSON"},
|
|
1253
1258
|
{"name": "pheromone-expire", "description": "Expire old pheromone signals"},
|
|
1254
1259
|
{"name": "eternal-store", "description": "Store high-value signals in eternal memory"},
|
|
1255
1260
|
{"name": "pheromone-export", "description": "Export pheromone data to JSON"},
|
|
@@ -1271,7 +1276,14 @@ case "$cmd" in
|
|
|
1271
1276
|
{"name": "midden-recent-failures", "description": "Read recent failure signals from midden"},
|
|
1272
1277
|
{"name": "midden-review", "description": "Review unacknowledged midden entries grouped by category"},
|
|
1273
1278
|
{"name": "midden-acknowledge", "description": "Acknowledge midden entries by id or category"},
|
|
1279
|
+
{"name": "midden-search", "description": "Search midden entries by keyword with optional category/source filters"},
|
|
1280
|
+
{"name": "midden-tag", "description": "Add or remove a tag from a midden entry"},
|
|
1281
|
+
{"name": "midden-collect", "description": "Collect failure records from a merged branch worktree into main midden"},
|
|
1282
|
+
{"name": "midden-handle-revert", "description": "Tag entries from a reverted merge commit (preserves audit trail)"},
|
|
1283
|
+
{"name": "midden-cross-pr-analysis", "description": "Detect failure patterns across multiple merged branches with auto-REDIRECT"},
|
|
1284
|
+
{"name": "midden-prune", "description": "Prune stale merge records and acknowledge old reverted entries"},
|
|
1274
1285
|
{"name": "entropy-score", "description": "Compute colony entropy score (0-100)"},
|
|
1286
|
+
{"name": "colony-vital-signs", "description": "Compute colony health metrics from existing data (velocity, errors, signals, memory, overall score)"},
|
|
1275
1287
|
{"name": "force-unlock", "description": "Emergency unlock — remove stale lock files"}
|
|
1276
1288
|
],
|
|
1277
1289
|
"Changelog": [
|
|
@@ -1290,7 +1302,12 @@ case "$cmd" in
|
|
|
1290
1302
|
{"name": "autopilot-update", "description": "Update autopilot state after phase action"},
|
|
1291
1303
|
{"name": "autopilot-status", "description": "Return current autopilot state"},
|
|
1292
1304
|
{"name": "autopilot-stop", "description": "Stop or complete an autopilot run with reason"},
|
|
1293
|
-
{"name": "autopilot-check-replan", "description": "Check if replan trigger should fire based on completed phases"}
|
|
1305
|
+
{"name": "autopilot-check-replan", "description": "Check if replan trigger should fire based on completed phases"},
|
|
1306
|
+
{"name": "autopilot-set-headless", "description": "Set headless mode flag in run-state.json (true or false)"},
|
|
1307
|
+
{"name": "autopilot-headless-check", "description": "Check if autopilot is running in headless mode"},
|
|
1308
|
+
{"name": "pending-decision-add", "description": "Queue a deferred decision for later review"},
|
|
1309
|
+
{"name": "pending-decision-list", "description": "List pending decisions, optionally filtered by type or status"},
|
|
1310
|
+
{"name": "pending-decision-resolve", "description": "Mark a pending decision as resolved with a resolution note"}
|
|
1294
1311
|
],
|
|
1295
1312
|
"Hive Intelligence": [
|
|
1296
1313
|
{"name": "hive-init", "description": "Initialize ~/.aether/hive/ directory and wisdom.json schema"},
|
|
@@ -1318,6 +1335,28 @@ case "$cmd" in
|
|
|
1318
1335
|
"Emoji Audit": [
|
|
1319
1336
|
{"name": "emoji-audit", "description": "Audit emoji usage in command files against the canonical colony-visuals reference map"}
|
|
1320
1337
|
],
|
|
1338
|
+
"Immune System": [
|
|
1339
|
+
{"name": "trophallaxis-diagnose", "description": "Diagnose a task failure by searching midden for related failures and suggesting an approach"},
|
|
1340
|
+
{"name": "trophallaxis-retry", "description": "Record a retry attempt for a task with diagnosis context injected"},
|
|
1341
|
+
{"name": "scar-add", "description": "Record a persistent failure pattern as a scar to warn future workers"},
|
|
1342
|
+
{"name": "scar-list", "description": "List scars, optionally filtered by active status or severity"},
|
|
1343
|
+
{"name": "scar-check", "description": "Check if a task description matches any active scar patterns"},
|
|
1344
|
+
{"name": "immune-auto-scar", "description": "Auto-create a scar if a task has been retried 3 or more times"}
|
|
1345
|
+
],
|
|
1346
|
+
"Council": [
|
|
1347
|
+
{"name": "council-deliberate", "description": "Start a new deliberation with Advocate/Challenger/Sage model and spawn budget guard"},
|
|
1348
|
+
{"name": "council-advocate", "description": "Record an advocate argument (FOR) for a deliberation"},
|
|
1349
|
+
{"name": "council-challenger", "description": "Record a challenger argument (AGAINST) for a deliberation"},
|
|
1350
|
+
{"name": "council-sage", "description": "Record sage synthesis and recommendation, marks deliberation complete"},
|
|
1351
|
+
{"name": "council-history", "description": "List past deliberations with their outcomes"},
|
|
1352
|
+
{"name": "council-budget-check", "description": "Check if current spawn budget allows N more spawns"}
|
|
1353
|
+
],
|
|
1354
|
+
"Clash Detection": [
|
|
1355
|
+
{"name": "clash-check", "description": "Check if a file has conflicts across active worktrees"},
|
|
1356
|
+
{"name": "clash-setup", "description": "Install or uninstall the PreToolUse clash detection hook"},
|
|
1357
|
+
{"name": "worktree-create", "description": "Create a git worktree with colony context copy"},
|
|
1358
|
+
{"name": "worktree-cleanup", "description": "Remove a git worktree and clean up tracking"}
|
|
1359
|
+
],
|
|
1321
1360
|
"Deprecated": [
|
|
1322
1361
|
{"name": "checkpoint-check", "description": "Check dirty files against allowlist [DEPRECATED]"},
|
|
1323
1362
|
{"name": "error-pattern-check", "description": "Check for error anti-patterns [DEPRECATED]"},
|
|
@@ -1348,7 +1387,7 @@ HELP_EOF
|
|
|
1348
1387
|
_pkg_json="$SCRIPT_DIR/../package.json"
|
|
1349
1388
|
if [[ -f "$_pkg_json" ]] && command -v jq >/dev/null 2>&1; then # SUPPRESS:OK -- cleanup: output suppression for clean operation
|
|
1350
1389
|
_ver=$(jq -r '.version // "unknown"' "$_pkg_json" 2>/dev/null) # SUPPRESS:OK -- read-default: file may not exist yet
|
|
1351
|
-
json_ok "
|
|
1390
|
+
json_ok "$(jq -nc --arg v "$_ver" '$v')"
|
|
1352
1391
|
else
|
|
1353
1392
|
json_ok '"1.1.5"'
|
|
1354
1393
|
fi
|
|
@@ -1381,6 +1420,7 @@ HELP_EOF
|
|
|
1381
1420
|
;;
|
|
1382
1421
|
constraints)
|
|
1383
1422
|
[[ -f "$COLONY_DATA_DIR/constraints.json" ]] || json_err "$E_FILE_NOT_FOUND" "constraints.json not found" '{"file":"constraints.json"}'
|
|
1423
|
+
[[ -s "$COLONY_DATA_DIR/constraints.json" ]] || { json_ok '{"file":"constraints.json","checks":["pass","pass"],"pass":true}'; exit 0; }
|
|
1384
1424
|
json_ok "$(jq '
|
|
1385
1425
|
def arr(f): if has(f) and (.[f]|type) == "array" then "pass" else "fail: \(f) not array" end;
|
|
1386
1426
|
{file:"constraints.json", checks:[
|
|
@@ -1428,7 +1468,7 @@ HELP_EOF
|
|
|
1428
1468
|
json_err "$E_FEATURE_UNAVAILABLE" "create_backup function not available -- atomic-write.sh may not be sourced"
|
|
1429
1469
|
fi
|
|
1430
1470
|
|
|
1431
|
-
json_ok "{
|
|
1471
|
+
json_ok "$(jq -nc --arg reason "$sc_reason" '{checkpointed:true,reason:$reason}')"
|
|
1432
1472
|
;;
|
|
1433
1473
|
state-write)
|
|
1434
1474
|
# MIGRATE: direct COLONY_STATE.json access -- use _state_write instead
|
|
@@ -1670,7 +1710,7 @@ HELP_EOF
|
|
|
1670
1710
|
if (.errors.records|length) > 50 then .errors.records = .errors.records[-50:] else . end
|
|
1671
1711
|
' >/dev/null
|
|
1672
1712
|
|
|
1673
|
-
json_ok "
|
|
1713
|
+
json_ok "$(jq -nc --arg id "$ea_id" '$id')"
|
|
1674
1714
|
;;
|
|
1675
1715
|
error-pattern-check)
|
|
1676
1716
|
_deprecation_warning "error-pattern-check"
|
|
@@ -1707,6 +1747,12 @@ HELP_EOF
|
|
|
1707
1747
|
exit 0
|
|
1708
1748
|
fi
|
|
1709
1749
|
|
|
1750
|
+
# Skip writes during test runs to prevent test noise in activity.log
|
|
1751
|
+
if [[ "${AETHER_TESTING:-}" == "1" ]]; then
|
|
1752
|
+
json_ok '"logged"'
|
|
1753
|
+
exit 0
|
|
1754
|
+
fi
|
|
1755
|
+
|
|
1710
1756
|
log_file="$COLONY_DATA_DIR/activity.log"
|
|
1711
1757
|
mkdir -p "$COLONY_DATA_DIR"
|
|
1712
1758
|
ts=$(date -u +"%H:%M:%S")
|
|
@@ -1857,7 +1903,7 @@ EOF
|
|
|
1857
1903
|
json_err "$E_UNKNOWN" "Failed to write error patterns file"
|
|
1858
1904
|
}
|
|
1859
1905
|
count=$(echo "$updated" | jq --arg name "$pattern_name" '.patterns[] | select(.name == $name) | .occurrences')
|
|
1860
|
-
json_ok "
|
|
1906
|
+
json_ok "$(jq -nc --arg p "$pattern_name" --argjson c "$count" '{updated:true,pattern:$p,occurrences:$c}')"
|
|
1861
1907
|
else
|
|
1862
1908
|
# Add new pattern
|
|
1863
1909
|
updated=$(jq --arg name "$pattern_name" --arg desc "$description" --arg sev "$severity" --arg ts "$ts" --arg proj "$project_name" '
|
|
@@ -1876,7 +1922,7 @@ EOF
|
|
|
1876
1922
|
_aether_log_error "Could not save new error pattern"
|
|
1877
1923
|
json_err "$E_UNKNOWN" "Failed to write error patterns file"
|
|
1878
1924
|
}
|
|
1879
|
-
json_ok "{
|
|
1925
|
+
json_ok "$(jq -nc --arg p "$pattern_name" '{created:true,pattern:$p}')"
|
|
1880
1926
|
fi
|
|
1881
1927
|
;;
|
|
1882
1928
|
error-patterns-check)
|
|
@@ -2159,7 +2205,7 @@ EOF
|
|
|
2159
2205
|
prefix="${prefixes[$idx]}"
|
|
2160
2206
|
num=$((RANDOM % 99 + 1))
|
|
2161
2207
|
name="${prefix}-${num}"
|
|
2162
|
-
json_ok "
|
|
2208
|
+
json_ok "$(jq -nc --arg n "$name" '$n')"
|
|
2163
2209
|
;;
|
|
2164
2210
|
|
|
2165
2211
|
validate-worker-response)
|
|
@@ -2260,7 +2306,7 @@ EOF
|
|
|
2260
2306
|
json_err "$E_VALIDATION_FAILED" "Worker response failed schema validation" "{\"caste\":\"$vw_caste\"}"
|
|
2261
2307
|
fi
|
|
2262
2308
|
|
|
2263
|
-
json_ok "{
|
|
2309
|
+
json_ok "$(jq -nc --arg c "$vw_caste" '{valid:true,caste:$c}')"
|
|
2264
2310
|
;;
|
|
2265
2311
|
|
|
2266
2312
|
# ============================================
|
|
@@ -2315,7 +2361,7 @@ EOF
|
|
|
2315
2361
|
if (.graveyards | length) > 30 then .graveyards = .graveyards[-30:] else . end
|
|
2316
2362
|
' >/dev/null
|
|
2317
2363
|
|
|
2318
|
-
json_ok "
|
|
2364
|
+
json_ok "$(jq -nc --arg id "$ga_id" '$id')"
|
|
2319
2365
|
;;
|
|
2320
2366
|
|
|
2321
2367
|
grave-check)
|
|
@@ -2414,7 +2460,7 @@ Files: ${files_changed} files changed"
|
|
|
2414
2460
|
fi
|
|
2415
2461
|
|
|
2416
2462
|
# Return enhanced JSON with additional metadata
|
|
2417
|
-
json_ok "
|
|
2463
|
+
json_ok "$(jq -nc --arg msg "$message" --arg body "$body" --arg sub "$subsystem" --arg scope "${phase_id}.${plan_num}" '{message:$msg,body:$body,files_changed:'"$files_changed"',subsystem:$sub,scope:$scope}')"
|
|
2418
2464
|
exit 0
|
|
2419
2465
|
;;
|
|
2420
2466
|
seal)
|
|
@@ -2436,7 +2482,7 @@ Files: ${files_changed} files changed"
|
|
|
2436
2482
|
message="${message:0:69}..."
|
|
2437
2483
|
fi
|
|
2438
2484
|
|
|
2439
|
-
json_ok "
|
|
2485
|
+
json_ok "$(jq -nc --arg msg "$message" --arg body "$body" '{message:$msg,body:$body,files_changed:'"$files_changed"'}')"
|
|
2440
2486
|
exit 0
|
|
2441
2487
|
;;
|
|
2442
2488
|
*)
|
|
@@ -2450,7 +2496,7 @@ Files: ${files_changed} files changed"
|
|
|
2450
2496
|
message="${message:0:69}..."
|
|
2451
2497
|
fi
|
|
2452
2498
|
|
|
2453
|
-
json_ok "
|
|
2499
|
+
json_ok "$(jq -nc --arg msg "$message" --arg body "$body" '{message:$msg,body:$body,files_changed:'"$files_changed"'}')"
|
|
2454
2500
|
;;
|
|
2455
2501
|
|
|
2456
2502
|
# ============================================
|
|
@@ -2502,7 +2548,7 @@ Files: ${files_changed} files changed"
|
|
|
2502
2548
|
json_ok '""'
|
|
2503
2549
|
else
|
|
2504
2550
|
printf -v msg 'Update available: %s to %s (run /ant:update)' "$local_ver" "$hub_ver"
|
|
2505
|
-
json_ok "$msg"
|
|
2551
|
+
json_ok "$(jq -nc --arg m "$msg" '$m')"
|
|
2506
2552
|
fi
|
|
2507
2553
|
;;
|
|
2508
2554
|
|
|
@@ -2628,7 +2674,7 @@ Files: ${files_changed} files changed"
|
|
|
2628
2674
|
json_err "$E_UNKNOWN" "Failed to write registry file"
|
|
2629
2675
|
}
|
|
2630
2676
|
release_lock "$registry_file" 2>/dev/null || true # SUPPRESS:OK -- cleanup: lock may not be held
|
|
2631
|
-
json_ok "
|
|
2677
|
+
json_ok "$(jq -nc --arg p "$repo_path" --arg v "$repo_version" '{registered:true,path:$p,version:$v}')"
|
|
2632
2678
|
;;
|
|
2633
2679
|
|
|
2634
2680
|
registry-list)
|
|
@@ -2773,7 +2819,8 @@ Files: ${files_changed} files changed"
|
|
|
2773
2819
|
if [[ $? -eq 0 ]]; then
|
|
2774
2820
|
# Output success with handoff info if detected
|
|
2775
2821
|
if [[ "$HANDOFF_DETECTED" == "true" ]]; then
|
|
2776
|
-
|
|
2822
|
+
_handoff_summary=$(get_handoff_summary)
|
|
2823
|
+
json_ok "$(jq -nc --arg hs "$_handoff_summary" '{loaded:true,handoff_detected:true,handoff_summary:$hs}')"
|
|
2777
2824
|
else
|
|
2778
2825
|
json_ok '{"loaded":true}'
|
|
2779
2826
|
fi
|
|
@@ -3110,10 +3157,10 @@ Files: ${files_changed} files changed"
|
|
|
3110
3157
|
json_ok "$(cat "$view_state_file")"
|
|
3111
3158
|
elif [[ -z "$key" ]]; then
|
|
3112
3159
|
# Return specific view
|
|
3113
|
-
json_ok "$(jq "
|
|
3160
|
+
json_ok "$(jq --arg v "$view_name" '.[$v] // {}' "$view_state_file")"
|
|
3114
3161
|
else
|
|
3115
3162
|
# Return specific key from view
|
|
3116
|
-
json_ok "$(jq "
|
|
3163
|
+
json_ok "$(jq --arg v "$view_name" --arg k "$key" '.[$v][$k] // null' "$view_state_file")"
|
|
3117
3164
|
fi
|
|
3118
3165
|
;;
|
|
3119
3166
|
|
|
@@ -3145,7 +3192,7 @@ Files: ${files_changed} files changed"
|
|
|
3145
3192
|
fi
|
|
3146
3193
|
|
|
3147
3194
|
atomic_write "$view_state_file" "$updated"
|
|
3148
|
-
json_ok "$(echo "$updated" | jq "
|
|
3195
|
+
json_ok "$(echo "$updated" | jq --arg v "$view_name" '.[$v]')"
|
|
3149
3196
|
;;
|
|
3150
3197
|
|
|
3151
3198
|
view-state-toggle)
|
|
@@ -3183,7 +3230,7 @@ Files: ${files_changed} files changed"
|
|
|
3183
3230
|
fi
|
|
3184
3231
|
|
|
3185
3232
|
atomic_write "$view_state_file" "$updated"
|
|
3186
|
-
json_ok "
|
|
3233
|
+
json_ok "$(jq -nc --arg i "$item" --arg s "$new_state" --arg v "$view_name" '{item:$i,state:$s,view:$v}')"
|
|
3187
3234
|
;;
|
|
3188
3235
|
|
|
3189
3236
|
view-state-expand)
|
|
@@ -3205,7 +3252,7 @@ Files: ${files_changed} files changed"
|
|
|
3205
3252
|
' "$view_state_file") || json_err "$E_JSON_INVALID" "Failed to update view state"
|
|
3206
3253
|
|
|
3207
3254
|
atomic_write "$view_state_file" "$updated"
|
|
3208
|
-
json_ok "
|
|
3255
|
+
json_ok "$(jq -nc --arg i "$item" --arg v "$view_name" '{item:$i,state:"expanded",view:$v}')"
|
|
3209
3256
|
;;
|
|
3210
3257
|
|
|
3211
3258
|
view-state-collapse)
|
|
@@ -3227,7 +3274,7 @@ Files: ${files_changed} files changed"
|
|
|
3227
3274
|
' "$view_state_file") || json_err "$E_JSON_INVALID" "Failed to update view state"
|
|
3228
3275
|
|
|
3229
3276
|
atomic_write "$view_state_file" "$updated"
|
|
3230
|
-
json_ok "
|
|
3277
|
+
json_ok "$(jq -nc --arg i "$item" --arg v "$view_name" '{item:$i,state:"collapsed",view:$v}')"
|
|
3231
3278
|
;;
|
|
3232
3279
|
|
|
3233
3280
|
queen-init) _queen_init "$@" ;;
|
|
@@ -3294,7 +3341,7 @@ Files: ${files_changed} files changed"
|
|
|
3294
3341
|
bar="[$bar]"
|
|
3295
3342
|
fi
|
|
3296
3343
|
|
|
3297
|
-
json_ok "
|
|
3344
|
+
json_ok "$(jq -nc --arg b "$bar" --argjson c "$obs_count" --argjson t "$threshold" '{bar:$b,count:$c,threshold:$t}')"
|
|
3298
3345
|
;;
|
|
3299
3346
|
|
|
3300
3347
|
parse-selection)
|
|
@@ -3501,7 +3548,7 @@ Files: ${files_changed} files changed"
|
|
|
3501
3548
|
;;
|
|
3502
3549
|
esac
|
|
3503
3550
|
|
|
3504
|
-
json_ok "
|
|
3551
|
+
json_ok "$(jq -nc --arg id "$ir_incident_id" --arg rt "$ir_rule_type" --arg ts "$ir_ts" '{incident_id:$id,rule_type:$rt,added:true,timestamp:$ts}')"
|
|
3505
3552
|
;;
|
|
3506
3553
|
|
|
3507
3554
|
queen-promote) _queen_promote "$@" ;;
|
|
@@ -3630,7 +3677,7 @@ Files: ${files_changed} files changed"
|
|
|
3630
3677
|
bash "$0" rolling-summary add "$mc_event" "$mc_content" "$mc_source" >/dev/null 2>&1 \
|
|
3631
3678
|
|| _aether_log_error "Could not update rolling summary"
|
|
3632
3679
|
|
|
3633
|
-
json_ok "
|
|
3680
|
+
json_ok "$(jq -nc --arg et "$mc_event" --arg wt "$mc_wisdom_type" --argjson oc "$obs_count" --argjson th "$obs_threshold" --argjson tm "$obs_threshold_met" --argjson pc "$pheromone_created" --arg sid "$pheromone_signal_id" --argjson ap "$auto_promoted" --arg pr "$auto_reason" '{event_type:$et,wisdom_type:$wt,observation_count:$oc,threshold:$th,threshold_met:$tm,pheromone_created:$pc,signal_id:$sid,auto_promoted:$ap,promotion_reason:$pr}')"
|
|
3634
3681
|
;;
|
|
3635
3682
|
|
|
3636
3683
|
learning-display-proposals) _learning_display_proposals "$@" ;;
|
|
@@ -3675,7 +3722,7 @@ Files: ${files_changed} files changed"
|
|
|
3675
3722
|
;;
|
|
3676
3723
|
esac
|
|
3677
3724
|
|
|
3678
|
-
json_ok "
|
|
3725
|
+
json_ok "$(jq -nc --arg d "$docs" --arg dir "$survey_dir" '{ok:true,docs:$d,dir:$dir}')"
|
|
3679
3726
|
;;
|
|
3680
3727
|
|
|
3681
3728
|
survey-verify)
|
|
@@ -3697,7 +3744,7 @@ Files: ${files_changed} files changed"
|
|
|
3697
3744
|
json_err "$E_FILE_NOT_FOUND" "Missing survey documents" "{\"missing\":\"$missing\"}"
|
|
3698
3745
|
fi
|
|
3699
3746
|
|
|
3700
|
-
json_ok "{
|
|
3747
|
+
json_ok "$(jq -nc --arg c "$counts" '{ok:true,counts:$c}')"
|
|
3701
3748
|
;;
|
|
3702
3749
|
|
|
3703
3750
|
checkpoint-check)
|
|
@@ -3869,6 +3916,7 @@ Files: ${files_changed} files changed"
|
|
|
3869
3916
|
|
|
3870
3917
|
pheromone-prime) _pheromone_prime "$@" ;;
|
|
3871
3918
|
colony-prime) _colony_prime "$@" ;;
|
|
3919
|
+
pr-context) _pr_context "$@" ;;
|
|
3872
3920
|
pheromone-expire) _pheromone_expire "$@" ;;
|
|
3873
3921
|
eternal-init) _eternal_init "$@" ;;
|
|
3874
3922
|
eternal-store) _eternal_store "$@" ;;
|
|
@@ -4101,7 +4149,7 @@ Files: ${files_changed} files changed"
|
|
|
4101
4149
|
json_err "$E_UNKNOWN" "Failed to finalize rolling summary file"
|
|
4102
4150
|
}
|
|
4103
4151
|
|
|
4104
|
-
json_ok "
|
|
4152
|
+
json_ok "$(jq -nc --arg e "$rs_clean_event" --arg s "$rs_clean_source" '{added:true,event:$e,source:$s}')"
|
|
4105
4153
|
;;
|
|
4106
4154
|
|
|
4107
4155
|
read)
|
|
@@ -4330,7 +4378,7 @@ Files: ${files_changed} files changed"
|
|
|
4330
4378
|
|
|
4331
4379
|
cc_words=$(printf '%s' "$cc_section" | wc -w | tr -d ' ')
|
|
4332
4380
|
cc_prompt_json=$(printf '%s' "$cc_section" | jq -Rs '.' 2>/dev/null || echo '""') # SUPPRESS:OK -- read-default: returns fallback if missing
|
|
4333
|
-
json_ok "
|
|
4381
|
+
json_ok "$(jq -nc --arg st "$cc_state" --arg na "$cc_next_action" --argjson wc "$cc_words" --argjson ps "$cc_prompt_json" '{exists:true,state:$st,next_action:$na,word_count:$wc,prompt_section:$ps}')"
|
|
4334
4382
|
;;
|
|
4335
4383
|
|
|
4336
4384
|
session-init) _session_init "$@" ;;
|
|
@@ -4341,6 +4389,13 @@ Files: ${files_changed} files changed"
|
|
|
4341
4389
|
session-mark-resumed) _session_mark_resumed "$@" ;;
|
|
4342
4390
|
session-summary) _session_summary "$@" ;;
|
|
4343
4391
|
|
|
4392
|
+
pending-decision-add) _pending_decision_add "$@" ;;
|
|
4393
|
+
pending-decision-list) _pending_decision_list "$@" ;;
|
|
4394
|
+
pending-decision-resolve) _pending_decision_resolve "$@" ;;
|
|
4395
|
+
|
|
4396
|
+
autopilot-headless-check) _autopilot_headless_check "$@" ;;
|
|
4397
|
+
autopilot-set-headless) _autopilot_set_headless "$@" ;;
|
|
4398
|
+
|
|
4344
4399
|
generate-progress-bar)
|
|
4345
4400
|
generate-progress-bar "$@"
|
|
4346
4401
|
;;
|
|
@@ -4717,6 +4772,40 @@ EOF
|
|
|
4717
4772
|
|
|
4718
4773
|
midden-acknowledge) _midden_acknowledge "$@" ;;
|
|
4719
4774
|
|
|
4775
|
+
midden-search) _midden_search "$@" ;;
|
|
4776
|
+
|
|
4777
|
+
midden-tag) _midden_tag "$@" ;;
|
|
4778
|
+
|
|
4779
|
+
midden-collect) _midden_collect "$@" ;;
|
|
4780
|
+
midden-handle-revert) _midden_handle_revert "$@" ;;
|
|
4781
|
+
midden-cross-pr-analysis) _midden_cross_pr_analysis "$@" ;;
|
|
4782
|
+
midden-prune) _midden_prune "$@" ;;
|
|
4783
|
+
|
|
4784
|
+
trophallaxis-diagnose) _trophallaxis_diagnose "$@" ;;
|
|
4785
|
+
|
|
4786
|
+
trophallaxis-retry) _trophallaxis_retry "$@" ;;
|
|
4787
|
+
|
|
4788
|
+
scar-add) _scar_add "$@" ;;
|
|
4789
|
+
|
|
4790
|
+
scar-list) _scar_list "$@" ;;
|
|
4791
|
+
|
|
4792
|
+
scar-check) _scar_check "$@" ;;
|
|
4793
|
+
|
|
4794
|
+
immune-auto-scar) _immune_auto_scar "$@" ;;
|
|
4795
|
+
|
|
4796
|
+
# ── Council Deliberation ────────────────────────────────────────────────────
|
|
4797
|
+
council-deliberate) _council_deliberate "$@" ;;
|
|
4798
|
+
|
|
4799
|
+
council-advocate) _council_advocate "$@" ;;
|
|
4800
|
+
|
|
4801
|
+
council-challenger) _council_challenger "$@" ;;
|
|
4802
|
+
|
|
4803
|
+
council-sage) _council_sage "$@" ;;
|
|
4804
|
+
|
|
4805
|
+
council-history) _council_history "$@" ;;
|
|
4806
|
+
|
|
4807
|
+
council-budget-check) _council_budget_check "$@" ;;
|
|
4808
|
+
|
|
4720
4809
|
resume-dashboard)
|
|
4721
4810
|
# Generate dashboard data for /ant:resume command
|
|
4722
4811
|
# Usage: resume-dashboard
|
|
@@ -4798,6 +4887,14 @@ EOF
|
|
|
4798
4887
|
exit 0
|
|
4799
4888
|
;;
|
|
4800
4889
|
|
|
4890
|
+
colony-vital-signs)
|
|
4891
|
+
# Compute colony health metrics from existing data files
|
|
4892
|
+
# Usage: colony-vital-signs
|
|
4893
|
+
# Returns: JSON with build_velocity, error_rate, signal_health, memory_pressure,
|
|
4894
|
+
# colony_age_hours, and overall_health (0-100)
|
|
4895
|
+
_colony_vital_signs
|
|
4896
|
+
;;
|
|
4897
|
+
|
|
4801
4898
|
data-safety-stats)
|
|
4802
4899
|
# Read data safety statistics from safety-stats.json
|
|
4803
4900
|
# Usage: data-safety-stats
|
|
@@ -4820,6 +4917,8 @@ EOF
|
|
|
4820
4917
|
exit 0
|
|
4821
4918
|
;;
|
|
4822
4919
|
|
|
4920
|
+
# colony-vital-signs handled above (dispatches to _colony_vital_signs in state-api.sh)
|
|
4921
|
+
|
|
4823
4922
|
suggest-analyze) _suggest_analyze "$@" ;;
|
|
4824
4923
|
suggest-record) _suggest_record "$@" ;;
|
|
4825
4924
|
suggest-check) _suggest_check "$@" ;;
|
|
@@ -5348,6 +5447,22 @@ DRYRUN_EOF
|
|
|
5348
5447
|
_emoji_audit_main "${1:-$(pwd)}"
|
|
5349
5448
|
;;
|
|
5350
5449
|
|
|
5450
|
+
# ── Clash Detection ─────────────────────────────────────────────────────────
|
|
5451
|
+
clash-detect|clash-check)
|
|
5452
|
+
_clash_detect "$@"
|
|
5453
|
+
;;
|
|
5454
|
+
clash-setup)
|
|
5455
|
+
_clash_setup "$@"
|
|
5456
|
+
;;
|
|
5457
|
+
|
|
5458
|
+
# ── Worktree Management ─────────────────────────────────────────────────────
|
|
5459
|
+
worktree-create)
|
|
5460
|
+
_worktree_create "$@"
|
|
5461
|
+
;;
|
|
5462
|
+
worktree-cleanup)
|
|
5463
|
+
_worktree_cleanup "$@"
|
|
5464
|
+
;;
|
|
5465
|
+
|
|
5351
5466
|
*)
|
|
5352
5467
|
json_err "$E_VALIDATION_FAILED" "Unknown command: $cmd"
|
|
5353
5468
|
;;
|