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,190 +1,190 @@
1
- #!/bin/bash
2
- # CFN Marketing Ad Campaigns - Get Campaign Performance Operation
3
- # Fetches campaign performance metrics and analytics
4
-
5
- set -euo pipefail
6
-
7
- # Default values
8
- DATE_RANGE="last_7_days"
9
- METRICS="all"
10
- START_DATE=""
11
- END_DATE=""
12
-
13
- # Parse arguments
14
- while [[ $# -gt 0 ]]; do
15
- case $1 in
16
- --campaign-id)
17
- CAMPAIGN_ID="$2"
18
- shift 2
19
- ;;
20
- --date-range)
21
- DATE_RANGE="$2"
22
- shift 2
23
- ;;
24
- --start-date)
25
- START_DATE="$2"
26
- shift 2
27
- ;;
28
- --end-date)
29
- END_DATE="$2"
30
- shift 2
31
- ;;
32
- --metrics)
33
- METRICS="$2"
34
- shift 2
35
- ;;
36
- *)
37
- echo '{"error": "Unknown parameter: '"$1"'", "code": "INVALID_PARAMETER"}' >&2
38
- exit 1
39
- ;;
40
- esac
41
- done
42
-
43
- # Validate required parameters
44
- if [[ -z "${CAMPAIGN_ID:-}" ]]; then
45
- echo '{"error": "Missing required parameter: --campaign-id", "code": "MISSING_PARAMETER"}' >&2
46
- exit 1
47
- fi
48
-
49
- # Validate date range
50
- case "$DATE_RANGE" in
51
- last_7_days|last_30_days|custom)
52
- ;;
53
- *)
54
- echo '{"error": "Invalid date range: '"$DATE_RANGE"'. Supported: last_7_days, last_30_days, custom", "code": "INVALID_DATE_RANGE"}' >&2
55
- exit 1
56
- ;;
57
- esac
58
-
59
- # Validate custom date range
60
- if [[ "$DATE_RANGE" == "custom" ]]; then
61
- if [[ -z "$START_DATE" ]]; then
62
- echo '{"error": "Missing --start-date for custom date range", "code": "MISSING_PARAMETER"}' >&2
63
- exit 1
64
- fi
65
- if [[ -z "$END_DATE" ]]; then
66
- echo '{"error": "Missing --end-date for custom date range", "code": "MISSING_PARAMETER"}' >&2
67
- exit 1
68
- fi
69
-
70
- # Validate date format (YYYY-MM-DD)
71
- if ! [[ "$START_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
72
- echo '{"error": "Invalid start date format. Use YYYY-MM-DD", "code": "INVALID_DATE_FORMAT"}' >&2
73
- exit 1
74
- fi
75
- if ! [[ "$END_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
76
- echo '{"error": "Invalid end date format. Use YYYY-MM-DD", "code": "INVALID_DATE_FORMAT"}' >&2
77
- exit 1
78
- fi
79
- fi
80
-
81
- # Calculate date range for predefined options
82
- if [[ "$DATE_RANGE" == "last_7_days" ]]; then
83
- END_DATE=$(date +%Y-%m-%d)
84
- START_DATE=$(date -d "7 days ago" +%Y-%m-%d 2>/dev/null || date -v-7d +%Y-%m-%d)
85
- elif [[ "$DATE_RANGE" == "last_30_days" ]]; then
86
- END_DATE=$(date +%Y-%m-%d)
87
- START_DATE=$(date -d "30 days ago" +%Y-%m-%d 2>/dev/null || date -v-30d +%Y-%m-%d)
88
- fi
89
-
90
- # Validate environment variables
91
- if [[ -z "${N8N_BASE_URL:-}" ]]; then
92
- echo '{"error": "N8N_BASE_URL environment variable not set", "code": "MISSING_ENV_VAR"}' >&2
93
- exit 2
94
- fi
95
-
96
- if [[ -z "${N8N_API_KEY:-}" ]]; then
97
- echo '{"error": "N8N_API_KEY environment variable not set", "code": "MISSING_ENV_VAR"}' >&2
98
- exit 2
99
- fi
100
-
101
- # Build request payload
102
- PAYLOAD=$(jq -n \
103
- --arg id "$CAMPAIGN_ID" \
104
- --arg start "$START_DATE" \
105
- --arg end "$END_DATE" \
106
- --arg metrics "$METRICS" \
107
- '{
108
- campaign_id: $id,
109
- date_range: {
110
- start: $start,
111
- end: $end
112
- },
113
- metrics: (if $metrics == "all" then null else ($metrics | split(",")) end)
114
- }'
115
- )
116
-
117
- # Make API request
118
- RESPONSE=$(curl -s -w "\n%{http_code}" \
119
- -X POST \
120
- -H "Content-Type: application/json" \
121
- -H "X-N8N-API-KEY: $N8N_API_KEY" \
122
- -d "$PAYLOAD" \
123
- "$N8N_BASE_URL/webhook/ad-campaigns/performance" 2>/dev/null || echo -e "\n000")
124
-
125
- HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
126
- BODY=$(echo "$RESPONSE" | sed '$d')
127
-
128
- # Handle response
129
- case "$HTTP_CODE" in
130
- 200)
131
- # Success - parse and format response
132
- echo "$BODY" | jq \
133
- --arg id "$CAMPAIGN_ID" \
134
- --arg start "$START_DATE" \
135
- --arg end "$END_DATE" \
136
- '{
137
- campaign_id: (.campaign_id // $id),
138
- date_range: {
139
- start: (.date_range.start // $start),
140
- end: (.date_range.end // $end)
141
- },
142
- metrics: {
143
- impressions: (.metrics.impressions // 0),
144
- clicks: (.metrics.clicks // 0),
145
- conversions: (.metrics.conversions // 0),
146
- spend: (.metrics.spend // 0),
147
- ctr: (.metrics.ctr // 0),
148
- cpa: (.metrics.cpa // 0),
149
- roas: (.metrics.roas // 0),
150
- conversion_rate: (.metrics.conversion_rate // 0)
151
- },
152
- budget: {
153
- total: (.budget.total // .budget.lifetime_budget),
154
- spent: (.budget.spent // .metrics.spend // 0),
155
- remaining: (.budget.remaining // (.budget.total - .budget.spent))
156
- },
157
- status: (.status // "unknown"),
158
- platform: .platform
159
- }'
160
- exit 0
161
- ;;
162
- 400)
163
- echo '{"error": "Bad request - invalid performance query", "code": "API_BAD_REQUEST", "details": '"${BODY:-null}"'}' >&2
164
- exit 2
165
- ;;
166
- 401)
167
- echo '{"error": "Authentication failed - check N8N_API_KEY", "code": "API_AUTH_FAILED"}' >&2
168
- exit 2
169
- ;;
170
- 404)
171
- echo '{"error": "Campaign not found: '"$CAMPAIGN_ID"'", "code": "CAMPAIGN_NOT_FOUND"}' >&2
172
- exit 1
173
- ;;
174
- 429)
175
- echo '{"error": "Rate limit exceeded - try again later", "code": "API_RATE_LIMIT"}' >&2
176
- exit 2
177
- ;;
178
- 503)
179
- echo '{"error": "Performance data temporarily unavailable - try again later", "code": "SERVICE_UNAVAILABLE"}' >&2
180
- exit 2
181
- ;;
182
- 000)
183
- echo '{"error": "Network error - unable to reach N8N instance", "code": "NETWORK_ERROR"}' >&2
184
- exit 2
185
- ;;
186
- *)
187
- echo '{"error": "Unexpected API response", "code": "API_ERROR", "http_code": '"$HTTP_CODE"', "details": '"${BODY:-null}"'}' >&2
188
- exit 2
189
- ;;
190
- esac
1
+ #!/bin/bash
2
+ # CFN Marketing Ad Campaigns - Get Campaign Performance Operation
3
+ # Fetches campaign performance metrics and analytics
4
+
5
+ set -euo pipefail
6
+
7
+ # Default values
8
+ DATE_RANGE="last_7_days"
9
+ METRICS="all"
10
+ START_DATE=""
11
+ END_DATE=""
12
+
13
+ # Parse arguments
14
+ while [[ $# -gt 0 ]]; do
15
+ case $1 in
16
+ --campaign-id)
17
+ CAMPAIGN_ID="$2"
18
+ shift 2
19
+ ;;
20
+ --date-range)
21
+ DATE_RANGE="$2"
22
+ shift 2
23
+ ;;
24
+ --start-date)
25
+ START_DATE="$2"
26
+ shift 2
27
+ ;;
28
+ --end-date)
29
+ END_DATE="$2"
30
+ shift 2
31
+ ;;
32
+ --metrics)
33
+ METRICS="$2"
34
+ shift 2
35
+ ;;
36
+ *)
37
+ echo '{"error": "Unknown parameter: '"$1"'", "code": "INVALID_PARAMETER"}' >&2
38
+ exit 1
39
+ ;;
40
+ esac
41
+ done
42
+
43
+ # Validate required parameters
44
+ if [[ -z "${CAMPAIGN_ID:-}" ]]; then
45
+ echo '{"error": "Missing required parameter: --campaign-id", "code": "MISSING_PARAMETER"}' >&2
46
+ exit 1
47
+ fi
48
+
49
+ # Validate date range
50
+ case "$DATE_RANGE" in
51
+ last_7_days|last_30_days|custom)
52
+ ;;
53
+ *)
54
+ echo '{"error": "Invalid date range: '"$DATE_RANGE"'. Supported: last_7_days, last_30_days, custom", "code": "INVALID_DATE_RANGE"}' >&2
55
+ exit 1
56
+ ;;
57
+ esac
58
+
59
+ # Validate custom date range
60
+ if [[ "$DATE_RANGE" == "custom" ]]; then
61
+ if [[ -z "$START_DATE" ]]; then
62
+ echo '{"error": "Missing --start-date for custom date range", "code": "MISSING_PARAMETER"}' >&2
63
+ exit 1
64
+ fi
65
+ if [[ -z "$END_DATE" ]]; then
66
+ echo '{"error": "Missing --end-date for custom date range", "code": "MISSING_PARAMETER"}' >&2
67
+ exit 1
68
+ fi
69
+
70
+ # Validate date format (YYYY-MM-DD)
71
+ if ! [[ "$START_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
72
+ echo '{"error": "Invalid start date format. Use YYYY-MM-DD", "code": "INVALID_DATE_FORMAT"}' >&2
73
+ exit 1
74
+ fi
75
+ if ! [[ "$END_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
76
+ echo '{"error": "Invalid end date format. Use YYYY-MM-DD", "code": "INVALID_DATE_FORMAT"}' >&2
77
+ exit 1
78
+ fi
79
+ fi
80
+
81
+ # Calculate date range for predefined options
82
+ if [[ "$DATE_RANGE" == "last_7_days" ]]; then
83
+ END_DATE=$(date +%Y-%m-%d)
84
+ START_DATE=$(date -d "7 days ago" +%Y-%m-%d 2>/dev/null || date -v-7d +%Y-%m-%d)
85
+ elif [[ "$DATE_RANGE" == "last_30_days" ]]; then
86
+ END_DATE=$(date +%Y-%m-%d)
87
+ START_DATE=$(date -d "30 days ago" +%Y-%m-%d 2>/dev/null || date -v-30d +%Y-%m-%d)
88
+ fi
89
+
90
+ # Validate environment variables
91
+ if [[ -z "${N8N_BASE_URL:-}" ]]; then
92
+ echo '{"error": "N8N_BASE_URL environment variable not set", "code": "MISSING_ENV_VAR"}' >&2
93
+ exit 2
94
+ fi
95
+
96
+ if [[ -z "${N8N_API_KEY:-}" ]]; then
97
+ echo '{"error": "N8N_API_KEY environment variable not set", "code": "MISSING_ENV_VAR"}' >&2
98
+ exit 2
99
+ fi
100
+
101
+ # Build request payload
102
+ PAYLOAD=$(jq -n \
103
+ --arg id "$CAMPAIGN_ID" \
104
+ --arg start "$START_DATE" \
105
+ --arg end "$END_DATE" \
106
+ --arg metrics "$METRICS" \
107
+ '{
108
+ campaign_id: $id,
109
+ date_range: {
110
+ start: $start,
111
+ end: $end
112
+ },
113
+ metrics: (if $metrics == "all" then null else ($metrics | split(",")) end)
114
+ }'
115
+ )
116
+
117
+ # Make API request
118
+ RESPONSE=$(curl -s -w "\n%{http_code}" \
119
+ -X POST \
120
+ -H "Content-Type: application/json" \
121
+ -H "X-N8N-API-KEY: $N8N_API_KEY" \
122
+ -d "$PAYLOAD" \
123
+ "$N8N_BASE_URL/webhook/ad-campaigns/performance" 2>/dev/null || echo -e "\n000")
124
+
125
+ HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
126
+ BODY=$(echo "$RESPONSE" | sed '$d')
127
+
128
+ # Handle response
129
+ case "$HTTP_CODE" in
130
+ 200)
131
+ # Success - parse and format response
132
+ echo "$BODY" | jq \
133
+ --arg id "$CAMPAIGN_ID" \
134
+ --arg start "$START_DATE" \
135
+ --arg end "$END_DATE" \
136
+ '{
137
+ campaign_id: (.campaign_id // $id),
138
+ date_range: {
139
+ start: (.date_range.start // $start),
140
+ end: (.date_range.end // $end)
141
+ },
142
+ metrics: {
143
+ impressions: (.metrics.impressions // 0),
144
+ clicks: (.metrics.clicks // 0),
145
+ conversions: (.metrics.conversions // 0),
146
+ spend: (.metrics.spend // 0),
147
+ ctr: (.metrics.ctr // 0),
148
+ cpa: (.metrics.cpa // 0),
149
+ roas: (.metrics.roas // 0),
150
+ conversion_rate: (.metrics.conversion_rate // 0)
151
+ },
152
+ budget: {
153
+ total: (.budget.total // .budget.lifetime_budget),
154
+ spent: (.budget.spent // .metrics.spend // 0),
155
+ remaining: (.budget.remaining // (.budget.total - .budget.spent))
156
+ },
157
+ status: (.status // "unknown"),
158
+ platform: .platform
159
+ }'
160
+ exit 0
161
+ ;;
162
+ 400)
163
+ echo '{"error": "Bad request - invalid performance query", "code": "API_BAD_REQUEST", "details": '"${BODY:-null}"'}' >&2
164
+ exit 2
165
+ ;;
166
+ 401)
167
+ echo '{"error": "Authentication failed - check N8N_API_KEY", "code": "API_AUTH_FAILED"}' >&2
168
+ exit 2
169
+ ;;
170
+ 404)
171
+ echo '{"error": "Campaign not found: '"$CAMPAIGN_ID"'", "code": "CAMPAIGN_NOT_FOUND"}' >&2
172
+ exit 1
173
+ ;;
174
+ 429)
175
+ echo '{"error": "Rate limit exceeded - try again later", "code": "API_RATE_LIMIT"}' >&2
176
+ exit 2
177
+ ;;
178
+ 503)
179
+ echo '{"error": "Performance data temporarily unavailable - try again later", "code": "SERVICE_UNAVAILABLE"}' >&2
180
+ exit 2
181
+ ;;
182
+ 000)
183
+ echo '{"error": "Network error - unable to reach N8N instance", "code": "NETWORK_ERROR"}' >&2
184
+ exit 2
185
+ ;;
186
+ *)
187
+ echo '{"error": "Unexpected API response", "code": "API_ERROR", "http_code": '"$HTTP_CODE"', "details": '"${BODY:-null}"'}' >&2
188
+ exit 2
189
+ ;;
190
+ esac
@@ -1,142 +1,142 @@
1
- #!/bin/bash
2
- # CFN Marketing Ad Campaigns - Pause/Resume Campaign Operation
3
- # Controls campaign active status
4
-
5
- set -euo pipefail
6
-
7
- # Parse arguments
8
- while [[ $# -gt 0 ]]; do
9
- case $1 in
10
- --campaign-id)
11
- CAMPAIGN_ID="$2"
12
- shift 2
13
- ;;
14
- --action)
15
- ACTION="$2"
16
- shift 2
17
- ;;
18
- *)
19
- echo '{"error": "Unknown parameter: '"$1"'", "code": "INVALID_PARAMETER"}' >&2
20
- exit 1
21
- ;;
22
- esac
23
- done
24
-
25
- # Validate required parameters
26
- if [[ -z "${CAMPAIGN_ID:-}" ]]; then
27
- echo '{"error": "Missing required parameter: --campaign-id", "code": "MISSING_PARAMETER"}' >&2
28
- exit 1
29
- fi
30
-
31
- if [[ -z "${ACTION:-}" ]]; then
32
- echo '{"error": "Missing required parameter: --action", "code": "MISSING_PARAMETER"}' >&2
33
- exit 1
34
- fi
35
-
36
- # Validate action
37
- case "$ACTION" in
38
- pause|resume)
39
- ;;
40
- *)
41
- echo '{"error": "Invalid action: '"$ACTION"'. Supported: pause, resume", "code": "INVALID_ACTION"}' >&2
42
- exit 1
43
- ;;
44
- esac
45
-
46
- # Validate environment variables
47
- if [[ -z "${N8N_BASE_URL:-}" ]]; then
48
- echo '{"error": "N8N_BASE_URL environment variable not set", "code": "MISSING_ENV_VAR"}' >&2
49
- exit 2
50
- fi
51
-
52
- if [[ -z "${N8N_API_KEY:-}" ]]; then
53
- echo '{"error": "N8N_API_KEY environment variable not set", "code": "MISSING_ENV_VAR"}' >&2
54
- exit 2
55
- fi
56
-
57
- # Build request payload
58
- PAYLOAD=$(jq -n \
59
- --arg id "$CAMPAIGN_ID" \
60
- --arg action "$ACTION" \
61
- '{
62
- campaign_id: $id,
63
- action: $action
64
- }'
65
- )
66
-
67
- # Make API request
68
- RESPONSE=$(curl -s -w "\n%{http_code}" \
69
- -X PATCH \
70
- -H "Content-Type: application/json" \
71
- -H "X-N8N-API-KEY: $N8N_API_KEY" \
72
- -d "$PAYLOAD" \
73
- "$N8N_BASE_URL/webhook/ad-campaigns/status" 2>/dev/null || echo -e "\n000")
74
-
75
- HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
76
- BODY=$(echo "$RESPONSE" | sed '$d')
77
-
78
- # Determine expected status
79
- if [[ "$ACTION" == "pause" ]]; then
80
- EXPECTED_STATUS="paused"
81
- TIMESTAMP_FIELD="paused_at"
82
- else
83
- EXPECTED_STATUS="active"
84
- TIMESTAMP_FIELD="resumed_at"
85
- fi
86
-
87
- # Handle response
88
- case "$HTTP_CODE" in
89
- 200)
90
- # Success - parse and format response
91
- CURRENT_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
92
-
93
- echo "$BODY" | jq \
94
- --arg id "$CAMPAIGN_ID" \
95
- --arg status "$EXPECTED_STATUS" \
96
- --arg timestamp_field "$TIMESTAMP_FIELD" \
97
- --arg timestamp "$CURRENT_TIME" \
98
- '{
99
- campaign_id: (.campaign_id // $id),
100
- status: (.status // $status),
101
- ($timestamp_field): (.[$timestamp_field] // $timestamp),
102
- budget_remaining: .budget_remaining,
103
- daily_budget: .daily_budget,
104
- lifetime_budget: .lifetime_budget
105
- }'
106
- exit 0
107
- ;;
108
- 400)
109
- echo '{"error": "Bad request - invalid status change", "code": "API_BAD_REQUEST", "details": '"${BODY:-null}"'}' >&2
110
- exit 2
111
- ;;
112
- 401)
113
- echo '{"error": "Authentication failed - check N8N_API_KEY", "code": "API_AUTH_FAILED"}' >&2
114
- exit 2
115
- ;;
116
- 404)
117
- echo '{"error": "Campaign not found: '"$CAMPAIGN_ID"'", "code": "CAMPAIGN_NOT_FOUND"}' >&2
118
- exit 1
119
- ;;
120
- 409)
121
- # Campaign already in requested state
122
- if [[ "$ACTION" == "pause" ]]; then
123
- MSG="Campaign already paused"
124
- else
125
- MSG="Campaign already active"
126
- fi
127
- echo '{"error": "'"$MSG"'", "code": "INVALID_STATE_TRANSITION", "details": '"${BODY:-null}"'}' >&2
128
- exit 1
129
- ;;
130
- 429)
131
- echo '{"error": "Rate limit exceeded - try again later", "code": "API_RATE_LIMIT"}' >&2
132
- exit 2
133
- ;;
134
- 000)
135
- echo '{"error": "Network error - unable to reach N8N instance", "code": "NETWORK_ERROR"}' >&2
136
- exit 2
137
- ;;
138
- *)
139
- echo '{"error": "Unexpected API response", "code": "API_ERROR", "http_code": '"$HTTP_CODE"', "details": '"${BODY:-null}"'}' >&2
140
- exit 2
141
- ;;
142
- esac
1
+ #!/bin/bash
2
+ # CFN Marketing Ad Campaigns - Pause/Resume Campaign Operation
3
+ # Controls campaign active status
4
+
5
+ set -euo pipefail
6
+
7
+ # Parse arguments
8
+ while [[ $# -gt 0 ]]; do
9
+ case $1 in
10
+ --campaign-id)
11
+ CAMPAIGN_ID="$2"
12
+ shift 2
13
+ ;;
14
+ --action)
15
+ ACTION="$2"
16
+ shift 2
17
+ ;;
18
+ *)
19
+ echo '{"error": "Unknown parameter: '"$1"'", "code": "INVALID_PARAMETER"}' >&2
20
+ exit 1
21
+ ;;
22
+ esac
23
+ done
24
+
25
+ # Validate required parameters
26
+ if [[ -z "${CAMPAIGN_ID:-}" ]]; then
27
+ echo '{"error": "Missing required parameter: --campaign-id", "code": "MISSING_PARAMETER"}' >&2
28
+ exit 1
29
+ fi
30
+
31
+ if [[ -z "${ACTION:-}" ]]; then
32
+ echo '{"error": "Missing required parameter: --action", "code": "MISSING_PARAMETER"}' >&2
33
+ exit 1
34
+ fi
35
+
36
+ # Validate action
37
+ case "$ACTION" in
38
+ pause|resume)
39
+ ;;
40
+ *)
41
+ echo '{"error": "Invalid action: '"$ACTION"'. Supported: pause, resume", "code": "INVALID_ACTION"}' >&2
42
+ exit 1
43
+ ;;
44
+ esac
45
+
46
+ # Validate environment variables
47
+ if [[ -z "${N8N_BASE_URL:-}" ]]; then
48
+ echo '{"error": "N8N_BASE_URL environment variable not set", "code": "MISSING_ENV_VAR"}' >&2
49
+ exit 2
50
+ fi
51
+
52
+ if [[ -z "${N8N_API_KEY:-}" ]]; then
53
+ echo '{"error": "N8N_API_KEY environment variable not set", "code": "MISSING_ENV_VAR"}' >&2
54
+ exit 2
55
+ fi
56
+
57
+ # Build request payload
58
+ PAYLOAD=$(jq -n \
59
+ --arg id "$CAMPAIGN_ID" \
60
+ --arg action "$ACTION" \
61
+ '{
62
+ campaign_id: $id,
63
+ action: $action
64
+ }'
65
+ )
66
+
67
+ # Make API request
68
+ RESPONSE=$(curl -s -w "\n%{http_code}" \
69
+ -X PATCH \
70
+ -H "Content-Type: application/json" \
71
+ -H "X-N8N-API-KEY: $N8N_API_KEY" \
72
+ -d "$PAYLOAD" \
73
+ "$N8N_BASE_URL/webhook/ad-campaigns/status" 2>/dev/null || echo -e "\n000")
74
+
75
+ HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
76
+ BODY=$(echo "$RESPONSE" | sed '$d')
77
+
78
+ # Determine expected status
79
+ if [[ "$ACTION" == "pause" ]]; then
80
+ EXPECTED_STATUS="paused"
81
+ TIMESTAMP_FIELD="paused_at"
82
+ else
83
+ EXPECTED_STATUS="active"
84
+ TIMESTAMP_FIELD="resumed_at"
85
+ fi
86
+
87
+ # Handle response
88
+ case "$HTTP_CODE" in
89
+ 200)
90
+ # Success - parse and format response
91
+ CURRENT_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
92
+
93
+ echo "$BODY" | jq \
94
+ --arg id "$CAMPAIGN_ID" \
95
+ --arg status "$EXPECTED_STATUS" \
96
+ --arg timestamp_field "$TIMESTAMP_FIELD" \
97
+ --arg timestamp "$CURRENT_TIME" \
98
+ '{
99
+ campaign_id: (.campaign_id // $id),
100
+ status: (.status // $status),
101
+ ($timestamp_field): (.[$timestamp_field] // $timestamp),
102
+ budget_remaining: .budget_remaining,
103
+ daily_budget: .daily_budget,
104
+ lifetime_budget: .lifetime_budget
105
+ }'
106
+ exit 0
107
+ ;;
108
+ 400)
109
+ echo '{"error": "Bad request - invalid status change", "code": "API_BAD_REQUEST", "details": '"${BODY:-null}"'}' >&2
110
+ exit 2
111
+ ;;
112
+ 401)
113
+ echo '{"error": "Authentication failed - check N8N_API_KEY", "code": "API_AUTH_FAILED"}' >&2
114
+ exit 2
115
+ ;;
116
+ 404)
117
+ echo '{"error": "Campaign not found: '"$CAMPAIGN_ID"'", "code": "CAMPAIGN_NOT_FOUND"}' >&2
118
+ exit 1
119
+ ;;
120
+ 409)
121
+ # Campaign already in requested state
122
+ if [[ "$ACTION" == "pause" ]]; then
123
+ MSG="Campaign already paused"
124
+ else
125
+ MSG="Campaign already active"
126
+ fi
127
+ echo '{"error": "'"$MSG"'", "code": "INVALID_STATE_TRANSITION", "details": '"${BODY:-null}"'}' >&2
128
+ exit 1
129
+ ;;
130
+ 429)
131
+ echo '{"error": "Rate limit exceeded - try again later", "code": "API_RATE_LIMIT"}' >&2
132
+ exit 2
133
+ ;;
134
+ 000)
135
+ echo '{"error": "Network error - unable to reach N8N instance", "code": "NETWORK_ERROR"}' >&2
136
+ exit 2
137
+ ;;
138
+ *)
139
+ echo '{"error": "Unexpected API response", "code": "API_ERROR", "http_code": '"$HTTP_CODE"', "details": '"${BODY:-null}"'}' >&2
140
+ exit 2
141
+ ;;
142
+ esac