claude-flow-novice 2.14.2 → 2.14.4

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 (161) hide show
  1. package/.claude/commands/CFN_LOOP_TASK_MODE.md +4 -47
  2. package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -276
  3. package/claude-assets/commands/CFN_LOOP_TASK_MODE.md +4 -47
  4. package/claude-assets/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -276
  5. package/dist/cli/agent-prompt-builder.js +25 -0
  6. package/dist/cli/agent-prompt-builder.js.map +1 -1
  7. package/dist/cli/config-manager.js +91 -109
  8. package/package.json +1 -1
  9. package/scripts/init-project.js +1 -1
  10. package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +0 -57
  11. package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +0 -267
  12. package/.claude/skills/cfn-redis-coordination/LOGGING.md +0 -260
  13. package/.claude/skills/cfn-redis-coordination/README.md +0 -65
  14. package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +0 -25
  15. package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +0 -164
  16. package/.claude/skills/cfn-redis-coordination/SKILL.md +0 -720
  17. package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +0 -129
  18. package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +0 -320
  19. package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +0 -249
  20. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +0 -148
  21. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +0 -163
  22. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +0 -138
  23. package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +0 -81
  24. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +0 -45
  25. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +0 -68
  26. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +0 -56
  27. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +0 -81
  28. package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +0 -57
  29. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +0 -187
  30. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +0 -160
  31. package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +0 -97
  32. package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +0 -97
  33. package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +0 -59
  34. package/.claude/skills/cfn-redis-coordination/examples/README.md +0 -73
  35. package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +0 -352
  36. package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +0 -127
  37. package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +0 -171
  38. package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +0 -227
  39. package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +0 -239
  40. package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +0 -258
  41. package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +0 -177
  42. package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +0 -137
  43. package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +0 -106
  44. package/.claude/skills/cfn-redis-coordination/heartbeat.sh +0 -126
  45. package/.claude/skills/cfn-redis-coordination/init-swarm.sh +0 -148
  46. package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +0 -220
  47. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +0 -283
  48. package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +0 -147
  49. package/.claude/skills/cfn-redis-coordination/log-event.sh +0 -109
  50. package/.claude/skills/cfn-redis-coordination/metrics-export.sh +0 -674
  51. package/.claude/skills/cfn-redis-coordination/metrics-schema.json +0 -66
  52. package/.claude/skills/cfn-redis-coordination/metrics-storage.md +0 -31
  53. package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +0 -391
  54. package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +0 -101
  55. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +0 -141
  56. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +0 -31
  57. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  58. package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +0 -75
  59. package/.claude/skills/cfn-redis-coordination/priority_wake.py +0 -134
  60. package/.claude/skills/cfn-redis-coordination/query-dlq.sh +0 -162
  61. package/.claude/skills/cfn-redis-coordination/query-logs.sh +0 -103
  62. package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +0 -619
  63. package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +0 -58
  64. package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +0 -371
  65. package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +0 -252
  66. package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +0 -165
  67. package/.claude/skills/cfn-redis-coordination/signal.sh +0 -38
  68. package/.claude/skills/cfn-redis-coordination/store-context.sh +0 -86
  69. package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +0 -123
  70. package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +0 -354
  71. package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +0 -513
  72. package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +0 -15
  73. package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +0 -102
  74. package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +0 -99
  75. package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +0 -170
  76. package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +0 -82
  77. package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +0 -92
  78. package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +0 -4
  79. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
  80. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +0 -124
  81. package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +0 -166
  82. package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +0 -54
  83. package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +0 -49
  84. package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +0 -76
  85. package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +0 -492
  86. package/claude-assets/skills/cfn-redis-coordination/HEARTBEAT.md +0 -57
  87. package/claude-assets/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +0 -267
  88. package/claude-assets/skills/cfn-redis-coordination/LOGGING.md +0 -260
  89. package/claude-assets/skills/cfn-redis-coordination/README.md +0 -65
  90. package/claude-assets/skills/cfn-redis-coordination/SECURITY_REVIEW.md +0 -25
  91. package/claude-assets/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +0 -164
  92. package/claude-assets/skills/cfn-redis-coordination/SKILL.md +0 -720
  93. package/claude-assets/skills/cfn-redis-coordination/demos/test-dlq.sh +0 -129
  94. package/claude-assets/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +0 -320
  95. package/claude-assets/skills/cfn-redis-coordination/demos/test-orchestrator.sh +0 -249
  96. package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +0 -148
  97. package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +0 -163
  98. package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake.sh +0 -138
  99. package/claude-assets/skills/cfn-redis-coordination/demos/test-quick-fix.sh +0 -81
  100. package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +0 -45
  101. package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +0 -68
  102. package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +0 -56
  103. package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +0 -81
  104. package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum.sh +0 -57
  105. package/claude-assets/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +0 -187
  106. package/claude-assets/skills/cfn-redis-coordination/demos/test-shutdown.sh +0 -160
  107. package/claude-assets/skills/cfn-redis-coordination/demos/test-utils-unix.sh +0 -97
  108. package/claude-assets/skills/cfn-redis-coordination/demos/test-utils.sh +0 -97
  109. package/claude-assets/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +0 -59
  110. package/claude-assets/skills/cfn-redis-coordination/examples/README.md +0 -73
  111. package/claude-assets/skills/cfn-redis-coordination/examples/grafana-dashboard.json +0 -352
  112. package/claude-assets/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +0 -127
  113. package/claude-assets/skills/cfn-redis-coordination/examples/mesh-pattern.sh +0 -171
  114. package/claude-assets/skills/cfn-redis-coordination/examples/timeout-handling.sh +0 -227
  115. package/claude-assets/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +0 -239
  116. package/claude-assets/skills/cfn-redis-coordination/execute-product-owner-decision.sh +0 -258
  117. package/claude-assets/skills/cfn-redis-coordination/get-agent-timeout.sh +0 -177
  118. package/claude-assets/skills/cfn-redis-coordination/heartbeat-functions.sh +0 -137
  119. package/claude-assets/skills/cfn-redis-coordination/heartbeat-protocol.md +0 -106
  120. package/claude-assets/skills/cfn-redis-coordination/heartbeat.sh +0 -126
  121. package/claude-assets/skills/cfn-redis-coordination/init-swarm.sh +0 -148
  122. package/claude-assets/skills/cfn-redis-coordination/invoke-redis-pattern.sh +0 -220
  123. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +0 -283
  124. package/claude-assets/skills/cfn-redis-coordination/list-active-swarms.sh +0 -147
  125. package/claude-assets/skills/cfn-redis-coordination/log-event.sh +0 -109
  126. package/claude-assets/skills/cfn-redis-coordination/metrics-export.sh +0 -674
  127. package/claude-assets/skills/cfn-redis-coordination/metrics-schema.json +0 -66
  128. package/claude-assets/skills/cfn-redis-coordination/metrics-storage.md +0 -31
  129. package/claude-assets/skills/cfn-redis-coordination/monitor-cfn-violations.sh +0 -391
  130. package/claude-assets/skills/cfn-redis-coordination/monitor-heartbeats.sh +0 -101
  131. package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +0 -141
  132. package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +0 -31
  133. package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  134. package/claude-assets/skills/cfn-redis-coordination/priority-wake-mechanism.md +0 -75
  135. package/claude-assets/skills/cfn-redis-coordination/priority_wake.py +0 -134
  136. package/claude-assets/skills/cfn-redis-coordination/query-dlq.sh +0 -162
  137. package/claude-assets/skills/cfn-redis-coordination/query-logs.sh +0 -103
  138. package/claude-assets/skills/cfn-redis-coordination/redis-pattern.sh +0 -619
  139. package/claude-assets/skills/cfn-redis-coordination/retrieve-context.sh +0 -58
  140. package/claude-assets/skills/cfn-redis-coordination/select-specialist-agent.sh +0 -371
  141. package/claude-assets/skills/cfn-redis-coordination/semantic-match-tfidf.py +0 -252
  142. package/claude-assets/skills/cfn-redis-coordination/send-heartbeat.sh +0 -165
  143. package/claude-assets/skills/cfn-redis-coordination/signal.sh +0 -38
  144. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +0 -86
  145. package/claude-assets/skills/cfn-redis-coordination/store-epic-context.sh +0 -123
  146. package/claude-assets/skills/cfn-redis-coordination/test-context-injection.sh +0 -354
  147. package/claude-assets/skills/cfn-redis-coordination/test-timeout-enforcement.sh +0 -513
  148. package/claude-assets/skills/cfn-redis-coordination/tests/convert-line-endings.sh +0 -15
  149. package/claude-assets/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +0 -102
  150. package/claude-assets/skills/cfn-redis-coordination/tests/edge-cases-test.sh +0 -99
  151. package/claude-assets/skills/cfn-redis-coordination/tests/integration-test.sh +0 -170
  152. package/claude-assets/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +0 -82
  153. package/claude-assets/skills/cfn-redis-coordination/tests/run-test-suite.sh +0 -92
  154. package/claude-assets/skills/cfn-redis-coordination/tests/run-tests.sh +0 -4
  155. package/claude-assets/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
  156. package/claude-assets/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +0 -124
  157. package/claude-assets/skills/cfn-redis-coordination/tests/test-primitives.sh +0 -166
  158. package/claude-assets/skills/cfn-redis-coordination/tests/test-utils.sh +0 -54
  159. package/claude-assets/skills/cfn-redis-coordination/tests/test_utils.sh +0 -49
  160. package/claude-assets/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +0 -76
  161. 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