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,533 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Schema Migration Utility
4
+ #
5
+ # Migrates data between SQLite, Redis, and PostgreSQL using unified schema mappings.
6
+ # Supports batch migration with progress indication and rollback on failure.
7
+ #
8
+ # Task: Integration Standardization Plan - Task 2.2
9
+ # Version: 1.0.0
10
+
11
+ set -euo pipefail
12
+
13
+ # ============================================================================
14
+ # Configuration
15
+ # ============================================================================
16
+
17
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
18
+ PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
19
+
20
+ # Default batch size for migrations
21
+ BATCH_SIZE=1000
22
+
23
+ # Supported databases
24
+ VALID_DATABASES=("sqlite" "redis" "postgres")
25
+
26
+ # Supported schemas
27
+ VALID_SCHEMAS=("agent_executions" "skill_executions" "artifacts" "coordination_events")
28
+
29
+ # ============================================================================
30
+ # Colors and Formatting
31
+ # ============================================================================
32
+
33
+ RED='\033[0;31m'
34
+ GREEN='\033[0;32m'
35
+ YELLOW='\033[1;33m'
36
+ BLUE='\033[0;34m'
37
+ NC='\033[0m' # No Color
38
+
39
+ # ============================================================================
40
+ # Helper Functions
41
+ # ============================================================================
42
+
43
+ log_info() {
44
+ echo -e "${BLUE}[INFO]${NC} $*"
45
+ }
46
+
47
+ log_success() {
48
+ echo -e "${GREEN}[SUCCESS]${NC} $*"
49
+ }
50
+
51
+ log_warning() {
52
+ echo -e "${YELLOW}[WARNING]${NC} $*"
53
+ }
54
+
55
+ log_error() {
56
+ echo -e "${RED}[ERROR]${NC} $*"
57
+ }
58
+
59
+ show_usage() {
60
+ cat << EOF
61
+ Usage: $0 --from=<db> --to=<db> --schema=<name> [options]
62
+
63
+ Required:
64
+ --from=<db> Source database (sqlite|redis|postgres)
65
+ --to=<db> Destination database (sqlite|redis|postgres)
66
+ --schema=<name> Schema to migrate (agent_executions|skill_executions|artifacts|coordination_events)
67
+
68
+ Options:
69
+ --verify-only Dry-run mode: verify migration without executing
70
+ --batch-size=N Number of records per batch (default: 1000)
71
+ --force Skip confirmation prompts
72
+ --backup Create backup before migration
73
+ --no-rollback Disable automatic rollback on failure
74
+
75
+ Examples:
76
+ # Migrate agent executions from SQLite to Redis
77
+ $0 --from=sqlite --to=redis --schema=agent_executions
78
+
79
+ # Verify migration without executing
80
+ $0 --from=sqlite --to=redis --schema=agent_executions --verify-only
81
+
82
+ # Migrate with custom batch size
83
+ $0 --from=postgres --to=sqlite --schema=skill_executions --batch-size=500
84
+
85
+ # Migrate with backup
86
+ $0 --from=sqlite --to=redis --schema=artifacts --backup --force
87
+
88
+ EOF
89
+ exit 1
90
+ }
91
+
92
+ validate_database() {
93
+ local db="$1"
94
+ for valid_db in "${VALID_DATABASES[@]}"; do
95
+ if [[ "$db" == "$valid_db" ]]; then
96
+ return 0
97
+ fi
98
+ done
99
+ return 1
100
+ }
101
+
102
+ validate_schema() {
103
+ local schema="$1"
104
+ for valid_schema in "${VALID_SCHEMAS[@]}"; do
105
+ if [[ "$schema" == "$valid_schema" ]]; then
106
+ return 0
107
+ fi
108
+ done
109
+ return 1
110
+ }
111
+
112
+ # ============================================================================
113
+ # Database Connection Functions
114
+ # ============================================================================
115
+
116
+ check_sqlite_connection() {
117
+ local db_path="$1"
118
+ if [[ ! -f "$db_path" ]]; then
119
+ log_error "SQLite database not found: $db_path"
120
+ return 1
121
+ fi
122
+
123
+ if ! sqlite3 "$db_path" "SELECT 1;" &>/dev/null; then
124
+ log_error "Cannot connect to SQLite database: $db_path"
125
+ return 1
126
+ fi
127
+
128
+ log_info "SQLite connection verified: $db_path"
129
+ return 0
130
+ }
131
+
132
+ check_redis_connection() {
133
+ if ! command -v redis-cli &> /dev/null; then
134
+ log_error "redis-cli not found in PATH"
135
+ return 1
136
+ fi
137
+
138
+ if ! redis-cli ping &>/dev/null; then
139
+ log_error "Cannot connect to Redis server"
140
+ return 1
141
+ fi
142
+
143
+ log_info "Redis connection verified"
144
+ return 0
145
+ }
146
+
147
+ check_postgres_connection() {
148
+ local conn_string="${POSTGRES_CONN:-}"
149
+
150
+ if [[ -z "$conn_string" ]]; then
151
+ log_error "PostgreSQL connection string not set (POSTGRES_CONN environment variable)"
152
+ return 1
153
+ fi
154
+
155
+ if ! command -v psql &> /dev/null; then
156
+ log_error "psql not found in PATH"
157
+ return 1
158
+ fi
159
+
160
+ if ! psql "$conn_string" -c "SELECT 1;" &>/dev/null; then
161
+ log_error "Cannot connect to PostgreSQL database"
162
+ return 1
163
+ fi
164
+
165
+ log_info "PostgreSQL connection verified"
166
+ return 0
167
+ }
168
+
169
+ # ============================================================================
170
+ # Migration Functions
171
+ # ============================================================================
172
+
173
+ count_records() {
174
+ local db="$1"
175
+ local schema="$2"
176
+ local count=0
177
+
178
+ case "$db" in
179
+ sqlite)
180
+ local db_path="${SQLITE_DB:-./data/cfn.db}"
181
+ count=$(sqlite3 "$db_path" "SELECT COUNT(*) FROM ${schema};")
182
+ ;;
183
+ redis)
184
+ # Count keys matching schema pattern
185
+ local pattern="${schema}:*"
186
+ count=$(redis-cli KEYS "$pattern" | wc -l)
187
+ ;;
188
+ postgres)
189
+ local conn_string="${POSTGRES_CONN}"
190
+ count=$(psql "$conn_string" -t -c "SELECT COUNT(*) FROM ${schema};")
191
+ ;;
192
+ esac
193
+
194
+ echo "$count"
195
+ }
196
+
197
+ create_backup() {
198
+ local db="$1"
199
+ local schema="$2"
200
+ local timestamp=$(date +%Y%m%d_%H%M%S)
201
+ local backup_dir="${PROJECT_ROOT}/.backups/schema-migration"
202
+
203
+ mkdir -p "$backup_dir"
204
+
205
+ case "$db" in
206
+ sqlite)
207
+ local db_path="${SQLITE_DB:-./data/cfn.db}"
208
+ local backup_path="${backup_dir}/${schema}_${timestamp}.db"
209
+ cp "$db_path" "$backup_path"
210
+ log_success "SQLite backup created: $backup_path"
211
+ echo "$backup_path"
212
+ ;;
213
+ redis)
214
+ local backup_path="${backup_dir}/${schema}_${timestamp}.rdb"
215
+ redis-cli --rdb "$backup_path" &>/dev/null
216
+ log_success "Redis backup created: $backup_path"
217
+ echo "$backup_path"
218
+ ;;
219
+ postgres)
220
+ local backup_path="${backup_dir}/${schema}_${timestamp}.sql"
221
+ pg_dump "${POSTGRES_CONN}" -t "$schema" -f "$backup_path"
222
+ log_success "PostgreSQL backup created: $backup_path"
223
+ echo "$backup_path"
224
+ ;;
225
+ esac
226
+ }
227
+
228
+ verify_migration() {
229
+ local from_db="$1"
230
+ local to_db="$2"
231
+ local schema="$3"
232
+
233
+ log_info "Verifying migration plan..."
234
+
235
+ # Check source database connection
236
+ case "$from_db" in
237
+ sqlite) check_sqlite_connection "${SQLITE_DB:-./data/cfn.db}" || return 1 ;;
238
+ redis) check_redis_connection || return 1 ;;
239
+ postgres) check_postgres_connection || return 1 ;;
240
+ esac
241
+
242
+ # Check destination database connection
243
+ case "$to_db" in
244
+ sqlite) check_sqlite_connection "${SQLITE_DB:-./data/cfn.db}" || return 1 ;;
245
+ redis) check_redis_connection || return 1 ;;
246
+ postgres) check_postgres_connection || return 1 ;;
247
+ esac
248
+
249
+ # Check schema compatibility
250
+ local direction="${from_db}-to-${to_db}"
251
+
252
+ # Validate direction is supported
253
+ if [[ "$schema" == "skill_executions" ]] && [[ "$direction" != "postgres-to-sqlite" ]]; then
254
+ log_error "Schema 'skill_executions' only supports postgres-to-sqlite migration"
255
+ return 1
256
+ fi
257
+
258
+ # Count records
259
+ local source_count
260
+ source_count=$(count_records "$from_db" "$schema")
261
+ log_info "Source ($from_db) record count: $source_count"
262
+
263
+ if [[ "$source_count" -eq 0 ]]; then
264
+ log_warning "Source database has no records to migrate"
265
+ return 0
266
+ fi
267
+
268
+ log_success "Migration verification passed"
269
+ return 0
270
+ }
271
+
272
+ execute_migration() {
273
+ local from_db="$1"
274
+ local to_db="$2"
275
+ local schema="$3"
276
+ local batch_size="$4"
277
+ local backup_path="${5:-}"
278
+
279
+ log_info "Starting migration: $from_db → $to_db ($schema)"
280
+
281
+ # Get total record count
282
+ local total_records
283
+ total_records=$(count_records "$from_db" "$schema")
284
+
285
+ if [[ "$total_records" -eq 0 ]]; then
286
+ log_warning "No records to migrate"
287
+ return 0
288
+ fi
289
+
290
+ log_info "Total records to migrate: $total_records"
291
+
292
+ # Create migration script using Node.js
293
+ local migration_script
294
+ migration_script=$(mktemp /tmp/migrate-schema-XXXXXX.mjs)
295
+
296
+ cat > "$migration_script" << 'EOF_MIGRATION'
297
+ import { DatabaseService } from '../src/lib/database-service/index.js';
298
+ import { transformBatch } from '../src/lib/schema-transform.js';
299
+ import { verifyBatchNoDataLoss } from '../src/lib/schema-validator.js';
300
+ import { logger } from '../src/lib/logging.js';
301
+
302
+ const fromDb = process.env.FROM_DB;
303
+ const toDb = process.env.TO_DB;
304
+ const schema = process.env.SCHEMA;
305
+ const batchSize = parseInt(process.env.BATCH_SIZE || '1000', 10);
306
+
307
+ async function migrate() {
308
+ const dbService = new DatabaseService();
309
+
310
+ try {
311
+ // Connect to databases
312
+ await dbService.connect();
313
+
314
+ const fromAdapter = dbService.getAdapter(fromDb);
315
+ const toAdapter = dbService.getAdapter(toDb);
316
+
317
+ // Get all records from source
318
+ const sourceRecords = await fromAdapter.list(schema, { limit: batchSize });
319
+
320
+ if (sourceRecords.length === 0) {
321
+ logger.info('No records to migrate');
322
+ process.exit(0);
323
+ }
324
+
325
+ // Transform records
326
+ const direction = `${fromDb}-to-${toDb}`;
327
+ const transformResult = transformBatch(schema, sourceRecords, direction);
328
+
329
+ if (!transformResult.success) {
330
+ logger.error('Transformation failed', { errors: transformResult.errors });
331
+ process.exit(1);
332
+ }
333
+
334
+ // Verify no data loss
335
+ const lossCheck = verifyBatchNoDataLoss(schema, sourceRecords, direction);
336
+ if (lossCheck.lossDetected) {
337
+ logger.error('Data loss detected', { check: lossCheck });
338
+ process.exit(1);
339
+ }
340
+
341
+ // Insert into destination
342
+ const insertResult = await toAdapter.insertMany(schema, transformResult.data);
343
+
344
+ if (!insertResult.success) {
345
+ logger.error('Insert failed', { error: insertResult.error });
346
+ process.exit(1);
347
+ }
348
+
349
+ logger.info('Migration completed successfully', {
350
+ schema,
351
+ records: transformResult.data.length,
352
+ direction
353
+ });
354
+
355
+ process.exit(0);
356
+ } catch (err) {
357
+ logger.error('Migration failed', { error: err.message });
358
+ process.exit(1);
359
+ }
360
+ }
361
+
362
+ migrate();
363
+ EOF_MIGRATION
364
+
365
+ # Execute migration
366
+ local migrated=0
367
+ local failed=0
368
+
369
+ log_info "Processing batch 1..."
370
+
371
+ if FROM_DB="$from_db" TO_DB="$to_db" SCHEMA="$schema" BATCH_SIZE="$batch_size" \
372
+ node "$migration_script"; then
373
+ migrated=$total_records
374
+ log_success "Migration completed: $migrated records migrated"
375
+ else
376
+ failed=1
377
+ log_error "Migration failed"
378
+
379
+ # Attempt rollback if backup exists
380
+ if [[ -n "$backup_path" ]] && [[ -f "$backup_path" ]]; then
381
+ log_warning "Attempting rollback from backup: $backup_path"
382
+ case "$to_db" in
383
+ sqlite)
384
+ cp "$backup_path" "${SQLITE_DB:-./data/cfn.db}"
385
+ log_success "Rollback completed"
386
+ ;;
387
+ redis)
388
+ log_warning "Redis rollback requires manual restore from RDB file"
389
+ ;;
390
+ postgres)
391
+ psql "${POSTGRES_CONN}" -f "$backup_path" &>/dev/null
392
+ log_success "Rollback completed"
393
+ ;;
394
+ esac
395
+ fi
396
+ fi
397
+
398
+ # Cleanup
399
+ rm -f "$migration_script"
400
+
401
+ return "$failed"
402
+ }
403
+
404
+ # ============================================================================
405
+ # Main Function
406
+ # ============================================================================
407
+
408
+ main() {
409
+ # Parse arguments
410
+ local from_db=""
411
+ local to_db=""
412
+ local schema=""
413
+ local verify_only=false
414
+ local batch_size=$BATCH_SIZE
415
+ local force=false
416
+ local do_backup=false
417
+ local no_rollback=false
418
+
419
+ for arg in "$@"; do
420
+ case "$arg" in
421
+ --from=*)
422
+ from_db="${arg#*=}"
423
+ ;;
424
+ --to=*)
425
+ to_db="${arg#*=}"
426
+ ;;
427
+ --schema=*)
428
+ schema="${arg#*=}"
429
+ ;;
430
+ --verify-only)
431
+ verify_only=true
432
+ ;;
433
+ --batch-size=*)
434
+ batch_size="${arg#*=}"
435
+ ;;
436
+ --force)
437
+ force=true
438
+ ;;
439
+ --backup)
440
+ do_backup=true
441
+ ;;
442
+ --no-rollback)
443
+ no_rollback=true
444
+ ;;
445
+ --help|-h)
446
+ show_usage
447
+ ;;
448
+ *)
449
+ log_error "Unknown argument: $arg"
450
+ show_usage
451
+ ;;
452
+ esac
453
+ done
454
+
455
+ # Validate required arguments
456
+ if [[ -z "$from_db" ]] || [[ -z "$to_db" ]] || [[ -z "$schema" ]]; then
457
+ log_error "Missing required arguments"
458
+ show_usage
459
+ fi
460
+
461
+ # Validate database names
462
+ if ! validate_database "$from_db"; then
463
+ log_error "Invalid source database: $from_db"
464
+ show_usage
465
+ fi
466
+
467
+ if ! validate_database "$to_db"; then
468
+ log_error "Invalid destination database: $to_db"
469
+ show_usage
470
+ fi
471
+
472
+ # Validate schema name
473
+ if ! validate_schema "$schema"; then
474
+ log_error "Invalid schema: $schema"
475
+ show_usage
476
+ fi
477
+
478
+ # Cannot migrate to same database
479
+ if [[ "$from_db" == "$to_db" ]]; then
480
+ log_error "Source and destination databases cannot be the same"
481
+ exit 1
482
+ fi
483
+
484
+ # Display migration plan
485
+ log_info "Migration Plan:"
486
+ log_info " Source: $from_db"
487
+ log_info " Destination: $to_db"
488
+ log_info " Schema: $schema"
489
+ log_info " Batch Size: $batch_size"
490
+ log_info " Verify Only: $verify_only"
491
+ log_info " Backup: $do_backup"
492
+ echo ""
493
+
494
+ # Verify migration plan
495
+ if ! verify_migration "$from_db" "$to_db" "$schema"; then
496
+ log_error "Migration verification failed"
497
+ exit 1
498
+ fi
499
+
500
+ # Stop if verify-only mode
501
+ if [[ "$verify_only" == true ]]; then
502
+ log_success "Verification complete (dry-run mode)"
503
+ exit 0
504
+ fi
505
+
506
+ # Confirm execution (unless --force)
507
+ if [[ "$force" != true ]]; then
508
+ echo -n "Proceed with migration? [y/N] "
509
+ read -r confirm
510
+ if [[ "$confirm" != "y" ]] && [[ "$confirm" != "Y" ]]; then
511
+ log_info "Migration cancelled"
512
+ exit 0
513
+ fi
514
+ fi
515
+
516
+ # Create backup if requested
517
+ local backup_path=""
518
+ if [[ "$do_backup" == true ]]; then
519
+ backup_path=$(create_backup "$to_db" "$schema")
520
+ fi
521
+
522
+ # Execute migration
523
+ if execute_migration "$from_db" "$to_db" "$schema" "$batch_size" "$backup_path"; then
524
+ log_success "Migration completed successfully"
525
+ exit 0
526
+ else
527
+ log_error "Migration failed"
528
+ exit 1
529
+ fi
530
+ }
531
+
532
+ # Run main function
533
+ main "$@"