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,312 @@
1
+ /**
2
+ * Skill Output Parser
3
+ * Task 5.4: Eliminate Bash Output Parsing
4
+ *
5
+ * Parses structured JSON outputs from skill execution with legacy text fallback
6
+ *
7
+ * @version 1.0.0
8
+ */ // ============================================================================
9
+ // Parser Class
10
+ // ============================================================================
11
+ /**
12
+ * SkillOutputParser: Parses skill execution outputs
13
+ *
14
+ * Primary path: JSON parsing with schema validation
15
+ * Fallback path: Legacy text parsing
16
+ */ export class SkillOutputParser {
17
+ config;
18
+ constructor(config = {}){
19
+ this.config = {
20
+ enableLegacyParsing: config.enableLegacyParsing ?? true,
21
+ defaultConfidence: config.defaultConfidence ?? 0.5,
22
+ strictValidation: config.strictValidation ?? false
23
+ };
24
+ }
25
+ // ==========================================================================
26
+ // Public API
27
+ // ==========================================================================
28
+ /**
29
+ * Parse skill output (JSON or legacy text)
30
+ *
31
+ * @param output - Raw skill output string
32
+ * @returns Parse result
33
+ */ parse(output) {
34
+ const errors = [];
35
+ const warnings = [];
36
+ // Handle empty input
37
+ if (!output || output.trim().length === 0) {
38
+ warnings.push('Empty input received');
39
+ return this.createLegacyParseResult(output, warnings);
40
+ }
41
+ // Try JSON parsing first
42
+ const jsonResult = this.tryParseJSON(output);
43
+ if (jsonResult.success && jsonResult.data) {
44
+ // Validate JSON schema
45
+ const validationResult = this.validateSkillOutput(jsonResult.data);
46
+ if (validationResult.valid) {
47
+ return {
48
+ success: true,
49
+ output: jsonResult.data,
50
+ parseMethod: 'json',
51
+ confidence: 0.95,
52
+ errors: [],
53
+ warnings: this.config.strictValidation ? validationResult.warnings : []
54
+ };
55
+ } else {
56
+ // JSON parsed but validation failed - don't fall back to legacy
57
+ // because JSON structure exists, it's just invalid
58
+ errors.push(...validationResult.errors);
59
+ return {
60
+ success: false,
61
+ output: this.createDefaultOutput(),
62
+ parseMethod: 'validation_failed',
63
+ confidence: 0.0,
64
+ errors,
65
+ warnings
66
+ };
67
+ }
68
+ }
69
+ // JSON parsing failed
70
+ if (this.config.enableLegacyParsing) {
71
+ warnings.push('Using legacy text parsing (consider migrating to JSON output)');
72
+ return this.createLegacyParseResult(output, warnings);
73
+ } else {
74
+ errors.push('JSON parsing failed and legacy parsing disabled');
75
+ return {
76
+ success: false,
77
+ output: this.createDefaultOutput(),
78
+ parseMethod: 'validation_failed',
79
+ confidence: 0.0,
80
+ errors,
81
+ warnings
82
+ };
83
+ }
84
+ }
85
+ /**
86
+ * Parse multiple skill outputs in batch
87
+ *
88
+ * @param outputs - Array of raw skill output strings
89
+ * @returns Array of parse results
90
+ */ parseBatch(outputs) {
91
+ return outputs.map((output)=>this.parse(output));
92
+ }
93
+ // ==========================================================================
94
+ // JSON Parsing
95
+ // ==========================================================================
96
+ /**
97
+ * Try to parse output as JSON
98
+ *
99
+ * @param output - Raw output string
100
+ * @returns Parse result with success flag and data
101
+ */ tryParseJSON(output) {
102
+ try {
103
+ // Try to extract JSON from mixed output
104
+ const jsonMatch = output.match(/\{[\s\S]*\}/);
105
+ if (jsonMatch) {
106
+ const data = JSON.parse(jsonMatch[0]);
107
+ return {
108
+ success: true,
109
+ data
110
+ };
111
+ }
112
+ // Try parsing entire output
113
+ const data = JSON.parse(output);
114
+ return {
115
+ success: true,
116
+ data
117
+ };
118
+ } catch (error) {
119
+ return {
120
+ success: false
121
+ };
122
+ }
123
+ }
124
+ /**
125
+ * Validate skill output against schema
126
+ *
127
+ * @param data - Parsed JSON data
128
+ * @returns Validation result
129
+ */ validateSkillOutput(data) {
130
+ const errors = [];
131
+ const warnings = [];
132
+ // Required fields
133
+ if (typeof data.success !== 'boolean') {
134
+ errors.push('Missing required field: success (must be boolean)');
135
+ }
136
+ if (typeof data.confidence !== 'number') {
137
+ errors.push('Missing required field: confidence (must be number)');
138
+ } else if (data.confidence < 0.0 || data.confidence > 1.0) {
139
+ errors.push('Confidence must be between 0.0 and 1.0');
140
+ }
141
+ if (!Array.isArray(data.deliverables)) {
142
+ errors.push('Deliverables must be an array');
143
+ }
144
+ if (typeof data.metrics !== 'object' || data.metrics === null || Array.isArray(data.metrics)) {
145
+ errors.push('Metrics must be an object');
146
+ }
147
+ if (!Array.isArray(data.errors)) {
148
+ errors.push('Errors must be an array');
149
+ }
150
+ // Strict mode: check for unexpected fields
151
+ if (this.config.strictValidation) {
152
+ const allowedFields = new Set([
153
+ 'success',
154
+ 'confidence',
155
+ 'deliverables',
156
+ 'metrics',
157
+ 'errors'
158
+ ]);
159
+ const actualFields = Object.keys(data);
160
+ const unexpectedFields = actualFields.filter((field)=>!allowedFields.has(field));
161
+ if (unexpectedFields.length > 0) {
162
+ warnings.push(`Unexpected fields in output: ${unexpectedFields.join(', ')}`);
163
+ }
164
+ }
165
+ return {
166
+ valid: errors.length === 0,
167
+ errors,
168
+ warnings
169
+ };
170
+ }
171
+ // ==========================================================================
172
+ // Legacy Parsing
173
+ // ==========================================================================
174
+ /**
175
+ * Parse legacy text output
176
+ *
177
+ * @param output - Raw text output
178
+ * @param warnings - Existing warnings to include
179
+ * @returns Parse result
180
+ */ createLegacyParseResult(output, warnings = []) {
181
+ // Special handling for empty input
182
+ const isEmpty = !output || output.trim().length === 0;
183
+ const parsedOutput = {
184
+ success: isEmpty ? false : this.detectSuccess(output),
185
+ confidence: isEmpty ? 0.0 : this.extractConfidence(output),
186
+ deliverables: this.extractDeliverables(output),
187
+ metrics: this.extractMetrics(output),
188
+ errors: this.extractErrors(output)
189
+ };
190
+ return {
191
+ success: true,
192
+ output: parsedOutput,
193
+ parseMethod: 'legacy',
194
+ confidence: parsedOutput.confidence,
195
+ errors: [],
196
+ warnings
197
+ };
198
+ }
199
+ /**
200
+ * Detect success from text patterns
201
+ */ detectSuccess(output) {
202
+ const successPatterns = [
203
+ /SUCCESS/i,
204
+ /complete(d)?/i,
205
+ /passed/i,
206
+ /\[OK\]/i,
207
+ /✓/
208
+ ];
209
+ const failurePatterns = [
210
+ /ERROR/i,
211
+ /FAILED/i,
212
+ /ABORT/i,
213
+ /\[FAIL\]/i,
214
+ /✗/
215
+ ];
216
+ // Check for explicit failure first
217
+ for (const pattern of failurePatterns){
218
+ if (pattern.test(output)) {
219
+ return false;
220
+ }
221
+ }
222
+ // Check for success patterns
223
+ for (const pattern of successPatterns){
224
+ if (pattern.test(output)) {
225
+ return true;
226
+ }
227
+ }
228
+ // Default: assume success if no clear failure
229
+ return output.trim().length > 0;
230
+ }
231
+ /**
232
+ * Extract confidence from text
233
+ */ extractConfidence(output) {
234
+ // Look for explicit confidence marker
235
+ const confidenceMatch = output.match(/confidence:?\s*(0?\.\d+|1\.0|0|1)/i);
236
+ if (confidenceMatch) {
237
+ return parseFloat(confidenceMatch[1]);
238
+ }
239
+ // Return default confidence
240
+ return this.config.defaultConfidence;
241
+ }
242
+ /**
243
+ * Extract deliverables from text
244
+ */ extractDeliverables(output) {
245
+ const deliverables = [];
246
+ // Look for file patterns
247
+ const patterns = [
248
+ /(?:created|modified|updated|generated):?\s+([^\s\n]+)/gi,
249
+ /(?:file|path):?\s+([^\s\n]+)/gi
250
+ ];
251
+ for (const pattern of patterns){
252
+ let match;
253
+ while((match = pattern.exec(output)) !== null){
254
+ const file = match[1].trim();
255
+ if (file && !deliverables.includes(file)) {
256
+ deliverables.push(file);
257
+ }
258
+ }
259
+ }
260
+ return deliverables;
261
+ }
262
+ /**
263
+ * Extract metrics from text
264
+ */ extractMetrics(output) {
265
+ const metrics = {};
266
+ // Extract execution time
267
+ const timeMatch = output.match(/(?:execution\s+time|duration|took):?\s*(\d+)\s*ms/i);
268
+ if (timeMatch) {
269
+ metrics.execution_time_ms = parseInt(timeMatch[1], 10);
270
+ }
271
+ // Extract file count
272
+ const fileCountMatch = output.match(/(?:modified|created|updated)\s+(\d+)\s+files?/i);
273
+ if (fileCountMatch) {
274
+ metrics.files_modified = parseInt(fileCountMatch[1], 10);
275
+ }
276
+ return metrics;
277
+ }
278
+ /**
279
+ * Extract errors from text
280
+ */ extractErrors(output) {
281
+ const errors = [];
282
+ // Look for error patterns
283
+ const errorMatches = output.matchAll(/ERROR:?\s*([^\n]+)/gi);
284
+ for (const match of errorMatches){
285
+ errors.push({
286
+ code: 'LEGACY_ERROR',
287
+ message: match[1].trim()
288
+ });
289
+ }
290
+ return errors;
291
+ }
292
+ // ==========================================================================
293
+ // Utilities
294
+ // ==========================================================================
295
+ /**
296
+ * Create default empty output
297
+ */ createDefaultOutput() {
298
+ return {
299
+ success: false,
300
+ confidence: 0.0,
301
+ deliverables: [],
302
+ metrics: {},
303
+ errors: []
304
+ };
305
+ }
306
+ }
307
+ // ============================================================================
308
+ // Exports
309
+ // ============================================================================
310
+ export default SkillOutputParser;
311
+
312
+ //# sourceMappingURL=skill-output-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/skill-output-parser.ts"],"sourcesContent":["/**\r\n * Skill Output Parser\r\n * Task 5.4: Eliminate Bash Output Parsing\r\n *\r\n * Parses structured JSON outputs from skill execution with legacy text fallback\r\n *\r\n * @version 1.0.0\r\n */\r\n\r\nimport { ErrorCode, createError, createValidationError } from './errors.js';\r\n\r\n// ============================================================================\r\n// Types\r\n// ============================================================================\r\n\r\n/**\r\n * Skill execution output (structured JSON format)\r\n */\r\nexport interface SkillOutput {\r\n /** Whether skill execution was successful */\r\n success: boolean;\r\n\r\n /** Confidence score (0.0-1.0) */\r\n confidence: number;\r\n\r\n /** Files created or modified */\r\n deliverables: string[];\r\n\r\n /** Execution metrics */\r\n metrics: SkillMetrics;\r\n\r\n /** Errors encountered during execution */\r\n errors: SkillError[];\r\n}\r\n\r\n/**\r\n * Skill execution metrics\r\n */\r\nexport interface SkillMetrics {\r\n /** Execution time in milliseconds */\r\n execution_time_ms?: number;\r\n\r\n /** Number of files modified */\r\n files_modified?: number;\r\n\r\n /** Additional custom metrics */\r\n [key: string]: number | undefined;\r\n}\r\n\r\n/**\r\n * Skill execution error\r\n */\r\nexport interface SkillError {\r\n /** Error code */\r\n code: string;\r\n\r\n /** Error message */\r\n message: string;\r\n\r\n /** Error stack trace (optional) */\r\n stack?: string;\r\n\r\n /** Additional error context */\r\n context?: Record<string, any>;\r\n}\r\n\r\n/**\r\n * Skill output parse result\r\n */\r\nexport interface SkillParseResult {\r\n /** Whether parsing was successful */\r\n success: boolean;\r\n\r\n /** Parsed skill output */\r\n output: SkillOutput;\r\n\r\n /** Parse method used: json | legacy | validation_failed */\r\n parseMethod: 'json' | 'legacy' | 'validation_failed';\r\n\r\n /** Parsing confidence (0.0-1.0) */\r\n confidence: number;\r\n\r\n /** Parsing errors */\r\n errors: string[];\r\n\r\n /** Parsing warnings */\r\n warnings: string[];\r\n}\r\n\r\n/**\r\n * Parser configuration\r\n */\r\nexport interface SkillOutputParserConfig {\r\n /** Enable legacy text parsing fallback (default: true) */\r\n enableLegacyParsing?: boolean;\r\n\r\n /** Default confidence for legacy parsing (default: 0.5) */\r\n defaultConfidence?: number;\r\n\r\n /** Enable strict validation mode (default: false) */\r\n strictValidation?: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Parser Class\r\n// ============================================================================\r\n\r\n/**\r\n * SkillOutputParser: Parses skill execution outputs\r\n *\r\n * Primary path: JSON parsing with schema validation\r\n * Fallback path: Legacy text parsing\r\n */\r\nexport class SkillOutputParser {\r\n private config: Required<SkillOutputParserConfig>;\r\n\r\n constructor(config: SkillOutputParserConfig = {}) {\r\n this.config = {\r\n enableLegacyParsing: config.enableLegacyParsing ?? true,\r\n defaultConfidence: config.defaultConfidence ?? 0.5,\r\n strictValidation: config.strictValidation ?? false,\r\n };\r\n }\r\n\r\n // ==========================================================================\r\n // Public API\r\n // ==========================================================================\r\n\r\n /**\r\n * Parse skill output (JSON or legacy text)\r\n *\r\n * @param output - Raw skill output string\r\n * @returns Parse result\r\n */\r\n public parse(output: string): SkillParseResult {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Handle empty input\r\n if (!output || output.trim().length === 0) {\r\n warnings.push('Empty input received');\r\n return this.createLegacyParseResult(output, warnings);\r\n }\r\n\r\n // Try JSON parsing first\r\n const jsonResult = this.tryParseJSON(output);\r\n if (jsonResult.success && jsonResult.data) {\r\n // Validate JSON schema\r\n const validationResult = this.validateSkillOutput(jsonResult.data);\r\n\r\n if (validationResult.valid) {\r\n return {\r\n success: true,\r\n output: jsonResult.data,\r\n parseMethod: 'json',\r\n confidence: 0.95, // High confidence for valid JSON\r\n errors: [],\r\n warnings: this.config.strictValidation ? validationResult.warnings : [],\r\n };\r\n } else {\r\n // JSON parsed but validation failed - don't fall back to legacy\r\n // because JSON structure exists, it's just invalid\r\n errors.push(...validationResult.errors);\r\n return {\r\n success: false,\r\n output: this.createDefaultOutput(),\r\n parseMethod: 'validation_failed',\r\n confidence: 0.0,\r\n errors,\r\n warnings,\r\n };\r\n }\r\n }\r\n\r\n // JSON parsing failed\r\n if (this.config.enableLegacyParsing) {\r\n warnings.push('Using legacy text parsing (consider migrating to JSON output)');\r\n return this.createLegacyParseResult(output, warnings);\r\n } else {\r\n errors.push('JSON parsing failed and legacy parsing disabled');\r\n return {\r\n success: false,\r\n output: this.createDefaultOutput(),\r\n parseMethod: 'validation_failed',\r\n confidence: 0.0,\r\n errors,\r\n warnings,\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Parse multiple skill outputs in batch\r\n *\r\n * @param outputs - Array of raw skill output strings\r\n * @returns Array of parse results\r\n */\r\n public parseBatch(outputs: string[]): SkillParseResult[] {\r\n return outputs.map((output) => this.parse(output));\r\n }\r\n\r\n // ==========================================================================\r\n // JSON Parsing\r\n // ==========================================================================\r\n\r\n /**\r\n * Try to parse output as JSON\r\n *\r\n * @param output - Raw output string\r\n * @returns Parse result with success flag and data\r\n */\r\n private tryParseJSON(output: string): { success: boolean; data?: any } {\r\n try {\r\n // Try to extract JSON from mixed output\r\n const jsonMatch = output.match(/\\{[\\s\\S]*\\}/);\r\n if (jsonMatch) {\r\n const data = JSON.parse(jsonMatch[0]);\r\n return { success: true, data };\r\n }\r\n\r\n // Try parsing entire output\r\n const data = JSON.parse(output);\r\n return { success: true, data };\r\n } catch (error) {\r\n return { success: false };\r\n }\r\n }\r\n\r\n /**\r\n * Validate skill output against schema\r\n *\r\n * @param data - Parsed JSON data\r\n * @returns Validation result\r\n */\r\n private validateSkillOutput(data: any): {\r\n valid: boolean;\r\n errors: string[];\r\n warnings: string[];\r\n } {\r\n const errors: string[] = [];\r\n const warnings: string[] = [];\r\n\r\n // Required fields\r\n if (typeof data.success !== 'boolean') {\r\n errors.push('Missing required field: success (must be boolean)');\r\n }\r\n\r\n if (typeof data.confidence !== 'number') {\r\n errors.push('Missing required field: confidence (must be number)');\r\n } else if (data.confidence < 0.0 || data.confidence > 1.0) {\r\n errors.push('Confidence must be between 0.0 and 1.0');\r\n }\r\n\r\n if (!Array.isArray(data.deliverables)) {\r\n errors.push('Deliverables must be an array');\r\n }\r\n\r\n if (typeof data.metrics !== 'object' || data.metrics === null || Array.isArray(data.metrics)) {\r\n errors.push('Metrics must be an object');\r\n }\r\n\r\n if (!Array.isArray(data.errors)) {\r\n errors.push('Errors must be an array');\r\n }\r\n\r\n // Strict mode: check for unexpected fields\r\n if (this.config.strictValidation) {\r\n const allowedFields = new Set(['success', 'confidence', 'deliverables', 'metrics', 'errors']);\r\n const actualFields = Object.keys(data);\r\n const unexpectedFields = actualFields.filter((field) => !allowedFields.has(field));\r\n\r\n if (unexpectedFields.length > 0) {\r\n warnings.push(`Unexpected fields in output: ${unexpectedFields.join(', ')}`);\r\n }\r\n }\r\n\r\n return {\r\n valid: errors.length === 0,\r\n errors,\r\n warnings,\r\n };\r\n }\r\n\r\n // ==========================================================================\r\n // Legacy Parsing\r\n // ==========================================================================\r\n\r\n /**\r\n * Parse legacy text output\r\n *\r\n * @param output - Raw text output\r\n * @param warnings - Existing warnings to include\r\n * @returns Parse result\r\n */\r\n private createLegacyParseResult(output: string, warnings: string[] = []): SkillParseResult {\r\n // Special handling for empty input\r\n const isEmpty = !output || output.trim().length === 0;\r\n\r\n const parsedOutput: SkillOutput = {\r\n success: isEmpty ? false : this.detectSuccess(output),\r\n confidence: isEmpty ? 0.0 : this.extractConfidence(output),\r\n deliverables: this.extractDeliverables(output),\r\n metrics: this.extractMetrics(output),\r\n errors: this.extractErrors(output),\r\n };\r\n\r\n return {\r\n success: true,\r\n output: parsedOutput,\r\n parseMethod: 'legacy',\r\n confidence: parsedOutput.confidence,\r\n errors: [],\r\n warnings,\r\n };\r\n }\r\n\r\n /**\r\n * Detect success from text patterns\r\n */\r\n private detectSuccess(output: string): boolean {\r\n const successPatterns = [\r\n /SUCCESS/i,\r\n /complete(d)?/i,\r\n /passed/i,\r\n /\\[OK\\]/i,\r\n /✓/,\r\n ];\r\n\r\n const failurePatterns = [\r\n /ERROR/i,\r\n /FAILED/i,\r\n /ABORT/i,\r\n /\\[FAIL\\]/i,\r\n /✗/,\r\n ];\r\n\r\n // Check for explicit failure first\r\n for (const pattern of failurePatterns) {\r\n if (pattern.test(output)) {\r\n return false;\r\n }\r\n }\r\n\r\n // Check for success patterns\r\n for (const pattern of successPatterns) {\r\n if (pattern.test(output)) {\r\n return true;\r\n }\r\n }\r\n\r\n // Default: assume success if no clear failure\r\n return output.trim().length > 0;\r\n }\r\n\r\n /**\r\n * Extract confidence from text\r\n */\r\n private extractConfidence(output: string): number {\r\n // Look for explicit confidence marker\r\n const confidenceMatch = output.match(/confidence:?\\s*(0?\\.\\d+|1\\.0|0|1)/i);\r\n if (confidenceMatch) {\r\n return parseFloat(confidenceMatch[1]);\r\n }\r\n\r\n // Return default confidence\r\n return this.config.defaultConfidence;\r\n }\r\n\r\n /**\r\n * Extract deliverables from text\r\n */\r\n private extractDeliverables(output: string): string[] {\r\n const deliverables: string[] = [];\r\n\r\n // Look for file patterns\r\n const patterns = [\r\n /(?:created|modified|updated|generated):?\\s+([^\\s\\n]+)/gi,\r\n /(?:file|path):?\\s+([^\\s\\n]+)/gi,\r\n ];\r\n\r\n for (const pattern of patterns) {\r\n let match;\r\n while ((match = pattern.exec(output)) !== null) {\r\n const file = match[1].trim();\r\n if (file && !deliverables.includes(file)) {\r\n deliverables.push(file);\r\n }\r\n }\r\n }\r\n\r\n return deliverables;\r\n }\r\n\r\n /**\r\n * Extract metrics from text\r\n */\r\n private extractMetrics(output: string): SkillMetrics {\r\n const metrics: SkillMetrics = {};\r\n\r\n // Extract execution time\r\n const timeMatch = output.match(/(?:execution\\s+time|duration|took):?\\s*(\\d+)\\s*ms/i);\r\n if (timeMatch) {\r\n metrics.execution_time_ms = parseInt(timeMatch[1], 10);\r\n }\r\n\r\n // Extract file count\r\n const fileCountMatch = output.match(/(?:modified|created|updated)\\s+(\\d+)\\s+files?/i);\r\n if (fileCountMatch) {\r\n metrics.files_modified = parseInt(fileCountMatch[1], 10);\r\n }\r\n\r\n return metrics;\r\n }\r\n\r\n /**\r\n * Extract errors from text\r\n */\r\n private extractErrors(output: string): SkillError[] {\r\n const errors: SkillError[] = [];\r\n\r\n // Look for error patterns\r\n const errorMatches = output.matchAll(/ERROR:?\\s*([^\\n]+)/gi);\r\n for (const match of errorMatches) {\r\n errors.push({\r\n code: 'LEGACY_ERROR',\r\n message: match[1].trim(),\r\n });\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n // ==========================================================================\r\n // Utilities\r\n // ==========================================================================\r\n\r\n /**\r\n * Create default empty output\r\n */\r\n private createDefaultOutput(): SkillOutput {\r\n return {\r\n success: false,\r\n confidence: 0.0,\r\n deliverables: [],\r\n metrics: {},\r\n errors: [],\r\n };\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// Exports\r\n// ============================================================================\r\n\r\nexport default SkillOutputParser;\r\n"],"names":["SkillOutputParser","config","enableLegacyParsing","defaultConfidence","strictValidation","parse","output","errors","warnings","trim","length","push","createLegacyParseResult","jsonResult","tryParseJSON","success","data","validationResult","validateSkillOutput","valid","parseMethod","confidence","createDefaultOutput","parseBatch","outputs","map","jsonMatch","match","JSON","error","Array","isArray","deliverables","metrics","allowedFields","Set","actualFields","Object","keys","unexpectedFields","filter","field","has","join","isEmpty","parsedOutput","detectSuccess","extractConfidence","extractDeliverables","extractMetrics","extractErrors","successPatterns","failurePatterns","pattern","test","confidenceMatch","parseFloat","patterns","exec","file","includes","timeMatch","execution_time_ms","parseInt","fileCountMatch","files_modified","errorMatches","matchAll","code","message"],"mappings":"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"}