claude-flow-novice 2.15.8 → 2.15.9

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 (33) hide show
  1. package/.claude/skills/cfn-loop-orchestration/helpers/consensus-ts.sh +104 -0
  2. package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier-ts.sh +123 -0
  3. package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager-ts.sh +89 -0
  4. package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator-ts.sh +47 -0
  5. package/.claude/skills/cfn-redis-coordination/report-completion.sh +55 -10
  6. package/.claude/skills/cfn-redis-coordination/store-context.sh +31 -1
  7. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +6 -1
  8. package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +6 -1
  9. package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +6 -1
  10. package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +6 -1
  11. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +18 -8
  12. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +18 -8
  13. package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +18 -8
  14. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +17 -7
  15. package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +17 -8
  16. package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +18 -8
  17. package/claude-assets/agents/cfn-dev-team/reviewers/code-reviewer.md +9 -5
  18. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +13 -6
  19. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +13 -6
  20. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +13 -6
  21. package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +15 -5
  22. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +9 -5
  23. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +8 -4
  24. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +16 -13
  25. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +9 -5
  26. package/claude-assets/agents/cfn-dev-team/testers/tester.md +9 -5
  27. package/claude-assets/skills/cfn-loop-orchestration/helpers/consensus-ts.sh +104 -0
  28. package/claude-assets/skills/cfn-loop-orchestration/helpers/deliverable-verifier-ts.sh +123 -0
  29. package/claude-assets/skills/cfn-loop-orchestration/helpers/iteration-manager-ts.sh +89 -0
  30. package/claude-assets/skills/cfn-loop-orchestration/helpers/timeout-calculator-ts.sh +47 -0
  31. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +55 -10
  32. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +31 -1
  33. package/package.json +1 -1
@@ -44,8 +44,7 @@ fi
44
44
 
45
45
  ### 3. Report Test Results (NOT Confidence)
46
46
 
47
- **Old (Deprecated):**
48
- ```bash
47
+ **Old (Deprecated):** Not used
49
48
 
50
49
  **New (Required):**
51
50
  ```bash
@@ -57,7 +56,6 @@ PASS=$(echo "$TEST_OUTPUT" | grep -oP '\d+(?= passing)' || echo "0")
57
56
  FAIL=$(echo "$TEST_OUTPUT" | grep -oP '\d+(?= failing)' || echo "0")
58
57
  TOTAL=$((PASS + FAIL))
59
58
  RATE=$(awk "BEGIN {if ($TOTAL > 0) printf \"%.2f\", $PASS/$TOTAL; else print \"0.00\"}")
60
-
61
59
  ```
62
60
 
63
61
  ## Core Responsibilities
@@ -223,6 +221,8 @@ DO NOT report subjective confidence scores. Instead:
223
221
  Complete your work and provide test-based validation:
224
222
 
225
223
  1. **Execute Tests**: Run all test suites from success criteria
224
+
225
+ ```bash
226
226
  # Parse natively (no external dependencies)
227
227
  PASS=$(echo "$TEST_OUTPUT" | grep -oP '\d+(?= passing)' || echo "0")
228
228
  FAIL=$(echo "$TEST_OUTPUT" | grep -oP '\d+(?= failing)' || echo "0")
@@ -231,9 +231,13 @@ RATE=$(awk "BEGIN {if ($TOTAL > 0) printf \"%.2f\", $PASS/$TOTAL; else print \"0
231
231
 
232
232
  # Return results (Main Chat receives automatically in Task Mode)
233
233
  echo "{\"passed\": $PASS, \"failed\": $FAIL, \"pass_rate\": $RATE}"
234
+ ```
235
+
236
+ 2. **Validate Results**:
234
237
  - Coverage: ≥80%
235
- 4. **Store in Redis**: Use test-results key (not confidence key)
236
- 5. **Signal Completion**: Push to completion queue
238
+
239
+ 3. **Store Results**: Use test-results key (not confidence key)
240
+ 4. **Signal Completion**: Push to completion queue
237
241
 
238
242
  **Example Report:**
239
243
  ```
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env bash
2
+
3
+ ##############################################################################
4
+ # Consensus Checker (TypeScript Wrapper)
5
+ # Collects and validates Loop 2 consensus scores
6
+ #
7
+ # Usage:
8
+ # consensus-ts.sh --scores <score1,score2,...> \
9
+ # --threshold <0.0-1.0> \
10
+ # --mode <mvp|standard|enterprise>
11
+ #
12
+ # Returns:
13
+ # Exit 0: Consensus reached
14
+ # Exit 1: Consensus failed
15
+ ##############################################################################
16
+
17
+ set -euo pipefail
18
+
19
+ # Get script directory
20
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
21
+ HELPERS_DIR="$SCRIPT_DIR/../src/helpers"
22
+
23
+ # Parameters
24
+ SCORES=""
25
+ THRESHOLD=""
26
+ MODE="standard"
27
+
28
+ # Parse arguments
29
+ while [[ $# -gt 0 ]]; do
30
+ case $1 in
31
+ --scores) SCORES="$2"; shift 2 ;;
32
+ --threshold) THRESHOLD="$2"; shift 2 ;;
33
+ --mode) MODE="$2"; shift 2 ;;
34
+ *) echo "Unknown option: $1" >&2; exit 1 ;;
35
+ esac
36
+ done
37
+
38
+ # Validation
39
+ if [ -z "$SCORES" ]; then
40
+ echo "Error: Missing required parameter --scores" >&2
41
+ exit 1
42
+ fi
43
+
44
+ # Convert comma-separated scores to JSON array
45
+ IFS=',' read -ra SCORE_ARRAY <<< "$SCORES"
46
+ SCORES_JSON="["
47
+ for i in "${!SCORE_ARRAY[@]}"; do
48
+ if [ $i -gt 0 ]; then
49
+ SCORES_JSON+=","
50
+ fi
51
+ SCORES_JSON+="${SCORE_ARRAY[$i]}"
52
+ done
53
+ SCORES_JSON+="]"
54
+
55
+ # Build TypeScript invocation
56
+ TS_CODE="
57
+ import { collectConsensus, validateConsensus } from './consensus';
58
+
59
+ const scores = $SCORES_JSON;
60
+ const mode = '$MODE';
61
+ const threshold = ${THRESHOLD:-null};
62
+
63
+ try {
64
+ const consensus = collectConsensus(scores);
65
+ console.log(\`Consensus Statistics:\`);
66
+ console.log(\` Count: \${consensus.count}\`);
67
+ console.log(\` Average: \${consensus.average.toFixed(3)}\`);
68
+ console.log(\` Min: \${consensus.min.toFixed(3)}\`);
69
+ console.log(\` Max: \${consensus.max.toFixed(3)}\`);
70
+ console.log();
71
+
72
+ const validationParams: any = {
73
+ average: consensus.average,
74
+ mode
75
+ };
76
+ if (threshold !== null) {
77
+ validationParams.threshold = threshold;
78
+ }
79
+ const validation = validateConsensus(validationParams);
80
+
81
+ console.log(\`Consensus Validation:\`);
82
+ console.log(\` Mode: \${validation.mode}\`);
83
+ console.log(\` Threshold: \${validation.threshold.toFixed(2)}\`);
84
+ console.log(\` Average: \${validation.average.toFixed(3)}\`);
85
+ console.log(\` Gap: \${validation.gap >= 0 ? '+' : ''}\${validation.gap.toFixed(3)}\`);
86
+ console.log(\` Passed: \${validation.passed}\`);
87
+ console.log();
88
+
89
+ if (validation.passed) {
90
+ console.log('✅ Consensus REACHED - Loop 2 validation successful');
91
+ process.exit(0);
92
+ } else {
93
+ console.log('❌ Consensus FAILED - Iteration required');
94
+ process.exit(1);
95
+ }
96
+ } catch (error: any) {
97
+ console.error('Error:', error.message);
98
+ process.exit(2);
99
+ }
100
+ "
101
+
102
+ # Execute TypeScript code
103
+ cd "$HELPERS_DIR"
104
+ ts-node -e "$TS_CODE"
@@ -0,0 +1,123 @@
1
+ #!/usr/bin/env bash
2
+
3
+ ##############################################################################
4
+ # Deliverable Verifier (TypeScript Wrapper)
5
+ # Verifies expected deliverables exist (prevents "consensus on vapor")
6
+ #
7
+ # Usage:
8
+ # deliverable-verifier-ts.sh --files <file1,file2,...> \
9
+ # [--expected-types <.ext1,.ext2,...>] \
10
+ # [--task-type <description>] \
11
+ # [--require-git-changes]
12
+ #
13
+ # Returns:
14
+ # Exit 0: Deliverables verified
15
+ # Exit 1: Missing deliverables or validation failed
16
+ ##############################################################################
17
+
18
+ set -euo pipefail
19
+
20
+ # Get script directory
21
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
22
+ HELPERS_DIR="$SCRIPT_DIR/../src/helpers"
23
+
24
+ # Parameters
25
+ FILES=""
26
+ EXPECTED_TYPES=""
27
+ TASK_TYPE=""
28
+ REQUIRE_GIT_CHANGES="false"
29
+
30
+ # Parse arguments
31
+ while [[ $# -gt 0 ]]; do
32
+ case $1 in
33
+ --files) FILES="$2"; shift 2 ;;
34
+ --expected-types) EXPECTED_TYPES="$2"; shift 2 ;;
35
+ --task-type) TASK_TYPE="$2"; shift 2 ;;
36
+ --require-git-changes) REQUIRE_GIT_CHANGES="true"; shift 1 ;;
37
+ *) echo "Unknown option: $1" >&2; exit 1 ;;
38
+ esac
39
+ done
40
+
41
+ # Convert comma-separated files to JSON array
42
+ if [ -n "$FILES" ]; then
43
+ IFS=',' read -ra FILE_ARRAY <<< "$FILES"
44
+ FILES_JSON="["
45
+ for i in "${!FILE_ARRAY[@]}"; do
46
+ if [ $i -gt 0 ]; then
47
+ FILES_JSON+=","
48
+ fi
49
+ FILES_JSON+="\"${FILE_ARRAY[$i]}\""
50
+ done
51
+ FILES_JSON+="]"
52
+ else
53
+ FILES_JSON="[]"
54
+ fi
55
+
56
+ # Convert comma-separated types to JSON array
57
+ if [ -n "$EXPECTED_TYPES" ]; then
58
+ IFS=',' read -ra TYPE_ARRAY <<< "$EXPECTED_TYPES"
59
+ TYPES_JSON="["
60
+ for i in "${!TYPE_ARRAY[@]}"; do
61
+ if [ $i -gt 0 ]; then
62
+ TYPES_JSON+=","
63
+ fi
64
+ TYPES_JSON+="\"${TYPE_ARRAY[$i]}\""
65
+ done
66
+ TYPES_JSON+="]"
67
+ else
68
+ TYPES_JSON="undefined"
69
+ fi
70
+
71
+ # Build TypeScript invocation
72
+ TS_CODE="
73
+ import { verifyDeliverables } from './deliverable-verifier';
74
+
75
+ const result = verifyDeliverables({
76
+ files: $FILES_JSON,
77
+ ${EXPECTED_TYPES:+expectedTypes: $TYPES_JSON,}
78
+ ${TASK_TYPE:+taskType: '$TASK_TYPE',}
79
+ requireGitChanges: $REQUIRE_GIT_CHANGES
80
+ });
81
+
82
+ console.log('Deliverable Verification:');
83
+ console.log(\` Files checked: \${result.files.length}\`);
84
+ console.log(\` Found: \${result.found.length}\`);
85
+ console.log(\` Missing: \${result.missing.length}\`);
86
+ if (result.gitChanges !== undefined) {
87
+ console.log(\` Git changes: \${result.gitChanges}\`);
88
+ }
89
+ console.log();
90
+
91
+ if (result.found.length > 0) {
92
+ console.log('Found files:');
93
+ result.found.forEach(file => console.log(\` ✅ \${file}\`));
94
+ console.log();
95
+ }
96
+
97
+ if (result.missing.length > 0) {
98
+ console.log('Missing files:');
99
+ result.missing.forEach(file => console.log(\` ❌ \${file}\`));
100
+ console.log();
101
+ }
102
+
103
+ if (result.typeErrors && result.typeErrors.length > 0) {
104
+ console.log('Type errors:');
105
+ result.typeErrors.forEach(file => console.log(\` ⚠️ \${file}\`));
106
+ console.log();
107
+ }
108
+
109
+ if (result.verified) {
110
+ console.log('✅ Deliverable verification PASSED');
111
+ process.exit(0);
112
+ } else {
113
+ console.log('❌ Deliverable verification FAILED');
114
+ if (result.reason) {
115
+ console.log(\` Reason: \${result.reason}\`);
116
+ }
117
+ process.exit(1);
118
+ }
119
+ "
120
+
121
+ # Execute TypeScript code
122
+ cd "$HELPERS_DIR"
123
+ ts-node -e "$TS_CODE"
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env bash
2
+
3
+ ##############################################################################
4
+ # Iteration Manager (TypeScript Wrapper)
5
+ # Prepares next iteration and generates wake signals
6
+ #
7
+ # Usage:
8
+ # iteration-manager-ts.sh --current-iteration <n> \
9
+ # --agents <agent1,agent2,...> \
10
+ # [--feedback <json>]
11
+ #
12
+ # Returns:
13
+ # Next iteration metadata (JSON)
14
+ ##############################################################################
15
+
16
+ set -euo pipefail
17
+
18
+ # Get script directory
19
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
20
+ HELPERS_DIR="$SCRIPT_DIR/../src/helpers"
21
+
22
+ # Parameters
23
+ CURRENT_ITERATION=""
24
+ AGENTS=""
25
+ FEEDBACK="{}"
26
+
27
+ # Parse arguments
28
+ while [[ $# -gt 0 ]]; do
29
+ case $1 in
30
+ --current-iteration) CURRENT_ITERATION="$2"; shift 2 ;;
31
+ --agents) AGENTS="$2"; shift 2 ;;
32
+ --feedback) FEEDBACK="$2"; shift 2 ;;
33
+ *) echo "Unknown option: $1" >&2; exit 1 ;;
34
+ esac
35
+ done
36
+
37
+ # Validation
38
+ if [ -z "$CURRENT_ITERATION" ] || [ -z "$AGENTS" ]; then
39
+ echo "Error: Missing required parameters" >&2
40
+ exit 1
41
+ fi
42
+
43
+ # Convert comma-separated agents to JSON array
44
+ IFS=',' read -ra AGENT_ARRAY <<< "$AGENTS"
45
+ AGENTS_JSON="["
46
+ for i in "${!AGENT_ARRAY[@]}"; do
47
+ if [ $i -gt 0 ]; then
48
+ AGENTS_JSON+=","
49
+ fi
50
+ AGENTS_JSON+="\"${AGENT_ARRAY[$i]}\""
51
+ done
52
+ AGENTS_JSON+="]"
53
+
54
+ # Build TypeScript invocation
55
+ TS_CODE="
56
+ import { prepareIteration, wakeAgents } from './iteration-manager';
57
+
58
+ const iteration = prepareIteration({
59
+ currentIteration: $CURRENT_ITERATION,
60
+ feedback: $FEEDBACK
61
+ });
62
+
63
+ console.log('Iteration Preparation:');
64
+ console.log(\` Next Iteration: \${iteration.nextIteration}\`);
65
+ console.log(\` Timestamp: \${iteration.timestamp}\`);
66
+ console.log();
67
+
68
+ const agentIds = $AGENTS_JSON;
69
+ const wake = wakeAgents(agentIds);
70
+
71
+ console.log('Wake Signals Generated:');
72
+ wake.signals.forEach((signal, idx) => {
73
+ console.log(\` [\${idx + 1}] \${signal}\`);
74
+ });
75
+ console.log();
76
+ console.log(\`✅ Prepared iteration \${iteration.nextIteration} for \${agentIds.length} agents\`);
77
+
78
+ // Output JSON for programmatic consumption
79
+ console.log();
80
+ console.log('JSON_OUTPUT:', JSON.stringify({
81
+ nextIteration: iteration.nextIteration,
82
+ timestamp: iteration.timestamp,
83
+ signals: wake.signals
84
+ }));
85
+ "
86
+
87
+ # Execute TypeScript code
88
+ cd "$HELPERS_DIR"
89
+ ts-node -e "$TS_CODE"
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env bash
2
+
3
+ ##############################################################################
4
+ # Timeout Calculator (TypeScript Wrapper)
5
+ # Calculates mode and phase-specific timeouts for agent execution
6
+ #
7
+ # Usage:
8
+ # timeout-calculator-ts.sh --mode <mvp|standard|enterprise> [--phase <phase-id>]
9
+ #
10
+ # Returns:
11
+ # Timeout value in seconds (stdout)
12
+ ##############################################################################
13
+
14
+ set -euo pipefail
15
+
16
+ # Get script directory
17
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
18
+ HELPERS_DIR="$SCRIPT_DIR/../src/helpers"
19
+
20
+ # Parameters
21
+ MODE="standard"
22
+ PHASE=""
23
+
24
+ # Parse arguments
25
+ while [[ $# -gt 0 ]]; do
26
+ case $1 in
27
+ --mode) MODE="$2"; shift 2 ;;
28
+ --phase) PHASE="$2"; shift 2 ;;
29
+ *) echo "Unknown option: $1" >&2; exit 1 ;;
30
+ esac
31
+ done
32
+
33
+ # Build TypeScript invocation
34
+ TS_CODE="
35
+ import { calculateTimeout } from './timeout-calculator';
36
+
37
+ const timeout = calculateTimeout({
38
+ mode: '$MODE',
39
+ ${PHASE:+phase: '$PHASE'}
40
+ });
41
+
42
+ console.log(timeout);
43
+ "
44
+
45
+ # Execute TypeScript code
46
+ cd "$HELPERS_DIR"
47
+ ts-node -e "$TS_CODE"
@@ -2,7 +2,10 @@
2
2
  # Report agent completion and confidence to Redis
3
3
  # Replaces deprecated invoke-waiting-mode.sh for CFN Loop coordination
4
4
  #
5
- # Usage: report-completion.sh --task-id <id> --agent-id <id> --confidence <0.0-1.0> [--result <json>]
5
+ # Usage:
6
+ # report-completion.sh --task-id <id> --agent-id <id> --confidence <0.0-1.0>
7
+ # [--iteration <n>] [--namespace <ns>] [--result <json>]
8
+ # [--test-pass-rate <pct>] [--tests-run <n>] [--tests-passed <n>]
6
9
 
7
10
  set -euo pipefail
8
11
 
@@ -16,6 +19,10 @@ AGENT_ID=""
16
19
  CONFIDENCE=""
17
20
  RESULT=""
18
21
  ITERATION="1"
22
+ NAMESPACE="swarm"
23
+ TEST_PASS_RATE=""
24
+ TESTS_RUN=""
25
+ TESTS_PASSED=""
19
26
 
20
27
  while [[ $# -gt 0 ]]; do
21
28
  case $1 in
@@ -39,6 +46,22 @@ while [[ $# -gt 0 ]]; do
39
46
  ITERATION="$2"
40
47
  shift 2
41
48
  ;;
49
+ --namespace)
50
+ NAMESPACE="$2"
51
+ shift 2
52
+ ;;
53
+ --test-pass-rate)
54
+ TEST_PASS_RATE="$2"
55
+ shift 2
56
+ ;;
57
+ --tests-run)
58
+ TESTS_RUN="$2"
59
+ shift 2
60
+ ;;
61
+ --tests-passed)
62
+ TESTS_PASSED="$2"
63
+ shift 2
64
+ ;;
42
65
  *)
43
66
  echo "Unknown option: $1" >&2
44
67
  exit 1
@@ -51,7 +74,9 @@ done
51
74
  # Wrapper provides graceful Task mode fallback when Redis unavailable
52
75
  if [ -z "$TASK_ID" ] || [ -z "$AGENT_ID" ] || [ -z "$CONFIDENCE" ]; then
53
76
  echo "Error: Missing required parameters" >&2
54
- echo "Usage: $0 --task-id <id> --agent-id <id> --confidence <0.0-1.0> [--result <json>] [--iteration <n>]" >&2
77
+ echo "Usage: $0 --task-id <id> --agent-id <id> --confidence <0.0-1.0>" >&2
78
+ echo " [--iteration <n>] [--namespace <ns>] [--result <json>]" >&2
79
+ echo " [--test-pass-rate <pct>] [--tests-run <n>] [--tests-passed <n>]" >&2
55
80
  exit 1
56
81
  fi
57
82
 
@@ -66,24 +91,44 @@ fi
66
91
  # Measured improvement: ~62% coordination overhead reduction in standard mode
67
92
  {
68
93
  echo "MULTI"
69
- echo "LPUSH swarm:${TASK_ID}:${AGENT_ID}:done complete"
70
- echo "SET swarm:${TASK_ID}:${AGENT_ID}:confidence $CONFIDENCE EX 3600"
94
+ echo "LPUSH ${NAMESPACE}:${TASK_ID}:${AGENT_ID}:done complete"
95
+ echo "SET ${NAMESPACE}:${TASK_ID}:${AGENT_ID}:confidence $CONFIDENCE EX 3600"
96
+
97
+ # Build result hash with test metrics if provided
98
+ RESULT_HASH_ARGS="confidence $CONFIDENCE iteration $ITERATION"
71
99
 
72
100
  if [ -n "$RESULT" ]; then
73
- echo "HSET swarm:${TASK_ID}:${AGENT_ID}:result confidence $CONFIDENCE iteration $ITERATION result $RESULT timestamp $(date -u +%Y-%m-%dT%H:%M:%SZ)"
74
- else
75
- echo "HSET swarm:${TASK_ID}:${AGENT_ID}:result confidence $CONFIDENCE iteration $ITERATION timestamp $(date -u +%Y-%m-%dT%H:%M:%SZ)"
101
+ RESULT_HASH_ARGS="$RESULT_HASH_ARGS result $RESULT"
76
102
  fi
77
103
 
104
+ if [ -n "$TEST_PASS_RATE" ]; then
105
+ RESULT_HASH_ARGS="$RESULT_HASH_ARGS test_pass_rate $TEST_PASS_RATE"
106
+ fi
107
+
108
+ if [ -n "$TESTS_RUN" ]; then
109
+ RESULT_HASH_ARGS="$RESULT_HASH_ARGS tests_run $TESTS_RUN"
110
+ fi
111
+
112
+ if [ -n "$TESTS_PASSED" ]; then
113
+ RESULT_HASH_ARGS="$RESULT_HASH_ARGS tests_passed $TESTS_PASSED"
114
+ fi
115
+
116
+ RESULT_HASH_ARGS="$RESULT_HASH_ARGS timestamp $(date -u +%Y-%m-%dT%H:%M:%SZ)"
117
+
118
+ echo "HSET ${NAMESPACE}:${TASK_ID}:${AGENT_ID}:result $RESULT_HASH_ARGS"
119
+
78
120
  echo "EXEC"
79
121
  } | redis-cli > /dev/null
80
122
 
81
123
  # Step 4: Add to agent completion list (for orchestrator tracking)
82
- redis-cli LPUSH "swarm:${TASK_ID}:completed_agents" "$AGENT_ID" > /dev/null
124
+ redis-cli LPUSH "${NAMESPACE}:${TASK_ID}:completed_agents" "$AGENT_ID" > /dev/null
83
125
 
84
126
  # Step 5: Set TTL on keys (auto-cleanup)
85
- redis-cli EXPIRE "swarm:${TASK_ID}:${AGENT_ID}:result" 3600 > /dev/null
86
- redis-cli EXPIRE "swarm:${TASK_ID}:${AGENT_ID}:done" 3600 > /dev/null
127
+ redis-cli EXPIRE "${NAMESPACE}:${TASK_ID}:${AGENT_ID}:result" 3600 > /dev/null
128
+ redis-cli EXPIRE "${NAMESPACE}:${TASK_ID}:${AGENT_ID}:done" 3600 > /dev/null
87
129
 
88
130
  echo "✅ Reported completion for agent: $AGENT_ID (confidence: $CONFIDENCE)"
131
+ if [ -n "$TEST_PASS_RATE" ]; then
132
+ echo " Test pass rate: $TEST_PASS_RATE%"
133
+ fi
89
134
  exit 0
@@ -4,6 +4,7 @@
4
4
  #
5
5
  # Usage:
6
6
  # store-context.sh --task-id <id> --key <key> --value <value> [--namespace <ns>]
7
+ # store-context.sh --task-id <id> --epic <epic> --mode <mode> [--namespace <ns>]
7
8
  # store-context.sh <task_id> <context_json> (legacy mode)
8
9
 
9
10
  set -euo pipefail
@@ -18,6 +19,8 @@ KEY=""
18
19
  VALUE=""
19
20
  NAMESPACE="swarm"
20
21
  CONTEXT=""
22
+ EPIC=""
23
+ MODE=""
21
24
 
22
25
  # Parse arguments
23
26
  while [[ $# -gt 0 ]]; do
@@ -38,6 +41,14 @@ while [[ $# -gt 0 ]]; do
38
41
  NAMESPACE="$2"
39
42
  shift 2
40
43
  ;;
44
+ --epic)
45
+ EPIC="$2"
46
+ shift 2
47
+ ;;
48
+ --mode)
49
+ MODE="$2"
50
+ shift 2
51
+ ;;
41
52
  *)
42
53
  # Legacy mode: positional arguments
43
54
  if [ -z "$TASK_ID" ]; then
@@ -54,10 +65,29 @@ done
54
65
  if [ -z "$TASK_ID" ]; then
55
66
  echo "Error: --task-id or TASK_ID required" >&2
56
67
  echo "Usage: $0 --task-id <id> --key <key> --value <value> [--namespace <ns>]" >&2
68
+ echo " or: $0 --task-id <id> --epic <epic> --mode <mode> [--namespace <ns>]" >&2
57
69
  echo " or: $0 <task_id> <context_json> (legacy)" >&2
58
70
  exit 1
59
71
  fi
60
72
 
73
+ # Handle epic+mode mode (new)
74
+ if [ -n "$EPIC" ] && [ -n "$MODE" ]; then
75
+ # Store epic and mode with task context
76
+ REDIS_KEY="${NAMESPACE}:${TASK_ID}:context"
77
+
78
+ redis-cli HSET "$REDIS_KEY" \
79
+ "epic" "$EPIC" \
80
+ "mode" "$MODE" \
81
+ "updated_at" "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
82
+ > /dev/null
83
+
84
+ # Set TTL (24 hours)
85
+ redis-cli EXPIRE "$REDIS_KEY" 86400 > /dev/null
86
+
87
+ echo "✅ Context stored: epic=$EPIC, mode=$MODE for task: $TASK_ID"
88
+ exit 0
89
+ fi
90
+
61
91
  # Handle structured mode (new)
62
92
  if [ -n "$KEY" ] && [ -n "$VALUE" ]; then
63
93
  # Store structured context with specific key
@@ -89,5 +119,5 @@ if [ -n "$CONTEXT" ]; then
89
119
  exit 0
90
120
  fi
91
121
 
92
- echo "Error: Either --key/--value or <context_json> required" >&2
122
+ echo "Error: Either --epic/--mode, --key/--value, or <context_json> required" >&2
93
123
  exit 1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-flow-novice",
3
- "version": "2.15.8",
3
+ "version": "2.15.9",
4
4
  "description": "AI agent orchestration framework with namespace-isolated skills, agents, and CFN Loop validation. Safe installation with ~0.01% collision risk.",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",