claude-flow-novice 2.15.2 → 2.15.3

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 (98) hide show
  1. package/.claude/hooks/cfn-BACKUP_USAGE.md +243 -243
  2. package/.claude/hooks/cfn-invoke-security-validation.sh +69 -69
  3. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +78 -78
  4. package/.claude/hooks/cfn-post-edit.config.json +44 -44
  5. package/.claude/skills/agent-lifecycle/SKILL.md +60 -0
  6. package/.claude/skills/agent-lifecycle/execute-lifecycle-hook.sh +573 -0
  7. package/.claude/skills/agent-lifecycle/simple-audit.sh +31 -0
  8. package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
  9. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
  10. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
  11. package/.claude/skills/cfn-redis-coordination/get-context.sh +112 -112
  12. package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
  13. package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
  14. package/.claude/skills/cfn-transparency-middleware/test-integration.sh +161 -161
  15. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
  16. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +92 -92
  17. package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
  18. package/claude-assets/hooks/cfn-BACKUP_USAGE.md +243 -243
  19. package/claude-assets/hooks/cfn-invoke-security-validation.sh +69 -69
  20. package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +78 -78
  21. package/claude-assets/hooks/cfn-post-edit.config.json +44 -44
  22. package/claude-assets/hooks/cfn-post-execution/memory-cleanup.sh +19 -19
  23. package/claude-assets/hooks/cfn-pre-execution/memory-check.sh +19 -19
  24. package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +572 -572
  25. package/claude-assets/skills/agent-lifecycle/simple-audit.sh +30 -30
  26. package/claude-assets/skills/cfn-automatic-memory-persistence/persist-agent-output.sh +48 -48
  27. package/claude-assets/skills/cfn-automatic-memory-persistence/query-agent-history.sh +34 -34
  28. package/claude-assets/skills/cfn-deliverable-validation/confidence-calculator.sh +261 -261
  29. package/claude-assets/skills/cfn-expert-update/update-expert.sh +345 -345
  30. package/claude-assets/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
  31. package/claude-assets/skills/cfn-intervention-detector/detect-intervention.sh +110 -110
  32. package/claude-assets/skills/cfn-intervention-orchestrator/execute-intervention.sh +58 -58
  33. package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
  34. package/claude-assets/skills/cfn-loop2-output-processing/process-validator-output.sh +275 -275
  35. package/claude-assets/skills/cfn-memory-management/check-memory.sh +159 -159
  36. package/claude-assets/skills/cfn-memory-management/cleanup-memory.sh +196 -196
  37. package/claude-assets/skills/cfn-node-heap-sizer/task-mode-heap-limiter.sh +325 -325
  38. package/claude-assets/skills/cfn-playbook-auto-update/auto-update-playbook.sh +85 -85
  39. package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
  40. package/claude-assets/skills/cfn-redis-coordination/get-context.sh +112 -112
  41. package/claude-assets/skills/cfn-scope-simplifier/simplify-scope.sh +67 -67
  42. package/claude-assets/skills/cfn-specialist-injection/recommend-specialist.sh +56 -56
  43. package/claude-assets/skills/cfn-standardized-error-handling/capture-agent-error.sh +86 -86
  44. package/claude-assets/skills/cfn-standardized-error-handling/test-error-handling.sh +165 -165
  45. package/claude-assets/skills/cfn-task-config-init/initialize-config.sh +264 -264
  46. package/claude-assets/skills/cfn-task-decomposition/task-decomposer.sh +278 -278
  47. package/claude-assets/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
  48. package/claude-assets/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
  49. package/claude-assets/skills/cfn-transparency-middleware/test-integration.sh +161 -161
  50. package/claude-assets/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
  51. package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +92 -92
  52. package/claude-assets/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
  53. package/claude-assets/skills/docker-build/SKILL.md +96 -203
  54. package/claude-assets/skills/docker-build/build.sh +73 -73
  55. package/claude-assets/skills/integration/agent-handoff.sh +494 -0
  56. package/claude-assets/skills/integration/file-operations.sh +414 -0
  57. package/claude-assets/skills/workflow-codification/APPROVAL_WORKFLOW.md +806 -0
  58. package/claude-assets/skills/workflow-codification/COST_TRACKING.md +637 -0
  59. package/claude-assets/skills/workflow-codification/EDGE_CASE_TRACKING.md +404 -0
  60. package/claude-assets/skills/workflow-codification/README_PHASE4.md +457 -0
  61. package/claude-assets/skills/workflow-codification/SKILL.md +110 -0
  62. package/claude-assets/skills/workflow-codification/analyze-patterns.sh +899 -0
  63. package/claude-assets/skills/workflow-codification/approval-workflow.sh +514 -0
  64. package/claude-assets/skills/workflow-codification/generate-skill-update.sh +525 -0
  65. package/claude-assets/skills/workflow-codification/review-skill.sh +643 -0
  66. package/claude-assets/skills/workflow-codification/templates/email-notification.txt +114 -0
  67. package/claude-assets/skills/workflow-codification/templates/slack-notification.md +85 -0
  68. package/claude-assets/skills/workflow-codification/test-integration.sh +281 -0
  69. package/claude-assets/skills/workflow-codification/track-cost-savings.sh +445 -0
  70. package/claude-assets/skills/workflow-codification/track-edge-case.sh +323 -0
  71. package/dist/cli/config-manager.js +91 -109
  72. package/dist/cli/config-manager.js.map +1 -1
  73. package/dist/integration/DatabaseHandoff.js +507 -0
  74. package/dist/integration/DatabaseHandoff.js.map +1 -0
  75. package/dist/integration/StandardAdapter.js +291 -0
  76. package/dist/integration/StandardAdapter.js.map +1 -0
  77. package/dist/lib/agent-output-parser.js +518 -0
  78. package/dist/lib/agent-output-parser.js.map +1 -0
  79. package/dist/lib/agent-output-validator.js +950 -0
  80. package/dist/lib/agent-output-validator.js.map +1 -0
  81. package/dist/lib/artifact-registry.js +443 -0
  82. package/dist/lib/artifact-registry.js.map +1 -0
  83. package/dist/lib/config-validator.js +687 -0
  84. package/dist/lib/config-validator.js.map +1 -0
  85. package/dist/types/agent-output.js +44 -0
  86. package/dist/types/agent-output.js.map +1 -0
  87. package/dist/types/config.js +28 -0
  88. package/dist/types/config.js.map +1 -0
  89. package/package.json +2 -1
  90. package/scripts/artifact-cleanup.sh +392 -0
  91. package/scripts/deploy-production.sh +355 -355
  92. package/scripts/docker-playwright-fix.sh +311 -311
  93. package/scripts/docker-rebuild-all-agents.sh +127 -127
  94. package/scripts/memory-leak-prevention.sh +305 -305
  95. package/scripts/migrate-artifacts.sh +563 -0
  96. package/scripts/migrate-yaml-to-json.sh +465 -0
  97. package/scripts/run-marketing-tests.sh +42 -42
  98. package/scripts/update_paths.sh +46 -46
@@ -1,262 +1,262 @@
1
- #!/bin/bash
2
- # Deliverable-Based Confidence Calculator
3
- # Calculates confidence scores based on actual deliverable completion
4
-
5
- set -euo pipefail
6
-
7
- # Arguments
8
- TASK_ID="$1"
9
- AGENT_ID="$2"
10
- EXPECTED_DELIVERABLES="$3" # JSON array of expected files/deliverables
11
- WORKING_DIR="${4:-$(pwd)}"
12
-
13
- # Colors for output
14
- RED='\033[0;31m'
15
- GREEN='\033[0;32m'
16
- YELLOW='\033[1;33m'
17
- BLUE='\033[0;34m'
18
- NC='\033[0m' # No Color
19
-
20
- echo -e "${BLUE}📊 Deliverable-Based Confidence Calculator${NC}"
21
- echo "Task ID: $TASK_ID"
22
- echo "Agent ID: $AGENT_ID"
23
- echo "Working Directory: $WORKING_DIR"
24
- echo ""
25
-
26
- # Function to check if deliverable exists and is valid
27
- validate_deliverable() {
28
- local deliverable="$1"
29
- local deliverable_path="$WORKING_DIR/$deliverable"
30
-
31
- # Handle different deliverable types
32
- case "$deliverable" in
33
- *.md|*.txt|*.json|*.yaml|*.yml)
34
- # Text files - check existence and content
35
- if [ -f "$deliverable_path" ]; then
36
- local size=$(stat -c%s "$deliverable_path" 2>/dev/null || echo "0")
37
- if [ "$size" -gt 0 ]; then
38
- echo "VALID:$size"
39
- return 0
40
- fi
41
- fi
42
- ;;
43
- *.sh|*.js|*.ts|*.tsx|*.py)
44
- # Code files - check existence and basic syntax
45
- if [ -f "$deliverable_path" ]; then
46
- local size=$(stat -c%s "$deliverable_path" 2>/dev/null || echo "0")
47
- if [ "$size" -gt 100 ]; then
48
- echo "VALID:$size"
49
- return 0
50
- fi
51
- fi
52
- ;;
53
- */)
54
- # Directories - check existence and contents
55
- if [ -d "$deliverable_path" ]; then
56
- local file_count=$(find "$deliverable_path" -type f | wc -l)
57
- if [ "$file_count" -gt 0 ]; then
58
- echo "VALID:$file_count"
59
- return 0
60
- fi
61
- fi
62
- ;;
63
- *.json)
64
- # JSON files - check validity
65
- if [ -f "$deliverable_path" ]; then
66
- if jq empty "$deliverable_path" 2>/dev/null; then
67
- local size=$(stat -c%s "$deliverable_path" 2>/dev/null || echo "0")
68
- echo "VALID:$size"
69
- return 0
70
- fi
71
- fi
72
- ;;
73
- *)
74
- # Generic file check
75
- if [ -f "$deliverable_path" ]; then
76
- local size=$(stat -c%s "$deliverable_path" 2>/dev/null || echo "0")
77
- if [ "$size" -gt 0 ]; then
78
- echo "VALID:$size"
79
- return 0
80
- fi
81
- fi
82
- ;;
83
- esac
84
-
85
- echo "INVALID"
86
- return 1
87
- }
88
-
89
- # Function to calculate quality score based on deliverable characteristics
90
- calculate_quality_score() {
91
- local deliverable="$1"
92
- local deliverable_path="$WORKING_DIR/$deliverable"
93
-
94
- local quality_score=0.5 # Base score for existing
95
-
96
- # Size scoring (larger files with meaningful content)
97
- if [ -f "$deliverable_path" ]; then
98
- local size=$(stat -c%s "$deliverable_path" 2>/dev/null || echo "0")
99
-
100
- if [ "$size" -gt 5000 ]; then
101
- quality_score=0.9 # Substantial content
102
- elif [ "$size" -gt 1000 ]; then
103
- quality_score=0.8 # Good content
104
- elif [ "$size" -gt 100 ]; then
105
- quality_score=0.7 # Adequate content
106
- else
107
- quality_score=0.6 # Minimal content
108
- fi
109
- fi
110
-
111
- # Content-specific scoring
112
- case "$deliverable" in
113
- *.md)
114
- # Markdown files - check for structure
115
- if grep -q "^#" "$deliverable_path" 2>/dev/null; then
116
- quality_score=$((quality_score + 10)) # Has headers
117
- fi
118
- if grep -q "^```" "$deliverable_path" 2>/dev/null; then
119
- quality_score=$((quality_score + 5)) # Has code blocks
120
- fi
121
- ;;
122
- *.ts|*.tsx|*.js|*.jsx)
123
- # Code files - check for functions/exports
124
- if grep -q "function\|export\|class\|const.*=" "$deliverable_path" 2>/dev/null; then
125
- quality_score=$((quality_score + 10)) # Has functions/exports
126
- fi
127
- ;;
128
- *.json)
129
- # JSON files - check for structure
130
- if jq -e 'type == "object" and keys > 0' "$deliverable_path" >/dev/null 2>&1; then
131
- quality_score=$((quality_score + 10)) # Has meaningful structure
132
- fi
133
- ;;
134
- esac
135
-
136
- # Cap at 1.0
137
- if [ "$quality_score" -gt 100 ]; then
138
- quality_score=100
139
- fi
140
-
141
- echo "$quality_score"
142
- }
143
-
144
- # Main confidence calculation
145
- main() {
146
- echo -e "${YELLOW}Analyzing expected deliverables...${NC}"
147
-
148
- # Parse expected deliverables from JSON
149
- if ! echo "$EXPECTED_DELIVERABLES" | jq empty 2>/dev/null; then
150
- echo -e "${RED}❌ Invalid JSON in expected deliverables${NC}"
151
- echo "0.0"
152
- return 1
153
- fi
154
-
155
- local total_deliverables=$(echo "$EXPECTED_DELIVERABLES" | jq 'length')
156
- local valid_deliverables=0
157
- local total_quality_score=0
158
-
159
- echo "Expected deliverables: $total_deliverables"
160
- echo ""
161
-
162
- # Check each deliverable
163
- for ((i=0; i<total_deliverables; i++)); do
164
- local deliverable=$(echo "$EXPECTED_DELIVERABLES" | jq -r ".[$i]")
165
-
166
- echo -n " Checking: $deliverable ... "
167
-
168
- local validation_result=$(validate_deliverable "$deliverable")
169
-
170
- if [[ "$validation_result" == VALID* ]]; then
171
- local quality_score=$(calculate_quality_score "$deliverable")
172
- total_quality_score=$((total_quality_score + quality_score))
173
- valid_deliverables=$((valid_deliverables + 1))
174
-
175
- local size=$(echo "$validation_result" | cut -d: -f2)
176
- echo -e "${GREEN}✓ VALID${NC} (size: $size, quality: $quality_score)"
177
- else
178
- echo -e "${RED}✗ MISSING/INVALID${NC}"
179
- fi
180
- done
181
-
182
- echo ""
183
- echo -e "${YELLOW}Summary:${NC}"
184
- echo " Valid deliverables: $valid_deliverables/$total_deliverables"
185
-
186
- # Calculate completion score (0-1)
187
- local completion_score=0
188
- if [ "$total_deliverables" -gt 0 ]; then
189
- completion_score=$(echo "scale=3; $valid_deliverables / $total_deliverables" | bc -l)
190
- fi
191
-
192
- # Calculate average quality score (0-1)
193
- local avg_quality_score=0.5 # Default if no deliverables
194
- if [ "$valid_deliverables" -gt 0 ]; then
195
- avg_quality_score=$(echo "scale=3; $total_quality_score / ($valid_deliverables * 100)" | bc -l)
196
- fi
197
-
198
- # Calculate final confidence score
199
- # Weight: 60% completion, 40% quality
200
- local final_confidence=$(echo "scale=3; ($completion_score * 0.6) + ($avg_quality_score * 0.4)" | bc -l)
201
-
202
- # Round to 2 decimal places
203
- final_confidence=$(echo "$final_confidence" | sed 's/^\./0./' | sed 's/\.\([0-9]\{2\}\)[0-9]*$/.\1/')
204
-
205
- echo " Completion score: $completion_score"
206
- echo " Quality score: $avg_quality_score"
207
- echo " Final confidence: $final_confidence"
208
-
209
- # Validation rules
210
- if [ "$valid_deliverables" -eq 0 ]; then
211
- echo -e "${RED}🚨 CRITICAL: No deliverables created - confidence should be 0.0${NC}"
212
- echo "0.0"
213
- return 1
214
- elif (( $(echo "$final_confidence > 0.3" | bc -l) )); then
215
- if [ "$valid_deliverables" -lt "$((total_deliverables / 2))" ]; then
216
- echo -e "${YELLOW}⚠️ WARNING: Low deliverable completion (<50%) - confidence should be <= 0.3${NC}"
217
- fi
218
- fi
219
-
220
- echo -e "${GREEN}✓ Calculated confidence: $final_confidence${NC}"
221
- echo "$final_confidence"
222
- }
223
-
224
- # Store results in Redis if available
225
- store_confidence_result() {
226
- local confidence="$1"
227
-
228
- if command -v redis-cli >/dev/null 2>&1; then
229
- # Store detailed breakdown
230
- local breakdown=$(cat << EOF
231
- {
232
- "task_id": "$TASK_ID",
233
- "agent_id": "$AGENT_ID",
234
- "calculated_confidence": $confidence,
235
- "calculation_method": "deliverable-based",
236
- "timestamp": "$(date -Iseconds)",
237
- "working_directory": "$WORKING_DIR",
238
- "expected_deliverables": $EXPECTED_DELIVERABLES
239
- }
240
- EOF
241
- )
242
-
243
- redis-cli set "${TASK_ID}:${AGENT_ID}:confidence-breakdown" "$breakdown" >/dev/null 2>&1 || true
244
- redis-cli set "${TASK_ID}:${AGENT_ID}:confidence-score" "$confidence" >/dev/null 2>&1 || true
245
-
246
- echo -e "📦 ${BLUE}Stored confidence breakdown in Redis:${NC} ${TASK_ID}:${AGENT_ID}:confidence-breakdown"
247
- fi
248
- }
249
-
250
- # Execute main function
251
- if [ "$#" -lt 3 ]; then
252
- echo "Usage: $0 <task_id> <agent_id> <expected_deliverables_json> [working_directory]"
253
- echo "Example: $0 task-123 agent-1 '[\"file1.txt\", \"script.sh\", \"docs/\"]' /path/to/project"
254
- exit 1
255
- fi
256
-
257
- final_confidence=$(main "$@")
258
-
259
- # Store results
260
- store_confidence_result "$final_confidence"
261
-
1
+ #!/bin/bash
2
+ # Deliverable-Based Confidence Calculator
3
+ # Calculates confidence scores based on actual deliverable completion
4
+
5
+ set -euo pipefail
6
+
7
+ # Arguments
8
+ TASK_ID="$1"
9
+ AGENT_ID="$2"
10
+ EXPECTED_DELIVERABLES="$3" # JSON array of expected files/deliverables
11
+ WORKING_DIR="${4:-$(pwd)}"
12
+
13
+ # Colors for output
14
+ RED='\033[0;31m'
15
+ GREEN='\033[0;32m'
16
+ YELLOW='\033[1;33m'
17
+ BLUE='\033[0;34m'
18
+ NC='\033[0m' # No Color
19
+
20
+ echo -e "${BLUE}📊 Deliverable-Based Confidence Calculator${NC}"
21
+ echo "Task ID: $TASK_ID"
22
+ echo "Agent ID: $AGENT_ID"
23
+ echo "Working Directory: $WORKING_DIR"
24
+ echo ""
25
+
26
+ # Function to check if deliverable exists and is valid
27
+ validate_deliverable() {
28
+ local deliverable="$1"
29
+ local deliverable_path="$WORKING_DIR/$deliverable"
30
+
31
+ # Handle different deliverable types
32
+ case "$deliverable" in
33
+ *.md|*.txt|*.json|*.yaml|*.yml)
34
+ # Text files - check existence and content
35
+ if [ -f "$deliverable_path" ]; then
36
+ local size=$(stat -c%s "$deliverable_path" 2>/dev/null || echo "0")
37
+ if [ "$size" -gt 0 ]; then
38
+ echo "VALID:$size"
39
+ return 0
40
+ fi
41
+ fi
42
+ ;;
43
+ *.sh|*.js|*.ts|*.tsx|*.py)
44
+ # Code files - check existence and basic syntax
45
+ if [ -f "$deliverable_path" ]; then
46
+ local size=$(stat -c%s "$deliverable_path" 2>/dev/null || echo "0")
47
+ if [ "$size" -gt 100 ]; then
48
+ echo "VALID:$size"
49
+ return 0
50
+ fi
51
+ fi
52
+ ;;
53
+ */)
54
+ # Directories - check existence and contents
55
+ if [ -d "$deliverable_path" ]; then
56
+ local file_count=$(find "$deliverable_path" -type f | wc -l)
57
+ if [ "$file_count" -gt 0 ]; then
58
+ echo "VALID:$file_count"
59
+ return 0
60
+ fi
61
+ fi
62
+ ;;
63
+ *.json)
64
+ # JSON files - check validity
65
+ if [ -f "$deliverable_path" ]; then
66
+ if jq empty "$deliverable_path" 2>/dev/null; then
67
+ local size=$(stat -c%s "$deliverable_path" 2>/dev/null || echo "0")
68
+ echo "VALID:$size"
69
+ return 0
70
+ fi
71
+ fi
72
+ ;;
73
+ *)
74
+ # Generic file check
75
+ if [ -f "$deliverable_path" ]; then
76
+ local size=$(stat -c%s "$deliverable_path" 2>/dev/null || echo "0")
77
+ if [ "$size" -gt 0 ]; then
78
+ echo "VALID:$size"
79
+ return 0
80
+ fi
81
+ fi
82
+ ;;
83
+ esac
84
+
85
+ echo "INVALID"
86
+ return 1
87
+ }
88
+
89
+ # Function to calculate quality score based on deliverable characteristics
90
+ calculate_quality_score() {
91
+ local deliverable="$1"
92
+ local deliverable_path="$WORKING_DIR/$deliverable"
93
+
94
+ local quality_score=0.5 # Base score for existing
95
+
96
+ # Size scoring (larger files with meaningful content)
97
+ if [ -f "$deliverable_path" ]; then
98
+ local size=$(stat -c%s "$deliverable_path" 2>/dev/null || echo "0")
99
+
100
+ if [ "$size" -gt 5000 ]; then
101
+ quality_score=0.9 # Substantial content
102
+ elif [ "$size" -gt 1000 ]; then
103
+ quality_score=0.8 # Good content
104
+ elif [ "$size" -gt 100 ]; then
105
+ quality_score=0.7 # Adequate content
106
+ else
107
+ quality_score=0.6 # Minimal content
108
+ fi
109
+ fi
110
+
111
+ # Content-specific scoring
112
+ case "$deliverable" in
113
+ *.md)
114
+ # Markdown files - check for structure
115
+ if grep -q "^#" "$deliverable_path" 2>/dev/null; then
116
+ quality_score=$((quality_score + 10)) # Has headers
117
+ fi
118
+ if grep -q "^```" "$deliverable_path" 2>/dev/null; then
119
+ quality_score=$((quality_score + 5)) # Has code blocks
120
+ fi
121
+ ;;
122
+ *.ts|*.tsx|*.js|*.jsx)
123
+ # Code files - check for functions/exports
124
+ if grep -q "function\|export\|class\|const.*=" "$deliverable_path" 2>/dev/null; then
125
+ quality_score=$((quality_score + 10)) # Has functions/exports
126
+ fi
127
+ ;;
128
+ *.json)
129
+ # JSON files - check for structure
130
+ if jq -e 'type == "object" and keys > 0' "$deliverable_path" >/dev/null 2>&1; then
131
+ quality_score=$((quality_score + 10)) # Has meaningful structure
132
+ fi
133
+ ;;
134
+ esac
135
+
136
+ # Cap at 1.0
137
+ if [ "$quality_score" -gt 100 ]; then
138
+ quality_score=100
139
+ fi
140
+
141
+ echo "$quality_score"
142
+ }
143
+
144
+ # Main confidence calculation
145
+ main() {
146
+ echo -e "${YELLOW}Analyzing expected deliverables...${NC}"
147
+
148
+ # Parse expected deliverables from JSON
149
+ if ! echo "$EXPECTED_DELIVERABLES" | jq empty 2>/dev/null; then
150
+ echo -e "${RED}❌ Invalid JSON in expected deliverables${NC}"
151
+ echo "0.0"
152
+ return 1
153
+ fi
154
+
155
+ local total_deliverables=$(echo "$EXPECTED_DELIVERABLES" | jq 'length')
156
+ local valid_deliverables=0
157
+ local total_quality_score=0
158
+
159
+ echo "Expected deliverables: $total_deliverables"
160
+ echo ""
161
+
162
+ # Check each deliverable
163
+ for ((i=0; i<total_deliverables; i++)); do
164
+ local deliverable=$(echo "$EXPECTED_DELIVERABLES" | jq -r ".[$i]")
165
+
166
+ echo -n " Checking: $deliverable ... "
167
+
168
+ local validation_result=$(validate_deliverable "$deliverable")
169
+
170
+ if [[ "$validation_result" == VALID* ]]; then
171
+ local quality_score=$(calculate_quality_score "$deliverable")
172
+ total_quality_score=$((total_quality_score + quality_score))
173
+ valid_deliverables=$((valid_deliverables + 1))
174
+
175
+ local size=$(echo "$validation_result" | cut -d: -f2)
176
+ echo -e "${GREEN}✓ VALID${NC} (size: $size, quality: $quality_score)"
177
+ else
178
+ echo -e "${RED}✗ MISSING/INVALID${NC}"
179
+ fi
180
+ done
181
+
182
+ echo ""
183
+ echo -e "${YELLOW}Summary:${NC}"
184
+ echo " Valid deliverables: $valid_deliverables/$total_deliverables"
185
+
186
+ # Calculate completion score (0-1)
187
+ local completion_score=0
188
+ if [ "$total_deliverables" -gt 0 ]; then
189
+ completion_score=$(echo "scale=3; $valid_deliverables / $total_deliverables" | bc -l)
190
+ fi
191
+
192
+ # Calculate average quality score (0-1)
193
+ local avg_quality_score=0.5 # Default if no deliverables
194
+ if [ "$valid_deliverables" -gt 0 ]; then
195
+ avg_quality_score=$(echo "scale=3; $total_quality_score / ($valid_deliverables * 100)" | bc -l)
196
+ fi
197
+
198
+ # Calculate final confidence score
199
+ # Weight: 60% completion, 40% quality
200
+ local final_confidence=$(echo "scale=3; ($completion_score * 0.6) + ($avg_quality_score * 0.4)" | bc -l)
201
+
202
+ # Round to 2 decimal places
203
+ final_confidence=$(echo "$final_confidence" | sed 's/^\./0./' | sed 's/\.\([0-9]\{2\}\)[0-9]*$/.\1/')
204
+
205
+ echo " Completion score: $completion_score"
206
+ echo " Quality score: $avg_quality_score"
207
+ echo " Final confidence: $final_confidence"
208
+
209
+ # Validation rules
210
+ if [ "$valid_deliverables" -eq 0 ]; then
211
+ echo -e "${RED}🚨 CRITICAL: No deliverables created - confidence should be 0.0${NC}"
212
+ echo "0.0"
213
+ return 1
214
+ elif (( $(echo "$final_confidence > 0.3" | bc -l) )); then
215
+ if [ "$valid_deliverables" -lt "$((total_deliverables / 2))" ]; then
216
+ echo -e "${YELLOW}⚠️ WARNING: Low deliverable completion (<50%) - confidence should be <= 0.3${NC}"
217
+ fi
218
+ fi
219
+
220
+ echo -e "${GREEN}✓ Calculated confidence: $final_confidence${NC}"
221
+ echo "$final_confidence"
222
+ }
223
+
224
+ # Store results in Redis if available
225
+ store_confidence_result() {
226
+ local confidence="$1"
227
+
228
+ if command -v redis-cli >/dev/null 2>&1; then
229
+ # Store detailed breakdown
230
+ local breakdown=$(cat << EOF
231
+ {
232
+ "task_id": "$TASK_ID",
233
+ "agent_id": "$AGENT_ID",
234
+ "calculated_confidence": $confidence,
235
+ "calculation_method": "deliverable-based",
236
+ "timestamp": "$(date -Iseconds)",
237
+ "working_directory": "$WORKING_DIR",
238
+ "expected_deliverables": $EXPECTED_DELIVERABLES
239
+ }
240
+ EOF
241
+ )
242
+
243
+ redis-cli set "${TASK_ID}:${AGENT_ID}:confidence-breakdown" "$breakdown" >/dev/null 2>&1 || true
244
+ redis-cli set "${TASK_ID}:${AGENT_ID}:confidence-score" "$confidence" >/dev/null 2>&1 || true
245
+
246
+ echo -e "📦 ${BLUE}Stored confidence breakdown in Redis:${NC} ${TASK_ID}:${AGENT_ID}:confidence-breakdown"
247
+ fi
248
+ }
249
+
250
+ # Execute main function
251
+ if [ "$#" -lt 3 ]; then
252
+ echo "Usage: $0 <task_id> <agent_id> <expected_deliverables_json> [working_directory]"
253
+ echo "Example: $0 task-123 agent-1 '[\"file1.txt\", \"script.sh\", \"docs/\"]' /path/to/project"
254
+ exit 1
255
+ fi
256
+
257
+ final_confidence=$(main "$@")
258
+
259
+ # Store results
260
+ store_confidence_result "$final_confidence"
261
+
262
262
  echo "$final_confidence"