claude-flow-novice 2.5.2 → 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 (370) 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 -1233
  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 -0
  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/artifacts/reflection-merge-logs/cli-agent-spawning-v2.5.2-merge-report.md +61 -0
  85. package/.claude/commands/CFN_COORDINATOR_PARAMETERS.md +10 -10
  86. package/.claude/commands/cfn-loop-epic.md +43 -19
  87. package/.claude/commands/cfn-loop-single.md +3 -3
  88. package/.claude/commands/cfn-loop-sprints.md +1 -1
  89. package/.claude/commands/cfn-loop.md +45 -32
  90. package/.claude/commands/cfn-mode.md +20 -0
  91. package/.claude/commands/custom-routing-activate.md +37 -123
  92. package/.claude/commands/custom-routing-deactivate.md +27 -124
  93. package/.claude/commands/switch-api.md +41 -16
  94. package/.claude/commands/write-plan.md +104 -0
  95. package/.claude/data/cfn-loop.db +0 -0
  96. package/.claude/data/cfn_loop_logs.db +0 -0
  97. package/.claude/hooks/BACKUP_USAGE.md +243 -0
  98. package/.claude/hooks/post-edit-cfn-retrospective.sh +79 -0
  99. package/.claude/hooks/post-edit.sh +21 -0
  100. package/.claude/hooks/pre-edit-backup.sh +71 -0
  101. package/.claude/hooks/restore-from-backup.sh +37 -0
  102. package/.claude/prompts/cfn-loop-context.md +115 -0
  103. package/.claude/prompts/loop-specific/loop2.md +50 -0
  104. package/.claude/prompts/loop-specific/loop3.md +43 -0
  105. package/.claude/prompts/loop-specific/loop4.md +54 -0
  106. package/.claude/root-claude-distribute/CLAUDE.md +76 -2
  107. package/.claude/skills/ace-system/sprint-7-lessons.json +46 -0
  108. package/.claude/skills/ace-system/store-reflection.sh +33 -136
  109. package/.claude/skills/agent-discovery/SKILL.md +40 -0
  110. package/.claude/skills/agent-discovery/agents-registry-clean.json +0 -0
  111. package/.claude/skills/agent-discovery/agents-registry-fixed.json +19 -0
  112. package/.claude/skills/agent-discovery/agents-registry.json +718 -0
  113. package/.claude/skills/agent-discovery/discover-agents.py +175 -0
  114. package/.claude/skills/agent-discovery/discover-agents.sh +87 -0
  115. package/.claude/skills/agent-discovery/invoke-registry.sh +11 -0
  116. package/.claude/skills/agent-discovery/temp_script.py +0 -0
  117. package/.claude/skills/agent-execution/execute-agent.sh +126 -0
  118. package/.claude/skills/agent-output-processing/SKILL.md +359 -0
  119. package/.claude/skills/agent-selector/SKILL.md +90 -0
  120. package/.claude/skills/agent-selector/select-agents.sh +96 -0
  121. package/.claude/skills/agent-spawning/agent-selection-guide.md +1 -1
  122. package/.claude/skills/agent-swap/SKILL.md +36 -0
  123. package/.claude/skills/agent-swap/recommend-swap.sh +60 -0
  124. package/.claude/skills/api-validation/test-endpoints.sh +54 -0
  125. package/.claude/skills/automatic-memory-persistence/SKILL.md +73 -0
  126. package/.claude/skills/automatic-memory-persistence/persist-agent-output.sh +49 -0
  127. package/.claude/skills/automatic-memory-persistence/query-agent-history.sh +35 -0
  128. package/.claude/skills/automatic-memory-persistence/test-memory-persistence.sh +235 -0
  129. package/.claude/skills/cfn-loop-orchestration/README.md +41 -0
  130. package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
  131. package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
  132. package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
  133. package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
  134. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
  135. package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
  136. package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
  137. package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
  138. package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
  139. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +840 -0
  140. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
  141. package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
  142. package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
  143. package/.claude/skills/cfn-loop-validation/SKILL.md +307 -217
  144. package/.claude/skills/complexity-estimator/SKILL.md +96 -0
  145. package/.claude/skills/complexity-estimator/estimate-complexity.sh +144 -0
  146. package/.claude/skills/context-pruner/SKILL.md +75 -0
  147. package/.claude/skills/context-pruner/prune-context.sh +73 -0
  148. package/.claude/skills/defense-in-depth/SKILL.md +133 -0
  149. package/.claude/skills/dependency-extractor/SKILL.md +35 -0
  150. package/.claude/skills/dependency-extractor/extract-dependencies.sh +66 -0
  151. package/.claude/skills/epic-decomposer/SKILL.md +44 -0
  152. package/.claude/skills/epic-decomposer/decompose-epic.sh +104 -0
  153. package/.claude/skills/improvement-recommender/SKILL.md +33 -0
  154. package/.claude/skills/improvement-recommender/recommend-improvements.sh +92 -0
  155. package/.claude/skills/intervention-detector/SKILL.md +39 -0
  156. package/.claude/skills/intervention-detector/detect-intervention.sh +111 -0
  157. package/.claude/skills/intervention-orchestrator/SKILL.md +43 -0
  158. package/.claude/skills/intervention-orchestrator/execute-intervention.sh +59 -0
  159. package/.claude/skills/loop2-output-processing/SKILL.md +163 -0
  160. package/.claude/skills/loop2-output-processing/execute-and-extract.sh +77 -0
  161. package/.claude/skills/loop2-output-processing/execute-and-extract.sh.backup +36 -0
  162. package/.claude/skills/loop2-output-processing/parse-feedback.sh +147 -0
  163. package/.claude/skills/loop2-output-processing/process-validator-output.sh +275 -0
  164. package/.claude/skills/loop2-output-processing/test-bug27-fix.sh +200 -0
  165. package/.claude/skills/loop2-output-processing/test-loop2-processing.sh +113 -0
  166. package/.claude/skills/loop3-output-processing/AGENT_COMPLETION_PROTOCOL.md +206 -0
  167. package/.claude/skills/loop3-output-processing/SKILL.md +421 -0
  168. package/.claude/skills/loop3-output-processing/calculate-confidence.sh +28 -0
  169. package/.claude/skills/loop3-output-processing/execute-and-extract.sh +85 -0
  170. package/.claude/skills/loop3-output-processing/parse-confidence.sh +31 -0
  171. package/.claude/skills/loop3-output-processing/test-agent-timeout.sh +327 -0
  172. package/.claude/skills/loop3-output-processing/test-loop3-processing.sh +155 -0
  173. package/.claude/skills/loop3-output-processing/verify-deliverables.sh +42 -0
  174. package/.claude/skills/pattern-extraction/SKILL.md +30 -0
  175. package/.claude/skills/pattern-extraction/extract-patterns.sh +80 -0
  176. package/.claude/skills/playbook/SKILL.md +113 -0
  177. package/.claude/skills/playbook/init-playbook.sh +54 -0
  178. package/.claude/skills/playbook/playbook.db +0 -0
  179. package/.claude/skills/playbook/query-playbook.sh +79 -0
  180. package/.claude/skills/playbook/update-playbook.sh +69 -0
  181. package/.claude/skills/playbook-auto-update/SKILL.md +29 -0
  182. package/.claude/skills/playbook-auto-update/auto-update-playbook.sh +86 -0
  183. package/.claude/skills/product-owner-decision/SKILL.md +332 -0
  184. package/.claude/skills/product-owner-decision/execute-decision.sh +176 -0
  185. package/.claude/skills/product-owner-decision/parse-decision.sh +66 -0
  186. package/.claude/skills/product-owner-decision/validate-deliverables.sh +82 -0
  187. package/.claude/skills/redis-coordination/AGENT_LOGGING.md +280 -0
  188. package/.claude/skills/redis-coordination/LOGGING.md +260 -0
  189. package/.claude/skills/redis-coordination/README.md +30 -29
  190. package/.claude/skills/redis-coordination/SKILL.md +685 -83
  191. package/.claude/skills/redis-coordination/agent-log.sh +124 -0
  192. package/.claude/skills/redis-coordination/analyze-task-complexity.sh +277 -0
  193. package/.claude/skills/redis-coordination/cfn-loop-exec.sh +468 -0
  194. package/.claude/skills/redis-coordination/collect-confidence-scores.sh +179 -0
  195. package/.claude/skills/redis-coordination/collect-results.sh +75 -0
  196. package/.claude/skills/redis-coordination/data/cfn-loop.db +0 -0
  197. package/.claude/skills/redis-coordination/demos/test-iteration-feedback.sh +320 -0
  198. package/.claude/skills/redis-coordination/{test-orchestrator.sh → demos/test-orchestrator.sh} +25 -0
  199. package/.claude/skills/redis-coordination/execute-product-owner-decision.sh +258 -0
  200. package/.claude/skills/redis-coordination/get-agent-timeout.sh +176 -176
  201. package/.claude/skills/redis-coordination/init-swarm.sh +6 -1
  202. package/.claude/skills/redis-coordination/invoke-waiting-mode.sh +106 -183
  203. package/.claude/skills/redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
  204. package/.claude/skills/redis-coordination/log-event.sh +109 -0
  205. package/.claude/skills/redis-coordination/monitor-cfn-violations.sh +391 -0
  206. package/.claude/skills/redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
  207. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh +31 -933
  208. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
  209. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
  210. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
  211. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
  212. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
  213. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
  214. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  215. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
  216. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
  217. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
  218. package/.claude/skills/redis-coordination/query-logs.sh +103 -0
  219. package/.claude/skills/redis-coordination/retrieve-context.sh +58 -0
  220. package/.claude/skills/redis-coordination/select-specialist-agent.sh +371 -0
  221. package/.claude/skills/redis-coordination/semantic-match-tfidf.py +252 -0
  222. package/.claude/skills/redis-coordination/send-heartbeat.sh +164 -72
  223. package/.claude/skills/redis-coordination/signal.sh +38 -0
  224. package/.claude/skills/redis-coordination/store-context.sh +86 -0
  225. package/.claude/skills/redis-coordination/store-epic-context.sh +123 -0
  226. package/.claude/skills/redis-coordination/test-context-injection.sh +354 -0
  227. package/.claude/skills/redis-coordination/test-timeout-enforcement.sh +513 -0
  228. package/.claude/skills/redis-coordination/tests/convert-line-endings.sh +15 -0
  229. package/.claude/skills/redis-coordination/tests/dlq-functionality-test.sh +101 -101
  230. package/.claude/skills/redis-coordination/tests/edge-cases-test.sh +98 -98
  231. package/.claude/skills/redis-coordination/tests/integration-test.sh +169 -169
  232. package/.claude/skills/redis-coordination/tests/retry-mechanism-test.sh +81 -81
  233. package/.claude/skills/redis-coordination/tests/run-test-suite.sh +91 -91
  234. package/.claude/skills/redis-coordination/tests/run-tests.sh +4 -0
  235. package/.claude/skills/redis-coordination/tests/test-primitives.sh +166 -0
  236. package/.claude/skills/redis-coordination/tests/test-utils.sh +53 -121
  237. package/.claude/skills/redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
  238. package/.claude/skills/redis-coordination/tests/test_utils.sh +49 -0
  239. package/.claude/skills/redis-coordination/v2_modularization/core_orchestration.sh +76 -0
  240. package/.claude/skills/redis-coordination/validate-parameters.sh +492 -0
  241. package/.claude/skills/retrospective-report/SKILL.md +31 -0
  242. package/.claude/skills/retrospective-report/generate-report.sh +101 -0
  243. package/.claude/skills/run-all-skill-tests.sh +124 -0
  244. package/.claude/skills/scope-simplifier/SKILL.md +37 -0
  245. package/.claude/skills/scope-simplifier/simplify-scope.sh +68 -0
  246. package/.claude/skills/simplified-agent-lifecycle/COST_ANALYSIS.md +49 -0
  247. package/.claude/skills/simplified-agent-lifecycle/DESIGN.md +98 -0
  248. package/.claude/skills/simplified-agent-lifecycle/MIGRATION_PLAN.md +74 -0
  249. package/.claude/skills/skill-builder/SKILL.md +910 -0
  250. package/.claude/skills/specialist-injection/SKILL.md +41 -0
  251. package/.claude/skills/specialist-injection/recommend-specialist.sh +57 -0
  252. package/.claude/skills/sprint-execution/SKILL.md +27 -0
  253. package/.claude/skills/sprint-execution/execute-sprint-task.sh +59 -0
  254. package/.claude/skills/sprint-execution/execute-sprint.sh +65 -0
  255. package/.claude/skills/sprint-planner/SKILL.md +37 -0
  256. package/.claude/skills/sprint-planner/plan-sprint.sh +85 -0
  257. package/.claude/skills/standardized-error-handling/SKILL.md +56 -0
  258. package/.claude/skills/standardized-error-handling/capture-agent-error.sh +87 -0
  259. package/.claude/skills/standardized-error-handling/test-error-handling.sh +166 -0
  260. package/.claude/skills/task-classifier/SKILL.md +94 -0
  261. package/.claude/skills/task-classifier/classify-task.sh +115 -0
  262. package/.claude/skills/validation-templates/SKILL.md +47 -0
  263. package/.claude/skills/validation-templates/content.json +38 -0
  264. package/.claude/skills/validation-templates/data.json +38 -0
  265. package/.claude/skills/validation-templates/design.json +38 -0
  266. package/.claude/skills/validation-templates/infrastructure.json +38 -0
  267. package/.claude/skills/validation-templates/research.json +38 -0
  268. package/.claude/skills/validation-templates/software.json +38 -0
  269. package/.claude/skills/webapp-testing/README.md +142 -0
  270. package/.claude/skills/webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
  271. package/.claude/skills/webapp-testing/SKILL.md +877 -0
  272. package/.claude/skills/webapp-testing/capture-screenshot.sh +238 -0
  273. package/.claude/skills/webapp-testing/cfn-loop-integration.sh +265 -0
  274. package/.claude/skills/webapp-testing/compare-screenshots.sh +199 -0
  275. package/.claude/skills/webapp-testing/init-storage.sh +150 -0
  276. package/.claude/skills/webapp-testing/set-baseline.sh +196 -0
  277. package/.claude/skills/webapp-testing/test-webapp-testing.sh +233 -0
  278. package/.claude/spawn-pattern-examples.md +3 -3
  279. package/CLAUDE.md +364 -16
  280. package/README.md +598 -251
  281. package/dist/agents/agent-loader.js +146 -165
  282. package/dist/agents/agent-loader.js.map +1 -1
  283. package/dist/cli/agent-command.js +153 -0
  284. package/dist/cli/agent-command.js.map +1 -0
  285. package/dist/cli/agent-definition-parser.js +183 -0
  286. package/dist/cli/agent-definition-parser.js.map +1 -0
  287. package/dist/cli/agent-executor.js +310 -0
  288. package/dist/cli/agent-executor.js.map +1 -0
  289. package/dist/cli/agent-prompt-builder.js +268 -0
  290. package/dist/cli/agent-prompt-builder.js.map +1 -0
  291. package/dist/cli/agent-spawn.js +56 -2
  292. package/dist/cli/agent-spawn.js.map +1 -1
  293. package/dist/cli/anthropic-client.js +421 -0
  294. package/dist/cli/anthropic-client.js.map +1 -0
  295. package/dist/cli/cfn-context.js +150 -0
  296. package/dist/cli/cfn-context.js.map +1 -1
  297. package/dist/cli/cfn-fork.js +159 -0
  298. package/dist/cli/cfn-fork.js.map +1 -0
  299. package/dist/cli/cli-agent-context.js +358 -0
  300. package/dist/cli/cli-agent-context.js.map +1 -0
  301. package/dist/cli/config-manager.js +109 -91
  302. package/dist/cli/config-manager.js.map +1 -1
  303. package/dist/cli/conversation-fork.js +201 -0
  304. package/dist/cli/conversation-fork.js.map +1 -0
  305. package/dist/cli/index.js +119 -2
  306. package/dist/cli/index.js.map +1 -1
  307. package/dist/cli/iteration-history.js +188 -0
  308. package/dist/cli/iteration-history.js.map +1 -0
  309. package/dist/cli/tool-definitions.js +263 -0
  310. package/dist/cli/tool-definitions.js.map +1 -0
  311. package/dist/cli/tool-executor.js +247 -0
  312. package/dist/cli/tool-executor.js.map +1 -0
  313. package/dist/hello.js +8 -0
  314. package/dist/hello.js.map +1 -0
  315. package/package.json +16 -6
  316. package/scripts/README.md +68 -0
  317. package/scripts/cfn-intervention-example.sh +21 -0
  318. package/scripts/migrate-test-infrastructure.sh +40 -0
  319. package/scripts/switch-api.sh +233 -0
  320. package/scripts/validate-test-migration.sh +49 -0
  321. package/scripts/verify-no-secrets.sh +55 -0
  322. package/.claude/agents/architecture/system-architect.md.backup +0 -603
  323. package/.claude/agents/code-booster.md +0 -131
  324. package/.claude/agents/consensus/performance-benchmarker.md +0 -101
  325. package/.claude/agents/consensus/security-manager.md +0 -107
  326. package/.claude/agents/context-curator.md +0 -167
  327. package/.claude/agents/context-reflector.md +0 -65
  328. package/.claude/agents/core-agents/cfn-loop-coordinator.md +0 -134
  329. package/.claude/agents/core-agents/code-quality-validator.md +0 -149
  330. package/.claude/agents/core-agents/context-curator.md +0 -452
  331. package/.claude/agents/core-agents/context-reflector.md +0 -273
  332. package/.claude/agents/core-agents/cost-savings-cfn-loop-coordinator.md +0 -190
  333. package/.claude/agents/core-agents/tester.md +0 -170
  334. package/.claude/agents/development/backend-dev.md +0 -165
  335. package/.claude/agents/devops/devops-engineer.md +0 -148
  336. package/.claude/agents/frontend/interaction-tester.md +0 -139
  337. package/.claude/agents/frontend/react-frontend-engineer.md +0 -9
  338. package/.claude/agents/personas/accessibility-advocate-persona.md +0 -107
  339. package/.claude/agents/testing/production-validator.md +0 -179
  340. package/.claude/agents/testing/tdd-london-swarm.md +0 -209
  341. package/.claude/agents/testing/unit/tdd-london-swarm.md +0 -43
  342. package/.claude/agents/testing/validation/production-validator.md +0 -43
  343. package/dist/coordination/fleet-manager.test.js +0 -141
  344. package/dist/coordination/fleet-manager.test.js.map +0 -1
  345. package/dist/middleware/transparency-middleware.test.js +0 -184
  346. package/dist/middleware/transparency-middleware.test.js.map +0 -1
  347. /package/.claude/agents/{core-agents → developers}/researcher.md +0 -0
  348. /package/.claude/agents/{consensus → specialists}/crdt-synchronizer.md +0 -0
  349. /package/.claude/agents/{consensus → specialists}/quorum-manager.md +0 -0
  350. /package/.claude/agents/{consensus → specialists}/raft-manager.md +0 -0
  351. /package/.claude/{agents/core-agents → agents-ignore}/coordinator.md +0 -0
  352. /package/.claude/{agents/core-agents/cost-savings-coordinator.md → agents-ignore/cost-savings-coordinator.md.backup} +0 -0
  353. /package/.claude/skills/redis-coordination/{phase4-wake-queue-test-report.md → demos/phase4-wake-queue-test-report.md} +0 -0
  354. /package/.claude/skills/redis-coordination/{test-bzpopmin-fix.sh → demos/test-bzpopmin-fix.sh} +0 -0
  355. /package/.claude/skills/redis-coordination/{test-cancel-swarm.sh → demos/test-cancel-swarm.sh} +0 -0
  356. /package/.claude/skills/redis-coordination/{test-dlq.sh → demos/test-dlq.sh} +0 -0
  357. /package/.claude/skills/redis-coordination/{test-priority-wake-phase4-unix.sh → demos/test-priority-wake-phase4-unix.sh} +0 -0
  358. /package/.claude/skills/redis-coordination/{test-priority-wake-phase4.sh → demos/test-priority-wake-phase4.sh} +0 -0
  359. /package/.claude/skills/redis-coordination/{test-priority-wake.sh → demos/test-priority-wake.sh} +0 -0
  360. /package/.claude/skills/redis-coordination/{test-quick-fix.sh → demos/test-quick-fix.sh} +0 -0
  361. /package/.claude/skills/redis-coordination/{test-quorum-absolute.sh → demos/test-quorum-absolute.sh} +0 -0
  362. /package/.claude/skills/redis-coordination/{test-quorum-fallback.sh → demos/test-quorum-fallback.sh} +0 -0
  363. /package/.claude/skills/redis-coordination/{test-quorum-percentage.sh → demos/test-quorum-percentage.sh} +0 -0
  364. /package/.claude/skills/redis-coordination/{test-quorum-with-retry.sh → demos/test-quorum-with-retry.sh} +0 -0
  365. /package/.claude/skills/redis-coordination/{test-quorum.sh → demos/test-quorum.sh} +0 -0
  366. /package/.claude/skills/redis-coordination/{test-shutdown-handling.sh → demos/test-shutdown-handling.sh} +0 -0
  367. /package/.claude/skills/redis-coordination/{test-shutdown.sh → demos/test-shutdown.sh} +0 -0
  368. /package/.claude/skills/redis-coordination/{test-utils-unix.sh → demos/test-utils-unix.sh} +0 -0
  369. /package/.claude/skills/redis-coordination/{test-utils.sh → demos/test-utils.sh} +0 -0
  370. /package/.claude/skills/redis-coordination/{test-waiting-mode.sh → demos/test-waiting-mode.sh} +0 -0
@@ -0,0 +1,252 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ TF-IDF Semantic Agent Matcher
4
+
5
+ Purpose: Use semantic similarity (TF-IDF + cosine similarity) to match
6
+ task descriptions to optimal agents.
7
+
8
+ Usage:
9
+ ./semantic-match-tfidf.py "Build user dashboard" 0.5
10
+ ./semantic-match-tfidf.py "Create auth system" --threshold 0.6 --json
11
+
12
+ Output:
13
+ agent1,agent2,agent3 (default)
14
+ {"agents": [...]} (--json)
15
+ """
16
+
17
+ import sys
18
+ import json
19
+ import argparse
20
+
21
+ try:
22
+ from sklearn.feature_extraction.text import TfidfVectorizer
23
+ from sklearn.metrics.pairwise import cosine_similarity
24
+ except ImportError:
25
+ print("Error: scikit-learn not installed", file=sys.stderr)
26
+ print("Install: pip install scikit-learn", file=sys.stderr)
27
+ sys.exit(1)
28
+
29
+
30
+ # Agent Registry with Enhanced Semantic Descriptions
31
+ # Each description includes keywords, domains, and related concepts
32
+ AGENTS = {
33
+ "react-frontend-engineer": (
34
+ "React frontend UI components dashboard interface SPA web application "
35
+ "user interface client-side JavaScript TypeScript hooks state management "
36
+ "responsive design web pages forms interactive"
37
+ ),
38
+ "ui-designer": (
39
+ "UI design user experience UX interface design visual design wireframes "
40
+ "mockups prototypes accessibility usability user flows style guide branding"
41
+ ),
42
+ "backend-dev": (
43
+ "API server backend endpoint REST GraphQL database business logic "
44
+ "server-side Node.js Python Java authentication authorization data processing "
45
+ "microservices integration middleware"
46
+ ),
47
+ "rust-developer": (
48
+ "Rust systems programming memory safety concurrency performance "
49
+ "low-level programming async tokio cargo ownership borrowing compiler "
50
+ "systems language native speed"
51
+ ),
52
+ "rust-mvp-developer": (
53
+ "Rust MVP prototype proof-of-concept quick implementation basic features "
54
+ "simple rapid development starter code minimal viable product"
55
+ ),
56
+ "rust-enterprise-developer": (
57
+ "Rust production enterprise advanced optimization performance critical "
58
+ "production-grade scalable robust high-performance mission-critical"
59
+ ),
60
+ "mobile-dev": (
61
+ "React Native mobile iOS Android app development cross-platform "
62
+ "smartphone tablet native modules mobile UI touch gestures mobile UX "
63
+ "app store deployment mobile navigation"
64
+ ),
65
+ "devops-engineer": (
66
+ "infrastructure deployment Docker Kubernetes AWS cloud CI/CD pipeline "
67
+ "automation orchestration containerization cloud infrastructure Terraform "
68
+ "monitoring logging provisioning infrastructure-as-code"
69
+ ),
70
+ "security-specialist": (
71
+ "security authentication encryption RBAC vulnerabilities penetration testing "
72
+ "threat analysis security audit compliance access control authorization "
73
+ "cybersecurity secure coding SSL/TLS security review"
74
+ ),
75
+ "system-architect": (
76
+ "architecture system design component design API design database schema "
77
+ "high-level design scalability patterns microservices architecture decisions "
78
+ "technical leadership design patterns distributed systems"
79
+ ),
80
+ "tester": (
81
+ "testing test unit-test integration-test TDD quality-assurance QA "
82
+ "test-coverage Jest Mocha pytest test-strategy validation verification "
83
+ "automated testing regression testing"
84
+ ),
85
+ "reviewer": (
86
+ "code-review quality-assessment technical-debt code-analysis quality-metrics "
87
+ "code-standards linting static-analysis best-practices code-quality "
88
+ "peer-review refactoring suggestions"
89
+ ),
90
+ "researcher": (
91
+ "research explore investigate analyze study evaluation comparison "
92
+ "proof-of-concept feasibility analysis technical-research documentation "
93
+ "exploration discovery learning experimentation"
94
+ ),
95
+ "coder": (
96
+ "implementation feature-development bug-fix coding general-development "
97
+ "problem-solving code-implementation feature-completion programming "
98
+ "general-purpose development writing code"
99
+ ),
100
+ "perf-analyzer": (
101
+ "performance optimization profiling benchmarking speed efficiency "
102
+ "performance-tuning latency throughput resource-optimization "
103
+ "scalability load-testing stress-testing performance-metrics"
104
+ ),
105
+ "accessibility-advocate": (
106
+ "accessibility WCAG screen-readers keyboard-navigation ARIA semantic-HTML "
107
+ "inclusive-design disability-access a11y accessibility-testing "
108
+ "accessibility-compliance universal-design"
109
+ ),
110
+ "code-quality-validator": (
111
+ "quality-validation architecture-compliance code-standards advanced-quality "
112
+ "deep-analysis compliance-checking quality-gates code-metrics "
113
+ "technical-excellence validation comprehensive-review"
114
+ ),
115
+ "performance-benchmarker": (
116
+ "performance-benchmarking metrics analysis load-testing stress-testing "
117
+ "profiling performance-monitoring benchmark-suite performance-validation "
118
+ "throughput-testing latency-analysis"
119
+ ),
120
+ "product-owner": (
121
+ "product strategy business decisions scope management priorities "
122
+ "stakeholder requirements roadmap planning strategic-decisions "
123
+ "product-vision business-value feature-prioritization"
124
+ ),
125
+ }
126
+
127
+
128
+ def semantic_match(task: str, threshold: float = 0.5, top_n: int = None):
129
+ """
130
+ Match task description to agents using TF-IDF semantic similarity.
131
+
132
+ Args:
133
+ task: Task description string
134
+ threshold: Minimum similarity score (0.0-1.0)
135
+ top_n: Return top N matches (None = all above threshold)
136
+
137
+ Returns:
138
+ List of dicts: [{"agent": "name", "score": 0.85}, ...]
139
+ """
140
+ if not task or not task.strip():
141
+ return []
142
+
143
+ # Build corpus: agent descriptions + task
144
+ corpus = list(AGENTS.values()) + [task]
145
+
146
+ # Vectorize using TF-IDF
147
+ vectorizer = TfidfVectorizer(
148
+ lowercase=True,
149
+ stop_words='english',
150
+ ngram_range=(1, 2), # Unigrams + bigrams
151
+ max_df=0.85, # Ignore very common terms
152
+ min_df=1
153
+ )
154
+
155
+ try:
156
+ tfidf = vectorizer.fit_transform(corpus)
157
+ except ValueError as e:
158
+ # Handle edge case: empty vocabulary
159
+ print(f"Warning: {e}", file=sys.stderr)
160
+ return []
161
+
162
+ # Compute cosine similarity
163
+ task_vector = tfidf[-1] # Last item is the task
164
+ agent_vectors = tfidf[:-1] # All others are agents
165
+ similarities = cosine_similarity(task_vector, agent_vectors)[0]
166
+
167
+ # Build results
168
+ results = []
169
+ for agent_name, score in zip(AGENTS.keys(), similarities):
170
+ if score >= threshold:
171
+ results.append({
172
+ "agent": agent_name,
173
+ "score": float(score)
174
+ })
175
+
176
+ # Sort by score (descending)
177
+ results.sort(key=lambda x: x["score"], reverse=True)
178
+
179
+ # Limit to top N if specified
180
+ if top_n is not None:
181
+ results = results[:top_n]
182
+
183
+ return results
184
+
185
+
186
+ def main():
187
+ parser = argparse.ArgumentParser(
188
+ description="Semantic agent matching using TF-IDF"
189
+ )
190
+ parser.add_argument(
191
+ "task",
192
+ nargs="?",
193
+ default="",
194
+ help="Task description to match against agents"
195
+ )
196
+ parser.add_argument(
197
+ "-t", "--threshold",
198
+ type=float,
199
+ default=0.5,
200
+ help="Minimum similarity threshold (0.0-1.0, default: 0.5)"
201
+ )
202
+ parser.add_argument(
203
+ "-n", "--top-n",
204
+ type=int,
205
+ default=None,
206
+ help="Return top N matches (default: all above threshold)"
207
+ )
208
+ parser.add_argument(
209
+ "-j", "--json",
210
+ action="store_true",
211
+ help="Output as JSON instead of CSV"
212
+ )
213
+ parser.add_argument(
214
+ "-v", "--verbose",
215
+ action="store_true",
216
+ help="Show scores for all matches"
217
+ )
218
+
219
+ args = parser.parse_args()
220
+
221
+ # Get task from args or stdin
222
+ task = args.task
223
+ if not task and not sys.stdin.isatty():
224
+ task = sys.stdin.read().strip()
225
+
226
+ if not task:
227
+ parser.print_help()
228
+ sys.exit(1)
229
+
230
+ # Perform matching
231
+ matches = semantic_match(task, args.threshold, args.top_n)
232
+
233
+ # Output results
234
+ if args.json:
235
+ # JSON output
236
+ print(json.dumps({
237
+ "task": task,
238
+ "threshold": args.threshold,
239
+ "matches": matches
240
+ }, indent=2))
241
+ elif args.verbose:
242
+ # Verbose output with scores
243
+ for match in matches:
244
+ print(f"{match['agent']}: {match['score']:.3f}")
245
+ else:
246
+ # CSV output (agent names only)
247
+ agent_names = [m["agent"] for m in matches]
248
+ print(",".join(agent_names))
249
+
250
+
251
+ if __name__ == "__main__":
252
+ main()
@@ -1,73 +1,165 @@
1
- #!/bin/bash
2
- # Redis Coordination Skill - Agent Heartbeat Sender
3
- # Version: 1.0.0
4
- # Last Updated: 2025-10-19
5
-
6
- # Strict error handling
7
- set -euo pipefail
8
-
9
- # Default values
10
- TASK_ID=""
11
- AGENT_ID=""
12
- STATUS="active"
13
- TTL=60
14
- DETAILS='{}'
15
-
16
- # Parse command-line arguments
17
- while [[ $# -gt 0 ]]; do
18
- case "$1" in
19
- --task-id)
20
- TASK_ID="$2"
21
- shift 2
22
- ;;
23
- --agent-id)
24
- AGENT_ID="$2"
25
- shift 2
26
- ;;
27
- --status)
28
- STATUS="$2"
29
- shift 2
30
- ;;
31
- --ttl)
32
- TTL="$2"
33
- shift 2
34
- ;;
35
- --details)
36
- DETAILS="$2"
37
- shift 2
38
- ;;
39
- *)
40
- echo "Unknown parameter: $1"
41
- exit 1
42
- ;;
43
- esac
44
- done
45
-
46
- # Validate required parameters
47
- if [[ -z "$TASK_ID" || -z "$AGENT_ID" ]]; then
48
- echo "Error: task-id and agent-id are required"
49
- exit 1
50
- fi
51
-
52
- # Generate heartbeat payload
53
- HEARTBEAT_PAYLOAD=$(jq -n \
54
- --arg timestamp "$(date +%s)" \
55
- --arg status "$STATUS" \
56
- --arg task_id "$TASK_ID" \
57
- --arg agent_id "$AGENT_ID" \
58
- --argjson details "$DETAILS" \
59
- '{
60
- "timestamp": $timestamp,
61
- "status": $status,
62
- "task_id": $task_id,
63
- "agent_id": $agent_id,
64
- "details": $details
65
- }')
66
-
67
- # Send heartbeat via Redis
68
- redis-cli setex "swarm:${TASK_ID}:${AGENT_ID}:heartbeat" "$TTL" "$HEARTBEAT_PAYLOAD"
69
-
70
- # Log heartbeat
71
- echo "[$(date -u)] Heartbeat sent: task=${TASK_ID}, agent=${AGENT_ID}, status=${STATUS}" >> /var/log/claude-flow/heartbeats.log
72
-
1
+ #!/bin/bash
2
+ # Redis Coordination Skill - Agent Heartbeat Sender
3
+ # Version: 2.0.0
4
+ # Last Updated: 2025-10-20
5
+ #
6
+ # Usage:
7
+ # # One-shot heartbeat (original behavior)
8
+ # ./send-heartbeat.sh --task-id <id> --agent-id <id>
9
+ #
10
+ # # Start continuous heartbeat loop
11
+ # ./send-heartbeat.sh start --task-id <id> --agent-id <id> --interval 30 &
12
+ # HEARTBEAT_PID=$!
13
+ #
14
+ # # Stop heartbeat loop
15
+ # ./send-heartbeat.sh stop --task-id <id> --agent-id <id> --pid $HEARTBEAT_PID
16
+
17
+ # Strict error handling
18
+ set -euo pipefail
19
+
20
+ # Default values
21
+ ACTION=""
22
+ TASK_ID=""
23
+ AGENT_ID=""
24
+ STATUS="active"
25
+ TTL=60
26
+ INTERVAL=30 # For continuous mode
27
+ HEARTBEAT_PID=""
28
+ DETAILS='{}'
29
+
30
+ # Parse command-line arguments
31
+ while [[ $# -gt 0 ]]; do
32
+ case "$1" in
33
+ start|stop|once)
34
+ ACTION="$1"
35
+ shift
36
+ ;;
37
+ --task-id)
38
+ TASK_ID="$2"
39
+ shift 2
40
+ ;;
41
+ --agent-id)
42
+ AGENT_ID="$2"
43
+ shift 2
44
+ ;;
45
+ --status)
46
+ STATUS="$2"
47
+ shift 2
48
+ ;;
49
+ --ttl)
50
+ TTL="$2"
51
+ shift 2
52
+ ;;
53
+ --interval)
54
+ INTERVAL="$2"
55
+ shift 2
56
+ ;;
57
+ --pid)
58
+ HEARTBEAT_PID="$2"
59
+ shift 2
60
+ ;;
61
+ --details)
62
+ DETAILS="$2"
63
+ shift 2
64
+ ;;
65
+ *)
66
+ echo "Unknown parameter: $1"
67
+ exit 1
68
+ ;;
69
+ esac
70
+ done
71
+
72
+ # Validate required parameters
73
+ if [[ -z "$TASK_ID" || -z "$AGENT_ID" ]]; then
74
+ echo "Error: task-id and agent-id are required"
75
+ exit 1
76
+ fi
77
+
78
+ # If no action specified, default to one-shot (backward compatibility)
79
+ if [ -z "$ACTION" ]; then
80
+ ACTION="once"
81
+ fi
82
+
83
+ HEARTBEAT_KEY="swarm:${TASK_ID}:${AGENT_ID}:heartbeat"
84
+ MARKER_FILE="/tmp/heartbeat-${TASK_ID}-${AGENT_ID}.active"
85
+
86
+ ##############################################################################
87
+ # Send single heartbeat
88
+ ##############################################################################
89
+ function send_heartbeat() {
90
+ # Generate heartbeat payload
91
+ HEARTBEAT_PAYLOAD=$(jq -n \
92
+ --arg timestamp "$(date +%s)" \
93
+ --arg status "$STATUS" \
94
+ --arg task_id "$TASK_ID" \
95
+ --arg agent_id "$AGENT_ID" \
96
+ --argjson details "$DETAILS" \
97
+ '{
98
+ "timestamp": $timestamp,
99
+ "status": $status,
100
+ "task_id": $task_id,
101
+ "agent_id": $agent_id,
102
+ "details": $details
103
+ }')
104
+
105
+ # Send heartbeat via Redis with auto-expiration
106
+ redis-cli setex "$HEARTBEAT_KEY" "$TTL" "$HEARTBEAT_PAYLOAD" >/dev/null
107
+ }
108
+
109
+ ##############################################################################
110
+ # Start continuous heartbeat loop
111
+ ##############################################################################
112
+ function start_heartbeat() {
113
+ # Create marker file
114
+ touch "$MARKER_FILE"
115
+
116
+ # Background heartbeat loop
117
+ (
118
+ while [ -f "$MARKER_FILE" ]; do
119
+ send_heartbeat
120
+ sleep "$INTERVAL"
121
+ done
122
+ ) &
123
+
124
+ echo "✓ Heartbeat started for $AGENT_ID (PID: $!, interval: ${INTERVAL}s)" >&2
125
+ }
126
+
127
+ ##############################################################################
128
+ # Stop heartbeat loop
129
+ ##############################################################################
130
+ function stop_heartbeat() {
131
+ # Remove marker file to stop loop
132
+ rm -f "$MARKER_FILE"
133
+
134
+ # Kill heartbeat process if PID provided
135
+ if [ -n "$HEARTBEAT_PID" ] && kill -0 "$HEARTBEAT_PID" 2>/dev/null; then
136
+ kill "$HEARTBEAT_PID" 2>/dev/null || true
137
+ fi
138
+
139
+ # Clean up heartbeat key
140
+ redis-cli DEL "$HEARTBEAT_KEY" >/dev/null
141
+
142
+ echo "✓ Heartbeat stopped for $AGENT_ID" >&2
143
+ }
144
+
145
+ ##############################################################################
146
+ # Main
147
+ ##############################################################################
148
+ case "$ACTION" in
149
+ start)
150
+ start_heartbeat
151
+ ;;
152
+ stop)
153
+ stop_heartbeat
154
+ ;;
155
+ once)
156
+ send_heartbeat
157
+ echo "✓ Heartbeat sent for $AGENT_ID" >&2
158
+ ;;
159
+ *)
160
+ echo "Error: Invalid action: $ACTION"
161
+ exit 1
162
+ ;;
163
+ esac
164
+
73
165
  exit 0
@@ -0,0 +1,38 @@
1
+ #!/bin/bash
2
+
3
+ # Parse arguments
4
+ while [[ $# -gt 0 ]]; do
5
+ case "$1" in
6
+ --key)
7
+ key="$2"
8
+ shift 2
9
+ ;;
10
+ --value)
11
+ value="$2"
12
+ shift 2
13
+ ;;
14
+ --ttl)
15
+ ttl="$2"
16
+ shift 2
17
+ ;;
18
+ *)
19
+ echo "Unknown argument: $1"
20
+ exit 1
21
+ ;;
22
+ esac
23
+ done
24
+
25
+ # Validate required arguments
26
+ if [[ -z "$key" || -z "$value" ]]; then
27
+ echo "Error: Both key and value are required"
28
+ exit 1
29
+ fi
30
+
31
+ # Default TTL to 3600 if not provided
32
+ ttl=${ttl:-3600}
33
+
34
+ # Store signal in Redis with specified TTL
35
+ redis-cli setex "$key" "$ttl" "$value"
36
+
37
+ # Exit successfully
38
+ exit 0
@@ -0,0 +1,86 @@
1
+ #!/bin/bash
2
+
3
+ # Redis Context Storage Primitive
4
+ # Updated interface to match orchestrator expectations
5
+ # Supports both legacy (--key --context) and new (--task-id --key --value --namespace) interfaces
6
+
7
+ # Initialize variables
8
+ task_id=""
9
+ key=""
10
+ value=""
11
+ namespace="swarm"
12
+ ttl=3600
13
+ append_mode=false
14
+
15
+ # Parse arguments
16
+ while [[ $# -gt 0 ]]; do
17
+ case "$1" in
18
+ --task-id)
19
+ task_id="$2"
20
+ shift 2
21
+ ;;
22
+ --key)
23
+ key="$2"
24
+ shift 2
25
+ ;;
26
+ --value)
27
+ value="$2"
28
+ shift 2
29
+ ;;
30
+ --context)
31
+ # Legacy support: --context is alias for --value
32
+ value="$2"
33
+ shift 2
34
+ ;;
35
+ --namespace)
36
+ namespace="$2"
37
+ shift 2
38
+ ;;
39
+ --ttl)
40
+ ttl="$2"
41
+ shift 2
42
+ ;;
43
+ --append)
44
+ append_mode=true
45
+ shift
46
+ ;;
47
+ *)
48
+ echo "Unknown argument: $1" >&2
49
+ exit 1
50
+ ;;
51
+ esac
52
+ done
53
+
54
+ # Construct Redis key based on interface mode
55
+ if [[ -n "$task_id" ]]; then
56
+ # New interface: {namespace}:{task_id}:{key}
57
+ redis_key="${namespace}:${task_id}:${key}"
58
+ else
59
+ # Legacy interface: key is used directly
60
+ redis_key="$key"
61
+ fi
62
+
63
+ # Validate required arguments
64
+ if [[ -z "$redis_key" || -z "$value" ]]; then
65
+ echo "Error: Both key and value are required" >&2
66
+ echo "Usage: $0 --task-id <id> --key <key> --value <data> [--namespace <ns>] [--ttl <seconds>] [--append]" >&2
67
+ echo " or: $0 --key <full-key> --context <data> [--ttl <seconds>]" >&2
68
+ exit 1
69
+ fi
70
+
71
+ # Handle append mode
72
+ if [ "$append_mode" = true ]; then
73
+ # Get existing value
74
+ existing=$(redis-cli get "$redis_key" 2>/dev/null)
75
+
76
+ # Append new value (comma-separated)
77
+ if [[ -n "$existing" && "$existing" != "(nil)" ]]; then
78
+ value="${existing},${value}"
79
+ fi
80
+ fi
81
+
82
+ # Store in Redis with specified TTL
83
+ redis-cli setex "$redis_key" "$ttl" "$value" >/dev/null
84
+
85
+ # Exit successfully
86
+ exit 0