claude-flow-novice 2.6.0 → 2.8.1

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 (364) hide show
  1. package/.claude/adaptive-context/cfn-v3-reflection.json +21 -0
  2. package/.claude/agents/AGENT_LIFECYCLE.md +495 -0
  3. package/.claude/agents/CLAUDE.md +1002 -995
  4. package/.claude/agents/accessibility-advocate.md +457 -0
  5. package/.claude/agents/agent-principles/README.md +226 -226
  6. package/.claude/agents/agent-principles/agent-type-guidelines.md +10 -0
  7. package/.claude/agents/agent-principles/format-selection.md +10 -0
  8. package/.claude/agents/agent-principles/phase4-template-optimization.md +502 -494
  9. package/.claude/agents/agent-principles/prompt-engineering.md +8 -0
  10. package/.claude/agents/agent-principles/quality-metrics.md +8 -0
  11. package/.claude/agents/analysis/code-analyzer.md +7 -17
  12. package/.claude/agents/analysis/code-review/analyze-code-quality.md +2 -104
  13. package/.claude/agents/analysis/perf-analyzer.md +2 -196
  14. package/.claude/agents/context/context-curator.md +78 -84
  15. package/.claude/agents/context/context-reflector.md +27 -81
  16. package/.claude/agents/coordinators/README.md +42 -0
  17. package/.claude/agents/coordinators/cfn-v3-coordinator.md +440 -0
  18. package/.claude/agents/{product-owner-team → coordinators}/cto-agent.md +154 -187
  19. package/.claude/agents/coordinators/multi-sprint-coordinator.md +50 -0
  20. package/.claude/agents/{product-owner-team → coordinators}/product-owner-agent.md +6 -39
  21. package/.claude/agents/{cfn-loop → coordinators}/product-owner.md +72 -17
  22. package/.claude/agents/core-agents/reviewer.md +114 -135
  23. package/.claude/agents/custom/agent-builder.md +637 -637
  24. package/.claude/agents/developers/README.md +69 -0
  25. package/.claude/agents/developers/backend-dev.md +77 -0
  26. package/.claude/agents/{core-agents → developers}/coder.md +131 -26
  27. package/.claude/agents/developers/react-frontend-engineer.md +121 -0
  28. package/.claude/agents/{frontend → developers}/state-architect.md +1 -0
  29. package/.claude/agents/{frontend → developers}/ui-designer.md +1 -0
  30. package/.claude/agents/development/backend/dev-backend-api.md +0 -29
  31. package/.claude/agents/development/npm-package-specialist.md +355 -347
  32. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +8 -0
  33. package/.claude/agents/documentation/api-docs.md +8 -0
  34. package/.claude/agents/github/github-commit-agent.md +125 -117
  35. package/.claude/agents/goal/goal-planner.md +8 -0
  36. package/.claude/agents/infrastructure/README.md +100 -0
  37. package/.claude/agents/{specialized → infrastructure}/devops-engineer.md +131 -150
  38. package/.claude/agents/planners/README.md +94 -0
  39. package/.claude/agents/{core-agents → planners}/analyst.md +1 -22
  40. package/.claude/agents/{planning-team → planners}/api-designer-persona.md +8 -0
  41. package/.claude/agents/{core-agents → planners}/architect.md +7 -20
  42. package/.claude/agents/{core-agents → planners}/planner.md +0 -21
  43. package/.claude/agents/{planning-team → planners}/security-architect-persona.md +8 -28
  44. package/.claude/agents/{planning-team → planners}/system-architect-persona.md +6 -38
  45. package/.claude/agents/{architecture → planners}/system-architect.md +12 -17
  46. package/.claude/agents/product-owner-team/accessibility-advocate-persona.md +132 -161
  47. package/.claude/agents/product-owner-team/power-user-persona.md +149 -182
  48. package/.claude/agents/retrospective-analyst.md +84 -0
  49. package/.claude/agents/reviewers/README.md +58 -0
  50. package/.claude/agents/{analysis → reviewers}/code-quality-validator.md +8 -17
  51. package/.claude/agents/reviewers/reviewer.md +181 -0
  52. package/.claude/agents/sparc/architecture.md +6 -25
  53. package/.claude/agents/sparc/pseudocode.md +6 -0
  54. package/.claude/agents/sparc/refinement.md +6 -0
  55. package/.claude/agents/sparc/specification.md +1 -0
  56. package/.claude/agents/specialists/README.md +60 -0
  57. package/.claude/agents/{core-agents → specialists}/base-template-generator.md +8 -21
  58. package/.claude/agents/{specialized → specialists}/cli-agent-optimizer.md +1 -1
  59. package/.claude/agents/{specialized → specialists}/code-booster.md +1 -0
  60. package/.claude/agents/{consensus → specialists}/consensus-builder.md +1 -17
  61. package/.claude/agents/{specialized/mobile → specialists}/mobile-dev.md +0 -20
  62. package/.claude/agents/{core-agents → specialists}/performance-benchmarker.md +134 -148
  63. package/.claude/agents/{specialized → specialists}/rust-developer.md +1 -20
  64. package/.claude/agents/{specialized → specialists}/rust-enterprise-developer.md +1 -20
  65. package/.claude/agents/{specialized → specialists}/rust-mvp-developer.md +1 -20
  66. package/.claude/agents/{core-agents → specialists}/security-manager.md +68 -88
  67. package/.claude/agents/{security → specialists}/security-specialist-existing.md +6 -57
  68. package/.claude/agents/{security → specialists}/security-specialist.md +6 -30
  69. package/.claude/agents/{specialized/mobile → specialists}/spec-mobile-react-native.md +2 -21
  70. package/.claude/agents/testers/README.md +94 -0
  71. package/.claude/agents/{testing → testers}/e2e/playwright-agent.md +1 -20
  72. package/.claude/agents/{testing → testers}/interaction-tester.md +1 -20
  73. package/.claude/agents/{testing → testers}/playwright-tester.md +1 -1
  74. package/.claude/agents/testers/tester.md +139 -0
  75. package/.claude/agents/testers/unit/tdd-london-swarm.md +49 -0
  76. package/.claude/agents/testers/validation/production-validator.md +33 -0
  77. package/.claude/agents-ignore/cfn-loop-coordinator.md +157 -0
  78. package/.claude/agents-ignore/cfn-loop-coordinator.md.backup +156 -0
  79. package/.claude/agents-ignore/coordinator.md.backup +182 -0
  80. package/.claude/agents-ignore/cost-savings-cfn-loop-coordinator.md +760 -0
  81. package/.claude/agents-ignore/cost-savings-coordinator.md +173 -0
  82. package/.claude/artifacts/ace-reflections/REFLECT-001-summary.json +39 -0
  83. package/.claude/artifacts/ace-reflections/sprint-7_$(date -u +/"%Y%m%d_%H%M%S/").json" +47 -0
  84. package/.claude/commands/CFN_COORDINATOR_PARAMETERS.md +10 -10
  85. package/.claude/commands/cfn-loop-epic.md +3 -3
  86. package/.claude/commands/cfn-loop-single.md +3 -3
  87. package/.claude/commands/cfn-loop-sprints.md +1 -1
  88. package/.claude/commands/cfn-loop.md +3 -3
  89. package/.claude/commands/cfn-mode.md +20 -0
  90. package/.claude/commands/write-plan.md +104 -0
  91. package/.claude/data/cfn-loop.db +0 -0
  92. package/.claude/data/cfn_loop_logs.db +0 -0
  93. package/.claude/hooks/BACKUP_USAGE.md +243 -0
  94. package/.claude/hooks/post-edit-cfn-retrospective.sh +79 -0
  95. package/.claude/hooks/post-edit.sh +21 -0
  96. package/.claude/hooks/pre-edit-backup.sh +71 -0
  97. package/.claude/hooks/restore-from-backup.sh +37 -0
  98. package/.claude/prompts/cfn-loop-context.md +115 -0
  99. package/.claude/prompts/loop-specific/loop2.md +50 -0
  100. package/.claude/prompts/loop-specific/loop3.md +43 -0
  101. package/.claude/prompts/loop-specific/loop4.md +54 -0
  102. package/.claude/root-claude-distribute/CLAUDE.md +76 -2
  103. package/.claude/skills/ace-system/sprint-7-lessons.json +46 -0
  104. package/.claude/skills/ace-system/store-reflection.sh +33 -136
  105. package/.claude/skills/agent-discovery/SKILL.md +40 -0
  106. package/.claude/skills/agent-discovery/agents-registry-clean.json +0 -0
  107. package/.claude/skills/agent-discovery/agents-registry-fixed.json +19 -0
  108. package/.claude/skills/agent-discovery/agents-registry.json +718 -0
  109. package/.claude/skills/agent-discovery/discover-agents.py +175 -0
  110. package/.claude/skills/agent-discovery/discover-agents.sh +87 -0
  111. package/.claude/skills/agent-discovery/invoke-registry.sh +11 -0
  112. package/.claude/skills/agent-discovery/temp_script.py +0 -0
  113. package/.claude/skills/agent-output-processing/SKILL.md +359 -0
  114. package/.claude/skills/agent-selector/SKILL.md +90 -0
  115. package/.claude/skills/agent-selector/select-agents.sh +96 -0
  116. package/.claude/skills/agent-spawning/agent-selection-guide.md +1 -1
  117. package/.claude/skills/agent-swap/SKILL.md +36 -0
  118. package/.claude/skills/agent-swap/recommend-swap.sh +60 -0
  119. package/.claude/skills/api-validation/test-endpoints.sh +54 -0
  120. package/.claude/skills/automatic-memory-persistence/SKILL.md +73 -0
  121. package/.claude/skills/automatic-memory-persistence/persist-agent-output.sh +49 -0
  122. package/.claude/skills/automatic-memory-persistence/query-agent-history.sh +35 -0
  123. package/.claude/skills/automatic-memory-persistence/test-memory-persistence.sh +235 -0
  124. package/.claude/skills/cfn-loop-orchestration/README.md +41 -0
  125. package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
  126. package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
  127. package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
  128. package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
  129. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
  130. package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
  131. package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
  132. package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
  133. package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
  134. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +840 -0
  135. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
  136. package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
  137. package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
  138. package/.claude/skills/cfn-loop-validation/SKILL.md +307 -217
  139. package/.claude/skills/complexity-estimator/SKILL.md +96 -0
  140. package/.claude/skills/complexity-estimator/estimate-complexity.sh +144 -0
  141. package/.claude/skills/context-pruner/SKILL.md +75 -0
  142. package/.claude/skills/context-pruner/prune-context.sh +73 -0
  143. package/.claude/skills/defense-in-depth/SKILL.md +133 -0
  144. package/.claude/skills/dependency-extractor/SKILL.md +35 -0
  145. package/.claude/skills/dependency-extractor/extract-dependencies.sh +66 -0
  146. package/.claude/skills/epic-decomposer/SKILL.md +44 -0
  147. package/.claude/skills/epic-decomposer/decompose-epic.sh +104 -0
  148. package/.claude/skills/improvement-recommender/SKILL.md +33 -0
  149. package/.claude/skills/improvement-recommender/recommend-improvements.sh +92 -0
  150. package/.claude/skills/intervention-detector/SKILL.md +39 -0
  151. package/.claude/skills/intervention-detector/detect-intervention.sh +111 -0
  152. package/.claude/skills/intervention-orchestrator/SKILL.md +43 -0
  153. package/.claude/skills/intervention-orchestrator/execute-intervention.sh +59 -0
  154. package/.claude/skills/loop2-output-processing/SKILL.md +163 -0
  155. package/.claude/skills/loop2-output-processing/execute-and-extract.sh +77 -0
  156. package/.claude/skills/loop2-output-processing/execute-and-extract.sh.backup +36 -0
  157. package/.claude/skills/loop2-output-processing/parse-feedback.sh +147 -0
  158. package/.claude/skills/loop2-output-processing/process-validator-output.sh +275 -0
  159. package/.claude/skills/loop2-output-processing/test-bug27-fix.sh +200 -0
  160. package/.claude/skills/loop2-output-processing/test-loop2-processing.sh +113 -0
  161. package/.claude/skills/loop3-output-processing/AGENT_COMPLETION_PROTOCOL.md +206 -0
  162. package/.claude/skills/loop3-output-processing/SKILL.md +421 -0
  163. package/.claude/skills/loop3-output-processing/calculate-confidence.sh +28 -0
  164. package/.claude/skills/loop3-output-processing/execute-and-extract.sh +85 -0
  165. package/.claude/skills/loop3-output-processing/parse-confidence.sh +31 -0
  166. package/.claude/skills/loop3-output-processing/test-agent-timeout.sh +327 -0
  167. package/.claude/skills/loop3-output-processing/test-loop3-processing.sh +155 -0
  168. package/.claude/skills/loop3-output-processing/verify-deliverables.sh +42 -0
  169. package/.claude/skills/pattern-extraction/SKILL.md +30 -0
  170. package/.claude/skills/pattern-extraction/extract-patterns.sh +80 -0
  171. package/.claude/skills/playbook/SKILL.md +113 -0
  172. package/.claude/skills/playbook/init-playbook.sh +54 -0
  173. package/.claude/skills/playbook/playbook.db +0 -0
  174. package/.claude/skills/playbook/query-playbook.sh +79 -0
  175. package/.claude/skills/playbook/update-playbook.sh +69 -0
  176. package/.claude/skills/playbook-auto-update/SKILL.md +29 -0
  177. package/.claude/skills/playbook-auto-update/auto-update-playbook.sh +86 -0
  178. package/.claude/skills/product-owner-decision/SKILL.md +332 -0
  179. package/.claude/skills/product-owner-decision/execute-decision.sh +176 -0
  180. package/.claude/skills/product-owner-decision/parse-decision.sh +66 -0
  181. package/.claude/skills/product-owner-decision/validate-deliverables.sh +82 -0
  182. package/.claude/skills/redis-coordination/LOGGING.md +260 -0
  183. package/.claude/skills/redis-coordination/README.md +30 -29
  184. package/.claude/skills/redis-coordination/SKILL.md +685 -83
  185. package/.claude/skills/redis-coordination/analyze-task-complexity.sh +277 -0
  186. package/.claude/skills/redis-coordination/cfn-loop-exec.sh +468 -0
  187. package/.claude/skills/redis-coordination/collect-confidence-scores.sh +179 -0
  188. package/.claude/skills/redis-coordination/collect-results.sh +75 -0
  189. package/.claude/skills/redis-coordination/data/cfn-loop.db +0 -0
  190. package/.claude/skills/redis-coordination/{test-orchestrator.sh → demos/test-orchestrator.sh} +25 -0
  191. package/.claude/skills/redis-coordination/execute-product-owner-decision.sh +258 -0
  192. package/.claude/skills/redis-coordination/get-agent-timeout.sh +176 -176
  193. package/.claude/skills/redis-coordination/invoke-waiting-mode.sh +93 -227
  194. package/.claude/skills/redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
  195. package/.claude/skills/redis-coordination/log-event.sh +109 -0
  196. package/.claude/skills/redis-coordination/monitor-cfn-violations.sh +391 -0
  197. package/.claude/skills/redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
  198. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh +31 -993
  199. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
  200. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
  201. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
  202. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
  203. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
  204. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
  205. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  206. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
  207. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
  208. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
  209. package/.claude/skills/redis-coordination/query-logs.sh +103 -0
  210. package/.claude/skills/redis-coordination/retrieve-context.sh +58 -0
  211. package/.claude/skills/redis-coordination/select-specialist-agent.sh +371 -0
  212. package/.claude/skills/redis-coordination/semantic-match-tfidf.py +252 -0
  213. package/.claude/skills/redis-coordination/send-heartbeat.sh +164 -72
  214. package/.claude/skills/redis-coordination/signal.sh +38 -0
  215. package/.claude/skills/redis-coordination/store-context.sh +86 -0
  216. package/.claude/skills/redis-coordination/test-context-injection.sh +354 -0
  217. package/.claude/skills/redis-coordination/test-timeout-enforcement.sh +513 -0
  218. package/.claude/skills/redis-coordination/tests/convert-line-endings.sh +15 -0
  219. package/.claude/skills/redis-coordination/tests/dlq-functionality-test.sh +101 -101
  220. package/.claude/skills/redis-coordination/tests/edge-cases-test.sh +98 -98
  221. package/.claude/skills/redis-coordination/tests/integration-test.sh +169 -169
  222. package/.claude/skills/redis-coordination/tests/retry-mechanism-test.sh +81 -81
  223. package/.claude/skills/redis-coordination/tests/run-test-suite.sh +91 -91
  224. package/.claude/skills/redis-coordination/tests/run-tests.sh +4 -0
  225. package/.claude/skills/redis-coordination/tests/test-primitives.sh +166 -0
  226. package/.claude/skills/redis-coordination/tests/test-utils.sh +53 -121
  227. package/.claude/skills/redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
  228. package/.claude/skills/redis-coordination/tests/test_utils.sh +49 -0
  229. package/.claude/skills/redis-coordination/v2_modularization/core_orchestration.sh +76 -0
  230. package/.claude/skills/redis-coordination/validate-parameters.sh +492 -0
  231. package/.claude/skills/retrospective-report/SKILL.md +31 -0
  232. package/.claude/skills/retrospective-report/generate-report.sh +101 -0
  233. package/.claude/skills/run-all-skill-tests.sh +124 -0
  234. package/.claude/skills/scope-simplifier/SKILL.md +37 -0
  235. package/.claude/skills/scope-simplifier/simplify-scope.sh +68 -0
  236. package/.claude/skills/simplified-agent-lifecycle/COST_ANALYSIS.md +49 -0
  237. package/.claude/skills/simplified-agent-lifecycle/DESIGN.md +98 -0
  238. package/.claude/skills/simplified-agent-lifecycle/MIGRATION_PLAN.md +74 -0
  239. package/.claude/skills/specialist-injection/SKILL.md +41 -0
  240. package/.claude/skills/specialist-injection/recommend-specialist.sh +57 -0
  241. package/.claude/skills/sprint-execution/SKILL.md +27 -0
  242. package/.claude/skills/sprint-execution/execute-sprint-task.sh +59 -0
  243. package/.claude/skills/sprint-execution/execute-sprint.sh +65 -0
  244. package/.claude/skills/sprint-planner/SKILL.md +37 -0
  245. package/.claude/skills/sprint-planner/plan-sprint.sh +85 -0
  246. package/.claude/skills/standardized-error-handling/SKILL.md +56 -0
  247. package/.claude/skills/standardized-error-handling/capture-agent-error.sh +87 -0
  248. package/.claude/skills/standardized-error-handling/test-error-handling.sh +166 -0
  249. package/.claude/skills/task-classifier/SKILL.md +94 -0
  250. package/.claude/skills/task-classifier/classify-task.sh +115 -0
  251. package/.claude/skills/validation-templates/SKILL.md +47 -0
  252. package/.claude/skills/validation-templates/content.json +38 -0
  253. package/.claude/skills/validation-templates/data.json +38 -0
  254. package/.claude/skills/validation-templates/design.json +38 -0
  255. package/.claude/skills/validation-templates/infrastructure.json +38 -0
  256. package/.claude/skills/validation-templates/research.json +38 -0
  257. package/.claude/skills/validation-templates/software.json +38 -0
  258. package/.claude/skills/webapp-testing/README.md +142 -0
  259. package/.claude/skills/webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
  260. package/.claude/skills/webapp-testing/SKILL.md +877 -0
  261. package/.claude/skills/webapp-testing/capture-screenshot.sh +238 -0
  262. package/.claude/skills/webapp-testing/cfn-loop-integration.sh +265 -0
  263. package/.claude/skills/webapp-testing/compare-screenshots.sh +199 -0
  264. package/.claude/skills/webapp-testing/init-storage.sh +150 -0
  265. package/.claude/skills/webapp-testing/set-baseline.sh +196 -0
  266. package/.claude/skills/webapp-testing/test-webapp-testing.sh +233 -0
  267. package/.claude/spawn-pattern-examples.md +3 -3
  268. package/CLAUDE.md +319 -45
  269. package/README.md +598 -251
  270. package/dist/agents/agent-loader.js +146 -165
  271. package/dist/agents/agent-loader.js.map +1 -1
  272. package/dist/cli/agent-command.js +2 -0
  273. package/dist/cli/agent-command.js.map +1 -1
  274. package/dist/cli/agent-definition-parser.js +7 -0
  275. package/dist/cli/agent-definition-parser.js.map +1 -1
  276. package/dist/cli/agent-executor.js +145 -11
  277. package/dist/cli/agent-executor.js.map +1 -1
  278. package/dist/cli/agent-prompt-builder.js +81 -1
  279. package/dist/cli/agent-prompt-builder.js.map +1 -1
  280. package/dist/cli/agent-spawn.js +10 -1
  281. package/dist/cli/agent-spawn.js.map +1 -1
  282. package/dist/cli/anthropic-client.js +192 -13
  283. package/dist/cli/anthropic-client.js.map +1 -1
  284. package/dist/cli/cfn-context.js +150 -0
  285. package/dist/cli/cfn-context.js.map +1 -1
  286. package/dist/cli/cfn-fork.js +159 -0
  287. package/dist/cli/cfn-fork.js.map +1 -0
  288. package/dist/cli/cli-agent-context.js +8 -3
  289. package/dist/cli/cli-agent-context.js.map +1 -1
  290. package/dist/cli/config-manager.js +109 -91
  291. package/dist/cli/config-manager.js.map +1 -1
  292. package/dist/cli/conversation-fork.js +201 -0
  293. package/dist/cli/conversation-fork.js.map +1 -0
  294. package/dist/cli/index.js +4 -0
  295. package/dist/cli/index.js.map +1 -1
  296. package/dist/cli/tool-definitions.js +263 -0
  297. package/dist/cli/tool-definitions.js.map +1 -0
  298. package/dist/cli/tool-executor.js +247 -0
  299. package/dist/cli/tool-executor.js.map +1 -0
  300. package/dist/hello.js +8 -0
  301. package/dist/hello.js.map +1 -0
  302. package/package.json +14 -6
  303. package/scripts/README.md +68 -0
  304. package/scripts/cfn-intervention-example.sh +21 -0
  305. package/scripts/migrate-test-infrastructure.sh +40 -0
  306. package/scripts/validate-test-migration.sh +49 -0
  307. package/scripts/verify-no-secrets.sh +55 -0
  308. package/.claude/agents/architecture/system-architect.md.backup +0 -603
  309. package/.claude/agents/code-booster.md +0 -131
  310. package/.claude/agents/consensus/performance-benchmarker.md +0 -101
  311. package/.claude/agents/consensus/security-manager.md +0 -107
  312. package/.claude/agents/context-curator.md +0 -167
  313. package/.claude/agents/context-reflector.md +0 -65
  314. package/.claude/agents/core-agents/cfn-loop-coordinator.md +0 -134
  315. package/.claude/agents/core-agents/code-quality-validator.md +0 -149
  316. package/.claude/agents/core-agents/context-curator.md +0 -452
  317. package/.claude/agents/core-agents/context-reflector.md +0 -273
  318. package/.claude/agents/core-agents/cost-savings-cfn-loop-coordinator.md +0 -235
  319. package/.claude/agents/core-agents/tester.md +0 -170
  320. package/.claude/agents/development/backend-dev.md +0 -165
  321. package/.claude/agents/devops/devops-engineer.md +0 -148
  322. package/.claude/agents/frontend/interaction-tester.md +0 -139
  323. package/.claude/agents/frontend/react-frontend-engineer.md +0 -9
  324. package/.claude/agents/personas/accessibility-advocate-persona.md +0 -107
  325. package/.claude/agents/testing/production-validator.md +0 -179
  326. package/.claude/agents/testing/tdd-london-swarm.md +0 -209
  327. package/.claude/agents/testing/unit/tdd-london-swarm.md +0 -43
  328. package/.claude/agents/testing/validation/production-validator.md +0 -43
  329. package/.claude/api-configs/config-current-zai-config.env +0 -62
  330. package/.claude/api-configs/config-test-zai-config.env +0 -62
  331. package/.claude/api-configs/env-backups/before-anthropic-20251020-025404.env +0 -62
  332. package/.claude/api-configs/env-backups/before-restore-20251020-025431.env +0 -62
  333. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1760949407 +0 -933
  334. package/dist/cli/cli-agent-context.test.js +0 -451
  335. package/dist/cli/cli-agent-context.test.js.map +0 -1
  336. package/dist/coordination/fleet-manager.test.js +0 -141
  337. package/dist/coordination/fleet-manager.test.js.map +0 -1
  338. package/dist/middleware/transparency-middleware.test.js +0 -184
  339. package/dist/middleware/transparency-middleware.test.js.map +0 -1
  340. /package/.claude/agents/{core-agents → developers}/researcher.md +0 -0
  341. /package/.claude/agents/{consensus → specialists}/crdt-synchronizer.md +0 -0
  342. /package/.claude/agents/{consensus → specialists}/quorum-manager.md +0 -0
  343. /package/.claude/agents/{consensus → specialists}/raft-manager.md +0 -0
  344. /package/.claude/{agents/core-agents → agents-ignore}/coordinator.md +0 -0
  345. /package/.claude/{agents/core-agents/cost-savings-coordinator.md → agents-ignore/cost-savings-coordinator.md.backup} +0 -0
  346. /package/.claude/skills/redis-coordination/{phase4-wake-queue-test-report.md → demos/phase4-wake-queue-test-report.md} +0 -0
  347. /package/.claude/skills/redis-coordination/{test-bzpopmin-fix.sh → demos/test-bzpopmin-fix.sh} +0 -0
  348. /package/.claude/skills/redis-coordination/{test-cancel-swarm.sh → demos/test-cancel-swarm.sh} +0 -0
  349. /package/.claude/skills/redis-coordination/{test-dlq.sh → demos/test-dlq.sh} +0 -0
  350. /package/.claude/skills/redis-coordination/{test-iteration-feedback.sh → demos/test-iteration-feedback.sh} +0 -0
  351. /package/.claude/skills/redis-coordination/{test-priority-wake-phase4-unix.sh → demos/test-priority-wake-phase4-unix.sh} +0 -0
  352. /package/.claude/skills/redis-coordination/{test-priority-wake-phase4.sh → demos/test-priority-wake-phase4.sh} +0 -0
  353. /package/.claude/skills/redis-coordination/{test-priority-wake.sh → demos/test-priority-wake.sh} +0 -0
  354. /package/.claude/skills/redis-coordination/{test-quick-fix.sh → demos/test-quick-fix.sh} +0 -0
  355. /package/.claude/skills/redis-coordination/{test-quorum-absolute.sh → demos/test-quorum-absolute.sh} +0 -0
  356. /package/.claude/skills/redis-coordination/{test-quorum-fallback.sh → demos/test-quorum-fallback.sh} +0 -0
  357. /package/.claude/skills/redis-coordination/{test-quorum-percentage.sh → demos/test-quorum-percentage.sh} +0 -0
  358. /package/.claude/skills/redis-coordination/{test-quorum-with-retry.sh → demos/test-quorum-with-retry.sh} +0 -0
  359. /package/.claude/skills/redis-coordination/{test-quorum.sh → demos/test-quorum.sh} +0 -0
  360. /package/.claude/skills/redis-coordination/{test-shutdown-handling.sh → demos/test-shutdown-handling.sh} +0 -0
  361. /package/.claude/skills/redis-coordination/{test-shutdown.sh → demos/test-shutdown.sh} +0 -0
  362. /package/.claude/skills/redis-coordination/{test-utils-unix.sh → demos/test-utils-unix.sh} +0 -0
  363. /package/.claude/skills/redis-coordination/{test-utils.sh → demos/test-utils.sh} +0 -0
  364. /package/.claude/skills/redis-coordination/{test-waiting-mode.sh → demos/test-waiting-mode.sh} +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,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}/../.." && 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