claude-flow-novice 2.14.3 → 2.14.5

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 (194) hide show
  1. package/.claude/commands/CFN_LOOP_TASK_MODE.md +4 -47
  2. package/.claude/commands/seo/SEO_TASK_MODE.md +892 -0
  3. package/.claude/commands/seo/seo-blog.md +428 -0
  4. package/.claude/commands/seo/seo-landing.md +91 -0
  5. package/.claude/commands/seo/seo-product.md +104 -0
  6. package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -276
  7. package/claude-assets/agents/cfn-dev-team/coordinators/epic-creator.md +120 -0
  8. package/claude-assets/agents/cfn-seo-team/AGENT_CREATION_REPORT.md +481 -0
  9. package/claude-assets/agents/cfn-seo-team/DELEGATION_MATRIX.md +371 -0
  10. package/claude-assets/agents/cfn-seo-team/HUMANIZER_PROMPTS.md +536 -0
  11. package/claude-assets/agents/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +642 -0
  12. package/claude-assets/agents/cfn-seo-team/cfn-seo-coordinator.md +414 -0
  13. package/claude-assets/agents/cfn-seo-team/competitive-seo-analyst.md +423 -0
  14. package/claude-assets/agents/cfn-seo-team/content-atomization-specialist.md +580 -0
  15. package/claude-assets/agents/cfn-seo-team/content-seo-strategist.md +245 -0
  16. package/claude-assets/agents/cfn-seo-team/eeat-content-auditor.md +389 -0
  17. package/claude-assets/agents/cfn-seo-team/geo-optimization-expert.md +269 -0
  18. package/claude-assets/agents/cfn-seo-team/link-building-specialist.md +291 -0
  19. package/claude-assets/agents/cfn-seo-team/local-seo-optimizer.md +333 -0
  20. package/claude-assets/agents/cfn-seo-team/programmatic-seo-engineer.md +244 -0
  21. package/claude-assets/agents/cfn-seo-team/schema-markup-engineer.md +430 -0
  22. package/claude-assets/agents/cfn-seo-team/seo-analytics-specialist.md +376 -0
  23. package/claude-assets/agents/cfn-seo-team/seo-validators/accessibility-validator.md +565 -0
  24. package/claude-assets/agents/cfn-seo-team/seo-validators/audience-validator.md +484 -0
  25. package/claude-assets/agents/cfn-seo-team/seo-validators/branding-validator.md +452 -0
  26. package/claude-assets/agents/cfn-seo-team/seo-validators/humanizer-validator.md +333 -0
  27. package/claude-assets/agents/cfn-seo-team/technical-seo-specialist.md +228 -0
  28. package/claude-assets/commands/CFN_LOOP_TASK_MODE.md +4 -47
  29. package/claude-assets/commands/seo/SEO_TASK_MODE.md +892 -0
  30. package/claude-assets/commands/seo/seo-blog.md +428 -0
  31. package/claude-assets/commands/seo/seo-landing.md +91 -0
  32. package/claude-assets/commands/seo/seo-product.md +104 -0
  33. package/claude-assets/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -276
  34. package/claude-assets/skills/seo-orchestration/SKILL.md +292 -0
  35. package/claude-assets/skills/seo-orchestration/orchestrate-seo.sh +566 -0
  36. package/claude-assets/skills/seo-orchestration/orchestrate-seo.sh.backup +755 -0
  37. package/claude-assets/skills/seo-orchestration/validate-consensus.sh +270 -0
  38. package/dist/agents/agent-loader.js +165 -146
  39. package/dist/agents/agent-loader.js.map +1 -1
  40. package/dist/cli/agent-prompt-builder.js +25 -0
  41. package/dist/cli/agent-prompt-builder.js.map +1 -1
  42. package/package.json +1 -1
  43. package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +0 -57
  44. package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +0 -267
  45. package/.claude/skills/cfn-redis-coordination/LOGGING.md +0 -260
  46. package/.claude/skills/cfn-redis-coordination/README.md +0 -65
  47. package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +0 -25
  48. package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +0 -164
  49. package/.claude/skills/cfn-redis-coordination/SKILL.md +0 -720
  50. package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +0 -129
  51. package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +0 -320
  52. package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +0 -249
  53. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +0 -148
  54. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +0 -163
  55. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +0 -138
  56. package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +0 -81
  57. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +0 -45
  58. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +0 -68
  59. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +0 -56
  60. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +0 -81
  61. package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +0 -57
  62. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +0 -187
  63. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +0 -160
  64. package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +0 -97
  65. package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +0 -97
  66. package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +0 -59
  67. package/.claude/skills/cfn-redis-coordination/examples/README.md +0 -73
  68. package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +0 -352
  69. package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +0 -127
  70. package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +0 -171
  71. package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +0 -227
  72. package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +0 -239
  73. package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +0 -258
  74. package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +0 -177
  75. package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +0 -137
  76. package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +0 -106
  77. package/.claude/skills/cfn-redis-coordination/heartbeat.sh +0 -126
  78. package/.claude/skills/cfn-redis-coordination/init-swarm.sh +0 -148
  79. package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +0 -220
  80. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +0 -283
  81. package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +0 -147
  82. package/.claude/skills/cfn-redis-coordination/log-event.sh +0 -109
  83. package/.claude/skills/cfn-redis-coordination/metrics-export.sh +0 -674
  84. package/.claude/skills/cfn-redis-coordination/metrics-schema.json +0 -66
  85. package/.claude/skills/cfn-redis-coordination/metrics-storage.md +0 -31
  86. package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +0 -391
  87. package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +0 -101
  88. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +0 -141
  89. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +0 -31
  90. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  91. package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +0 -75
  92. package/.claude/skills/cfn-redis-coordination/priority_wake.py +0 -134
  93. package/.claude/skills/cfn-redis-coordination/query-dlq.sh +0 -162
  94. package/.claude/skills/cfn-redis-coordination/query-logs.sh +0 -103
  95. package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +0 -619
  96. package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +0 -58
  97. package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +0 -371
  98. package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +0 -252
  99. package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +0 -165
  100. package/.claude/skills/cfn-redis-coordination/signal.sh +0 -38
  101. package/.claude/skills/cfn-redis-coordination/store-context.sh +0 -86
  102. package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +0 -123
  103. package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +0 -354
  104. package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +0 -513
  105. package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +0 -15
  106. package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +0 -102
  107. package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +0 -99
  108. package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +0 -170
  109. package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +0 -82
  110. package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +0 -92
  111. package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +0 -4
  112. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
  113. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +0 -124
  114. package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +0 -166
  115. package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +0 -54
  116. package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +0 -49
  117. package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +0 -76
  118. package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +0 -492
  119. package/claude-assets/skills/cfn-redis-coordination/HEARTBEAT.md +0 -57
  120. package/claude-assets/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +0 -267
  121. package/claude-assets/skills/cfn-redis-coordination/LOGGING.md +0 -260
  122. package/claude-assets/skills/cfn-redis-coordination/README.md +0 -65
  123. package/claude-assets/skills/cfn-redis-coordination/SECURITY_REVIEW.md +0 -25
  124. package/claude-assets/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +0 -164
  125. package/claude-assets/skills/cfn-redis-coordination/SKILL.md +0 -720
  126. package/claude-assets/skills/cfn-redis-coordination/demos/test-dlq.sh +0 -129
  127. package/claude-assets/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +0 -320
  128. package/claude-assets/skills/cfn-redis-coordination/demos/test-orchestrator.sh +0 -249
  129. package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +0 -148
  130. package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +0 -163
  131. package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake.sh +0 -138
  132. package/claude-assets/skills/cfn-redis-coordination/demos/test-quick-fix.sh +0 -81
  133. package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +0 -45
  134. package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +0 -68
  135. package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +0 -56
  136. package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +0 -81
  137. package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum.sh +0 -57
  138. package/claude-assets/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +0 -187
  139. package/claude-assets/skills/cfn-redis-coordination/demos/test-shutdown.sh +0 -160
  140. package/claude-assets/skills/cfn-redis-coordination/demos/test-utils-unix.sh +0 -97
  141. package/claude-assets/skills/cfn-redis-coordination/demos/test-utils.sh +0 -97
  142. package/claude-assets/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +0 -59
  143. package/claude-assets/skills/cfn-redis-coordination/examples/README.md +0 -73
  144. package/claude-assets/skills/cfn-redis-coordination/examples/grafana-dashboard.json +0 -352
  145. package/claude-assets/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +0 -127
  146. package/claude-assets/skills/cfn-redis-coordination/examples/mesh-pattern.sh +0 -171
  147. package/claude-assets/skills/cfn-redis-coordination/examples/timeout-handling.sh +0 -227
  148. package/claude-assets/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +0 -239
  149. package/claude-assets/skills/cfn-redis-coordination/execute-product-owner-decision.sh +0 -258
  150. package/claude-assets/skills/cfn-redis-coordination/get-agent-timeout.sh +0 -177
  151. package/claude-assets/skills/cfn-redis-coordination/heartbeat-functions.sh +0 -137
  152. package/claude-assets/skills/cfn-redis-coordination/heartbeat-protocol.md +0 -106
  153. package/claude-assets/skills/cfn-redis-coordination/heartbeat.sh +0 -126
  154. package/claude-assets/skills/cfn-redis-coordination/init-swarm.sh +0 -148
  155. package/claude-assets/skills/cfn-redis-coordination/invoke-redis-pattern.sh +0 -220
  156. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +0 -283
  157. package/claude-assets/skills/cfn-redis-coordination/list-active-swarms.sh +0 -147
  158. package/claude-assets/skills/cfn-redis-coordination/log-event.sh +0 -109
  159. package/claude-assets/skills/cfn-redis-coordination/metrics-export.sh +0 -674
  160. package/claude-assets/skills/cfn-redis-coordination/metrics-schema.json +0 -66
  161. package/claude-assets/skills/cfn-redis-coordination/metrics-storage.md +0 -31
  162. package/claude-assets/skills/cfn-redis-coordination/monitor-cfn-violations.sh +0 -391
  163. package/claude-assets/skills/cfn-redis-coordination/monitor-heartbeats.sh +0 -101
  164. package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +0 -141
  165. package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +0 -31
  166. package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  167. package/claude-assets/skills/cfn-redis-coordination/priority-wake-mechanism.md +0 -75
  168. package/claude-assets/skills/cfn-redis-coordination/priority_wake.py +0 -134
  169. package/claude-assets/skills/cfn-redis-coordination/query-dlq.sh +0 -162
  170. package/claude-assets/skills/cfn-redis-coordination/query-logs.sh +0 -103
  171. package/claude-assets/skills/cfn-redis-coordination/redis-pattern.sh +0 -619
  172. package/claude-assets/skills/cfn-redis-coordination/retrieve-context.sh +0 -58
  173. package/claude-assets/skills/cfn-redis-coordination/select-specialist-agent.sh +0 -371
  174. package/claude-assets/skills/cfn-redis-coordination/semantic-match-tfidf.py +0 -252
  175. package/claude-assets/skills/cfn-redis-coordination/send-heartbeat.sh +0 -165
  176. package/claude-assets/skills/cfn-redis-coordination/signal.sh +0 -38
  177. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +0 -86
  178. package/claude-assets/skills/cfn-redis-coordination/store-epic-context.sh +0 -123
  179. package/claude-assets/skills/cfn-redis-coordination/test-context-injection.sh +0 -354
  180. package/claude-assets/skills/cfn-redis-coordination/test-timeout-enforcement.sh +0 -513
  181. package/claude-assets/skills/cfn-redis-coordination/tests/convert-line-endings.sh +0 -15
  182. package/claude-assets/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +0 -102
  183. package/claude-assets/skills/cfn-redis-coordination/tests/edge-cases-test.sh +0 -99
  184. package/claude-assets/skills/cfn-redis-coordination/tests/integration-test.sh +0 -170
  185. package/claude-assets/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +0 -82
  186. package/claude-assets/skills/cfn-redis-coordination/tests/run-test-suite.sh +0 -92
  187. package/claude-assets/skills/cfn-redis-coordination/tests/run-tests.sh +0 -4
  188. package/claude-assets/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
  189. package/claude-assets/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +0 -124
  190. package/claude-assets/skills/cfn-redis-coordination/tests/test-primitives.sh +0 -166
  191. package/claude-assets/skills/cfn-redis-coordination/tests/test-utils.sh +0 -54
  192. package/claude-assets/skills/cfn-redis-coordination/tests/test_utils.sh +0 -49
  193. package/claude-assets/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +0 -76
  194. package/claude-assets/skills/cfn-redis-coordination/validate-parameters.sh +0 -492
@@ -1,220 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- # Version 1.3.0
5
- # Redis Coordination Pattern CLI
6
-
7
- # Load configuration
8
- CONFIG_PATH="$(dirname "$0")/config.json"
9
- REDIS_HOST=$(jq -r '.host' "$CONFIG_PATH")
10
- REDIS_PORT=$(jq -r '.port' "$CONFIG_PATH")
11
- REDIS_DB=$(jq -r '.db' "$CONFIG_PATH")
12
-
13
- # Utility functions
14
- log_error() {
15
- echo "{\"status\": \"error\", \"message\": \"$1\"}" >&2
16
- exit 1
17
- }
18
-
19
- invoke_redis_command() {
20
- local command="$1"
21
- shift
22
- redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" -n "$REDIS_DB" "$command" "$@"
23
- }
24
-
25
- # Waiting mode operations
26
- wait_mode() {
27
- local task_id=""
28
- local agent_id=""
29
- local context=""
30
-
31
- while [[ $# -gt 0 ]]; do
32
- case "$1" in
33
- --task-id)
34
- task_id="$2"
35
- shift 2
36
- ;;
37
- --agent-id)
38
- agent_id="$2"
39
- shift 2
40
- ;;
41
- --context)
42
- context="$2"
43
- shift 2
44
- ;;
45
- *)
46
- log_error "Invalid argument for wait: $1"
47
- ;;
48
- esac
49
- done
50
-
51
- [[ -z "$task_id" ]] && log_error "task-id is required"
52
- [[ -z "$agent_id" ]] && log_error "agent-id is required"
53
-
54
- local wake_channel="task:$task_id:agent:$agent_id:wake"
55
-
56
- # Blocking pop with timeout
57
- result=$(invoke_redis_command BLPOP "$wake_channel" 300)
58
-
59
- if [[ -z "$result" ]]; then
60
- echo "{\"status\": \"timeout\", \"task_id\": \"$task_id\", \"agent_id\": \"$agent_id\", \"context\": \"$context\"}"
61
- else
62
- echo "{\"status\": \"woken\", \"task_id\": \"$task_id\", \"agent_id\": \"$agent_id\", \"payload\": $result, \"context\": \"$context\"}"
63
- fi
64
- }
65
-
66
- wake_mode() {
67
- local task_id=""
68
- local agent_id=""
69
- local payload=""
70
-
71
- while [[ $# -gt 0 ]]; do
72
- case "$1" in
73
- --task-id)
74
- task_id="$2"
75
- shift 2
76
- ;;
77
- --agent-id)
78
- agent_id="$2"
79
- shift 2
80
- ;;
81
- --payload)
82
- payload="$2"
83
- shift 2
84
- ;;
85
- *)
86
- log_error "Invalid argument for wake: $1"
87
- ;;
88
- esac
89
- done
90
-
91
- [[ -z "$task_id" ]] && log_error "task-id is required"
92
- [[ -z "$agent_id" ]] && log_error "agent-id is required"
93
- [[ -z "$payload" ]] && log_error "payload is required"
94
-
95
- local wake_channel="task:$task_id:agent:$agent_id:wake"
96
-
97
- invoke_redis_command LPUSH "$wake_channel" "$payload" > /dev/null
98
-
99
- echo "{\"status\": \"success\", \"task_id\": \"$task_id\", \"agent_id\": \"$agent_id\"}"
100
- }
101
-
102
- report_mode() {
103
- local task_id=""
104
- local agent_id=""
105
- local confidence=0.0
106
- local result=""
107
-
108
- while [[ $# -gt 0 ]]; do
109
- case "$1" in
110
- --task-id)
111
- task_id="$2"
112
- shift 2
113
- ;;
114
- --agent-id)
115
- agent_id="$2"
116
- shift 2
117
- ;;
118
- --confidence)
119
- confidence="$2"
120
- shift 2
121
- ;;
122
- --result)
123
- result="$2"
124
- shift 2
125
- ;;
126
- *)
127
- log_error "Invalid argument for report: $1"
128
- ;;
129
- esac
130
- done
131
-
132
- [[ -z "$task_id" ]] && log_error "task-id is required"
133
- [[ -z "$agent_id" ]] && log_error "agent-id is required"
134
-
135
- local result_key="task:$task_id:agent:$agent_id:result"
136
- local result_json=$(jq -n \
137
- --arg r "$result" \
138
- --arg c "$confidence" \
139
- '{result: $r, confidence: ($c | tonumber), timestamp: now}')
140
-
141
- invoke_redis_command SET "$result_key" "$result_json" > /dev/null
142
-
143
- echo "{\"status\": \"success\", \"task_id\": \"$task_id\", \"agent_id\": \"$agent_id\", \"confidence\": $confidence}"
144
- }
145
-
146
- collect_mode() {
147
- local task_id=""
148
- local agent_ids=()
149
-
150
- while [[ $# -gt 0 ]]; do
151
- case "$1" in
152
- --task-id)
153
- task_id="$2"
154
- shift 2
155
- ;;
156
- --agent-ids)
157
- IFS=',' read -r -a agent_ids <<< "$2"
158
- shift 2
159
- ;;
160
- *)
161
- log_error "Invalid argument for collect: $1"
162
- ;;
163
- esac
164
- done
165
-
166
- [[ -z "$task_id" ]] && log_error "task-id is required"
167
- [[ ${#agent_ids[@]} -eq 0 ]] && log_error "agent-ids is required"
168
-
169
- local results=()
170
- local total_confidence=0.0
171
- local valid_results=0
172
-
173
- for agent_id in "${agent_ids[@]}"; do
174
- local result_key="task:$task_id:agent:$agent_id:result"
175
- result=$(invoke_redis_command GET "$result_key")
176
-
177
- if [[ -n "$result" ]]; then
178
- results+=("$result")
179
- confidence=$(echo "$result" | jq '.confidence')
180
- total_confidence=$(echo "$total_confidence + $confidence" | bc)
181
- ((valid_results++))
182
- fi
183
- done
184
-
185
- local avg_confidence=0.0
186
- if [[ $valid_results -gt 0 ]]; then
187
- avg_confidence=$(echo "scale=2; $total_confidence / $valid_results" | bc)
188
- fi
189
-
190
- local consensus_threshold="0.90"
191
- local status="insufficient_consensus"
192
- if (( $(echo "$avg_confidence >= $consensus_threshold" | bc -l) )); then
193
- status="consensus"
194
- fi
195
-
196
- echo "{\"status\": \"$status\", \"task_id\": \"$task_id\", \"results\": $(printf '%s\n' "${results[@]}" | jq -s '.'), \"avgConfidence\": $avg_confidence, \"consensusThreshold\": $consensus_threshold}"
197
- }
198
-
199
- # Determine action
200
- case "${1:-}" in
201
- wait)
202
- shift
203
- wait_mode "$@"
204
- ;;
205
- wake)
206
- shift
207
- wake_mode "$@"
208
- ;;
209
- report)
210
- shift
211
- report_mode "$@"
212
- ;;
213
- collect)
214
- shift
215
- collect_mode "$@"
216
- ;;
217
- *)
218
- log_error "Usage: $0 {wait|wake|report|collect} [options]"
219
- ;;
220
- esac
@@ -1,283 +0,0 @@
1
- #!/bin/bash
2
- #
3
- # Redis Waiting Mode CLI Wrapper for Agents
4
- #
5
- # Usage:
6
- # ./invoke-waiting-mode.sh report --task-id <task> --agent-id <agent> --confidence <score> [--iteration <n>]
7
- # ./invoke-waiting-mode.sh collect --task-id <task> --agent-ids <id1,id2,id3>
8
- # ./invoke-waiting-mode.sh shutdown --task-id <task> [--reason <reason>]
9
- #
10
- # DEPRECATION NOTICE:
11
- # - 'enter' and 'wake' subcommands are DEPRECATED
12
- # - This script now only supports 'report', 'collect', and 'shutdown' subcommands
13
- # - Agents are expected to exit cleanly without waiting mode
14
- #
15
- # Priority Levels (0-100, higher = more urgent, default = 50):
16
- # 90-100: Critical (security patches, system failures)
17
- # 70-89: High (urgent features, blocking bugs)
18
- # 40-60: Medium (normal tasks, default)
19
- # 20-39: Low (optimizations, refactoring)
20
- # 0-19: Minimal (documentation, cleanup)
21
-
22
- set -euo pipefail
23
-
24
- # Debug mode (set DEBUG=true for verbose output)
25
- DEBUG="${DEBUG:-false}"
26
-
27
- # Parse command
28
- COMMAND="${1:-}"
29
- shift || true
30
-
31
- # Parse arguments
32
- TASK_ID=""
33
- AGENT_ID=""
34
- AGENT_IDS=""
35
- REASON=""
36
- ITERATION=""
37
- CONFIDENCE=""
38
- FEEDBACK=""
39
- PRIORITY=50 # Default medium priority (0-100, higher = more urgent)
40
- MIN_QUORUM="" # Minimum quorum for consensus validation
41
-
42
- while [[ $# -gt 0 ]]; do
43
- case $1 in
44
- --task-id)
45
- TASK_ID="$2"
46
- shift 2
47
- ;;
48
- --agent-id)
49
- AGENT_ID="$2"
50
- shift 2
51
- ;;
52
- --agent-ids)
53
- AGENT_IDS="$2"
54
- shift 2
55
- ;;
56
- --reason)
57
- REASON="$2"
58
- shift 2
59
- ;;
60
- --iteration)
61
- ITERATION="$2"
62
- shift 2
63
- ;;
64
- --confidence)
65
- CONFIDENCE="$2"
66
- shift 2
67
- ;;
68
- --feedback)
69
- FEEDBACK="$2"
70
- shift 2
71
- ;;
72
- --priority)
73
- PRIORITY="$2"
74
- shift 2
75
- ;;
76
- --min-quorum)
77
- MIN_QUORUM="$2"
78
- shift 2
79
- ;;
80
- *)
81
- echo "Unknown argument: $1"
82
- exit 1
83
- ;;
84
- esac
85
- done
86
-
87
- case "$COMMAND" in
88
- enter)
89
- echo "[DEPRECATED] 'enter' subcommand is no longer supported."
90
- echo "Agents should no longer use waiting mode. Exit cleanly."
91
- exit 1
92
- ;;
93
-
94
- wake)
95
- echo "[DEPRECATED] 'wake' subcommand is no longer supported."
96
- echo "Coordinator should spawn agents directly without waiting mode."
97
- exit 1
98
- ;;
99
-
100
- report)
101
- if [ -z "$TASK_ID" ] || [ -z "$AGENT_ID" ] || [ -z "$CONFIDENCE" ]; then
102
- echo "Error: report requires --task-id, --agent-id, and --confidence"
103
- exit 1
104
- fi
105
-
106
- RESULT_KEY="swarm:${TASK_ID}:${AGENT_ID}:result"
107
-
108
- # Build result message with optional feedback
109
- RESULT_MSG=$(jq -n \
110
- --arg confidence "$CONFIDENCE" \
111
- --arg iteration "${ITERATION:-0}" \
112
- --arg feedback "${FEEDBACK:-}" \
113
- --arg ts "$(date +%s)" \
114
- '{
115
- confidence: ($confidence | tonumber),
116
- iteration: ($iteration | tonumber),
117
- feedback: ($feedback | split(",") | map(select(length > 0))),
118
- timestamp: ($ts | tonumber)
119
- }')
120
-
121
- echo "$RESULT_MSG" | redis-cli -x LPUSH "$RESULT_KEY" >/dev/null
122
-
123
- echo "[$AGENT_ID] ✅ Result reported"
124
- echo " Confidence: $CONFIDENCE"
125
- [ -n "$ITERATION" ] && echo " Iteration: $ITERATION"
126
- if [ -n "$FEEDBACK" ]; then
127
- echo " Feedback items: $(echo "$FEEDBACK" | tr ',' '\n' | wc -l)"
128
- fi
129
- ;;
130
-
131
- collect)
132
- if [ -z "$TASK_ID" ] || [ -z "$AGENT_IDS" ]; then
133
- echo "Error: collect requires --task-id and --agent-ids" >&2
134
- exit 1
135
- fi
136
-
137
- # Output verbose messages to stderr
138
- echo "[Coordinator] Collecting results from agents..." >&2
139
- echo "" >&2
140
-
141
- # Split agent IDs
142
- IFS=',' read -ra AGENTS <<< "$AGENT_IDS"
143
-
144
- RESULTS=()
145
- CONFIDENCES=()
146
- ALL_FEEDBACK=()
147
-
148
- for AGENT in "${AGENTS[@]}"; do
149
- RESULT_KEY="swarm:${TASK_ID}:${AGENT}:result"
150
-
151
- # Get latest result (non-blocking, non-destructive)
152
- # Use LINDEX instead of LPOP to preserve results for multiple reads
153
- RESULT=$(redis-cli LINDEX "$RESULT_KEY" 0)
154
-
155
- if [ -n "$RESULT" ] && [ "$RESULT" != "(nil)" ]; then
156
- # Handle both simple numeric format and JSON format
157
- # Try to parse as JSON first, fall back to simple number
158
- if CONF=$(echo "$RESULT" | jq -r '.confidence' 2>/dev/null) && [ "$CONF" != "null" ]; then
159
- # JSON format: {"confidence":0.85,"iteration":1,...}
160
- echo " [$AGENT] Confidence: $CONF" >&2
161
- RESULTS+=("$RESULT")
162
- CONFIDENCES+=("$CONF")
163
-
164
- # Check if result includes feedback array
165
- FEEDBACK=$(echo "$RESULT" | jq -r '.feedback // empty | .[]?' 2>/dev/null)
166
- if [ -n "$FEEDBACK" ]; then
167
- echo " [$AGENT] Feedback provided:" >&2
168
- echo "$RESULT" | jq -r '.feedback[]' | sed 's/^/ - /' >&2
169
-
170
- # Collect all feedback items
171
- while IFS= read -r ITEM; do
172
- ALL_FEEDBACK+=("$ITEM")
173
- done < <(echo "$RESULT" | jq -r '.feedback[]')
174
- fi
175
- elif [[ "$RESULT" =~ ^[0-9]+\.?[0-9]*$ ]]; then
176
- # Simple numeric format: "0.85"
177
- CONF="$RESULT"
178
- echo " [$AGENT] Confidence: $CONF" >&2
179
- CONFIDENCES+=("$CONF")
180
- else
181
- echo " [$AGENT] ⚠️ Invalid result format: $RESULT" >&2
182
- fi
183
- else
184
- echo " [$AGENT] ⚠️ No result found" >&2
185
- fi
186
- done
187
-
188
- # Validate quorum if specified
189
- TOTAL_AGENTS=${#AGENTS[@]}
190
- RESPONDING_AGENTS=${#CONFIDENCES[@]}
191
-
192
- if [ -n "$MIN_QUORUM" ]; then
193
- # Parse min-quorum (supports: absolute number, percentage, or decimal)
194
- if [[ "$MIN_QUORUM" =~ ^[0-9]+%$ ]]; then
195
- # Percentage format: "66%"
196
- PCT=${MIN_QUORUM%\%}
197
- REQUIRED=$(echo "scale=0; ($TOTAL_AGENTS * $PCT) / 100" | bc)
198
- elif [[ "$MIN_QUORUM" =~ ^0\.[0-9]+$ ]]; then
199
- # Decimal format: "0.66"
200
- REQUIRED=$(echo "scale=0; ($TOTAL_AGENTS * $MIN_QUORUM) / 1" | bc)
201
- else
202
- # Absolute number format: "2"
203
- REQUIRED=$MIN_QUORUM
204
- fi
205
-
206
- if [ "$RESPONDING_AGENTS" -lt "$REQUIRED" ]; then
207
- echo "" >&2
208
- echo "[Coordinator] ❌ Quorum not met" >&2
209
- echo " Required: $REQUIRED agents" >&2
210
- echo " Responding: $RESPONDING_AGENTS agents" >&2
211
- exit 1
212
- fi
213
- fi
214
-
215
- # Calculate consensus
216
- if [ ${#CONFIDENCES[@]} -gt 0 ]; then
217
- SUM=0
218
- for CONF in "${CONFIDENCES[@]}"; do
219
- SUM=$(echo "$SUM + $CONF" | bc)
220
- done
221
- COUNT=${#CONFIDENCES[@]}
222
- CONSENSUS=$(echo "scale=2; $SUM / $COUNT" | bc)
223
-
224
- # Ensure leading zero for bc output (handles .87 -> 0.87)
225
- if [[ "$CONSENSUS" =~ ^\. ]]; then
226
- CONSENSUS="0$CONSENSUS"
227
- fi
228
-
229
- echo "" >&2
230
- echo "[Coordinator] Consensus: $CONSENSUS" >&2
231
-
232
- # Print aggregated feedback if available
233
- if [ ${#ALL_FEEDBACK[@]} -gt 0 ]; then
234
- echo "[Coordinator] Aggregated Feedback (${#ALL_FEEDBACK[@]} items):" >&2
235
- printf '%s\n' "${ALL_FEEDBACK[@]}" | sort -u | sed 's/^/ - /' >&2
236
- fi
237
-
238
- # Output only consensus value to stdout for callers
239
- echo "$CONSENSUS"
240
- else
241
- echo "" >&2
242
- echo "[Coordinator] No results to calculate consensus" >&2
243
- echo "0.0"
244
- fi
245
- ;;
246
-
247
- shutdown)
248
- if [ -z "$TASK_ID" ]; then
249
- echo "Error: shutdown requires --task-id"
250
- exit 1
251
- fi
252
-
253
- SHUTDOWN_KEY="swarm:${TASK_ID}:shutdown"
254
-
255
- # Build shutdown message
256
- SHUTDOWN_MSG=$(jq -n \
257
- --arg reason "${REASON:-task_complete}" \
258
- --arg ts "$(date +%s)" \
259
- '{
260
- reason: $reason,
261
- timestamp: ($ts | tonumber)
262
- }')
263
-
264
- # Broadcast shutdown signal
265
- echo "$SHUTDOWN_MSG" | redis-cli -x LPUSH "$SHUTDOWN_KEY" >/dev/null
266
-
267
- echo "[Coordinator] 🛑 Shutdown signal broadcasted"
268
- echo " Task ID: $TASK_ID"
269
- echo " Reason: ${REASON:-task_complete}"
270
- ;;
271
-
272
- *)
273
- echo "Usage: $0 <command> [options]"
274
- echo ""
275
- echo "Commands:"
276
- echo " report - Agent reports result"
277
- echo " collect - Coordinator collects results"
278
- echo " shutdown - Coordinator broadcasts shutdown signal"
279
- echo ""
280
- echo "Note: 'enter' and 'wake' subcommands are DEPRECATED"
281
- exit 1
282
- ;;
283
- esac
@@ -1,147 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- ##############################################################################
4
- # List Active Swarms - Redis Coordination
5
- #
6
- # Queries Redis for all active swarm metadata to help track multiple
7
- # concurrent CFN Loop sessions.
8
- #
9
- # Usage:
10
- # ./list-active-swarms.sh [--task-id <id>] [--mode <mode>] [--json]
11
- ##############################################################################
12
-
13
- set -euo pipefail
14
-
15
- # Configuration
16
- TASK_ID_FILTER=""
17
- MODE_FILTER=""
18
- JSON_OUTPUT=false
19
-
20
- # Parse arguments
21
- while [[ $# -gt 0 ]]; do
22
- case $1 in
23
- --task-id)
24
- TASK_ID_FILTER="$2"
25
- shift 2
26
- ;;
27
- --mode)
28
- MODE_FILTER="$2"
29
- shift 2
30
- ;;
31
- --json)
32
- JSON_OUTPUT=true
33
- shift
34
- ;;
35
- *)
36
- echo "Unknown option: $1"
37
- echo "Usage: $0 [--task-id <id>] [--mode <mode>] [--json]"
38
- exit 1
39
- ;;
40
- esac
41
- done
42
-
43
- # Get all swarm metadata keys
44
- SWARM_KEYS=$(redis-cli --scan --pattern "swarm:*:metadata" 2>/dev/null || echo "")
45
-
46
- if [ -z "$SWARM_KEYS" ]; then
47
- if [ "$JSON_OUTPUT" = true ]; then
48
- echo '{"swarms": [], "count": 0}'
49
- else
50
- echo "No active swarms found"
51
- fi
52
- exit 0
53
- fi
54
-
55
- # Initialize JSON array
56
- if [ "$JSON_OUTPUT" = true ]; then
57
- echo '{"swarms": ['
58
- FIRST=true
59
- fi
60
-
61
- # Process each swarm
62
- while IFS= read -r KEY; do
63
- if [ -z "$KEY" ]; then
64
- continue
65
- fi
66
-
67
- # Extract swarm ID from key (swarm:swarm-<task-id>:metadata)
68
- SWARM_ID=$(echo "$KEY" | sed 's/swarm:\(.*\):metadata/\1/')
69
-
70
- # Get metadata
71
- TASK_ID=$(redis-cli hget "$KEY" task_id 2>/dev/null || echo "")
72
- MODE=$(redis-cli hget "$KEY" mode 2>/dev/null || echo "")
73
- MAX_AGENTS=$(redis-cli hget "$KEY" max_agents 2>/dev/null || echo "")
74
- LOOP3_AGENTS=$(redis-cli hget "$KEY" loop3_agents 2>/dev/null || echo "")
75
- LOOP2_AGENTS=$(redis-cli hget "$KEY" loop2_agents 2>/dev/null || echo "")
76
- PRODUCT_OWNER=$(redis-cli hget "$KEY" product_owner 2>/dev/null || echo "")
77
- CREATED_AT=$(redis-cli hget "$KEY" created_at 2>/dev/null || echo "")
78
- STATUS=$(redis-cli hget "$KEY" status 2>/dev/null || echo "in_progress")
79
- FINAL_CONSENSUS=$(redis-cli hget "$KEY" final_consensus 2>/dev/null || echo "")
80
- TOTAL_ITERATIONS=$(redis-cli hget "$KEY" total_iterations 2>/dev/null || echo "")
81
- COMPLETED_AT=$(redis-cli hget "$KEY" completed_at 2>/dev/null || echo "")
82
-
83
- # Apply filters
84
- if [ -n "$TASK_ID_FILTER" ] && [ "$TASK_ID" != "$TASK_ID_FILTER" ]; then
85
- continue
86
- fi
87
-
88
- if [ -n "$MODE_FILTER" ] && [ "$MODE" != "$MODE_FILTER" ]; then
89
- continue
90
- fi
91
-
92
- # Output
93
- if [ "$JSON_OUTPUT" = true ]; then
94
- if [ "$FIRST" = false ]; then
95
- echo ","
96
- fi
97
- FIRST=false
98
-
99
- cat <<EOF
100
- {
101
- "swarm_id": "$SWARM_ID",
102
- "task_id": "$TASK_ID",
103
- "mode": "$MODE",
104
- "status": "$STATUS",
105
- "max_agents": $MAX_AGENTS,
106
- "loop3_agents": "$LOOP3_AGENTS",
107
- "loop2_agents": "$LOOP2_AGENTS",
108
- "product_owner": "$PRODUCT_OWNER",
109
- "created_at": "$CREATED_AT",
110
- "final_consensus": "$FINAL_CONSENSUS",
111
- "total_iterations": "$TOTAL_ITERATIONS",
112
- "completed_at": "$COMPLETED_AT"
113
- }
114
- EOF
115
- else
116
- echo "========================================="
117
- echo "Swarm ID: $SWARM_ID"
118
- echo "Task ID: $TASK_ID"
119
- echo "Mode: $MODE"
120
- echo "Status: $STATUS"
121
- echo "Agents: $MAX_AGENTS total"
122
- echo " Loop 3: $LOOP3_AGENTS"
123
- echo " Loop 2: $LOOP2_AGENTS"
124
- echo " Product Owner: $PRODUCT_OWNER"
125
- echo "Created: $CREATED_AT"
126
-
127
- if [ -n "$COMPLETED_AT" ]; then
128
- echo "Completed: $COMPLETED_AT"
129
- echo "Final Consensus: $FINAL_CONSENSUS"
130
- echo "Total Iterations: $TOTAL_ITERATIONS"
131
- fi
132
-
133
- echo ""
134
- fi
135
-
136
- done <<< "$SWARM_KEYS"
137
-
138
- # Close JSON array
139
- if [ "$JSON_OUTPUT" = true ]; then
140
- echo ""
141
- echo "],"
142
-
143
- # Count swarms
144
- COUNT=$(echo "$SWARM_KEYS" | wc -l)
145
- echo "\"count\": $COUNT"
146
- echo "}"
147
- fi