claude-flow-novice 2.14.3 → 2.14.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/CFN_LOOP_TASK_MODE.md +4 -47
- package/.claude/commands/seo/SEO_TASK_MODE.md +892 -0
- package/.claude/commands/seo/seo-blog.md +428 -0
- package/.claude/commands/seo/seo-landing.md +91 -0
- package/.claude/commands/seo/seo-product.md +104 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -276
- package/claude-assets/agents/cfn-dev-team/coordinators/epic-creator.md +120 -0
- package/claude-assets/agents/cfn-seo-team/AGENT_CREATION_REPORT.md +481 -0
- package/claude-assets/agents/cfn-seo-team/DELEGATION_MATRIX.md +371 -0
- package/claude-assets/agents/cfn-seo-team/HUMANIZER_PROMPTS.md +536 -0
- package/claude-assets/agents/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +642 -0
- package/claude-assets/agents/cfn-seo-team/cfn-seo-coordinator.md +414 -0
- package/claude-assets/agents/cfn-seo-team/competitive-seo-analyst.md +423 -0
- package/claude-assets/agents/cfn-seo-team/content-atomization-specialist.md +580 -0
- package/claude-assets/agents/cfn-seo-team/content-seo-strategist.md +245 -0
- package/claude-assets/agents/cfn-seo-team/eeat-content-auditor.md +389 -0
- package/claude-assets/agents/cfn-seo-team/geo-optimization-expert.md +269 -0
- package/claude-assets/agents/cfn-seo-team/link-building-specialist.md +291 -0
- package/claude-assets/agents/cfn-seo-team/local-seo-optimizer.md +333 -0
- package/claude-assets/agents/cfn-seo-team/programmatic-seo-engineer.md +244 -0
- package/claude-assets/agents/cfn-seo-team/schema-markup-engineer.md +430 -0
- package/claude-assets/agents/cfn-seo-team/seo-analytics-specialist.md +376 -0
- package/claude-assets/agents/cfn-seo-team/seo-validators/accessibility-validator.md +565 -0
- package/claude-assets/agents/cfn-seo-team/seo-validators/audience-validator.md +484 -0
- package/claude-assets/agents/cfn-seo-team/seo-validators/branding-validator.md +452 -0
- package/claude-assets/agents/cfn-seo-team/seo-validators/humanizer-validator.md +333 -0
- package/claude-assets/agents/cfn-seo-team/technical-seo-specialist.md +228 -0
- package/claude-assets/commands/CFN_LOOP_TASK_MODE.md +4 -47
- package/claude-assets/commands/seo/SEO_TASK_MODE.md +892 -0
- package/claude-assets/commands/seo/seo-blog.md +428 -0
- package/claude-assets/commands/seo/seo-landing.md +91 -0
- package/claude-assets/commands/seo/seo-product.md +104 -0
- package/claude-assets/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -276
- package/claude-assets/skills/seo-orchestration/SKILL.md +292 -0
- package/claude-assets/skills/seo-orchestration/orchestrate-seo.sh +566 -0
- package/claude-assets/skills/seo-orchestration/orchestrate-seo.sh.backup +755 -0
- package/claude-assets/skills/seo-orchestration/validate-consensus.sh +270 -0
- package/dist/agents/agent-loader.js +165 -146
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/cli/agent-prompt-builder.js +25 -0
- package/dist/cli/agent-prompt-builder.js.map +1 -1
- package/package.json +1 -1
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +0 -57
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +0 -267
- package/.claude/skills/cfn-redis-coordination/LOGGING.md +0 -260
- package/.claude/skills/cfn-redis-coordination/README.md +0 -65
- package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +0 -25
- package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +0 -164
- package/.claude/skills/cfn-redis-coordination/SKILL.md +0 -720
- package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +0 -129
- package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +0 -320
- package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +0 -249
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +0 -148
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +0 -163
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +0 -138
- package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +0 -81
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +0 -45
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +0 -68
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +0 -56
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +0 -81
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +0 -57
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +0 -187
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +0 -160
- package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +0 -97
- package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +0 -97
- package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +0 -59
- package/.claude/skills/cfn-redis-coordination/examples/README.md +0 -73
- package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +0 -352
- package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +0 -127
- package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +0 -171
- package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +0 -227
- package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +0 -239
- package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +0 -258
- package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +0 -177
- package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +0 -137
- package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +0 -106
- package/.claude/skills/cfn-redis-coordination/heartbeat.sh +0 -126
- package/.claude/skills/cfn-redis-coordination/init-swarm.sh +0 -148
- package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +0 -220
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +0 -283
- package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +0 -147
- package/.claude/skills/cfn-redis-coordination/log-event.sh +0 -109
- package/.claude/skills/cfn-redis-coordination/metrics-export.sh +0 -674
- package/.claude/skills/cfn-redis-coordination/metrics-schema.json +0 -66
- package/.claude/skills/cfn-redis-coordination/metrics-storage.md +0 -31
- package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +0 -391
- package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +0 -101
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +0 -141
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +0 -31
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +0 -75
- package/.claude/skills/cfn-redis-coordination/priority_wake.py +0 -134
- package/.claude/skills/cfn-redis-coordination/query-dlq.sh +0 -162
- package/.claude/skills/cfn-redis-coordination/query-logs.sh +0 -103
- package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +0 -619
- package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +0 -58
- package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +0 -371
- package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +0 -252
- package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +0 -165
- package/.claude/skills/cfn-redis-coordination/signal.sh +0 -38
- package/.claude/skills/cfn-redis-coordination/store-context.sh +0 -86
- package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +0 -123
- package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +0 -354
- package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +0 -513
- package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +0 -15
- package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +0 -102
- package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +0 -99
- package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +0 -170
- package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +0 -82
- package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +0 -92
- package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +0 -4
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +0 -124
- package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +0 -166
- package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +0 -54
- package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +0 -49
- package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +0 -76
- package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +0 -492
- package/claude-assets/skills/cfn-redis-coordination/HEARTBEAT.md +0 -57
- package/claude-assets/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +0 -267
- package/claude-assets/skills/cfn-redis-coordination/LOGGING.md +0 -260
- package/claude-assets/skills/cfn-redis-coordination/README.md +0 -65
- package/claude-assets/skills/cfn-redis-coordination/SECURITY_REVIEW.md +0 -25
- package/claude-assets/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +0 -164
- package/claude-assets/skills/cfn-redis-coordination/SKILL.md +0 -720
- package/claude-assets/skills/cfn-redis-coordination/demos/test-dlq.sh +0 -129
- package/claude-assets/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +0 -320
- package/claude-assets/skills/cfn-redis-coordination/demos/test-orchestrator.sh +0 -249
- package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +0 -148
- package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +0 -163
- package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake.sh +0 -138
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quick-fix.sh +0 -81
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +0 -45
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +0 -68
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +0 -56
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +0 -81
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum.sh +0 -57
- package/claude-assets/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +0 -187
- package/claude-assets/skills/cfn-redis-coordination/demos/test-shutdown.sh +0 -160
- package/claude-assets/skills/cfn-redis-coordination/demos/test-utils-unix.sh +0 -97
- package/claude-assets/skills/cfn-redis-coordination/demos/test-utils.sh +0 -97
- package/claude-assets/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +0 -59
- package/claude-assets/skills/cfn-redis-coordination/examples/README.md +0 -73
- package/claude-assets/skills/cfn-redis-coordination/examples/grafana-dashboard.json +0 -352
- package/claude-assets/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +0 -127
- package/claude-assets/skills/cfn-redis-coordination/examples/mesh-pattern.sh +0 -171
- package/claude-assets/skills/cfn-redis-coordination/examples/timeout-handling.sh +0 -227
- package/claude-assets/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +0 -239
- package/claude-assets/skills/cfn-redis-coordination/execute-product-owner-decision.sh +0 -258
- package/claude-assets/skills/cfn-redis-coordination/get-agent-timeout.sh +0 -177
- package/claude-assets/skills/cfn-redis-coordination/heartbeat-functions.sh +0 -137
- package/claude-assets/skills/cfn-redis-coordination/heartbeat-protocol.md +0 -106
- package/claude-assets/skills/cfn-redis-coordination/heartbeat.sh +0 -126
- package/claude-assets/skills/cfn-redis-coordination/init-swarm.sh +0 -148
- package/claude-assets/skills/cfn-redis-coordination/invoke-redis-pattern.sh +0 -220
- package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +0 -283
- package/claude-assets/skills/cfn-redis-coordination/list-active-swarms.sh +0 -147
- package/claude-assets/skills/cfn-redis-coordination/log-event.sh +0 -109
- package/claude-assets/skills/cfn-redis-coordination/metrics-export.sh +0 -674
- package/claude-assets/skills/cfn-redis-coordination/metrics-schema.json +0 -66
- package/claude-assets/skills/cfn-redis-coordination/metrics-storage.md +0 -31
- package/claude-assets/skills/cfn-redis-coordination/monitor-cfn-violations.sh +0 -391
- package/claude-assets/skills/cfn-redis-coordination/monitor-heartbeats.sh +0 -101
- package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +0 -141
- package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +0 -31
- package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/claude-assets/skills/cfn-redis-coordination/priority-wake-mechanism.md +0 -75
- package/claude-assets/skills/cfn-redis-coordination/priority_wake.py +0 -134
- package/claude-assets/skills/cfn-redis-coordination/query-dlq.sh +0 -162
- package/claude-assets/skills/cfn-redis-coordination/query-logs.sh +0 -103
- package/claude-assets/skills/cfn-redis-coordination/redis-pattern.sh +0 -619
- package/claude-assets/skills/cfn-redis-coordination/retrieve-context.sh +0 -58
- package/claude-assets/skills/cfn-redis-coordination/select-specialist-agent.sh +0 -371
- package/claude-assets/skills/cfn-redis-coordination/semantic-match-tfidf.py +0 -252
- package/claude-assets/skills/cfn-redis-coordination/send-heartbeat.sh +0 -165
- package/claude-assets/skills/cfn-redis-coordination/signal.sh +0 -38
- package/claude-assets/skills/cfn-redis-coordination/store-context.sh +0 -86
- package/claude-assets/skills/cfn-redis-coordination/store-epic-context.sh +0 -123
- package/claude-assets/skills/cfn-redis-coordination/test-context-injection.sh +0 -354
- package/claude-assets/skills/cfn-redis-coordination/test-timeout-enforcement.sh +0 -513
- package/claude-assets/skills/cfn-redis-coordination/tests/convert-line-endings.sh +0 -15
- package/claude-assets/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +0 -102
- package/claude-assets/skills/cfn-redis-coordination/tests/edge-cases-test.sh +0 -99
- package/claude-assets/skills/cfn-redis-coordination/tests/integration-test.sh +0 -170
- package/claude-assets/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +0 -82
- package/claude-assets/skills/cfn-redis-coordination/tests/run-test-suite.sh +0 -92
- package/claude-assets/skills/cfn-redis-coordination/tests/run-tests.sh +0 -4
- package/claude-assets/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
- package/claude-assets/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +0 -124
- package/claude-assets/skills/cfn-redis-coordination/tests/test-primitives.sh +0 -166
- package/claude-assets/skills/cfn-redis-coordination/tests/test-utils.sh +0 -54
- package/claude-assets/skills/cfn-redis-coordination/tests/test_utils.sh +0 -49
- package/claude-assets/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +0 -76
- package/claude-assets/skills/cfn-redis-coordination/validate-parameters.sh +0 -492
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Redis Coordination Skill - Agent Heartbeat Sender
|
|
3
|
-
# Version: 2.0.0
|
|
4
|
-
# Last Updated: 2025-10-20
|
|
5
|
-
#
|
|
6
|
-
# Usage:
|
|
7
|
-
# # One-shot heartbeat (original behavior)
|
|
8
|
-
# ./send-heartbeat.sh --task-id <id> --agent-id <id>
|
|
9
|
-
#
|
|
10
|
-
# # Start continuous heartbeat loop
|
|
11
|
-
# ./send-heartbeat.sh start --task-id <id> --agent-id <id> --interval 30 &
|
|
12
|
-
# HEARTBEAT_PID=$!
|
|
13
|
-
#
|
|
14
|
-
# # Stop heartbeat loop
|
|
15
|
-
# ./send-heartbeat.sh stop --task-id <id> --agent-id <id> --pid $HEARTBEAT_PID
|
|
16
|
-
|
|
17
|
-
# Strict error handling
|
|
18
|
-
set -euo pipefail
|
|
19
|
-
|
|
20
|
-
# Default values
|
|
21
|
-
ACTION=""
|
|
22
|
-
TASK_ID=""
|
|
23
|
-
AGENT_ID=""
|
|
24
|
-
STATUS="active"
|
|
25
|
-
TTL=60
|
|
26
|
-
INTERVAL=30 # For continuous mode
|
|
27
|
-
HEARTBEAT_PID=""
|
|
28
|
-
DETAILS='{}'
|
|
29
|
-
|
|
30
|
-
# Parse command-line arguments
|
|
31
|
-
while [[ $# -gt 0 ]]; do
|
|
32
|
-
case "$1" in
|
|
33
|
-
start|stop|once)
|
|
34
|
-
ACTION="$1"
|
|
35
|
-
shift
|
|
36
|
-
;;
|
|
37
|
-
--task-id)
|
|
38
|
-
TASK_ID="$2"
|
|
39
|
-
shift 2
|
|
40
|
-
;;
|
|
41
|
-
--agent-id)
|
|
42
|
-
AGENT_ID="$2"
|
|
43
|
-
shift 2
|
|
44
|
-
;;
|
|
45
|
-
--status)
|
|
46
|
-
STATUS="$2"
|
|
47
|
-
shift 2
|
|
48
|
-
;;
|
|
49
|
-
--ttl)
|
|
50
|
-
TTL="$2"
|
|
51
|
-
shift 2
|
|
52
|
-
;;
|
|
53
|
-
--interval)
|
|
54
|
-
INTERVAL="$2"
|
|
55
|
-
shift 2
|
|
56
|
-
;;
|
|
57
|
-
--pid)
|
|
58
|
-
HEARTBEAT_PID="$2"
|
|
59
|
-
shift 2
|
|
60
|
-
;;
|
|
61
|
-
--details)
|
|
62
|
-
DETAILS="$2"
|
|
63
|
-
shift 2
|
|
64
|
-
;;
|
|
65
|
-
*)
|
|
66
|
-
echo "Unknown parameter: $1"
|
|
67
|
-
exit 1
|
|
68
|
-
;;
|
|
69
|
-
esac
|
|
70
|
-
done
|
|
71
|
-
|
|
72
|
-
# Validate required parameters
|
|
73
|
-
if [[ -z "$TASK_ID" || -z "$AGENT_ID" ]]; then
|
|
74
|
-
echo "Error: task-id and agent-id are required"
|
|
75
|
-
exit 1
|
|
76
|
-
fi
|
|
77
|
-
|
|
78
|
-
# If no action specified, default to one-shot (backward compatibility)
|
|
79
|
-
if [ -z "$ACTION" ]; then
|
|
80
|
-
ACTION="once"
|
|
81
|
-
fi
|
|
82
|
-
|
|
83
|
-
HEARTBEAT_KEY="swarm:${TASK_ID}:${AGENT_ID}:heartbeat"
|
|
84
|
-
MARKER_FILE="/tmp/heartbeat-${TASK_ID}-${AGENT_ID}.active"
|
|
85
|
-
|
|
86
|
-
##############################################################################
|
|
87
|
-
# Send single heartbeat
|
|
88
|
-
##############################################################################
|
|
89
|
-
function send_heartbeat() {
|
|
90
|
-
# Generate heartbeat payload
|
|
91
|
-
HEARTBEAT_PAYLOAD=$(jq -n \
|
|
92
|
-
--arg timestamp "$(date +%s)" \
|
|
93
|
-
--arg status "$STATUS" \
|
|
94
|
-
--arg task_id "$TASK_ID" \
|
|
95
|
-
--arg agent_id "$AGENT_ID" \
|
|
96
|
-
--argjson details "$DETAILS" \
|
|
97
|
-
'{
|
|
98
|
-
"timestamp": $timestamp,
|
|
99
|
-
"status": $status,
|
|
100
|
-
"task_id": $task_id,
|
|
101
|
-
"agent_id": $agent_id,
|
|
102
|
-
"details": $details
|
|
103
|
-
}')
|
|
104
|
-
|
|
105
|
-
# Send heartbeat via Redis with auto-expiration
|
|
106
|
-
redis-cli setex "$HEARTBEAT_KEY" "$TTL" "$HEARTBEAT_PAYLOAD" >/dev/null
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
##############################################################################
|
|
110
|
-
# Start continuous heartbeat loop
|
|
111
|
-
##############################################################################
|
|
112
|
-
function start_heartbeat() {
|
|
113
|
-
# Create marker file
|
|
114
|
-
touch "$MARKER_FILE"
|
|
115
|
-
|
|
116
|
-
# Background heartbeat loop
|
|
117
|
-
(
|
|
118
|
-
while [ -f "$MARKER_FILE" ]; do
|
|
119
|
-
send_heartbeat
|
|
120
|
-
sleep "$INTERVAL"
|
|
121
|
-
done
|
|
122
|
-
) &
|
|
123
|
-
|
|
124
|
-
echo "✓ Heartbeat started for $AGENT_ID (PID: $!, interval: ${INTERVAL}s)" >&2
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
##############################################################################
|
|
128
|
-
# Stop heartbeat loop
|
|
129
|
-
##############################################################################
|
|
130
|
-
function stop_heartbeat() {
|
|
131
|
-
# Remove marker file to stop loop
|
|
132
|
-
rm -f "$MARKER_FILE"
|
|
133
|
-
|
|
134
|
-
# Kill heartbeat process if PID provided
|
|
135
|
-
if [ -n "$HEARTBEAT_PID" ] && kill -0 "$HEARTBEAT_PID" 2>/dev/null; then
|
|
136
|
-
kill "$HEARTBEAT_PID" 2>/dev/null || true
|
|
137
|
-
fi
|
|
138
|
-
|
|
139
|
-
# Clean up heartbeat key
|
|
140
|
-
redis-cli DEL "$HEARTBEAT_KEY" >/dev/null
|
|
141
|
-
|
|
142
|
-
echo "✓ Heartbeat stopped for $AGENT_ID" >&2
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
##############################################################################
|
|
146
|
-
# Main
|
|
147
|
-
##############################################################################
|
|
148
|
-
case "$ACTION" in
|
|
149
|
-
start)
|
|
150
|
-
start_heartbeat
|
|
151
|
-
;;
|
|
152
|
-
stop)
|
|
153
|
-
stop_heartbeat
|
|
154
|
-
;;
|
|
155
|
-
once)
|
|
156
|
-
send_heartbeat
|
|
157
|
-
echo "✓ Heartbeat sent for $AGENT_ID" >&2
|
|
158
|
-
;;
|
|
159
|
-
*)
|
|
160
|
-
echo "Error: Invalid action: $ACTION"
|
|
161
|
-
exit 1
|
|
162
|
-
;;
|
|
163
|
-
esac
|
|
164
|
-
|
|
165
|
-
exit 0
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# Parse arguments
|
|
4
|
-
while [[ $# -gt 0 ]]; do
|
|
5
|
-
case "$1" in
|
|
6
|
-
--key)
|
|
7
|
-
key="$2"
|
|
8
|
-
shift 2
|
|
9
|
-
;;
|
|
10
|
-
--value)
|
|
11
|
-
value="$2"
|
|
12
|
-
shift 2
|
|
13
|
-
;;
|
|
14
|
-
--ttl)
|
|
15
|
-
ttl="$2"
|
|
16
|
-
shift 2
|
|
17
|
-
;;
|
|
18
|
-
*)
|
|
19
|
-
echo "Unknown argument: $1"
|
|
20
|
-
exit 1
|
|
21
|
-
;;
|
|
22
|
-
esac
|
|
23
|
-
done
|
|
24
|
-
|
|
25
|
-
# Validate required arguments
|
|
26
|
-
if [[ -z "$key" || -z "$value" ]]; then
|
|
27
|
-
echo "Error: Both key and value are required"
|
|
28
|
-
exit 1
|
|
29
|
-
fi
|
|
30
|
-
|
|
31
|
-
# Default TTL to 3600 if not provided
|
|
32
|
-
ttl=${ttl:-3600}
|
|
33
|
-
|
|
34
|
-
# Store signal in Redis with specified TTL
|
|
35
|
-
redis-cli setex "$key" "$ttl" "$value"
|
|
36
|
-
|
|
37
|
-
# Exit successfully
|
|
38
|
-
exit 0
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# Redis Context Storage Primitive
|
|
4
|
-
# Updated interface to match orchestrator expectations
|
|
5
|
-
# Supports both legacy (--key --context) and new (--task-id --key --value --namespace) interfaces
|
|
6
|
-
|
|
7
|
-
# Initialize variables
|
|
8
|
-
task_id=""
|
|
9
|
-
key=""
|
|
10
|
-
value=""
|
|
11
|
-
namespace="swarm"
|
|
12
|
-
ttl=3600
|
|
13
|
-
append_mode=false
|
|
14
|
-
|
|
15
|
-
# Parse arguments
|
|
16
|
-
while [[ $# -gt 0 ]]; do
|
|
17
|
-
case "$1" in
|
|
18
|
-
--task-id)
|
|
19
|
-
task_id="$2"
|
|
20
|
-
shift 2
|
|
21
|
-
;;
|
|
22
|
-
--key)
|
|
23
|
-
key="$2"
|
|
24
|
-
shift 2
|
|
25
|
-
;;
|
|
26
|
-
--value)
|
|
27
|
-
value="$2"
|
|
28
|
-
shift 2
|
|
29
|
-
;;
|
|
30
|
-
--context)
|
|
31
|
-
# Legacy support: --context is alias for --value
|
|
32
|
-
value="$2"
|
|
33
|
-
shift 2
|
|
34
|
-
;;
|
|
35
|
-
--namespace)
|
|
36
|
-
namespace="$2"
|
|
37
|
-
shift 2
|
|
38
|
-
;;
|
|
39
|
-
--ttl)
|
|
40
|
-
ttl="$2"
|
|
41
|
-
shift 2
|
|
42
|
-
;;
|
|
43
|
-
--append)
|
|
44
|
-
append_mode=true
|
|
45
|
-
shift
|
|
46
|
-
;;
|
|
47
|
-
*)
|
|
48
|
-
echo "Unknown argument: $1" >&2
|
|
49
|
-
exit 1
|
|
50
|
-
;;
|
|
51
|
-
esac
|
|
52
|
-
done
|
|
53
|
-
|
|
54
|
-
# Construct Redis key based on interface mode
|
|
55
|
-
if [[ -n "$task_id" ]]; then
|
|
56
|
-
# New interface: {namespace}:{task_id}:{key}
|
|
57
|
-
redis_key="${namespace}:${task_id}:${key}"
|
|
58
|
-
else
|
|
59
|
-
# Legacy interface: key is used directly
|
|
60
|
-
redis_key="$key"
|
|
61
|
-
fi
|
|
62
|
-
|
|
63
|
-
# Validate required arguments
|
|
64
|
-
if [[ -z "$redis_key" || -z "$value" ]]; then
|
|
65
|
-
echo "Error: Both key and value are required" >&2
|
|
66
|
-
echo "Usage: $0 --task-id <id> --key <key> --value <data> [--namespace <ns>] [--ttl <seconds>] [--append]" >&2
|
|
67
|
-
echo " or: $0 --key <full-key> --context <data> [--ttl <seconds>]" >&2
|
|
68
|
-
exit 1
|
|
69
|
-
fi
|
|
70
|
-
|
|
71
|
-
# Handle append mode
|
|
72
|
-
if [ "$append_mode" = true ]; then
|
|
73
|
-
# Get existing value
|
|
74
|
-
existing=$(redis-cli get "$redis_key" 2>/dev/null)
|
|
75
|
-
|
|
76
|
-
# Append new value (comma-separated)
|
|
77
|
-
if [[ -n "$existing" && "$existing" != "(nil)" ]]; then
|
|
78
|
-
value="${existing},${value}"
|
|
79
|
-
fi
|
|
80
|
-
fi
|
|
81
|
-
|
|
82
|
-
# Store in Redis with specified TTL
|
|
83
|
-
redis-cli setex "$redis_key" "$ttl" "$value" >/dev/null
|
|
84
|
-
|
|
85
|
-
# Exit successfully
|
|
86
|
-
exit 0
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
##############################################################################
|
|
4
|
-
# Store Epic Context in Redis
|
|
5
|
-
# Stores epic-level context for CLI-spawned agents to access
|
|
6
|
-
#
|
|
7
|
-
# Usage:
|
|
8
|
-
# ./store-epic-context.sh --task-id <id> \
|
|
9
|
-
# --epic-context <json> \
|
|
10
|
-
# [--phase-context <json>] \
|
|
11
|
-
# [--success-criteria <json>] \
|
|
12
|
-
# [--ttl <seconds>]
|
|
13
|
-
#
|
|
14
|
-
# Example:
|
|
15
|
-
# ./store-epic-context.sh --task-id "epic-auth-123" \
|
|
16
|
-
# --epic-context '{
|
|
17
|
-
# "epicGoal": "Build authentication system",
|
|
18
|
-
# "inScope": ["JWT auth", "RBAC", "Session management"],
|
|
19
|
-
# "outOfScope": ["OAuth", "MFA", "Biometrics"],
|
|
20
|
-
# "phases": ["assessment", "implementation", "validation"]
|
|
21
|
-
# }' \
|
|
22
|
-
# --phase-context '{
|
|
23
|
-
# "currentPhase": "assessment",
|
|
24
|
-
# "dependencies": [],
|
|
25
|
-
# "deliverables": ["Requirements doc", "Architecture design"]
|
|
26
|
-
# }' \
|
|
27
|
-
# --success-criteria '{
|
|
28
|
-
# "acceptanceCriteria": [
|
|
29
|
-
# "Core functionality implemented",
|
|
30
|
-
# "Tests pass >80% coverage",
|
|
31
|
-
# "Security review complete"
|
|
32
|
-
# ],
|
|
33
|
-
# "gateThreshold": 0.75,
|
|
34
|
-
# "consensusThreshold": 0.90
|
|
35
|
-
# }' \
|
|
36
|
-
# --ttl 86400
|
|
37
|
-
#
|
|
38
|
-
# Redis Keys Created:
|
|
39
|
-
# - swarm:<task-id>:epic-context
|
|
40
|
-
# - swarm:<task-id>:phase-context
|
|
41
|
-
# - swarm:<task-id>:success-criteria
|
|
42
|
-
#
|
|
43
|
-
# These keys are automatically read by cfn-spawn and injected as environment
|
|
44
|
-
# variables into spawned agents:
|
|
45
|
-
# - EPIC_CONTEXT
|
|
46
|
-
# - PHASE_CONTEXT
|
|
47
|
-
# - SUCCESS_CRITERIA
|
|
48
|
-
##############################################################################
|
|
49
|
-
|
|
50
|
-
set -euo pipefail
|
|
51
|
-
|
|
52
|
-
# Configuration
|
|
53
|
-
TASK_ID=""
|
|
54
|
-
EPIC_CONTEXT=""
|
|
55
|
-
PHASE_CONTEXT=""
|
|
56
|
-
SUCCESS_CRITERIA=""
|
|
57
|
-
TTL=86400 # 24 hours default
|
|
58
|
-
|
|
59
|
-
# Parse arguments
|
|
60
|
-
while [[ $# -gt 0 ]]; do
|
|
61
|
-
case $1 in
|
|
62
|
-
--task-id)
|
|
63
|
-
TASK_ID="$2"
|
|
64
|
-
shift 2
|
|
65
|
-
;;
|
|
66
|
-
--epic-context)
|
|
67
|
-
EPIC_CONTEXT="$2"
|
|
68
|
-
shift 2
|
|
69
|
-
;;
|
|
70
|
-
--phase-context)
|
|
71
|
-
PHASE_CONTEXT="$2"
|
|
72
|
-
shift 2
|
|
73
|
-
;;
|
|
74
|
-
--success-criteria)
|
|
75
|
-
SUCCESS_CRITERIA="$2"
|
|
76
|
-
shift 2
|
|
77
|
-
;;
|
|
78
|
-
--ttl)
|
|
79
|
-
TTL="$2"
|
|
80
|
-
shift 2
|
|
81
|
-
;;
|
|
82
|
-
*)
|
|
83
|
-
echo "Unknown option: $1"
|
|
84
|
-
exit 1
|
|
85
|
-
;;
|
|
86
|
-
esac
|
|
87
|
-
done
|
|
88
|
-
|
|
89
|
-
# Validation
|
|
90
|
-
if [ -z "$TASK_ID" ]; then
|
|
91
|
-
echo "Error: --task-id is required"
|
|
92
|
-
exit 1
|
|
93
|
-
fi
|
|
94
|
-
|
|
95
|
-
if [ -z "$EPIC_CONTEXT" ]; then
|
|
96
|
-
echo "Error: --epic-context is required"
|
|
97
|
-
exit 1
|
|
98
|
-
fi
|
|
99
|
-
|
|
100
|
-
# Store epic context
|
|
101
|
-
echo "Storing epic context for task: $TASK_ID"
|
|
102
|
-
|
|
103
|
-
if [ -n "$EPIC_CONTEXT" ]; then
|
|
104
|
-
redis-cli set "swarm:${TASK_ID}:epic-context" "$EPIC_CONTEXT" EX "$TTL" > /dev/null
|
|
105
|
-
echo " ✓ Epic context stored (TTL: ${TTL}s)"
|
|
106
|
-
fi
|
|
107
|
-
|
|
108
|
-
if [ -n "$PHASE_CONTEXT" ]; then
|
|
109
|
-
redis-cli set "swarm:${TASK_ID}:phase-context" "$PHASE_CONTEXT" EX "$TTL" > /dev/null
|
|
110
|
-
echo " ✓ Phase context stored (TTL: ${TTL}s)"
|
|
111
|
-
fi
|
|
112
|
-
|
|
113
|
-
if [ -n "$SUCCESS_CRITERIA" ]; then
|
|
114
|
-
redis-cli set "swarm:${TASK_ID}:success-criteria" "$SUCCESS_CRITERIA" EX "$TTL" > /dev/null
|
|
115
|
-
echo " ✓ Success criteria stored (TTL: ${TTL}s)"
|
|
116
|
-
fi
|
|
117
|
-
|
|
118
|
-
echo "✅ Context storage complete"
|
|
119
|
-
echo ""
|
|
120
|
-
echo "CLI-spawned agents will automatically receive this context via environment variables:"
|
|
121
|
-
echo " - EPIC_CONTEXT"
|
|
122
|
-
echo " - PHASE_CONTEXT"
|
|
123
|
-
echo " - SUCCESS_CRITERIA"
|