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,244 @@
1
+ /**
2
+ * Skill Versioning Service
3
+ *
4
+ * Provides semantic versioning management for skill deployment.
5
+ * Part of Task 1.1: Automated Skill Deployment Pipeline
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const version = await getNextVersion('authentication', 'minor');
10
+ * // Returns '1.1.0' if current version is '1.0.0'
11
+ *
12
+ * const isValid = validateVersion('1.2.3'); // true
13
+ * const isValid = validateVersion('v1.2.3'); // false
14
+ * ```
15
+ */ import { StandardError, ErrorCode } from '../lib/errors.js';
16
+ import { createLogger } from '../lib/logging.js';
17
+ const logger = createLogger('skill-versioning');
18
+ /**
19
+ * Validate semantic version format (x.y.z)
20
+ *
21
+ * @param version - Version string to validate
22
+ * @returns True if valid semantic version format
23
+ */ export function validateVersion(version) {
24
+ // Must match semantic versioning format: x.y.z where x, y, z are non-negative integers
25
+ const semverRegex = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
26
+ return semverRegex.test(version);
27
+ }
28
+ /**
29
+ * Parse semantic version string into components
30
+ *
31
+ * @param version - Version string to parse
32
+ * @returns Parsed version components
33
+ * @throws StandardError if version format is invalid
34
+ */ export function parseVersion(version) {
35
+ if (!validateVersion(version)) {
36
+ throw new StandardError(ErrorCode.VALIDATION_FAILED, `Invalid semantic version format: ${version}`, {
37
+ version,
38
+ expectedFormat: 'x.y.z'
39
+ });
40
+ }
41
+ const parts = version.split('.').map(Number);
42
+ return {
43
+ major: parts[0],
44
+ minor: parts[1],
45
+ patch: parts[2],
46
+ raw: version
47
+ };
48
+ }
49
+ /**
50
+ * Compare two semantic versions
51
+ *
52
+ * @param v1 - First version
53
+ * @param v2 - Second version
54
+ * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2
55
+ */ export function compareVersions(v1, v2) {
56
+ const parsed1 = parseVersion(v1);
57
+ const parsed2 = parseVersion(v2);
58
+ if (parsed1.major !== parsed2.major) {
59
+ return parsed1.major > parsed2.major ? 1 : -1;
60
+ }
61
+ if (parsed1.minor !== parsed2.minor) {
62
+ return parsed1.minor > parsed2.minor ? 1 : -1;
63
+ }
64
+ if (parsed1.patch !== parsed2.patch) {
65
+ return parsed1.patch > parsed2.patch ? 1 : -1;
66
+ }
67
+ return 0;
68
+ }
69
+ /**
70
+ * Increment version based on change type
71
+ *
72
+ * @param version - Current version
73
+ * @param changeType - Type of change (major, minor, patch)
74
+ * @returns New version string
75
+ */ export function incrementVersion(version, changeType) {
76
+ const parsed = parseVersion(version);
77
+ switch(changeType){
78
+ case 'major':
79
+ return `${parsed.major + 1}.0.0`;
80
+ case 'minor':
81
+ return `${parsed.major}.${parsed.minor + 1}.0`;
82
+ case 'patch':
83
+ return `${parsed.major}.${parsed.minor}.${parsed.patch + 1}`;
84
+ default:
85
+ throw new StandardError(ErrorCode.INVALID_INPUT, `Invalid version change type: ${changeType}`, {
86
+ changeType,
87
+ validTypes: [
88
+ 'major',
89
+ 'minor',
90
+ 'patch'
91
+ ]
92
+ });
93
+ }
94
+ }
95
+ /**
96
+ * Get the next version for a skill based on change type
97
+ *
98
+ * @param dbService - Database service instance
99
+ * @param skillName - Name of the skill
100
+ * @param changeType - Type of change (major, minor, patch)
101
+ * @returns Next version string
102
+ * @throws StandardError if skill not found or version conflict
103
+ */ export async function getNextVersion(dbService, skillName, changeType) {
104
+ logger.info('Getting next version for skill', {
105
+ skillName,
106
+ changeType
107
+ });
108
+ try {
109
+ const adapter = dbService.getAdapter('sqlite');
110
+ // Get current version from skills table
111
+ const result = await adapter.query('SELECT version FROM skills WHERE name = ? ORDER BY created_at DESC LIMIT 1', [
112
+ skillName
113
+ ]);
114
+ if (!result.rows || result.rows.length === 0) {
115
+ // No existing version, start at 1.0.0
116
+ logger.info('No existing version found, starting at 1.0.0', {
117
+ skillName
118
+ });
119
+ return '1.0.0';
120
+ }
121
+ const currentVersion = result.rows[0].version;
122
+ const nextVersion = incrementVersion(currentVersion, changeType);
123
+ logger.info('Calculated next version', {
124
+ skillName,
125
+ currentVersion,
126
+ nextVersion,
127
+ changeType
128
+ });
129
+ return nextVersion;
130
+ } catch (error) {
131
+ logger.error('Failed to get next version', error, {
132
+ skillName,
133
+ changeType
134
+ });
135
+ throw new StandardError(ErrorCode.DB_QUERY_FAILED, `Failed to get next version for skill: ${skillName}`, {
136
+ skillName,
137
+ changeType
138
+ }, error);
139
+ }
140
+ }
141
+ /**
142
+ * Check if version already exists for a skill
143
+ *
144
+ * @param dbService - Database service instance
145
+ * @param skillName - Name of the skill
146
+ * @param version - Version to check
147
+ * @returns True if version exists
148
+ */ export async function versionExists(dbService, skillName, version) {
149
+ logger.debug('Checking if version exists', {
150
+ skillName,
151
+ version
152
+ });
153
+ try {
154
+ const adapter = dbService.getAdapter('sqlite');
155
+ const result = await adapter.query('SELECT COUNT(*) as count FROM skills WHERE name = ? AND version = ?', [
156
+ skillName,
157
+ version
158
+ ]);
159
+ const count = result.rows?.[0]?.count || 0;
160
+ const exists = count > 0;
161
+ logger.debug('Version existence check complete', {
162
+ skillName,
163
+ version,
164
+ exists
165
+ });
166
+ return exists;
167
+ } catch (error) {
168
+ logger.error('Failed to check version existence', error, {
169
+ skillName,
170
+ version
171
+ });
172
+ throw new StandardError(ErrorCode.DB_QUERY_FAILED, `Failed to check version existence for skill: ${skillName}`, {
173
+ skillName,
174
+ version
175
+ }, error);
176
+ }
177
+ }
178
+ /**
179
+ * Get all versions for a skill, sorted by semantic version
180
+ *
181
+ * @param dbService - Database service instance
182
+ * @param skillName - Name of the skill
183
+ * @returns Array of version strings, sorted from oldest to newest
184
+ */ export async function getSkillVersions(dbService, skillName) {
185
+ logger.debug('Getting all versions for skill', {
186
+ skillName
187
+ });
188
+ try {
189
+ const adapter = dbService.getAdapter('sqlite');
190
+ const result = await adapter.query('SELECT version FROM skills WHERE name = ? ORDER BY created_at ASC', [
191
+ skillName
192
+ ]);
193
+ const versions = (result.rows || []).map((row)=>row.version);
194
+ // Sort by semantic version
195
+ versions.sort(compareVersions);
196
+ logger.debug('Retrieved skill versions', {
197
+ skillName,
198
+ count: versions.length
199
+ });
200
+ return versions;
201
+ } catch (error) {
202
+ logger.error('Failed to get skill versions', error, {
203
+ skillName
204
+ });
205
+ throw new StandardError(ErrorCode.DB_QUERY_FAILED, `Failed to get versions for skill: ${skillName}`, {
206
+ skillName
207
+ }, error);
208
+ }
209
+ }
210
+ /**
211
+ * Get the latest version for a skill
212
+ *
213
+ * @param dbService - Database service instance
214
+ * @param skillName - Name of the skill
215
+ * @returns Latest version string, or null if no versions exist
216
+ */ export async function getLatestVersion(dbService, skillName) {
217
+ logger.debug('Getting latest version for skill', {
218
+ skillName
219
+ });
220
+ try {
221
+ const versions = await getSkillVersions(dbService, skillName);
222
+ if (versions.length === 0) {
223
+ logger.debug('No versions found for skill', {
224
+ skillName
225
+ });
226
+ return null;
227
+ }
228
+ const latestVersion = versions[versions.length - 1];
229
+ logger.debug('Retrieved latest version', {
230
+ skillName,
231
+ latestVersion
232
+ });
233
+ return latestVersion;
234
+ } catch (error) {
235
+ logger.error('Failed to get latest version', error, {
236
+ skillName
237
+ });
238
+ throw new StandardError(ErrorCode.DB_QUERY_FAILED, `Failed to get latest version for skill: ${skillName}`, {
239
+ skillName
240
+ }, error);
241
+ }
242
+ }
243
+
244
+ //# sourceMappingURL=skill-versioning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/skill-versioning.ts"],"sourcesContent":["/**\r\n * Skill Versioning Service\r\n *\r\n * Provides semantic versioning management for skill deployment.\r\n * Part of Task 1.1: Automated Skill Deployment Pipeline\r\n *\r\n * @example\r\n * ```typescript\r\n * const version = await getNextVersion('authentication', 'minor');\r\n * // Returns '1.1.0' if current version is '1.0.0'\r\n *\r\n * const isValid = validateVersion('1.2.3'); // true\r\n * const isValid = validateVersion('v1.2.3'); // false\r\n * ```\r\n */\r\n\r\nimport { DatabaseService } from '../lib/database-service.js';\r\nimport { StandardError, ErrorCode } from '../lib/errors.js';\r\nimport { createLogger, Logger } from '../lib/logging.js';\r\n\r\nconst logger = createLogger('skill-versioning');\r\n\r\n/**\r\n * Semantic version change type\r\n */\r\nexport type VersionChangeType = 'major' | 'minor' | 'patch';\r\n\r\n/**\r\n * Parsed semantic version\r\n */\r\nexport interface ParsedVersion {\r\n major: number;\r\n minor: number;\r\n patch: number;\r\n raw: string;\r\n}\r\n\r\n/**\r\n * Validate semantic version format (x.y.z)\r\n *\r\n * @param version - Version string to validate\r\n * @returns True if valid semantic version format\r\n */\r\nexport function validateVersion(version: string): boolean {\r\n // Must match semantic versioning format: x.y.z where x, y, z are non-negative integers\r\n const semverRegex = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$/;\r\n return semverRegex.test(version);\r\n}\r\n\r\n/**\r\n * Parse semantic version string into components\r\n *\r\n * @param version - Version string to parse\r\n * @returns Parsed version components\r\n * @throws StandardError if version format is invalid\r\n */\r\nexport function parseVersion(version: string): ParsedVersion {\r\n if (!validateVersion(version)) {\r\n throw new StandardError(\r\n ErrorCode.VALIDATION_FAILED,\r\n `Invalid semantic version format: ${version}`,\r\n { version, expectedFormat: 'x.y.z' }\r\n );\r\n }\r\n\r\n const parts = version.split('.').map(Number);\r\n return {\r\n major: parts[0],\r\n minor: parts[1],\r\n patch: parts[2],\r\n raw: version,\r\n };\r\n}\r\n\r\n/**\r\n * Compare two semantic versions\r\n *\r\n * @param v1 - First version\r\n * @param v2 - Second version\r\n * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2\r\n */\r\nexport function compareVersions(v1: string, v2: string): number {\r\n const parsed1 = parseVersion(v1);\r\n const parsed2 = parseVersion(v2);\r\n\r\n if (parsed1.major !== parsed2.major) {\r\n return parsed1.major > parsed2.major ? 1 : -1;\r\n }\r\n\r\n if (parsed1.minor !== parsed2.minor) {\r\n return parsed1.minor > parsed2.minor ? 1 : -1;\r\n }\r\n\r\n if (parsed1.patch !== parsed2.patch) {\r\n return parsed1.patch > parsed2.patch ? 1 : -1;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * Increment version based on change type\r\n *\r\n * @param version - Current version\r\n * @param changeType - Type of change (major, minor, patch)\r\n * @returns New version string\r\n */\r\nexport function incrementVersion(version: string, changeType: VersionChangeType): string {\r\n const parsed = parseVersion(version);\r\n\r\n switch (changeType) {\r\n case 'major':\r\n return `${parsed.major + 1}.0.0`;\r\n case 'minor':\r\n return `${parsed.major}.${parsed.minor + 1}.0`;\r\n case 'patch':\r\n return `${parsed.major}.${parsed.minor}.${parsed.patch + 1}`;\r\n default:\r\n throw new StandardError(\r\n ErrorCode.INVALID_INPUT,\r\n `Invalid version change type: ${changeType}`,\r\n { changeType, validTypes: ['major', 'minor', 'patch'] }\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Get the next version for a skill based on change type\r\n *\r\n * @param dbService - Database service instance\r\n * @param skillName - Name of the skill\r\n * @param changeType - Type of change (major, minor, patch)\r\n * @returns Next version string\r\n * @throws StandardError if skill not found or version conflict\r\n */\r\nexport async function getNextVersion(\r\n dbService: DatabaseService,\r\n skillName: string,\r\n changeType: VersionChangeType\r\n): Promise<string> {\r\n logger.info('Getting next version for skill', { skillName, changeType });\r\n\r\n try {\r\n const adapter = dbService.getAdapter('sqlite');\r\n\r\n // Get current version from skills table\r\n const result = await adapter.query(\r\n 'SELECT version FROM skills WHERE name = ? ORDER BY created_at DESC LIMIT 1',\r\n [skillName]\r\n );\r\n\r\n if (!result.rows || result.rows.length === 0) {\r\n // No existing version, start at 1.0.0\r\n logger.info('No existing version found, starting at 1.0.0', { skillName });\r\n return '1.0.0';\r\n }\r\n\r\n const currentVersion = result.rows[0].version as string;\r\n const nextVersion = incrementVersion(currentVersion, changeType);\r\n\r\n logger.info('Calculated next version', {\r\n skillName,\r\n currentVersion,\r\n nextVersion,\r\n changeType,\r\n });\r\n\r\n return nextVersion;\r\n } catch (error) {\r\n logger.error('Failed to get next version', error as Error, { skillName, changeType });\r\n throw new StandardError(\r\n ErrorCode.DB_QUERY_FAILED,\r\n `Failed to get next version for skill: ${skillName}`,\r\n { skillName, changeType },\r\n error as Error\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Check if version already exists for a skill\r\n *\r\n * @param dbService - Database service instance\r\n * @param skillName - Name of the skill\r\n * @param version - Version to check\r\n * @returns True if version exists\r\n */\r\nexport async function versionExists(\r\n dbService: DatabaseService,\r\n skillName: string,\r\n version: string\r\n): Promise<boolean> {\r\n logger.debug('Checking if version exists', { skillName, version });\r\n\r\n try {\r\n const adapter = dbService.getAdapter('sqlite');\r\n\r\n const result = await adapter.query(\r\n 'SELECT COUNT(*) as count FROM skills WHERE name = ? AND version = ?',\r\n [skillName, version]\r\n );\r\n\r\n const count = result.rows?.[0]?.count as number || 0;\r\n const exists = count > 0;\r\n\r\n logger.debug('Version existence check complete', { skillName, version, exists });\r\n return exists;\r\n } catch (error) {\r\n logger.error('Failed to check version existence', error as Error, { skillName, version });\r\n throw new StandardError(\r\n ErrorCode.DB_QUERY_FAILED,\r\n `Failed to check version existence for skill: ${skillName}`,\r\n { skillName, version },\r\n error as Error\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Get all versions for a skill, sorted by semantic version\r\n *\r\n * @param dbService - Database service instance\r\n * @param skillName - Name of the skill\r\n * @returns Array of version strings, sorted from oldest to newest\r\n */\r\nexport async function getSkillVersions(\r\n dbService: DatabaseService,\r\n skillName: string\r\n): Promise<string[]> {\r\n logger.debug('Getting all versions for skill', { skillName });\r\n\r\n try {\r\n const adapter = dbService.getAdapter('sqlite');\r\n\r\n const result = await adapter.query(\r\n 'SELECT version FROM skills WHERE name = ? ORDER BY created_at ASC',\r\n [skillName]\r\n );\r\n\r\n const versions = (result.rows || []).map(row => row.version as string);\r\n\r\n // Sort by semantic version\r\n versions.sort(compareVersions);\r\n\r\n logger.debug('Retrieved skill versions', { skillName, count: versions.length });\r\n return versions;\r\n } catch (error) {\r\n logger.error('Failed to get skill versions', error as Error, { skillName });\r\n throw new StandardError(\r\n ErrorCode.DB_QUERY_FAILED,\r\n `Failed to get versions for skill: ${skillName}`,\r\n { skillName },\r\n error as Error\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Get the latest version for a skill\r\n *\r\n * @param dbService - Database service instance\r\n * @param skillName - Name of the skill\r\n * @returns Latest version string, or null if no versions exist\r\n */\r\nexport async function getLatestVersion(\r\n dbService: DatabaseService,\r\n skillName: string\r\n): Promise<string | null> {\r\n logger.debug('Getting latest version for skill', { skillName });\r\n\r\n try {\r\n const versions = await getSkillVersions(dbService, skillName);\r\n\r\n if (versions.length === 0) {\r\n logger.debug('No versions found for skill', { skillName });\r\n return null;\r\n }\r\n\r\n const latestVersion = versions[versions.length - 1];\r\n logger.debug('Retrieved latest version', { skillName, latestVersion });\r\n return latestVersion;\r\n } catch (error) {\r\n logger.error('Failed to get latest version', error as Error, { skillName });\r\n throw new StandardError(\r\n ErrorCode.DB_QUERY_FAILED,\r\n `Failed to get latest version for skill: ${skillName}`,\r\n { skillName },\r\n error as Error\r\n );\r\n }\r\n}\r\n"],"names":["StandardError","ErrorCode","createLogger","logger","validateVersion","version","semverRegex","test","parseVersion","VALIDATION_FAILED","expectedFormat","parts","split","map","Number","major","minor","patch","raw","compareVersions","v1","v2","parsed1","parsed2","incrementVersion","changeType","parsed","INVALID_INPUT","validTypes","getNextVersion","dbService","skillName","info","adapter","getAdapter","result","query","rows","length","currentVersion","nextVersion","error","DB_QUERY_FAILED","versionExists","debug","count","exists","getSkillVersions","versions","row","sort","getLatestVersion","latestVersion"],"mappings":"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"}