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,280 @@
1
+ -- ACE System: Schema Validation Queries
2
+ -- Tests that schema supports all required query patterns
3
+ -- Run with: sqlite3 swarm-memory.db < validate-schema.sql
4
+
5
+ .mode column
6
+ .headers on
7
+ .width 40 15 10
8
+
9
+ -- =============================================
10
+ -- 1. BASIC TABLE VERIFICATION
11
+ -- =============================================
12
+
13
+ .print ""
14
+ .print "=== 1. TABLE VERIFICATION ==="
15
+ .print ""
16
+
17
+ SELECT 'context_reflections' as table_name, COUNT(*) as column_count
18
+ FROM pragma_table_info('context_reflections');
19
+
20
+ SELECT 'ace_telemetry' as table_name, COUNT(*) as column_count
21
+ FROM pragma_table_info('ace_telemetry');
22
+
23
+ .print ""
24
+ .print "=== 2. INDEX VERIFICATION ==="
25
+ .print ""
26
+
27
+ SELECT
28
+ name as index_name,
29
+ tbl_name as table_name,
30
+ CASE WHEN "unique" = 1 THEN 'YES' ELSE 'NO' END as is_unique
31
+ FROM sqlite_master
32
+ WHERE type = 'index'
33
+ AND tbl_name IN ('context_reflections', 'ace_telemetry')
34
+ ORDER BY tbl_name, name;
35
+
36
+ -- =============================================
37
+ -- 3. VIEW VERIFICATION
38
+ -- =============================================
39
+
40
+ .print ""
41
+ .print "=== 3. VIEW VERIFICATION ==="
42
+ .print ""
43
+
44
+ SELECT name as view_name
45
+ FROM sqlite_master
46
+ WHERE type = 'view'
47
+ ORDER BY name;
48
+
49
+ -- =============================================
50
+ -- 4. COLUMN CONSTRAINTS VERIFICATION
51
+ -- =============================================
52
+
53
+ .print ""
54
+ .print "=== 4. COLUMN CONSTRAINTS ==="
55
+ .print ""
56
+
57
+ SELECT
58
+ name as column_name,
59
+ type as data_type,
60
+ "notnull" as not_null,
61
+ dflt_value as default_value,
62
+ pk as is_primary_key
63
+ FROM pragma_table_info('context_reflections')
64
+ WHERE "notnull" = 1 OR pk = 1
65
+ ORDER BY pk DESC, name;
66
+
67
+ -- =============================================
68
+ -- 5. QUERY PATTERN TESTS (Context Lookup)
69
+ -- =============================================
70
+
71
+ .print ""
72
+ .print "=== 5. CONTEXT LOOKUP QUERY TEST ==="
73
+ .print "Query: Find curated strategies by domain"
74
+ .print ""
75
+
76
+ -- This query should use idx_context_lookup index
77
+ EXPLAIN QUERY PLAN
78
+ SELECT
79
+ id,
80
+ reflection_type,
81
+ json_extract(metadata, '$.domain') as domain,
82
+ confidence,
83
+ created_at
84
+ FROM context_reflections
85
+ WHERE curator_status = 'curated'
86
+ AND confidence >= 0.70
87
+ AND json_extract(metadata, '$.domain') LIKE '%backend%'
88
+ ORDER BY confidence DESC, created_at DESC
89
+ LIMIT 5;
90
+
91
+ -- =============================================
92
+ -- 6. KEYWORD SIMILARITY QUERY TEST
93
+ -- =============================================
94
+
95
+ .print ""
96
+ .print "=== 6. KEYWORD SIMILARITY QUERY TEST ==="
97
+ .print "Query: Find contexts matching keywords"
98
+ .print ""
99
+
100
+ -- This query should use idx_metadata_keywords index
101
+ EXPLAIN QUERY PLAN
102
+ SELECT
103
+ id,
104
+ reflection_type,
105
+ json_extract(metadata, '$.keywords') as keywords,
106
+ confidence
107
+ FROM context_reflections
108
+ WHERE json_extract(metadata, '$.keywords') LIKE '%authentication%'
109
+ OR json_extract(metadata, '$.keywords') LIKE '%jwt%'
110
+ ORDER BY confidence DESC
111
+ LIMIT 5;
112
+
113
+ -- =============================================
114
+ -- 7. ANTI-PATTERN QUERY TEST
115
+ -- =============================================
116
+
117
+ .print ""
118
+ .print "=== 7. ANTI-PATTERN QUERY TEST ==="
119
+ .print "Query: Find critical anti-patterns"
120
+ .print ""
121
+
122
+ -- This query should use idx_context_reflections_type
123
+ EXPLAIN QUERY PLAN
124
+ SELECT
125
+ id,
126
+ task_id,
127
+ json_extract(metadata, '$.severity') as severity,
128
+ confidence,
129
+ created_at
130
+ FROM context_reflections
131
+ WHERE reflection_type = 'anti-pattern'
132
+ AND json_extract(metadata, '$.severity') = 'critical'
133
+ ORDER BY created_at DESC;
134
+
135
+ -- =============================================
136
+ -- 8. SUCCESS RATE QUERY TEST
137
+ -- =============================================
138
+
139
+ .print ""
140
+ .print "=== 8. SUCCESS RATE QUERY TEST ==="
141
+ .print "Query: Find high-impact patterns"
142
+ .print ""
143
+
144
+ -- This query should use idx_context_reflections_success
145
+ EXPLAIN QUERY PLAN
146
+ SELECT
147
+ id,
148
+ reflection_type,
149
+ confidence,
150
+ success_count,
151
+ total_count,
152
+ CAST(success_count AS REAL) / NULLIF(total_count, 0) as success_rate
153
+ FROM context_reflections
154
+ WHERE total_count >= 3
155
+ AND CAST(success_count AS REAL) / NULLIF(total_count, 0) >= 0.80
156
+ ORDER BY success_count DESC, success_rate DESC
157
+ LIMIT 10;
158
+
159
+ -- =============================================
160
+ -- 9. VIEW QUERY TEST (Active Lessons)
161
+ -- =============================================
162
+
163
+ .print ""
164
+ .print "=== 9. ACTIVE LESSONS VIEW TEST ==="
165
+ .print "Query: Select from v_active_lessons"
166
+ .print ""
167
+
168
+ EXPLAIN QUERY PLAN
169
+ SELECT
170
+ id,
171
+ reflection_type,
172
+ domain,
173
+ confidence,
174
+ success_rate
175
+ FROM v_active_lessons
176
+ WHERE confidence >= 0.80
177
+ LIMIT 5;
178
+
179
+ -- =============================================
180
+ -- 10. VIEW QUERY TEST (High Impact Patterns)
181
+ -- =============================================
182
+
183
+ .print ""
184
+ .print "=== 10. HIGH IMPACT PATTERNS VIEW TEST ==="
185
+ .print "Query: Select from v_high_impact_patterns"
186
+ .print ""
187
+
188
+ EXPLAIN QUERY PLAN
189
+ SELECT
190
+ id,
191
+ domain,
192
+ strategy_title,
193
+ success_count,
194
+ success_rate
195
+ FROM v_high_impact_patterns
196
+ LIMIT 5;
197
+
198
+ -- =============================================
199
+ -- 11. VIEW QUERY TEST (Recent Failures)
200
+ -- =============================================
201
+
202
+ .print ""
203
+ .print "=== 11. RECENT FAILURES VIEW TEST ==="
204
+ .print "Query: Select from v_recent_failures"
205
+ .print ""
206
+
207
+ EXPLAIN QUERY PLAN
208
+ SELECT
209
+ id,
210
+ task_id,
211
+ domain,
212
+ severity,
213
+ confidence
214
+ FROM v_recent_failures
215
+ WHERE severity = 'critical'
216
+ LIMIT 5;
217
+
218
+ -- =============================================
219
+ -- 12. PERFORMANCE METRICS
220
+ -- =============================================
221
+
222
+ .print ""
223
+ .print "=== 12. SCHEMA STATISTICS ==="
224
+ .print ""
225
+
226
+ SELECT
227
+ 'Reflections' as metric,
228
+ COUNT(*) as count,
229
+ ROUND(AVG(confidence), 2) as avg_confidence,
230
+ MIN(created_at) as earliest,
231
+ MAX(created_at) as latest
232
+ FROM context_reflections;
233
+
234
+ SELECT
235
+ 'Telemetry Records' as metric,
236
+ COUNT(*) as count,
237
+ '-' as avg_confidence,
238
+ '-' as earliest,
239
+ '-' as latest
240
+ FROM ace_telemetry;
241
+
242
+ -- =============================================
243
+ -- 13. INDEX USAGE ANALYSIS
244
+ -- =============================================
245
+
246
+ .print ""
247
+ .print "=== 13. INDEX RECOMMENDATIONS ==="
248
+ .print "Note: Run after queries to see which indexes were used"
249
+ .print ""
250
+
251
+ -- Show indexes that exist
252
+ SELECT
253
+ m.name as index_name,
254
+ m.tbl_name as table_name,
255
+ GROUP_CONCAT(ii.name, ', ') as indexed_columns
256
+ FROM sqlite_master m
257
+ JOIN pragma_index_info(m.name) ii
258
+ WHERE m.type = 'index'
259
+ AND m.tbl_name = 'context_reflections'
260
+ GROUP BY m.name, m.tbl_name
261
+ ORDER BY m.name;
262
+
263
+ -- =============================================
264
+ -- 14. SCHEMA VERSION
265
+ -- =============================================
266
+
267
+ .print ""
268
+ .print "=== 14. SCHEMA VERSION ==="
269
+ .print ""
270
+
271
+ SELECT
272
+ version,
273
+ applied_at,
274
+ description
275
+ FROM schema_version
276
+ ORDER BY version DESC;
277
+
278
+ .print ""
279
+ .print "=== VALIDATION COMPLETE ==="
280
+ .print ""
@@ -0,0 +1,138 @@
1
+ #!/usr/bin/env bash
2
+ # score-relevance-adapter.sh - Interface adapter for relevance scoring
3
+ # Translates test suite API → backend implementation API
4
+
5
+ set -euo pipefail
6
+
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+
9
+ # Usage
10
+ usage() {
11
+ cat <<EOF
12
+ Usage: score-relevance-adapter.sh KEYWORDS_QUERY KEYWORDS_CONTEXT DOMAINS_QUERY DOMAINS_CONTEXT AGENTS_QUERY AGENTS_CONTEXT CREATED_AT SUCCESS_RATE
13
+
14
+ Adapter layer bridging test suite API and backend implementation API.
15
+
16
+ Arguments:
17
+ KEYWORDS_QUERY JSON array of keywords from current task
18
+ KEYWORDS_CONTEXT JSON array of keywords from historical context
19
+ DOMAINS_QUERY JSON array of domains from current task
20
+ DOMAINS_CONTEXT JSON array of domains from historical context
21
+ AGENTS_QUERY JSON array of agents from current task
22
+ AGENTS_CONTEXT JSON array of agents from historical context
23
+ CREATED_AT Historical context timestamp (YYYY-MM-DD)
24
+ SUCCESS_RATE Historical context confidence score (0.0-1.0)
25
+
26
+ Example:
27
+ score-relevance-adapter.sh \\
28
+ '["backend","authentication","jwt"]' \\
29
+ '["security","auth","oauth"]' \\
30
+ '["backend","security"]' \\
31
+ '["security"]' \\
32
+ '["backend-dev","security-specialist"]' \\
33
+ '["security-specialist"]' \\
34
+ "2025-10-25" \\
35
+ "0.92"
36
+
37
+ Output:
38
+ Relevance score (0.0-1.0) written to stdout
39
+ EOF
40
+ exit 1
41
+ }
42
+
43
+ # Validate parameters
44
+ if [[ $# -ne 8 ]]; then
45
+ echo "Error: Expected 8 parameters, got $#" >&2
46
+ usage
47
+ fi
48
+
49
+ KEYWORDS_QUERY="$1"
50
+ KEYWORDS_CONTEXT="$2"
51
+ DOMAINS_QUERY="$3"
52
+ DOMAINS_CONTEXT="$4"
53
+ AGENTS_QUERY="$5"
54
+ AGENTS_CONTEXT="$6"
55
+ CREATED_AT="$7"
56
+ SUCCESS_RATE="$8"
57
+
58
+ # Validate timestamp format (YYYY-MM-DD)
59
+ if ! [[ "$CREATED_AT" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
60
+ echo "Error: Invalid timestamp format. Expected YYYY-MM-DD, got: $CREATED_AT" >&2
61
+ exit 1
62
+ fi
63
+
64
+ # Validate success rate range (0.0-1.0)
65
+ if ! awk -v rate="$SUCCESS_RATE" 'BEGIN { exit !(rate >= 0.0 && rate <= 1.0) }'; then
66
+ echo "Error: Invalid success rate. Expected 0.0-1.0, got: $SUCCESS_RATE" >&2
67
+ exit 1
68
+ fi
69
+
70
+ # Validate JSON array format
71
+ validate_json_array() {
72
+ local input="$1"
73
+ local name="$2"
74
+
75
+ if ! echo "$input" | jq empty 2>/dev/null; then
76
+ echo "Error: Invalid JSON format for $name: $input" >&2
77
+ exit 1
78
+ fi
79
+
80
+ if ! echo "$input" | jq -e 'type == "array"' >/dev/null 2>&1; then
81
+ echo "Error: Expected JSON array for $name, got: $input" >&2
82
+ exit 1
83
+ fi
84
+ }
85
+
86
+ # Validate all JSON array inputs
87
+ validate_json_array "$KEYWORDS_QUERY" "KEYWORDS_QUERY"
88
+ validate_json_array "$KEYWORDS_CONTEXT" "KEYWORDS_CONTEXT"
89
+ validate_json_array "$DOMAINS_QUERY" "DOMAINS_QUERY"
90
+ validate_json_array "$DOMAINS_CONTEXT" "DOMAINS_CONTEXT"
91
+ validate_json_array "$AGENTS_QUERY" "AGENTS_QUERY"
92
+ validate_json_array "$AGENTS_CONTEXT" "AGENTS_CONTEXT"
93
+
94
+ # Extract first domain from domains array
95
+ extract_first_domain() {
96
+ local domains_json="$1"
97
+ echo "$domains_json" | jq -r '.[0] // ""'
98
+ }
99
+
100
+ # Convert JSON array to comma-separated string
101
+ json_array_to_csv() {
102
+ local json_array="$1"
103
+ echo "$json_array" | jq -r 'join(",")'
104
+ }
105
+
106
+ # Build current-tags (pass through JSON array)
107
+ CURRENT_TAGS="$KEYWORDS_QUERY"
108
+
109
+ # Extract primary domain from DOMAINS_QUERY
110
+ CURRENT_DOMAIN=$(extract_first_domain "$DOMAINS_QUERY")
111
+
112
+ # Build current-agents comma-separated list from AGENTS_QUERY
113
+ CURRENT_AGENTS=$(json_array_to_csv "$AGENTS_QUERY")
114
+
115
+ # Build historical-record JSON structure
116
+ HISTORICAL_RECORD=$(jq -n \
117
+ --argjson tags "$KEYWORDS_CONTEXT" \
118
+ --arg domain "$(extract_first_domain "$DOMAINS_CONTEXT")" \
119
+ --arg agents "$(json_array_to_csv "$AGENTS_CONTEXT")" \
120
+ --arg timestamp "$CREATED_AT" \
121
+ --argjson confidence "$SUCCESS_RATE" \
122
+ '{
123
+ tags: $tags,
124
+ domain: $domain,
125
+ agents: $agents,
126
+ timestamp: $timestamp,
127
+ confidence: $confidence
128
+ }')
129
+
130
+ # Execute backend implementation with transformed parameters
131
+ "$SCRIPT_DIR/score-relevance.sh" \
132
+ --current-tags "$CURRENT_TAGS" \
133
+ --current-domain "$CURRENT_DOMAIN" \
134
+ --current-agents "$CURRENT_AGENTS" \
135
+ --historical-record "$HISTORICAL_RECORD"
136
+
137
+ # Exit with backend script's exit code
138
+ exit $?
@@ -0,0 +1,253 @@
1
+ #!/usr/bin/env bash
2
+ # score-relevance.sh - Multi-factor relevance scoring for ACE System
3
+ # Part of ACE System Phase 2.2
4
+
5
+ set -euo pipefail
6
+
7
+ # Default values
8
+ CURRENT_TAGS=""
9
+ CURRENT_DOMAIN=""
10
+ CURRENT_AGENTS=""
11
+ HISTORICAL_RECORD=""
12
+ TIME_DECAY_FACTOR=30 # Days for exponential decay
13
+
14
+ # Weight factors (must sum to 1.0)
15
+ WEIGHT_KEYWORD=0.30
16
+ WEIGHT_AGENT=0.25
17
+ WEIGHT_DOMAIN=0.20
18
+ WEIGHT_RECENCY=0.15
19
+ WEIGHT_SUCCESS=0.10
20
+
21
+ # Usage function
22
+ usage() {
23
+ cat <<EOF
24
+ Usage: $0 [OPTIONS]
25
+
26
+ Calculate relevance score between current task and historical context
27
+
28
+ OPTIONS:
29
+ --current-tags JSON JSON array of current task tags
30
+ --current-domain TEXT Current task domain
31
+ --current-agents TEXT Comma-separated current agent types
32
+ --historical-record JSON Historical context record JSON
33
+ --time-decay-factor NUM Days for time decay (default: 30)
34
+ -h, --help Show this help message
35
+
36
+ WEIGHTS (configurable in script):
37
+ Keyword similarity: 30% (Jaccard index)
38
+ Agent type overlap: 25% (% same agents)
39
+ Domain match: 20% (exact=1.0, overlap=0.5, none=0.0)
40
+ Recency score: 15% (exp(-days_old / 30))
41
+ Success rate: 10% (historical confidence)
42
+
43
+ EXAMPLES:
44
+ $0 --current-tags '["backend","authentication","jwt"]' \\
45
+ --current-domain "security" \\
46
+ --current-agents "backend-dev,security-specialist" \\
47
+ --historical-record '{"tags":["backend","auth","oauth"],"domain":"security","agents":"backend-dev","timestamp":"2025-10-25","confidence":0.92}'
48
+
49
+ OUTPUT:
50
+ Single relevance score: 0.0 - 1.0
51
+ EOF
52
+ exit 1
53
+ }
54
+
55
+ # Parse arguments
56
+ while [[ $# -gt 0 ]]; do
57
+ case $1 in
58
+ --current-tags)
59
+ CURRENT_TAGS="$2"
60
+ shift 2
61
+ ;;
62
+ --current-domain)
63
+ CURRENT_DOMAIN="$2"
64
+ shift 2
65
+ ;;
66
+ --current-agents)
67
+ CURRENT_AGENTS="$2"
68
+ shift 2
69
+ ;;
70
+ --historical-record)
71
+ HISTORICAL_RECORD="$2"
72
+ shift 2
73
+ ;;
74
+ --time-decay-factor)
75
+ TIME_DECAY_FACTOR="$2"
76
+ shift 2
77
+ ;;
78
+ -h|--help)
79
+ usage
80
+ ;;
81
+ *)
82
+ echo "Error: Unknown option: $1" >&2
83
+ usage
84
+ ;;
85
+ esac
86
+ done
87
+
88
+ # Validate required parameters
89
+ if [[ -z "$CURRENT_TAGS" ]] || [[ -z "$HISTORICAL_RECORD" ]]; then
90
+ echo "Error: --current-tags and --historical-record are required" >&2
91
+ usage
92
+ fi
93
+
94
+ # Calculate Jaccard similarity between two JSON arrays
95
+ # Formula: |A ∩ B| / |A ∪ B|
96
+ calculate_jaccard_similarity() {
97
+ local array1="$1"
98
+ local array2="$2"
99
+
100
+ # Get unique elements in both arrays
101
+ local union=$(jq -s 'add | unique' <(echo "$array1") <(echo "$array2") | jq 'length')
102
+
103
+ # Get intersection (elements in both)
104
+ local intersection=$(jq -s '.[0] as $a | .[1] as $b | $a | map(select(. as $x | $b | index($x) != null)) | unique | length' <(echo "$array1") <(echo "$array2"))
105
+
106
+ # Avoid division by zero
107
+ if [[ $union -eq 0 ]]; then
108
+ echo "0.0"
109
+ return
110
+ fi
111
+
112
+ # Calculate Jaccard index
113
+ local similarity=$(echo "scale=4; $intersection / $union" | bc)
114
+ echo "$similarity"
115
+ }
116
+
117
+ # Calculate agent overlap score
118
+ # Percentage of agents that match
119
+ calculate_agent_overlap() {
120
+ local current_agents="$1"
121
+ local historical_agents="$2"
122
+
123
+ # Convert comma-separated to JSON arrays
124
+ local current_array=$(echo "$current_agents" | tr ',' '\n' | jq -R . | jq -s 'map(select(length > 0))')
125
+ local historical_array=$(echo "$historical_agents" | tr ',' '\n' | jq -R . | jq -s 'map(select(length > 0))')
126
+
127
+ # Calculate Jaccard similarity for agents
128
+ local overlap=$(calculate_jaccard_similarity "$current_array" "$historical_array")
129
+ echo "$overlap"
130
+ }
131
+
132
+ # Calculate domain match score
133
+ # exact match=1.0, partial overlap=0.5, no match=0.0
134
+ calculate_domain_match() {
135
+ local current_domain="$1"
136
+ local historical_domain="$2"
137
+
138
+ # Normalize to lowercase
139
+ current_domain=$(echo "$current_domain" | tr '[:upper:]' '[:lower:]')
140
+ historical_domain=$(echo "$historical_domain" | tr '[:upper:]' '[:lower:]')
141
+
142
+ # Exact match
143
+ if [[ "$current_domain" == "$historical_domain" ]]; then
144
+ echo "1.0"
145
+ return
146
+ fi
147
+
148
+ # Check for partial overlap (substring match in either direction)
149
+ if [[ -n "$current_domain" ]] && [[ -n "$historical_domain" ]]; then
150
+ if [[ "$current_domain" == *"$historical_domain"* ]] || [[ "$historical_domain" == *"$current_domain"* ]]; then
151
+ echo "0.5"
152
+ return
153
+ fi
154
+ fi
155
+
156
+ # No match
157
+ echo "0.0"
158
+ }
159
+
160
+ # Calculate recency score with exponential decay
161
+ # Formula: exp(-days_old / decay_factor)
162
+ calculate_recency_score() {
163
+ local timestamp="$1"
164
+ local decay_factor="$2"
165
+
166
+ # Get current date and historical date in epoch seconds
167
+ local current_epoch=$(date +%s)
168
+ local historical_epoch=$(date -d "$timestamp" +%s 2>/dev/null || echo "0")
169
+
170
+ # Handle invalid timestamps
171
+ if [[ $historical_epoch -eq 0 ]]; then
172
+ echo "0.0"
173
+ return
174
+ fi
175
+
176
+ # Calculate days difference
177
+ local seconds_diff=$((current_epoch - historical_epoch))
178
+ local days_diff=$(echo "scale=4; $seconds_diff / 86400" | bc)
179
+
180
+ # Exponential decay: e^(-days / decay_factor)
181
+ # Use awk for exponential calculation (bc doesn't support exp)
182
+ local recency=$(awk -v days="$days_diff" -v factor="$decay_factor" 'BEGIN { print exp(-days / factor) }')
183
+
184
+ # Ensure non-negative
185
+ if (( $(echo "$recency < 0" | bc -l) )); then
186
+ echo "0.0"
187
+ else
188
+ printf "%.4f" "$recency"
189
+ fi
190
+ }
191
+
192
+ # Calculate success rate score
193
+ # Use historical confidence as proxy for success
194
+ calculate_success_score() {
195
+ local confidence="$1"
196
+
197
+ # Validate range 0.0-1.0
198
+ if (( $(echo "$confidence < 0.0" | bc -l) )); then
199
+ echo "0.0"
200
+ elif (( $(echo "$confidence > 1.0" | bc -l) )); then
201
+ echo "1.0"
202
+ else
203
+ printf "%.4f" "$confidence"
204
+ fi
205
+ }
206
+
207
+ # Main scoring function
208
+ calculate_relevance_score() {
209
+ local current_tags="$1"
210
+ local current_domain="$2"
211
+ local current_agents="$3"
212
+ local historical_record="$4"
213
+
214
+ # Extract historical data
215
+ local historical_tags=$(echo "$historical_record" | jq -r '.tags // []' | jq -c .)
216
+ local historical_domain=$(echo "$historical_record" | jq -r '.domain // ""')
217
+ local historical_agents=$(echo "$historical_record" | jq -r '.agents // ""')
218
+ local historical_timestamp=$(echo "$historical_record" | jq -r '.timestamp // ""')
219
+ local historical_confidence=$(echo "$historical_record" | jq -r '.confidence // 0.0')
220
+
221
+ # Calculate component scores
222
+ local keyword_score=$(calculate_jaccard_similarity "$current_tags" "$historical_tags")
223
+ local agent_score=$(calculate_agent_overlap "$current_agents" "$historical_agents")
224
+ local domain_score=$(calculate_domain_match "$current_domain" "$historical_domain")
225
+ local recency_score=$(calculate_recency_score "$historical_timestamp" "$TIME_DECAY_FACTOR")
226
+ local success_score=$(calculate_success_score "$historical_confidence")
227
+
228
+ # Calculate weighted total
229
+ local total_score=$(awk -v kw="$keyword_score" -v kww="$WEIGHT_KEYWORD" \
230
+ -v ag="$agent_score" -v agw="$WEIGHT_AGENT" \
231
+ -v dm="$domain_score" -v dmw="$WEIGHT_DOMAIN" \
232
+ -v rc="$recency_score" -v rcw="$WEIGHT_RECENCY" \
233
+ -v sc="$success_score" -v scw="$WEIGHT_SUCCESS" \
234
+ 'BEGIN { print (kw * kww) + (ag * agw) + (dm * dmw) + (rc * rcw) + (sc * scw) }')
235
+
236
+ # Ensure score is in range 0.0-1.0
237
+ if (( $(echo "$total_score < 0.0" | bc -l) )); then
238
+ total_score="0.0"
239
+ elif (( $(echo "$total_score > 1.0" | bc -l) )); then
240
+ total_score="1.0"
241
+ fi
242
+
243
+ printf "%.2f" "$total_score"
244
+ }
245
+
246
+ # Main execution
247
+ main() {
248
+ local relevance_score=$(calculate_relevance_score "$CURRENT_TAGS" "$CURRENT_DOMAIN" "$CURRENT_AGENTS" "$HISTORICAL_RECORD")
249
+ echo "$relevance_score"
250
+ }
251
+
252
+ # Run main
253
+ main