claude-flow-novice 2.15.3 → 2.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/.claude/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  2. package/.claude/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  3. package/.claude/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  4. package/.claude/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  5. package/.claude/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  6. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  7. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  8. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  9. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  10. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  11. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  12. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  13. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  14. package/.claude/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  15. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  16. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  17. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  18. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  19. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  20. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  21. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  22. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  23. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  24. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  25. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  26. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  27. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  28. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  29. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  30. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  31. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  32. package/.claude/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  33. package/.claude/commands/cfn-loop-cli.md +16 -2
  34. package/.claude/commands/switch-api.md +31 -10
  35. package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
  36. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
  37. package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
  38. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  39. package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  40. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  41. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  42. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  43. package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  44. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  45. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  46. package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  47. package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  48. package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
  49. package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  50. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
  51. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  52. package/.claude/skills/cfn-redis-coordination/get-context.sh +33 -0
  53. package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  54. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  55. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  56. package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  57. package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
  58. package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
  59. package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  60. package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  61. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  62. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  63. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
  64. package/README.md +116 -475
  65. package/claude-assets/agents/cfn-dev-team/README.md +103 -0
  66. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
  67. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
  68. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
  69. package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
  70. package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
  71. package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
  72. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
  73. package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
  74. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
  75. package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
  76. package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
  77. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
  78. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
  79. package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
  80. package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
  81. package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
  82. package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
  83. package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
  84. package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
  85. package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
  86. package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
  87. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
  88. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
  89. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
  90. package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
  91. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
  92. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
  93. package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
  94. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  95. package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
  96. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
  97. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
  98. package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
  99. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
  100. package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
  101. package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
  102. package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
  103. package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
  104. package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
  105. package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
  106. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
  107. package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
  108. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  109. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  110. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  111. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  112. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  113. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  114. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  115. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  116. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  117. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  118. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  119. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  120. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  121. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  122. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  123. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  124. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  125. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  126. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  127. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  128. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  129. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  130. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  131. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  137. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  138. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  139. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  140. package/claude-assets/commands/cfn-loop-cli.md +16 -2
  141. package/claude-assets/commands/switch-api.md +31 -10
  142. package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
  143. package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
  144. package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
  145. package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
  146. package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
  147. package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +84 -113
  148. package/claude-assets/skills/agent-lifecycle/simple-audit.sh +33 -6
  149. package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
  150. package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
  151. package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
  152. package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
  153. package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
  154. package/claude-assets/skills/bootstrap/database-connection.md +464 -0
  155. package/claude-assets/skills/bootstrap/error-handling.md +580 -0
  156. package/claude-assets/skills/bootstrap/file-operations.md +699 -0
  157. package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
  158. package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
  159. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  160. package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
  161. package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
  162. package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
  163. package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  164. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  165. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  166. package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
  167. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
  168. package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
  169. package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
  170. package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
  171. package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
  172. package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
  173. package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
  174. package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
  175. package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
  176. package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
  177. package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
  178. package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  179. package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  180. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  181. package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  182. package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  183. package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
  184. package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
  185. package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
  186. package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
  187. package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
  188. package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  189. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
  190. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  191. package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
  192. package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  193. package/claude-assets/skills/cfn-redis-coordination/get-context.sh +33 -0
  194. package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  195. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  196. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  197. package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  198. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
  199. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
  200. package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  201. package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  202. package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
  203. package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
  204. package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  205. package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
  206. package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
  207. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
  208. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
  209. package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
  210. package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  211. package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
  212. package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
  213. package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
  214. package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
  215. package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
  216. package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
  217. package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
  218. package/claude-assets/skills/cfn-utilities/test.sh +317 -0
  219. package/claude-assets/skills/integration/agent-handoff.sh +62 -64
  220. package/claude-assets/skills/json-validation/SKILL.md +431 -0
  221. package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
  222. package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
  223. package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
  224. package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
  225. package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
  226. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
  227. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
  228. package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
  229. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
  230. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
  231. package/claude-assets/skills/workflow-codification/test-integration.sh +15 -0
  232. package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
  233. package/claude-assets/skills/workflow-codification/track-cost-savings.sh +55 -14
  234. package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
  235. package/claude-assets/skills/workflow-codification/track-edge-case.sh +27 -60
  236. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  237. package/dist/ace/ace-curator.js +10 -2
  238. package/dist/ace/ace-curator.js.map +1 -1
  239. package/dist/ace/ace-generator.js +4 -0
  240. package/dist/ace/ace-generator.js.map +1 -1
  241. package/dist/ace/ace-reflector.js +1 -1
  242. package/dist/ace/ace-reflector.js.map +1 -1
  243. package/dist/ace/context-injection.js +24 -2
  244. package/dist/ace/context-injection.js.map +1 -1
  245. package/dist/agents/agent-loader.js +146 -165
  246. package/dist/agents/agent-loader.js.map +1 -1
  247. package/dist/agents/task-agent-integration.js +1 -1
  248. package/dist/agents/task-agent-integration.js.map +1 -1
  249. package/dist/api/health-endpoints.js +390 -0
  250. package/dist/api/health-endpoints.js.map +1 -0
  251. package/dist/cli/agent-executor.js +4 -1
  252. package/dist/cli/agent-executor.js.map +1 -1
  253. package/dist/cli/agent-prompt-builder.js +89 -1
  254. package/dist/cli/agent-prompt-builder.js.map +1 -1
  255. package/dist/cli/agent-spawn.js +130 -37
  256. package/dist/cli/agent-spawn.js.map +1 -1
  257. package/dist/cli/skill-cache-validator.js +412 -0
  258. package/dist/cli/skill-cache-validator.js.map +1 -0
  259. package/dist/cli/skill-cli.js +991 -0
  260. package/dist/cli/skill-cli.js.map +1 -0
  261. package/dist/cli/skill-execution-logger.js +284 -0
  262. package/dist/cli/skill-execution-logger.js.map +1 -0
  263. package/dist/cli/skill-loader.js +457 -0
  264. package/dist/cli/skill-loader.js.map +1 -0
  265. package/dist/coordination/event-bus.js +2 -2
  266. package/dist/coordination/event-bus.js.map +1 -1
  267. package/dist/coordination/fleet-manager.js +1 -1
  268. package/dist/coordination/fleet-manager.js.map +1 -1
  269. package/dist/coordination/index.js +23 -9
  270. package/dist/coordination/index.js.map +1 -1
  271. package/dist/coordination/types/fleet-manager.types.js.map +1 -1
  272. package/dist/db/migration-manager.js +483 -0
  273. package/dist/db/migration-manager.js.map +1 -0
  274. package/dist/db/skills-query.js +535 -0
  275. package/dist/db/skills-query.js.map +1 -0
  276. package/dist/integration/DatabaseHandoff.js +1 -1
  277. package/dist/integration/DatabaseHandoff.js.map +1 -1
  278. package/dist/jobs/edge-case-analyzer.js +367 -0
  279. package/dist/jobs/edge-case-analyzer.js.map +1 -0
  280. package/dist/jobs/promotion-sla-enforcer.js +288 -0
  281. package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
  282. package/dist/lib/agent-output-parser.js.map +1 -1
  283. package/dist/lib/agent-output-validator.js.map +1 -1
  284. package/dist/lib/agent-workspace.js +281 -0
  285. package/dist/lib/agent-workspace.js.map +1 -0
  286. package/dist/lib/atomic-file-writer.js +377 -0
  287. package/dist/lib/atomic-file-writer.js.map +1 -0
  288. package/dist/lib/backup-manager.js +779 -0
  289. package/dist/lib/backup-manager.js.map +1 -0
  290. package/dist/lib/checkpoint-manager.js +837 -0
  291. package/dist/lib/checkpoint-manager.js.map +1 -0
  292. package/dist/lib/circuit-breaker.js +340 -0
  293. package/dist/lib/circuit-breaker.js.map +1 -0
  294. package/dist/lib/completion-signal-handler.js +243 -0
  295. package/dist/lib/completion-signal-handler.js.map +1 -0
  296. package/dist/lib/config-manager.js +312 -0
  297. package/dist/lib/config-manager.js.map +1 -0
  298. package/dist/lib/config-migrator.js +386 -0
  299. package/dist/lib/config-migrator.js.map +1 -0
  300. package/dist/lib/config-validator.js.map +1 -1
  301. package/dist/lib/correlation-cache.js +311 -0
  302. package/dist/lib/correlation-cache.js.map +1 -0
  303. package/dist/lib/correlation.js +263 -0
  304. package/dist/lib/correlation.js.map +1 -0
  305. package/dist/lib/database-service/connection-pool-manager.js +520 -0
  306. package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
  307. package/dist/lib/database-service/correlation.js +329 -0
  308. package/dist/lib/database-service/correlation.js.map +1 -0
  309. package/dist/lib/database-service/errors.js +120 -0
  310. package/dist/lib/database-service/errors.js.map +1 -0
  311. package/dist/lib/database-service/index.js +168 -0
  312. package/dist/lib/database-service/index.js.map +1 -0
  313. package/dist/lib/database-service/postgres-adapter.js +526 -0
  314. package/dist/lib/database-service/postgres-adapter.js.map +1 -0
  315. package/dist/lib/database-service/redis-adapter.js +360 -0
  316. package/dist/lib/database-service/redis-adapter.js.map +1 -0
  317. package/dist/lib/database-service/sqlite-adapter.js +544 -0
  318. package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
  319. package/dist/lib/database-service/transaction-manager.js +773 -0
  320. package/dist/lib/database-service/transaction-manager.js.map +1 -0
  321. package/dist/lib/database-service/types.js +23 -0
  322. package/dist/lib/database-service/types.js.map +1 -0
  323. package/dist/lib/deadlock-resolver.js +292 -0
  324. package/dist/lib/deadlock-resolver.js.map +1 -0
  325. package/dist/lib/distributed-lock.js +451 -0
  326. package/dist/lib/distributed-lock.js.map +1 -0
  327. package/dist/lib/edge-case-deduplicator.js +227 -0
  328. package/dist/lib/edge-case-deduplicator.js.map +1 -0
  329. package/dist/lib/encryption-manager.js +322 -0
  330. package/dist/lib/encryption-manager.js.map +1 -0
  331. package/dist/lib/error-aggregator.js +234 -0
  332. package/dist/lib/error-aggregator.js.map +1 -0
  333. package/dist/lib/errors.js +287 -0
  334. package/dist/lib/errors.js.map +1 -0
  335. package/dist/lib/file-lock-manager.js +578 -0
  336. package/dist/lib/file-lock-manager.js.map +1 -0
  337. package/dist/lib/file-operations.js +367 -0
  338. package/dist/lib/file-operations.js.map +1 -0
  339. package/dist/lib/idempotent-write.js +237 -0
  340. package/dist/lib/idempotent-write.js.map +1 -0
  341. package/dist/lib/integration-schema-validator.js +522 -0
  342. package/dist/lib/integration-schema-validator.js.map +1 -0
  343. package/dist/lib/lock-health-monitor.js +298 -0
  344. package/dist/lib/lock-health-monitor.js.map +1 -0
  345. package/dist/lib/log-shipper.js +422 -0
  346. package/dist/lib/log-shipper.js.map +1 -0
  347. package/dist/lib/logging.js +146 -0
  348. package/dist/lib/logging.js.map +1 -0
  349. package/dist/lib/message-deduplicator.js +439 -0
  350. package/dist/lib/message-deduplicator.js.map +1 -0
  351. package/dist/lib/multi-system-query.js +604 -0
  352. package/dist/lib/multi-system-query.js.map +1 -0
  353. package/dist/lib/orphan-detector.js +332 -0
  354. package/dist/lib/orphan-detector.js.map +1 -0
  355. package/dist/lib/password-generator.js +166 -0
  356. package/dist/lib/password-generator.js.map +1 -0
  357. package/dist/lib/path-validator.js +429 -0
  358. package/dist/lib/path-validator.js.map +1 -0
  359. package/dist/lib/query-translator.js +905 -0
  360. package/dist/lib/query-translator.js.map +1 -0
  361. package/dist/lib/queue-recovery.js +469 -0
  362. package/dist/lib/queue-recovery.js.map +1 -0
  363. package/dist/lib/redis-queue-manager.js +512 -0
  364. package/dist/lib/redis-queue-manager.js.map +1 -0
  365. package/dist/lib/reflection-archiver.js +272 -0
  366. package/dist/lib/reflection-archiver.js.map +1 -0
  367. package/dist/lib/retry-manager.js +453 -0
  368. package/dist/lib/retry-manager.js.map +1 -0
  369. package/dist/lib/retry.js +262 -0
  370. package/dist/lib/retry.js.map +1 -0
  371. package/dist/lib/schema-transform.js +695 -0
  372. package/dist/lib/schema-transform.js.map +1 -0
  373. package/dist/lib/schema-validator.js +491 -0
  374. package/dist/lib/schema-validator.js.map +1 -0
  375. package/dist/lib/skill-cache.js +297 -0
  376. package/dist/lib/skill-cache.js.map +1 -0
  377. package/dist/lib/skill-content-manager.js +337 -0
  378. package/dist/lib/skill-content-manager.js.map +1 -0
  379. package/dist/lib/skill-frontmatter-parser.js +237 -0
  380. package/dist/lib/skill-frontmatter-parser.js.map +1 -0
  381. package/dist/lib/skill-git-integration.js +275 -0
  382. package/dist/lib/skill-git-integration.js.map +1 -0
  383. package/dist/lib/skill-markdown-validator.js +396 -0
  384. package/dist/lib/skill-markdown-validator.js.map +1 -0
  385. package/dist/lib/skill-output-parser.js +312 -0
  386. package/dist/lib/skill-output-parser.js.map +1 -0
  387. package/dist/lib/unified-query-api.js +467 -0
  388. package/dist/lib/unified-query-api.js.map +1 -0
  389. package/dist/middleware/auth-middleware.js +350 -0
  390. package/dist/middleware/auth-middleware.js.map +1 -0
  391. package/dist/middleware/schema-validation.js +347 -0
  392. package/dist/middleware/schema-validation.js.map +1 -0
  393. package/dist/providers/anthropic-provider.js +1 -1
  394. package/dist/providers/anthropic-provider.js.map +1 -1
  395. package/dist/providers/provider-factory.js +2 -2
  396. package/dist/providers/provider-factory.js.map +1 -1
  397. package/dist/services/edge-case-analyzer.js +321 -0
  398. package/dist/services/edge-case-analyzer.js.map +1 -0
  399. package/dist/services/edge-case-deduplicator.js +266 -0
  400. package/dist/services/edge-case-deduplicator.js.map +1 -0
  401. package/dist/services/edge-case-detector.js +337 -0
  402. package/dist/services/edge-case-detector.js.map +1 -0
  403. package/dist/services/edge-case-tracker.js +547 -0
  404. package/dist/services/edge-case-tracker.js.map +1 -0
  405. package/dist/services/health-check-system.js +586 -0
  406. package/dist/services/health-check-system.js.map +1 -0
  407. package/dist/services/metrics-logger.js +412 -0
  408. package/dist/services/metrics-logger.js.map +1 -0
  409. package/dist/services/patch-generator.js +378 -0
  410. package/dist/services/patch-generator.js.map +1 -0
  411. package/dist/services/patch-validator.js +337 -0
  412. package/dist/services/patch-validator.js.map +1 -0
  413. package/dist/services/performance-monitor.js +811 -0
  414. package/dist/services/performance-monitor.js.map +1 -0
  415. package/dist/services/promotion-pipeline.js +918 -0
  416. package/dist/services/promotion-pipeline.js.map +1 -0
  417. package/dist/services/promotion-validator.js +394 -0
  418. package/dist/services/promotion-validator.js.map +1 -0
  419. package/dist/services/reflection-logger.js +388 -0
  420. package/dist/services/reflection-logger.js.map +1 -0
  421. package/dist/services/skill-deployment.js +472 -0
  422. package/dist/services/skill-deployment.js.map +1 -0
  423. package/dist/services/skill-loader.js +427 -0
  424. package/dist/services/skill-loader.js.map +1 -0
  425. package/dist/services/skill-promotion.js +372 -0
  426. package/dist/services/skill-promotion.js.map +1 -0
  427. package/dist/services/skill-validator.js +454 -0
  428. package/dist/services/skill-validator.js.map +1 -0
  429. package/dist/services/skill-versioning.js +244 -0
  430. package/dist/services/skill-versioning.js.map +1 -0
  431. package/dist/services/workspace-supervisor.js +597 -0
  432. package/dist/services/workspace-supervisor.js.map +1 -0
  433. package/dist/types/edge-case.js +45 -0
  434. package/dist/types/edge-case.js.map +1 -0
  435. package/package.json +201 -177
  436. package/readme/README.md +19 -4
  437. package/scripts/backup-cleanup.sh +627 -0
  438. package/scripts/cleanup-workspaces.sh +412 -0
  439. package/scripts/cleanup-yaml-configs.sh +141 -0
  440. package/scripts/deploy-approved-skills.sh +263 -0
  441. package/scripts/health-check.sh +447 -0
  442. package/scripts/log-aggregator.sh +554 -0
  443. package/scripts/log-monitor.sh +629 -0
  444. package/scripts/manage-agent-workspaces.sh +434 -0
  445. package/scripts/migrate-schema.sh +533 -0
  446. package/scripts/promote-staged-skills.sh +423 -0
  447. package/scripts/verify-no-secrets.sh +88 -35
  448. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  449. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  450. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  451. package/.claude/skills/agent-lifecycle/SKILL.md +0 -60
  452. package/.claude/skills/agent-lifecycle/execute-lifecycle-hook.sh +0 -573
  453. package/.claude/skills/agent-lifecycle/simple-audit.sh +0 -31
  454. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  455. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
  456. package/README.md.backup_before_replace +0 -781
  457. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  458. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  459. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  460. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  461. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
@@ -0,0 +1,586 @@
1
+ /**
2
+ * Health Check System
3
+ *
4
+ * Comprehensive health monitoring for all critical services:
5
+ * - Database connectivity and latency
6
+ * - Redis connectivity and performance
7
+ * - File system availability and disk space
8
+ * - Active agent count and queue depth
9
+ *
10
+ * Provides sub-second health detection (<1s overall response time)
11
+ * and detailed health reports for monitoring integration.
12
+ *
13
+ * Part of Task P2-4.1: Comprehensive Health Checks
14
+ */ import { getDatabaseService } from '../lib/database-service.js';
15
+ import { RedisQueueManager } from '../lib/redis-queue-manager.js';
16
+ import { StandardError, ErrorCode } from '../lib/errors.js';
17
+ import fs from 'fs';
18
+ import os from 'os';
19
+ /**
20
+ * Health status enumeration
21
+ */ export var HealthStatus = /*#__PURE__*/ function(HealthStatus) {
22
+ HealthStatus["HEALTHY"] = "healthy";
23
+ HealthStatus["DEGRADED"] = "degraded";
24
+ HealthStatus["UNHEALTHY"] = "unhealthy";
25
+ return HealthStatus;
26
+ }({});
27
+ /**
28
+ * Comprehensive health check system
29
+ */ export class HealthCheckSystem {
30
+ config;
31
+ redisManager = null;
32
+ constructor(config){
33
+ this.config = {
34
+ databaseTimeout: config?.databaseTimeout ?? 500,
35
+ redisTimeout: config?.redisTimeout ?? 500,
36
+ filesystemTimeout: config?.filesystemTimeout ?? 500,
37
+ agentsTimeout: config?.agentsTimeout ?? 500,
38
+ diskUsageWarnThreshold: config?.diskUsageWarnThreshold ?? 80,
39
+ diskUsageCriticalThreshold: config?.diskUsageCriticalThreshold ?? 95,
40
+ queueDepthWarnThreshold: config?.queueDepthWarnThreshold ?? 100,
41
+ queueDepthCriticalThreshold: config?.queueDepthCriticalThreshold ?? 500
42
+ };
43
+ try {
44
+ this.redisManager = new RedisQueueManager();
45
+ } catch (error) {
46
+ // Redis initialization may fail in test environments
47
+ // Will be handled gracefully in checkRedis()
48
+ }
49
+ }
50
+ /**
51
+ * Check database health
52
+ * Verifies connectivity and measures response latency
53
+ */ async checkDatabase() {
54
+ const startTime = Date.now();
55
+ try {
56
+ const db = getDatabaseService();
57
+ // Create a timeout promise
58
+ const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>reject(new Error('Database check timeout')), this.config.databaseTimeout));
59
+ // Race between actual check and timeout
60
+ await Promise.race([
61
+ (async ()=>{
62
+ // Simple connectivity check using a lightweight query
63
+ await db.query('SELECT 1');
64
+ })(),
65
+ timeoutPromise
66
+ ]);
67
+ const latency = Date.now() - startTime;
68
+ return {
69
+ name: 'database',
70
+ status: "healthy",
71
+ latency,
72
+ message: 'Database connected and responding',
73
+ timestamp: new Date(),
74
+ metadata: {
75
+ responseTime: latency,
76
+ type: 'postgresql'
77
+ }
78
+ };
79
+ } catch (error) {
80
+ const latency = Date.now() - startTime;
81
+ const message = error instanceof Error ? error.message : 'Unknown database error';
82
+ return {
83
+ name: 'database',
84
+ status: latency > this.config.databaseTimeout ? "unhealthy" : "unhealthy",
85
+ latency,
86
+ message: `Database check failed: ${message}`,
87
+ timestamp: new Date(),
88
+ metadata: {
89
+ error: message,
90
+ timeout: latency > this.config.databaseTimeout
91
+ }
92
+ };
93
+ }
94
+ }
95
+ /**
96
+ * Check Redis health
97
+ * Verifies connectivity and measures ping response time
98
+ */ async checkRedis() {
99
+ const startTime = Date.now();
100
+ try {
101
+ if (!this.redisManager) {
102
+ throw new Error('Redis manager not initialized');
103
+ }
104
+ // Create a timeout promise
105
+ const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>reject(new Error('Redis check timeout')), this.config.redisTimeout));
106
+ // Race between actual check and timeout
107
+ await Promise.race([
108
+ this.redisManager.ping(),
109
+ timeoutPromise
110
+ ]);
111
+ const latency = Date.now() - startTime;
112
+ // Get additional metrics
113
+ let metadata = {
114
+ responseTime: latency
115
+ };
116
+ try {
117
+ const stats = await this.redisManager.getStats();
118
+ metadata = {
119
+ ...metadata,
120
+ ...stats
121
+ };
122
+ } catch {
123
+ // If stats fail, just continue with basic response time
124
+ }
125
+ return {
126
+ name: 'redis',
127
+ status: "healthy",
128
+ latency,
129
+ message: 'Redis responding to PING',
130
+ timestamp: new Date(),
131
+ metadata
132
+ };
133
+ } catch (error) {
134
+ const latency = Date.now() - startTime;
135
+ const message = error instanceof Error ? error.message : 'Unknown Redis error';
136
+ const status = message.includes('timeout') || latency > this.config.redisTimeout ? "unhealthy" : "unhealthy";
137
+ return {
138
+ name: 'redis',
139
+ status,
140
+ latency,
141
+ message: `Redis check failed: ${message}`,
142
+ timestamp: new Date(),
143
+ metadata: {
144
+ error: message,
145
+ timeout: latency > this.config.redisTimeout
146
+ }
147
+ };
148
+ }
149
+ }
150
+ /**
151
+ * Check file system health
152
+ * Verifies disk space and write permissions
153
+ */ async checkFileSystem() {
154
+ const startTime = Date.now();
155
+ try {
156
+ // Create a timeout promise
157
+ const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>reject(new Error('Filesystem check timeout')), this.config.filesystemTimeout));
158
+ // Race between actual check and timeout
159
+ const result = await Promise.race([
160
+ this.getFileSystemMetrics(),
161
+ timeoutPromise
162
+ ]);
163
+ const latency = Date.now() - startTime;
164
+ // Determine health status based on disk usage
165
+ let status = "healthy";
166
+ let message = 'File system healthy';
167
+ if (result.diskUsagePercent > this.config.diskUsageCriticalThreshold) {
168
+ status = "unhealthy";
169
+ message = `Critical disk usage: ${result.diskUsagePercent.toFixed(1)}%`;
170
+ } else if (result.diskUsagePercent > this.config.diskUsageWarnThreshold) {
171
+ status = "degraded";
172
+ message = `Degraded disk usage: ${result.diskUsagePercent.toFixed(1)}%`;
173
+ }
174
+ if (!result.writePermission) {
175
+ status = "unhealthy";
176
+ message = 'Write permission denied on temp directory';
177
+ }
178
+ return {
179
+ name: 'filesystem',
180
+ status,
181
+ latency,
182
+ message,
183
+ timestamp: new Date(),
184
+ metadata: {
185
+ diskUsagePercent: result.diskUsagePercent,
186
+ writePermission: result.writePermission,
187
+ freeSpaceMB: result.freeSpaceMB,
188
+ totalSpaceMB: result.totalSpaceMB
189
+ }
190
+ };
191
+ } catch (error) {
192
+ const latency = Date.now() - startTime;
193
+ const message = error instanceof Error ? error.message : 'Unknown filesystem error';
194
+ return {
195
+ name: 'filesystem',
196
+ status: "unhealthy",
197
+ latency,
198
+ message: `File system check failed: ${message}`,
199
+ timestamp: new Date(),
200
+ metadata: {
201
+ error: message
202
+ }
203
+ };
204
+ }
205
+ }
206
+ /**
207
+ * Check agent health
208
+ * Verifies active agent count and queue depth
209
+ */ async checkAgents() {
210
+ const startTime = Date.now();
211
+ try {
212
+ // Create a timeout promise
213
+ const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>reject(new Error('Agents check timeout')), this.config.agentsTimeout));
214
+ // Race between actual check and timeout
215
+ const metrics = await Promise.race([
216
+ this.getAgentMetrics(),
217
+ timeoutPromise
218
+ ]);
219
+ const latency = Date.now() - startTime;
220
+ // Determine health status based on queue depth
221
+ let status = "healthy";
222
+ let message = `${metrics.activeAgentCount} agents active`;
223
+ if (metrics.queueDepth > this.config.queueDepthCriticalThreshold) {
224
+ status = "unhealthy";
225
+ message = `Critical queue depth: ${metrics.queueDepth} tasks`;
226
+ } else if (metrics.queueDepth > this.config.queueDepthWarnThreshold) {
227
+ status = "degraded";
228
+ message = `High queue depth: ${metrics.queueDepth} tasks`;
229
+ }
230
+ return {
231
+ name: 'agents',
232
+ status,
233
+ latency,
234
+ message,
235
+ timestamp: new Date(),
236
+ metadata: {
237
+ activeAgentCount: metrics.activeAgentCount,
238
+ queueDepth: metrics.queueDepth
239
+ }
240
+ };
241
+ } catch (error) {
242
+ const latency = Date.now() - startTime;
243
+ const message = error instanceof Error ? error.message : 'Unknown agent error';
244
+ return {
245
+ name: 'agents',
246
+ status: "unhealthy",
247
+ latency,
248
+ message: `Agent check failed: ${message}`,
249
+ timestamp: new Date(),
250
+ metadata: {
251
+ error: message
252
+ }
253
+ };
254
+ }
255
+ }
256
+ /**
257
+ * Get overall system health
258
+ * Aggregates all service health checks
259
+ */ async getOverallHealth() {
260
+ const overallStartTime = Date.now();
261
+ const [database, redis, filesystem, agents] = await Promise.all([
262
+ this.checkDatabase(),
263
+ this.checkRedis(),
264
+ this.checkFileSystem(),
265
+ this.checkAgents()
266
+ ]);
267
+ const dependencies = [
268
+ database,
269
+ redis,
270
+ filesystem,
271
+ agents
272
+ ];
273
+ // Determine overall status
274
+ // UNHEALTHY if any service is unhealthy
275
+ // DEGRADED if any service is degraded
276
+ // HEALTHY if all services are healthy
277
+ let overallStatus = "healthy";
278
+ const unhealthyServices = dependencies.filter((d)=>d.status === "unhealthy");
279
+ const degradedServices = dependencies.filter((d)=>d.status === "degraded");
280
+ if (unhealthyServices.length > 0) {
281
+ overallStatus = "unhealthy";
282
+ } else if (degradedServices.length > 0) {
283
+ overallStatus = "degraded";
284
+ }
285
+ const latency = Date.now() - overallStartTime;
286
+ const statusMessage = unhealthyServices.length > 0 ? `${unhealthyServices.length} service(s) unhealthy` : degradedServices.length > 0 ? `${degradedServices.length} service(s) degraded` : 'All services healthy';
287
+ return {
288
+ name: 'overall',
289
+ status: overallStatus,
290
+ latency,
291
+ message: statusMessage,
292
+ timestamp: new Date(),
293
+ dependencies
294
+ };
295
+ }
296
+ /**
297
+ * Get detailed health report
298
+ * Includes all services and aggregated metrics
299
+ */ async getDetailedHealthReport() {
300
+ const reportStartTime = Date.now();
301
+ const overall = await this.getOverallHealth();
302
+ const report = {
303
+ timestamp: new Date(),
304
+ overallStatus: overall.status,
305
+ latency: Date.now() - reportStartTime,
306
+ services: {
307
+ database: overall.dependencies[0],
308
+ redis: overall.dependencies[1],
309
+ filesystem: overall.dependencies[2],
310
+ agents: overall.dependencies[3]
311
+ },
312
+ alerts: []
313
+ };
314
+ // Build alerts
315
+ if (report.overallStatus === "unhealthy") {
316
+ const unhealthy = overall.dependencies.filter((d)=>d.status === "unhealthy");
317
+ report.alerts = unhealthy.map((s)=>`${s.name}: ${s.message}`);
318
+ }
319
+ if (report.overallStatus === "degraded") {
320
+ const degraded = overall.dependencies.filter((d)=>d.status === "degraded");
321
+ report.alerts = degraded.map((s)=>`${s.name}: ${s.message}`);
322
+ }
323
+ return report;
324
+ }
325
+ /**
326
+ * Fast ping check for basic connectivity
327
+ * Returns in <100ms for Kubernetes probes and dashboards
328
+ *
329
+ * This is a lightweight check that verifies the system is responsive
330
+ * without performing expensive operations like database queries.
331
+ *
332
+ * @param timeout - Optional timeout in milliseconds (default: 100ms)
333
+ * @returns HealthCheck with basic connectivity status
334
+ * @throws StandardError if ping fails or timeout exceeded
335
+ */ async ping(timeout = 100) {
336
+ const startTime = Date.now();
337
+ try {
338
+ // Create a timeout promise
339
+ const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>reject(new StandardError(ErrorCode.OPERATION_TIMEOUT, `Ping timeout after ${timeout}ms`, {
340
+ timeout
341
+ })), timeout));
342
+ // Race between basic checks and timeout
343
+ await Promise.race([
344
+ // Minimal checks - just verify system is responsive
345
+ (async ()=>{
346
+ // Check if we can access Date (basic runtime check)
347
+ const now = Date.now();
348
+ // Verify process is alive
349
+ if (typeof process === 'undefined') {
350
+ throw new StandardError(ErrorCode.UNKNOWN_ERROR, 'Process runtime not available', {
351
+ check: 'ping'
352
+ });
353
+ }
354
+ // Verify we have memory available
355
+ const memUsage = process.memoryUsage();
356
+ if (memUsage.heapUsed > memUsage.heapTotal * 0.95) {
357
+ throw new StandardError(ErrorCode.UNKNOWN_ERROR, 'Memory critically low', {
358
+ heapUsed: memUsage.heapUsed,
359
+ heapTotal: memUsage.heapTotal,
360
+ percentUsed: memUsage.heapUsed / memUsage.heapTotal * 100
361
+ });
362
+ }
363
+ })(),
364
+ timeoutPromise
365
+ ]);
366
+ const latency = Date.now() - startTime;
367
+ // Ensure we're under the target response time
368
+ if (latency >= timeout) {
369
+ throw new StandardError(ErrorCode.OPERATION_TIMEOUT, `Ping exceeded target response time: ${latency}ms >= ${timeout}ms`, {
370
+ latency,
371
+ timeout
372
+ });
373
+ }
374
+ return {
375
+ name: 'ping',
376
+ status: "healthy",
377
+ latency,
378
+ message: 'System responsive',
379
+ timestamp: new Date(),
380
+ metadata: {
381
+ responseTime: latency,
382
+ memoryUsage: process.memoryUsage(),
383
+ uptime: process.uptime()
384
+ }
385
+ };
386
+ } catch (error) {
387
+ const latency = Date.now() - startTime;
388
+ if (error instanceof StandardError) {
389
+ throw error;
390
+ }
391
+ const message = error instanceof Error ? error.message : 'Unknown ping error';
392
+ throw new StandardError(ErrorCode.UNKNOWN_ERROR, `Ping failed: ${message}`, {
393
+ latency,
394
+ timeout
395
+ }, error instanceof Error ? error : undefined);
396
+ }
397
+ }
398
+ /**
399
+ * Get aggregated health statistics from all endpoints
400
+ * Provides a comprehensive view of system health metrics
401
+ *
402
+ * @param timeout - Optional timeout in milliseconds (default: 5000ms)
403
+ * @returns AggregatedHealthStats with metrics from all services
404
+ */ async getAggregateStats(timeout = 5000) {
405
+ const startTime = Date.now();
406
+ try {
407
+ // Create a timeout promise
408
+ const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>reject(new StandardError(ErrorCode.OPERATION_TIMEOUT, `Aggregate stats timeout after ${timeout}ms`, {
409
+ timeout
410
+ })), timeout));
411
+ // Race between collecting all stats and timeout
412
+ const result = await Promise.race([
413
+ (async ()=>{
414
+ // Collect all health checks in parallel
415
+ const [database, redis, filesystem, agents] = await Promise.all([
416
+ this.checkDatabase(),
417
+ this.checkRedis(),
418
+ this.checkFileSystem(),
419
+ this.checkAgents()
420
+ ]);
421
+ return {
422
+ database,
423
+ redis,
424
+ filesystem,
425
+ agents
426
+ };
427
+ })(),
428
+ timeoutPromise
429
+ ]);
430
+ const latency = Date.now() - startTime;
431
+ // Calculate aggregate metrics
432
+ const services = [
433
+ result.database,
434
+ result.redis,
435
+ result.filesystem,
436
+ result.agents
437
+ ];
438
+ const healthyCount = services.filter((s)=>s.status === "healthy").length;
439
+ const degradedCount = services.filter((s)=>s.status === "degraded").length;
440
+ const unhealthyCount = services.filter((s)=>s.status === "unhealthy").length;
441
+ // Determine overall status
442
+ let overallStatus = "healthy";
443
+ if (unhealthyCount > 0) {
444
+ overallStatus = "unhealthy";
445
+ } else if (degradedCount > 0) {
446
+ overallStatus = "degraded";
447
+ }
448
+ // Calculate average latency
449
+ const totalLatency = services.reduce((sum, s)=>sum + s.latency, 0);
450
+ const averageLatency = totalLatency / services.length;
451
+ // Collect metadata from all services
452
+ const metadata = {
453
+ database: result.database.metadata,
454
+ redis: result.redis.metadata,
455
+ filesystem: result.filesystem.metadata,
456
+ agents: result.agents.metadata
457
+ };
458
+ // Build warnings list
459
+ const warnings = [];
460
+ if (degradedCount > 0) {
461
+ const degradedServices = services.filter((s)=>s.status === "degraded");
462
+ warnings.push(...degradedServices.map((s)=>`${s.name}: ${s.message}`));
463
+ }
464
+ // Build errors list
465
+ const errors = [];
466
+ if (unhealthyCount > 0) {
467
+ const unhealthyServices = services.filter((s)=>s.status === "unhealthy");
468
+ errors.push(...unhealthyServices.map((s)=>`${s.name}: ${s.message}`));
469
+ }
470
+ return {
471
+ timestamp: new Date(),
472
+ overallStatus,
473
+ latency,
474
+ averageServiceLatency: averageLatency,
475
+ serviceCount: {
476
+ total: services.length,
477
+ healthy: healthyCount,
478
+ degraded: degradedCount,
479
+ unhealthy: unhealthyCount
480
+ },
481
+ services: {
482
+ database: {
483
+ status: result.database.status,
484
+ latency: result.database.latency,
485
+ message: result.database.message
486
+ },
487
+ redis: {
488
+ status: result.redis.status,
489
+ latency: result.redis.latency,
490
+ message: result.redis.message
491
+ },
492
+ filesystem: {
493
+ status: result.filesystem.status,
494
+ latency: result.filesystem.latency,
495
+ message: result.filesystem.message
496
+ },
497
+ agents: {
498
+ status: result.agents.status,
499
+ latency: result.agents.latency,
500
+ message: result.agents.message
501
+ }
502
+ },
503
+ metadata,
504
+ warnings,
505
+ errors
506
+ };
507
+ } catch (error) {
508
+ const latency = Date.now() - startTime;
509
+ if (error instanceof StandardError) {
510
+ throw error;
511
+ }
512
+ const message = error instanceof Error ? error.message : 'Unknown aggregation error';
513
+ throw new StandardError(ErrorCode.UNKNOWN_ERROR, `Failed to aggregate health stats: ${message}`, {
514
+ latency,
515
+ timeout
516
+ }, error instanceof Error ? error : undefined);
517
+ }
518
+ }
519
+ /**
520
+ * Get file system metrics
521
+ * Private helper for filesystem check
522
+ */ async getFileSystemMetrics() {
523
+ return new Promise((resolve, reject)=>{
524
+ // Get disk usage statistics
525
+ const tempDir = os.tmpdir();
526
+ const stat = fs.statSync(tempDir);
527
+ // Use statvfs to get disk space information
528
+ fs.statfs(tempDir, (err, stats)=>{
529
+ if (err) {
530
+ reject(err);
531
+ return;
532
+ }
533
+ const totalBlocks = stats.blocks;
534
+ const availableBlocks = stats.bavail;
535
+ const blockSize = stats.bsize;
536
+ const totalSpaceMB = totalBlocks * blockSize / (1024 * 1024);
537
+ const availableSpaceMB = availableBlocks * blockSize / (1024 * 1024);
538
+ const usedSpaceMB = totalSpaceMB - availableSpaceMB;
539
+ const diskUsagePercent = usedSpaceMB / totalSpaceMB * 100;
540
+ // Check write permission by attempting to create a temp file
541
+ const testFile = `${tempDir}/.health-check-test-${Date.now()}`;
542
+ let writePermission = false;
543
+ try {
544
+ fs.writeFileSync(testFile, 'health-check-test');
545
+ fs.unlinkSync(testFile);
546
+ writePermission = true;
547
+ } catch {
548
+ writePermission = false;
549
+ }
550
+ resolve({
551
+ totalSpaceMB,
552
+ availableSpaceMB,
553
+ usedSpaceMB,
554
+ diskUsagePercent,
555
+ writePermission,
556
+ freeSpaceMB: availableSpaceMB
557
+ });
558
+ });
559
+ });
560
+ }
561
+ /**
562
+ * Get agent metrics
563
+ * Private helper for agent check
564
+ */ async getAgentMetrics() {
565
+ // Get active agent count from Redis queue
566
+ let activeAgentCount = 0;
567
+ let queueDepth = 0;
568
+ try {
569
+ if (this.redisManager) {
570
+ const stats = await this.redisManager.getStats();
571
+ activeAgentCount = stats.activeCount || 0;
572
+ queueDepth = stats.pendingCount || 0;
573
+ }
574
+ } catch {
575
+ // If Redis is unavailable, return default metrics
576
+ activeAgentCount = 0;
577
+ queueDepth = 0;
578
+ }
579
+ return {
580
+ activeAgentCount,
581
+ queueDepth
582
+ };
583
+ }
584
+ }
585
+
586
+ //# sourceMappingURL=health-check-system.js.map