claude-flow-novice 2.15.2 → 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 (533) 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-BACKUP_USAGE.md +243 -243
  36. package/.claude/hooks/cfn-invoke-security-validation.sh +69 -69
  37. package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
  38. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
  39. package/.claude/hooks/cfn-post-edit.config.json +44 -44
  40. package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
  41. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  42. package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  43. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  44. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  45. package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
  46. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  47. package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  48. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  49. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  50. package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  51. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
  52. package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  53. package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
  54. package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  55. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
  56. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  57. package/.claude/skills/cfn-redis-coordination/get-context.sh +145 -112
  58. package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  59. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  60. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  61. package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  62. package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
  63. package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
  64. package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  65. package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  66. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  67. package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
  68. package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
  69. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  70. package/.claude/skills/cfn-transparency-middleware/test-integration.sh +161 -161
  71. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
  72. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
  73. package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
  74. package/README.md +116 -475
  75. package/claude-assets/agents/cfn-dev-team/README.md +103 -0
  76. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
  77. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
  78. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
  79. package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
  80. package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
  81. package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
  82. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
  83. package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
  84. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
  85. package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
  86. package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
  87. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
  88. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
  89. package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
  90. package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
  91. package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
  92. package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
  93. package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
  94. package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
  95. package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
  96. package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
  97. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
  98. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
  99. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
  100. package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
  101. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
  102. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
  103. package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
  104. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  105. package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
  106. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
  107. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
  108. package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
  109. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
  110. package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
  111. package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
  112. package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
  113. package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
  114. package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
  115. package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
  116. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
  117. package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
  118. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  119. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  120. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  121. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  122. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  123. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  124. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  125. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  126. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  127. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  128. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  129. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  130. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  131. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  137. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  138. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  139. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  140. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  141. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  142. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  143. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  144. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  145. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  146. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  147. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  148. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  149. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  150. package/claude-assets/commands/cfn-loop-cli.md +16 -2
  151. package/claude-assets/commands/switch-api.md +31 -10
  152. package/claude-assets/hooks/cfn-BACKUP_USAGE.md +243 -243
  153. package/claude-assets/hooks/cfn-invoke-security-validation.sh +69 -69
  154. package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
  155. package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
  156. package/claude-assets/hooks/cfn-post-edit.config.json +44 -44
  157. package/claude-assets/hooks/cfn-post-execution/memory-cleanup.sh +19 -19
  158. package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
  159. package/claude-assets/hooks/cfn-pre-execution/memory-check.sh +19 -19
  160. package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
  161. package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
  162. package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +543 -572
  163. package/claude-assets/skills/agent-lifecycle/simple-audit.sh +57 -30
  164. package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
  165. package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
  166. package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
  167. package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
  168. package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
  169. package/claude-assets/skills/bootstrap/database-connection.md +464 -0
  170. package/claude-assets/skills/bootstrap/error-handling.md +580 -0
  171. package/claude-assets/skills/bootstrap/file-operations.md +699 -0
  172. package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
  173. package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
  174. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  175. package/claude-assets/skills/cfn-automatic-memory-persistence/persist-agent-output.sh +48 -48
  176. package/claude-assets/skills/cfn-automatic-memory-persistence/query-agent-history.sh +34 -34
  177. package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
  178. package/claude-assets/skills/cfn-deliverable-validation/confidence-calculator.sh +261 -261
  179. package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
  180. package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
  181. package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  182. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  183. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  184. package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
  185. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
  186. package/claude-assets/skills/cfn-expert-update/update-expert.sh +345 -345
  187. package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
  188. package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
  189. package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
  190. package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
  191. package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
  192. package/claude-assets/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
  193. package/claude-assets/skills/cfn-intervention-detector/detect-intervention.sh +110 -110
  194. package/claude-assets/skills/cfn-intervention-orchestrator/execute-intervention.sh +58 -58
  195. package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
  196. package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
  197. package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
  198. package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
  199. package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
  200. package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  201. package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  202. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  203. package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  204. package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  205. package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
  206. package/claude-assets/skills/cfn-loop2-output-processing/process-validator-output.sh +275 -275
  207. package/claude-assets/skills/cfn-memory-management/check-memory.sh +159 -159
  208. package/claude-assets/skills/cfn-memory-management/cleanup-memory.sh +196 -196
  209. package/claude-assets/skills/cfn-node-heap-sizer/task-mode-heap-limiter.sh +325 -325
  210. package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
  211. package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
  212. package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
  213. package/claude-assets/skills/cfn-playbook-auto-update/auto-update-playbook.sh +85 -85
  214. package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
  215. package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
  216. package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  217. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
  218. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  219. package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
  220. package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  221. package/claude-assets/skills/cfn-redis-coordination/get-context.sh +145 -112
  222. package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  223. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  224. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  225. package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  226. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
  227. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
  228. package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  229. package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  230. package/claude-assets/skills/cfn-scope-simplifier/simplify-scope.sh +67 -67
  231. package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
  232. package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
  233. package/claude-assets/skills/cfn-specialist-injection/recommend-specialist.sh +56 -56
  234. package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  235. package/claude-assets/skills/cfn-standardized-error-handling/capture-agent-error.sh +86 -86
  236. package/claude-assets/skills/cfn-standardized-error-handling/test-error-handling.sh +165 -165
  237. package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
  238. package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
  239. package/claude-assets/skills/cfn-task-config-init/initialize-config.sh +264 -264
  240. package/claude-assets/skills/cfn-task-decomposition/task-decomposer.sh +278 -278
  241. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
  242. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
  243. package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
  244. package/claude-assets/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
  245. package/claude-assets/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
  246. package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  247. package/claude-assets/skills/cfn-transparency-middleware/test-integration.sh +161 -161
  248. package/claude-assets/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
  249. package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
  250. package/claude-assets/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
  251. package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
  252. package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
  253. package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
  254. package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
  255. package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
  256. package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
  257. package/claude-assets/skills/cfn-utilities/test.sh +317 -0
  258. package/claude-assets/skills/docker-build/SKILL.md +96 -203
  259. package/claude-assets/skills/docker-build/build.sh +73 -73
  260. package/claude-assets/skills/integration/agent-handoff.sh +492 -0
  261. package/claude-assets/skills/integration/file-operations.sh +414 -0
  262. package/claude-assets/skills/json-validation/SKILL.md +431 -0
  263. package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
  264. package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
  265. package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
  266. package/claude-assets/skills/workflow-codification/APPROVAL_WORKFLOW.md +806 -0
  267. package/claude-assets/skills/workflow-codification/COST_TRACKING.md +637 -0
  268. package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
  269. package/claude-assets/skills/workflow-codification/EDGE_CASE_TRACKING.md +404 -0
  270. package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
  271. package/claude-assets/skills/workflow-codification/README_PHASE4.md +457 -0
  272. package/claude-assets/skills/workflow-codification/SKILL.md +110 -0
  273. package/claude-assets/skills/workflow-codification/analyze-patterns.sh +899 -0
  274. package/claude-assets/skills/workflow-codification/approval-workflow.sh +514 -0
  275. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
  276. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
  277. package/claude-assets/skills/workflow-codification/generate-skill-update.sh +525 -0
  278. package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
  279. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
  280. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
  281. package/claude-assets/skills/workflow-codification/review-skill.sh +643 -0
  282. package/claude-assets/skills/workflow-codification/templates/email-notification.txt +114 -0
  283. package/claude-assets/skills/workflow-codification/templates/slack-notification.md +85 -0
  284. package/claude-assets/skills/workflow-codification/test-integration.sh +296 -0
  285. package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
  286. package/claude-assets/skills/workflow-codification/track-cost-savings.sh +486 -0
  287. package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
  288. package/claude-assets/skills/workflow-codification/track-edge-case.sh +290 -0
  289. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  290. package/dist/ace/ace-curator.js +10 -2
  291. package/dist/ace/ace-curator.js.map +1 -1
  292. package/dist/ace/ace-generator.js +4 -0
  293. package/dist/ace/ace-generator.js.map +1 -1
  294. package/dist/ace/ace-reflector.js +1 -1
  295. package/dist/ace/ace-reflector.js.map +1 -1
  296. package/dist/ace/context-injection.js +24 -2
  297. package/dist/ace/context-injection.js.map +1 -1
  298. package/dist/agents/agent-loader.js +146 -165
  299. package/dist/agents/agent-loader.js.map +1 -1
  300. package/dist/agents/task-agent-integration.js +1 -1
  301. package/dist/agents/task-agent-integration.js.map +1 -1
  302. package/dist/api/health-endpoints.js +390 -0
  303. package/dist/api/health-endpoints.js.map +1 -0
  304. package/dist/cli/agent-executor.js +4 -1
  305. package/dist/cli/agent-executor.js.map +1 -1
  306. package/dist/cli/agent-prompt-builder.js +89 -1
  307. package/dist/cli/agent-prompt-builder.js.map +1 -1
  308. package/dist/cli/agent-spawn.js +130 -37
  309. package/dist/cli/agent-spawn.js.map +1 -1
  310. package/dist/cli/config-manager.js +91 -109
  311. package/dist/cli/config-manager.js.map +1 -1
  312. package/dist/cli/skill-cache-validator.js +412 -0
  313. package/dist/cli/skill-cache-validator.js.map +1 -0
  314. package/dist/cli/skill-cli.js +991 -0
  315. package/dist/cli/skill-cli.js.map +1 -0
  316. package/dist/cli/skill-execution-logger.js +284 -0
  317. package/dist/cli/skill-execution-logger.js.map +1 -0
  318. package/dist/cli/skill-loader.js +457 -0
  319. package/dist/cli/skill-loader.js.map +1 -0
  320. package/dist/coordination/event-bus.js +2 -2
  321. package/dist/coordination/event-bus.js.map +1 -1
  322. package/dist/coordination/fleet-manager.js +1 -1
  323. package/dist/coordination/fleet-manager.js.map +1 -1
  324. package/dist/coordination/index.js +23 -9
  325. package/dist/coordination/index.js.map +1 -1
  326. package/dist/coordination/types/fleet-manager.types.js.map +1 -1
  327. package/dist/db/migration-manager.js +483 -0
  328. package/dist/db/migration-manager.js.map +1 -0
  329. package/dist/db/skills-query.js +535 -0
  330. package/dist/db/skills-query.js.map +1 -0
  331. package/dist/integration/DatabaseHandoff.js +507 -0
  332. package/dist/integration/DatabaseHandoff.js.map +1 -0
  333. package/dist/integration/StandardAdapter.js +291 -0
  334. package/dist/integration/StandardAdapter.js.map +1 -0
  335. package/dist/jobs/edge-case-analyzer.js +367 -0
  336. package/dist/jobs/edge-case-analyzer.js.map +1 -0
  337. package/dist/jobs/promotion-sla-enforcer.js +288 -0
  338. package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
  339. package/dist/lib/agent-output-parser.js +518 -0
  340. package/dist/lib/agent-output-parser.js.map +1 -0
  341. package/dist/lib/agent-output-validator.js +950 -0
  342. package/dist/lib/agent-output-validator.js.map +1 -0
  343. package/dist/lib/agent-workspace.js +281 -0
  344. package/dist/lib/agent-workspace.js.map +1 -0
  345. package/dist/lib/artifact-registry.js +443 -0
  346. package/dist/lib/artifact-registry.js.map +1 -0
  347. package/dist/lib/atomic-file-writer.js +377 -0
  348. package/dist/lib/atomic-file-writer.js.map +1 -0
  349. package/dist/lib/backup-manager.js +779 -0
  350. package/dist/lib/backup-manager.js.map +1 -0
  351. package/dist/lib/checkpoint-manager.js +837 -0
  352. package/dist/lib/checkpoint-manager.js.map +1 -0
  353. package/dist/lib/circuit-breaker.js +340 -0
  354. package/dist/lib/circuit-breaker.js.map +1 -0
  355. package/dist/lib/completion-signal-handler.js +243 -0
  356. package/dist/lib/completion-signal-handler.js.map +1 -0
  357. package/dist/lib/config-manager.js +312 -0
  358. package/dist/lib/config-manager.js.map +1 -0
  359. package/dist/lib/config-migrator.js +386 -0
  360. package/dist/lib/config-migrator.js.map +1 -0
  361. package/dist/lib/config-validator.js +687 -0
  362. package/dist/lib/config-validator.js.map +1 -0
  363. package/dist/lib/correlation-cache.js +311 -0
  364. package/dist/lib/correlation-cache.js.map +1 -0
  365. package/dist/lib/correlation.js +263 -0
  366. package/dist/lib/correlation.js.map +1 -0
  367. package/dist/lib/database-service/connection-pool-manager.js +520 -0
  368. package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
  369. package/dist/lib/database-service/correlation.js +329 -0
  370. package/dist/lib/database-service/correlation.js.map +1 -0
  371. package/dist/lib/database-service/errors.js +120 -0
  372. package/dist/lib/database-service/errors.js.map +1 -0
  373. package/dist/lib/database-service/index.js +168 -0
  374. package/dist/lib/database-service/index.js.map +1 -0
  375. package/dist/lib/database-service/postgres-adapter.js +526 -0
  376. package/dist/lib/database-service/postgres-adapter.js.map +1 -0
  377. package/dist/lib/database-service/redis-adapter.js +360 -0
  378. package/dist/lib/database-service/redis-adapter.js.map +1 -0
  379. package/dist/lib/database-service/sqlite-adapter.js +544 -0
  380. package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
  381. package/dist/lib/database-service/transaction-manager.js +773 -0
  382. package/dist/lib/database-service/transaction-manager.js.map +1 -0
  383. package/dist/lib/database-service/types.js +23 -0
  384. package/dist/lib/database-service/types.js.map +1 -0
  385. package/dist/lib/deadlock-resolver.js +292 -0
  386. package/dist/lib/deadlock-resolver.js.map +1 -0
  387. package/dist/lib/distributed-lock.js +451 -0
  388. package/dist/lib/distributed-lock.js.map +1 -0
  389. package/dist/lib/edge-case-deduplicator.js +227 -0
  390. package/dist/lib/edge-case-deduplicator.js.map +1 -0
  391. package/dist/lib/encryption-manager.js +322 -0
  392. package/dist/lib/encryption-manager.js.map +1 -0
  393. package/dist/lib/error-aggregator.js +234 -0
  394. package/dist/lib/error-aggregator.js.map +1 -0
  395. package/dist/lib/errors.js +287 -0
  396. package/dist/lib/errors.js.map +1 -0
  397. package/dist/lib/file-lock-manager.js +578 -0
  398. package/dist/lib/file-lock-manager.js.map +1 -0
  399. package/dist/lib/file-operations.js +367 -0
  400. package/dist/lib/file-operations.js.map +1 -0
  401. package/dist/lib/idempotent-write.js +237 -0
  402. package/dist/lib/idempotent-write.js.map +1 -0
  403. package/dist/lib/integration-schema-validator.js +522 -0
  404. package/dist/lib/integration-schema-validator.js.map +1 -0
  405. package/dist/lib/lock-health-monitor.js +298 -0
  406. package/dist/lib/lock-health-monitor.js.map +1 -0
  407. package/dist/lib/log-shipper.js +422 -0
  408. package/dist/lib/log-shipper.js.map +1 -0
  409. package/dist/lib/logging.js +146 -0
  410. package/dist/lib/logging.js.map +1 -0
  411. package/dist/lib/message-deduplicator.js +439 -0
  412. package/dist/lib/message-deduplicator.js.map +1 -0
  413. package/dist/lib/multi-system-query.js +604 -0
  414. package/dist/lib/multi-system-query.js.map +1 -0
  415. package/dist/lib/orphan-detector.js +332 -0
  416. package/dist/lib/orphan-detector.js.map +1 -0
  417. package/dist/lib/password-generator.js +166 -0
  418. package/dist/lib/password-generator.js.map +1 -0
  419. package/dist/lib/path-validator.js +429 -0
  420. package/dist/lib/path-validator.js.map +1 -0
  421. package/dist/lib/query-translator.js +905 -0
  422. package/dist/lib/query-translator.js.map +1 -0
  423. package/dist/lib/queue-recovery.js +469 -0
  424. package/dist/lib/queue-recovery.js.map +1 -0
  425. package/dist/lib/redis-queue-manager.js +512 -0
  426. package/dist/lib/redis-queue-manager.js.map +1 -0
  427. package/dist/lib/reflection-archiver.js +272 -0
  428. package/dist/lib/reflection-archiver.js.map +1 -0
  429. package/dist/lib/retry-manager.js +453 -0
  430. package/dist/lib/retry-manager.js.map +1 -0
  431. package/dist/lib/retry.js +262 -0
  432. package/dist/lib/retry.js.map +1 -0
  433. package/dist/lib/schema-transform.js +695 -0
  434. package/dist/lib/schema-transform.js.map +1 -0
  435. package/dist/lib/schema-validator.js +491 -0
  436. package/dist/lib/schema-validator.js.map +1 -0
  437. package/dist/lib/skill-cache.js +297 -0
  438. package/dist/lib/skill-cache.js.map +1 -0
  439. package/dist/lib/skill-content-manager.js +337 -0
  440. package/dist/lib/skill-content-manager.js.map +1 -0
  441. package/dist/lib/skill-frontmatter-parser.js +237 -0
  442. package/dist/lib/skill-frontmatter-parser.js.map +1 -0
  443. package/dist/lib/skill-git-integration.js +275 -0
  444. package/dist/lib/skill-git-integration.js.map +1 -0
  445. package/dist/lib/skill-markdown-validator.js +396 -0
  446. package/dist/lib/skill-markdown-validator.js.map +1 -0
  447. package/dist/lib/skill-output-parser.js +312 -0
  448. package/dist/lib/skill-output-parser.js.map +1 -0
  449. package/dist/lib/unified-query-api.js +467 -0
  450. package/dist/lib/unified-query-api.js.map +1 -0
  451. package/dist/middleware/auth-middleware.js +350 -0
  452. package/dist/middleware/auth-middleware.js.map +1 -0
  453. package/dist/middleware/schema-validation.js +347 -0
  454. package/dist/middleware/schema-validation.js.map +1 -0
  455. package/dist/providers/anthropic-provider.js +1 -1
  456. package/dist/providers/anthropic-provider.js.map +1 -1
  457. package/dist/providers/provider-factory.js +2 -2
  458. package/dist/providers/provider-factory.js.map +1 -1
  459. package/dist/services/edge-case-analyzer.js +321 -0
  460. package/dist/services/edge-case-analyzer.js.map +1 -0
  461. package/dist/services/edge-case-deduplicator.js +266 -0
  462. package/dist/services/edge-case-deduplicator.js.map +1 -0
  463. package/dist/services/edge-case-detector.js +337 -0
  464. package/dist/services/edge-case-detector.js.map +1 -0
  465. package/dist/services/edge-case-tracker.js +547 -0
  466. package/dist/services/edge-case-tracker.js.map +1 -0
  467. package/dist/services/health-check-system.js +586 -0
  468. package/dist/services/health-check-system.js.map +1 -0
  469. package/dist/services/metrics-logger.js +412 -0
  470. package/dist/services/metrics-logger.js.map +1 -0
  471. package/dist/services/patch-generator.js +378 -0
  472. package/dist/services/patch-generator.js.map +1 -0
  473. package/dist/services/patch-validator.js +337 -0
  474. package/dist/services/patch-validator.js.map +1 -0
  475. package/dist/services/performance-monitor.js +811 -0
  476. package/dist/services/performance-monitor.js.map +1 -0
  477. package/dist/services/promotion-pipeline.js +918 -0
  478. package/dist/services/promotion-pipeline.js.map +1 -0
  479. package/dist/services/promotion-validator.js +394 -0
  480. package/dist/services/promotion-validator.js.map +1 -0
  481. package/dist/services/reflection-logger.js +388 -0
  482. package/dist/services/reflection-logger.js.map +1 -0
  483. package/dist/services/skill-deployment.js +472 -0
  484. package/dist/services/skill-deployment.js.map +1 -0
  485. package/dist/services/skill-loader.js +427 -0
  486. package/dist/services/skill-loader.js.map +1 -0
  487. package/dist/services/skill-promotion.js +372 -0
  488. package/dist/services/skill-promotion.js.map +1 -0
  489. package/dist/services/skill-validator.js +454 -0
  490. package/dist/services/skill-validator.js.map +1 -0
  491. package/dist/services/skill-versioning.js +244 -0
  492. package/dist/services/skill-versioning.js.map +1 -0
  493. package/dist/services/workspace-supervisor.js +597 -0
  494. package/dist/services/workspace-supervisor.js.map +1 -0
  495. package/dist/types/agent-output.js +44 -0
  496. package/dist/types/agent-output.js.map +1 -0
  497. package/dist/types/config.js +28 -0
  498. package/dist/types/config.js.map +1 -0
  499. package/dist/types/edge-case.js +45 -0
  500. package/dist/types/edge-case.js.map +1 -0
  501. package/package.json +201 -176
  502. package/readme/README.md +19 -4
  503. package/scripts/artifact-cleanup.sh +392 -0
  504. package/scripts/backup-cleanup.sh +627 -0
  505. package/scripts/cleanup-workspaces.sh +412 -0
  506. package/scripts/cleanup-yaml-configs.sh +141 -0
  507. package/scripts/deploy-approved-skills.sh +263 -0
  508. package/scripts/deploy-production.sh +355 -355
  509. package/scripts/docker-playwright-fix.sh +311 -311
  510. package/scripts/docker-rebuild-all-agents.sh +127 -127
  511. package/scripts/health-check.sh +447 -0
  512. package/scripts/log-aggregator.sh +554 -0
  513. package/scripts/log-monitor.sh +629 -0
  514. package/scripts/manage-agent-workspaces.sh +434 -0
  515. package/scripts/memory-leak-prevention.sh +305 -305
  516. package/scripts/migrate-artifacts.sh +563 -0
  517. package/scripts/migrate-schema.sh +533 -0
  518. package/scripts/migrate-yaml-to-json.sh +465 -0
  519. package/scripts/promote-staged-skills.sh +423 -0
  520. package/scripts/run-marketing-tests.sh +42 -42
  521. package/scripts/update_paths.sh +46 -46
  522. package/scripts/verify-no-secrets.sh +88 -35
  523. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  524. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  525. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  526. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  527. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
  528. package/README.md.backup_before_replace +0 -781
  529. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  530. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  531. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  532. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  533. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
@@ -0,0 +1,687 @@
1
+ /**
2
+ * CFN Configuration Validator
3
+ * Validates JSON configurations against the CFN schema with detailed error reporting
4
+ *
5
+ * @version 1.0.0
6
+ * @description Type-safe validation library with 95%+ accuracy
7
+ */ /**
8
+ * ConfigValidator: Main validation class
9
+ * Provides schema validation, error reporting, and env var export functionality
10
+ */ export class ConfigValidator {
11
+ schema;
12
+ initialized = true;
13
+ constructor(schema){
14
+ if (schema) {
15
+ this.schema = schema;
16
+ } else {
17
+ // Use the default schema embedded below
18
+ this.schema = this.getDefaultSchema();
19
+ }
20
+ }
21
+ /**
22
+ * Get default schema definition
23
+ */ getDefaultSchema() {
24
+ return {
25
+ $schema: 'https://json-schema.org/draft/2020-12/schema',
26
+ $id: 'https://claude-flow-novice.local/schemas/cfn-config-v1.json',
27
+ title: 'CFN Configuration Schema v1.0',
28
+ description: 'Canonical JSON schema for all Claude Flow Novice configuration files',
29
+ version: '1.0.0',
30
+ type: 'object'
31
+ };
32
+ }
33
+ /**
34
+ * Main validation method using built-in validators
35
+ */ validate(config) {
36
+ const errors = [];
37
+ const warnings = [];
38
+ if (typeof config !== 'object' || config === null) {
39
+ return {
40
+ valid: false,
41
+ errors: [
42
+ {
43
+ field: 'root',
44
+ message: 'Configuration must be a valid JSON object',
45
+ path: '/',
46
+ code: 'INVALID_TYPE'
47
+ }
48
+ ],
49
+ warnings,
50
+ configType: 'unknown'
51
+ };
52
+ }
53
+ const configObj = config;
54
+ const configType = this.detectConfigType(configObj);
55
+ // Validate based on detected type
56
+ switch(configType){
57
+ case 'agent-whitelist':
58
+ return this.validateAgentWhitelist(configObj);
59
+ case 'mcp-servers':
60
+ return this.validateMCPServers(configObj);
61
+ case 'skill-requirements':
62
+ return this.validateSkillRequirements(configObj);
63
+ case 'runtime-contract':
64
+ return this.validateRuntimeContract(configObj);
65
+ case 'team':
66
+ return this.validateTeamConfig(configObj);
67
+ default:
68
+ return {
69
+ valid: false,
70
+ errors: [
71
+ {
72
+ field: 'root',
73
+ message: 'Unknown configuration type. Must include agents, servers, tools, variables, or team',
74
+ path: '/',
75
+ code: 'UNKNOWN_CONFIG_TYPE'
76
+ }
77
+ ],
78
+ warnings,
79
+ configType: 'unknown'
80
+ };
81
+ }
82
+ }
83
+ /**
84
+ * Validate JSON string
85
+ */ validateJSON(jsonString) {
86
+ try {
87
+ const config = JSON.parse(jsonString);
88
+ return this.validate(config);
89
+ } catch (error) {
90
+ return {
91
+ valid: false,
92
+ errors: [
93
+ {
94
+ field: 'json',
95
+ message: `Failed to parse JSON: ${error instanceof Error ? error.message : String(error)}`,
96
+ path: 'root',
97
+ code: 'JSON_PARSE_ERROR'
98
+ }
99
+ ],
100
+ warnings: [],
101
+ configType: 'unknown'
102
+ };
103
+ }
104
+ }
105
+ /**
106
+ * Validate Agent Whitelist Configuration
107
+ */ validateAgentWhitelist(config) {
108
+ const errors = [];
109
+ const warnings = [];
110
+ // Check version
111
+ if (!config.version || typeof config.version !== 'string') {
112
+ errors.push({
113
+ field: 'version',
114
+ message: 'Missing required field: version (string)',
115
+ path: '/version',
116
+ code: 'MISSING_REQUIRED'
117
+ });
118
+ } else if (!/^\d+\.\d+\.\d+$/.test(config.version)) {
119
+ errors.push({
120
+ field: 'version',
121
+ message: 'Invalid version format. Expected X.Y.Z format',
122
+ path: '/version',
123
+ value: config.version,
124
+ code: 'INVALID_FORMAT'
125
+ });
126
+ }
127
+ // Check agents array
128
+ if (!Array.isArray(config.agents)) {
129
+ errors.push({
130
+ field: 'agents',
131
+ message: 'Missing required field: agents (array)',
132
+ path: '/agents',
133
+ code: 'MISSING_REQUIRED'
134
+ });
135
+ } else {
136
+ for(let i = 0; i < config.agents.length; i++){
137
+ const agent = config.agents[i];
138
+ if (!agent.type || typeof agent.type !== 'string' || agent.type.length === 0) {
139
+ errors.push({
140
+ field: `agents[${i}].type`,
141
+ message: 'Agent type is required and must be non-empty string',
142
+ path: `/agents/${i}/type`,
143
+ code: 'INVALID_AGENT'
144
+ });
145
+ }
146
+ if (!agent.displayName || typeof agent.displayName !== 'string') {
147
+ errors.push({
148
+ field: `agents[${i}].displayName`,
149
+ message: 'Agent displayName is required',
150
+ path: `/agents/${i}/displayName`,
151
+ code: 'INVALID_AGENT'
152
+ });
153
+ }
154
+ if (!Array.isArray(agent.skills)) {
155
+ errors.push({
156
+ field: `agents[${i}].skills`,
157
+ message: 'Agent skills must be an array',
158
+ path: `/agents/${i}/skills`,
159
+ code: 'INVALID_AGENT'
160
+ });
161
+ }
162
+ }
163
+ }
164
+ if (!config.lastUpdated) {
165
+ warnings.push('Agent configuration missing lastUpdated field (recommended)');
166
+ }
167
+ return {
168
+ valid: errors.length === 0,
169
+ errors,
170
+ warnings,
171
+ configType: 'agent-whitelist'
172
+ };
173
+ }
174
+ /**
175
+ * Validate MCP Servers Configuration
176
+ */ validateMCPServers(config) {
177
+ const errors = [];
178
+ const warnings = [];
179
+ // Check version
180
+ if (!config.version || typeof config.version !== 'string') {
181
+ errors.push({
182
+ field: 'version',
183
+ message: 'Missing required field: version',
184
+ path: '/version',
185
+ code: 'MISSING_REQUIRED'
186
+ });
187
+ }
188
+ // Check servers object
189
+ if (!config.servers || typeof config.servers !== 'object') {
190
+ errors.push({
191
+ field: 'servers',
192
+ message: 'Missing required field: servers (object)',
193
+ path: '/servers',
194
+ code: 'MISSING_REQUIRED'
195
+ });
196
+ } else {
197
+ const servers = config.servers;
198
+ for(const serverName in servers){
199
+ if (Object.prototype.hasOwnProperty.call(servers, serverName)) {
200
+ const serverConfig = servers[serverName];
201
+ if (!serverConfig.endpoint || typeof serverConfig.endpoint !== 'string') {
202
+ errors.push({
203
+ field: `servers.${serverName}.endpoint`,
204
+ message: 'Server endpoint is required',
205
+ path: `/servers/${serverName}/endpoint`,
206
+ code: 'INVALID_SERVER'
207
+ });
208
+ } else if (!this.isValidURL(serverConfig.endpoint)) {
209
+ errors.push({
210
+ field: `servers.${serverName}.endpoint`,
211
+ message: 'Server endpoint must be a valid URL',
212
+ path: `/servers/${serverName}/endpoint`,
213
+ value: serverConfig.endpoint,
214
+ code: 'INVALID_URL'
215
+ });
216
+ }
217
+ if (!Array.isArray(serverConfig.requiredSkills)) {
218
+ errors.push({
219
+ field: `servers.${serverName}.requiredSkills`,
220
+ message: 'Server requiredSkills must be an array',
221
+ path: `/servers/${serverName}/requiredSkills`,
222
+ code: 'INVALID_SERVER'
223
+ });
224
+ }
225
+ if (!serverConfig.auth || typeof serverConfig.auth !== 'object') {
226
+ errors.push({
227
+ field: `servers.${serverName}.auth`,
228
+ message: 'Server auth is required',
229
+ path: `/servers/${serverName}/auth`,
230
+ code: 'INVALID_SERVER'
231
+ });
232
+ }
233
+ if (serverConfig.timeoutMs !== undefined && typeof serverConfig.timeoutMs !== 'number') {
234
+ errors.push({
235
+ field: `servers.${serverName}.timeoutMs`,
236
+ message: 'timeoutMs must be a number',
237
+ path: `/servers/${serverName}/timeoutMs`,
238
+ code: 'INVALID_TYPE'
239
+ });
240
+ } else if (serverConfig.timeoutMs !== undefined && serverConfig.timeoutMs < 1000) {
241
+ errors.push({
242
+ field: `servers.${serverName}.timeoutMs`,
243
+ message: 'timeoutMs must be at least 1000ms',
244
+ path: `/servers/${serverName}/timeoutMs`,
245
+ value: serverConfig.timeoutMs,
246
+ code: 'CONSTRAINT_VIOLATION'
247
+ });
248
+ }
249
+ }
250
+ }
251
+ }
252
+ return {
253
+ valid: errors.length === 0,
254
+ errors,
255
+ warnings,
256
+ configType: 'mcp-servers'
257
+ };
258
+ }
259
+ /**
260
+ * Validate Skill Requirements Configuration
261
+ */ validateSkillRequirements(config) {
262
+ const errors = [];
263
+ const warnings = [];
264
+ if (!config.version || typeof config.version !== 'string') {
265
+ errors.push({
266
+ field: 'version',
267
+ message: 'Missing required field: version',
268
+ path: '/version',
269
+ code: 'MISSING_REQUIRED'
270
+ });
271
+ }
272
+ if (!config.tools || typeof config.tools !== 'object') {
273
+ errors.push({
274
+ field: 'tools',
275
+ message: 'Missing required field: tools (object)',
276
+ path: '/tools',
277
+ code: 'MISSING_REQUIRED'
278
+ });
279
+ } else {
280
+ const tools = config.tools;
281
+ for(const toolName in tools){
282
+ if (Object.prototype.hasOwnProperty.call(tools, toolName)) {
283
+ const toolConfig = tools[toolName];
284
+ if (!toolConfig.displayName || typeof toolConfig.displayName !== 'string') {
285
+ errors.push({
286
+ field: `tools.${toolName}.displayName`,
287
+ message: 'Tool displayName is required',
288
+ path: `/tools/${toolName}/displayName`,
289
+ code: 'INVALID_TOOL'
290
+ });
291
+ }
292
+ if (!Array.isArray(toolConfig.requiredSkills) || toolConfig.requiredSkills.length === 0) {
293
+ errors.push({
294
+ field: `tools.${toolName}.requiredSkills`,
295
+ message: 'Tool requiredSkills must be a non-empty array',
296
+ path: `/tools/${toolName}/requiredSkills`,
297
+ code: 'INVALID_TOOL'
298
+ });
299
+ }
300
+ }
301
+ }
302
+ }
303
+ return {
304
+ valid: errors.length === 0,
305
+ errors,
306
+ warnings,
307
+ configType: 'skill-requirements'
308
+ };
309
+ }
310
+ /**
311
+ * Validate Runtime Contract Configuration
312
+ */ validateRuntimeContract(config) {
313
+ const errors = [];
314
+ const warnings = [];
315
+ if (!config.version || typeof config.version !== 'string') {
316
+ errors.push({
317
+ field: 'version',
318
+ message: 'Missing required field: version',
319
+ path: '/version',
320
+ code: 'MISSING_REQUIRED'
321
+ });
322
+ }
323
+ if (config.variables && typeof config.variables === 'object') {
324
+ const variables = config.variables;
325
+ for(const varName in variables){
326
+ if (Object.prototype.hasOwnProperty.call(variables, varName)) {
327
+ const varConfig = variables[varName];
328
+ if (!varConfig.description || typeof varConfig.description !== 'string') {
329
+ errors.push({
330
+ field: `variables.${varName}.description`,
331
+ message: 'Variable description is required',
332
+ path: `/variables/${varName}/description`,
333
+ code: 'INVALID_VARIABLE'
334
+ });
335
+ }
336
+ const varType = varConfig.type;
337
+ const validTypes = [
338
+ 'string',
339
+ 'integer',
340
+ 'number',
341
+ 'boolean'
342
+ ];
343
+ if (!varConfig.type || validTypes.indexOf(varType) === -1) {
344
+ errors.push({
345
+ field: `variables.${varName}.type`,
346
+ message: 'Variable type must be one of: string, integer, number, boolean',
347
+ path: `/variables/${varName}/type`,
348
+ code: 'INVALID_VARIABLE'
349
+ });
350
+ }
351
+ }
352
+ }
353
+ }
354
+ return {
355
+ valid: errors.length === 0,
356
+ errors,
357
+ warnings,
358
+ configType: 'runtime-contract'
359
+ };
360
+ }
361
+ /**
362
+ * Validate Team Configuration
363
+ */ validateTeamConfig(config) {
364
+ const errors = [];
365
+ const warnings = [];
366
+ if (!config.team || typeof config.team !== 'object') {
367
+ errors.push({
368
+ field: 'team',
369
+ message: 'Missing required field: team (object)',
370
+ path: '/team',
371
+ code: 'MISSING_REQUIRED'
372
+ });
373
+ return {
374
+ valid: false,
375
+ errors,
376
+ warnings,
377
+ configType: 'team'
378
+ };
379
+ }
380
+ const team = config.team;
381
+ if (!team.id || typeof team.id !== 'string' || team.id.length === 0) {
382
+ errors.push({
383
+ field: 'team.id',
384
+ message: 'Team id is required and must be non-empty',
385
+ path: '/team/id',
386
+ code: 'INVALID_TEAM'
387
+ });
388
+ } else if (!/^[a-z0-9-]+$/.test(team.id)) {
389
+ errors.push({
390
+ field: 'team.id',
391
+ message: 'Team id must contain only lowercase letters, numbers, and hyphens',
392
+ path: '/team/id',
393
+ value: team.id,
394
+ code: 'INVALID_FORMAT'
395
+ });
396
+ }
397
+ if (!team.name || typeof team.name !== 'string') {
398
+ errors.push({
399
+ field: 'team.name',
400
+ message: 'Team name is required',
401
+ path: '/team/name',
402
+ code: 'INVALID_TEAM'
403
+ });
404
+ }
405
+ // Validate workspace if present (supports both diskQuota and disk_quota)
406
+ if (team.workspace && typeof team.workspace === 'object') {
407
+ const workspace = team.workspace;
408
+ const diskQuota = this.getPropertyValue(workspace, 'diskQuota');
409
+ if (diskQuota !== undefined && !this.isValidDiskQuota(diskQuota)) {
410
+ errors.push({
411
+ field: 'team.workspace.diskQuota',
412
+ message: 'Invalid disk quota format. Expected format: <number><UNIT> (e.g., 100GB)',
413
+ path: '/team/workspace/diskQuota',
414
+ value: diskQuota,
415
+ code: 'INVALID_FORMAT'
416
+ });
417
+ }
418
+ }
419
+ // Validate resources if present (supports both camelCase and snake_case naming)
420
+ if (team.resources && typeof team.resources === 'object') {
421
+ const resources = team.resources;
422
+ const cpuCores = this.getPropertyValue(resources, 'cpuCores');
423
+ const maxAgents = this.getPropertyValue(resources, 'maxAgents');
424
+ // Validate cpuCores (supports cpuCores and cpu_cores)
425
+ if (cpuCores !== undefined) {
426
+ if (typeof cpuCores !== 'number' || cpuCores < 0) {
427
+ errors.push({
428
+ field: 'team.resources.cpuCores',
429
+ message: 'cpuCores must be a non-negative number',
430
+ path: '/team/resources/cpuCores',
431
+ value: cpuCores,
432
+ code: 'INVALID_TYPE'
433
+ });
434
+ }
435
+ }
436
+ // Validate maxAgents (supports maxAgents and max_agents)
437
+ if (maxAgents !== undefined) {
438
+ if (typeof maxAgents !== 'number' || maxAgents < 1 || !Number.isInteger(maxAgents)) {
439
+ errors.push({
440
+ field: 'team.resources.maxAgents',
441
+ message: 'maxAgents must be a positive integer',
442
+ path: '/team/resources/maxAgents',
443
+ value: maxAgents,
444
+ code: 'INVALID_TYPE'
445
+ });
446
+ }
447
+ }
448
+ }
449
+ // Validate network if present
450
+ if (team.network && typeof team.network === 'object') {
451
+ const network = team.network;
452
+ if (network.coordinatorIp && !this.isValidIPv4(network.coordinatorIp)) {
453
+ errors.push({
454
+ field: 'team.network.coordinatorIp',
455
+ message: 'Invalid IPv4 format',
456
+ path: '/team/network/coordinatorIp',
457
+ value: network.coordinatorIp,
458
+ code: 'INVALID_FORMAT'
459
+ });
460
+ }
461
+ }
462
+ return {
463
+ valid: errors.length === 0,
464
+ errors,
465
+ warnings,
466
+ configType: 'team'
467
+ };
468
+ }
469
+ /**
470
+ * Detect configuration type
471
+ */ detectConfigType(config) {
472
+ // Check for agent whitelist (has 'agents' array)
473
+ if ('agents' in config && Array.isArray(config.agents)) {
474
+ return 'agent-whitelist';
475
+ }
476
+ // Check for MCP servers (has 'servers' object)
477
+ if ('servers' in config && typeof config.servers === 'object') {
478
+ return 'mcp-servers';
479
+ }
480
+ // Check for skill requirements (has 'tools' object)
481
+ if ('tools' in config && typeof config.tools === 'object') {
482
+ return 'skill-requirements';
483
+ }
484
+ // Check for runtime contract (has 'variables' object)
485
+ if ('variables' in config && typeof config.variables === 'object') {
486
+ return 'runtime-contract';
487
+ }
488
+ // Check for team config (has 'team' object)
489
+ if ('team' in config && typeof config.team === 'object') {
490
+ return 'team';
491
+ }
492
+ return 'unknown';
493
+ }
494
+ /**
495
+ * Export configuration as environment variables
496
+ * Handles type preservation and validation
497
+ */ exportEnvVars(config) {
498
+ if (typeof config !== 'object' || config === null) {
499
+ throw new Error('Configuration must be an object');
500
+ }
501
+ const configObj = config;
502
+ if (!('variables' in configObj)) {
503
+ throw new Error('Configuration is not a valid runtime contract');
504
+ }
505
+ const envMap = {};
506
+ const variables = configObj.variables;
507
+ if (typeof variables !== 'object' || variables === null) {
508
+ throw new Error('Variables must be an object');
509
+ }
510
+ const varsObj = variables;
511
+ for(const key in varsObj){
512
+ if (Object.prototype.hasOwnProperty.call(varsObj, key)) {
513
+ const variable = varsObj[key];
514
+ const varObj = variable;
515
+ if (varObj.value !== null && varObj.value !== undefined) {
516
+ const varType = varObj.type;
517
+ envMap[key] = this.coerceToCorrectType(varObj.value, varType);
518
+ }
519
+ }
520
+ }
521
+ return envMap;
522
+ }
523
+ /**
524
+ * Coerce value to correct type without loss
525
+ */ coerceToCorrectType(value, type) {
526
+ if (type === 'integer' && typeof value === 'string') {
527
+ return parseInt(value, 10);
528
+ }
529
+ if (type === 'number' && typeof value === 'string') {
530
+ return parseFloat(value);
531
+ }
532
+ if (type === 'boolean' && typeof value === 'string') {
533
+ return value.toLowerCase() === 'true';
534
+ }
535
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
536
+ return value;
537
+ }
538
+ return String(value);
539
+ }
540
+ /**
541
+ * Format validation errors for display
542
+ */ formatErrors(result) {
543
+ if (result.valid) {
544
+ return 'Configuration is valid.';
545
+ }
546
+ let output = `Validation failed with ${result.errors.length} error(s):\n\n`;
547
+ for (const error of result.errors){
548
+ output += `[${error.code}] ${error.field || 'root'}\n`;
549
+ output += ` ${error.message}\n`;
550
+ if (error.value !== undefined) {
551
+ output += ` Current value: ${JSON.stringify(error.value)}\n`;
552
+ }
553
+ output += '\n';
554
+ }
555
+ if (result.warnings.length > 0) {
556
+ output += `\nWarnings (${result.warnings.length}):\n`;
557
+ for (const warning of result.warnings){
558
+ output += ` - ${warning}\n`;
559
+ }
560
+ }
561
+ return output;
562
+ }
563
+ /**
564
+ * Helper: Validate URL format
565
+ */ isValidURL(url) {
566
+ if (typeof url !== 'string') return false;
567
+ try {
568
+ new URL(url);
569
+ return true;
570
+ } catch {
571
+ return false;
572
+ }
573
+ }
574
+ /**
575
+ * Helper: Validate disk quota format
576
+ */ isValidDiskQuota(quota) {
577
+ if (typeof quota !== 'string') return false;
578
+ return /^\d+[KMGTPE]B$/.test(quota);
579
+ }
580
+ /**
581
+ * Helper: Validate IPv4 format
582
+ */ isValidIPv4(ip) {
583
+ if (typeof ip !== 'string') return false;
584
+ const ipv4Pattern = /^(\d{1,3}\.){3}\d{1,3}$/;
585
+ if (!ipv4Pattern.test(ip)) return false;
586
+ const parts = ip.split('.');
587
+ return parts.every((part)=>{
588
+ const num = parseInt(part, 10);
589
+ return num >= 0 && num <= 255;
590
+ });
591
+ }
592
+ /**
593
+ * Helper: Normalize field name (support both snake_case and camelCase)
594
+ * Examples: disk_quota → diskQuota, cpu_cores → cpuCores, maxAgents → maxAgents
595
+ */ normalizeFieldName(name) {
596
+ if (!name.includes('_')) return name;
597
+ return name.replace(/_([a-z])/g, (_, letter)=>letter.toUpperCase());
598
+ }
599
+ /**
600
+ * Helper: Get property value supporting both naming conventions
601
+ * @param obj Object to search
602
+ * @param field Field name in any convention (camelCase or snake_case)
603
+ * @returns Value if found, undefined otherwise
604
+ */ getPropertyValue(obj, field) {
605
+ // Try camelCase version first
606
+ if (field in obj) return obj[field];
607
+ // Try snake_case version
608
+ const snakeCase = field.replace(/[A-Z]/g, (letter)=>`_${letter.toLowerCase()}`);
609
+ if (snakeCase in obj) return obj[snakeCase];
610
+ // Try normalizing if it's snake_case input
611
+ const camelCase = this.normalizeFieldName(field);
612
+ if (camelCase in obj) return obj[camelCase];
613
+ return undefined;
614
+ }
615
+ }
616
+ /**
617
+ * Singleton instance for global usage
618
+ */ let validatorInstance = null;
619
+ /**
620
+ * Get or create validator instance
621
+ */ export function getValidator(schema) {
622
+ if (!validatorInstance) {
623
+ validatorInstance = new ConfigValidator(schema);
624
+ }
625
+ return validatorInstance;
626
+ }
627
+ /**
628
+ * Validate configuration object
629
+ */ export function validateConfig(config) {
630
+ return getValidator().validate(config);
631
+ }
632
+ /**
633
+ * Validate JSON string
634
+ */ export function validateJSON(jsonString) {
635
+ return getValidator().validateJSON(jsonString);
636
+ }
637
+ /**
638
+ * Export environment variables from runtime contract
639
+ */ export function exportEnvVars(config) {
640
+ return getValidator().exportEnvVars(config);
641
+ }
642
+ /**
643
+ * Check if configuration is valid (boolean shortcut)
644
+ */ export function isValidConfig(config) {
645
+ return getValidator().validate(config).valid;
646
+ }
647
+ /**
648
+ * Reset validator instance (useful for testing)
649
+ */ export function resetValidator() {
650
+ validatorInstance = null;
651
+ }
652
+ /**
653
+ * Validate multiple configuration files efficiently
654
+ * @param filePaths Array of file paths to validate
655
+ * @returns Map of file path to validation result
656
+ * @throws Error if file cannot be read
657
+ */ export function validateConfigFiles(filePaths) {
658
+ const results = {};
659
+ const validator = getValidator();
660
+ for (const filePath of filePaths){
661
+ try {
662
+ // Dynamically import fs module to read file
663
+ const fs = require('fs');
664
+ const content = fs.readFileSync(filePath, 'utf-8');
665
+ const config = JSON.parse(content);
666
+ results[filePath] = validator.validate(config);
667
+ } catch (error) {
668
+ results[filePath] = {
669
+ valid: false,
670
+ errors: [
671
+ {
672
+ field: 'file',
673
+ message: `Failed to read or parse file: ${error instanceof Error ? error.message : String(error)}`,
674
+ path: filePath,
675
+ code: 'FILE_READ_ERROR'
676
+ }
677
+ ],
678
+ warnings: [],
679
+ configType: 'unknown'
680
+ };
681
+ }
682
+ }
683
+ return results;
684
+ }
685
+ export default ConfigValidator;
686
+
687
+ //# sourceMappingURL=config-validator.js.map