claude-flow-novice 2.15.1 → 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.
- package/.claude/cfn-extras/agents/google-sheets-specialist.md +614 -0
- package/.claude/commands/cfn/create-handoff.md +224 -0
- package/.claude/hooks/cfn-BACKUP_USAGE.md +243 -243
- package/.claude/hooks/cfn-invoke-security-validation.sh +69 -69
- package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +78 -78
- package/.claude/hooks/cfn-post-edit.config.json +44 -44
- package/.claude/skills/agent-lifecycle/SKILL.md +60 -0
- package/.claude/skills/agent-lifecycle/execute-lifecycle-hook.sh +573 -0
- package/.claude/skills/agent-lifecycle/simple-audit.sh +31 -0
- package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
- package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
- package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
- package/.claude/skills/cfn-redis-coordination/get-context.sh +112 -112
- package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
- package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
- package/.claude/skills/cfn-transparency-middleware/test-integration.sh +161 -161
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
- package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +92 -92
- package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
- package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +662 -0
- package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +29 -0
- package/claude-assets/cfn-extras/agents/google-sheets-specialist.md +614 -0
- package/claude-assets/commands/cfn/create-handoff.md +224 -0
- package/claude-assets/hooks/cfn-BACKUP_USAGE.md +243 -243
- package/claude-assets/hooks/cfn-invoke-security-validation.sh +69 -69
- package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +78 -78
- package/claude-assets/hooks/cfn-post-edit.config.json +44 -44
- package/claude-assets/hooks/cfn-post-execution/memory-cleanup.sh +19 -19
- package/claude-assets/hooks/cfn-pre-execution/memory-check.sh +19 -19
- package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +572 -572
- package/claude-assets/skills/agent-lifecycle/simple-audit.sh +30 -30
- package/claude-assets/skills/cfn-automatic-memory-persistence/persist-agent-output.sh +48 -48
- package/claude-assets/skills/cfn-automatic-memory-persistence/query-agent-history.sh +34 -34
- package/claude-assets/skills/cfn-deliverable-validation/confidence-calculator.sh +261 -261
- package/claude-assets/skills/cfn-expert-update/update-expert.sh +345 -345
- package/claude-assets/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
- package/claude-assets/skills/cfn-intervention-detector/detect-intervention.sh +110 -110
- package/claude-assets/skills/cfn-intervention-orchestrator/execute-intervention.sh +58 -58
- package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
- package/claude-assets/skills/cfn-loop2-output-processing/process-validator-output.sh +275 -275
- package/claude-assets/skills/cfn-memory-management/check-memory.sh +159 -159
- package/claude-assets/skills/cfn-memory-management/cleanup-memory.sh +196 -196
- package/claude-assets/skills/cfn-node-heap-sizer/task-mode-heap-limiter.sh +325 -325
- package/claude-assets/skills/cfn-playbook-auto-update/auto-update-playbook.sh +85 -85
- package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
- package/claude-assets/skills/cfn-redis-coordination/get-context.sh +112 -112
- package/claude-assets/skills/cfn-scope-simplifier/simplify-scope.sh +67 -67
- package/claude-assets/skills/cfn-specialist-injection/recommend-specialist.sh +56 -56
- package/claude-assets/skills/cfn-standardized-error-handling/capture-agent-error.sh +86 -86
- package/claude-assets/skills/cfn-standardized-error-handling/test-error-handling.sh +165 -165
- package/claude-assets/skills/cfn-task-config-init/initialize-config.sh +264 -264
- package/claude-assets/skills/cfn-task-decomposition/task-decomposer.sh +278 -278
- package/claude-assets/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
- package/claude-assets/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
- package/claude-assets/skills/cfn-transparency-middleware/test-integration.sh +161 -161
- package/claude-assets/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
- package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +92 -92
- package/claude-assets/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
- package/claude-assets/skills/docker-build/SKILL.md +96 -203
- package/claude-assets/skills/docker-build/build.sh +73 -73
- package/claude-assets/skills/integration/agent-handoff.sh +494 -0
- package/claude-assets/skills/integration/file-operations.sh +414 -0
- package/claude-assets/skills/workflow-codification/APPROVAL_WORKFLOW.md +806 -0
- package/claude-assets/skills/workflow-codification/COST_TRACKING.md +637 -0
- package/claude-assets/skills/workflow-codification/EDGE_CASE_TRACKING.md +404 -0
- package/claude-assets/skills/workflow-codification/README_PHASE4.md +457 -0
- package/claude-assets/skills/workflow-codification/SKILL.md +110 -0
- package/claude-assets/skills/workflow-codification/analyze-patterns.sh +899 -0
- package/claude-assets/skills/workflow-codification/approval-workflow.sh +514 -0
- package/claude-assets/skills/workflow-codification/generate-skill-update.sh +525 -0
- package/claude-assets/skills/workflow-codification/review-skill.sh +643 -0
- package/claude-assets/skills/workflow-codification/templates/email-notification.txt +114 -0
- package/claude-assets/skills/workflow-codification/templates/slack-notification.md +85 -0
- package/claude-assets/skills/workflow-codification/test-integration.sh +281 -0
- package/claude-assets/skills/workflow-codification/track-cost-savings.sh +445 -0
- package/claude-assets/skills/workflow-codification/track-edge-case.sh +323 -0
- package/dist/agents/agent-loader.js +165 -146
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/cli/config-manager.js +91 -109
- package/dist/cli/config-manager.js.map +1 -1
- package/dist/integration/DatabaseHandoff.js +507 -0
- package/dist/integration/DatabaseHandoff.js.map +1 -0
- package/dist/integration/StandardAdapter.js +291 -0
- package/dist/integration/StandardAdapter.js.map +1 -0
- package/dist/lib/agent-output-parser.js +518 -0
- package/dist/lib/agent-output-parser.js.map +1 -0
- package/dist/lib/agent-output-validator.js +950 -0
- package/dist/lib/agent-output-validator.js.map +1 -0
- package/dist/lib/artifact-registry.js +443 -0
- package/dist/lib/artifact-registry.js.map +1 -0
- package/dist/lib/config-validator.js +687 -0
- package/dist/lib/config-validator.js.map +1 -0
- package/dist/types/agent-output.js +44 -0
- package/dist/types/agent-output.js.map +1 -0
- package/dist/types/config.js +28 -0
- package/dist/types/config.js.map +1 -0
- package/package.json +2 -1
- package/scripts/artifact-cleanup.sh +392 -0
- package/scripts/build-linux.sh +78 -0
- package/scripts/deploy-production.sh +355 -355
- package/scripts/docker-playwright-fix.sh +311 -311
- package/scripts/docker-rebuild-all-agents.sh +127 -127
- package/scripts/memory-leak-prevention.sh +305 -305
- package/scripts/migrate-artifacts.sh +563 -0
- package/scripts/migrate-yaml-to-json.sh +465 -0
- package/scripts/run-marketing-tests.sh +42 -42
- package/scripts/update_paths.sh +46 -46
|
@@ -1,368 +1,368 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# Transparency Middleware Test Suite
|
|
4
|
-
# Version: 1.0.0
|
|
5
|
-
# Sprint: 1.2 Middleware Skills Wrapper
|
|
6
|
-
|
|
7
|
-
set -euo pipefail
|
|
8
|
-
|
|
9
|
-
# Import testing utilities
|
|
10
|
-
source .claude/skills/cfn-common/test-utils.sh
|
|
11
|
-
source .claude/skills/cfn-transparency-middleware/middleware-config.sh
|
|
12
|
-
|
|
13
|
-
# Logging configuration
|
|
14
|
-
LOG_FILE="/tmp/transparency-middleware-tests.log"
|
|
15
|
-
touch "$LOG_FILE"
|
|
16
|
-
|
|
17
|
-
# Redis connection parameters
|
|
18
|
-
REDIS_HOST="${REDIS_HOST:-localhost}"
|
|
19
|
-
REDIS_PORT="${REDIS_PORT:-6379}"
|
|
20
|
-
|
|
21
|
-
# Test suite global variables
|
|
22
|
-
TEST_TASK_ID="transparency-test-$(date +%s)"
|
|
23
|
-
TOTAL_TESTS=10
|
|
24
|
-
PASSED_TESTS=0
|
|
25
|
-
|
|
26
|
-
# Utility Functions
|
|
27
|
-
log_test_start() {
|
|
28
|
-
echo "[TEST] Starting: $1" | tee -a "$LOG_FILE"
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
log_test_result() {
|
|
32
|
-
local status="$1"
|
|
33
|
-
local message="$2"
|
|
34
|
-
if [ "$status" -eq 0 ]; then
|
|
35
|
-
echo "[PASS] $message" | tee -a "$LOG_FILE"
|
|
36
|
-
((PASSED_TESTS++))
|
|
37
|
-
else
|
|
38
|
-
echo "[FAIL] $message" | tee -a "$LOG_FILE"
|
|
39
|
-
fi
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
# Test 1: Initialization
|
|
43
|
-
test_initialization() {
|
|
44
|
-
log_test_start "Initialization Tests"
|
|
45
|
-
local test_result=0
|
|
46
|
-
|
|
47
|
-
# Test minimal transparency level
|
|
48
|
-
./invoke-transparency-middleware.sh init \
|
|
49
|
-
--task-id "$TEST_TASK_ID" \
|
|
50
|
-
--level minimal || test_result=1
|
|
51
|
-
|
|
52
|
-
# Verify configuration
|
|
53
|
-
local config=$(redis-cli hget "transparency:${TEST_TASK_ID}" config)
|
|
54
|
-
[[ "$config" =~ "level:minimal" ]] || test_result=1
|
|
55
|
-
|
|
56
|
-
# Test Redis connection
|
|
57
|
-
redis-cli ping || test_result=1
|
|
58
|
-
|
|
59
|
-
log_test_result "$test_result" "Initialization Test"
|
|
60
|
-
return "$test_result"
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
# Test 2: Message Observation
|
|
64
|
-
test_message_observation() {
|
|
65
|
-
log_test_start "Message Observation"
|
|
66
|
-
local test_result=0
|
|
67
|
-
|
|
68
|
-
# Simulate message generation
|
|
69
|
-
./invoke-transparency-middleware.sh subscribe \
|
|
70
|
-
--task-id "$TEST_TASK_ID" \
|
|
71
|
-
--channel "test-channel" || test_result=1
|
|
72
|
-
|
|
73
|
-
# Publish test message
|
|
74
|
-
redis-cli publish "test-channel" "Test observation message" || test_result=1
|
|
75
|
-
|
|
76
|
-
# Check message reception
|
|
77
|
-
local message=$(redis-cli blpop "transparency:${TEST_TASK_ID}:messages" 5)
|
|
78
|
-
[[ -n "$message" ]] || test_result=1
|
|
79
|
-
|
|
80
|
-
log_test_result "$test_result" "Message Observation Test"
|
|
81
|
-
return "$test_result"
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
# Test 3: Transparency Level Changes
|
|
85
|
-
test_transparency_levels() {
|
|
86
|
-
log_test_start "Transparency Level Changes"
|
|
87
|
-
local test_result=0
|
|
88
|
-
|
|
89
|
-
# Test level progression
|
|
90
|
-
local levels=("minimal" "detailed" "verbose" "debug")
|
|
91
|
-
for level in "${levels[@]}"; do
|
|
92
|
-
./invoke-transparency-middleware.sh set-level \
|
|
93
|
-
--task-id "$TEST_TASK_ID" \
|
|
94
|
-
--level "$level" || test_result=1
|
|
95
|
-
done
|
|
96
|
-
|
|
97
|
-
log_test_result "$test_result" "Transparency Level Changes Test"
|
|
98
|
-
return "$test_result"
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
# Test 4: Filter Management
|
|
102
|
-
test_filter_management() {
|
|
103
|
-
log_test_start "Filter Management"
|
|
104
|
-
local test_result=0
|
|
105
|
-
|
|
106
|
-
# Initialize
|
|
107
|
-
./invoke-transparency-middleware.sh init \
|
|
108
|
-
--task-id "$TEST_TASK_ID" \
|
|
109
|
-
--level detailed || test_result=1
|
|
110
|
-
|
|
111
|
-
# Add include filter
|
|
112
|
-
./invoke-transparency-middleware.sh add-filter \
|
|
113
|
-
--task-id "$TEST_TASK_ID" \
|
|
114
|
-
--name "Error Filter" \
|
|
115
|
-
--type include \
|
|
116
|
-
--pattern "error|critical" || test_result=1
|
|
117
|
-
|
|
118
|
-
# List filters
|
|
119
|
-
local filters=$(./invoke-transparency-middleware.sh list-filters \
|
|
120
|
-
--task-id "$TEST_TASK_ID")
|
|
121
|
-
[[ "$filters" =~ "Error Filter" ]] || test_result=1
|
|
122
|
-
|
|
123
|
-
# Test filter pattern
|
|
124
|
-
local match=$(./invoke-transparency-middleware.sh test-filter \
|
|
125
|
-
--task-id "$TEST_TASK_ID" \
|
|
126
|
-
--name "Error Filter" \
|
|
127
|
-
--message "critical system error")
|
|
128
|
-
[[ "$match" == "true" ]] || test_result=1
|
|
129
|
-
|
|
130
|
-
# Remove filter
|
|
131
|
-
./invoke-transparency-middleware.sh remove-filter \
|
|
132
|
-
--task-id "$TEST_TASK_ID" \
|
|
133
|
-
--name "Error Filter" || test_result=1
|
|
134
|
-
|
|
135
|
-
log_test_result "$test_result" "Filter Management Test"
|
|
136
|
-
return "$test_result"
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
# Test 5: Performance Metrics
|
|
140
|
-
test_performance_metrics() {
|
|
141
|
-
log_test_start "Performance Metrics"
|
|
142
|
-
local test_result=0
|
|
143
|
-
|
|
144
|
-
# Initialize with verbose level
|
|
145
|
-
./invoke-transparency-middleware.sh init \
|
|
146
|
-
--task-id "$TEST_TASK_ID" \
|
|
147
|
-
--level verbose || test_result=1
|
|
148
|
-
|
|
149
|
-
# Query metrics
|
|
150
|
-
local metrics=$(./invoke-transparency-middleware.sh get-metrics \
|
|
151
|
-
--task-id "$TEST_TASK_ID")
|
|
152
|
-
|
|
153
|
-
# Verify metric fields
|
|
154
|
-
[[ "$metrics" =~ "messages_generated" ]] || test_result=1
|
|
155
|
-
[[ "$metrics" =~ "messages_filtered" ]] || test_result=1
|
|
156
|
-
[[ "$metrics" =~ "overhead_percentage" ]] || test_result=1
|
|
157
|
-
[[ "$metrics" =~ "queue_size" ]] || test_result=1
|
|
158
|
-
|
|
159
|
-
# Verify overhead is reasonable (less than 10%)
|
|
160
|
-
local overhead=$(echo "$metrics" | grep -o "overhead_percentage:[0-9.]*" | cut -d: -f2)
|
|
161
|
-
(( $(echo "$overhead < 10" | bc -l) )) || test_result=1
|
|
162
|
-
|
|
163
|
-
log_test_result "$test_result" "Performance Metrics Test"
|
|
164
|
-
return "$test_result"
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
# Test 6: Redis Integration
|
|
168
|
-
test_redis_integration() {
|
|
169
|
-
log_test_start "Redis Integration"
|
|
170
|
-
local test_result=0
|
|
171
|
-
|
|
172
|
-
# Initialize
|
|
173
|
-
./invoke-transparency-middleware.sh init \
|
|
174
|
-
--task-id "$TEST_TASK_ID" \
|
|
175
|
-
--level detailed || test_result=1
|
|
176
|
-
|
|
177
|
-
# Verify Redis keys created
|
|
178
|
-
local config_keys=$(redis-cli keys "transparency:config:*$TEST_TASK_ID*")
|
|
179
|
-
local state_keys=$(redis-cli keys "transparency:state:*$TEST_TASK_ID*")
|
|
180
|
-
|
|
181
|
-
[[ -n "$config_keys" ]] || test_result=1
|
|
182
|
-
[[ -n "$state_keys" ]] || test_result=1
|
|
183
|
-
|
|
184
|
-
# Publish test message
|
|
185
|
-
redis-cli publish "transparency:messages:$TEST_TASK_ID" \
|
|
186
|
-
'{"type":"test","message":"Redis integration test"}' || test_result=1
|
|
187
|
-
|
|
188
|
-
# Observe message (with timeout)
|
|
189
|
-
local message=$(timeout 5s ./invoke-transparency-middleware.sh observe \
|
|
190
|
-
--task-id "$TEST_TASK_ID" \
|
|
191
|
-
--timeout 3)
|
|
192
|
-
[[ -n "$message" ]] || test_result=1
|
|
193
|
-
|
|
194
|
-
# Cleanup
|
|
195
|
-
./invoke-transparency-middleware.sh stop \
|
|
196
|
-
--task-id "$TEST_TASK_ID" || test_result=1
|
|
197
|
-
|
|
198
|
-
log_test_result "$test_result" "Redis Integration Test"
|
|
199
|
-
return "$test_result"
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
# Test 7: Multi-Agent Scenarios
|
|
203
|
-
test_multi_agent() {
|
|
204
|
-
log_test_start "Multi-Agent Scenarios"
|
|
205
|
-
local test_result=0
|
|
206
|
-
|
|
207
|
-
# Initialize with different agent configs
|
|
208
|
-
./invoke-transparency-middleware.sh init \
|
|
209
|
-
--task-id "${TEST_TASK_ID}-agent1" \
|
|
210
|
-
--agent-id "agent-1" \
|
|
211
|
-
--level detailed || test_result=1
|
|
212
|
-
|
|
213
|
-
./invoke-transparency-middleware.sh init \
|
|
214
|
-
--task-id "${TEST_TASK_ID}-agent2" \
|
|
215
|
-
--agent-id "agent-2" \
|
|
216
|
-
--level verbose || test_result=1
|
|
217
|
-
|
|
218
|
-
# Verify different levels per agent
|
|
219
|
-
local agent1_level=$(./invoke-transparency-middleware.sh get-level \
|
|
220
|
-
--agent-id "agent-1")
|
|
221
|
-
local agent2_level=$(./invoke-transparency-middleware.sh get-level \
|
|
222
|
-
--agent-id "agent-2")
|
|
223
|
-
|
|
224
|
-
[[ "$agent1_level" == "detailed" ]] || test_result=1
|
|
225
|
-
[[ "$agent2_level" == "verbose" ]] || test_result=1
|
|
226
|
-
|
|
227
|
-
# Cleanup
|
|
228
|
-
./invoke-transparency-middleware.sh stop \
|
|
229
|
-
--agent-id "agent-1" || test_result=1
|
|
230
|
-
./invoke-transparency-middleware.sh stop \
|
|
231
|
-
--agent-id "agent-2" || test_result=1
|
|
232
|
-
|
|
233
|
-
log_test_result "$test_result" "Multi-Agent Scenarios Test"
|
|
234
|
-
return "$test_result"
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
# Test 8: Performance Overhead
|
|
238
|
-
test_performance_overhead() {
|
|
239
|
-
log_test_start "Performance Overhead"
|
|
240
|
-
local test_result=0
|
|
241
|
-
|
|
242
|
-
# Test each transparency level
|
|
243
|
-
local levels=("minimal" "detailed" "verbose" "debug")
|
|
244
|
-
local max_overheads=(1.0 3.0 5.0 10.0)
|
|
245
|
-
|
|
246
|
-
for i in "${!levels[@]}"; do
|
|
247
|
-
local level="${levels[i]}"
|
|
248
|
-
local max_overhead="${max_overheads[i]}"
|
|
249
|
-
|
|
250
|
-
./invoke-transparency-middleware.sh init \
|
|
251
|
-
--task-id "${TEST_TASK_ID}-${level}" \
|
|
252
|
-
--level "$level" || test_result=1
|
|
253
|
-
|
|
254
|
-
local metrics=$(./invoke-transparency-middleware.sh get-metrics \
|
|
255
|
-
--task-id "${TEST_TASK_ID}-${level}")
|
|
256
|
-
|
|
257
|
-
local overhead=$(echo "$metrics" | grep -o "overhead_percentage:[0-9.]*" | cut -d: -f2)
|
|
258
|
-
(( $(echo "$overhead <= $max_overhead" | bc -l) )) || {
|
|
259
|
-
echo "❌ Level $level overhead $overhead% exceeds $max_overhead%"
|
|
260
|
-
test_result=1
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
./invoke-transparency-middleware.sh stop \
|
|
264
|
-
--task-id "${TEST_TASK_ID}-${level}" || test_result=1
|
|
265
|
-
done
|
|
266
|
-
|
|
267
|
-
log_test_result "$test_result" "Performance Overhead Test"
|
|
268
|
-
return "$test_result"
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
# Test 9: Error Handling
|
|
272
|
-
test_error_handling() {
|
|
273
|
-
log_test_start "Error Handling"
|
|
274
|
-
local test_result=0
|
|
275
|
-
|
|
276
|
-
# Test invalid transparency level
|
|
277
|
-
! ./invoke-transparency-middleware.sh init \
|
|
278
|
-
--task-id "$TEST_TASK_ID" \
|
|
279
|
-
--level invalid 2>/dev/null || test_result=1
|
|
280
|
-
|
|
281
|
-
# Test invalid task-id
|
|
282
|
-
! ./invoke-transparency-middleware.sh observe \
|
|
283
|
-
--task-id "" 2>/dev/null || test_result=1
|
|
284
|
-
|
|
285
|
-
# Test missing required parameters
|
|
286
|
-
! ./invoke-transparency-middleware.sh add-filter \
|
|
287
|
-
--task-id "$TEST_TASK_ID" 2>/dev/null || test_result=1
|
|
288
|
-
|
|
289
|
-
# Test invalid filter pattern
|
|
290
|
-
! ./invoke-transparency-middleware.sh add-filter \
|
|
291
|
-
--task-id "$TEST_TASK_ID" \
|
|
292
|
-
--name "test" \
|
|
293
|
-
--pattern "" 2>/dev/null || test_result=1
|
|
294
|
-
|
|
295
|
-
# Test observe on non-existent task
|
|
296
|
-
! ./invoke-transparency-middleware.sh observe \
|
|
297
|
-
--task-id "nonexistent-task-12345" 2>/dev/null || test_result=1
|
|
298
|
-
|
|
299
|
-
log_test_result "$test_result" "Error Handling Test"
|
|
300
|
-
return "$test_result"
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
# Test 10: Graceful Shutdown
|
|
304
|
-
test_graceful_shutdown() {
|
|
305
|
-
log_test_start "Graceful Shutdown"
|
|
306
|
-
local test_result=0
|
|
307
|
-
|
|
308
|
-
# Initialize
|
|
309
|
-
./invoke-transparency-middleware.sh init \
|
|
310
|
-
--task-id "$TEST_TASK_ID" \
|
|
311
|
-
--level detailed || test_result=1
|
|
312
|
-
|
|
313
|
-
# Add some data
|
|
314
|
-
./invoke-transparency-middleware.sh add-filter \
|
|
315
|
-
--task-id "$TEST_TASK_ID" \
|
|
316
|
-
--name "Test Filter" \
|
|
317
|
-
--pattern "test" || test_result=1
|
|
318
|
-
|
|
319
|
-
# Shutdown with flush
|
|
320
|
-
./invoke-transparency-middleware.sh stop \
|
|
321
|
-
--task-id "$TEST_TASK_ID" \
|
|
322
|
-
--flush || test_result=1
|
|
323
|
-
|
|
324
|
-
# Verify Redis keys cleaned up
|
|
325
|
-
local keys=$(redis-cli keys "transparency:*$TEST_TASK_ID*")
|
|
326
|
-
[[ -z "$keys" ]] || test_result=1
|
|
327
|
-
|
|
328
|
-
# Test shutdown without flush
|
|
329
|
-
./invoke-transparency-middleware.sh init \
|
|
330
|
-
--task-id "${TEST_TASK_ID}-noflush" \
|
|
331
|
-
--level minimal || test_result=1
|
|
332
|
-
|
|
333
|
-
./invoke-transparency-middleware.sh stop \
|
|
334
|
-
--task-id "${TEST_TASK_ID}-noflush" || test_result=1
|
|
335
|
-
|
|
336
|
-
log_test_result "$test_result" "Graceful Shutdown Test"
|
|
337
|
-
return "$test_result"
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
# Main Test Execution
|
|
341
|
-
main() {
|
|
342
|
-
echo "Starting Transparency Middleware Test Suite" | tee -a "$LOG_FILE"
|
|
343
|
-
|
|
344
|
-
test_initialization
|
|
345
|
-
test_message_observation
|
|
346
|
-
test_transparency_levels
|
|
347
|
-
test_filter_management
|
|
348
|
-
test_performance_metrics
|
|
349
|
-
test_redis_integration
|
|
350
|
-
test_multi_agent
|
|
351
|
-
test_performance_overhead
|
|
352
|
-
test_error_handling
|
|
353
|
-
test_graceful_shutdown
|
|
354
|
-
|
|
355
|
-
# Final Report
|
|
356
|
-
echo "Test Results: $PASSED_TESTS/$TOTAL_TESTS passed" | tee -a "$LOG_FILE"
|
|
357
|
-
|
|
358
|
-
if [ "$PASSED_TESTS" -eq "$TOTAL_TESTS" ]; then
|
|
359
|
-
redis-cli publish "swarm:sprint-1.2:devops" "test_suite_passed:1.0"
|
|
360
|
-
exit 0
|
|
361
|
-
else
|
|
362
|
-
redis-cli publish "swarm:sprint-1.2:devops" "test_suite_failed:0.0"
|
|
363
|
-
exit 1
|
|
364
|
-
fi
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
# Execute main function
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Transparency Middleware Test Suite
|
|
4
|
+
# Version: 1.0.0
|
|
5
|
+
# Sprint: 1.2 Middleware Skills Wrapper
|
|
6
|
+
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
# Import testing utilities
|
|
10
|
+
source .claude/skills/cfn-common/test-utils.sh
|
|
11
|
+
source .claude/skills/cfn-transparency-middleware/middleware-config.sh
|
|
12
|
+
|
|
13
|
+
# Logging configuration
|
|
14
|
+
LOG_FILE="/tmp/transparency-middleware-tests.log"
|
|
15
|
+
touch "$LOG_FILE"
|
|
16
|
+
|
|
17
|
+
# Redis connection parameters
|
|
18
|
+
REDIS_HOST="${REDIS_HOST:-localhost}"
|
|
19
|
+
REDIS_PORT="${REDIS_PORT:-6379}"
|
|
20
|
+
|
|
21
|
+
# Test suite global variables
|
|
22
|
+
TEST_TASK_ID="transparency-test-$(date +%s)"
|
|
23
|
+
TOTAL_TESTS=10
|
|
24
|
+
PASSED_TESTS=0
|
|
25
|
+
|
|
26
|
+
# Utility Functions
|
|
27
|
+
log_test_start() {
|
|
28
|
+
echo "[TEST] Starting: $1" | tee -a "$LOG_FILE"
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
log_test_result() {
|
|
32
|
+
local status="$1"
|
|
33
|
+
local message="$2"
|
|
34
|
+
if [ "$status" -eq 0 ]; then
|
|
35
|
+
echo "[PASS] $message" | tee -a "$LOG_FILE"
|
|
36
|
+
((PASSED_TESTS++))
|
|
37
|
+
else
|
|
38
|
+
echo "[FAIL] $message" | tee -a "$LOG_FILE"
|
|
39
|
+
fi
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
# Test 1: Initialization
|
|
43
|
+
test_initialization() {
|
|
44
|
+
log_test_start "Initialization Tests"
|
|
45
|
+
local test_result=0
|
|
46
|
+
|
|
47
|
+
# Test minimal transparency level
|
|
48
|
+
./invoke-transparency-middleware.sh init \
|
|
49
|
+
--task-id "$TEST_TASK_ID" \
|
|
50
|
+
--level minimal || test_result=1
|
|
51
|
+
|
|
52
|
+
# Verify configuration
|
|
53
|
+
local config=$(redis-cli hget "transparency:${TEST_TASK_ID}" config)
|
|
54
|
+
[[ "$config" =~ "level:minimal" ]] || test_result=1
|
|
55
|
+
|
|
56
|
+
# Test Redis connection
|
|
57
|
+
redis-cli ping || test_result=1
|
|
58
|
+
|
|
59
|
+
log_test_result "$test_result" "Initialization Test"
|
|
60
|
+
return "$test_result"
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
# Test 2: Message Observation
|
|
64
|
+
test_message_observation() {
|
|
65
|
+
log_test_start "Message Observation"
|
|
66
|
+
local test_result=0
|
|
67
|
+
|
|
68
|
+
# Simulate message generation
|
|
69
|
+
./invoke-transparency-middleware.sh subscribe \
|
|
70
|
+
--task-id "$TEST_TASK_ID" \
|
|
71
|
+
--channel "test-channel" || test_result=1
|
|
72
|
+
|
|
73
|
+
# Publish test message
|
|
74
|
+
redis-cli publish "test-channel" "Test observation message" || test_result=1
|
|
75
|
+
|
|
76
|
+
# Check message reception
|
|
77
|
+
local message=$(redis-cli blpop "transparency:${TEST_TASK_ID}:messages" 5)
|
|
78
|
+
[[ -n "$message" ]] || test_result=1
|
|
79
|
+
|
|
80
|
+
log_test_result "$test_result" "Message Observation Test"
|
|
81
|
+
return "$test_result"
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
# Test 3: Transparency Level Changes
|
|
85
|
+
test_transparency_levels() {
|
|
86
|
+
log_test_start "Transparency Level Changes"
|
|
87
|
+
local test_result=0
|
|
88
|
+
|
|
89
|
+
# Test level progression
|
|
90
|
+
local levels=("minimal" "detailed" "verbose" "debug")
|
|
91
|
+
for level in "${levels[@]}"; do
|
|
92
|
+
./invoke-transparency-middleware.sh set-level \
|
|
93
|
+
--task-id "$TEST_TASK_ID" \
|
|
94
|
+
--level "$level" || test_result=1
|
|
95
|
+
done
|
|
96
|
+
|
|
97
|
+
log_test_result "$test_result" "Transparency Level Changes Test"
|
|
98
|
+
return "$test_result"
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
# Test 4: Filter Management
|
|
102
|
+
test_filter_management() {
|
|
103
|
+
log_test_start "Filter Management"
|
|
104
|
+
local test_result=0
|
|
105
|
+
|
|
106
|
+
# Initialize
|
|
107
|
+
./invoke-transparency-middleware.sh init \
|
|
108
|
+
--task-id "$TEST_TASK_ID" \
|
|
109
|
+
--level detailed || test_result=1
|
|
110
|
+
|
|
111
|
+
# Add include filter
|
|
112
|
+
./invoke-transparency-middleware.sh add-filter \
|
|
113
|
+
--task-id "$TEST_TASK_ID" \
|
|
114
|
+
--name "Error Filter" \
|
|
115
|
+
--type include \
|
|
116
|
+
--pattern "error|critical" || test_result=1
|
|
117
|
+
|
|
118
|
+
# List filters
|
|
119
|
+
local filters=$(./invoke-transparency-middleware.sh list-filters \
|
|
120
|
+
--task-id "$TEST_TASK_ID")
|
|
121
|
+
[[ "$filters" =~ "Error Filter" ]] || test_result=1
|
|
122
|
+
|
|
123
|
+
# Test filter pattern
|
|
124
|
+
local match=$(./invoke-transparency-middleware.sh test-filter \
|
|
125
|
+
--task-id "$TEST_TASK_ID" \
|
|
126
|
+
--name "Error Filter" \
|
|
127
|
+
--message "critical system error")
|
|
128
|
+
[[ "$match" == "true" ]] || test_result=1
|
|
129
|
+
|
|
130
|
+
# Remove filter
|
|
131
|
+
./invoke-transparency-middleware.sh remove-filter \
|
|
132
|
+
--task-id "$TEST_TASK_ID" \
|
|
133
|
+
--name "Error Filter" || test_result=1
|
|
134
|
+
|
|
135
|
+
log_test_result "$test_result" "Filter Management Test"
|
|
136
|
+
return "$test_result"
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
# Test 5: Performance Metrics
|
|
140
|
+
test_performance_metrics() {
|
|
141
|
+
log_test_start "Performance Metrics"
|
|
142
|
+
local test_result=0
|
|
143
|
+
|
|
144
|
+
# Initialize with verbose level
|
|
145
|
+
./invoke-transparency-middleware.sh init \
|
|
146
|
+
--task-id "$TEST_TASK_ID" \
|
|
147
|
+
--level verbose || test_result=1
|
|
148
|
+
|
|
149
|
+
# Query metrics
|
|
150
|
+
local metrics=$(./invoke-transparency-middleware.sh get-metrics \
|
|
151
|
+
--task-id "$TEST_TASK_ID")
|
|
152
|
+
|
|
153
|
+
# Verify metric fields
|
|
154
|
+
[[ "$metrics" =~ "messages_generated" ]] || test_result=1
|
|
155
|
+
[[ "$metrics" =~ "messages_filtered" ]] || test_result=1
|
|
156
|
+
[[ "$metrics" =~ "overhead_percentage" ]] || test_result=1
|
|
157
|
+
[[ "$metrics" =~ "queue_size" ]] || test_result=1
|
|
158
|
+
|
|
159
|
+
# Verify overhead is reasonable (less than 10%)
|
|
160
|
+
local overhead=$(echo "$metrics" | grep -o "overhead_percentage:[0-9.]*" | cut -d: -f2)
|
|
161
|
+
(( $(echo "$overhead < 10" | bc -l) )) || test_result=1
|
|
162
|
+
|
|
163
|
+
log_test_result "$test_result" "Performance Metrics Test"
|
|
164
|
+
return "$test_result"
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
# Test 6: Redis Integration
|
|
168
|
+
test_redis_integration() {
|
|
169
|
+
log_test_start "Redis Integration"
|
|
170
|
+
local test_result=0
|
|
171
|
+
|
|
172
|
+
# Initialize
|
|
173
|
+
./invoke-transparency-middleware.sh init \
|
|
174
|
+
--task-id "$TEST_TASK_ID" \
|
|
175
|
+
--level detailed || test_result=1
|
|
176
|
+
|
|
177
|
+
# Verify Redis keys created
|
|
178
|
+
local config_keys=$(redis-cli keys "transparency:config:*$TEST_TASK_ID*")
|
|
179
|
+
local state_keys=$(redis-cli keys "transparency:state:*$TEST_TASK_ID*")
|
|
180
|
+
|
|
181
|
+
[[ -n "$config_keys" ]] || test_result=1
|
|
182
|
+
[[ -n "$state_keys" ]] || test_result=1
|
|
183
|
+
|
|
184
|
+
# Publish test message
|
|
185
|
+
redis-cli publish "transparency:messages:$TEST_TASK_ID" \
|
|
186
|
+
'{"type":"test","message":"Redis integration test"}' || test_result=1
|
|
187
|
+
|
|
188
|
+
# Observe message (with timeout)
|
|
189
|
+
local message=$(timeout 5s ./invoke-transparency-middleware.sh observe \
|
|
190
|
+
--task-id "$TEST_TASK_ID" \
|
|
191
|
+
--timeout 3)
|
|
192
|
+
[[ -n "$message" ]] || test_result=1
|
|
193
|
+
|
|
194
|
+
# Cleanup
|
|
195
|
+
./invoke-transparency-middleware.sh stop \
|
|
196
|
+
--task-id "$TEST_TASK_ID" || test_result=1
|
|
197
|
+
|
|
198
|
+
log_test_result "$test_result" "Redis Integration Test"
|
|
199
|
+
return "$test_result"
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
# Test 7: Multi-Agent Scenarios
|
|
203
|
+
test_multi_agent() {
|
|
204
|
+
log_test_start "Multi-Agent Scenarios"
|
|
205
|
+
local test_result=0
|
|
206
|
+
|
|
207
|
+
# Initialize with different agent configs
|
|
208
|
+
./invoke-transparency-middleware.sh init \
|
|
209
|
+
--task-id "${TEST_TASK_ID}-agent1" \
|
|
210
|
+
--agent-id "agent-1" \
|
|
211
|
+
--level detailed || test_result=1
|
|
212
|
+
|
|
213
|
+
./invoke-transparency-middleware.sh init \
|
|
214
|
+
--task-id "${TEST_TASK_ID}-agent2" \
|
|
215
|
+
--agent-id "agent-2" \
|
|
216
|
+
--level verbose || test_result=1
|
|
217
|
+
|
|
218
|
+
# Verify different levels per agent
|
|
219
|
+
local agent1_level=$(./invoke-transparency-middleware.sh get-level \
|
|
220
|
+
--agent-id "agent-1")
|
|
221
|
+
local agent2_level=$(./invoke-transparency-middleware.sh get-level \
|
|
222
|
+
--agent-id "agent-2")
|
|
223
|
+
|
|
224
|
+
[[ "$agent1_level" == "detailed" ]] || test_result=1
|
|
225
|
+
[[ "$agent2_level" == "verbose" ]] || test_result=1
|
|
226
|
+
|
|
227
|
+
# Cleanup
|
|
228
|
+
./invoke-transparency-middleware.sh stop \
|
|
229
|
+
--agent-id "agent-1" || test_result=1
|
|
230
|
+
./invoke-transparency-middleware.sh stop \
|
|
231
|
+
--agent-id "agent-2" || test_result=1
|
|
232
|
+
|
|
233
|
+
log_test_result "$test_result" "Multi-Agent Scenarios Test"
|
|
234
|
+
return "$test_result"
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
# Test 8: Performance Overhead
|
|
238
|
+
test_performance_overhead() {
|
|
239
|
+
log_test_start "Performance Overhead"
|
|
240
|
+
local test_result=0
|
|
241
|
+
|
|
242
|
+
# Test each transparency level
|
|
243
|
+
local levels=("minimal" "detailed" "verbose" "debug")
|
|
244
|
+
local max_overheads=(1.0 3.0 5.0 10.0)
|
|
245
|
+
|
|
246
|
+
for i in "${!levels[@]}"; do
|
|
247
|
+
local level="${levels[i]}"
|
|
248
|
+
local max_overhead="${max_overheads[i]}"
|
|
249
|
+
|
|
250
|
+
./invoke-transparency-middleware.sh init \
|
|
251
|
+
--task-id "${TEST_TASK_ID}-${level}" \
|
|
252
|
+
--level "$level" || test_result=1
|
|
253
|
+
|
|
254
|
+
local metrics=$(./invoke-transparency-middleware.sh get-metrics \
|
|
255
|
+
--task-id "${TEST_TASK_ID}-${level}")
|
|
256
|
+
|
|
257
|
+
local overhead=$(echo "$metrics" | grep -o "overhead_percentage:[0-9.]*" | cut -d: -f2)
|
|
258
|
+
(( $(echo "$overhead <= $max_overhead" | bc -l) )) || {
|
|
259
|
+
echo "❌ Level $level overhead $overhead% exceeds $max_overhead%"
|
|
260
|
+
test_result=1
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
./invoke-transparency-middleware.sh stop \
|
|
264
|
+
--task-id "${TEST_TASK_ID}-${level}" || test_result=1
|
|
265
|
+
done
|
|
266
|
+
|
|
267
|
+
log_test_result "$test_result" "Performance Overhead Test"
|
|
268
|
+
return "$test_result"
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
# Test 9: Error Handling
|
|
272
|
+
test_error_handling() {
|
|
273
|
+
log_test_start "Error Handling"
|
|
274
|
+
local test_result=0
|
|
275
|
+
|
|
276
|
+
# Test invalid transparency level
|
|
277
|
+
! ./invoke-transparency-middleware.sh init \
|
|
278
|
+
--task-id "$TEST_TASK_ID" \
|
|
279
|
+
--level invalid 2>/dev/null || test_result=1
|
|
280
|
+
|
|
281
|
+
# Test invalid task-id
|
|
282
|
+
! ./invoke-transparency-middleware.sh observe \
|
|
283
|
+
--task-id "" 2>/dev/null || test_result=1
|
|
284
|
+
|
|
285
|
+
# Test missing required parameters
|
|
286
|
+
! ./invoke-transparency-middleware.sh add-filter \
|
|
287
|
+
--task-id "$TEST_TASK_ID" 2>/dev/null || test_result=1
|
|
288
|
+
|
|
289
|
+
# Test invalid filter pattern
|
|
290
|
+
! ./invoke-transparency-middleware.sh add-filter \
|
|
291
|
+
--task-id "$TEST_TASK_ID" \
|
|
292
|
+
--name "test" \
|
|
293
|
+
--pattern "" 2>/dev/null || test_result=1
|
|
294
|
+
|
|
295
|
+
# Test observe on non-existent task
|
|
296
|
+
! ./invoke-transparency-middleware.sh observe \
|
|
297
|
+
--task-id "nonexistent-task-12345" 2>/dev/null || test_result=1
|
|
298
|
+
|
|
299
|
+
log_test_result "$test_result" "Error Handling Test"
|
|
300
|
+
return "$test_result"
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
# Test 10: Graceful Shutdown
|
|
304
|
+
test_graceful_shutdown() {
|
|
305
|
+
log_test_start "Graceful Shutdown"
|
|
306
|
+
local test_result=0
|
|
307
|
+
|
|
308
|
+
# Initialize
|
|
309
|
+
./invoke-transparency-middleware.sh init \
|
|
310
|
+
--task-id "$TEST_TASK_ID" \
|
|
311
|
+
--level detailed || test_result=1
|
|
312
|
+
|
|
313
|
+
# Add some data
|
|
314
|
+
./invoke-transparency-middleware.sh add-filter \
|
|
315
|
+
--task-id "$TEST_TASK_ID" \
|
|
316
|
+
--name "Test Filter" \
|
|
317
|
+
--pattern "test" || test_result=1
|
|
318
|
+
|
|
319
|
+
# Shutdown with flush
|
|
320
|
+
./invoke-transparency-middleware.sh stop \
|
|
321
|
+
--task-id "$TEST_TASK_ID" \
|
|
322
|
+
--flush || test_result=1
|
|
323
|
+
|
|
324
|
+
# Verify Redis keys cleaned up
|
|
325
|
+
local keys=$(redis-cli keys "transparency:*$TEST_TASK_ID*")
|
|
326
|
+
[[ -z "$keys" ]] || test_result=1
|
|
327
|
+
|
|
328
|
+
# Test shutdown without flush
|
|
329
|
+
./invoke-transparency-middleware.sh init \
|
|
330
|
+
--task-id "${TEST_TASK_ID}-noflush" \
|
|
331
|
+
--level minimal || test_result=1
|
|
332
|
+
|
|
333
|
+
./invoke-transparency-middleware.sh stop \
|
|
334
|
+
--task-id "${TEST_TASK_ID}-noflush" || test_result=1
|
|
335
|
+
|
|
336
|
+
log_test_result "$test_result" "Graceful Shutdown Test"
|
|
337
|
+
return "$test_result"
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
# Main Test Execution
|
|
341
|
+
main() {
|
|
342
|
+
echo "Starting Transparency Middleware Test Suite" | tee -a "$LOG_FILE"
|
|
343
|
+
|
|
344
|
+
test_initialization
|
|
345
|
+
test_message_observation
|
|
346
|
+
test_transparency_levels
|
|
347
|
+
test_filter_management
|
|
348
|
+
test_performance_metrics
|
|
349
|
+
test_redis_integration
|
|
350
|
+
test_multi_agent
|
|
351
|
+
test_performance_overhead
|
|
352
|
+
test_error_handling
|
|
353
|
+
test_graceful_shutdown
|
|
354
|
+
|
|
355
|
+
# Final Report
|
|
356
|
+
echo "Test Results: $PASSED_TESTS/$TOTAL_TESTS passed" | tee -a "$LOG_FILE"
|
|
357
|
+
|
|
358
|
+
if [ "$PASSED_TESTS" -eq "$TOTAL_TESTS" ]; then
|
|
359
|
+
redis-cli publish "swarm:sprint-1.2:devops" "test_suite_passed:1.0"
|
|
360
|
+
exit 0
|
|
361
|
+
else
|
|
362
|
+
redis-cli publish "swarm:sprint-1.2:devops" "test_suite_failed:0.0"
|
|
363
|
+
exit 1
|
|
364
|
+
fi
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
# Execute main function
|
|
368
368
|
main
|