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
@@ -1,121 +1,121 @@
1
- #!/bin/bash
2
- # CFN Marketing Chatbot Conversations - Get Conversation History Operation
3
- # Version: 1.0.0
4
- # Purpose: Retrieve conversation transcript
5
-
6
- set -euo pipefail
7
-
8
- # Parse arguments
9
- VISITOR_ID=""
10
- PLATFORM=""
11
- LIMIT=50
12
- SINCE=""
13
-
14
- while [[ $# -gt 0 ]]; do
15
- case $1 in
16
- --visitor-id)
17
- VISITOR_ID="$2"
18
- shift 2
19
- ;;
20
- --platform)
21
- PLATFORM="$2"
22
- shift 2
23
- ;;
24
- --limit)
25
- LIMIT="$2"
26
- shift 2
27
- ;;
28
- --since)
29
- SINCE="$2"
30
- shift 2
31
- ;;
32
- *)
33
- echo '{"error": "Unknown parameter: '$1'", "code": "INVALID_PARAMETER"}' >&2
34
- exit 1
35
- ;;
36
- esac
37
- done
38
-
39
- # Validate required parameters
40
- if [[ -z "$VISITOR_ID" ]]; then
41
- echo '{"error": "Missing required parameter: --visitor-id", "code": "MISSING_PARAMETER"}' >&2
42
- exit 1
43
- fi
44
-
45
- if [[ -z "$PLATFORM" ]]; then
46
- echo '{"error": "Missing required parameter: --platform", "code": "MISSING_PARAMETER"}' >&2
47
- exit 1
48
- fi
49
-
50
- # Validate platform
51
- if [[ "$PLATFORM" != "intercom" && "$PLATFORM" != "drift" ]]; then
52
- echo '{"error": "Invalid platform. Must be intercom or drift", "code": "INVALID_PLATFORM"}' >&2
53
- exit 1
54
- fi
55
-
56
- # Validate limit
57
- if ! [[ "$LIMIT" =~ ^[0-9]+$ ]] || [[ "$LIMIT" -lt 1 ]] || [[ "$LIMIT" -gt 500 ]]; then
58
- echo '{"error": "Invalid limit. Must be between 1 and 500", "code": "INVALID_LIMIT"}' >&2
59
- exit 1
60
- fi
61
-
62
- # Validate environment variables
63
- if [[ -z "${N8N_BASE_URL:-}" ]]; then
64
- echo '{"error": "Environment variable N8N_BASE_URL not set", "code": "MISSING_ENV_VAR"}' >&2
65
- exit 2
66
- fi
67
-
68
- if [[ -z "${N8N_API_KEY:-}" ]]; then
69
- echo '{"error": "Environment variable N8N_API_KEY not set", "code": "MISSING_ENV_VAR"}' >&2
70
- exit 2
71
- fi
72
-
73
- # Build query parameters
74
- QUERY_PARAMS="visitor_id=${VISITOR_ID}&platform=${PLATFORM}&limit=${LIMIT}"
75
- if [[ -n "$SINCE" ]]; then
76
- QUERY_PARAMS="${QUERY_PARAMS}&since=${SINCE}"
77
- fi
78
-
79
- # Retrieve conversation history via n8n webhook
80
- RESPONSE=$(curl -s -w "\n%{http_code}" \
81
- -X GET \
82
- -H "X-N8N-API-KEY: ${N8N_API_KEY}" \
83
- "${N8N_BASE_URL}/webhook/chatbot/conversation-history?${QUERY_PARAMS}" 2>&1) || {
84
- echo '{"error": "Network error: Failed to connect to n8n", "code": "NETWORK_ERROR"}' >&2
85
- exit 2
86
- }
87
-
88
- HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
89
- BODY=$(echo "$RESPONSE" | sed '$d')
90
-
91
- # Handle HTTP errors
92
- if [[ "$HTTP_CODE" -ge 400 ]]; then
93
- if [[ "$HTTP_CODE" -eq 404 ]]; then
94
- echo '{"error": "Visitor not found", "code": "VISITOR_NOT_FOUND", "visitor_id": "'"$VISITOR_ID"'"}' >&2
95
- exit 3
96
- elif [[ "$HTTP_CODE" -eq 401 ]]; then
97
- echo '{"error": "Authentication failed", "code": "AUTH_ERROR"}' >&2
98
- exit 2
99
- else
100
- ERROR_MSG=$(echo "$BODY" | jq -r '.error // "Unknown API error"' 2>/dev/null || echo "Unknown API error")
101
- echo '{"error": "'"$ERROR_MSG"'", "code": "API_ERROR", "http_code": '$HTTP_CODE'}' >&2
102
- exit 2
103
- fi
104
- fi
105
-
106
- # Parse response
107
- if ! echo "$BODY" | jq empty 2>/dev/null; then
108
- echo '{"error": "Invalid JSON response from API", "code": "INVALID_RESPONSE"}' >&2
109
- exit 2
110
- fi
111
-
112
- # Return conversation history
113
- echo "$BODY" | jq \
114
- --arg visitor_id "$VISITOR_ID" \
115
- '{
116
- visitor_id: $visitor_id,
117
- messages: (.messages // []),
118
- total_messages: (.total_messages // (.messages | length))
119
- }'
120
-
121
- exit 0
1
+ #!/bin/bash
2
+ # CFN Marketing Chatbot Conversations - Get Conversation History Operation
3
+ # Version: 1.0.0
4
+ # Purpose: Retrieve conversation transcript
5
+
6
+ set -euo pipefail
7
+
8
+ # Parse arguments
9
+ VISITOR_ID=""
10
+ PLATFORM=""
11
+ LIMIT=50
12
+ SINCE=""
13
+
14
+ while [[ $# -gt 0 ]]; do
15
+ case $1 in
16
+ --visitor-id)
17
+ VISITOR_ID="$2"
18
+ shift 2
19
+ ;;
20
+ --platform)
21
+ PLATFORM="$2"
22
+ shift 2
23
+ ;;
24
+ --limit)
25
+ LIMIT="$2"
26
+ shift 2
27
+ ;;
28
+ --since)
29
+ SINCE="$2"
30
+ shift 2
31
+ ;;
32
+ *)
33
+ echo '{"error": "Unknown parameter: '$1'", "code": "INVALID_PARAMETER"}' >&2
34
+ exit 1
35
+ ;;
36
+ esac
37
+ done
38
+
39
+ # Validate required parameters
40
+ if [[ -z "$VISITOR_ID" ]]; then
41
+ echo '{"error": "Missing required parameter: --visitor-id", "code": "MISSING_PARAMETER"}' >&2
42
+ exit 1
43
+ fi
44
+
45
+ if [[ -z "$PLATFORM" ]]; then
46
+ echo '{"error": "Missing required parameter: --platform", "code": "MISSING_PARAMETER"}' >&2
47
+ exit 1
48
+ fi
49
+
50
+ # Validate platform
51
+ if [[ "$PLATFORM" != "intercom" && "$PLATFORM" != "drift" ]]; then
52
+ echo '{"error": "Invalid platform. Must be intercom or drift", "code": "INVALID_PLATFORM"}' >&2
53
+ exit 1
54
+ fi
55
+
56
+ # Validate limit
57
+ if ! [[ "$LIMIT" =~ ^[0-9]+$ ]] || [[ "$LIMIT" -lt 1 ]] || [[ "$LIMIT" -gt 500 ]]; then
58
+ echo '{"error": "Invalid limit. Must be between 1 and 500", "code": "INVALID_LIMIT"}' >&2
59
+ exit 1
60
+ fi
61
+
62
+ # Validate environment variables
63
+ if [[ -z "${N8N_BASE_URL:-}" ]]; then
64
+ echo '{"error": "Environment variable N8N_BASE_URL not set", "code": "MISSING_ENV_VAR"}' >&2
65
+ exit 2
66
+ fi
67
+
68
+ if [[ -z "${N8N_API_KEY:-}" ]]; then
69
+ echo '{"error": "Environment variable N8N_API_KEY not set", "code": "MISSING_ENV_VAR"}' >&2
70
+ exit 2
71
+ fi
72
+
73
+ # Build query parameters
74
+ QUERY_PARAMS="visitor_id=${VISITOR_ID}&platform=${PLATFORM}&limit=${LIMIT}"
75
+ if [[ -n "$SINCE" ]]; then
76
+ QUERY_PARAMS="${QUERY_PARAMS}&since=${SINCE}"
77
+ fi
78
+
79
+ # Retrieve conversation history via n8n webhook
80
+ RESPONSE=$(curl -s -w "\n%{http_code}" \
81
+ -X GET \
82
+ -H "X-N8N-API-KEY: ${N8N_API_KEY}" \
83
+ "${N8N_BASE_URL}/webhook/chatbot/conversation-history?${QUERY_PARAMS}" 2>&1) || {
84
+ echo '{"error": "Network error: Failed to connect to n8n", "code": "NETWORK_ERROR"}' >&2
85
+ exit 2
86
+ }
87
+
88
+ HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
89
+ BODY=$(echo "$RESPONSE" | sed '$d')
90
+
91
+ # Handle HTTP errors
92
+ if [[ "$HTTP_CODE" -ge 400 ]]; then
93
+ if [[ "$HTTP_CODE" -eq 404 ]]; then
94
+ echo '{"error": "Visitor not found", "code": "VISITOR_NOT_FOUND", "visitor_id": "'"$VISITOR_ID"'"}' >&2
95
+ exit 3
96
+ elif [[ "$HTTP_CODE" -eq 401 ]]; then
97
+ echo '{"error": "Authentication failed", "code": "AUTH_ERROR"}' >&2
98
+ exit 2
99
+ else
100
+ ERROR_MSG=$(echo "$BODY" | jq -r '.error // "Unknown API error"' 2>/dev/null || echo "Unknown API error")
101
+ echo '{"error": "'"$ERROR_MSG"'", "code": "API_ERROR", "http_code": '$HTTP_CODE'}' >&2
102
+ exit 2
103
+ fi
104
+ fi
105
+
106
+ # Parse response
107
+ if ! echo "$BODY" | jq empty 2>/dev/null; then
108
+ echo '{"error": "Invalid JSON response from API", "code": "INVALID_RESPONSE"}' >&2
109
+ exit 2
110
+ fi
111
+
112
+ # Return conversation history
113
+ echo "$BODY" | jq \
114
+ --arg visitor_id "$VISITOR_ID" \
115
+ '{
116
+ visitor_id: $visitor_id,
117
+ messages: (.messages // []),
118
+ total_messages: (.total_messages // (.messages | length))
119
+ }'
120
+
121
+ exit 0
@@ -1,156 +1,156 @@
1
- #!/bin/bash
2
- # CFN Marketing Chatbot Conversations - Qualify Lead Operation
3
- # Version: 1.0.0
4
- # Purpose: Score lead using BANT framework
5
-
6
- set -euo pipefail
7
-
8
- # Parse arguments
9
- VISITOR_ID=""
10
- BUDGET_SCORE=0
11
- AUTHORITY_SCORE=0
12
- NEED_SCORE=0
13
- TIMELINE_SCORE=0
14
-
15
- while [[ $# -gt 0 ]]; do
16
- case $1 in
17
- --visitor-id)
18
- VISITOR_ID="$2"
19
- shift 2
20
- ;;
21
- --budget)
22
- BUDGET_SCORE="$2"
23
- shift 2
24
- ;;
25
- --authority)
26
- AUTHORITY_SCORE="$2"
27
- shift 2
28
- ;;
29
- --need)
30
- NEED_SCORE="$2"
31
- shift 2
32
- ;;
33
- --timeline)
34
- TIMELINE_SCORE="$2"
35
- shift 2
36
- ;;
37
- *)
38
- echo '{"error": "Unknown parameter: '$1'", "code": "INVALID_PARAMETER"}' >&2
39
- exit 1
40
- ;;
41
- esac
42
- done
43
-
44
- # Validate required parameters
45
- if [[ -z "$VISITOR_ID" ]]; then
46
- echo '{"error": "Missing required parameter: --visitor-id", "code": "MISSING_PARAMETER"}' >&2
47
- exit 1
48
- fi
49
-
50
- # Validate score ranges
51
- if ! [[ "$BUDGET_SCORE" =~ ^[0-9]+$ ]] || [[ "$BUDGET_SCORE" -lt 0 ]] || [[ "$BUDGET_SCORE" -gt 40 ]]; then
52
- echo '{"error": "Invalid budget score. Must be between 0 and 40", "code": "INVALID_BUDGET"}' >&2
53
- exit 1
54
- fi
55
-
56
- if ! [[ "$AUTHORITY_SCORE" =~ ^[0-9]+$ ]] || [[ "$AUTHORITY_SCORE" -lt 0 ]] || [[ "$AUTHORITY_SCORE" -gt 20 ]]; then
57
- echo '{"error": "Invalid authority score. Must be between 0 and 20", "code": "INVALID_AUTHORITY"}' >&2
58
- exit 1
59
- fi
60
-
61
- if ! [[ "$NEED_SCORE" =~ ^[0-9]+$ ]] || [[ "$NEED_SCORE" -lt 0 ]] || [[ "$NEED_SCORE" -gt 20 ]]; then
62
- echo '{"error": "Invalid need score. Must be between 0 and 20", "code": "INVALID_NEED"}' >&2
63
- exit 1
64
- fi
65
-
66
- if ! [[ "$TIMELINE_SCORE" =~ ^[0-9]+$ ]] || [[ "$TIMELINE_SCORE" -lt 0 ]] || [[ "$TIMELINE_SCORE" -gt 20 ]]; then
67
- echo '{"error": "Invalid timeline score. Must be between 0 and 20", "code": "INVALID_TIMELINE"}' >&2
68
- exit 1
69
- fi
70
-
71
- # Calculate total BANT score
72
- TOTAL_SCORE=$((BUDGET_SCORE + AUTHORITY_SCORE + NEED_SCORE + TIMELINE_SCORE))
73
- THRESHOLD=60
74
-
75
- # Determine qualification status
76
- QUALIFIED="false"
77
- TIER="Unqualified"
78
- RECOMMENDATION="Continue nurturing"
79
-
80
- if [[ "$TOTAL_SCORE" -ge 80 ]]; then
81
- QUALIFIED="true"
82
- TIER="Hot Lead"
83
- RECOMMENDATION="Schedule demo immediately - high priority"
84
- elif [[ "$TOTAL_SCORE" -ge "$THRESHOLD" ]]; then
85
- QUALIFIED="true"
86
- TIER="MQL"
87
- RECOMMENDATION="Schedule demo within 24-48 hours"
88
- elif [[ "$TOTAL_SCORE" -ge 40 ]]; then
89
- QUALIFIED="false"
90
- TIER="Warm Lead"
91
- RECOMMENDATION="Continue conversation to gather more information"
92
- else
93
- QUALIFIED="false"
94
- TIER="Cold Lead"
95
- RECOMMENDATION="Add to nurture campaign"
96
- fi
97
-
98
- # Generate detailed recommendations based on weak areas
99
- IMPROVEMENTS=()
100
-
101
- if [[ "$BUDGET_SCORE" -lt 20 ]]; then
102
- IMPROVEMENTS+=("Discuss budget ranges and ROI")
103
- fi
104
-
105
- if [[ "$AUTHORITY_SCORE" -lt 10 ]]; then
106
- IMPROVEMENTS+=("Identify decision maker and approval process")
107
- fi
108
-
109
- if [[ "$NEED_SCORE" -lt 10 ]]; then
110
- IMPROVEMENTS+=("Clarify pain points and business impact")
111
- fi
112
-
113
- if [[ "$TIMELINE_SCORE" -lt 10 ]]; then
114
- IMPROVEMENTS+=("Understand urgency and implementation timeline")
115
- fi
116
-
117
- # Build improvements JSON array
118
- IMPROVEMENTS_JSON="[]"
119
- if [[ ${#IMPROVEMENTS[@]} -gt 0 ]]; then
120
- IMPROVEMENTS_JSON=$(printf '%s\n' "${IMPROVEMENTS[@]}" | jq -R . | jq -s .)
121
- fi
122
-
123
- # Store qualification in Redis (optional - for analytics)
124
- if command -v redis-cli &> /dev/null; then
125
- redis-cli SET "chatbot:qualification:${VISITOR_ID}" "$TOTAL_SCORE" EX 2592000 > /dev/null 2>&1 || true
126
- redis-cli SET "chatbot:tier:${VISITOR_ID}" "$TIER" EX 2592000 > /dev/null 2>&1 || true
127
- fi
128
-
129
- # Return qualification result
130
- jq -n \
131
- --arg visitor_id "$VISITOR_ID" \
132
- --argjson qualified "$QUALIFIED" \
133
- --arg score "$TOTAL_SCORE" \
134
- --arg tier "$TIER" \
135
- --arg budget "$BUDGET_SCORE" \
136
- --arg authority "$AUTHORITY_SCORE" \
137
- --arg need "$NEED_SCORE" \
138
- --arg timeline "$TIMELINE_SCORE" \
139
- --arg recommendation "$RECOMMENDATION" \
140
- --argjson improvements "$IMPROVEMENTS_JSON" \
141
- '{
142
- visitor_id: $visitor_id,
143
- qualified: $qualified,
144
- score: ($score | tonumber),
145
- tier: $tier,
146
- breakdown: {
147
- budget: ($budget | tonumber),
148
- authority: ($authority | tonumber),
149
- need: ($need | tonumber),
150
- timeline: ($timeline | tonumber)
151
- },
152
- recommendation: $recommendation,
153
- improvements: $improvements
154
- }'
155
-
156
- exit 0
1
+ #!/bin/bash
2
+ # CFN Marketing Chatbot Conversations - Qualify Lead Operation
3
+ # Version: 1.0.0
4
+ # Purpose: Score lead using BANT framework
5
+
6
+ set -euo pipefail
7
+
8
+ # Parse arguments
9
+ VISITOR_ID=""
10
+ BUDGET_SCORE=0
11
+ AUTHORITY_SCORE=0
12
+ NEED_SCORE=0
13
+ TIMELINE_SCORE=0
14
+
15
+ while [[ $# -gt 0 ]]; do
16
+ case $1 in
17
+ --visitor-id)
18
+ VISITOR_ID="$2"
19
+ shift 2
20
+ ;;
21
+ --budget)
22
+ BUDGET_SCORE="$2"
23
+ shift 2
24
+ ;;
25
+ --authority)
26
+ AUTHORITY_SCORE="$2"
27
+ shift 2
28
+ ;;
29
+ --need)
30
+ NEED_SCORE="$2"
31
+ shift 2
32
+ ;;
33
+ --timeline)
34
+ TIMELINE_SCORE="$2"
35
+ shift 2
36
+ ;;
37
+ *)
38
+ echo '{"error": "Unknown parameter: '$1'", "code": "INVALID_PARAMETER"}' >&2
39
+ exit 1
40
+ ;;
41
+ esac
42
+ done
43
+
44
+ # Validate required parameters
45
+ if [[ -z "$VISITOR_ID" ]]; then
46
+ echo '{"error": "Missing required parameter: --visitor-id", "code": "MISSING_PARAMETER"}' >&2
47
+ exit 1
48
+ fi
49
+
50
+ # Validate score ranges
51
+ if ! [[ "$BUDGET_SCORE" =~ ^[0-9]+$ ]] || [[ "$BUDGET_SCORE" -lt 0 ]] || [[ "$BUDGET_SCORE" -gt 40 ]]; then
52
+ echo '{"error": "Invalid budget score. Must be between 0 and 40", "code": "INVALID_BUDGET"}' >&2
53
+ exit 1
54
+ fi
55
+
56
+ if ! [[ "$AUTHORITY_SCORE" =~ ^[0-9]+$ ]] || [[ "$AUTHORITY_SCORE" -lt 0 ]] || [[ "$AUTHORITY_SCORE" -gt 20 ]]; then
57
+ echo '{"error": "Invalid authority score. Must be between 0 and 20", "code": "INVALID_AUTHORITY"}' >&2
58
+ exit 1
59
+ fi
60
+
61
+ if ! [[ "$NEED_SCORE" =~ ^[0-9]+$ ]] || [[ "$NEED_SCORE" -lt 0 ]] || [[ "$NEED_SCORE" -gt 20 ]]; then
62
+ echo '{"error": "Invalid need score. Must be between 0 and 20", "code": "INVALID_NEED"}' >&2
63
+ exit 1
64
+ fi
65
+
66
+ if ! [[ "$TIMELINE_SCORE" =~ ^[0-9]+$ ]] || [[ "$TIMELINE_SCORE" -lt 0 ]] || [[ "$TIMELINE_SCORE" -gt 20 ]]; then
67
+ echo '{"error": "Invalid timeline score. Must be between 0 and 20", "code": "INVALID_TIMELINE"}' >&2
68
+ exit 1
69
+ fi
70
+
71
+ # Calculate total BANT score
72
+ TOTAL_SCORE=$((BUDGET_SCORE + AUTHORITY_SCORE + NEED_SCORE + TIMELINE_SCORE))
73
+ THRESHOLD=60
74
+
75
+ # Determine qualification status
76
+ QUALIFIED="false"
77
+ TIER="Unqualified"
78
+ RECOMMENDATION="Continue nurturing"
79
+
80
+ if [[ "$TOTAL_SCORE" -ge 80 ]]; then
81
+ QUALIFIED="true"
82
+ TIER="Hot Lead"
83
+ RECOMMENDATION="Schedule demo immediately - high priority"
84
+ elif [[ "$TOTAL_SCORE" -ge "$THRESHOLD" ]]; then
85
+ QUALIFIED="true"
86
+ TIER="MQL"
87
+ RECOMMENDATION="Schedule demo within 24-48 hours"
88
+ elif [[ "$TOTAL_SCORE" -ge 40 ]]; then
89
+ QUALIFIED="false"
90
+ TIER="Warm Lead"
91
+ RECOMMENDATION="Continue conversation to gather more information"
92
+ else
93
+ QUALIFIED="false"
94
+ TIER="Cold Lead"
95
+ RECOMMENDATION="Add to nurture campaign"
96
+ fi
97
+
98
+ # Generate detailed recommendations based on weak areas
99
+ IMPROVEMENTS=()
100
+
101
+ if [[ "$BUDGET_SCORE" -lt 20 ]]; then
102
+ IMPROVEMENTS+=("Discuss budget ranges and ROI")
103
+ fi
104
+
105
+ if [[ "$AUTHORITY_SCORE" -lt 10 ]]; then
106
+ IMPROVEMENTS+=("Identify decision maker and approval process")
107
+ fi
108
+
109
+ if [[ "$NEED_SCORE" -lt 10 ]]; then
110
+ IMPROVEMENTS+=("Clarify pain points and business impact")
111
+ fi
112
+
113
+ if [[ "$TIMELINE_SCORE" -lt 10 ]]; then
114
+ IMPROVEMENTS+=("Understand urgency and implementation timeline")
115
+ fi
116
+
117
+ # Build improvements JSON array
118
+ IMPROVEMENTS_JSON="[]"
119
+ if [[ ${#IMPROVEMENTS[@]} -gt 0 ]]; then
120
+ IMPROVEMENTS_JSON=$(printf '%s\n' "${IMPROVEMENTS[@]}" | jq -R . | jq -s .)
121
+ fi
122
+
123
+ # Store qualification in Redis (optional - for analytics)
124
+ if command -v redis-cli &> /dev/null; then
125
+ redis-cli SET "chatbot:qualification:${VISITOR_ID}" "$TOTAL_SCORE" EX 2592000 > /dev/null 2>&1 || true
126
+ redis-cli SET "chatbot:tier:${VISITOR_ID}" "$TIER" EX 2592000 > /dev/null 2>&1 || true
127
+ fi
128
+
129
+ # Return qualification result
130
+ jq -n \
131
+ --arg visitor_id "$VISITOR_ID" \
132
+ --argjson qualified "$QUALIFIED" \
133
+ --arg score "$TOTAL_SCORE" \
134
+ --arg tier "$TIER" \
135
+ --arg budget "$BUDGET_SCORE" \
136
+ --arg authority "$AUTHORITY_SCORE" \
137
+ --arg need "$NEED_SCORE" \
138
+ --arg timeline "$TIMELINE_SCORE" \
139
+ --arg recommendation "$RECOMMENDATION" \
140
+ --argjson improvements "$IMPROVEMENTS_JSON" \
141
+ '{
142
+ visitor_id: $visitor_id,
143
+ qualified: $qualified,
144
+ score: ($score | tonumber),
145
+ tier: $tier,
146
+ breakdown: {
147
+ budget: ($budget | tonumber),
148
+ authority: ($authority | tonumber),
149
+ need: ($need | tonumber),
150
+ timeline: ($timeline | tonumber)
151
+ },
152
+ recommendation: $recommendation,
153
+ improvements: $improvements
154
+ }'
155
+
156
+ exit 0