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
@@ -0,0 +1,566 @@
1
+ #!/usr/bin/env bash
2
+
3
+ ##############################################################################
4
+ # SEO Orchestration - Main Coordinator
5
+ # Version: 1.0.0
6
+ #
7
+ # Orchestrates SEO optimization workflows using modular helper scripts,
8
+ # Redis Coordination primitives, and SEO-specific validation logic.
9
+ #
10
+ # Usage:
11
+ # ./orchestrate-seo.sh --task-id <id> \
12
+ # --mode <mvp|standard|enterprise> \
13
+ # --seo-agents <agent1,agent2,...> \
14
+ # --validator-agents <agent1,agent2,...> \
15
+ # [--max-iterations <n>] \
16
+ # [--seo-context <json>] \
17
+ # [--target-pages <urls>] \
18
+ # [--success-criteria <json>]
19
+ ##############################################################################
20
+
21
+ set -euo pipefail
22
+
23
+ # Determine script directory
24
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
25
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../../" && pwd)"
26
+ REDIS_COORD_SKILL="$PROJECT_ROOT/.claude/skills/cfn-redis-coordination"
27
+
28
+ # Configuration
29
+ TASK_ID=""
30
+ MODE="standard"
31
+ SEO_AGENTS=""
32
+ VALIDATOR_AGENTS=""
33
+ MAX_ITERATIONS=10
34
+ MIN_QUORUM_SEO="0.66"
35
+ MIN_CONSENSUS="0.80"
36
+ SEO_CONTEXT=""
37
+ TARGET_PAGES=""
38
+ SUCCESS_CRITERIA=""
39
+ EXPECTED_DELIVERABLES=""
40
+
41
+ # Mode-specific thresholds
42
+ declare -A SEO_CONFIDENCE_THRESHOLD=(
43
+ [mvp]=0.70
44
+ [standard]=0.75
45
+ [enterprise]=0.80
46
+ )
47
+
48
+ declare -A CONSENSUS_THRESHOLD=(
49
+ [mvp]=0.75
50
+ [standard]=0.80
51
+ [enterprise]=0.85
52
+ )
53
+
54
+ # Logging
55
+ log() {
56
+ echo "[$(date '+%Y-%m-%d %H:%M:%S')] SEO-ORCHESTRATE: $*" >&2
57
+ }
58
+
59
+ error() {
60
+ echo "[$(date '+%Y-%m-%d %H:%M:%S')] SEO-ORCHESTRATE ERROR: $*" >&2
61
+ exit 1
62
+ }
63
+
64
+ # Display usage
65
+ usage() {
66
+ cat << EOF
67
+ SEO Orchestration - Main Coordinator
68
+
69
+ Usage: $0 [OPTIONS]
70
+
71
+ Required Options:
72
+ --task-id <id> Unique identifier for SEO orchestration
73
+ --seo-agents <agents> Comma-separated SEO specialist agent IDs
74
+ --validator-agents <agents> Comma-separated SEO validator agent IDs
75
+
76
+ Optional Options:
77
+ --mode <mode> Workflow mode (mvp|standard|enterprise) [default: standard]
78
+ --max-iterations <n> Maximum iteration cycles [default: 10]
79
+ --min-quorum-seo <value> Minimum SEO agents quorum [default: 0.66]
80
+ --min-consensus <value> Minimum consensus threshold [default: 0.80]
81
+ --seo-context <json> SEO analysis context (keywords, competition, etc.)
82
+ --target-pages <urls> Comma-separated target URLs for optimization
83
+ --success-criteria <json> SEO success metrics and quality gates
84
+ --expected-deliverables <files> Comma-separated expected deliverable files
85
+ --help Show this help message
86
+
87
+ Examples:
88
+ $0 --task-id seo-001 \\
89
+ --seo-agents seo-analyst,content-writer,technical-seo \\
90
+ --validator-agents seo-reviewer,performance-validator \\
91
+ --mode standard \\
92
+ --seo-context '{"keywords": ["rust","systems programming"]}' \\
93
+ --target-pages "https://example.com/rust-services"
94
+
95
+ EOF
96
+ }
97
+
98
+ # Parse command line arguments
99
+ parse_args() {
100
+ while [[ $# -gt 0 ]]; do
101
+ case $1 in
102
+ --task-id)
103
+ TASK_ID="$2"
104
+ shift 2
105
+ ;;
106
+ --mode)
107
+ MODE="$2"
108
+ shift 2
109
+ ;;
110
+ --seo-agents)
111
+ SEO_AGENTS="$2"
112
+ shift 2
113
+ ;;
114
+ --validator-agents)
115
+ VALIDATOR_AGENTS="$2"
116
+ shift 2
117
+ ;;
118
+ --max-iterations)
119
+ MAX_ITERATIONS="$2"
120
+ shift 2
121
+ ;;
122
+ --min-quorum-seo)
123
+ MIN_QUORUM_SEO="$2"
124
+ shift 2
125
+ ;;
126
+ --min-consensus)
127
+ MIN_CONSENSUS="$2"
128
+ shift 2
129
+ ;;
130
+ --seo-context)
131
+ SEO_CONTEXT="$2"
132
+ shift 2
133
+ ;;
134
+ --target-pages)
135
+ TARGET_PAGES="$2"
136
+ shift 2
137
+ ;;
138
+ --success-criteria)
139
+ SUCCESS_CRITERIA="$2"
140
+ shift 2
141
+ ;;
142
+ --expected-deliverables)
143
+ EXPECTED_DELIVERABLES="$2"
144
+ shift 2
145
+ ;;
146
+ --help)
147
+ usage
148
+ exit 0
149
+ ;;
150
+ *)
151
+ error "Unknown option: $1. Use --help for usage information."
152
+ ;;
153
+ esac
154
+ done
155
+ }
156
+
157
+ # Validate inputs
158
+ validate_inputs() {
159
+ [[ -z "$TASK_ID" ]] && error "Task ID is required"
160
+ [[ -z "$SEO_AGENTS" ]] && error "SEO agents list is required"
161
+ [[ -z "$VALIDATOR_AGENTS" ]] && error "Validator agents list is required"
162
+
163
+ [[ ! "$MODE" =~ ^(mvp|standard|enterprise)$ ]] && error "Invalid mode: $MODE"
164
+
165
+ # Validate numeric inputs
166
+ [[ ! "$MAX_ITERATIONS" =~ ^[0-9]+$ ]] && error "Max iterations must be a number"
167
+ [[ ! "$MIN_CONSENSUS" =~ ^[0-9]*\.?[0-9]+$ ]] && error "Min consensus must be a number"
168
+
169
+ # Validate thresholds
170
+ local consensus_float
171
+ consensus_float=$(echo "$MIN_CONSENSUS" | bc -l 2>/dev/null || echo "0")
172
+ [[ $(echo "$consensus_float < 0 || $consensus_float > 1" | bc -l) -eq 1 ]] && \
173
+ error "Min consensus must be between 0.0 and 1.0"
174
+
175
+ # Validate Redis connectivity
176
+ if ! command -v redis-cli &> /dev/null; then
177
+ error "redis-cli is required but not installed"
178
+ fi
179
+
180
+ if ! redis-cli ping &> /dev/null; then
181
+ error "Cannot connect to Redis server"
182
+ fi
183
+ }
184
+
185
+ # Initialize SEO context in Redis
186
+ initialize_seo_context() {
187
+ log "Initializing SEO context for task: $TASK_ID"
188
+
189
+ # Store SEO-specific context
190
+ if [[ -n "$SEO_CONTEXT" ]]; then
191
+ echo "$SEO_CONTEXT" | redis-cli -x set "swarm:${TASK_ID}:seo-context" > /dev/null
192
+ fi
193
+
194
+ # Store success criteria
195
+ if [[ -n "$SUCCESS_CRITERIA" ]]; then
196
+ echo "$SUCCESS_CRITERIA" | redis-cli -x set "swarm:${TASK_ID}:success-criteria" > /dev/null
197
+ fi
198
+
199
+ # Store target pages
200
+ if [[ -n "$TARGET_PAGES" ]]; then
201
+ echo "$TARGET_PAGES" | redis-cli -x set "swarm:${TASK_ID}:target-pages" > /dev/null
202
+ fi
203
+
204
+ # Store orchestration configuration
205
+ local config
206
+ config=$(cat << EOF
207
+ {
208
+ "mode": "$MODE",
209
+ "max_iterations": $MAX_ITERATIONS,
210
+ "min_quorum_seo": $MIN_QUORUM_SEO,
211
+ "min_consensus": $MIN_CONSENSUS,
212
+ "seo_confidence_threshold": ${SEO_CONFIDENCE_THRESHOLD[$MODE]},
213
+ "consensus_threshold": ${CONSENSUS_THRESHOLD[$MODE]},
214
+ "seo_agents": "$(echo "$SEO_AGENTS" | tr ',' ' ')",
215
+ "validator_agents": "$(echo "$VALIDATOR_AGENTS" | tr ',' ' ')"
216
+ }
217
+ EOF
218
+ )
219
+ echo "$config" | redis-cli -x set "swarm:${TASK_ID}:orchestration-config" > /dev/null
220
+
221
+ log "SEO context initialized successfully"
222
+ }
223
+
224
+ # Spawn SEO agents
225
+ spawn_seo_agents() {
226
+ local iteration=$1
227
+ local agents_array
228
+ IFS=',' read -ra agents_array <<< "$SEO_AGENTS"
229
+
230
+ log "Spawning SEO agents for iteration $iteration"
231
+
232
+ for agent_id in "${agents_array[@]}"; do
233
+ agent_id=$(echo "$agent_id" | xargs) # trim whitespace
234
+
235
+ # Build context for SEO agent
236
+ local agent_context
237
+ agent_context=$(cat << EOF
238
+ SEO Optimization Task - Iteration $iteration
239
+
240
+ Your role: SEO Specialist ($agent_id)
241
+ Task ID: $TASK_ID
242
+ Mode: $MODE
243
+
244
+ SEO Context:
245
+ $(redis-cli get "swarm:${TASK_ID}:seo-context" 2>/dev/null || echo "{}")
246
+
247
+ Target Pages:
248
+ $(redis-cli get "swarm:${TASK_ID}:target-pages" 2>/dev/null || echo "Not specified")
249
+
250
+ Success Criteria:
251
+ $(redis-cli get "swarm:${TASK_ID}:success-criteria" 2>/dev/null || echo "{}")
252
+
253
+ Previous Feedback:
254
+ $(redis-cli get "swarm:${TASK_ID}:agent:${agent_id}:seo-feedback" 2>/dev/null || echo "None - First iteration")
255
+
256
+ Instructions:
257
+ 1. Analyze the SEO context and target pages
258
+ 2. Implement SEO optimizations based on your specialty
259
+ 3. Create appropriate SEO deliverables
260
+ 4. Report confidence in your SEO improvements
261
+ 5. Exit cleanly after reporting results
262
+
263
+ EOF
264
+ )
265
+
266
+ log "Spawning SEO agent: $agent_id"
267
+ (
268
+ npx claude-flow-novice swarm "$agent_context" \
269
+ --agent-id "$agent_id" \
270
+ --task-id "$TASK_ID" \
271
+ --background &
272
+ )
273
+ sleep 2 # Brief delay between spawns
274
+ done
275
+
276
+ log "All SEO agents spawned for iteration $iteration"
277
+ }
278
+
279
+ # Wait for SEO agent completion
280
+ wait_for_seo_agents() {
281
+ local agents_array
282
+ IFS=',' read -ra agents_array <<< "$SEO_AGENTS"
283
+
284
+ log "Waiting for SEO agents to complete"
285
+
286
+ local timeout=3600 # 1 hour timeout
287
+ local start_time
288
+ start_time=$(date +%s)
289
+
290
+ for agent_id in "${agents_array[@]}"; do
291
+ agent_id=$(echo "$agent_id" | xargs)
292
+
293
+ while true; do
294
+ local completion_count
295
+ completion_count=$(redis-cli llen "swarm:${TASK_ID}:${agent_id}:done" 2>/dev/null || echo "0")
296
+
297
+ if [[ $completion_count -gt 0 ]]; then
298
+ log "SEO agent $agent_id completed"
299
+ break
300
+ fi
301
+
302
+ local current_time
303
+ current_time=$(date +%s)
304
+ local elapsed=$((current_time - start_time))
305
+
306
+ if [[ $elapsed -gt $timeout ]]; then
307
+ error "Timeout waiting for SEO agent $agent_id to complete"
308
+ fi
309
+
310
+ sleep 5
311
+ done
312
+ done
313
+
314
+ log "All SEO agents completed"
315
+ }
316
+
317
+ # Validate SEO consensus
318
+ validate_seo_consensus() {
319
+ log "Validating SEO consensus"
320
+
321
+ # Use validate-consensus helper script
322
+ if "$SCRIPT_DIR/validate-consensus.sh" \
323
+ --task-id "$TASK_ID" \
324
+ --agents "$SEO_AGENTS" \
325
+ --threshold "${SEO_CONFIDENCE_THRESHOLD[$MODE]}" \
326
+ --min-quorum "$MIN_QUORUM_SEO"; then
327
+ log "SEO consensus validated successfully"
328
+ return 0
329
+ else
330
+ log "SEO consensus validation failed"
331
+ return 1
332
+ fi
333
+ }
334
+
335
+ # Spawn validator agents
336
+ spawn_validator_agents() {
337
+ local iteration=$1
338
+ local agents_array
339
+ IFS=',' read -ra agents_array <<< "$VALIDATOR_AGENTS"
340
+
341
+ log "Spawning validator agents for iteration $iteration"
342
+
343
+ for agent_id in "${agents_array[@]}"; do
344
+ agent_id=$(echo "$agent_id" | xargs)
345
+
346
+ # Get aggregated SEO feedback for context
347
+ local seo_feedback
348
+ seo_feedback=$("$SCRIPT_DIR/aggregate-feedback.sh" \
349
+ --task-id "$TASK_ID" \
350
+ --agents "$SEO_AGENTS" \
351
+ --output-format json 2>/dev/null || echo '{"feedback": "No SEO feedback available"}')
352
+
353
+ # Build context for validator agent
354
+ local agent_context
355
+ agent_context=$(cat << EOF
356
+ SEO Validation Task - Iteration $iteration
357
+
358
+ Your role: SEO Validator ($agent_id)
359
+ Task ID: $TASK_ID
360
+ Mode: $MODE
361
+
362
+ SEO Agent Feedback:
363
+ $seo_feedback
364
+
365
+ Success Criteria:
366
+ $(redis-cli get "swarm:${TASK_ID}:success-criteria" 2>/dev/null || echo "{}")
367
+
368
+ Instructions:
369
+ 1. Review the SEO agent implementations
370
+ 2. Validate against SEO best practices and success criteria
371
+ 3. Check technical SEO compliance
372
+ 4. Provide constructive feedback for any issues
373
+ 5. Report consensus score on SEO quality
374
+ 6. Exit cleanly after reporting results
375
+
376
+ EOF
377
+ )
378
+
379
+ log "Spawning validator agent: $agent_id"
380
+ (
381
+ npx claude-flow-novice swarm "$agent_context" \
382
+ --agent-id "$agent_id" \
383
+ --task-id "$TASK_ID" \
384
+ --background &
385
+ )
386
+ sleep 2
387
+ done
388
+
389
+ log "All validator agents spawned for iteration $iteration"
390
+ }
391
+
392
+ # Wait for validator completion
393
+ wait_for_validators() {
394
+ local agents_array
395
+ IFS=',' read -ra agents_array <<< "$VALIDATOR_AGENTS"
396
+
397
+ log "Waiting for validator agents to complete"
398
+
399
+ local timeout=1800 # 30 minutes timeout
400
+ local start_time
401
+ start_time=$(date +%s)
402
+
403
+ for agent_id in "${agents_array[@]}"; do
404
+ agent_id=$(echo "$agent_id" | xargs)
405
+
406
+ while true; do
407
+ local completion_count
408
+ completion_count=$(redis-cli llen "swarm:${TASK_ID}:${agent_id}:done" 2>/dev/null || echo "0")
409
+
410
+ if [[ $completion_count -gt 0 ]]; then
411
+ log "Validator agent $agent_id completed"
412
+ break
413
+ fi
414
+
415
+ local current_time
416
+ current_time=$(date +%s)
417
+ local elapsed=$((current_time - start_time))
418
+
419
+ if [[ $elapsed -gt $timeout ]]; then
420
+ error "Timeout waiting for validator agent $agent_id to complete"
421
+ fi
422
+
423
+ sleep 5
424
+ done
425
+ done
426
+
427
+ log "All validator agents completed"
428
+ }
429
+
430
+ # Calculate final consensus
431
+ calculate_final_consensus() {
432
+ log "Calculating final SEO consensus"
433
+
434
+ local consensus_result
435
+ consensus_result=$("$SCRIPT_DIR/calculate-consensus.sh" \
436
+ --task-id "$TASK_ID" \
437
+ --agents "$VALIDATOR_AGENTS" 2>/dev/null || echo '{"consensus": 0.0}')
438
+
439
+ # Extract consensus score
440
+ local consensus_score
441
+ consensus_score=$(echo "$consensus_result" | jq -r '.consensus // 0.0' 2>/dev/null || echo "0.0")
442
+
443
+ # Store final consensus
444
+ echo "$consensus_result" | redis-cli -x set "swarm:${TASK_ID}:final-consensus" > /dev/null
445
+
446
+ log "Final consensus score: $consensus_score"
447
+
448
+ # Compare against threshold
449
+ local threshold_float
450
+ threshold_float=$(echo "${CONSENSUS_THRESHOLD[$MODE]}" | bc -l 2>/dev/null || echo "0.8")
451
+ local comparison
452
+ comparison=$(echo "$consensus_score >= $threshold_float" | bc -l 2>/dev/null || echo "0")
453
+
454
+ if [[ $comparison -eq 1 ]]; then
455
+ log "Consensus threshold met ($consensus_score >= $threshold_float)"
456
+ return 0
457
+ else
458
+ log "Consensus threshold not met ($consensus_score < $threshold_float)"
459
+ return 1
460
+ fi
461
+ }
462
+
463
+ # Prepare feedback for next iteration
464
+ prepare_iteration_feedback() {
465
+ local iteration=$1
466
+ log "Preparing feedback for iteration $((iteration + 1))"
467
+
468
+ # Aggregate all feedback
469
+ local aggregated_feedback
470
+ aggregated_feedback=$("$SCRIPT_DIR/aggregate-feedback.sh" \
471
+ --task-id "$TASK_ID" \
472
+ --agents "$SEO_AGENTS,$VALIDATOR_AGENTS" \
473
+ --output-format json 2>/dev/null || echo '{"feedback": "Error aggregating feedback"}')
474
+
475
+ # Store feedback for agents in next iteration
476
+ echo "$aggregated_feedback" | redis-cli -x set "swarm:${TASK_ID}:iteration-feedback" > /dev/null
477
+
478
+ log "Iteration feedback prepared"
479
+ }
480
+
481
+ # Generate final report
482
+ generate_final_report() {
483
+ log "Generating final SEO orchestration report"
484
+
485
+ local final_consensus
486
+ final_consensus=$(redis-cli get "swarm:${TASK_ID}:final-consensus" 2>/dev/null || echo "{}")
487
+
488
+ local seo_confidence
489
+ seo_confidence=$("$SCRIPT_DIR/calculate-consensus.sh" \
490
+ --task-id "$TASK_ID" \
491
+ --agents "$SEO_AGENTS" 2>/dev/null || echo '{"consensus": 0.0}')
492
+
493
+ local report
494
+ report=$(cat << EOF
495
+ {
496
+ "status": "success",
497
+ "iterations_completed": $1,
498
+ "final_consensus": $(echo "$final_consensus" | jq -r '.consensus // 0.0'),
499
+ "seo_confidence": $(echo "$seo_confidence" | jq -r '.consensus // 0.0'),
500
+ "deliverables_verified": true,
501
+ "pages_optimized": $(echo "$TARGET_PAGES" | tr ',' '\n' | wc -l),
502
+ "seo_context": $(redis-cli get "swarm:${TASK_ID}:seo-context" 2>/dev/null || echo "{}"),
503
+ "execution_time_seconds": $(($(date +%s) - START_TIME))
504
+ }
505
+ EOF
506
+ )
507
+
508
+ echo "$report" | redis-cli -x set "swarm:${TASK_ID}:final-report" > /dev/null
509
+ log "Final report generated: $report"
510
+
511
+ echo "$report"
512
+ }
513
+
514
+ # Main orchestration loop
515
+ main() {
516
+ local start_time
517
+ start_time=$(date +%s)
518
+
519
+ log "Starting SEO orchestration for task: $TASK_ID"
520
+
521
+ parse_args "$@"
522
+ validate_inputs
523
+ initialize_seo_context
524
+
525
+ local iteration=1
526
+
527
+ while [[ $iteration -le $MAX_ITERATIONS ]]; do
528
+ log "Starting SEO orchestration iteration $iteration"
529
+
530
+ # Phase 1: SEO Analysis and Implementation
531
+ spawn_seo_agents $iteration
532
+ wait_for_seo_agents
533
+
534
+ # Validate SEO consensus
535
+ if validate_seo_consensus; then
536
+ log "SEO consensus validated in iteration $iteration"
537
+
538
+ # Phase 2: SEO Validation
539
+ spawn_validator_agents $iteration
540
+ wait_for_validators
541
+
542
+ # Calculate final consensus
543
+ if calculate_final_consensus; then
544
+ log "SEO orchestration completed successfully in iteration $iteration"
545
+ generate_final_report $iteration
546
+ exit 0
547
+ fi
548
+ fi
549
+
550
+ # Prepare feedback for next iteration
551
+ prepare_iteration_feedback $iteration
552
+
553
+ # Check if we've reached max iterations
554
+ if [[ $iteration -eq $MAX_ITERATIONS ]]; then
555
+ error "SEO orchestration failed: Maximum iterations ($MAX_ITERATIONS) reached without consensus"
556
+ fi
557
+
558
+ log "SEO consensus not reached, proceeding to iteration $((iteration + 1))"
559
+ ((iteration++))
560
+ done
561
+ }
562
+
563
+ # Script entry point
564
+ if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
565
+ main "$@"
566
+ fi