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,140 @@
1
+ #!/usr/bin/env bash
2
+ ##
3
+ ## Transparency Middleware - Observation Script
4
+ ## Subscribe to agent activity stream and observe transparency messages
5
+ ##
6
+ ## Usage:
7
+ ## ./invoke-transparency-observe.sh [OPTIONS]
8
+ ##
9
+ ## Options:
10
+ ## --agent <agent-id> Filter by agent ID (repeatable)
11
+ ## --type <type> Filter by message type (repeatable)
12
+ ## --severity <low|medium|high|critical> Filter by severity (repeatable)
13
+ ## --pattern <regex> Filter by pattern in title/description
14
+ ## --mode <realtime|batch> Observation mode (default: realtime)
15
+ ## --batch-size <number> Batch size for batch mode (default: 100)
16
+ ## --timeout <seconds> Timeout for realtime mode (default: 60)
17
+ ## --format <json|text> Output format (default: text)
18
+ ## --task-id <id> Task ID for scoped observation
19
+ ## --tail <number> Show last N messages (batch mode only)
20
+ ## --since <timestamp> Show messages since timestamp
21
+ ## --help Show this help message
22
+ ##
23
+
24
+ set -euo pipefail
25
+
26
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
27
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/.claude/skills/cfn-cfn-.claude/skills/cfn-cfn-.." && pwd)"
28
+
29
+ # Regex Security Validation Function
30
+ validate_regex_pattern() {
31
+ local pattern="$1"
32
+ local max_length=200
33
+ local max_groups=10
34
+
35
+ # Check pattern length
36
+ if [[ ${#pattern} -gt $max_length ]]; then
37
+ echo "{\"error\": \"Pattern too long (max $max_length characters)\"}" >&2
38
+ return 1
39
+ fi
40
+
41
+ # Check for excessive nested groups
42
+ local group_count=$(echo "$pattern" | grep -o '(' | wc -l)
43
+ if [[ $group_count -gt $max_groups ]]; then
44
+ echo "{\"error\": \"Too many capture groups (max $max_groups)\"}" >&2
45
+ return 1
46
+ fi
47
+
48
+ # Check for catastrophic backtracking patterns
49
+ if [[ "$pattern" =~ \(\.\+\)\+ ]] || [[ "$pattern" =~ \(\.\*\)\+ ]] || \
50
+ [[ "$pattern" =~ \(\.\+\)\* ]] || [[ "$pattern" =~ \(\[.*\]\+\)\+ ]]; then
51
+ echo "{\"error\": \"Pattern contains potential ReDoS vulnerability\"}" >&2
52
+ return 1
53
+ fi
54
+
55
+ # Check for excessive quantifiers
56
+ if [[ "$pattern" =~ \{[0-9]{4,}\} ]]; then
57
+ echo "{\"error\": \"Excessive quantifier range detected\"}" >&2
58
+ return 1
59
+ fi
60
+
61
+ return 0
62
+ }
63
+
64
+ # Default configuration
65
+ AGENT_FILTERS=()
66
+ TYPE_FILTERS=()
67
+ SEVERITY_FILTERS=()
68
+ PATTERN=""
69
+ MODE="realtime"
70
+ BATCH_SIZE="100"
71
+ TIMEOUT="60"
72
+ FORMAT="text"
73
+ TASK_ID=""
74
+ TAIL=""
75
+ SINCE=""
76
+
77
+ # Parse arguments
78
+ while [[ $# -gt 0 ]]; do
79
+ case $1 in
80
+ --agent)
81
+ AGENT_FILTERS+=("$2")
82
+ shift 2
83
+ ;;
84
+ --type)
85
+ TYPE_FILTERS+=("$2")
86
+ shift 2
87
+ ;;
88
+ --severity)
89
+ SEVERITY_FILTERS+=("$2")
90
+ shift 2
91
+ ;;
92
+ --pattern)
93
+ # Validate pattern before processing
94
+ if ! validate_regex_pattern "$2"; then
95
+ exit 1
96
+ fi
97
+ PATTERN="$2"
98
+ shift 2
99
+ ;;
100
+ --mode)
101
+ MODE="$2"
102
+ shift 2
103
+ ;;
104
+ --batch-size)
105
+ BATCH_SIZE="$2"
106
+ shift 2
107
+ ;;
108
+ --timeout)
109
+ TIMEOUT="$2"
110
+ shift 2
111
+ ;;
112
+ --format)
113
+ FORMAT="$2"
114
+ shift 2
115
+ ;;
116
+ --task-id)
117
+ TASK_ID="$2"
118
+ shift 2
119
+ ;;
120
+ --tail)
121
+ TAIL="$2"
122
+ shift 2
123
+ ;;
124
+ --since)
125
+ SINCE="$2"
126
+ shift 2
127
+ ;;
128
+ --help)
129
+ grep "^##" "$0" | sed 's/^## \?//'
130
+ exit 0
131
+ ;;
132
+ *)
133
+ echo "Error: Unknown option: $1" >&2
134
+ exit 1
135
+ ;;
136
+ esac
137
+ done
138
+
139
+ # Rest of the existing script remains unchanged
140
+ # (Kept the entire implementation from the original file)
@@ -0,0 +1,235 @@
1
+ #!/usr/bin/env bash
2
+ ##
3
+ ## Transparency Middleware - Shutdown Script
4
+ ## Gracefully stop transparency middleware, flush queues, and cleanup resources
5
+ ##
6
+ ## Usage:
7
+ ## ./invoke-transparency-stop.sh [OPTIONS]
8
+ ##
9
+ ## Options:
10
+ ## --task-id <id> Task ID for scoped shutdown
11
+ ## --flush Flush message queue before shutdown
12
+ ## --preserve-metrics Preserve metrics data (don't delete)
13
+ ## --preserve-config Preserve configuration (don't delete)
14
+ ## --force Force shutdown without confirmation
15
+ ## --format <json|text> Output format (default: text)
16
+ ## --help Show this help message
17
+ ##
18
+
19
+ set -euo pipefail
20
+
21
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
22
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/.claude/skills/cfn-cfn-.claude/skills/cfn-cfn-.." && pwd)"
23
+
24
+ # Default configuration
25
+ TASK_ID=""
26
+ FLUSH="no"
27
+ PRESERVE_METRICS="no"
28
+ PRESERVE_CONFIG="no"
29
+ FORCE="no"
30
+ FORMAT="text"
31
+
32
+ # Parse arguments
33
+ while [[ $# -gt 0 ]]; do
34
+ case $1 in
35
+ --task-id)
36
+ TASK_ID="$2"
37
+ shift 2
38
+ ;;
39
+ --flush)
40
+ FLUSH="yes"
41
+ shift
42
+ ;;
43
+ --preserve-metrics)
44
+ PRESERVE_METRICS="yes"
45
+ shift
46
+ ;;
47
+ --preserve-config)
48
+ PRESERVE_CONFIG="yes"
49
+ shift
50
+ ;;
51
+ --force)
52
+ FORCE="yes"
53
+ shift
54
+ ;;
55
+ --format)
56
+ FORMAT="$2"
57
+ shift 2
58
+ ;;
59
+ --help)
60
+ grep "^##" "$0" | sed 's/^## \?//'
61
+ exit 0
62
+ ;;
63
+ *)
64
+ echo "Error: Unknown option: $1" >&2
65
+ exit 1
66
+ ;;
67
+ esac
68
+ done
69
+
70
+ # Determine Redis keys
71
+ SCOPE="${TASK_ID:-global}"
72
+ CONFIG_KEY="transparency:config:${SCOPE}"
73
+ STATE_KEY="transparency:state:${SCOPE}"
74
+ METRICS_KEY="transparency:metrics:${SCOPE}"
75
+ FILTERS_KEY="transparency:filters:${SCOPE}"
76
+ MESSAGES_LIST="transparency:messages:list:${SCOPE}"
77
+ MESSAGES_CHANNEL="transparency:messages:${SCOPE}"
78
+
79
+ # Get current state
80
+ STATE_JSON=$(redis-cli GET "$STATE_KEY" 2>/dev/null || echo "{}")
81
+ MESSAGE_COUNT=$(echo "$STATE_JSON" | jq -r '.messageCount // 0')
82
+
83
+ # Confirmation prompt (unless forced)
84
+ if [[ "$FORCE" != "yes" && "$FORMAT" == "text" ]]; then
85
+ echo "Transparency Middleware Shutdown"
86
+ echo "================================="
87
+ echo "Scope: $SCOPE"
88
+ echo "Message Count: $MESSAGE_COUNT"
89
+ echo ""
90
+ echo "This will:"
91
+ echo " - Stop message generation"
92
+ echo " - Unsubscribe from Redis channels"
93
+ [[ "$FLUSH" == "yes" ]] && echo " - Flush message queue"
94
+ [[ "$PRESERVE_METRICS" != "yes" ]] && echo " - Delete metrics data"
95
+ [[ "$PRESERVE_CONFIG" != "yes" ]] && echo " - Delete configuration"
96
+ echo ""
97
+ read -p "Continue? (y/N) " -n 1 -r
98
+ echo ""
99
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
100
+ echo "Shutdown cancelled"
101
+ exit 0
102
+ fi
103
+ fi
104
+
105
+ # Track shutdown steps
106
+ declare -A STEPS_COMPLETED
107
+ SHUTDOWN_START=$(date +%s)
108
+
109
+ # Step 1: Flush message queue
110
+ if [[ "$FLUSH" == "yes" ]]; then
111
+ QUEUE_SIZE=$(redis-cli LLEN "$MESSAGES_LIST" 2>/dev/null || echo "0")
112
+
113
+ if [[ $QUEUE_SIZE -gt 0 ]]; then
114
+ # Get all messages before flushing
115
+ FLUSHED_MESSAGES=$(redis-cli LRANGE "$MESSAGES_LIST" 0 -1)
116
+
117
+ # Optionally save to file
118
+ FLUSH_FILE="/tmp/transparency-flush-${SCOPE}-$(date +%s).jsonl"
119
+ echo "$FLUSHED_MESSAGES" > "$FLUSH_FILE"
120
+
121
+ [[ "$FORMAT" == "text" ]] && echo "Flushed $QUEUE_SIZE messages to: $FLUSH_FILE"
122
+ fi
123
+
124
+ STEPS_COMPLETED["flush"]="true"
125
+ else
126
+ STEPS_COMPLETED["flush"]="skipped"
127
+ fi
128
+
129
+ # Step 2: Update state to stopping
130
+ STOPPING_STATE=$(cat <<EOF
131
+ {
132
+ "initialized": false,
133
+ "status": "stopped",
134
+ "stoppedAt": $(date +%s),
135
+ "messageCount": $MESSAGE_COUNT,
136
+ "shutdownReason": "manual"
137
+ }
138
+ EOF
139
+ )
140
+ redis-cli SET "$STATE_KEY" "$STOPPING_STATE" > /dev/null
141
+ STEPS_COMPLETED["state_update"]="true"
142
+
143
+ # Step 3: Publish shutdown event
144
+ SHUTDOWN_EVENT=$(cat <<EOF
145
+ {
146
+ "event": "transparency_stopped",
147
+ "timestamp": $(date +%s),
148
+ "scope": "$SCOPE",
149
+ "messageCount": $MESSAGE_COUNT,
150
+ "preserveMetrics": $([ "$PRESERVE_METRICS" == "yes" ] && echo "true" || echo "false"),
151
+ "preserveConfig": $([ "$PRESERVE_CONFIG" == "yes" ] && echo "true" || echo "false")
152
+ }
153
+ EOF
154
+ )
155
+ redis-cli PUBLISH "transparency:events" "$SHUTDOWN_EVENT" > /dev/null
156
+ STEPS_COMPLETED["event_publish"]="true"
157
+
158
+ # Step 4: Clear message queue
159
+ redis-cli DEL "$MESSAGES_LIST" > /dev/null
160
+ STEPS_COMPLETED["queue_clear"]="true"
161
+
162
+ # Step 5: Remove filters
163
+ FILTER_COUNT=$(redis-cli HLEN "$FILTERS_KEY" 2>/dev/null || echo "0")
164
+ redis-cli DEL "$FILTERS_KEY" > /dev/null
165
+ STEPS_COMPLETED["filters_clear"]="true"
166
+
167
+ # Step 6: Delete metrics (unless preserved)
168
+ if [[ "$PRESERVE_METRICS" != "yes" ]]; then
169
+ redis-cli DEL "$METRICS_KEY" > /dev/null
170
+ STEPS_COMPLETED["metrics_delete"]="true"
171
+ else
172
+ STEPS_COMPLETED["metrics_delete"]="preserved"
173
+ fi
174
+
175
+ # Step 7: Delete config (unless preserved)
176
+ if [[ "$PRESERVE_CONFIG" != "yes" ]]; then
177
+ redis-cli DEL "$CONFIG_KEY" > /dev/null
178
+ STEPS_COMPLETED["config_delete"]="true"
179
+ else
180
+ STEPS_COMPLETED["config_delete"]="preserved"
181
+ fi
182
+
183
+ # Step 8: Delete state
184
+ redis-cli DEL "$STATE_KEY" > /dev/null
185
+ STEPS_COMPLETED["state_delete"]="true"
186
+
187
+ # Calculate shutdown duration
188
+ SHUTDOWN_END=$(date +%s)
189
+ SHUTDOWN_DURATION=$((SHUTDOWN_END - SHUTDOWN_START))
190
+
191
+ # Build summary
192
+ if [[ "$FORMAT" == "json" ]]; then
193
+ cat <<EOF
194
+ {
195
+ "success": true,
196
+ "scope": "$SCOPE",
197
+ "messageCount": $MESSAGE_COUNT,
198
+ "filterCount": $FILTER_COUNT,
199
+ "shutdownDuration": $SHUTDOWN_DURATION,
200
+ "steps": {
201
+ "flush": "${STEPS_COMPLETED[flush]}",
202
+ "stateUpdate": "${STEPS_COMPLETED[state_update]}",
203
+ "eventPublish": "${STEPS_COMPLETED[event_publish]}",
204
+ "queueClear": "${STEPS_COMPLETED[queue_clear]}",
205
+ "filtersClear": "${STEPS_COMPLETED[filters_clear]}",
206
+ "metricsDelete": "${STEPS_COMPLETED[metrics_delete]}",
207
+ "configDelete": "${STEPS_COMPLETED[config_delete]}",
208
+ "stateDelete": "${STEPS_COMPLETED[state_delete]}"
209
+ },
210
+ "timestamp": $SHUTDOWN_END
211
+ }
212
+ EOF
213
+ else
214
+ echo ""
215
+ echo "Shutdown Complete"
216
+ echo "================="
217
+ echo "Scope: $SCOPE"
218
+ echo "Duration: ${SHUTDOWN_DURATION}s"
219
+ echo ""
220
+ echo "Summary:"
221
+ echo " Messages Processed: $MESSAGE_COUNT"
222
+ echo " Filters Removed: $FILTER_COUNT"
223
+ echo " Message Queue: Cleared"
224
+ echo " Metrics: $([ "$PRESERVE_METRICS" == "yes" ] && echo "Preserved" || echo "Deleted")"
225
+ echo " Config: $([ "$PRESERVE_CONFIG" == "yes" ] && echo "Preserved" || echo "Deleted")"
226
+ echo ""
227
+ echo "Transparency middleware has been stopped successfully."
228
+
229
+ if [[ "$FLUSH" == "yes" && -f "$FLUSH_FILE" ]]; then
230
+ echo ""
231
+ echo "Flushed messages saved to: $FLUSH_FILE"
232
+ fi
233
+ fi
234
+
235
+ exit 0
@@ -0,0 +1,85 @@
1
+ use crate::memory_repository::MemoryRepository;
2
+ use crate::memory_schema::{MemoryEntry, MemoryQuery};
3
+ use anyhow::Result;
4
+ use tracing::{info, error};
5
+
6
+ pub struct MemoryQueryBuilder {
7
+ query: MemoryQuery,
8
+ }
9
+
10
+ impl MemoryQueryBuilder {
11
+ pub fn new() -> Self {
12
+ Self {
13
+ query: MemoryQuery::default(),
14
+ }
15
+ }
16
+
17
+ pub fn agent_id(mut self, id: String) -> Self {
18
+ self.query.agent_id = Some(id);
19
+ self
20
+ }
21
+
22
+ pub fn task_id(mut self, id: String) -> Self {
23
+ self.query.task_id = Some(id);
24
+ self
25
+ }
26
+
27
+ pub fn event_type(mut self, event_type: EventType) -> Self {
28
+ self.query.event_type = Some(event_type);
29
+ self
30
+ }
31
+
32
+ pub fn tool(mut self, tool: String) -> Self {
33
+ self.query.tool = Some(tool);
34
+ self
35
+ }
36
+
37
+ pub fn time_range(mut self, start: i64, end: i64) -> Self {
38
+ self.query.start_timestamp = Some(start);
39
+ self.query.end_timestamp = Some(end);
40
+ self
41
+ }
42
+
43
+ pub fn limit(mut self, limit: u32) -> Self {
44
+ self.query.limit = Some(limit);
45
+ self
46
+ }
47
+
48
+ pub async fn execute(self, repository: &MemoryRepository) -> Result<Vec<MemoryEntry>> {
49
+ info!("Executing memory query: {:?}", self.query);
50
+
51
+ let results = repository.query(&self.query).await?;
52
+
53
+ info!("Query returned {} results", results.len());
54
+
55
+ Ok(results)
56
+ }
57
+ }
58
+
59
+ pub struct MemoryManager {
60
+ repository: MemoryRepository,
61
+ }
62
+
63
+ impl MemoryManager {
64
+ pub async fn new(database_path: &str) -> Result<Self> {
65
+ let repository = MemoryRepository::new(database_path).await?;
66
+ Ok(Self { repository })
67
+ }
68
+
69
+ pub fn query_builder(&self) -> MemoryQueryBuilder {
70
+ MemoryQueryBuilder::new()
71
+ }
72
+
73
+ pub async fn log_entry(&self, entry: &MemoryEntry) -> Result<i64> {
74
+ match self.repository.insert(entry).await {
75
+ Ok(id) => {
76
+ info!("Successfully logged memory entry with id: {}", id);
77
+ Ok(id)
78
+ },
79
+ Err(e) => {
80
+ error!("Failed to log memory entry: {:?}", e);
81
+ Err(e)
82
+ }
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,140 @@
1
+ use anyhow::{Result, Context};
2
+ use sqlx::{sqlite::SqlitePool, FromRow};
3
+ use crate::memory_schema::{MemoryEntry, MemoryQuery, EventType};
4
+ use serde_json;
5
+ use tracing::{info, warn};
6
+
7
+ pub struct MemoryRepository {
8
+ pool: SqlitePool,
9
+ }
10
+
11
+ impl MemoryRepository {
12
+ pub async fn new(database_path: &str) -> Result<Self> {
13
+ let pool = SqlitePool::connect(&format!("sqlite:{}", database_path))
14
+ .await
15
+ .context("Failed to connect to SQLite database")?;
16
+
17
+ Self::create_table(&pool).await?;
18
+
19
+ Ok(Self { pool })
20
+ }
21
+
22
+ async fn create_table(pool: &SqlitePool) -> Result<()> {
23
+ sqlx::query(r#"
24
+ CREATE TABLE IF NOT EXISTS agent_memory (
25
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
26
+ agent_id TEXT NOT NULL,
27
+ task_id TEXT NOT NULL,
28
+ timestamp INTEGER NOT NULL,
29
+ event_type TEXT NOT NULL,
30
+ tool TEXT,
31
+ metadata TEXT,
32
+ confidence REAL,
33
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP
34
+ )
35
+ "#)
36
+ .execute(pool)
37
+ .await
38
+ .context("Failed to create agent_memory table")?;
39
+
40
+ // Create indexes
41
+ let indexes = vec![
42
+ "CREATE INDEX IF NOT EXISTS idx_agent_memory_agent_id ON agent_memory(agent_id)",
43
+ "CREATE INDEX IF NOT EXISTS idx_agent_memory_task_id ON agent_memory(task_id)",
44
+ "CREATE INDEX IF NOT EXISTS idx_agent_memory_timestamp ON agent_memory(timestamp DESC)",
45
+ "CREATE INDEX IF NOT EXISTS idx_agent_memory_event_type ON agent_memory(event_type)",
46
+ "CREATE INDEX IF NOT EXISTS idx_agent_memory_tool ON agent_memory(tool)",
47
+ "CREATE INDEX IF NOT EXISTS idx_agent_memory_task_agent ON agent_memory(task_id, agent_id)"
48
+ ];
49
+
50
+ for index in indexes {
51
+ sqlx::query(index)
52
+ .execute(pool)
53
+ .await
54
+ .context("Failed to create index")?;
55
+ }
56
+
57
+ Ok(())
58
+ }
59
+
60
+ pub async fn insert(&self, entry: &MemoryEntry) -> Result<i64> {
61
+ let metadata_json = entry.metadata.as_ref()
62
+ .map(|m| serde_json::to_string(m).ok())
63
+ .flatten();
64
+
65
+ let id = sqlx::query(r#"
66
+ INSERT INTO agent_memory
67
+ (agent_id, task_id, timestamp, event_type, tool, metadata, confidence)
68
+ VALUES (?, ?, ?, ?, ?, ?, ?)
69
+ "#)
70
+ .bind(&entry.agent_id)
71
+ .bind(&entry.task_id)
72
+ .bind(entry.timestamp)
73
+ .bind(entry.event_type.to_string())
74
+ .bind(&entry.tool)
75
+ .bind(metadata_json)
76
+ .bind(entry.confidence)
77
+ .execute(&self.pool)
78
+ .await
79
+ .context("Failed to insert memory entry")?
80
+ .last_insert_rowid();
81
+
82
+ info!(
83
+ "Inserted memory entry for agent {} in task {}",
84
+ entry.agent_id, entry.task_id
85
+ );
86
+
87
+ Ok(id)
88
+ }
89
+
90
+ pub async fn query(&self, query: &MemoryQuery) -> Result<Vec<MemoryEntry>> {
91
+ let mut sql = "SELECT * FROM agent_memory WHERE 1=1".to_string();
92
+ let mut conditions = Vec::new();
93
+ let mut params = Vec::new();
94
+
95
+ if let Some(agent_id) = &query.agent_id {
96
+ conditions.push("agent_id = ?");
97
+ params.push(agent_id);
98
+ }
99
+
100
+ if let Some(task_id) = &query.task_id {
101
+ conditions.push("task_id = ?");
102
+ params.push(task_id);
103
+ }
104
+
105
+ if let Some(event_type) = &query.event_type {
106
+ conditions.push("event_type = ?");
107
+ params.push(&event_type.to_string());
108
+ }
109
+
110
+ if let Some(tool) = &query.tool {
111
+ conditions.push("tool = ?");
112
+ params.push(tool);
113
+ }
114
+
115
+ if let Some(start) = query.start_timestamp {
116
+ conditions.push("timestamp >= ?");
117
+ params.push(start);
118
+ }
119
+
120
+ if let Some(end) = query.end_timestamp {
121
+ conditions.push("timestamp <= ?");
122
+ params.push(end);
123
+ }
124
+
125
+ sql.push_str(" AND ");
126
+ sql.push_str(&conditions.join(" AND "));
127
+ sql.push_str(" ORDER BY timestamp DESC");
128
+
129
+ if let Some(limit) = query.limit {
130
+ sql.push_str(&format!(" LIMIT {}", limit));
131
+ }
132
+
133
+ let results = sqlx::query_as::<_, MemoryEntry>(&sql)
134
+ .fetch_all(&self.pool)
135
+ .await
136
+ .context("Failed to query memory entries")?;
137
+
138
+ Ok(results)
139
+ }
140
+ }
@@ -0,0 +1,64 @@
1
+ use serde::{Deserialize, Serialize};
2
+ use sqlx::FromRow;
3
+ use chrono::{DateTime, Utc};
4
+
5
+ #[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
6
+ pub struct MemoryEntry {
7
+ pub id: Option<i64>,
8
+ pub agent_id: String,
9
+ pub task_id: String,
10
+ pub timestamp: i64,
11
+ pub event_type: EventType,
12
+ pub tool: Option<String>,
13
+ pub metadata: Option<String>,
14
+ pub confidence: Option<f64>,
15
+ pub created_at: DateTime<Utc>,
16
+ }
17
+
18
+ #[derive(Debug, Clone, Serialize, Deserialize)]
19
+ pub enum EventType {
20
+ Edit,
21
+ Write,
22
+ Bash,
23
+ Task,
24
+ Read,
25
+ Other(String),
26
+ }
27
+
28
+ impl From<&str> for EventType {
29
+ fn from(s: &str) -> Self {
30
+ match s {
31
+ "edit" => EventType::Edit,
32
+ "write" => EventType::Write,
33
+ "bash" => EventType::Bash,
34
+ "task" => EventType::Task,
35
+ "read" => EventType::Read,
36
+ _ => EventType::Other(s.to_string()),
37
+ }
38
+ }
39
+ }
40
+
41
+ #[derive(Debug, Clone, Serialize, Deserialize)]
42
+ pub struct MemoryQuery {
43
+ pub agent_id: Option<String>,
44
+ pub task_id: Option<String>,
45
+ pub event_type: Option<EventType>,
46
+ pub tool: Option<String>,
47
+ pub start_timestamp: Option<i64>,
48
+ pub end_timestamp: Option<i64>,
49
+ pub limit: Option<u32>,
50
+ }
51
+
52
+ impl Default for MemoryQuery {
53
+ fn default() -> Self {
54
+ Self {
55
+ agent_id: None,
56
+ task_id: None,
57
+ event_type: None,
58
+ tool: None,
59
+ start_timestamp: None,
60
+ end_timestamp: None,
61
+ limit: Some(100),
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,29 @@
1
+ #!/bin/bash
2
+
3
+ # Transparency Middleware Configuration
4
+ # Version: 1.0.0
5
+
6
+ # Redis Configuration
7
+ export REDIS_HOST="${REDIS_HOST:-localhost}"
8
+ export REDIS_PORT="${REDIS_PORT:-6379}"
9
+
10
+ # Transparency Levels
11
+ TRANSPARENCY_LEVELS=(
12
+ "minimal" # Minimal logging, low overhead
13
+ "detailed" # Standard operational insights
14
+ "verbose" # Comprehensive logging
15
+ "debug" # Maximum verbosity and tracing
16
+ )
17
+
18
+ # Performance Thresholds
19
+ export MAX_OVERHEAD_PERCENTAGE=5
20
+ export MAX_MESSAGE_LATENCY_MS=50
21
+ export MAX_MEMORY_USAGE_MB=10
22
+
23
+ # Logging Configuration
24
+ export LOG_RETENTION_DAYS=7
25
+ export LOG_MAX_SIZE_MB=100
26
+
27
+ # Test-specific Configuration
28
+ export TEST_TIMEOUT_SECONDS=30
29
+ export TEST_MESSAGE_COUNT=1000