claude-flow-novice 2.9.0 → 2.10.0

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 (353) hide show
  1. package/.claude/agents/cfn-dev-team/CLAUDE.md +1086 -0
  2. package/.claude/agents/cfn-dev-team/README.md +116 -0
  3. package/.claude/agents/cfn-dev-team/architecture/api-designer-persona.md +149 -0
  4. package/.claude/agents/cfn-dev-team/architecture/base-template-generator.md +196 -0
  5. package/.claude/agents/cfn-dev-team/architecture/goal-planner.md +183 -0
  6. package/.claude/agents/cfn-dev-team/architecture/planner.md +182 -0
  7. package/.claude/agents/cfn-dev-team/architecture/system-architect.md +162 -0
  8. package/.claude/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +540 -0
  9. package/.claude/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +20 -14
  10. package/.claude/agents/cfn-dev-team/coordinators/consensus-builder.md +167 -0
  11. package/.claude/agents/cfn-dev-team/dev-ops/devops-engineer.md +148 -0
  12. package/.claude/agents/cfn-dev-team/dev-ops/github-commit-agent.md +118 -0
  13. package/.claude/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +540 -0
  14. package/.claude/agents/cfn-dev-team/developers/backend-dev.md +20 -0
  15. package/.claude/agents/cfn-dev-team/developers/data/data-engineer.md +585 -0
  16. package/.claude/agents/cfn-dev-team/developers/database/database-architect.md +276 -0
  17. package/.claude/agents/cfn-dev-team/developers/dev-backend-api.md +147 -0
  18. package/.claude/agents/cfn-dev-team/developers/frontend/mobile-dev.md +218 -0
  19. package/.claude/agents/cfn-dev-team/developers/{react-frontend-engineer.md → frontend/react-frontend-engineer.md} +53 -5
  20. package/.claude/agents/cfn-dev-team/developers/frontend/spec-mobile-react-native.md +199 -0
  21. package/.claude/agents/cfn-dev-team/developers/graphql-specialist.md +615 -0
  22. package/.claude/agents/cfn-dev-team/developers/rust-developer.md +174 -0
  23. package/.claude/agents/cfn-dev-team/documentation/README-VALIDATION.md +243 -0
  24. package/.claude/agents/cfn-dev-team/documentation/agent-type-guidelines.md +465 -0
  25. package/.claude/agents/cfn-dev-team/documentation/api-docs.md +103 -0
  26. package/.claude/agents/cfn-dev-team/documentation/docs-api-openapi.md +98 -0
  27. package/.claude/agents/cfn-dev-team/documentation/pseudocode.md +159 -0
  28. package/.claude/agents/cfn-dev-team/documentation/specification.md +157 -0
  29. package/.claude/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +109 -0
  30. package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/cto-agent.md +8 -6
  31. package/.claude/agents/cfn-dev-team/product-owners/power-user-persona.md +190 -0
  32. package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner.md +85 -59
  33. package/.claude/agents/cfn-dev-team/reviewers/quality/analyze-code-quality.md +141 -0
  34. package/.claude/agents/cfn-dev-team/reviewers/quality/code-analyzer.md +200 -0
  35. package/.claude/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +321 -0
  36. package/.claude/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +238 -0
  37. package/.claude/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +101 -0
  38. package/.claude/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +375 -0
  39. package/.claude/agents/cfn-dev-team/reviewers/quality/security-specialist.md +193 -0
  40. package/.claude/agents/cfn-dev-team/reviewers/reviewer.md +39 -0
  41. package/.claude/agents/cfn-dev-team/testers/interaction-tester.md +31 -0
  42. package/.claude/agents/cfn-dev-team/testers/load-testing-specialist.md +469 -0
  43. package/.claude/agents/cfn-dev-team/testers/playwright-tester.md +24 -0
  44. package/.claude/agents/cfn-dev-team/testers/tester.md +20 -0
  45. package/.claude/agents/cfn-dev-team/utility/agent-builder.md +151 -0
  46. package/.claude/agents/cfn-dev-team/utility/analyst.md +178 -0
  47. package/.claude/agents/cfn-dev-team/utility/claude-code-expert.md +1043 -0
  48. package/.claude/agents/cfn-dev-team/utility/code-booster.md +139 -0
  49. package/.claude/agents/cfn-dev-team/utility/context-curator.md +99 -0
  50. package/.claude/agents/cfn-dev-team/{developers → utility}/researcher.md +6 -4
  51. package/.claude/commands/cfn/CFN_LOOP_FRONTEND.md +741 -0
  52. package/.claude/commands/cfn/CFN_LOOP_TASK_MODE.md +353 -0
  53. package/.claude/commands/cfn/cfn-loop-frontend.md +555 -0
  54. package/.claude/commands/cfn/cfn-loop.md +168 -7
  55. package/{CFN-CLAUDE.md → .claude/root-claude-distribute/CFN-CLAUDE.md} +23 -3
  56. package/.claude/skills/cfn-ace-system/SKILL.md +364 -0
  57. package/.claude/skills/cfn-ace-system/add-bullet.sh +145 -0
  58. package/.claude/skills/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +56 -0
  59. package/.claude/skills/cfn-ace-system/classify-task.sh +18 -0
  60. package/.claude/skills/cfn-ace-system/export-ace-metrics.sh +48 -0
  61. package/.claude/skills/cfn-ace-system/extract-tags.sh +385 -0
  62. package/.claude/skills/cfn-ace-system/format-negative-context.sh +180 -0
  63. package/.claude/skills/cfn-ace-system/init-indexes.sql +160 -0
  64. package/.claude/skills/cfn-ace-system/invoke-context-curate.sh +192 -0
  65. package/.claude/skills/cfn-ace-system/invoke-context-inject.sh +361 -0
  66. package/.claude/skills/cfn-ace-system/invoke-context-query.sh +139 -0
  67. package/.claude/skills/cfn-ace-system/invoke-context-reflect.sh +343 -0
  68. package/.claude/skills/cfn-ace-system/invoke-context-stats.sh +227 -0
  69. package/.claude/skills/cfn-ace-system/log-merge.sh +67 -0
  70. package/.claude/skills/cfn-ace-system/monitor-injection-performance.sh +138 -0
  71. package/.claude/skills/cfn-ace-system/optimize-injection-pipeline.sh +169 -0
  72. package/.claude/skills/cfn-ace-system/query-anti-patterns.sh +276 -0
  73. package/.claude/skills/cfn-ace-system/query-contexts.sh +150 -0
  74. package/.claude/skills/cfn-ace-system/query-reflections.sh +35 -0
  75. package/.claude/skills/cfn-ace-system/schema/001-create-context-reflections.sql +237 -0
  76. package/.claude/skills/cfn-ace-system/schema/README.md +723 -0
  77. package/.claude/skills/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +564 -0
  78. package/.claude/skills/cfn-ace-system/schema/populate-test-data-simple.sh +62 -0
  79. package/.claude/skills/cfn-ace-system/schema/populate-test-data.sh +247 -0
  80. package/.claude/skills/cfn-ace-system/schema/run-migration.sh +231 -0
  81. package/.claude/skills/cfn-ace-system/schema/validate-schema.sql +280 -0
  82. package/.claude/skills/cfn-ace-system/score-relevance-adapter.sh +138 -0
  83. package/.claude/skills/cfn-ace-system/score-relevance.sh +253 -0
  84. package/.claude/skills/cfn-ace-system/sprint-7-lessons.json +46 -0
  85. package/.claude/skills/cfn-ace-system/store-reflection.sh +46 -0
  86. package/.claude/skills/cfn-ace-system/test-ace-skill.sh +312 -0
  87. package/.claude/skills/cfn-ace-system/track-ab-test.sh +42 -0
  88. package/.claude/skills/cfn-ace-system/update-reflection.sh +41 -0
  89. package/.claude/skills/cfn-agent-discovery/SKILL.md +40 -0
  90. package/.claude/skills/cfn-agent-discovery/agents-registry-clean.json +0 -0
  91. package/.claude/skills/cfn-agent-discovery/agents-registry-fixed.json +19 -0
  92. package/.claude/skills/cfn-agent-discovery/agents-registry.json +718 -0
  93. package/.claude/skills/cfn-agent-discovery/discover-agents.py +184 -0
  94. package/.claude/skills/cfn-agent-discovery/discover-agents.sh +87 -0
  95. package/.claude/skills/cfn-agent-discovery/invoke-registry.sh +11 -0
  96. package/.claude/skills/cfn-agent-discovery/temp_script.py +0 -0
  97. package/.claude/skills/cfn-agent-execution/execute-agent.sh +126 -0
  98. package/.claude/skills/cfn-agent-output-processing/SKILL.md +359 -0
  99. package/.claude/skills/cfn-agent-selector/SKILL.md +90 -0
  100. package/.claude/skills/cfn-agent-selector/select-agents.sh +112 -0
  101. package/.claude/skills/cfn-agent-spawning/SKILL.md +135 -0
  102. package/.claude/skills/cfn-agent-spawning/agent-selection-guide.md +814 -0
  103. package/.claude/skills/cfn-agent-spawning/check-dependencies.sh +30 -0
  104. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +263 -0
  105. package/.claude/skills/cfn-agent-spawning/spawn-templates.sh +613 -0
  106. package/.claude/skills/cfn-analytics/description-refinement-guide.md +164 -0
  107. package/.claude/skills/cfn-analytics/log-skill-invocation.js +122 -0
  108. package/.claude/skills/cfn-analytics/run-production-criteria-tests.sh +126 -0
  109. package/.claude/skills/cfn-analytics/skill-analytics-dashboard.js +113 -0
  110. package/.claude/skills/cfn-analytics/skill-invocation-hook.sh +28 -0
  111. package/.claude/skills/cfn-analytics/skill-invocations.sql +58 -0
  112. package/.claude/skills/cfn-analytics/test-corpus.json +32 -0
  113. package/.claude/skills/cfn-analytics/test-data-generator.js +115 -0
  114. package/.claude/skills/cfn-analytics/test-manual-override-rate.js +285 -0
  115. package/.claude/skills/cfn-analytics/validate-skill-selection.js +188 -0
  116. package/.claude/skills/cfn-config-management/SKILL.md +34 -0
  117. package/.claude/skills/cfn-config-management/check-dependencies.sh +56 -0
  118. package/.claude/skills/cfn-config-management/config.json +32 -0
  119. package/.claude/skills/cfn-config-management/manage-config.sh +113 -0
  120. package/.claude/skills/cfn-event-bus/SKILL.md +412 -0
  121. package/.claude/skills/cfn-event-bus/config.json +111 -0
  122. package/.claude/skills/cfn-event-bus/eventbus-wrapper.cjs +69 -0
  123. package/.claude/skills/cfn-event-bus/invoke-event-publish.sh +147 -0
  124. package/.claude/skills/cfn-event-bus/invoke-event-subscribe.sh +171 -0
  125. package/.claude/skills/cfn-event-bus/invoke-lifecycle-track.sh +201 -0
  126. package/.claude/skills/cfn-event-bus/test-event-bus.sh +280 -0
  127. package/.claude/skills/cfn-fleet-manager/SKILL.md +412 -0
  128. package/.claude/skills/cfn-fleet-manager/config.json +60 -0
  129. package/.claude/skills/cfn-fleet-manager/invoke-fleet-allocate.sh +182 -0
  130. package/.claude/skills/cfn-fleet-manager/invoke-fleet-balance.sh +239 -0
  131. package/.claude/skills/cfn-fleet-manager/invoke-fleet-metrics.sh +193 -0
  132. package/.claude/skills/cfn-fleet-manager/invoke-fleet-register.sh +124 -0
  133. package/.claude/skills/cfn-fleet-manager/test-fleet-manager.sh +345 -0
  134. package/.claude/skills/cfn-hook-pipeline/SKILL.md +148 -0
  135. package/.claude/skills/cfn-hook-pipeline/auto-resolve.sh +66 -0
  136. package/.claude/skills/cfn-hook-pipeline/check-dependencies.sh +40 -0
  137. package/.claude/skills/cfn-hook-pipeline/feedback-resolver.sh +452 -0
  138. package/.claude/skills/cfn-hook-pipeline/post-edit-handler.sh +154 -0
  139. package/.claude/skills/cfn-hook-pipeline/security-scan.json +60 -0
  140. package/.claude/skills/cfn-hook-pipeline/security-scanner.sh +121 -0
  141. package/.claude/skills/cfn-hook-pipeline/test-root-warning-resolution.sh +148 -0
  142. package/.claude/skills/cfn-hybrid-routing/SKILL.md +46 -0
  143. package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +52 -0
  144. package/.claude/skills/cfn-hybrid-routing/config.json +26 -0
  145. package/.claude/skills/cfn-hybrid-routing/spawn-worker.sh +44 -0
  146. package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
  147. package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
  148. package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
  149. package/.claude/skills/cfn-loop-orchestration/helpers/context-injection.sh +142 -0
  150. package/.claude/skills/cfn-loop-orchestration/helpers/context-lookup.sh +359 -0
  151. package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
  152. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
  153. package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
  154. package/.claude/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +271 -0
  155. package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
  156. package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
  157. package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
  158. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +884 -0
  159. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +840 -0
  160. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
  161. package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
  162. package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
  163. package/.claude/skills/cfn-loop-validation/SKILL.md +353 -0
  164. package/.claude/skills/cfn-loop-validation/check-dependencies.sh +31 -0
  165. package/.claude/skills/cfn-loop-validation/config.json +161 -0
  166. package/.claude/skills/cfn-loop-validation/consensus-calculator.js +477 -0
  167. package/.claude/skills/cfn-loop-validation/evidence-chain.sql +163 -0
  168. package/.claude/skills/cfn-loop-validation/examples/README.md +453 -0
  169. package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +234 -0
  170. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +132 -0
  171. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +115 -0
  172. package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +186 -0
  173. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -0
  174. package/.claude/skills/cfn-loop-validation/validate-iteration.sh +134 -0
  175. package/.claude/skills/cfn-process-lifecycle/SKILL.md +39 -0
  176. package/.claude/skills/cfn-process-lifecycle/check-dependencies.sh +58 -0
  177. package/.claude/skills/cfn-process-lifecycle/config.json +39 -0
  178. package/.claude/skills/cfn-process-lifecycle/process-manager.sh +144 -0
  179. package/.claude/skills/cfn-product-owner-decision/SKILL.md +332 -0
  180. package/.claude/skills/cfn-product-owner-decision/execute-decision.sh +176 -0
  181. package/.claude/skills/cfn-product-owner-decision/parse-decision.sh +66 -0
  182. package/.claude/skills/cfn-product-owner-decision/validate-deliverables.sh +82 -0
  183. package/.claude/skills/cfn-redis-coordination/AGENT_LOGGING.md +280 -0
  184. package/.claude/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +209 -0
  185. package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +57 -0
  186. package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +267 -0
  187. package/.claude/skills/cfn-redis-coordination/LOGGING.md +260 -0
  188. package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +25 -0
  189. package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +164 -0
  190. package/.claude/skills/cfn-redis-coordination/SKILL.md +720 -0
  191. package/.claude/skills/cfn-redis-coordination/agent-log.sh +124 -0
  192. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +75 -0
  193. package/.claude/skills/cfn-redis-coordination/analyze-task-complexity.sh +277 -0
  194. package/.claude/skills/cfn-redis-coordination/cancel-swarm.sh +221 -0
  195. package/.claude/skills/cfn-redis-coordination/cfn-loop-exec.sh +468 -0
  196. package/.claude/skills/cfn-redis-coordination/cfn-loop-relaunch.sh +29 -0
  197. package/.claude/skills/cfn-redis-coordination/check-dependencies.sh +32 -0
  198. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +179 -0
  199. package/.claude/skills/cfn-redis-coordination/collect-results.sh +75 -0
  200. package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +75 -0
  201. package/.claude/skills/cfn-redis-coordination/config.json +61 -0
  202. package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
  203. package/.claude/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +82 -0
  204. package/.claude/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +274 -0
  205. package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +276 -0
  206. package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +129 -0
  207. package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +320 -0
  208. package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +249 -0
  209. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +148 -0
  210. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +163 -0
  211. package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +138 -0
  212. package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +81 -0
  213. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +45 -0
  214. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +68 -0
  215. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +56 -0
  216. package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +81 -0
  217. package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +57 -0
  218. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +187 -0
  219. package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +160 -0
  220. package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +97 -0
  221. package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +97 -0
  222. package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +59 -0
  223. package/.claude/skills/cfn-redis-coordination/examples/README.md +73 -0
  224. package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +352 -0
  225. package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +127 -0
  226. package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +171 -0
  227. package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +227 -0
  228. package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +239 -0
  229. package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +258 -0
  230. package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +177 -0
  231. package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +137 -0
  232. package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +106 -0
  233. package/.claude/skills/cfn-redis-coordination/heartbeat.sh +126 -0
  234. package/.claude/skills/cfn-redis-coordination/init-swarm.sh +148 -0
  235. package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +220 -0
  236. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +283 -0
  237. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
  238. package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +147 -0
  239. package/.claude/skills/cfn-redis-coordination/log-event.sh +109 -0
  240. package/.claude/skills/cfn-redis-coordination/metrics-export.sh +674 -0
  241. package/.claude/skills/cfn-redis-coordination/metrics-schema.json +66 -0
  242. package/.claude/skills/cfn-redis-coordination/metrics-storage.md +31 -0
  243. package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +391 -0
  244. package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +101 -0
  245. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
  246. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +31 -0
  247. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
  248. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
  249. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
  250. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
  251. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
  252. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
  253. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  254. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
  255. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
  256. package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
  257. package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +75 -0
  258. package/.claude/skills/cfn-redis-coordination/priority_wake.py +134 -0
  259. package/.claude/skills/cfn-redis-coordination/query-dlq.sh +162 -0
  260. package/.claude/skills/cfn-redis-coordination/query-logs.sh +103 -0
  261. package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +619 -0
  262. package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +58 -0
  263. package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +371 -0
  264. package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +252 -0
  265. package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +165 -0
  266. package/.claude/skills/cfn-redis-coordination/signal.sh +38 -0
  267. package/.claude/skills/cfn-redis-coordination/store-context.sh +86 -0
  268. package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +123 -0
  269. package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +354 -0
  270. package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +513 -0
  271. package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +15 -0
  272. package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +102 -0
  273. package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +99 -0
  274. package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +170 -0
  275. package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +82 -0
  276. package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +92 -0
  277. package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +4 -0
  278. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +418 -0
  279. package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +124 -0
  280. package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +166 -0
  281. package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +54 -0
  282. package/.claude/skills/cfn-redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
  283. package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +49 -0
  284. package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +76 -0
  285. package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +492 -0
  286. package/.claude/skills/cfn-sqlite-memory/IMPLEMENTATION_REPORT.md +393 -0
  287. package/.claude/skills/cfn-sqlite-memory/QUICK_REFERENCE.md +204 -0
  288. package/.claude/skills/cfn-sqlite-memory/SKILL.md +415 -0
  289. package/.claude/skills/cfn-sqlite-memory/acl-queries.sql +452 -0
  290. package/.claude/skills/cfn-sqlite-memory/check-dependencies.sh +36 -0
  291. package/.claude/skills/cfn-sqlite-memory/config.json +45 -0
  292. package/.claude/skills/cfn-sqlite-memory/memory-cli.sh +88 -0
  293. package/.claude/skills/cfn-sqlite-memory/test-state-persistence.js +187 -0
  294. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +274 -0
  295. package/.claude/skills/cfn-test-execution/SKILL.md +128 -0
  296. package/.claude/skills/cfn-test-execution/check-dependencies.sh +36 -0
  297. package/.claude/skills/cfn-test-execution/test-cache-reader.sh +134 -0
  298. package/.claude/skills/cfn-test-execution/test-concurrent-conflicts.sh +115 -0
  299. package/.claude/skills/cfn-test-execution/test-coordinator-pattern.sh +109 -0
  300. package/.claude/skills/cfn-transparency-middleware/Cargo.toml +18 -0
  301. package/.claude/skills/cfn-transparency-middleware/SECURITY.md +41 -0
  302. package/.claude/skills/cfn-transparency-middleware/SKILL.md +91 -0
  303. package/.claude/skills/cfn-transparency-middleware/TEST_RESULTS.md +174 -0
  304. package/.claude/skills/cfn-transparency-middleware/config.json +31 -0
  305. package/.claude/skills/cfn-transparency-middleware/examples/basic-usage.ts +39 -0
  306. package/.claude/skills/cfn-transparency-middleware/examples/batch-processing.ts +52 -0
  307. package/.claude/skills/cfn-transparency-middleware/examples/custom-filtering.ts +61 -0
  308. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-filter.sh +98 -0
  309. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-init.sh +224 -0
  310. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-level.sh +333 -0
  311. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh +345 -0
  312. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-observe.sh +140 -0
  313. package/.claude/skills/cfn-transparency-middleware/invoke-transparency-stop.sh +235 -0
  314. package/.claude/skills/cfn-transparency-middleware/memory_query.rs +85 -0
  315. package/.claude/skills/cfn-transparency-middleware/memory_repository.rs +140 -0
  316. package/.claude/skills/cfn-transparency-middleware/memory_schema.rs +64 -0
  317. package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +29 -0
  318. package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +79 -0
  319. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +406 -0
  320. package/.claude/skills/cfn-transparency-middleware/test-integration.sh +162 -0
  321. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +368 -0
  322. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh.unix +126 -0
  323. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +93 -0
  324. package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +132 -0
  325. package/.claude/skills/cfn-webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
  326. package/.claude/skills/cfn-webapp-testing/SKILL.md +877 -0
  327. package/.claude/skills/cfn-webapp-testing/capture-screenshot.sh +238 -0
  328. package/.claude/skills/cfn-webapp-testing/cfn-loop-integration.sh +265 -0
  329. package/.claude/skills/cfn-webapp-testing/compare-screenshots.sh +199 -0
  330. package/.claude/skills/cfn-webapp-testing/init-storage.sh +150 -0
  331. package/.claude/skills/cfn-webapp-testing/set-baseline.sh +196 -0
  332. package/.claude/skills/cfn-webapp-testing/test-webapp-testing.sh +233 -0
  333. package/README.md +51 -2
  334. package/dist/ace/ace-reflector.js +109 -10
  335. package/dist/ace/ace-reflector.js.map +1 -1
  336. package/dist/agents/agent-loader.js +165 -146
  337. package/dist/agents/agent-loader.js.map +1 -1
  338. package/dist/cli/agent-executor.js +1 -1
  339. package/dist/cli/agent-executor.js.map +1 -1
  340. package/dist/cli/config-manager.js +109 -91
  341. package/dist/cli/config-manager.js.map +1 -1
  342. package/package.json +43 -7
  343. package/readme/README.md +15 -4
  344. package/scripts/init-project.js +84 -29
  345. package/scripts/run-marketing-tests.sh +43 -0
  346. package/scripts/update_paths.sh +47 -0
  347. package/tools/install-lizard.sh +37 -0
  348. package/tools/simple-complexity.sh +44 -0
  349. package/.claude/agents/cfn-dev-team/developers/coder.md +0 -270
  350. package/.claude/agents/cfn-dev-team/developers/state-architect.md +0 -127
  351. package/.claude/agents/cfn-dev-team/reviewers/code-quality-validator.md +0 -128
  352. /package/.claude/agents/cfn-dev-team/developers/{ui-designer.md → frontend/ui-designer.md} +0 -0
  353. /package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner-agent.md +0 -0
@@ -0,0 +1,423 @@
1
+ #!/bin/bash
2
+ #
3
+ # Redis Waiting Mode CLI Wrapper for Agents
4
+ #
5
+ # Usage:
6
+ # ./invoke-waiting-mode.sh enter --task-id <task> --agent-id <agent> --context <context>
7
+ # ./invoke-waiting-mode.sh wake --task-id <task> --agent-id <agent> --reason <reason> [--iteration <n>] [--priority <0-100>] [--fork-id <fork_id>]
8
+ # ./invoke-waiting-mode.sh report --task-id <task> --agent-id <agent> --confidence <score> [--iteration <n>]
9
+ # ./invoke-waiting-mode.sh collect --task-id <task> --agent-ids <id1,id2,id3>
10
+ # ./invoke-waiting-mode.sh shutdown --task-id <task> [--reason <reason>]
11
+ #
12
+ # New parameter: --fork-id
13
+ # Optional unique identifier for conversation continuation
14
+ # Allows tracking and resuming specific conversation forks
15
+ # Stored in Redis with 5-minute TTL during agent wake
16
+ #
17
+ # Priority Levels (0-100, higher = more urgent, default = 50):
18
+ # 90-100: Critical (security patches, system failures)
19
+ # 70-89: High (urgent features, blocking bugs)
20
+ # 40-60: Medium (normal tasks, default)
21
+ # 20-39: Low (optimizations, refactoring)
22
+ # 0-19: Minimal (documentation, cleanup)
23
+ #
24
+ # Examples:
25
+ # # Agent enters waiting mode
26
+ # ./invoke-waiting-mode.sh enter --task-id auth-system --agent-id coder-1 --context "iteration-1"
27
+ #
28
+ # # Coordinator wakes agent with fork ID
29
+ # ./invoke-waiting-mode.sh wake --task-id auth-system --agent-id coder-1 --reason cfn_loop_iteration --iteration 2 --fork-id "fork-1-a3b2c1d4"
30
+ #
31
+ # # Other existing use cases remain unchanged
32
+
33
+ set -euo pipefail
34
+
35
+ # Debug mode (set DEBUG=true for verbose output)
36
+ DEBUG="${DEBUG:-false}"
37
+
38
+ # Parse command
39
+ COMMAND="${1:-}"
40
+ shift || true
41
+
42
+ # Parse arguments
43
+ TASK_ID=""
44
+ AGENT_ID=""
45
+ AGENT_IDS=""
46
+ CONTEXT=""
47
+ REASON=""
48
+ ITERATION=""
49
+ CONFIDENCE=""
50
+ FEEDBACK=""
51
+ TASK_DESC=""
52
+ FORK_ID=""
53
+ PRIORITY=50 # Default medium priority (0-100, higher = more urgent)
54
+
55
+ while [[ $# -gt 0 ]]; do
56
+ case $1 in
57
+ --task-id)
58
+ TASK_ID="$2"
59
+ shift 2
60
+ ;;
61
+ --agent-id)
62
+ AGENT_ID="$2"
63
+ shift 2
64
+ ;;
65
+ --agent-ids)
66
+ AGENT_IDS="$2"
67
+ shift 2
68
+ ;;
69
+ --context)
70
+ CONTEXT="$2"
71
+ shift 2
72
+ ;;
73
+ --reason)
74
+ REASON="$2"
75
+ shift 2
76
+ ;;
77
+ --iteration)
78
+ ITERATION="$2"
79
+ shift 2
80
+ ;;
81
+ --confidence)
82
+ CONFIDENCE="$2"
83
+ shift 2
84
+ ;;
85
+ --feedback)
86
+ FEEDBACK="$2"
87
+ shift 2
88
+ ;;
89
+ --task)
90
+ TASK_DESC="$2"
91
+ shift 2
92
+ ;;
93
+ --priority)
94
+ PRIORITY="$2"
95
+ shift 2
96
+ ;;
97
+ --fork-id)
98
+ FORK_ID="$2"
99
+ shift 2
100
+ ;;
101
+ *)
102
+ echo "Unknown argument: $1"
103
+ exit 1
104
+ ;;
105
+ esac
106
+ done
107
+
108
+ # Validate required arguments
109
+ case "$COMMAND" in
110
+ enter)
111
+ if [ -z "$TASK_ID" ] || [ -z "$AGENT_ID" ] || [ -z "$CONTEXT" ]; then
112
+ echo "Error: enter requires --task-id, --agent-id, and --context"
113
+ exit 1
114
+ fi
115
+
116
+ # Enter waiting mode
117
+ READY_KEY="swarm:${TASK_ID}:${AGENT_ID}:ready"
118
+ WAKE_QUEUE="swarm:${TASK_ID}:${AGENT_ID}:wake-queue"
119
+ SHUTDOWN_KEY="swarm:${TASK_ID}:shutdown"
120
+
121
+ # Publish ready status
122
+ READY_MSG=$(jq -n \
123
+ --arg status "waiting" \
124
+ --arg context "$CONTEXT" \
125
+ --arg ts "$(date +%s)" \
126
+ '{status: $status, context: $context, timestamp: ($ts | tonumber)}')
127
+
128
+ echo "$READY_MSG" | redis-cli -x LPUSH "$READY_KEY" >/dev/null
129
+
130
+ echo "[$AGENT_ID] Entered waiting mode (context: $CONTEXT)"
131
+ echo "[$AGENT_ID] Blocking on priority queue $WAKE_QUEUE and $SHUTDOWN_KEY (infinite timeout)..."
132
+ echo "[$AGENT_ID] Zero token cost while waiting"
133
+
134
+ # Poll loop: check shutdown first, then block on wake queue with timeout
135
+ # This allows us to support both priority queues and shutdown signals
136
+ while true; do
137
+ # Check for shutdown signal first (highest priority)
138
+ SHUTDOWN_CHECK=$(redis-cli LPOP "$SHUTDOWN_KEY")
139
+
140
+ if [ -n "$SHUTDOWN_CHECK" ] && [ "$SHUTDOWN_CHECK" != "(nil)" ]; then
141
+ # Shutdown signal received
142
+ SHUTDOWN_REASON=$(echo "$SHUTDOWN_CHECK" | jq -r '.reason // "unknown"')
143
+ echo "[$AGENT_ID] 🛑 Shutdown signal received"
144
+ echo "[$AGENT_ID] Reason: $SHUTDOWN_REASON"
145
+ echo "$SHUTDOWN_CHECK" | jq '.'
146
+
147
+ # Exit with SIGINT code to indicate graceful shutdown
148
+ exit 130
149
+ fi
150
+
151
+ # Block on wake queue with 1-second timeout (allows periodic shutdown checks)
152
+ # BZPOPMIN returns: key, member, score (3 lines)
153
+ WAKE_RESULT=$(redis-cli BZPOPMIN "$WAKE_QUEUE" 1 2>/dev/null)
154
+
155
+ if [ -n "$WAKE_RESULT" ] && [ "$WAKE_RESULT" != "(nil)" ]; then
156
+ # Parse result (BZPOPMIN returns 3 lines: key, member, score)
157
+ WAKE_MSG=$(echo "$WAKE_RESULT" | sed -n '2p')
158
+
159
+ # Validate JSON before processing
160
+ if echo "$WAKE_MSG" | jq empty 2>/dev/null; then
161
+ echo "[$AGENT_ID] ✅ Woken up!"
162
+ echo "$WAKE_MSG" | jq '.'
163
+
164
+ # Return wake message to caller
165
+ echo "$WAKE_MSG"
166
+ break
167
+ else
168
+ echo "[$AGENT_ID] ⚠️ Invalid JSON in wake message, ignoring"
169
+ continue
170
+ fi
171
+ fi
172
+
173
+ # If no wake signal received, loop back to check shutdown again
174
+ done
175
+ ;;
176
+
177
+ wake)
178
+ if [ -z "$TASK_ID" ] || [ -z "$AGENT_ID" ] || [ -z "$REASON" ]; then
179
+ echo "Error: wake requires --task-id, --agent-id, and --reason"
180
+ exit 1
181
+ fi
182
+
183
+ WAKE_QUEUE="swarm:${TASK_ID}:${AGENT_ID}:wake-queue"
184
+
185
+ # Build wake message (compact JSON for Redis storage)
186
+ WAKE_MSG=$(jq -nc \
187
+ --arg reason "$REASON" \
188
+ --arg iteration "${ITERATION:-0}" \
189
+ --arg task "${TASK_DESC:-}" \
190
+ --arg feedback "${FEEDBACK:-}" \
191
+ --arg priority "$PRIORITY" \
192
+ --arg fork_id "${FORK_ID:-}" \
193
+ --arg ts "$(date +%s)" \
194
+ '{
195
+ reason: $reason,
196
+ iteration: ($iteration | tonumber),
197
+ task: $task,
198
+ feedback: ($feedback | split(",") | map(select(length > 0))),
199
+ priority: ($priority | tonumber),
200
+ fork_id: $fork_id,
201
+ timestamp: ($ts | tonumber)
202
+ }')
203
+
204
+ # Store feedback in Redis for agent to read (if provided and iteration > 0)
205
+ # Debug: Echo values before conditional (only if feedback provided)
206
+ if [ -n "$FEEDBACK" ]; then
207
+ [ "$DEBUG" = "true" ] && echo "[DEBUG] Checking feedback storage: FEEDBACK='$FEEDBACK', ITERATION='${ITERATION:-0}'"
208
+ fi
209
+
210
+ # Only store feedback if: feedback is non-empty AND iteration > 0
211
+ # Check iteration value explicitly (not just default)
212
+ if [ -n "$FEEDBACK" ] && [ -n "$ITERATION" ] && [ "$ITERATION" -gt 0 ]; then
213
+ FEEDBACK_KEY="swarm:${TASK_ID}:${AGENT_ID}:feedback:iteration-${ITERATION}"
214
+ FEEDBACK_ARRAY=$(echo "$FEEDBACK" | jq -Rc 'split(",") | map(select(length > 0))')
215
+
216
+ # Only store if feedback array is not empty after filtering
217
+ ARRAY_LENGTH=$(echo "$FEEDBACK_ARRAY" | jq 'length')
218
+ if [ "$ARRAY_LENGTH" -gt 0 ]; then
219
+ # Store as JSON array with 24-hour TTL
220
+ REDIS_RESULT=$(printf '%s' "$FEEDBACK_ARRAY" | redis-cli -x SET "$FEEDBACK_KEY")
221
+ redis-cli EXPIRE "$FEEDBACK_KEY" 86400 >/dev/null
222
+
223
+ # Always log feedback storage (not just in DEBUG mode)
224
+ if [ "$REDIS_RESULT" = "OK" ]; then
225
+ echo " [Feedback] Stored $ARRAY_LENGTH items in Redis (TTL: 24h)"
226
+ fi
227
+
228
+ if [ "$DEBUG" = "true" ]; then
229
+ echo "[DEBUG] Stored feedback in $FEEDBACK_KEY (TTL: 24h)"
230
+ echo "[DEBUG] Feedback: $FEEDBACK_ARRAY"
231
+ echo "[DEBUG] Redis SET result: $REDIS_RESULT"
232
+ fi
233
+ fi
234
+ fi
235
+
236
+ # Calculate priority score (lower score = higher priority, popped first)
237
+ # Score = (100 - priority) * 1000000 + timestamp
238
+ # This ensures higher priority messages are processed first, with FIFO for same priority
239
+ TIMESTAMP=$(date +%s)
240
+ PRIORITY_SCORE=$(echo "(100 - $PRIORITY) * 1000000 + $TIMESTAMP" | bc)
241
+
242
+ # Debug output
243
+ if [ "$DEBUG" = "true" ]; then
244
+ echo "[DEBUG] WAKE_QUEUE: $WAKE_QUEUE"
245
+ echo "[DEBUG] PRIORITY: $PRIORITY"
246
+ echo "[DEBUG] Priority score: $PRIORITY_SCORE"
247
+ echo "[DEBUG] Message: $WAKE_MSG"
248
+ fi
249
+
250
+ # Add to sorted set (ZADD with calculated score)
251
+ redis-cli ZADD "$WAKE_QUEUE" "$PRIORITY_SCORE" "$WAKE_MSG" >/dev/null
252
+
253
+ # Store fork ID in Redis if provided
254
+ if [ -n "$FORK_ID" ]; then
255
+ FORK_KEY="swarm:${TASK_ID}:${AGENT_ID}:fork-id"
256
+ # Store fork ID with 5-minute expiration
257
+ redis-cli SETEX "$FORK_KEY" 300 "$FORK_ID" >/dev/null
258
+ echo "[Coordinator] Fork ID stored: $FORK_ID (5-minute TTL)"
259
+ fi
260
+
261
+ echo "[Coordinator] ✅ Wake signal sent to $AGENT_ID"
262
+ echo " Reason: $REASON"
263
+ echo " Priority: $PRIORITY (score: $PRIORITY_SCORE)"
264
+ [ -n "$ITERATION" ] && echo " Iteration: $ITERATION"
265
+ ;;
266
+
267
+ report)
268
+ if [ -z "$TASK_ID" ] || [ -z "$AGENT_ID" ] || [ -z "$CONFIDENCE" ]; then
269
+ echo "Error: report requires --task-id, --agent-id, and --confidence"
270
+ exit 1
271
+ fi
272
+
273
+ RESULT_KEY="swarm:${TASK_ID}:${AGENT_ID}:result"
274
+
275
+ # Build result message with optional feedback
276
+ RESULT_MSG=$(jq -n \
277
+ --arg confidence "$CONFIDENCE" \
278
+ --arg iteration "${ITERATION:-0}" \
279
+ --arg feedback "${FEEDBACK:-}" \
280
+ --arg ts "$(date +%s)" \
281
+ '{
282
+ confidence: ($confidence | tonumber),
283
+ iteration: ($iteration | tonumber),
284
+ feedback: ($feedback | split(",") | map(select(length > 0))),
285
+ timestamp: ($ts | tonumber)
286
+ }')
287
+
288
+ echo "$RESULT_MSG" | redis-cli -x LPUSH "$RESULT_KEY" >/dev/null
289
+
290
+ echo "[$AGENT_ID] ✅ Result reported"
291
+ echo " Confidence: $CONFIDENCE"
292
+ [ -n "$ITERATION" ] && echo " Iteration: $ITERATION"
293
+ if [ -n "$FEEDBACK" ]; then
294
+ echo " Feedback items: $(echo "$FEEDBACK" | tr ',' '\n' | wc -l)"
295
+ fi
296
+ ;;
297
+
298
+ collect)
299
+ if [ -z "$TASK_ID" ] || [ -z "$AGENT_IDS" ]; then
300
+ echo "Error: collect requires --task-id and --agent-ids"
301
+ exit 1
302
+ fi
303
+
304
+ echo "[Coordinator] Collecting results from agents..."
305
+ echo ""
306
+
307
+ # Split agent IDs
308
+ IFS=',' read -ra AGENTS <<< "$AGENT_IDS"
309
+
310
+ RESULTS=()
311
+ CONFIDENCES=()
312
+ ALL_FEEDBACK=()
313
+
314
+ for AGENT in "${AGENTS[@]}"; do
315
+ RESULT_KEY="swarm:${TASK_ID}:${AGENT}:result"
316
+
317
+ # Get latest result (non-blocking)
318
+ RESULT=$(redis-cli LPOP "$RESULT_KEY")
319
+
320
+ if [ -n "$RESULT" ] && [ "$RESULT" != "(nil)" ]; then
321
+ CONF=$(echo "$RESULT" | jq -r '.confidence')
322
+ echo " [$AGENT] Confidence: $CONF"
323
+ RESULTS+=("$RESULT")
324
+ CONFIDENCES+=("$CONF")
325
+
326
+ # Check if result includes feedback array
327
+ FEEDBACK=$(echo "$RESULT" | jq -r '.feedback // empty | .[]?' 2>/dev/null)
328
+ if [ -n "$FEEDBACK" ]; then
329
+ echo " [$AGENT] Feedback provided:"
330
+ echo "$RESULT" | jq -r '.feedback[]' | sed 's/^/ - /'
331
+
332
+ # Collect all feedback items
333
+ while IFS= read -r ITEM; do
334
+ ALL_FEEDBACK+=("$ITEM")
335
+ done < <(echo "$RESULT" | jq -r '.feedback[]')
336
+ fi
337
+ else
338
+ echo " [$AGENT] ⚠️ No result found"
339
+ fi
340
+ done
341
+
342
+ # Calculate consensus
343
+ if [ ${#CONFIDENCES[@]} -gt 0 ]; then
344
+ SUM=0
345
+ for CONF in "${CONFIDENCES[@]}"; do
346
+ SUM=$(echo "$SUM + $CONF" | bc)
347
+ done
348
+ COUNT=${#CONFIDENCES[@]}
349
+ CONSENSUS=$(echo "scale=2; $SUM / $COUNT" | bc)
350
+
351
+ echo ""
352
+ echo "[Coordinator] Consensus: $CONSENSUS"
353
+
354
+ # Print aggregated feedback if available
355
+ if [ ${#ALL_FEEDBACK[@]} -gt 0 ]; then
356
+ echo "[Coordinator] Aggregated Feedback (${#ALL_FEEDBACK[@]} items):"
357
+ printf '%s\n' "${ALL_FEEDBACK[@]}" | sort -u | sed 's/^/ - /'
358
+ fi
359
+
360
+ echo "$CONSENSUS"
361
+ else
362
+ echo ""
363
+ echo "[Coordinator] No results to calculate consensus"
364
+ echo "0.0"
365
+ fi
366
+ ;;
367
+
368
+ shutdown)
369
+ if [ -z "$TASK_ID" ]; then
370
+ echo "Error: shutdown requires --task-id"
371
+ exit 1
372
+ fi
373
+
374
+ SHUTDOWN_KEY="swarm:${TASK_ID}:shutdown"
375
+
376
+ # Build shutdown message
377
+ SHUTDOWN_MSG=$(jq -n \
378
+ --arg reason "${REASON:-task_complete}" \
379
+ --arg ts "$(date +%s)" \
380
+ '{
381
+ reason: $reason,
382
+ timestamp: ($ts | tonumber)
383
+ }')
384
+
385
+ # Broadcast shutdown signal (use LPUSH to add to list)
386
+ # All waiting agents will check this key and exit gracefully
387
+ echo "$SHUTDOWN_MSG" | redis-cli -x LPUSH "$SHUTDOWN_KEY" >/dev/null
388
+
389
+ echo "[Coordinator] 🛑 Shutdown signal broadcasted"
390
+ echo " Task ID: $TASK_ID"
391
+ echo " Reason: ${REASON:-task_complete}"
392
+ echo ""
393
+ echo "Note: Signal added to $SHUTDOWN_KEY"
394
+ echo "All waiting agents will receive shutdown on next poll cycle (max 1 second)"
395
+ ;;
396
+
397
+ *)
398
+ echo "Usage: $0 <command> [options]"
399
+ echo ""
400
+ echo "Commands:"
401
+ echo " enter - Agent enters waiting mode"
402
+ echo " wake - Coordinator wakes an agent (supports --priority 0-100, --fork-id)"
403
+ echo " report - Agent reports result"
404
+ echo " collect - Coordinator collects results"
405
+ echo " shutdown - Coordinator broadcasts shutdown signal to all waiting agents"
406
+ echo ""
407
+ echo "Priority Levels (0-100, higher = more urgent, default = 50):"
408
+ echo " 90-100: Critical (security patches, system failures)"
409
+ echo " 70-89: High (urgent features, blocking bugs)"
410
+ echo " 40-60: Medium (normal tasks, default)"
411
+ echo " 20-39: Low (optimizations, refactoring)"
412
+ echo " 0-19: Minimal (documentation, cleanup)"
413
+ echo ""
414
+ echo "Examples:"
415
+ echo " $0 enter --task-id auth --agent-id coder-1 --context iteration-1"
416
+ echo " $0 wake --task-id auth --agent-id coder-1 --reason cfn_loop_iteration --iteration 2 --fork-id fork-1"
417
+ echo " $0 wake --task-id auth --agent-id coder-1 --reason security_patch --priority 95"
418
+ echo " $0 report --task-id auth --agent-id coder-1 --confidence 0.85 --iteration 1"
419
+ echo " $0 collect --task-id auth --agent-ids coder-1,reviewer-1,tester-1"
420
+ echo " $0 shutdown --task-id auth --reason task_complete"
421
+ exit 1
422
+ ;;
423
+ esac
@@ -0,0 +1,147 @@
1
+ #!/usr/bin/env bash
2
+
3
+ ##############################################################################
4
+ # List Active Swarms - Redis Coordination
5
+ #
6
+ # Queries Redis for all active swarm metadata to help track multiple
7
+ # concurrent CFN Loop sessions.
8
+ #
9
+ # Usage:
10
+ # ./list-active-swarms.sh [--task-id <id>] [--mode <mode>] [--json]
11
+ ##############################################################################
12
+
13
+ set -euo pipefail
14
+
15
+ # Configuration
16
+ TASK_ID_FILTER=""
17
+ MODE_FILTER=""
18
+ JSON_OUTPUT=false
19
+
20
+ # Parse arguments
21
+ while [[ $# -gt 0 ]]; do
22
+ case $1 in
23
+ --task-id)
24
+ TASK_ID_FILTER="$2"
25
+ shift 2
26
+ ;;
27
+ --mode)
28
+ MODE_FILTER="$2"
29
+ shift 2
30
+ ;;
31
+ --json)
32
+ JSON_OUTPUT=true
33
+ shift
34
+ ;;
35
+ *)
36
+ echo "Unknown option: $1"
37
+ echo "Usage: $0 [--task-id <id>] [--mode <mode>] [--json]"
38
+ exit 1
39
+ ;;
40
+ esac
41
+ done
42
+
43
+ # Get all swarm metadata keys
44
+ SWARM_KEYS=$(redis-cli --scan --pattern "swarm:*:metadata" 2>/dev/null || echo "")
45
+
46
+ if [ -z "$SWARM_KEYS" ]; then
47
+ if [ "$JSON_OUTPUT" = true ]; then
48
+ echo '{"swarms": [], "count": 0}'
49
+ else
50
+ echo "No active swarms found"
51
+ fi
52
+ exit 0
53
+ fi
54
+
55
+ # Initialize JSON array
56
+ if [ "$JSON_OUTPUT" = true ]; then
57
+ echo '{"swarms": ['
58
+ FIRST=true
59
+ fi
60
+
61
+ # Process each swarm
62
+ while IFS= read -r KEY; do
63
+ if [ -z "$KEY" ]; then
64
+ continue
65
+ fi
66
+
67
+ # Extract swarm ID from key (swarm:swarm-<task-id>:metadata)
68
+ SWARM_ID=$(echo "$KEY" | sed 's/swarm:\(.*\):metadata/\1/')
69
+
70
+ # Get metadata
71
+ TASK_ID=$(redis-cli hget "$KEY" task_id 2>/dev/null || echo "")
72
+ MODE=$(redis-cli hget "$KEY" mode 2>/dev/null || echo "")
73
+ MAX_AGENTS=$(redis-cli hget "$KEY" max_agents 2>/dev/null || echo "")
74
+ LOOP3_AGENTS=$(redis-cli hget "$KEY" loop3_agents 2>/dev/null || echo "")
75
+ LOOP2_AGENTS=$(redis-cli hget "$KEY" loop2_agents 2>/dev/null || echo "")
76
+ PRODUCT_OWNER=$(redis-cli hget "$KEY" product_owner 2>/dev/null || echo "")
77
+ CREATED_AT=$(redis-cli hget "$KEY" created_at 2>/dev/null || echo "")
78
+ STATUS=$(redis-cli hget "$KEY" status 2>/dev/null || echo "in_progress")
79
+ FINAL_CONSENSUS=$(redis-cli hget "$KEY" final_consensus 2>/dev/null || echo "")
80
+ TOTAL_ITERATIONS=$(redis-cli hget "$KEY" total_iterations 2>/dev/null || echo "")
81
+ COMPLETED_AT=$(redis-cli hget "$KEY" completed_at 2>/dev/null || echo "")
82
+
83
+ # Apply filters
84
+ if [ -n "$TASK_ID_FILTER" ] && [ "$TASK_ID" != "$TASK_ID_FILTER" ]; then
85
+ continue
86
+ fi
87
+
88
+ if [ -n "$MODE_FILTER" ] && [ "$MODE" != "$MODE_FILTER" ]; then
89
+ continue
90
+ fi
91
+
92
+ # Output
93
+ if [ "$JSON_OUTPUT" = true ]; then
94
+ if [ "$FIRST" = false ]; then
95
+ echo ","
96
+ fi
97
+ FIRST=false
98
+
99
+ cat <<EOF
100
+ {
101
+ "swarm_id": "$SWARM_ID",
102
+ "task_id": "$TASK_ID",
103
+ "mode": "$MODE",
104
+ "status": "$STATUS",
105
+ "max_agents": $MAX_AGENTS,
106
+ "loop3_agents": "$LOOP3_AGENTS",
107
+ "loop2_agents": "$LOOP2_AGENTS",
108
+ "product_owner": "$PRODUCT_OWNER",
109
+ "created_at": "$CREATED_AT",
110
+ "final_consensus": "$FINAL_CONSENSUS",
111
+ "total_iterations": "$TOTAL_ITERATIONS",
112
+ "completed_at": "$COMPLETED_AT"
113
+ }
114
+ EOF
115
+ else
116
+ echo "========================================="
117
+ echo "Swarm ID: $SWARM_ID"
118
+ echo "Task ID: $TASK_ID"
119
+ echo "Mode: $MODE"
120
+ echo "Status: $STATUS"
121
+ echo "Agents: $MAX_AGENTS total"
122
+ echo " Loop 3: $LOOP3_AGENTS"
123
+ echo " Loop 2: $LOOP2_AGENTS"
124
+ echo " Product Owner: $PRODUCT_OWNER"
125
+ echo "Created: $CREATED_AT"
126
+
127
+ if [ -n "$COMPLETED_AT" ]; then
128
+ echo "Completed: $COMPLETED_AT"
129
+ echo "Final Consensus: $FINAL_CONSENSUS"
130
+ echo "Total Iterations: $TOTAL_ITERATIONS"
131
+ fi
132
+
133
+ echo ""
134
+ fi
135
+
136
+ done <<< "$SWARM_KEYS"
137
+
138
+ # Close JSON array
139
+ if [ "$JSON_OUTPUT" = true ]; then
140
+ echo ""
141
+ echo "],"
142
+
143
+ # Count swarms
144
+ COUNT=$(echo "$SWARM_KEYS" | wc -l)
145
+ echo "\"count\": $COUNT"
146
+ echo "}"
147
+ fi
@@ -0,0 +1,109 @@
1
+ #!/bin/bash
2
+ ##############################################################################
3
+ # CFN Loop Event Logging to SQLite
4
+ #
5
+ # Usage:
6
+ # ./log-event.sh --task-id <id> --event-type <type> [options]
7
+ #
8
+ # Parameters:
9
+ # --task-id Task/swarm identifier (required)
10
+ # --event-type Event type: spawn, complete, gate_check, decision, error, etc. (required)
11
+ # --details JSON payload with event-specific data (optional, default: {})
12
+ # --level Log level: DEBUG, INFO, WARN, ERROR (optional, default: INFO)
13
+ # --loop Loop identifier: loop3, loop2, product_owner, coordinator (optional)
14
+ # --agent-id Agent identifier (optional)
15
+ # --iteration Iteration number (optional)
16
+ #
17
+ # Example:
18
+ # ./log-event.sh \
19
+ # --task-id "cfn-task-123" \
20
+ # --event-type "agent_spawn" \
21
+ # --loop "loop3" \
22
+ # --agent-id "coder-1" \
23
+ # --iteration 1 \
24
+ # --details '{"agent_type": "coder", "timeout": 900}' \
25
+ # --level "INFO"
26
+ ##############################################################################
27
+
28
+ set -euo pipefail
29
+
30
+ # Configuration
31
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
32
+ # Default to project root data/ directory (consistent with web portal)
33
+ PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.claude/skills/cfn-cfn-.." && pwd)"
34
+ DB_PATH="${DB_PATH:-${PROJECT_ROOT}/data/cfn-loop.db}"
35
+
36
+ # Parameters
37
+ TASK_ID=""
38
+ EVENT_TYPE=""
39
+ DETAILS="{}"
40
+ LEVEL="INFO"
41
+ LOOP=""
42
+ AGENT_ID=""
43
+ ITERATION=""
44
+
45
+ # Parse arguments
46
+ while [[ $# -gt 0 ]]; do
47
+ case $1 in
48
+ --task-id) TASK_ID="$2"; shift 2 ;;
49
+ --event-type) EVENT_TYPE="$2"; shift 2 ;;
50
+ --details) DETAILS="$2"; shift 2 ;;
51
+ --level) LEVEL="$2"; shift 2 ;;
52
+ --loop) LOOP="$2"; shift 2 ;;
53
+ --agent-id) AGENT_ID="$2"; shift 2 ;;
54
+ --iteration) ITERATION="$2"; shift 2 ;;
55
+ *) echo "Unknown option: $1" >&2; exit 1 ;;
56
+ esac
57
+ done
58
+
59
+ # Validate required parameters
60
+ if [ -z "$TASK_ID" ] || [ -z "$EVENT_TYPE" ]; then
61
+ echo "Error: --task-id and --event-type are required" >&2
62
+ echo "Usage: $0 --task-id <id> --event-type <type> [--details <json>] [--level <level>] [--loop <loop>] [--agent-id <id>] [--iteration <n>]" >&2
63
+ exit 1
64
+ fi
65
+
66
+ # Validate JSON
67
+ if ! echo "$DETAILS" | jq empty 2>/dev/null; then
68
+ echo "Error: --details must be valid JSON" >&2
69
+ exit 1
70
+ fi
71
+
72
+ # Create data directory if it doesn't exist
73
+ mkdir -p "$(dirname "$DB_PATH")"
74
+
75
+ # Initialize database schema if needed
76
+ sqlite3 "$DB_PATH" <<'EOF'
77
+ CREATE TABLE IF NOT EXISTS cfn_loop_logs (
78
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
79
+ task_id TEXT NOT NULL,
80
+ timestamp TEXT DEFAULT (datetime('now')),
81
+ event_type TEXT NOT NULL,
82
+ loop TEXT,
83
+ agent_id TEXT,
84
+ iteration INTEGER,
85
+ details TEXT,
86
+ level TEXT DEFAULT 'INFO'
87
+ );
88
+
89
+ CREATE INDEX IF NOT EXISTS idx_task_id ON cfn_loop_logs(task_id);
90
+ CREATE INDEX IF NOT EXISTS idx_event_type ON cfn_loop_logs(event_type);
91
+ CREATE INDEX IF NOT EXISTS idx_timestamp ON cfn_loop_logs(timestamp);
92
+ CREATE INDEX IF NOT EXISTS idx_level ON cfn_loop_logs(level);
93
+ EOF
94
+
95
+ # Escape single quotes in JSON for SQLite
96
+ DETAILS_ESCAPED="${DETAILS//\'/\'\'}"
97
+
98
+ # Insert log entry
99
+ sqlite3 "$DB_PATH" <<EOF
100
+ INSERT INTO cfn_loop_logs (task_id, event_type, loop, agent_id, iteration, details, level)
101
+ VALUES ('$TASK_ID', '$EVENT_TYPE', '$LOOP', '$AGENT_ID', '$ITERATION', '$DETAILS_ESCAPED', '$LEVEL');
102
+ EOF
103
+
104
+ # Also echo to stderr for orchestrator visibility (with timestamp)
105
+ TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
106
+ echo "[$TIMESTAMP] [$LEVEL] [$EVENT_TYPE] $DETAILS" >&2
107
+
108
+ # Return success
109
+ exit 0