claude-flow-novice 2.15.3 → 2.15.4

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 (461) hide show
  1. package/.claude/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  2. package/.claude/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  3. package/.claude/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  4. package/.claude/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  5. package/.claude/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  6. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  7. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  8. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  9. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  10. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  11. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  12. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  13. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  14. package/.claude/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  15. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  16. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  17. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  18. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  19. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  20. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  21. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  22. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  23. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  24. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  25. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  26. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  27. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  28. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  29. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  30. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  31. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  32. package/.claude/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  33. package/.claude/commands/cfn-loop-cli.md +16 -2
  34. package/.claude/commands/switch-api.md +31 -10
  35. package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
  36. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
  37. package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
  38. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  39. package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  40. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  41. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  42. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  43. package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  44. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  45. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  46. package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  47. package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  48. package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
  49. package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  50. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
  51. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  52. package/.claude/skills/cfn-redis-coordination/get-context.sh +33 -0
  53. package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  54. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  55. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  56. package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  57. package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
  58. package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
  59. package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  60. package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  61. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  62. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  63. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
  64. package/README.md +116 -475
  65. package/claude-assets/agents/cfn-dev-team/README.md +103 -0
  66. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
  67. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
  68. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
  69. package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
  70. package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
  71. package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
  72. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
  73. package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
  74. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
  75. package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
  76. package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
  77. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
  78. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
  79. package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
  80. package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
  81. package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
  82. package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
  83. package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
  84. package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
  85. package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
  86. package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
  87. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
  88. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
  89. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
  90. package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
  91. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
  92. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
  93. package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
  94. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  95. package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
  96. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
  97. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
  98. package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
  99. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
  100. package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
  101. package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
  102. package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
  103. package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
  104. package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
  105. package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
  106. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
  107. package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
  108. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  109. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  110. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  111. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  112. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  113. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  114. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  115. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  116. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  117. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  118. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  119. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  120. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  121. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  122. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  123. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  124. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  125. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  126. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  127. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  128. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  129. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  130. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  131. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  137. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  138. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  139. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  140. package/claude-assets/commands/cfn-loop-cli.md +16 -2
  141. package/claude-assets/commands/switch-api.md +31 -10
  142. package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
  143. package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
  144. package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
  145. package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
  146. package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
  147. package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +84 -113
  148. package/claude-assets/skills/agent-lifecycle/simple-audit.sh +33 -6
  149. package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
  150. package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
  151. package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
  152. package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
  153. package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
  154. package/claude-assets/skills/bootstrap/database-connection.md +464 -0
  155. package/claude-assets/skills/bootstrap/error-handling.md +580 -0
  156. package/claude-assets/skills/bootstrap/file-operations.md +699 -0
  157. package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
  158. package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
  159. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  160. package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
  161. package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
  162. package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
  163. package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  164. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  165. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  166. package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
  167. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
  168. package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
  169. package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
  170. package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
  171. package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
  172. package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
  173. package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
  174. package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
  175. package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
  176. package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
  177. package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
  178. package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  179. package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  180. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  181. package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  182. package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  183. package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
  184. package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
  185. package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
  186. package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
  187. package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
  188. package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  189. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
  190. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  191. package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
  192. package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  193. package/claude-assets/skills/cfn-redis-coordination/get-context.sh +33 -0
  194. package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  195. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  196. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  197. package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  198. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
  199. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
  200. package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  201. package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  202. package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
  203. package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
  204. package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  205. package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
  206. package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
  207. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
  208. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
  209. package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
  210. package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  211. package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
  212. package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
  213. package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
  214. package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
  215. package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
  216. package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
  217. package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
  218. package/claude-assets/skills/cfn-utilities/test.sh +317 -0
  219. package/claude-assets/skills/integration/agent-handoff.sh +62 -64
  220. package/claude-assets/skills/json-validation/SKILL.md +431 -0
  221. package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
  222. package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
  223. package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
  224. package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
  225. package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
  226. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
  227. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
  228. package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
  229. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
  230. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
  231. package/claude-assets/skills/workflow-codification/test-integration.sh +15 -0
  232. package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
  233. package/claude-assets/skills/workflow-codification/track-cost-savings.sh +55 -14
  234. package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
  235. package/claude-assets/skills/workflow-codification/track-edge-case.sh +27 -60
  236. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  237. package/dist/ace/ace-curator.js +10 -2
  238. package/dist/ace/ace-curator.js.map +1 -1
  239. package/dist/ace/ace-generator.js +4 -0
  240. package/dist/ace/ace-generator.js.map +1 -1
  241. package/dist/ace/ace-reflector.js +1 -1
  242. package/dist/ace/ace-reflector.js.map +1 -1
  243. package/dist/ace/context-injection.js +24 -2
  244. package/dist/ace/context-injection.js.map +1 -1
  245. package/dist/agents/agent-loader.js +146 -165
  246. package/dist/agents/agent-loader.js.map +1 -1
  247. package/dist/agents/task-agent-integration.js +1 -1
  248. package/dist/agents/task-agent-integration.js.map +1 -1
  249. package/dist/api/health-endpoints.js +390 -0
  250. package/dist/api/health-endpoints.js.map +1 -0
  251. package/dist/cli/agent-executor.js +4 -1
  252. package/dist/cli/agent-executor.js.map +1 -1
  253. package/dist/cli/agent-prompt-builder.js +89 -1
  254. package/dist/cli/agent-prompt-builder.js.map +1 -1
  255. package/dist/cli/agent-spawn.js +130 -37
  256. package/dist/cli/agent-spawn.js.map +1 -1
  257. package/dist/cli/skill-cache-validator.js +412 -0
  258. package/dist/cli/skill-cache-validator.js.map +1 -0
  259. package/dist/cli/skill-cli.js +991 -0
  260. package/dist/cli/skill-cli.js.map +1 -0
  261. package/dist/cli/skill-execution-logger.js +284 -0
  262. package/dist/cli/skill-execution-logger.js.map +1 -0
  263. package/dist/cli/skill-loader.js +457 -0
  264. package/dist/cli/skill-loader.js.map +1 -0
  265. package/dist/coordination/event-bus.js +2 -2
  266. package/dist/coordination/event-bus.js.map +1 -1
  267. package/dist/coordination/fleet-manager.js +1 -1
  268. package/dist/coordination/fleet-manager.js.map +1 -1
  269. package/dist/coordination/index.js +23 -9
  270. package/dist/coordination/index.js.map +1 -1
  271. package/dist/coordination/types/fleet-manager.types.js.map +1 -1
  272. package/dist/db/migration-manager.js +483 -0
  273. package/dist/db/migration-manager.js.map +1 -0
  274. package/dist/db/skills-query.js +535 -0
  275. package/dist/db/skills-query.js.map +1 -0
  276. package/dist/integration/DatabaseHandoff.js +1 -1
  277. package/dist/integration/DatabaseHandoff.js.map +1 -1
  278. package/dist/jobs/edge-case-analyzer.js +367 -0
  279. package/dist/jobs/edge-case-analyzer.js.map +1 -0
  280. package/dist/jobs/promotion-sla-enforcer.js +288 -0
  281. package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
  282. package/dist/lib/agent-output-parser.js.map +1 -1
  283. package/dist/lib/agent-output-validator.js.map +1 -1
  284. package/dist/lib/agent-workspace.js +281 -0
  285. package/dist/lib/agent-workspace.js.map +1 -0
  286. package/dist/lib/atomic-file-writer.js +377 -0
  287. package/dist/lib/atomic-file-writer.js.map +1 -0
  288. package/dist/lib/backup-manager.js +779 -0
  289. package/dist/lib/backup-manager.js.map +1 -0
  290. package/dist/lib/checkpoint-manager.js +837 -0
  291. package/dist/lib/checkpoint-manager.js.map +1 -0
  292. package/dist/lib/circuit-breaker.js +340 -0
  293. package/dist/lib/circuit-breaker.js.map +1 -0
  294. package/dist/lib/completion-signal-handler.js +243 -0
  295. package/dist/lib/completion-signal-handler.js.map +1 -0
  296. package/dist/lib/config-manager.js +312 -0
  297. package/dist/lib/config-manager.js.map +1 -0
  298. package/dist/lib/config-migrator.js +386 -0
  299. package/dist/lib/config-migrator.js.map +1 -0
  300. package/dist/lib/config-validator.js.map +1 -1
  301. package/dist/lib/correlation-cache.js +311 -0
  302. package/dist/lib/correlation-cache.js.map +1 -0
  303. package/dist/lib/correlation.js +263 -0
  304. package/dist/lib/correlation.js.map +1 -0
  305. package/dist/lib/database-service/connection-pool-manager.js +520 -0
  306. package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
  307. package/dist/lib/database-service/correlation.js +329 -0
  308. package/dist/lib/database-service/correlation.js.map +1 -0
  309. package/dist/lib/database-service/errors.js +120 -0
  310. package/dist/lib/database-service/errors.js.map +1 -0
  311. package/dist/lib/database-service/index.js +168 -0
  312. package/dist/lib/database-service/index.js.map +1 -0
  313. package/dist/lib/database-service/postgres-adapter.js +526 -0
  314. package/dist/lib/database-service/postgres-adapter.js.map +1 -0
  315. package/dist/lib/database-service/redis-adapter.js +360 -0
  316. package/dist/lib/database-service/redis-adapter.js.map +1 -0
  317. package/dist/lib/database-service/sqlite-adapter.js +544 -0
  318. package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
  319. package/dist/lib/database-service/transaction-manager.js +773 -0
  320. package/dist/lib/database-service/transaction-manager.js.map +1 -0
  321. package/dist/lib/database-service/types.js +23 -0
  322. package/dist/lib/database-service/types.js.map +1 -0
  323. package/dist/lib/deadlock-resolver.js +292 -0
  324. package/dist/lib/deadlock-resolver.js.map +1 -0
  325. package/dist/lib/distributed-lock.js +451 -0
  326. package/dist/lib/distributed-lock.js.map +1 -0
  327. package/dist/lib/edge-case-deduplicator.js +227 -0
  328. package/dist/lib/edge-case-deduplicator.js.map +1 -0
  329. package/dist/lib/encryption-manager.js +322 -0
  330. package/dist/lib/encryption-manager.js.map +1 -0
  331. package/dist/lib/error-aggregator.js +234 -0
  332. package/dist/lib/error-aggregator.js.map +1 -0
  333. package/dist/lib/errors.js +287 -0
  334. package/dist/lib/errors.js.map +1 -0
  335. package/dist/lib/file-lock-manager.js +578 -0
  336. package/dist/lib/file-lock-manager.js.map +1 -0
  337. package/dist/lib/file-operations.js +367 -0
  338. package/dist/lib/file-operations.js.map +1 -0
  339. package/dist/lib/idempotent-write.js +237 -0
  340. package/dist/lib/idempotent-write.js.map +1 -0
  341. package/dist/lib/integration-schema-validator.js +522 -0
  342. package/dist/lib/integration-schema-validator.js.map +1 -0
  343. package/dist/lib/lock-health-monitor.js +298 -0
  344. package/dist/lib/lock-health-monitor.js.map +1 -0
  345. package/dist/lib/log-shipper.js +422 -0
  346. package/dist/lib/log-shipper.js.map +1 -0
  347. package/dist/lib/logging.js +146 -0
  348. package/dist/lib/logging.js.map +1 -0
  349. package/dist/lib/message-deduplicator.js +439 -0
  350. package/dist/lib/message-deduplicator.js.map +1 -0
  351. package/dist/lib/multi-system-query.js +604 -0
  352. package/dist/lib/multi-system-query.js.map +1 -0
  353. package/dist/lib/orphan-detector.js +332 -0
  354. package/dist/lib/orphan-detector.js.map +1 -0
  355. package/dist/lib/password-generator.js +166 -0
  356. package/dist/lib/password-generator.js.map +1 -0
  357. package/dist/lib/path-validator.js +429 -0
  358. package/dist/lib/path-validator.js.map +1 -0
  359. package/dist/lib/query-translator.js +905 -0
  360. package/dist/lib/query-translator.js.map +1 -0
  361. package/dist/lib/queue-recovery.js +469 -0
  362. package/dist/lib/queue-recovery.js.map +1 -0
  363. package/dist/lib/redis-queue-manager.js +512 -0
  364. package/dist/lib/redis-queue-manager.js.map +1 -0
  365. package/dist/lib/reflection-archiver.js +272 -0
  366. package/dist/lib/reflection-archiver.js.map +1 -0
  367. package/dist/lib/retry-manager.js +453 -0
  368. package/dist/lib/retry-manager.js.map +1 -0
  369. package/dist/lib/retry.js +262 -0
  370. package/dist/lib/retry.js.map +1 -0
  371. package/dist/lib/schema-transform.js +695 -0
  372. package/dist/lib/schema-transform.js.map +1 -0
  373. package/dist/lib/schema-validator.js +491 -0
  374. package/dist/lib/schema-validator.js.map +1 -0
  375. package/dist/lib/skill-cache.js +297 -0
  376. package/dist/lib/skill-cache.js.map +1 -0
  377. package/dist/lib/skill-content-manager.js +337 -0
  378. package/dist/lib/skill-content-manager.js.map +1 -0
  379. package/dist/lib/skill-frontmatter-parser.js +237 -0
  380. package/dist/lib/skill-frontmatter-parser.js.map +1 -0
  381. package/dist/lib/skill-git-integration.js +275 -0
  382. package/dist/lib/skill-git-integration.js.map +1 -0
  383. package/dist/lib/skill-markdown-validator.js +396 -0
  384. package/dist/lib/skill-markdown-validator.js.map +1 -0
  385. package/dist/lib/skill-output-parser.js +312 -0
  386. package/dist/lib/skill-output-parser.js.map +1 -0
  387. package/dist/lib/unified-query-api.js +467 -0
  388. package/dist/lib/unified-query-api.js.map +1 -0
  389. package/dist/middleware/auth-middleware.js +350 -0
  390. package/dist/middleware/auth-middleware.js.map +1 -0
  391. package/dist/middleware/schema-validation.js +347 -0
  392. package/dist/middleware/schema-validation.js.map +1 -0
  393. package/dist/providers/anthropic-provider.js +1 -1
  394. package/dist/providers/anthropic-provider.js.map +1 -1
  395. package/dist/providers/provider-factory.js +2 -2
  396. package/dist/providers/provider-factory.js.map +1 -1
  397. package/dist/services/edge-case-analyzer.js +321 -0
  398. package/dist/services/edge-case-analyzer.js.map +1 -0
  399. package/dist/services/edge-case-deduplicator.js +266 -0
  400. package/dist/services/edge-case-deduplicator.js.map +1 -0
  401. package/dist/services/edge-case-detector.js +337 -0
  402. package/dist/services/edge-case-detector.js.map +1 -0
  403. package/dist/services/edge-case-tracker.js +547 -0
  404. package/dist/services/edge-case-tracker.js.map +1 -0
  405. package/dist/services/health-check-system.js +586 -0
  406. package/dist/services/health-check-system.js.map +1 -0
  407. package/dist/services/metrics-logger.js +412 -0
  408. package/dist/services/metrics-logger.js.map +1 -0
  409. package/dist/services/patch-generator.js +378 -0
  410. package/dist/services/patch-generator.js.map +1 -0
  411. package/dist/services/patch-validator.js +337 -0
  412. package/dist/services/patch-validator.js.map +1 -0
  413. package/dist/services/performance-monitor.js +811 -0
  414. package/dist/services/performance-monitor.js.map +1 -0
  415. package/dist/services/promotion-pipeline.js +918 -0
  416. package/dist/services/promotion-pipeline.js.map +1 -0
  417. package/dist/services/promotion-validator.js +394 -0
  418. package/dist/services/promotion-validator.js.map +1 -0
  419. package/dist/services/reflection-logger.js +388 -0
  420. package/dist/services/reflection-logger.js.map +1 -0
  421. package/dist/services/skill-deployment.js +472 -0
  422. package/dist/services/skill-deployment.js.map +1 -0
  423. package/dist/services/skill-loader.js +427 -0
  424. package/dist/services/skill-loader.js.map +1 -0
  425. package/dist/services/skill-promotion.js +372 -0
  426. package/dist/services/skill-promotion.js.map +1 -0
  427. package/dist/services/skill-validator.js +454 -0
  428. package/dist/services/skill-validator.js.map +1 -0
  429. package/dist/services/skill-versioning.js +244 -0
  430. package/dist/services/skill-versioning.js.map +1 -0
  431. package/dist/services/workspace-supervisor.js +597 -0
  432. package/dist/services/workspace-supervisor.js.map +1 -0
  433. package/dist/types/edge-case.js +45 -0
  434. package/dist/types/edge-case.js.map +1 -0
  435. package/package.json +201 -177
  436. package/readme/README.md +19 -4
  437. package/scripts/backup-cleanup.sh +627 -0
  438. package/scripts/cleanup-workspaces.sh +412 -0
  439. package/scripts/cleanup-yaml-configs.sh +141 -0
  440. package/scripts/deploy-approved-skills.sh +263 -0
  441. package/scripts/health-check.sh +447 -0
  442. package/scripts/log-aggregator.sh +554 -0
  443. package/scripts/log-monitor.sh +629 -0
  444. package/scripts/manage-agent-workspaces.sh +434 -0
  445. package/scripts/migrate-schema.sh +533 -0
  446. package/scripts/promote-staged-skills.sh +423 -0
  447. package/scripts/verify-no-secrets.sh +88 -35
  448. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  449. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  450. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  451. package/.claude/skills/agent-lifecycle/SKILL.md +0 -60
  452. package/.claude/skills/agent-lifecycle/execute-lifecycle-hook.sh +0 -573
  453. package/.claude/skills/agent-lifecycle/simple-audit.sh +0 -31
  454. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  455. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
  456. package/README.md.backup_before_replace +0 -781
  457. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  458. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  459. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  460. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  461. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
@@ -0,0 +1,604 @@
1
+ /**
2
+ * Multi-System Query Engine
3
+ *
4
+ * Provides fluent interface for cross-database queries with priority-ordered execution.
5
+ * Part of Task 3.3: Query Correlation Key Layer
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const query = new MultiSystemQuery(dbService);
10
+ * const results = await query
11
+ * .forTask('task-001')
12
+ * .includingEntities(['agent', 'skill', 'artifact'])
13
+ * .fromSystems(['redis', 'sqlite', 'postgres'])
14
+ * .withCache(true)
15
+ * .execute();
16
+ * // Returns: { agents: [...], skills: [...], artifacts: [...] }
17
+ * ```
18
+ */ import { DatabaseErrorCode } from './database-service/types.js';
19
+ import { buildCorrelationKey, buildWildcardPattern } from './database-service/correlation.js';
20
+ import { createLogger } from './logging.js';
21
+ import { createDatabaseError } from './database-service/errors.js';
22
+ import { createErrorAggregator } from './error-aggregator.js';
23
+ /**
24
+ * Multi-system query builder
25
+ *
26
+ * Provides fluent interface for building and executing cross-database queries.
27
+ */ export class MultiSystemQuery {
28
+ dbService;
29
+ cache;
30
+ logger;
31
+ errorAggregator;
32
+ // Query configuration
33
+ correlationKey;
34
+ wildcardPattern;
35
+ entities = [];
36
+ systems = [
37
+ 'redis',
38
+ 'sqlite',
39
+ 'postgres'
40
+ ];
41
+ priority = 'balanced';
42
+ useCache = false;
43
+ timeout = 2000;
44
+ filters = [];
45
+ strictMode = false;
46
+ constructor(config){
47
+ this.dbService = config.dbService;
48
+ this.cache = config.cache;
49
+ this.useCache = config.enableCache || false;
50
+ this.timeout = config.defaultTimeout || 2000;
51
+ this.logger = config.logger || createLogger('multi-system-query');
52
+ }
53
+ /**
54
+ * Query for specific task
55
+ *
56
+ * @param taskId - Task ID to query
57
+ * @returns Query builder (fluent)
58
+ */ forTask(taskId) {
59
+ this.correlationKey = {
60
+ type: 'task',
61
+ id: taskId
62
+ };
63
+ return this;
64
+ }
65
+ /**
66
+ * Query for specific agent
67
+ *
68
+ * @param agentId - Agent ID to query
69
+ * @returns Query builder (fluent)
70
+ */ forAgent(agentId) {
71
+ this.correlationKey = {
72
+ type: 'agent',
73
+ id: agentId
74
+ };
75
+ return this;
76
+ }
77
+ /**
78
+ * Query for specific skill
79
+ *
80
+ * @param skillId - Skill ID to query
81
+ * @returns Query builder (fluent)
82
+ */ forSkill(skillId) {
83
+ this.correlationKey = {
84
+ type: 'skill',
85
+ id: skillId
86
+ };
87
+ return this;
88
+ }
89
+ /**
90
+ * Query for specific execution
91
+ *
92
+ * @param executionId - Execution ID to query
93
+ * @returns Query builder (fluent)
94
+ */ forExecution(executionId) {
95
+ this.correlationKey = {
96
+ type: 'execution',
97
+ id: executionId
98
+ };
99
+ return this;
100
+ }
101
+ /**
102
+ * Query with custom correlation key
103
+ *
104
+ * @param key - Correlation key
105
+ * @returns Query builder (fluent)
106
+ */ withKey(key) {
107
+ this.correlationKey = key;
108
+ return this;
109
+ }
110
+ /**
111
+ * Query with wildcard pattern
112
+ *
113
+ * @param pattern - Wildcard pattern
114
+ * @returns Query builder (fluent)
115
+ */ withPattern(pattern) {
116
+ this.wildcardPattern = pattern;
117
+ return this;
118
+ }
119
+ /**
120
+ * Include specific entity types
121
+ *
122
+ * @param entities - Entity types to include
123
+ * @returns Query builder (fluent)
124
+ */ includingEntities(entities) {
125
+ this.entities = entities;
126
+ return this;
127
+ }
128
+ /**
129
+ * Query from specific database systems
130
+ *
131
+ * @param systems - Database systems to query
132
+ * @returns Query builder (fluent)
133
+ */ fromSystems(systems) {
134
+ this.systems = systems;
135
+ return this;
136
+ }
137
+ /**
138
+ * Set execution priority
139
+ *
140
+ * @param priority - Execution priority
141
+ * @returns Query builder (fluent)
142
+ */ withPriority(priority) {
143
+ this.priority = priority;
144
+ return this;
145
+ }
146
+ /**
147
+ * Enable or disable caching
148
+ *
149
+ * @param enabled - Enable cache
150
+ * @returns Query builder (fluent)
151
+ */ withCache(enabled) {
152
+ this.useCache = enabled;
153
+ return this;
154
+ }
155
+ /**
156
+ * Set query timeout
157
+ *
158
+ * @param timeout - Timeout in milliseconds
159
+ * @returns Query builder (fluent)
160
+ */ withTimeout(timeout) {
161
+ this.timeout = timeout;
162
+ return this;
163
+ }
164
+ /**
165
+ * Add query filter
166
+ *
167
+ * @param filter - Query filter
168
+ * @returns Query builder (fluent)
169
+ */ addFilter(filter) {
170
+ this.filters.push(filter);
171
+ return this;
172
+ }
173
+ /**
174
+ * Set whether to fail on partial errors
175
+ *
176
+ * @param fail - Fail if any system fails
177
+ * @returns Query builder (fluent)
178
+ */ failOnPartialError(fail = true) {
179
+ this.strictMode = fail;
180
+ return this;
181
+ }
182
+ /**
183
+ * Execute multi-system query
184
+ *
185
+ * @returns Multi-system query results
186
+ * @throws {DatabaseError} If all systems fail or critical error occurs
187
+ */ async execute() {
188
+ const startTime = Date.now();
189
+ // Validate query configuration
190
+ this.validateQuery();
191
+ // Initialize error aggregator with correlation ID
192
+ this.errorAggregator = createErrorAggregator();
193
+ const correlationId = this.errorAggregator.getCorrelationId();
194
+ this.logger.info('Starting multi-system query', {
195
+ correlationId,
196
+ systems: this.systems,
197
+ priority: this.priority
198
+ });
199
+ // Build cache key
200
+ const cacheKey = this.buildCacheKey();
201
+ // Check cache first
202
+ if (this.useCache && this.cache) {
203
+ const cached = this.cache.get(cacheKey);
204
+ if (cached) {
205
+ this.logger.debug('Cache hit', {
206
+ cacheKey,
207
+ correlationId
208
+ });
209
+ return {
210
+ ...cached,
211
+ cacheHit: true
212
+ };
213
+ }
214
+ }
215
+ // Execute query based on priority
216
+ let result;
217
+ try {
218
+ result = await this.executeByPriority();
219
+ } catch (error) {
220
+ // Critical error during execution
221
+ this.logger.error('Critical error during query execution', error instanceof Error ? error : undefined, {
222
+ correlationId,
223
+ errorMessage: error instanceof Error ? error.message : String(error)
224
+ });
225
+ throw createDatabaseError(DatabaseErrorCode.QUERY_FAILED, 'Multi-system query failed with critical error', error instanceof Error ? error : undefined, {
226
+ correlationId,
227
+ systems: this.systems
228
+ });
229
+ }
230
+ // Check if we should fail based on errors
231
+ if (this.errorAggregator.shouldFailOperation(this.systems)) {
232
+ const errorReport = this.errorAggregator.createReport();
233
+ this.logger.error('Multi-system query failed', undefined, {
234
+ correlationId,
235
+ errorReport
236
+ });
237
+ const aggregationResult = this.errorAggregator.getResult(this.systems);
238
+ throw createDatabaseError(aggregationResult.hasCriticalErrors ? DatabaseErrorCode.QUERY_FAILED : DatabaseErrorCode.QUERY_FAILED, aggregationResult.allSystemsFailed ? 'All database systems failed' : 'Critical errors occurred during query execution', undefined, {
239
+ correlationId,
240
+ errorCount: aggregationResult.totalErrors,
241
+ failedSystems: Object.keys(aggregationResult.errorsBySystem),
242
+ errors: aggregationResult.allErrors.map((e)=>({
243
+ system: e.system,
244
+ code: e.error.code,
245
+ message: e.error.message,
246
+ severity: e.severity
247
+ }))
248
+ });
249
+ }
250
+ // Check for partial errors
251
+ if (this.strictMode && result.errors && result.errors.length > 0) {
252
+ const errorReport = this.errorAggregator.createReport();
253
+ this.logger.error('Query failed due to partial errors', undefined, {
254
+ correlationId,
255
+ errorCount: result.errors.length,
256
+ errorReport
257
+ });
258
+ throw createDatabaseError(DatabaseErrorCode.QUERY_FAILED, `Query failed with ${result.errors.length} error(s)`, undefined, {
259
+ correlationId,
260
+ errors: result.errors
261
+ });
262
+ }
263
+ // Merge and deduplicate results
264
+ result.merged = this.mergeResults(result);
265
+ // Calculate execution time
266
+ result.executionTime = Date.now() - startTime;
267
+ result.timestamp = new Date();
268
+ result.cacheHit = false;
269
+ // Validate performance requirement (<2s)
270
+ if (result.executionTime >= this.timeout) {
271
+ this.logger.warn('Query exceeded timeout', {
272
+ correlationId,
273
+ executionTime: result.executionTime,
274
+ timeout: this.timeout
275
+ });
276
+ }
277
+ // Log success
278
+ this.logger.info('Multi-system query completed', {
279
+ correlationId,
280
+ executionTime: result.executionTime,
281
+ resultCount: result.merged.length,
282
+ errorCount: result.errors?.length || 0
283
+ });
284
+ // Store in cache
285
+ if (this.useCache && this.cache) {
286
+ this.cache.set(cacheKey, result);
287
+ }
288
+ return result;
289
+ }
290
+ /**
291
+ * Execute query based on priority strategy
292
+ */ async executeByPriority() {
293
+ const result = {
294
+ correlationKey: this.buildCorrelationKeyString(),
295
+ merged: [],
296
+ executionTime: 0,
297
+ timestamp: new Date(),
298
+ errors: []
299
+ };
300
+ switch(this.priority){
301
+ case 'fastest':
302
+ return this.executeFastest(result);
303
+ case 'balanced':
304
+ return this.executeBalanced(result);
305
+ case 'comprehensive':
306
+ return this.executeComprehensive(result);
307
+ default:
308
+ return this.executeBalanced(result);
309
+ }
310
+ }
311
+ /**
312
+ * Execute fastest strategy (stop on first result)
313
+ */ async executeFastest(result) {
314
+ if (!this.errorAggregator) {
315
+ throw new Error('Error aggregator not initialized');
316
+ }
317
+ // Query in priority order: Redis → SQLite → PostgreSQL
318
+ const orderedSystems = this.getOrderedSystems();
319
+ for (const system of orderedSystems){
320
+ // Check circuit breaker
321
+ if (this.errorAggregator.isCircuitOpen(system)) {
322
+ this.logger.warn(`Circuit breaker open for ${system}, skipping`, {
323
+ correlationId: this.errorAggregator.getCorrelationId()
324
+ });
325
+ const error = this.createError(system, new Error('Circuit breaker open'));
326
+ result.errors?.push(error);
327
+ this.errorAggregator.addError(system, error, {
328
+ strategy: 'fastest'
329
+ });
330
+ continue;
331
+ }
332
+ try {
333
+ const data = await this.querySystem(system);
334
+ this.errorAggregator.recordSuccess(system);
335
+ if (data && data.length > 0) {
336
+ result[system] = data;
337
+ return result; // Stop on first non-empty result
338
+ }
339
+ } catch (error) {
340
+ const dbError = this.createError(system, error);
341
+ this.logger.warn(`Query failed for ${system}`, {
342
+ error: dbError,
343
+ correlationId: this.errorAggregator.getCorrelationId()
344
+ });
345
+ result.errors?.push(dbError);
346
+ this.errorAggregator.addError(system, dbError, {
347
+ strategy: 'fastest'
348
+ });
349
+ }
350
+ }
351
+ return result;
352
+ }
353
+ /**
354
+ * Execute balanced strategy (priority-ordered parallel)
355
+ */ async executeBalanced(result) {
356
+ if (!this.errorAggregator) {
357
+ throw new Error('Error aggregator not initialized');
358
+ }
359
+ const orderedSystems = this.getOrderedSystems();
360
+ const promises = orderedSystems.map(async (system)=>{
361
+ // Check circuit breaker
362
+ if (this.errorAggregator.isCircuitOpen(system)) {
363
+ this.logger.warn(`Circuit breaker open for ${system}, skipping`, {
364
+ correlationId: this.errorAggregator.getCorrelationId()
365
+ });
366
+ const error = this.createError(system, new Error('Circuit breaker open'));
367
+ result.errors?.push(error);
368
+ this.errorAggregator.addError(system, error, {
369
+ strategy: 'balanced'
370
+ });
371
+ return;
372
+ }
373
+ try {
374
+ const data = await this.querySystem(system);
375
+ this.errorAggregator.recordSuccess(system);
376
+ if (data && data.length > 0) {
377
+ result[system] = data;
378
+ }
379
+ } catch (error) {
380
+ const dbError = this.createError(system, error);
381
+ this.logger.warn(`Query failed for ${system}`, {
382
+ error: dbError,
383
+ correlationId: this.errorAggregator.getCorrelationId()
384
+ });
385
+ result.errors?.push(dbError);
386
+ this.errorAggregator.addError(system, dbError, {
387
+ strategy: 'balanced'
388
+ });
389
+ }
390
+ });
391
+ await Promise.all(promises);
392
+ return result;
393
+ }
394
+ /**
395
+ * Execute comprehensive strategy (all systems in parallel)
396
+ */ async executeComprehensive(result) {
397
+ if (!this.errorAggregator) {
398
+ throw new Error('Error aggregator not initialized');
399
+ }
400
+ const promises = this.systems.map(async (system)=>{
401
+ // Check circuit breaker
402
+ if (this.errorAggregator.isCircuitOpen(system)) {
403
+ this.logger.warn(`Circuit breaker open for ${system}, skipping`, {
404
+ correlationId: this.errorAggregator.getCorrelationId()
405
+ });
406
+ const error = this.createError(system, new Error('Circuit breaker open'));
407
+ result.errors?.push(error);
408
+ this.errorAggregator.addError(system, error, {
409
+ strategy: 'comprehensive'
410
+ });
411
+ result[system] = [];
412
+ return;
413
+ }
414
+ try {
415
+ const data = await this.querySystem(system);
416
+ this.errorAggregator.recordSuccess(system);
417
+ result[system] = data || [];
418
+ } catch (error) {
419
+ const dbError = this.createError(system, error);
420
+ this.logger.warn(`Query failed for ${system}`, {
421
+ error: dbError,
422
+ correlationId: this.errorAggregator.getCorrelationId()
423
+ });
424
+ result.errors?.push(dbError);
425
+ this.errorAggregator.addError(system, dbError, {
426
+ strategy: 'comprehensive'
427
+ });
428
+ result[system] = [];
429
+ }
430
+ });
431
+ await Promise.all(promises);
432
+ return result;
433
+ }
434
+ /**
435
+ * Query specific database system
436
+ */ async querySystem(system) {
437
+ const adapter = this.dbService.getAdapter(system);
438
+ const results = [];
439
+ // If wildcard pattern, use pattern matching
440
+ if (this.wildcardPattern) {
441
+ const pattern = buildWildcardPattern(this.wildcardPattern);
442
+ // For Redis, use SCAN with pattern
443
+ if (system === 'redis') {
444
+ const keys = await this.scanRedisKeys(pattern);
445
+ for (const key of keys){
446
+ const data = await adapter.get(key);
447
+ if (data) results.push(data);
448
+ }
449
+ } else {
450
+ // For SQLite/PostgreSQL, use raw query with LIKE
451
+ const data = await adapter.raw('SELECT * FROM correlation_data WHERE key LIKE ?', [
452
+ pattern.replace('*', '%')
453
+ ]);
454
+ results.push(...Array.isArray(data) ? data : []);
455
+ }
456
+ } else if (this.correlationKey) {
457
+ // Query specific entities for correlation key
458
+ if (this.entities.length > 0) {
459
+ for (const entity of this.entities){
460
+ const key = buildCorrelationKey({
461
+ ...this.correlationKey,
462
+ entity
463
+ });
464
+ const data = await adapter.get(key);
465
+ if (data) results.push(data);
466
+ }
467
+ } else {
468
+ // Query just the correlation key
469
+ const key = buildCorrelationKey(this.correlationKey);
470
+ const data = await adapter.get(key);
471
+ if (data) results.push(data);
472
+ }
473
+ }
474
+ return results;
475
+ }
476
+ /**
477
+ * Scan Redis keys with pattern
478
+ */ async scanRedisKeys(pattern) {
479
+ const adapter = this.dbService.getAdapter('redis');
480
+ const keys = [];
481
+ // Use SCAN command for efficient key iteration
482
+ let cursor = '0';
483
+ do {
484
+ const result = await adapter.raw('SCAN', [
485
+ cursor,
486
+ 'MATCH',
487
+ pattern,
488
+ 'COUNT',
489
+ '100'
490
+ ]);
491
+ cursor = result[0];
492
+ keys.push(...result[1]);
493
+ }while (cursor !== '0')
494
+ return keys;
495
+ }
496
+ /**
497
+ * Merge results from multiple databases
498
+ */ mergeResults(result) {
499
+ const allResults = [];
500
+ const seen = new Set();
501
+ // Merge in priority order: Redis → SQLite → PostgreSQL
502
+ const orderedSystems = this.getOrderedSystems();
503
+ for (const system of orderedSystems){
504
+ const systemResults = result[system];
505
+ if (!systemResults) continue;
506
+ for (const item of systemResults){
507
+ const key = this.getDeduplicationKey(item);
508
+ if (!seen.has(key)) {
509
+ seen.add(key);
510
+ allResults.push(item);
511
+ }
512
+ }
513
+ }
514
+ return allResults;
515
+ }
516
+ /**
517
+ * Get deduplication key for result item
518
+ */ getDeduplicationKey(item) {
519
+ if (item && typeof item === 'object') {
520
+ // Try common ID fields
521
+ if (item.id) return `id:${item.id}`;
522
+ if (item._id) return `_id:${item._id}`;
523
+ if (item.key) return `key:${item.key}`;
524
+ // Fallback to JSON stringify
525
+ return JSON.stringify(item);
526
+ }
527
+ return String(item);
528
+ }
529
+ /**
530
+ * Get ordered systems based on priority
531
+ */ getOrderedSystems() {
532
+ // Priority order: Redis (fastest) → SQLite → PostgreSQL
533
+ const order = [
534
+ 'redis',
535
+ 'sqlite',
536
+ 'postgres'
537
+ ];
538
+ return order.filter((system)=>this.systems.includes(system));
539
+ }
540
+ /**
541
+ * Validate query configuration
542
+ */ validateQuery() {
543
+ if (!this.correlationKey && !this.wildcardPattern) {
544
+ throw createDatabaseError(DatabaseErrorCode.VALIDATION_FAILED, 'Query must specify either correlationKey or wildcardPattern', undefined, {
545
+ query: this
546
+ });
547
+ }
548
+ if (this.systems.length === 0) {
549
+ throw createDatabaseError(DatabaseErrorCode.VALIDATION_FAILED, 'Query must specify at least one database system', undefined, {
550
+ query: this
551
+ });
552
+ }
553
+ }
554
+ /**
555
+ * Build cache key for query
556
+ */ buildCacheKey() {
557
+ const parts = [
558
+ 'msq'
559
+ ]; // multi-system-query
560
+ if (this.correlationKey) {
561
+ parts.push(buildCorrelationKey(this.correlationKey));
562
+ } else if (this.wildcardPattern) {
563
+ parts.push(buildWildcardPattern(this.wildcardPattern));
564
+ }
565
+ if (this.entities.length > 0) {
566
+ parts.push(`entities:${this.entities.join(',')}`);
567
+ }
568
+ parts.push(`systems:${this.systems.join(',')}`);
569
+ parts.push(`priority:${this.priority}`);
570
+ return parts.join(':');
571
+ }
572
+ /**
573
+ * Build correlation key string
574
+ */ buildCorrelationKeyString() {
575
+ if (this.correlationKey) {
576
+ return buildCorrelationKey(this.correlationKey);
577
+ } else if (this.wildcardPattern) {
578
+ return buildWildcardPattern(this.wildcardPattern);
579
+ }
580
+ return 'unknown';
581
+ }
582
+ /**
583
+ * Create database error
584
+ */ createError(system, error) {
585
+ return {
586
+ code: DatabaseErrorCode.QUERY_FAILED,
587
+ message: `Query failed for ${system}: ${error.message || error}`,
588
+ originalError: error instanceof Error ? error : undefined,
589
+ context: {
590
+ system
591
+ }
592
+ };
593
+ }
594
+ }
595
+ /**
596
+ * Create multi-system query builder
597
+ *
598
+ * @param config - Query builder configuration
599
+ * @returns Multi-system query builder instance
600
+ */ export function createMultiSystemQuery(config) {
601
+ return new MultiSystemQuery(config);
602
+ }
603
+
604
+ //# sourceMappingURL=multi-system-query.js.map