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,129 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- ##############################################################################
4
- # Test Dead Letter Queue (DLQ) Functionality
5
- # Validates DLQ write and query operations with simulated failures
6
- ##############################################################################
7
-
8
- set -euo pipefail
9
-
10
- TASK_ID="test-dlq-$(date +%s)"
11
- TEST_AGENT="test-agent-1"
12
-
13
- echo "=== DLQ Functionality Test ==="
14
- echo "Task ID: $TASK_ID"
15
- echo "Test Agent: $TEST_AGENT"
16
- echo ""
17
-
18
- ##############################################################################
19
- # Test 1: Simulate DLQ Write
20
- ##############################################################################
21
- echo "[Test 1] Simulating DLQ write for failed agent..."
22
-
23
- DLQ_KEY="swarm:${TASK_ID}:dlq:${TEST_AGENT}"
24
- DLQ_ENTRY=$(jq -n \
25
- --arg reason "timeout_after_retries" \
26
- --arg retries "3" \
27
- --arg ts "$(date +%s)" \
28
- '{reason: $reason, retry_count: ($retries | tonumber), timestamp: ($ts | tonumber)}')
29
-
30
- echo "$DLQ_ENTRY" | redis-cli -x LPUSH "$DLQ_KEY" >/dev/null
31
- redis-cli EXPIRE "$DLQ_KEY" 604800 >/dev/null # 7 days TTL
32
-
33
- echo " ✓ DLQ entry written"
34
- echo ""
35
-
36
- ##############################################################################
37
- # Test 2: Query Specific Agent DLQ
38
- ##############################################################################
39
- echo "[Test 2] Querying DLQ for specific agent..."
40
- ./.claude/skills/cfn-redis-coordination/query-dlq.sh \
41
- --task-id "$TASK_ID" \
42
- --agent-id "$TEST_AGENT"
43
- echo ""
44
-
45
- ##############################################################################
46
- # Test 3: Add Multiple Failures
47
- ##############################################################################
48
- echo "[Test 3] Adding multiple failure entries..."
49
-
50
- TEST_AGENT_2="test-agent-2"
51
- DLQ_KEY_2="swarm:${TASK_ID}:dlq:${TEST_AGENT_2}"
52
-
53
- for i in {1..3}; do
54
- DLQ_ENTRY=$(jq -n \
55
- --arg reason "timeout_after_retries" \
56
- --arg retries "$i" \
57
- --arg ts "$(date +%s)" \
58
- '{reason: $reason, retry_count: ($retries | tonumber), timestamp: ($ts | tonumber)}')
59
-
60
- echo "$DLQ_ENTRY" | redis-cli -x LPUSH "$DLQ_KEY_2" >/dev/null
61
- sleep 1
62
- done
63
-
64
- redis-cli EXPIRE "$DLQ_KEY_2" 604800 >/dev/null
65
-
66
- echo " ✓ Added 3 failure entries for $TEST_AGENT_2"
67
- echo ""
68
-
69
- ##############################################################################
70
- # Test 4: Query All DLQ Entries for Task
71
- ##############################################################################
72
- echo "[Test 4] Querying all DLQ entries for task..."
73
- ./.claude/skills/cfn-redis-coordination/query-dlq.sh --task-id "$TASK_ID"
74
- echo ""
75
-
76
- ##############################################################################
77
- # Test 5: Verify TTL
78
- ##############################################################################
79
- echo "[Test 5] Verifying TTL..."
80
- TTL=$(redis-cli TTL "$DLQ_KEY")
81
- EXPECTED_TTL=604800 # 7 days
82
-
83
- if [ "$TTL" -gt 0 ] && [ "$TTL" -le "$EXPECTED_TTL" ]; then
84
- echo " ✓ TTL correctly set: ${TTL}s (~7 days)"
85
- else
86
- echo " ✗ TTL verification failed: ${TTL}s"
87
- exit 1
88
- fi
89
- echo ""
90
-
91
- ##############################################################################
92
- # Test 6: Verify Entry Count
93
- ##############################################################################
94
- echo "[Test 6] Verifying entry counts..."
95
-
96
- COUNT_1=$(redis-cli LLEN "$DLQ_KEY")
97
- COUNT_2=$(redis-cli LLEN "$DLQ_KEY_2")
98
-
99
- echo " Agent 1 entries: $COUNT_1 (expected: 1)"
100
- echo " Agent 2 entries: $COUNT_2 (expected: 3)"
101
-
102
- if [ "$COUNT_1" = "1" ] && [ "$COUNT_2" = "3" ]; then
103
- echo " ✓ Entry counts correct"
104
- else
105
- echo " ✗ Entry count mismatch"
106
- exit 1
107
- fi
108
- echo ""
109
-
110
- ##############################################################################
111
- # Cleanup
112
- ##############################################################################
113
- echo "[Cleanup] Removing test DLQ entries..."
114
- redis-cli DEL "$DLQ_KEY" "$DLQ_KEY_2" >/dev/null
115
- echo " ✓ Cleanup complete"
116
- echo ""
117
-
118
- ##############################################################################
119
- # Summary
120
- ##############################################################################
121
- echo "=== Test Summary ==="
122
- echo "✅ All DLQ tests passed!"
123
- echo ""
124
- echo "Validated:"
125
- echo " - DLQ write functionality"
126
- echo " - Single agent query"
127
- echo " - Multi-agent query"
128
- echo " - TTL expiration (7 days)"
129
- echo " - Entry counting"
@@ -1,320 +0,0 @@
1
- #!/bin/bash
2
- #
3
- # Test Script: Iteration Feedback Mechanism
4
- #
5
- # Validates that:
6
- # 1. Validators can report feedback with confidence scores
7
- # 2. Orchestrator collects and aggregates feedback
8
- # 3. Feedback is passed to Loop 3 agents via wake signal
9
- # 4. Feedback is stored in Redis with TTL
10
- # 5. Agents can read feedback for iteration N
11
-
12
- set -euo pipefail
13
-
14
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
15
- TASK_ID="test-feedback-$(date +%s)"
16
-
17
- echo "=========================================="
18
- echo "Iteration Feedback Mechanism Test"
19
- echo "=========================================="
20
- echo "Task ID: $TASK_ID"
21
- echo ""
22
-
23
- # Cleanup function
24
- cleanup() {
25
- echo ""
26
- echo "Cleaning up Redis keys..."
27
- redis-cli --scan --pattern "swarm:${TASK_ID}:*" | xargs -r redis-cli del >/dev/null 2>&1 || true
28
- echo "✅ Cleanup complete"
29
- }
30
-
31
- # Register cleanup on exit
32
- trap cleanup EXIT
33
-
34
- # Test 1: Validators report confidence with feedback
35
- echo "=== Test 1: Validators Report Feedback ==="
36
- echo ""
37
-
38
- VALIDATOR_1="reviewer-1"
39
- VALIDATOR_2="tester-1"
40
- VALIDATOR_3="security-1"
41
-
42
- # Validator 1: Low confidence with specific feedback
43
- echo "[$VALIDATOR_1] Reporting confidence 0.65 with 2 feedback items..."
44
- $SCRIPT_DIR/invoke-waiting-mode.sh report \
45
- --task-id "$TASK_ID" \
46
- --agent-id "$VALIDATOR_1" \
47
- --confidence 0.65 \
48
- --iteration 1 \
49
- --feedback "Add error handling for null inputs,Improve documentation for API endpoints"
50
-
51
- echo ""
52
-
53
- # Validator 2: Medium confidence with 3 feedback items
54
- echo "[$VALIDATOR_2] Reporting confidence 0.72 with 3 feedback items..."
55
- $SCRIPT_DIR/invoke-waiting-mode.sh report \
56
- --task-id "$TASK_ID" \
57
- --agent-id "$VALIDATOR_2" \
58
- --confidence 0.72 \
59
- --iteration 1 \
60
- --feedback "Increase test coverage to 80%,Add edge case tests for empty arrays,Fix flaky timeout test"
61
-
62
- echo ""
63
-
64
- # Validator 3: Low confidence with security feedback
65
- echo "[$VALIDATOR_3] Reporting confidence 0.60 with 2 feedback items..."
66
- $SCRIPT_DIR/invoke-waiting-mode.sh report \
67
- --task-id "$TASK_ID" \
68
- --agent-id "$VALIDATOR_3" \
69
- --confidence 0.60 \
70
- --iteration 1 \
71
- --feedback "Fix SQL injection vulnerability in query builder,Add rate limiting to API endpoints"
72
-
73
- echo ""
74
-
75
- # Test 2: Collect feedback from validators
76
- echo "=== Test 2: Orchestrator Collects Feedback ==="
77
- echo ""
78
-
79
- COLLECT_OUTPUT=$($SCRIPT_DIR/invoke-waiting-mode.sh collect \
80
- --task-id "$TASK_ID" \
81
- --agent-ids "$VALIDATOR_1,$VALIDATOR_2,$VALIDATOR_3")
82
-
83
- echo "$COLLECT_OUTPUT"
84
- echo ""
85
-
86
- # Extract consensus and feedback
87
- CONSENSUS=$(echo "$COLLECT_OUTPUT" | tail -1)
88
- echo "Calculated Consensus: $CONSENSUS"
89
-
90
- # Verify feedback aggregation
91
- if echo "$COLLECT_OUTPUT" | grep -q "Aggregated Feedback"; then
92
- echo "✅ Feedback aggregated successfully"
93
- FEEDBACK_COUNT=$(echo "$COLLECT_OUTPUT" | grep -c '^\s*-' || echo "0")
94
- echo " Total feedback items: $FEEDBACK_COUNT"
95
- else
96
- echo "❌ No aggregated feedback found"
97
- exit 1
98
- fi
99
-
100
- echo ""
101
-
102
- # Test 3: Wake Loop 3 agent with validator feedback
103
- echo "=== Test 3: Wake Loop 3 Agent with Feedback ==="
104
- echo ""
105
-
106
- LOOP3_AGENT="backend-dev"
107
-
108
- # Extract aggregated feedback for passing to Loop 3
109
- LOOP2_FEEDBACK=$(echo "$COLLECT_OUTPUT" | sed -n '/Aggregated Feedback/,/Consensus:/p' | grep '^\s*-' | sed 's/^\s*-\s*//' | paste -sd ',' -)
110
-
111
- # Build full feedback message
112
- FULL_FEEDBACK="Improve consensus from $CONSENSUS to >=0.90,$LOOP2_FEEDBACK"
113
-
114
- echo "Waking $LOOP3_AGENT with comprehensive feedback..."
115
- echo "Feedback items: $(echo "$FULL_FEEDBACK" | tr ',' '\n' | wc -l)"
116
- echo ""
117
-
118
- $SCRIPT_DIR/invoke-waiting-mode.sh wake \
119
- --task-id "$TASK_ID" \
120
- --agent-id "$LOOP3_AGENT" \
121
- --reason "cfn_loop_iteration" \
122
- --iteration 2 \
123
- --priority 30 \
124
- --feedback "$FULL_FEEDBACK"
125
-
126
- echo ""
127
-
128
- # Test 4: Verify feedback stored in Redis
129
- echo "=== Test 4: Verify Feedback Storage ==="
130
- echo ""
131
-
132
- FEEDBACK_KEY="swarm:${TASK_ID}:${LOOP3_AGENT}:feedback:iteration-2"
133
- echo "Checking Redis key: $FEEDBACK_KEY"
134
-
135
- STORED_FEEDBACK=$(redis-cli get "$FEEDBACK_KEY")
136
-
137
- if [ -n "$STORED_FEEDBACK" ] && [ "$STORED_FEEDBACK" != "(nil)" ]; then
138
- echo "✅ Feedback stored successfully"
139
- echo ""
140
- echo "Stored feedback (JSON array):"
141
- echo "$STORED_FEEDBACK" | jq '.'
142
- echo ""
143
-
144
- # Verify TTL
145
- TTL=$(redis-cli ttl "$FEEDBACK_KEY")
146
- echo "TTL: $TTL seconds ($(echo "scale=1; $TTL / 3600" | bc) hours)"
147
-
148
- if [ "$TTL" -gt 0 ] && [ "$TTL" -le 86400 ]; then
149
- echo "✅ TTL is correct (≤24 hours)"
150
- else
151
- echo "❌ TTL is incorrect: $TTL"
152
- exit 1
153
- fi
154
- else
155
- echo "❌ Feedback not found in Redis"
156
- exit 1
157
- fi
158
-
159
- echo ""
160
-
161
- # Test 5: Agent reads feedback
162
- echo "=== Test 5: Agent Reads Feedback ==="
163
- echo ""
164
-
165
- echo "Simulating agent reading feedback from Redis..."
166
- AGENT_FEEDBACK=$(redis-cli get "$FEEDBACK_KEY")
167
-
168
- if [ -n "$AGENT_FEEDBACK" ] && [ "$AGENT_FEEDBACK" != "(nil)" ]; then
169
- echo "✅ Agent successfully read feedback"
170
- echo ""
171
- echo "Feedback items available to agent:"
172
- echo "$AGENT_FEEDBACK" | jq -r '.[]' | nl -w2 -s'. '
173
- echo ""
174
-
175
- ITEM_COUNT=$(echo "$AGENT_FEEDBACK" | jq '. | length')
176
- echo "Total actionable items: $ITEM_COUNT"
177
- else
178
- echo "❌ Agent failed to read feedback"
179
- exit 1
180
- fi
181
-
182
- echo ""
183
-
184
- # Test 6: Wake queue contains feedback
185
- echo "=== Test 6: Verify Wake Queue Feedback ==="
186
- echo ""
187
-
188
- WAKE_QUEUE="swarm:${TASK_ID}:${LOOP3_AGENT}:wake-queue"
189
- echo "Checking wake queue: $WAKE_QUEUE"
190
-
191
- # Pop wake message from queue
192
- WAKE_MSG=$(redis-cli ZPOPMIN "$WAKE_QUEUE" 1 | sed -n '1p')
193
-
194
- if [ -n "$WAKE_MSG" ] && [ "$WAKE_MSG" != "(nil)" ]; then
195
- echo "✅ Wake message found in queue"
196
- echo ""
197
- echo "Wake message contents:"
198
- echo "$WAKE_MSG" | jq '.'
199
- echo ""
200
-
201
- # Verify feedback in wake message
202
- WAKE_FEEDBACK=$(echo "$WAKE_MSG" | jq -r '.feedback[]' 2>/dev/null | head -3)
203
- if [ -n "$WAKE_FEEDBACK" ]; then
204
- echo "✅ Feedback included in wake message"
205
- echo ""
206
- echo "First 3 feedback items:"
207
- echo "$WAKE_MSG" | jq -r '.feedback[]' | head -3 | nl -w2 -s'. '
208
- else
209
- echo "❌ No feedback in wake message"
210
- exit 1
211
- fi
212
- else
213
- echo "❌ No wake message in queue"
214
- exit 1
215
- fi
216
-
217
- echo ""
218
-
219
- # Test 7: Multiple iterations
220
- echo "=== Test 7: Multiple Iteration Feedback ==="
221
- echo ""
222
-
223
- echo "Simulating iteration 3 feedback..."
224
- ITERATION_3_FEEDBACK="Address remaining issues from iteration 2,Add integration tests,Update changelog"
225
-
226
- $SCRIPT_DIR/invoke-waiting-mode.sh wake \
227
- --task-id "$TASK_ID" \
228
- --agent-id "$LOOP3_AGENT" \
229
- --reason "cfn_loop_iteration" \
230
- --iteration 3 \
231
- --priority 30 \
232
- --feedback "$ITERATION_3_FEEDBACK"
233
-
234
- echo ""
235
-
236
- # Verify both iteration feedbacks are stored separately
237
- FEEDBACK_KEY_2="swarm:${TASK_ID}:${LOOP3_AGENT}:feedback:iteration-2"
238
- FEEDBACK_KEY_3="swarm:${TASK_ID}:${LOOP3_AGENT}:feedback:iteration-3"
239
-
240
- FEEDBACK_2=$(redis-cli get "$FEEDBACK_KEY_2")
241
- FEEDBACK_3=$(redis-cli get "$FEEDBACK_KEY_3")
242
-
243
- if [ -n "$FEEDBACK_2" ] && [ "$FEEDBACK_2" != "(nil)" ]; then
244
- echo "✅ Iteration 2 feedback persists"
245
- echo " Items: $(echo "$FEEDBACK_2" | jq '. | length')"
246
- fi
247
-
248
- if [ -n "$FEEDBACK_3" ] && [ "$FEEDBACK_3" != "(nil)" ]; then
249
- echo "✅ Iteration 3 feedback stored"
250
- echo " Items: $(echo "$FEEDBACK_3" | jq '. | length')"
251
- fi
252
-
253
- echo ""
254
-
255
- # Test 8: Edge cases
256
- echo "=== Test 8: Edge Cases ==="
257
- echo ""
258
-
259
- # Empty feedback
260
- echo "Testing wake with empty feedback..."
261
- $SCRIPT_DIR/invoke-waiting-mode.sh wake \
262
- --task-id "$TASK_ID" \
263
- --agent-id "test-agent" \
264
- --reason "test" \
265
- --iteration 1 \
266
- --priority 50 \
267
- --feedback ""
268
-
269
- EMPTY_FEEDBACK_KEY="swarm:${TASK_ID}:test-agent:feedback:iteration-1"
270
- EMPTY_RESULT=$(redis-cli get "$EMPTY_FEEDBACK_KEY")
271
-
272
- if [ -z "$EMPTY_RESULT" ] || [ "$EMPTY_RESULT" = "(nil)" ]; then
273
- echo "✅ Empty feedback not stored (expected)"
274
- else
275
- echo "⚠️ Empty feedback stored: $EMPTY_RESULT"
276
- fi
277
-
278
- echo ""
279
-
280
- # Iteration 0 (no feedback storage)
281
- echo "Testing wake with iteration 0..."
282
- $SCRIPT_DIR/invoke-waiting-mode.sh wake \
283
- --task-id "$TASK_ID" \
284
- --agent-id "test-agent-2" \
285
- --reason "initial" \
286
- --iteration 0 \
287
- --priority 50 \
288
- --feedback "This should not be stored"
289
-
290
- ITER_0_KEY="swarm:${TASK_ID}:test-agent-2:feedback:iteration-0"
291
- ITER_0_RESULT=$(redis-cli get "$ITER_0_KEY")
292
-
293
- if [ -z "$ITER_0_RESULT" ] || [ "$ITER_0_RESULT" = "(nil)" ]; then
294
- echo "✅ Iteration 0 feedback not stored (expected)"
295
- else
296
- echo "❌ Iteration 0 feedback should not be stored: '$ITER_0_RESULT'"
297
- exit 1
298
- fi
299
-
300
- echo ""
301
-
302
- # Summary
303
- echo "=========================================="
304
- echo "Test Summary"
305
- echo "=========================================="
306
- echo "✅ All tests passed!"
307
- echo ""
308
- echo "Validated:"
309
- echo " 1. Validators can report feedback with confidence"
310
- echo " 2. Orchestrator collects and aggregates feedback"
311
- echo " 3. Feedback passed to Loop 3 agents via wake signal"
312
- echo " 4. Feedback stored in Redis with 24-hour TTL"
313
- echo " 5. Agents can read feedback for iteration N"
314
- echo " 6. Wake queue contains feedback in message"
315
- echo " 7. Multiple iterations maintain separate feedback"
316
- echo " 8. Edge cases handled correctly"
317
- echo ""
318
- echo "Task ID: $TASK_ID"
319
- echo "Feedback mechanism is fully operational!"
320
- echo ""
@@ -1,249 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Test Suite for orchestrate-cfn-loop.sh
4
- # Tests dependency enforcement, BLPOP blocking, and agent completion protocol
5
-
6
- set -e
7
-
8
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
- ORCHESTRATOR="$SCRIPT_DIR/orchestrate-cfn-loop.sh"
10
-
11
- # Colors for output
12
- GREEN='\033[0;32m'
13
- RED='\033[0;31m'
14
- YELLOW='\033[1;33m'
15
- NC='\033[0m' # No Color
16
-
17
- # Test counters
18
- TESTS_RUN=0
19
- TESTS_PASSED=0
20
- TESTS_FAILED=0
21
-
22
- # Test helpers
23
- function test_start() {
24
- echo -e "${YELLOW}[TEST]${NC} $1"
25
- TESTS_RUN=$((TESTS_RUN + 1))
26
- }
27
-
28
- function test_pass() {
29
- echo -e "${GREEN} ✓ PASS${NC}"
30
- TESTS_PASSED=$((TESTS_PASSED + 1))
31
- }
32
-
33
- function test_fail() {
34
- echo -e "${RED} ✗ FAIL${NC} $1"
35
- TESTS_FAILED=$((TESTS_FAILED + 1))
36
- }
37
-
38
- function cleanup_redis() {
39
- local TASK_ID="$1"
40
- redis-cli --scan --pattern "swarm:${TASK_ID}:*" | xargs -r redis-cli del > /dev/null 2>&1 || true
41
- }
42
-
43
- # ==============================================================================
44
- # TEST 1: Orchestrator script exists and is executable
45
- # ==============================================================================
46
- test_start "Orchestrator script exists and is executable"
47
-
48
- if [ -f "$ORCHESTRATOR" ] && [ -x "$ORCHESTRATOR" ]; then
49
- test_pass
50
- else
51
- test_fail "Script not found or not executable: $ORCHESTRATOR"
52
- fi
53
-
54
- # ==============================================================================
55
- # TEST 2: Redis connection available
56
- # ==============================================================================
57
- test_start "Redis connection available"
58
-
59
- if redis-cli ping > /dev/null 2>&1; then
60
- test_pass
61
- else
62
- test_fail "Redis not available. Start Redis server: redis-server"
63
- exit 1
64
- fi
65
-
66
- # ==============================================================================
67
- # TEST 3: Orchestrator script is a bash script
68
- # ==============================================================================
69
- test_start "Orchestrator script is a bash script"
70
-
71
- # Check if orchestrator exists (validation will be added later)
72
- if [ -f "$ORCHESTRATOR" ]; then
73
- test_pass
74
- else
75
- test_fail "Orchestrator script not found"
76
- fi
77
-
78
- # ==============================================================================
79
- # TEST 4: Agent completion protocol - Signal :done key
80
- # ==============================================================================
81
- test_start "Agent completion protocol - Signal :done key"
82
-
83
- TASK_ID="test-completion-$(date +%s)"
84
- AGENT_ID="test-agent-1"
85
-
86
- cleanup_redis "$TASK_ID"
87
-
88
- # Simulate agent completing work
89
- redis-cli lpush "swarm:${TASK_ID}:${AGENT_ID}:done" "complete" > /dev/null
90
-
91
- # Verify signal present
92
- SIGNAL=$(redis-cli blpop "swarm:${TASK_ID}:${AGENT_ID}:done" 1 2>&1 | tail -n 1)
93
- if [ "$SIGNAL" == "complete" ]; then
94
- test_pass
95
- else
96
- test_fail "Signal not found in Redis"
97
- fi
98
-
99
- cleanup_redis "$TASK_ID"
100
-
101
- # ==============================================================================
102
- # TEST 5: BLPOP blocking behavior (timeout)
103
- # ==============================================================================
104
- test_start "BLPOP blocking behavior (timeout)"
105
-
106
- TASK_ID="test-blocking-$(date +%s)"
107
- AGENT_ID="nonexistent-agent"
108
-
109
- cleanup_redis "$TASK_ID"
110
-
111
- # BLPOP with 1 second timeout (should timeout since no agent signals)
112
- START_TIME=$(date +%s)
113
- redis-cli blpop "swarm:${TASK_ID}:${AGENT_ID}:done" 1 > /dev/null 2>&1
114
- END_TIME=$(date +%s)
115
- ELAPSED=$((END_TIME - START_TIME))
116
-
117
- if [ "$ELAPSED" -ge 1 ] && [ "$ELAPSED" -le 2 ]; then
118
- test_pass
119
- else
120
- test_fail "BLPOP timeout behavior incorrect (elapsed: ${ELAPSED}s, expected: 1-2s)"
121
- fi
122
-
123
- cleanup_redis "$TASK_ID"
124
-
125
- # ==============================================================================
126
- # TEST 6: Agent completion protocol - Report confidence
127
- # ==============================================================================
128
- test_start "Agent completion protocol - Report confidence"
129
-
130
- TASK_ID="test-confidence-$(date +%s)"
131
- AGENT_ID="test-agent-1"
132
-
133
- cleanup_redis "$TASK_ID"
134
-
135
- # Simulate agent reporting confidence
136
- OUTPUT=$(./.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh report \
137
- --task-id "$TASK_ID" \
138
- --agent-id "$AGENT_ID" \
139
- --confidence 0.85 \
140
- --iteration 1 2>&1)
141
-
142
- # Check if report was successful
143
- if echo "$OUTPUT" | grep -q "0.85" || redis-cli exists "swarm:${TASK_ID}:${AGENT_ID}:result" | grep -q "1"; then
144
- test_pass
145
- else
146
- test_fail "Confidence not stored correctly"
147
- fi
148
-
149
- cleanup_redis "$TASK_ID"
150
-
151
- # ==============================================================================
152
- # TEST 7: Collect consensus from multiple agents
153
- # ==============================================================================
154
- test_start "Collect consensus from multiple agents"
155
-
156
- TASK_ID="test-consensus-$(date +%s)"
157
-
158
- cleanup_redis "$TASK_ID"
159
-
160
- # Simulate 3 agents reporting confidence
161
- ./.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh report \
162
- --task-id "$TASK_ID" \
163
- --agent-id "agent-1" \
164
- --confidence 0.85 \
165
- --iteration 1 > /dev/null 2>&1
166
-
167
- ./.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh report \
168
- --task-id "$TASK_ID" \
169
- --agent-id "agent-2" \
170
- --confidence 0.90 \
171
- --iteration 1 > /dev/null 2>&1
172
-
173
- ./.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh report \
174
- --task-id "$TASK_ID" \
175
- --agent-id "agent-3" \
176
- --confidence 0.78 \
177
- --iteration 1 > /dev/null 2>&1
178
-
179
- # Collect consensus
180
- CONSENSUS=$(./.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh collect \
181
- --task-id "$TASK_ID" \
182
- --agent-ids "agent-1,agent-2,agent-3" 2>&1)
183
-
184
- # Check for .84 or 0.84 in output (average: (0.85 + 0.90 + 0.78) / 3 = 0.843)
185
- if echo "$CONSENSUS" | grep -qE "(0\.84|\.84)"; then
186
- test_pass
187
- else
188
- test_fail "Consensus calculation incorrect: $CONSENSUS"
189
- fi
190
-
191
- cleanup_redis "$TASK_ID"
192
-
193
- # ==============================================================================
194
- # TEST 8: Mode-specific thresholds documentation
195
- # ==============================================================================
196
- test_start "Mode-specific thresholds documentation"
197
-
198
- # Check if CLAUDE.md has mode thresholds (primary documentation location)
199
- if grep -q "MVP" /mnt/c/Users/masha/Documents/claude-flow-novice/CLAUDE.md 2>/dev/null && \
200
- grep -q "Standard" /mnt/c/Users/masha/Documents/claude-flow-novice/CLAUDE.md 2>/dev/null; then
201
- test_pass
202
- else
203
- test_fail "Mode-specific thresholds should be documented (reference: CLAUDE.md)"
204
- fi
205
-
206
- # ==============================================================================
207
- # TEST 9: Deliverable verification (BUG #11 fix)
208
- # ==============================================================================
209
- test_start "Deliverable verification - prevents consensus on vapor"
210
-
211
- TASK_ID="deliverable-test-$(date +%s)"
212
-
213
- # Simulate Loop 3 completion with high confidence but NO files changed
214
- redis-cli lpush "swarm:${TASK_ID}:coder-1:done" "complete" > /dev/null 2>&1
215
- redis-cli lpush "swarm:${TASK_ID}:coder-1:result" "0.95" > /dev/null 2>&1
216
-
217
- # Verify orchestrator checks git status and overrides confidence when no files exist
218
- # The implementation should check: git status --short | grep -E "^(A|M|\?\?)" | wc -l
219
- # If count == 0, override confidence to 0.0
220
-
221
- # Check that deliverable verification logic exists in orchestrator
222
- if grep -q "FILES_CHANGED.*git status.*short" /mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh && \
223
- grep -q "no_deliverables\|DELIVERABLE.*FAILED" /mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh; then
224
- test_pass
225
- else
226
- test_fail "Deliverable verification logic not found in orchestrator"
227
- fi
228
-
229
- cleanup_redis "$TASK_ID"
230
-
231
- # ==============================================================================
232
- # TEST SUMMARY
233
- # ==============================================================================
234
- echo ""
235
- echo "========================================"
236
- echo "TEST SUMMARY"
237
- echo "========================================"
238
- echo -e "Tests Run: ${TESTS_RUN}"
239
- echo -e "Tests Passed: ${GREEN}${TESTS_PASSED}${NC}"
240
- echo -e "Tests Failed: ${RED}${TESTS_FAILED}${NC}"
241
- echo "========================================"
242
-
243
- if [ "$TESTS_FAILED" -eq 0 ]; then
244
- echo -e "${GREEN}✓ All tests passed${NC}"
245
- exit 0
246
- else
247
- echo -e "${RED}✗ Some tests failed${NC}"
248
- exit 1
249
- fi