claude-flow-novice 2.15.0 → 2.15.1

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 (601) hide show
  1. package/.claude/cfn-extras/agents/cfn-coordinator-enterprise.md +1303 -0
  2. package/.claude/cfn-extras/agents/cfn-coordinator-mvp.md +942 -0
  3. package/.claude/cfn-extras/agents/cfn-coordinator-standard.md +1062 -0
  4. package/.claude/cfn-extras/agents/cfn-loop-coordinator.md +157 -0
  5. package/.claude/cfn-extras/agents/coordinator.md +182 -0
  6. package/.claude/cfn-extras/agents/cost-savings-cfn-loop-coordinator.md +760 -0
  7. package/.claude/cfn-extras/agents/cost-savings-coordinator.md +173 -0
  8. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator-enhanced.md +147 -0
  9. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md +162 -0
  10. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +161 -0
  11. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md +729 -0
  12. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +728 -0
  13. package/.claude/cfn-extras/agents/deprecated-coordinators/byzantine-coordinator.md +100 -0
  14. package/.claude/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-enterprise.md +323 -0
  15. package/.claude/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-mvp.md +157 -0
  16. package/.claude/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-standard.md +229 -0
  17. package/.claude/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-unified.md +149 -0
  18. package/.claude/cfn-extras/agents/deprecated-coordinators/coordinator-hybrid.md +231 -0
  19. package/.claude/cfn-extras/agents/deprecated-coordinators/gossip-coordinator.md +165 -0
  20. package/.claude/cfn-extras/agents/deprecated-coordinators/hierarchical-coordinator.md +95 -0
  21. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md +132 -0
  22. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +131 -0
  23. package/.claude/cfn-extras/agents/deprecated-coordinators/task-coordinator.md +109 -0
  24. package/.claude/cfn-extras/agents/deprecated-coordinators/test-coordinator.md +142 -0
  25. package/.claude/commands/cfn-docker/CFN_DOCKER_NATIVE.md +295 -0
  26. package/.claude/commands/cfn-docker-core-test-suite.md +326 -0
  27. package/.claude/commands/cfn-loop-cli.md +1 -1
  28. package/.claude/commands/switch-api.md +20 -6
  29. package/.claude/root-claude-distribute/CFN-CLAUDE.md +177 -426
  30. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +27 -18
  31. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +763 -38
  32. package/.claude/skills/cfn-docker-redis-coordination/coordinate.sh +25 -10
  33. package/.claude/skills/cfn-docker-redis-coordination/coordinate.sh.backup-1763145142 +641 -0
  34. package/.claude/skills/cfn-docker-skill-mcp-selection/skill-mcp-selector.js +471 -471
  35. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +52 -23
  36. package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +3 -3
  37. package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
  38. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +9 -0
  39. package/.claude/skills/cfn-redis-coordination/report-completion.sh +7 -7
  40. package/claude-assets/agents/cfn-dev-team/architecture/api-designer-persona.md +2 -0
  41. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +2 -0
  42. package/claude-assets/agents/cfn-dev-team/architecture/planner.md +2 -0
  43. package/claude-assets/agents/cfn-dev-team/architecture/system-architect.md +2 -0
  44. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +419 -563
  45. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +2 -0
  46. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +2 -0
  47. package/claude-assets/agents/cfn-dev-team/documentation/README-VALIDATION.md +2 -0
  48. package/claude-assets/agents/cfn-dev-team/documentation/agent-type-guidelines.md +2 -0
  49. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +1 -1
  50. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +1 -1
  51. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +2 -0
  52. package/claude-assets/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +2 -0
  53. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +2 -0
  54. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +1 -1
  55. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  56. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +2 -0
  57. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +2 -0
  58. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +2 -0
  59. package/claude-assets/agents/cfn-dev-team/testers/unit/tdd-london-unit-swarm.md +4 -0
  60. package/claude-assets/agents/cfn-dev-team/testers/validation/validation-production-validator.md +1 -1
  61. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +825 -17
  62. package/claude-assets/agents/docker-team/micro-sprint-planner.md +747 -0
  63. package/claude-assets/agents/docker-ts-fixer.md +56 -0
  64. package/claude-assets/agents/typescript-specialist.md +280 -0
  65. package/claude-assets/cfn-extras/agents/cfn-coordinator-enterprise.md +1303 -0
  66. package/claude-assets/cfn-extras/agents/cfn-coordinator-mvp.md +942 -0
  67. package/claude-assets/cfn-extras/agents/cfn-coordinator-standard.md +1062 -0
  68. package/claude-assets/cfn-extras/agents/cfn-loop-coordinator.md +157 -0
  69. package/claude-assets/cfn-extras/agents/coordinator.md +182 -0
  70. package/claude-assets/cfn-extras/agents/cost-savings-cfn-loop-coordinator.md +760 -0
  71. package/claude-assets/cfn-extras/agents/cost-savings-coordinator.md +173 -0
  72. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator-enhanced.md +147 -0
  73. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md +162 -0
  74. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +161 -0
  75. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md +729 -0
  76. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +728 -0
  77. package/claude-assets/cfn-extras/agents/deprecated-coordinators/byzantine-coordinator.md +100 -0
  78. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-enterprise.md +323 -0
  79. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-mvp.md +157 -0
  80. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-standard.md +229 -0
  81. package/claude-assets/cfn-extras/agents/deprecated-coordinators/cfn-coordinator-unified.md +149 -0
  82. package/claude-assets/cfn-extras/agents/deprecated-coordinators/coordinator-hybrid.md +231 -0
  83. package/claude-assets/cfn-extras/agents/deprecated-coordinators/gossip-coordinator.md +165 -0
  84. package/claude-assets/cfn-extras/agents/deprecated-coordinators/hierarchical-coordinator.md +95 -0
  85. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md +132 -0
  86. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +131 -0
  87. package/claude-assets/cfn-extras/agents/deprecated-coordinators/task-coordinator.md +109 -0
  88. package/claude-assets/cfn-extras/agents/deprecated-coordinators/test-coordinator.md +142 -0
  89. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/SKILL.md +36 -0
  90. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +60 -0
  91. package/claude-assets/cfn-extras/skills/advanced-features/cfn-api-validation/test-endpoints.sh +54 -0
  92. package/claude-assets/cfn-extras/skills/advanced-features/cfn-context-pruner/SKILL.md +75 -0
  93. package/claude-assets/cfn-extras/skills/advanced-features/cfn-context-pruner/prune-context.sh +73 -0
  94. package/claude-assets/cfn-extras/skills/advanced-features/cfn-task-mode-safety/cli-coordination.sh +519 -0
  95. package/claude-assets/cfn-extras/skills/advanced-features/cfn-task-mode-safety/mode-detection.sh +326 -0
  96. package/claude-assets/cfn-extras/skills/advanced-features/cfn-task-mode-sanitize/task-mode-env-sanitizer.sh +267 -0
  97. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/SKILL.md +33 -0
  98. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +92 -0
  99. package/claude-assets/cfn-extras/skills/analytics/cfn-memory-monitoring/SKILL.md +531 -0
  100. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/SKILL.md +30 -0
  101. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +80 -0
  102. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/SKILL.md +31 -0
  103. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +101 -0
  104. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/collect-metrics.sh +249 -0
  105. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +111 -0
  106. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +192 -0
  107. package/claude-assets/cfn-extras/skills/deprecated/cfn-simplified-agent-lifecycle/COST_ANALYSIS.md +49 -0
  108. package/claude-assets/cfn-extras/skills/deprecated/cfn-simplified-agent-lifecycle/DESIGN.md +98 -0
  109. package/claude-assets/cfn-extras/skills/deprecated/cfn-simplified-agent-lifecycle/MIGRATION_PLAN.md +74 -0
  110. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/SKILL.md +392 -0
  111. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -0
  112. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -0
  113. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -0
  114. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -0
  115. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -0
  116. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/SKILL.md +124 -0
  117. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-ad-performance.sh +105 -0
  118. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-conversion-funnel.sh +102 -0
  119. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-email-performance.sh +105 -0
  120. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-social-engagement.sh +105 -0
  121. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-analytics-data/operations/get-website-traffic.sh +107 -0
  122. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/SKILL.md +340 -0
  123. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -0
  124. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -0
  125. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -0
  126. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -0
  127. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -0
  128. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/SKILL.md +350 -0
  129. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-backlink-profile.sh +154 -0
  130. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-keyword-rankings.sh +173 -0
  131. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/get-trending-topics.sh +147 -0
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/monitor-competitor.sh +146 -0
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-competitive-intel/operations/search-brand-mentions.sh +167 -0
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/SKILL.md +116 -0
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/add-to-segment.sh +78 -0
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/create-contact.sh +113 -0
  137. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/get-contact.sh +86 -0
  138. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/remove-from-segment.sh +78 -0
  139. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-crm-contacts/operations/update-contact.sh +120 -0
  140. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/SKILL.md +106 -0
  141. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/create-campaign.sh +123 -0
  142. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/get-campaign-stats.sh +66 -0
  143. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/list-templates.sh +68 -0
  144. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/schedule-campaign.sh +85 -0
  145. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-email-campaigns/operations/send-test-email.sh +81 -0
  146. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/SKILL.md +366 -0
  147. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/create-ab-test.sh +231 -0
  148. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/create-landing-page.sh +190 -0
  149. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/get-page-performance.sh +137 -0
  150. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/publish-page.sh +120 -0
  151. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-landing-pages/operations/unpublish-page.sh +108 -0
  152. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/SKILL.md +202 -0
  153. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/create-crisis-alert.sh +104 -0
  154. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/export-report.sh +92 -0
  155. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/get-sentiment-analysis.sh +85 -0
  156. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-monitoring/operations/search-mentions.sh +86 -0
  157. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/SKILL.md +168 -0
  158. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/search-journalists.sh +74 -0
  159. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/send-pitch.sh +80 -0
  160. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/submit-haro-response.sh +88 -0
  161. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-media-outreach/operations/track-pitch-engagement.sh +66 -0
  162. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/SKILL.md +159 -0
  163. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/distribute-press-release.sh +94 -0
  164. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/get-distribution-status.sh +59 -0
  165. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/get-pickup-metrics.sh +72 -0
  166. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-press-distribution/operations/list-templates.sh +53 -0
  167. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/SKILL.md +429 -0
  168. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -0
  169. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -0
  170. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -0
  171. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -0
  172. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -0
  173. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/SKILL.md +108 -0
  174. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/create-post.sh +104 -0
  175. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/delete-post.sh +76 -0
  176. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/get-post-stats.sh +66 -0
  177. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/schedule-post.sh +85 -0
  178. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-social-publishing/operations/upload-media.sh +88 -0
  179. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/DESIGN.md +117 -0
  180. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/SKILL.md +679 -0
  181. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-agents.sh +129 -0
  182. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-dashboard.sh +85 -0
  183. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-events.sh +125 -0
  184. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-metrics.sh +112 -0
  185. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-start.sh +135 -0
  186. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/invoke-portal-stop.sh +121 -0
  187. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +51 -0
  188. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +85 -0
  189. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/SKILL.md +200 -0
  190. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +244 -0
  191. package/claude-assets/cfn-extras/skills/utility/cfn-process-instrumentation/SKILL.md +279 -0
  192. package/claude-assets/cfn-extras/skills/utility/cfn-process-instrumentation/instrument-process.sh +327 -0
  193. package/claude-assets/commands/cfn-docker/CFN_DOCKER_NATIVE.md +295 -0
  194. package/claude-assets/commands/cfn-docker-core-test-suite.md +326 -0
  195. package/claude-assets/commands/cfn-loop-cli.md +1 -1
  196. package/claude-assets/commands/switch-api.md +20 -6
  197. package/claude-assets/root-claude-distribute/CFN-CLAUDE.md +177 -426
  198. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +27 -18
  199. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +763 -38
  200. package/claude-assets/skills/cfn-docker-redis-coordination/coordinate.sh +25 -10
  201. package/claude-assets/skills/cfn-docker-redis-coordination/coordinate.sh.backup-1763145142 +641 -0
  202. package/claude-assets/skills/cfn-docker-skill-mcp-selection/skill-mcp-selector.js +471 -471
  203. package/claude-assets/skills/cfn-docker-wave-execution/SKILL.md +936 -0
  204. package/claude-assets/skills/cfn-docker-wave-execution/cleanup-wave.sh +445 -0
  205. package/claude-assets/skills/cfn-docker-wave-execution/lib/docker-helpers.sh +804 -0
  206. package/claude-assets/skills/cfn-docker-wave-execution/monitor-wave.sh +485 -0
  207. package/claude-assets/skills/cfn-docker-wave-execution/spawn-wave.sh +547 -0
  208. package/claude-assets/skills/cfn-error-batching-strategy/README.md +323 -0
  209. package/claude-assets/skills/cfn-error-batching-strategy/SKILL.md +1016 -0
  210. package/claude-assets/skills/cfn-error-batching-strategy/analyze-errors.sh +327 -0
  211. package/claude-assets/skills/cfn-error-batching-strategy/calculate-waves.sh +256 -0
  212. package/claude-assets/skills/cfn-error-batching-strategy/cli.sh +523 -0
  213. package/claude-assets/skills/cfn-error-batching-strategy/cluster-files.sh +196 -0
  214. package/claude-assets/skills/cfn-error-batching-strategy/create-batches.sh +261 -0
  215. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -0
  216. package/claude-assets/skills/cfn-error-batching-strategy/templates/default-tiers.json +22 -0
  217. package/claude-assets/skills/cfn-error-batching-strategy/tests/test-batching-strategy.sh +498 -0
  218. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +52 -23
  219. package/claude-assets/skills/cfn-redis-coordination/complete-swarm.sh +3 -3
  220. package/claude-assets/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
  221. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +9 -0
  222. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +7 -7
  223. package/claude-assets/skills/cfn-wave-checkpoint/SKILL.md +333 -0
  224. package/claude-assets/skills/cfn-wave-checkpoint/cleanup-orphans.sh +374 -0
  225. package/claude-assets/skills/cfn-wave-checkpoint/resume-wave.sh +325 -0
  226. package/claude-assets/skills/cfn-wave-checkpoint/save-checkpoint.sh +284 -0
  227. package/claude-assets/skills/docker-build/SKILL.md +203 -0
  228. package/claude-assets/skills/docker-build/build.sh +73 -0
  229. package/dist/agent/skill-mcp-selector.js +1 -1
  230. package/dist/agent/skill-mcp-selector.js.map +1 -1
  231. package/dist/agents/agent-loader.js +146 -165
  232. package/dist/agents/agent-loader.js.map +1 -1
  233. package/dist/cli/agent-definition-parser.js +36 -16
  234. package/dist/cli/agent-definition-parser.js.map +1 -1
  235. package/dist/cli/agent-executor.js +48 -13
  236. package/dist/cli/agent-executor.js.map +1 -1
  237. package/dist/cli/agent-prompt-builder.js +28 -2
  238. package/dist/cli/agent-prompt-builder.js.map +1 -1
  239. package/dist/cli/agent-spawn.js +57 -18
  240. package/dist/cli/agent-spawn.js.map +1 -1
  241. package/dist/cli/agent-token-manager.js +5 -1
  242. package/dist/cli/agent-token-manager.js.map +1 -1
  243. package/dist/cli/anthropic-client.js +35 -4
  244. package/dist/cli/anthropic-client.js.map +1 -1
  245. package/dist/cli/cfn-context.js +9 -6
  246. package/dist/cli/cfn-context.js.map +1 -1
  247. package/dist/cli/cfn-metrics.js +8 -1
  248. package/dist/cli/cfn-metrics.js.map +1 -1
  249. package/dist/cli/cfn-redis.js +7 -0
  250. package/dist/cli/cfn-redis.js.map +1 -1
  251. package/dist/cli/conversation-fork.js +14 -11
  252. package/dist/cli/conversation-fork.js.map +1 -1
  253. package/dist/cli/index.js +6 -1
  254. package/dist/cli/index.js.map +1 -1
  255. package/dist/cli/iteration-history.js +8 -5
  256. package/dist/cli/iteration-history.js.map +1 -1
  257. package/dist/coordination/enhanced-progress-tracker.js +1 -1
  258. package/dist/coordination/enhanced-progress-tracker.js.map +1 -1
  259. package/dist/coordination/event-bus.js +1 -1
  260. package/dist/coordination/event-bus.js.map +1 -1
  261. package/dist/coordination/redis-messaging-infrastructure.js +1 -1
  262. package/dist/coordination/redis-messaging-infrastructure.js.map +1 -1
  263. package/dist/mcp/auth-middleware.js +1 -1
  264. package/dist/mcp/auth-middleware.js.map +1 -1
  265. package/dist/mcp/playwright-mcp-server-auth.js +1 -1
  266. package/dist/mcp/playwright-mcp-server-auth.js.map +1 -1
  267. package/dist/utils/secret-filter.js +145 -0
  268. package/dist/utils/secret-filter.js.map +1 -0
  269. package/package.json +5 -4
  270. package/scripts/docker-agent-init.sh +106 -0
  271. package/scripts/docker-rebuild-all-agents.sh +127 -0
  272. package/scripts/init-project.js +4 -4
  273. package/scripts/switch-api.sh +11 -4
  274. package/.claude/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md +0 -471
  275. package/.claude/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md.backup +0 -481
  276. package/.claude/cfn-agents-ignore/cfn-seo-team/DELEGATION_MATRIX.md.backup +0 -371
  277. package/.claude/cfn-agents-ignore/cfn-seo-team/INTEGRATION_REQUIREMENTS.md.backup +0 -637
  278. package/.claude/cfn-agents-ignore/cfn-seo-team/cfn-seo-coordinator.md.backup +0 -398
  279. package/.claude/cfn-agents-ignore/cfn-seo-team/competitive-seo-analyst.md.backup +0 -401
  280. package/.claude/cfn-agents-ignore/cfn-seo-team/content-atomization-specialist.md.backup +0 -552
  281. package/.claude/cfn-agents-ignore/cfn-seo-team/content-seo-strategist.md.backup +0 -223
  282. package/.claude/cfn-agents-ignore/cfn-seo-team/eeat-content-auditor.md.backup +0 -367
  283. package/.claude/cfn-agents-ignore/cfn-seo-team/geo-optimization-expert.md.backup +0 -247
  284. package/.claude/cfn-agents-ignore/cfn-seo-team/link-building-specialist.md.backup +0 -269
  285. package/.claude/cfn-agents-ignore/cfn-seo-team/local-seo-optimizer.md.backup +0 -311
  286. package/.claude/cfn-agents-ignore/cfn-seo-team/programmatic-seo-engineer.md.backup +0 -222
  287. package/.claude/cfn-agents-ignore/cfn-seo-team/schema-markup-engineer.md.backup +0 -408
  288. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-analytics-specialist.md.backup +0 -354
  289. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/accessibility-validator.md.backup +0 -561
  290. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/audience-validator.md.backup +0 -480
  291. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/branding-validator.md.backup +0 -448
  292. package/.claude/cfn-agents-ignore/cfn-seo-team/seo-validators/humanizer-validator.md.backup +0 -329
  293. package/.claude/cfn-agents-ignore/cfn-seo-team/technical-seo-specialist.md.backup +0 -208
  294. package/claude-assets/agents/AGENT_LIFECYCLE.md.backup_before_replace +0 -530
  295. package/claude-assets/agents/README-AGENT_LIFECYCLE.md.backup_before_replace +0 -522
  296. package/claude-assets/agents/cfn-dev-team/test-agent.md +0 -141
  297. package/claude-assets/agents/marketing_hybrid/cost_tracker.md +0 -13
  298. package/claude-assets/agents/marketing_hybrid/docker_deployer.md +0 -13
  299. package/claude-assets/agents/marketing_hybrid/zai_worker_spawner.md +0 -13
  300. package/claude-assets/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md +0 -471
  301. package/claude-assets/cfn-agents-ignore/cfn-seo-team/AGENT_CREATION_REPORT.md.backup +0 -481
  302. package/claude-assets/cfn-agents-ignore/cfn-seo-team/DELEGATION_MATRIX.md.backup +0 -371
  303. package/claude-assets/cfn-agents-ignore/cfn-seo-team/INTEGRATION_REQUIREMENTS.md.backup +0 -637
  304. package/claude-assets/cfn-agents-ignore/cfn-seo-team/cfn-seo-coordinator.md.backup +0 -398
  305. package/claude-assets/cfn-agents-ignore/cfn-seo-team/competitive-seo-analyst.md.backup +0 -401
  306. package/claude-assets/cfn-agents-ignore/cfn-seo-team/content-atomization-specialist.md.backup +0 -552
  307. package/claude-assets/cfn-agents-ignore/cfn-seo-team/content-seo-strategist.md.backup +0 -223
  308. package/claude-assets/cfn-agents-ignore/cfn-seo-team/eeat-content-auditor.md.backup +0 -367
  309. package/claude-assets/cfn-agents-ignore/cfn-seo-team/geo-optimization-expert.md.backup +0 -247
  310. package/claude-assets/cfn-agents-ignore/cfn-seo-team/link-building-specialist.md.backup +0 -269
  311. package/claude-assets/cfn-agents-ignore/cfn-seo-team/local-seo-optimizer.md.backup +0 -311
  312. package/claude-assets/cfn-agents-ignore/cfn-seo-team/programmatic-seo-engineer.md.backup +0 -222
  313. package/claude-assets/cfn-agents-ignore/cfn-seo-team/schema-markup-engineer.md.backup +0 -408
  314. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-analytics-specialist.md.backup +0 -354
  315. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/accessibility-validator.md.backup +0 -561
  316. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/audience-validator.md.backup +0 -480
  317. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/branding-validator.md.backup +0 -448
  318. package/claude-assets/cfn-agents-ignore/cfn-seo-team/seo-validators/humanizer-validator.md.backup +0 -329
  319. package/claude-assets/cfn-agents-ignore/cfn-seo-team/technical-seo-specialist.md.backup +0 -208
  320. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/DELEGATION_MATRIX.md +0 -0
  321. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/HUMANIZER_PROMPTS.md +0 -0
  322. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +0 -0
  323. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/cfn-seo-coordinator.md +0 -0
  324. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/competitive-seo-analyst.md +0 -0
  325. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-atomization-specialist.md +0 -0
  326. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-seo-strategist.md +0 -0
  327. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/eeat-content-auditor.md +0 -0
  328. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/geo-optimization-expert.md +0 -0
  329. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/link-building-specialist.md +0 -0
  330. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/local-seo-optimizer.md +0 -0
  331. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/programmatic-seo-engineer.md +0 -0
  332. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/schema-markup-engineer.md +0 -0
  333. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-analytics-specialist.md +0 -0
  334. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/accessibility-validator.md +0 -0
  335. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/audience-validator.md +0 -0
  336. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/branding-validator.md +0 -0
  337. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/humanizer-validator.md +0 -0
  338. /package/.claude/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/technical-seo-specialist.md +0 -0
  339. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-agent-swap/SKILL.md +0 -0
  340. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-agent-swap/recommend-swap.sh +0 -0
  341. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-api-validation/test-endpoints.sh +0 -0
  342. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-context-pruner/SKILL.md +0 -0
  343. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-context-pruner/prune-context.sh +0 -0
  344. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/README.md +0 -0
  345. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/SKILL.md +0 -0
  346. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/config.json +0 -0
  347. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/eventbus-wrapper.cjs +0 -0
  348. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-publish.sh +0 -0
  349. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-subscribe.sh +0 -0
  350. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-lifecycle-track.sh +0 -0
  351. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/test-event-bus.sh +0 -0
  352. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/README.md +0 -0
  353. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/SKILL.md +0 -0
  354. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/config.json +0 -0
  355. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-allocate.sh +0 -0
  356. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-balance.sh +0 -0
  357. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-metrics.sh +0 -0
  358. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-register.sh +0 -0
  359. /package/.claude/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/test-fleet-manager.sh +0 -0
  360. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-task-mode-safety/cli-coordination.sh +0 -0
  361. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-task-mode-safety/mode-detection.sh +0 -0
  362. /package/{claude-assets/skills → .claude/cfn-extras/skills/advanced-features}/cfn-task-mode-sanitize/task-mode-env-sanitizer.sh +0 -0
  363. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/README.md +0 -0
  364. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/description-refinement-guide.md +0 -0
  365. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/log-skill-invocation.js +0 -0
  366. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/run-production-criteria-tests.sh +0 -0
  367. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-analytics-dashboard.js +0 -0
  368. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocation-hook.sh +0 -0
  369. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocations.sql +0 -0
  370. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-corpus.json +0 -0
  371. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-data-generator.js +0 -0
  372. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-manual-override-rate.js +0 -0
  373. /package/.claude/{skills → cfn-extras/skills/analytics}/cfn-analytics/validate-skill-selection.js +0 -0
  374. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-improvement-recommender/SKILL.md +0 -0
  375. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-improvement-recommender/recommend-improvements.sh +0 -0
  376. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-memory-monitoring/SKILL.md +0 -0
  377. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-pattern-extraction/SKILL.md +0 -0
  378. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-pattern-extraction/extract-patterns.sh +0 -0
  379. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-retrospective-report/SKILL.md +0 -0
  380. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-retrospective-report/generate-report.sh +0 -0
  381. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-telemetry/collect-metrics.sh +0 -0
  382. /package/{claude-assets/skills → .claude/cfn-extras/skills/analytics}/cfn-telemetry/start-telemetry.sh +0 -0
  383. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/SKILL.md +0 -0
  384. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/add-bullet.sh +0 -0
  385. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +0 -0
  386. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/classify-task.sh +0 -0
  387. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/export-ace-metrics.sh +0 -0
  388. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/extract-tags.sh +0 -0
  389. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/format-negative-context.sh +0 -0
  390. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/init-indexes.sql +0 -0
  391. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-curate.sh +0 -0
  392. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-inject.sh +0 -0
  393. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-query.sh +0 -0
  394. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-reflect.sh +0 -0
  395. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-stats.sh +0 -0
  396. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/log-merge.sh +0 -0
  397. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/monitor-injection-performance.sh +0 -0
  398. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/optimize-injection-pipeline.sh +0 -0
  399. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-anti-patterns.sh +0 -0
  400. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-contexts.sh +0 -0
  401. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-reflections.sh +0 -0
  402. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/001-create-context-reflections.sql +0 -0
  403. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/README.md +0 -0
  404. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +0 -0
  405. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data-simple.sh +0 -0
  406. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data.sh +0 -0
  407. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/run-migration.sh +0 -0
  408. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/validate-schema.sql +0 -0
  409. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance-adapter.sh +0 -0
  410. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance.sh +0 -0
  411. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/sprint-7-lessons.json +0 -0
  412. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/store-reflection.sh +0 -0
  413. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/test-ace-skill.sh +0 -0
  414. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/track-ab-test.sh +0 -0
  415. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/update-reflection.sh +0 -0
  416. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/SKILL.md +0 -0
  417. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-clean.json +0 -0
  418. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-fixed.json +0 -0
  419. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry.json +0 -0
  420. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.py +0 -0
  421. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.sh +0 -0
  422. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/invoke-registry.sh +0 -0
  423. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/temp_script.py +0 -0
  424. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/SKILL.md +0 -0
  425. /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/select-agents.sh +0 -0
  426. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-cli-setup/validate-cli-environment.sh +0 -0
  427. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-simplified-agent-lifecycle/COST_ANALYSIS.md +0 -0
  428. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-simplified-agent-lifecycle/DESIGN.md +0 -0
  429. /package/{claude-assets/skills → .claude/cfn-extras/skills/deprecated}/cfn-simplified-agent-lifecycle/MIGRATION_PLAN.md +0 -0
  430. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/SKILL.md +0 -0
  431. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/create-campaign.sh +0 -0
  432. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +0 -0
  433. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +0 -0
  434. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/set-budget.sh +0 -0
  435. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +0 -0
  436. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/SKILL.md +0 -0
  437. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-ad-performance.sh +0 -0
  438. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-conversion-funnel.sh +0 -0
  439. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-email-performance.sh +0 -0
  440. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-social-engagement.sh +0 -0
  441. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-analytics-data/operations/get-website-traffic.sh +0 -0
  442. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/SKILL.md +0 -0
  443. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +0 -0
  444. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +0 -0
  445. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +0 -0
  446. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/send-message.sh +0 -0
  447. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +0 -0
  448. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/SKILL.md +0 -0
  449. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/get-backlink-profile.sh +0 -0
  450. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/get-keyword-rankings.sh +0 -0
  451. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/get-trending-topics.sh +0 -0
  452. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/monitor-competitor.sh +0 -0
  453. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-competitive-intel/operations/search-brand-mentions.sh +0 -0
  454. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/SKILL.md +0 -0
  455. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/add-to-segment.sh +0 -0
  456. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/create-contact.sh +0 -0
  457. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/get-contact.sh +0 -0
  458. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/remove-from-segment.sh +0 -0
  459. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-crm-contacts/operations/update-contact.sh +0 -0
  460. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/SKILL.md +0 -0
  461. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/create-campaign.sh +0 -0
  462. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/get-campaign-stats.sh +0 -0
  463. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/list-templates.sh +0 -0
  464. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/schedule-campaign.sh +0 -0
  465. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-email-campaigns/operations/send-test-email.sh +0 -0
  466. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/SKILL.md +0 -0
  467. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/create-ab-test.sh +0 -0
  468. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/create-landing-page.sh +0 -0
  469. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/get-page-performance.sh +0 -0
  470. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/publish-page.sh +0 -0
  471. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-landing-pages/operations/unpublish-page.sh +0 -0
  472. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/SKILL.md +0 -0
  473. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/create-crisis-alert.sh +0 -0
  474. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/export-report.sh +0 -0
  475. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/get-sentiment-analysis.sh +0 -0
  476. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-monitoring/operations/search-mentions.sh +0 -0
  477. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/SKILL.md +0 -0
  478. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/search-journalists.sh +0 -0
  479. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/send-pitch.sh +0 -0
  480. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/submit-haro-response.sh +0 -0
  481. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-media-outreach/operations/track-pitch-engagement.sh +0 -0
  482. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/SKILL.md +0 -0
  483. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/distribute-press-release.sh +0 -0
  484. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/get-distribution-status.sh +0 -0
  485. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/get-pickup-metrics.sh +0 -0
  486. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-press-distribution/operations/list-templates.sh +0 -0
  487. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/SKILL.md +0 -0
  488. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/create-campaign.sh +0 -0
  489. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +0 -0
  490. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/opt-out.sh +0 -0
  491. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +0 -0
  492. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-sms-campaigns/operations/send-sms.sh +0 -0
  493. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/SKILL.md +0 -0
  494. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/create-post.sh +0 -0
  495. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/delete-post.sh +0 -0
  496. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/get-post-stats.sh +0 -0
  497. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/schedule-post.sh +0 -0
  498. /package/{claude-assets/skills → .claude/cfn-extras/skills/marketing}/cfn-marketing-social-publishing/operations/upload-media.sh +0 -0
  499. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/DESIGN.md +0 -0
  500. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/SKILL.md +0 -0
  501. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-agents.sh +0 -0
  502. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-dashboard.sh +0 -0
  503. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-events.sh +0 -0
  504. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-metrics.sh +0 -0
  505. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-start.sh +0 -0
  506. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/invoke-portal-stop.sh +0 -0
  507. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/test-web-portal-skill.sh +0 -0
  508. /package/{claude-assets/skills → .claude/cfn-extras/skills/ui-portal}/cfn-web-portal/validate-deployment.sh +0 -0
  509. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-environment-sanitization/SKILL.md +0 -0
  510. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-environment-sanitization/sanitize-environment.sh +0 -0
  511. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-process-instrumentation/SKILL.md +0 -0
  512. /package/{claude-assets/skills → .claude/cfn-extras/skills/utility}/cfn-process-instrumentation/instrument-process.sh +0 -0
  513. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/DELEGATION_MATRIX.md +0 -0
  514. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/HUMANIZER_PROMPTS.md +0 -0
  515. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +0 -0
  516. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/cfn-seo-coordinator.md +0 -0
  517. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/competitive-seo-analyst.md +0 -0
  518. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-atomization-specialist.md +0 -0
  519. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/content-seo-strategist.md +0 -0
  520. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/eeat-content-auditor.md +0 -0
  521. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/geo-optimization-expert.md +0 -0
  522. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/link-building-specialist.md +0 -0
  523. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/local-seo-optimizer.md +0 -0
  524. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/programmatic-seo-engineer.md +0 -0
  525. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/schema-markup-engineer.md +0 -0
  526. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-analytics-specialist.md +0 -0
  527. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/accessibility-validator.md +0 -0
  528. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/audience-validator.md +0 -0
  529. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/branding-validator.md +0 -0
  530. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/seo-validators/humanizer-validator.md +0 -0
  531. /package/claude-assets/{cfn-agents-ignore → cfn-extras/agents}/cfn-seo-team/technical-seo-specialist.md +0 -0
  532. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/README.md +0 -0
  533. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/SKILL.md +0 -0
  534. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/config.json +0 -0
  535. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/eventbus-wrapper.cjs +0 -0
  536. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-publish.sh +0 -0
  537. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-event-subscribe.sh +0 -0
  538. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/invoke-lifecycle-track.sh +0 -0
  539. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-event-bus/test-event-bus.sh +0 -0
  540. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/README.md +0 -0
  541. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/SKILL.md +0 -0
  542. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/config.json +0 -0
  543. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-allocate.sh +0 -0
  544. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-balance.sh +0 -0
  545. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-metrics.sh +0 -0
  546. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/invoke-fleet-register.sh +0 -0
  547. /package/claude-assets/{skills → cfn-extras/skills/advanced-features}/cfn-fleet-manager/test-fleet-manager.sh +0 -0
  548. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/README.md +0 -0
  549. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/description-refinement-guide.md +0 -0
  550. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/log-skill-invocation.js +0 -0
  551. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/run-production-criteria-tests.sh +0 -0
  552. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-analytics-dashboard.js +0 -0
  553. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocation-hook.sh +0 -0
  554. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/skill-invocations.sql +0 -0
  555. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-corpus.json +0 -0
  556. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-data-generator.js +0 -0
  557. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/test-manual-override-rate.js +0 -0
  558. /package/claude-assets/{skills → cfn-extras/skills/analytics}/cfn-analytics/validate-skill-selection.js +0 -0
  559. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/SKILL.md +0 -0
  560. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/add-bullet.sh +0 -0
  561. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +0 -0
  562. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/classify-task.sh +0 -0
  563. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/export-ace-metrics.sh +0 -0
  564. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/extract-tags.sh +0 -0
  565. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/format-negative-context.sh +0 -0
  566. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/init-indexes.sql +0 -0
  567. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-curate.sh +0 -0
  568. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-inject.sh +0 -0
  569. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-query.sh +0 -0
  570. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-reflect.sh +0 -0
  571. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/invoke-context-stats.sh +0 -0
  572. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/log-merge.sh +0 -0
  573. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/monitor-injection-performance.sh +0 -0
  574. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/optimize-injection-pipeline.sh +0 -0
  575. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-anti-patterns.sh +0 -0
  576. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-contexts.sh +0 -0
  577. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/query-reflections.sh +0 -0
  578. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/001-create-context-reflections.sql +0 -0
  579. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/README.md +0 -0
  580. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +0 -0
  581. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data-simple.sh +0 -0
  582. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/populate-test-data.sh +0 -0
  583. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/run-migration.sh +0 -0
  584. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/schema/validate-schema.sql +0 -0
  585. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance-adapter.sh +0 -0
  586. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/score-relevance.sh +0 -0
  587. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/sprint-7-lessons.json +0 -0
  588. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/store-reflection.sh +0 -0
  589. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/test-ace-skill.sh +0 -0
  590. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/track-ab-test.sh +0 -0
  591. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-ace-system/update-reflection.sh +0 -0
  592. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/SKILL.md +0 -0
  593. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-clean.json +0 -0
  594. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry-fixed.json +0 -0
  595. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/agents-registry.json +0 -0
  596. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.py +0 -0
  597. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/discover-agents.sh +0 -0
  598. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/invoke-registry.sh +0 -0
  599. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-discovery/temp_script.py +0 -0
  600. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/SKILL.md +0 -0
  601. /package/claude-assets/{skills → cfn-extras/skills/deprecated}/cfn-agent-selector/select-agents.sh +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/agents/agent-loader.js"],"sourcesContent":["\"use strict\";\n/**\n * Dynamic Agent Loader - Reads agent definitions from .claude/agents/ directory\n * Single source of truth for agent types in the system\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.refreshAgents = exports.getAgentsByCategory = exports.isValidAgentType = exports.searchAgents = exports.getAgentCategories = exports.getAllAgents = exports.getAgent = exports.getAvailableAgentTypes = exports.agentLoader = exports.AgentLoader = void 0;\nexports.resolveLegacyAgentType = resolveLegacyAgentType;\nvar node_fs_1 = require(\"node:fs\");\nvar glob_1 = require(\"glob\");\nvar node_path_1 = require(\"node:path\");\nvar yaml_1 = require(\"yaml\");\n// Legacy agent type mapping for backward compatibility\nvar LEGACY_AGENT_MAPPING = {\n analyst: 'code-analyzer',\n coordinator: 'hierarchical-coordinator',\n optimizer: 'perf-analyzer',\n documenter: 'api-docs',\n monitor: 'performance-benchmarker',\n specialist: 'system-architect',\n architect: 'system-architect',\n};\n/**\n * Resolve legacy agent types to current equivalents\n */\nfunction resolveLegacyAgentType(legacyType) {\n return LEGACY_AGENT_MAPPING[legacyType] || legacyType;\n}\nvar AgentLoader = /** @class */ (function () {\n function AgentLoader() {\n this.agentCache = new Map();\n this.categoriesCache = [];\n this.lastLoadTime = 0;\n this.CACHE_EXPIRY = 60000; // 1 minute cache\n }\n AgentLoader.prototype.getAgentsDirectory = function () {\n var currentDir = process.cwd();\n while (currentDir !== '/') {\n var claudeAgentsPath = (0, node_path_1.resolve)(currentDir, '.claude', 'agents');\n if ((0, node_fs_1.existsSync)(claudeAgentsPath)) {\n return claudeAgentsPath;\n }\n currentDir = (0, node_path_1.dirname)(currentDir);\n }\n return (0, node_path_1.resolve)(process.cwd(), '.claude', 'agents');\n };\n AgentLoader.prototype.parseAgentFile = function (filePath) {\n try {\n var content = (0, node_fs_1.readFileSync)(filePath, 'utf-8');\n var frontmatterMatch = content.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n([\\s\\S]*)$/);\n if (!frontmatterMatch) {\n console.warn(\"No frontmatter found in \".concat(filePath));\n return null;\n }\n var yamlContent = frontmatterMatch[1], markdownContent = frontmatterMatch[2];\n var frontmatter = (0, yaml_1.parse)(yamlContent);\n var description = frontmatter.description;\n if (!frontmatter.name || !description) {\n console.warn(\"Missing required fields (name, description) in \".concat(filePath));\n return null;\n }\n return {\n name: String(frontmatter.name),\n type: frontmatter.type ? String(frontmatter.type) : undefined,\n color: frontmatter.color ? String(frontmatter.color) : undefined,\n description: String(description),\n model: frontmatter.model ? String(frontmatter.model) : undefined,\n capabilities: Array.isArray(frontmatter.capabilities)\n ? frontmatter.capabilities.map(String)\n : [],\n priority: ['low', 'medium', 'high', 'critical'].includes(String(frontmatter.priority))\n ? String(frontmatter.priority)\n : 'medium',\n tools: this.parseTools(frontmatter),\n hooks: frontmatter.hooks,\n content: markdownContent.trim(),\n };\n }\n catch (error) {\n console.error(\"Error parsing agent file \".concat(filePath, \":\"), error);\n return null;\n }\n };\n AgentLoader.prototype.parseTools = function (frontmatter) {\n var extractTools = function (input) {\n if (Array.isArray(input))\n return input.map(String);\n if (typeof input === 'string') {\n return input.split(/[,\\s]+/).map(function (t) { return t.trim(); }).filter(function (t) { return t.length > 0; });\n }\n return [];\n };\n // Safely handle tools and capabilities.tools\n var toolsFromFrontmatter = frontmatter.tools\n ? extractTools(frontmatter.tools)\n : [];\n var toolsFromCapabilities = frontmatter.capabilities && typeof frontmatter.capabilities === 'object'\n ? extractTools(Object(frontmatter.capabilities).tools)\n : [];\n return __spreadArray(__spreadArray([], toolsFromFrontmatter, true), toolsFromCapabilities, true);\n };\n AgentLoader.prototype.loadAgents = function () {\n return __awaiter(this, void 0, void 0, function () {\n var agentsDir, agentFiles, categoryMap, _i, agentFiles_1, filePath, agent, relativePath, pathParts, category;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n agentsDir = this.getAgentsDirectory();\n if (!(0, node_fs_1.existsSync)(agentsDir)) {\n console.warn(\"Agents directory not found: \".concat(agentsDir));\n return [2 /*return*/];\n }\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n (0, glob_1.glob)('**/*.md', {\n cwd: agentsDir,\n ignore: ['**/README.md', '**/MIGRATION_SUMMARY.md'],\n absolute: true\n }, function (err, matches) {\n if (err)\n reject(err);\n else\n resolve(matches);\n });\n })];\n case 1:\n agentFiles = _a.sent();\n this.agentCache.clear();\n this.categoriesCache = [];\n categoryMap = new Map();\n for (_i = 0, agentFiles_1 = agentFiles; _i < agentFiles_1.length; _i++) {\n filePath = agentFiles_1[_i];\n agent = this.parseAgentFile(filePath);\n if (agent) {\n this.agentCache.set(agent.name, agent);\n relativePath = filePath.replace(agentsDir, '');\n pathParts = relativePath.split('/');\n category = pathParts[1] || 'uncategorized';\n if (!categoryMap.has(category)) {\n categoryMap.set(category, []);\n }\n categoryMap.get(category).push(agent);\n }\n }\n this.categoriesCache = Array.from(categoryMap.entries()).map(function (_a) {\n var name = _a[0], agents = _a[1];\n return ({\n name: name,\n agents: agents.sort(function (a, b) { return a.name.localeCompare(b.name); }),\n });\n });\n this.lastLoadTime = Date.now();\n return [2 /*return*/];\n }\n });\n });\n };\n // Rest of the methods remain similar to the original implementation\n AgentLoader.prototype.needsRefresh = function () {\n return Date.now() - this.lastLoadTime > this.CACHE_EXPIRY;\n };\n AgentLoader.prototype.ensureLoaded = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this.agentCache.size === 0 || this.needsRefresh())) return [3 /*break*/, 2];\n return [4 /*yield*/, this.loadAgents()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n AgentLoader.prototype.getAvailableAgentTypes = function () {\n return __awaiter(this, void 0, void 0, function () {\n var currentTypes, legacyTypes;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.ensureLoaded()];\n case 1:\n _a.sent();\n currentTypes = Array.from(this.agentCache.keys());\n legacyTypes = Object.keys(LEGACY_AGENT_MAPPING);\n return [2 /*return*/, Array.from(new Set(__spreadArray(__spreadArray([], currentTypes, true), legacyTypes, true))).sort()];\n }\n });\n });\n };\n AgentLoader.prototype.getAgent = function (name) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.ensureLoaded()];\n case 1:\n _a.sent();\n return [2 /*return*/, this.agentCache.get(name) || this.agentCache.get(resolveLegacyAgentType(name)) || null];\n }\n });\n });\n };\n AgentLoader.prototype.getAllAgents = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.ensureLoaded()];\n case 1:\n _a.sent();\n return [2 /*return*/, Array.from(this.agentCache.values()).sort(function (a, b) { return a.name.localeCompare(b.name); })];\n }\n });\n });\n };\n AgentLoader.prototype.getAgentCategories = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.ensureLoaded()];\n case 1:\n _a.sent();\n return [2 /*return*/, this.categoriesCache];\n }\n });\n });\n };\n AgentLoader.prototype.searchAgents = function (query) {\n return __awaiter(this, void 0, void 0, function () {\n var lowerQuery;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.ensureLoaded()];\n case 1:\n _a.sent();\n lowerQuery = query.toLowerCase();\n return [2 /*return*/, Array.from(this.agentCache.values()).filter(function (agent) {\n var _a;\n return agent.name.toLowerCase().includes(lowerQuery) ||\n agent.description.toLowerCase().includes(lowerQuery) ||\n ((_a = agent.capabilities) === null || _a === void 0 ? void 0 : _a.some(function (cap) { return cap.toLowerCase().includes(lowerQuery); }));\n })];\n }\n });\n });\n };\n AgentLoader.prototype.isValidAgentType = function (name) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.ensureLoaded()];\n case 1:\n _a.sent();\n return [2 /*return*/, this.agentCache.has(name) || this.agentCache.has(resolveLegacyAgentType(name))];\n }\n });\n });\n };\n AgentLoader.prototype.getAgentsByCategory = function (category) {\n return __awaiter(this, void 0, void 0, function () {\n var categories, found;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getAgentCategories()];\n case 1:\n categories = _a.sent();\n found = categories.find(function (cat) { return cat.name === category; });\n return [2 /*return*/, (found === null || found === void 0 ? void 0 : found.agents) || []];\n }\n });\n });\n };\n AgentLoader.prototype.refresh = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.lastLoadTime = 0;\n return [4 /*yield*/, this.loadAgents()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return AgentLoader;\n}());\nexports.AgentLoader = AgentLoader;\n// Singleton instance\nexports.agentLoader = new AgentLoader();\n// Convenience exports for use in other modules\nvar getAvailableAgentTypes = function () { return exports.agentLoader.getAvailableAgentTypes(); };\nexports.getAvailableAgentTypes = getAvailableAgentTypes;\nvar getAgent = function (name) { return exports.agentLoader.getAgent(name); };\nexports.getAgent = getAgent;\nvar getAllAgents = function () { return exports.agentLoader.getAllAgents(); };\nexports.getAllAgents = getAllAgents;\nvar getAgentCategories = function () { return exports.agentLoader.getAgentCategories(); };\nexports.getAgentCategories = getAgentCategories;\nvar searchAgents = function (query) { return exports.agentLoader.searchAgents(query); };\nexports.searchAgents = searchAgents;\nvar isValidAgentType = function (name) { return exports.agentLoader.isValidAgentType(name); };\nexports.isValidAgentType = isValidAgentType;\nvar getAgentsByCategory = function (category) { return exports.agentLoader.getAgentsByCategory(category); };\nexports.getAgentsByCategory = getAgentsByCategory;\nvar refreshAgents = function () { return exports.agentLoader.refresh(); };\nexports.refreshAgents = refreshAgents;\n"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","Object","create","Iterator","prototype","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","__spreadArray","to","from","pack","arguments","i","l","ar","Array","slice","concat","defineProperty","exports","refreshAgents","getAgentsByCategory","isValidAgentType","searchAgents","getAgentCategories","getAllAgents","getAgent","getAvailableAgentTypes","agentLoader","AgentLoader","resolveLegacyAgentType","node_fs_1","require","glob_1","node_path_1","yaml_1","LEGACY_AGENT_MAPPING","analyst","coordinator","optimizer","documenter","monitor","specialist","architect","legacyType","agentCache","Map","categoriesCache","lastLoadTime","CACHE_EXPIRY","getAgentsDirectory","currentDir","process","cwd","claudeAgentsPath","existsSync","dirname","parseAgentFile","filePath","content","readFileSync","frontmatterMatch","match","console","warn","yamlContent","markdownContent","frontmatter","parse","description","name","String","type","undefined","color","model","capabilities","isArray","map","priority","includes","tools","parseTools","hooks","trim","error","extractTools","input","split","filter","toolsFromFrontmatter","toolsFromCapabilities","loadAgents","agentsDir","agentFiles","categoryMap","_i","agentFiles_1","agent","relativePath","pathParts","category","_a","glob","ignore","absolute","err","matches","clear","set","replace","has","get","entries","agents","sort","a","b","localeCompare","Date","now","needsRefresh","ensureLoaded","size","currentTypes","legacyTypes","keys","Set","values","query","lowerQuery","toLowerCase","some","cap","categories","found","find","cat","refresh"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/agents/agent-loader.ts"],"sourcesContent":["/**\n * Dynamic Agent Loader - Reads agent definitions from .claude/agents/ directory\n * Single source of truth for agent types in the system\n */\n\nimport { readFileSync, existsSync } from 'node:fs';\nimport { glob } from 'glob';\nimport { resolve, dirname } from 'node:path';\nimport { parse as parseYaml } from 'yaml';\n\n// Legacy agent type mapping for backward compatibility\nconst LEGACY_AGENT_MAPPING = {\n analyst: 'code-analyzer',\n coordinator: 'hierarchical-coordinator',\n optimizer: 'perf-analyzer',\n documenter: 'api-docs',\n monitor: 'performance-benchmarker',\n specialist: 'system-architect',\n architect: 'system-architect',\n} as const;\n\n/**\n * Resolve legacy agent types to current equivalents\n */\nexport function resolveLegacyAgentType(legacyType: string): string {\n return LEGACY_AGENT_MAPPING[legacyType as keyof typeof LEGACY_AGENT_MAPPING] || legacyType;\n}\n\nexport interface AgentDefinition {\n name: string;\n type?: string;\n color?: string;\n description: string;\n tools?: string[];\n model?: string;\n capabilities?: string[];\n priority?: 'low' | 'medium' | 'high' | 'critical';\n hooks?: {\n pre?: string;\n post?: string;\n task_complete?: string;\n on_rerun_request?: string;\n lifecycle?: Record<string, string>;\n };\n lifecycle?: {\n state_management?: boolean;\n persistent_memory?: boolean;\n max_retries?: number;\n timeout_ms?: number;\n auto_cleanup?: boolean;\n };\n content?: string;\n}\n\nexport interface AgentCategory {\n name: string;\n agents: AgentDefinition[];\n}\n\nexport class AgentLoader {\n private agentCache = new Map<string, AgentDefinition>();\n private categoriesCache: AgentCategory[] = [];\n private lastLoadTime = 0;\n private readonly CACHE_EXPIRY = 60_000; // 1 minute cache\n\n private getAgentsDirectory(): string {\n let currentDir = process.cwd();\n\n while (currentDir !== '/') {\n const claudeAgentsPath = resolve(currentDir, '.claude', 'agents');\n if (existsSync(claudeAgentsPath)) {\n return claudeAgentsPath;\n }\n currentDir = dirname(currentDir);\n }\n\n return resolve(process.cwd(), '.claude', 'agents');\n }\n\n private parseAgentFile(filePath: string): AgentDefinition | null {\n try {\n const content = readFileSync(filePath, 'utf-8');\n\n const frontmatterMatch = content.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n([\\s\\S]*)$/);\n if (!frontmatterMatch) {\n console.warn(`No frontmatter found in ${filePath}`);\n return null;\n }\n\n const [, yamlContent, markdownContent] = frontmatterMatch;\n const frontmatter = parseYaml(yamlContent) as Record<string, unknown>;\n\n const description = frontmatter.description;\n if (!frontmatter.name || !description) {\n console.warn(`Missing required fields (name, description) in ${filePath}`);\n return null;\n }\n\n return {\n name: String(frontmatter.name),\n type: frontmatter.type ? String(frontmatter.type) : undefined,\n color: frontmatter.color ? String(frontmatter.color) : undefined,\n description: String(description),\n model: frontmatter.model ? String(frontmatter.model) : undefined,\n capabilities: Array.isArray(frontmatter.capabilities)\n ? frontmatter.capabilities.map(String)\n : [],\n priority: ['low', 'medium', 'high', 'critical'].includes(String(frontmatter.priority))\n ? String(frontmatter.priority) as AgentDefinition['priority']\n : 'medium',\n tools: this.parseTools(frontmatter),\n hooks: frontmatter.hooks as AgentDefinition['hooks'],\n content: markdownContent.trim(),\n };\n } catch (error) {\n console.error(`Error parsing agent file ${filePath}:`, error);\n return null;\n }\n }\n\n private parseTools(frontmatter: Record<string, unknown>): string[] {\n const extractTools = (input: unknown): string[] => {\n if (Array.isArray(input)) return input.map(String);\n if (typeof input === 'string') {\n return input.split(/[,\\s]+/).map(t => t.trim()).filter(t => t.length > 0);\n }\n return [];\n };\n\n // Safely handle tools and capabilities.tools\n const toolsFromFrontmatter = frontmatter.tools\n ? extractTools(frontmatter.tools)\n : [];\n\n const toolsFromCapabilities = frontmatter.capabilities && typeof frontmatter.capabilities === 'object'\n ? extractTools(Object(frontmatter.capabilities).tools)\n : [];\n\n return [...toolsFromFrontmatter, ...toolsFromCapabilities];\n }\n\n private async loadAgents(): Promise<void> {\n const agentsDir = this.getAgentsDirectory();\n\n if (!existsSync(agentsDir)) {\n console.warn(`Agents directory not found: ${agentsDir}`);\n return;\n }\n\n const agentFiles = await new Promise<string[]>((resolve, reject) => {\n glob('**/*.md', {\n cwd: agentsDir,\n ignore: ['**/README.md', '**/MIGRATION_SUMMARY.md'],\n absolute: true\n }, (err, matches) => {\n if (err) reject(err);\n else resolve(matches);\n });\n });\n\n this.agentCache.clear();\n this.categoriesCache = [];\n\n const categoryMap = new Map<string, AgentDefinition[]>();\n\n for (const filePath of agentFiles) {\n const agent = this.parseAgentFile(filePath);\n if (agent) {\n this.agentCache.set(agent.name, agent);\n\n const relativePath = filePath.replace(agentsDir, '');\n const pathParts = relativePath.split('/');\n const category = pathParts[1] || 'uncategorized';\n\n if (!categoryMap.has(category)) {\n categoryMap.set(category, []);\n }\n categoryMap.get(category)!.push(agent);\n }\n }\n\n this.categoriesCache = Array.from(categoryMap.entries()).map(([name, agents]) => ({\n name,\n agents: agents.sort((a, b) => a.name.localeCompare(b.name)),\n }));\n\n this.lastLoadTime = Date.now();\n }\n\n // Rest of the methods remain similar to the original implementation\n private needsRefresh(): boolean {\n return Date.now() - this.lastLoadTime > this.CACHE_EXPIRY;\n }\n\n private async ensureLoaded(): Promise<void> {\n if (this.agentCache.size === 0 || this.needsRefresh()) {\n await this.loadAgents();\n }\n }\n\n async getAvailableAgentTypes(): Promise<string[]> {\n await this.ensureLoaded();\n const currentTypes = Array.from(this.agentCache.keys());\n const legacyTypes = Object.keys(LEGACY_AGENT_MAPPING);\n return Array.from(new Set([...currentTypes, ...legacyTypes])).sort();\n }\n\n async getAgent(name: string): Promise<AgentDefinition | null> {\n await this.ensureLoaded();\n return this.agentCache.get(name) || this.agentCache.get(resolveLegacyAgentType(name)) || null;\n }\n\n async getAllAgents(): Promise<AgentDefinition[]> {\n await this.ensureLoaded();\n return Array.from(this.agentCache.values()).sort((a, b) => a.name.localeCompare(b.name));\n }\n\n async getAgentCategories(): Promise<AgentCategory[]> {\n await this.ensureLoaded();\n return this.categoriesCache;\n }\n\n async searchAgents(query: string): Promise<AgentDefinition[]> {\n await this.ensureLoaded();\n const lowerQuery = query.toLowerCase();\n\n return Array.from(this.agentCache.values()).filter((agent) =>\n agent.name.toLowerCase().includes(lowerQuery) ||\n agent.description.toLowerCase().includes(lowerQuery) ||\n agent.capabilities?.some((cap) => cap.toLowerCase().includes(lowerQuery))\n );\n }\n\n async isValidAgentType(name: string): Promise<boolean> {\n await this.ensureLoaded();\n return this.agentCache.has(name) || this.agentCache.has(resolveLegacyAgentType(name));\n }\n\n async getAgentsByCategory(category: string): Promise<AgentDefinition[]> {\n const categories = await this.getAgentCategories();\n const found = categories.find((cat) => cat.name === category);\n return found?.agents || [];\n }\n\n async refresh(): Promise<void> {\n this.lastLoadTime = 0;\n await this.loadAgents();\n }\n}\n\n// Singleton instance\nexport const agentLoader = new AgentLoader();\n\n// Convenience exports for use in other modules\nexport const getAvailableAgentTypes = () => agentLoader.getAvailableAgentTypes();\nexport const getAgent = (name: string) => agentLoader.getAgent(name);\nexport const getAllAgents = () => agentLoader.getAllAgents();\nexport const getAgentCategories = () => agentLoader.getAgentCategories();\nexport const searchAgents = (query: string) => agentLoader.searchAgents(query);\nexport const isValidAgentType = (name: string) => agentLoader.isValidAgentType(name);\nexport const getAgentsByCategory = (category: string) => agentLoader.getAgentsByCategory(category);\nexport const refreshAgents = () => agentLoader.refresh();\n"],"names":["readFileSync","existsSync","glob","resolve","dirname","parse","parseYaml","LEGACY_AGENT_MAPPING","analyst","coordinator","optimizer","documenter","monitor","specialist","architect","resolveLegacyAgentType","legacyType","AgentLoader","agentCache","Map","categoriesCache","lastLoadTime","CACHE_EXPIRY","getAgentsDirectory","currentDir","process","cwd","claudeAgentsPath","parseAgentFile","filePath","content","frontmatterMatch","match","console","warn","yamlContent","markdownContent","frontmatter","description","name","String","type","undefined","color","model","capabilities","Array","isArray","map","priority","includes","tools","parseTools","hooks","trim","error","extractTools","input","split","t","filter","length","toolsFromFrontmatter","toolsFromCapabilities","Object","loadAgents","agentsDir","agentFiles","Promise","reject","ignore","absolute","err","matches","clear","categoryMap","agent","set","relativePath","replace","pathParts","category","has","get","push","from","entries","agents","sort","a","b","localeCompare","Date","now","needsRefresh","ensureLoaded","size","getAvailableAgentTypes","currentTypes","keys","legacyTypes","Set","getAgent","getAllAgents","values","getAgentCategories","searchAgents","query","lowerQuery","toLowerCase","some","cap","isValidAgentType","getAgentsByCategory","categories","found","find","cat","refresh","agentLoader","refreshAgents"],"mappings":"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"}ories, found;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getAgentCategories()];\n case 1:\n categories = _a.sent();\n found = categories.find(function (cat) { return cat.name === category; });\n return [2 /*return*/, (found === null || found === void 0 ? void 0 : found.agents) || []];\n }\n });\n });\n };\n AgentLoader.prototype.refresh = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.lastLoadTime = 0;\n return [4 /*yield*/, this.loadAgents()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return AgentLoader;\n}());\nexports.AgentLoader = AgentLoader;\n// Singleton instance\nexports.agentLoader = new AgentLoader();\n// Convenience exports for use in other modules\nvar getAvailableAgentTypes = function () { return exports.agentLoader.getAvailableAgentTypes(); };\nexports.getAvailableAgentTypes = getAvailableAgentTypes;\nvar getAgent = function (name) { return exports.agentLoader.getAgent(name); };\nexports.getAgent = getAgent;\nvar getAllAgents = function () { return exports.agentLoader.getAllAgents(); };\nexports.getAllAgents = getAllAgents;\nvar getAgentCategories = function () { return exports.agentLoader.getAgentCategories(); };\nexports.getAgentCategories = getAgentCategories;\nvar searchAgents = function (query) { return exports.agentLoader.searchAgents(query); };\nexports.searchAgents = searchAgents;\nvar isValidAgentType = function (name) { return exports.agentLoader.isValidAgentType(name); };\nexports.isValidAgentType = isValidAgentType;\nvar getAgentsByCategory = function (category) { return exports.agentLoader.getAgentsByCategory(category); };\nexports.getAgentsByCategory = getAgentsByCategory;\nvar refreshAgents = function () { return exports.agentLoader.refresh(); };\nexports.refreshAgents = refreshAgents;\n"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","Object","create","Iterator","prototype","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","__spreadArray","to","from","pack","arguments","i","l","ar","Array","slice","concat","defineProperty","exports","refreshAgents","getAgentsByCategory","isValidAgentType","searchAgents","getAgentCategories","getAllAgents","getAgent","getAvailableAgentTypes","agentLoader","AgentLoader","resolveLegacyAgentType","node_fs_1","require","glob_1","node_path_1","yaml_1","LEGACY_AGENT_MAPPING","analyst","coordinator","optimizer","documenter","monitor","specialist","architect","legacyType","agentCache","Map","categoriesCache","lastLoadTime","CACHE_EXPIRY","getAgentsDirectory","currentDir","process","cwd","claudeAgentsPath","existsSync","dirname","parseAgentFile","filePath","content","readFileSync","frontmatterMatch","match","console","warn","yamlContent","markdownContent","frontmatter","parse","description","name","String","type","undefined","color","model","capabilities","isArray","map","priority","includes","tools","parseTools","hooks","trim","error","extractTools","input","split","filter","toolsFromFrontmatter","toolsFromCapabilities","loadAgents","agentsDir","agentFiles","categoryMap","_i","agentFiles_1","agent","relativePath","pathParts","category","_a","glob","ignore","absolute","err","matches","clear","set","replace","has","get","entries","agents","sort","a","b","localeCompare","Date","now","needsRefresh","ensureLoaded","size","currentTypes","legacyTypes","keys","Set","values","query","lowerQuery","toLowerCase","some","cap","categories","found","find","cat","refresh"],"mappings":"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"}
@@ -5,11 +5,16 @@
5
5
  * Supports agent definitions in .claude/agents/ directory structure.
6
6
  */ import fs from 'fs/promises';
7
7
  import path from 'path';
8
+ import { fileURLToPath } from 'url';
8
9
  import { glob } from 'glob';
10
+ // ES Module compatibility
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = path.dirname(__filename);
9
13
  /**
10
14
  * Parse YAML frontmatter from markdown content
15
+ * Supports both Unix (LF) and Windows (CRLF) line endings
11
16
  */ function parseFrontmatter(content) {
12
- const frontmatterRegex = /^---\n([\s\S]*?)\n---\n([\s\S]*)$/;
17
+ const frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---\r?\n([\s\S]*)$/;
13
18
  const match = content.match(frontmatterRegex);
14
19
  if (!match) {
15
20
  return {
@@ -105,28 +110,43 @@ import { glob } from 'glob';
105
110
  }
106
111
  /**
107
112
  * Find agent definition file by agent type/name
113
+ * Searches multiple locations for agent definitions
108
114
  */ async function findAgentFile(agentType, baseDir = '.claude/agents') {
109
115
  // Normalize agent type (handle both kebab-case and underscores)
110
116
  const normalizedType = agentType.toLowerCase().replace(/_/g, '-');
117
+ // Search locations (in order of priority)
118
+ const searchLocations = [
119
+ baseDir,
120
+ '.claude/agents',
121
+ path.join(__dirname, '../../.claude/agents'),
122
+ '/app/.claude/agents'
123
+ ];
111
124
  // Search patterns (in order of priority)
112
- const patterns = [
125
+ const searchPatterns = [
113
126
  // Exact match in any subdirectory
114
- `${baseDir}/**/${normalizedType}.md`,
127
+ (loc)=>`${loc}/**/${normalizedType}.md`,
115
128
  // Match with different casing
116
- `${baseDir}/**/*${normalizedType}*.md`
129
+ (loc)=>`${loc}/**/*${normalizedType}*.md`
117
130
  ];
118
- for (const pattern of patterns){
119
- const files = await glob(pattern, {
120
- nodir: true,
121
- absolute: true
122
- });
123
- if (files.length > 0) {
124
- // Prefer exact match over partial match
125
- const exactMatch = files.find((f)=>{
126
- const basename = path.basename(f, '.md').toLowerCase();
127
- return basename === normalizedType;
128
- });
129
- return exactMatch || files[0];
131
+ for (const location of searchLocations){
132
+ for (const patternFn of searchPatterns){
133
+ const pattern = patternFn(location);
134
+ try {
135
+ const files = await glob(pattern, {
136
+ nodir: true,
137
+ absolute: true
138
+ });
139
+ if (files.length > 0) {
140
+ // Prefer exact match over partial match
141
+ const exactMatch = files.find((f)=>{
142
+ const basename = path.basename(f, '.md').toLowerCase();
143
+ return basename === normalizedType;
144
+ });
145
+ return exactMatch || files[0];
146
+ }
147
+ } catch (error) {
148
+ continue;
149
+ }
130
150
  }
131
151
  }
132
152
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/agent-definition-parser.ts"],"sourcesContent":["/**\r\n * Agent Definition Parser\r\n *\r\n * Parses agent definition files (.md) with YAML frontmatter and markdown content.\r\n * Supports agent definitions in .claude/agents/ directory structure.\r\n */\r\n\r\nimport fs from 'fs/promises';\r\nimport path from 'path';\r\nimport { glob } from 'glob';\r\n\r\nexport interface AgentDefinition {\r\n // YAML frontmatter fields\r\n name: string;\r\n description: string;\r\n tools: string[];\r\n model: 'haiku' | 'sonnet' | 'opus';\r\n type?: string;\r\n color?: string;\r\n acl_level?: number;\r\n capabilities?: string[];\r\n validation_hooks?: string[];\r\n lifecycle?: {\r\n pre_task?: string;\r\n post_task?: string;\r\n };\r\n\r\n // Parsed markdown content\r\n content: string;\r\n\r\n // File metadata\r\n filePath: string;\r\n category?: string; // e.g., 'core-agents', 'specialized', 'custom'\r\n}\r\n\r\n/**\r\n * Parse YAML frontmatter from markdown content\r\n */\r\nfunction parseFrontmatter(content: string): { frontmatter: Record<string, any>; body: string } {\r\n const frontmatterRegex = /^---\\n([\\s\\S]*?)\\n---\\n([\\s\\S]*)$/;\r\n const match = content.match(frontmatterRegex);\r\n\r\n if (!match) {\r\n return { frontmatter: {}, body: content };\r\n }\r\n\r\n const [, yamlContent, body] = match;\r\n\r\n \r\n // Simple YAML parser (handles basic key-value pairs, arrays, and objects)\r\n const frontmatter: Record<string, any> = {};\r\n const lines = yamlContent.split('\\n');\r\n let currentKey = '';\r\n let currentArray: string[] = [];\r\n let isInArray = false;\r\n let isInObject = false;\r\n let currentObject: Record<string, string> = {};\r\n let objectKey = '';\r\n\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n if (!trimmed || trimmed.startsWith('#')) continue;\r\n\r\n // Array item\r\n if (trimmed.startsWith('- ')) {\r\n if (!isInArray) {\r\n isInArray = true;\r\n currentArray = [];\r\n }\r\n currentArray.push(trimmed.substring(2).trim());\r\n continue;\r\n }\r\n\r\n // End of array\r\n if (isInArray && !trimmed.startsWith('- ')) {\r\n frontmatter[currentKey] = currentArray;\r\n isInArray = false;\r\n currentArray = [];\r\n }\r\n\r\n // Object field (indented key-value)\r\n if (trimmed.match(/^\\s+\\w+:/) && isInObject) {\r\n const [objKey, ...objValueParts] = trimmed.split(':');\r\n const objValue = objValueParts.join(':').trim().replace(/^[\"']|[\"']$/g, '');\r\n currentObject[objKey.trim()] = objValue;\r\n continue;\r\n }\r\n\r\n // Key-value pair\r\n const colonIndex = trimmed.indexOf(':');\r\n if (colonIndex !== -1) {\r\n const key = trimmed.substring(0, colonIndex).trim();\r\n const value = trimmed.substring(colonIndex + 1).trim();\r\n\r\n // Check if this starts an object\r\n if (value === '') {\r\n isInObject = true;\r\n currentObject = {};\r\n objectKey = key;\r\n continue;\r\n }\r\n\r\n // End previous object if any\r\n if (isInObject && !trimmed.match(/^\\s+/)) {\r\n frontmatter[objectKey] = currentObject;\r\n isInObject = false;\r\n currentObject = {};\r\n }\r\n\r\n currentKey = key;\r\n\r\n // Multi-line string (starts with |)\r\n if (value === '|') {\r\n continue; // Will be handled by next lines\r\n }\r\n\r\n // Inline array (e.g., [item1, item2, item3])\r\n if (value.startsWith('[') && value.endsWith(']')) {\r\n const arrayContent = value.substring(1, value.length - 1);\r\n const items = arrayContent.split(',').map(item => item.trim());\r\n frontmatter[key] = items;\r\n continue;\r\n }\r\n\r\n // Remove quotes\r\n const cleanValue = value.replace(/^[\"']|[\"']$/g, '');\r\n frontmatter[key] = cleanValue;\r\n } else if (currentKey && trimmed && !isInArray && !isInObject) {\r\n // Continuation of multi-line string\r\n const existingValue = frontmatter[currentKey];\r\n frontmatter[currentKey] = existingValue\r\n ? `${existingValue}\\n${trimmed}`\r\n : trimmed;\r\n }\r\n }\r\n\r\n // Handle trailing array or object\r\n if (isInArray) {\r\n frontmatter[currentKey] = currentArray;\r\n }\r\n if (isInObject) {\r\n frontmatter[objectKey] = currentObject;\r\n }\r\n\r\n return { frontmatter, body: body.trim() };\r\n}\r\n\r\n/**\r\n * Find agent definition file by agent type/name\r\n */\r\nasync function findAgentFile(agentType: string, baseDir: string = '.claude/agents'): Promise<string | null> {\r\n // Normalize agent type (handle both kebab-case and underscores)\r\n const normalizedType = agentType.toLowerCase().replace(/_/g, '-');\r\n\r\n // Search patterns (in order of priority)\r\n const patterns = [\r\n // Exact match in any subdirectory\r\n `${baseDir}/**/${normalizedType}.md`,\r\n // Match with different casing\r\n `${baseDir}/**/*${normalizedType}*.md`,\r\n ];\r\n\r\n for (const pattern of patterns) {\r\n const files = await glob(pattern, { nodir: true, absolute: true });\r\n if (files.length > 0) {\r\n // Prefer exact match over partial match\r\n const exactMatch = files.find(f => {\r\n const basename = path.basename(f, '.md').toLowerCase();\r\n return basename === normalizedType;\r\n });\r\n return exactMatch || files[0];\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Parse agent definition from file\r\n */\r\nexport async function parseAgentDefinition(agentType: string): Promise<AgentDefinition> {\r\n // Find agent file\r\n const filePath = await findAgentFile(agentType);\r\n\r\n if (!filePath) {\r\n throw new Error(`Agent definition not found: ${agentType}`);\r\n }\r\n\r\n // Read file content\r\n const content = await fs.readFile(filePath, 'utf-8');\r\n\r\n \r\n // Parse frontmatter and body\r\n const { frontmatter, body } = parseFrontmatter(content);\r\n\r\n // Extract category from path\r\n const relativePath = path.relative('.claude/agents', filePath);\r\n const category = relativePath.includes('/')\r\n ? relativePath.split('/')[0]\r\n : undefined;\r\n\r\n \r\n // Build agent definition\r\n const definition: AgentDefinition = {\r\n name: frontmatter.name || agentType,\r\n description: frontmatter.description || '',\r\n tools: Array.isArray(frontmatter.tools) ? frontmatter.tools : [],\r\n model: frontmatter.model || 'haiku',\r\n type: frontmatter.type,\r\n color: frontmatter.color,\r\n acl_level: frontmatter.acl_level ? parseInt(String(frontmatter.acl_level), 10) : undefined,\r\n capabilities: frontmatter.capabilities,\r\n validation_hooks: frontmatter.validation_hooks,\r\n lifecycle: frontmatter.lifecycle,\r\n content: body,\r\n filePath,\r\n category,\r\n };\r\n\r\n return definition;\r\n}\r\n\r\n/**\r\n * List all available agent definitions\r\n */\r\nexport async function listAgentDefinitions(baseDir: string = '.claude/agents'): Promise<string[]> {\r\n const pattern = `${baseDir}/**/*.md`;\r\n const files = await glob(pattern, { nodir: true });\r\n\r\n return files.map(f => path.basename(f, '.md'));\r\n}\r\n\r\n/**\r\n * Check if agent definition includes CFN Loop protocol\r\n */\r\nexport function hasCFNLoopProtocol(definition: AgentDefinition): boolean {\r\n const content = definition.content.toLowerCase();\r\n return (\r\n content.includes('cfn loop') &&\r\n content.includes('redis completion protocol') ||\r\n content.includes('invoke-waiting-mode.sh')\r\n );\r\n}\r\n"],"names":["fs","path","glob","parseFrontmatter","content","frontmatterRegex","match","frontmatter","body","yamlContent","lines","split","currentKey","currentArray","isInArray","isInObject","currentObject","objectKey","line","trimmed","trim","startsWith","push","substring","objKey","objValueParts","objValue","join","replace","colonIndex","indexOf","key","value","endsWith","arrayContent","length","items","map","item","cleanValue","existingValue","findAgentFile","agentType","baseDir","normalizedType","toLowerCase","patterns","pattern","files","nodir","absolute","exactMatch","find","f","basename","parseAgentDefinition","filePath","Error","readFile","relativePath","relative","category","includes","undefined","definition","name","description","tools","Array","isArray","model","type","color","acl_level","parseInt","String","capabilities","validation_hooks","lifecycle","listAgentDefinitions","hasCFNLoopProtocol"],"mappings":"AAAA;;;;;CAKC,GAED,OAAOA,QAAQ,cAAc;AAC7B,OAAOC,UAAU,OAAO;AACxB,SAASC,IAAI,QAAQ,OAAO;AA0B5B;;CAEC,GACD,SAASC,iBAAiBC,OAAe;IACvC,MAAMC,mBAAmB;IACzB,MAAMC,QAAQF,QAAQE,KAAK,CAACD;IAE5B,IAAI,CAACC,OAAO;QACV,OAAO;YAAEC,aAAa,CAAC;YAAGC,MAAMJ;QAAQ;IAC1C;IAEA,MAAM,GAAGK,aAAaD,KAAK,GAAGF;IAG9B,0EAA0E;IAC1E,MAAMC,cAAmC,CAAC;IAC1C,MAAMG,QAAQD,YAAYE,KAAK,CAAC;IAChC,IAAIC,aAAa;IACjB,IAAIC,eAAyB,EAAE;IAC/B,IAAIC,YAAY;IAChB,IAAIC,aAAa;IACjB,IAAIC,gBAAwC,CAAC;IAC7C,IAAIC,YAAY;IAEhB,KAAK,MAAMC,QAAQR,MAAO;QACxB,MAAMS,UAAUD,KAAKE,IAAI;QACzB,IAAI,CAACD,WAAWA,QAAQE,UAAU,CAAC,MAAM;QAEzC,aAAa;QACb,IAAIF,QAAQE,UAAU,CAAC,OAAO;YAC5B,IAAI,CAACP,WAAW;gBACdA,YAAY;gBACZD,eAAe,EAAE;YACnB;YACAA,aAAaS,IAAI,CAACH,QAAQI,SAAS,CAAC,GAAGH,IAAI;YAC3C;QACF;QAEA,eAAe;QACf,IAAIN,aAAa,CAACK,QAAQE,UAAU,CAAC,OAAO;YAC1Cd,WAAW,CAACK,WAAW,GAAGC;YAC1BC,YAAY;YACZD,eAAe,EAAE;QACnB;QAEA,oCAAoC;QACpC,IAAIM,QAAQb,KAAK,CAAC,eAAeS,YAAY;YAC3C,MAAM,CAACS,QAAQ,GAAGC,cAAc,GAAGN,QAAQR,KAAK,CAAC;YACjD,MAAMe,WAAWD,cAAcE,IAAI,CAAC,KAAKP,IAAI,GAAGQ,OAAO,CAAC,gBAAgB;YACxEZ,aAAa,CAACQ,OAAOJ,IAAI,GAAG,GAAGM;YAC/B;QACF;QAEA,iBAAiB;QACjB,MAAMG,aAAaV,QAAQW,OAAO,CAAC;QACnC,IAAID,eAAe,CAAC,GAAG;YACrB,MAAME,MAAMZ,QAAQI,SAAS,CAAC,GAAGM,YAAYT,IAAI;YACjD,MAAMY,QAAQb,QAAQI,SAAS,CAACM,aAAa,GAAGT,IAAI;YAEpD,iCAAiC;YACjC,IAAIY,UAAU,IAAI;gBAChBjB,aAAa;gBACbC,gBAAgB,CAAC;gBACjBC,YAAYc;gBACZ;YACF;YAEA,6BAA6B;YAC7B,IAAIhB,cAAc,CAACI,QAAQb,KAAK,CAAC,SAAS;gBACxCC,WAAW,CAACU,UAAU,GAAGD;gBACzBD,aAAa;gBACbC,gBAAgB,CAAC;YACnB;YAEAJ,aAAamB;YAEb,oCAAoC;YACpC,IAAIC,UAAU,KAAK;gBACjB,UAAU,gCAAgC;YAC5C;YAEA,6CAA6C;YAC7C,IAAIA,MAAMX,UAAU,CAAC,QAAQW,MAAMC,QAAQ,CAAC,MAAM;gBAChD,MAAMC,eAAeF,MAAMT,SAAS,CAAC,GAAGS,MAAMG,MAAM,GAAG;gBACvD,MAAMC,QAAQF,aAAavB,KAAK,CAAC,KAAK0B,GAAG,CAACC,CAAAA,OAAQA,KAAKlB,IAAI;gBAC3Db,WAAW,CAACwB,IAAI,GAAGK;gBACnB;YACF;YAEA,gBAAgB;YAChB,MAAMG,aAAaP,MAAMJ,OAAO,CAAC,gBAAgB;YACjDrB,WAAW,CAACwB,IAAI,GAAGQ;QACrB,OAAO,IAAI3B,cAAcO,WAAW,CAACL,aAAa,CAACC,YAAY;YAC7D,oCAAoC;YACpC,MAAMyB,gBAAgBjC,WAAW,CAACK,WAAW;YAC7CL,WAAW,CAACK,WAAW,GAAG4B,gBACtB,GAAGA,cAAc,EAAE,EAAErB,SAAS,GAC9BA;QACN;IACF;IAEA,kCAAkC;IAClC,IAAIL,WAAW;QACbP,WAAW,CAACK,WAAW,GAAGC;IAC5B;IACA,IAAIE,YAAY;QACdR,WAAW,CAACU,UAAU,GAAGD;IAC3B;IAEA,OAAO;QAAET;QAAaC,MAAMA,KAAKY,IAAI;IAAG;AAC1C;AAEA;;CAEC,GACD,eAAeqB,cAAcC,SAAiB,EAAEC,UAAkB,gBAAgB;IAChF,gEAAgE;IAChE,MAAMC,iBAAiBF,UAAUG,WAAW,GAAGjB,OAAO,CAAC,MAAM;IAE7D,yCAAyC;IACzC,MAAMkB,WAAW;QACf,kCAAkC;QAClC,GAAGH,QAAQ,IAAI,EAAEC,eAAe,GAAG,CAAC;QACpC,8BAA8B;QAC9B,GAAGD,QAAQ,KAAK,EAAEC,eAAe,IAAI,CAAC;KACvC;IAED,KAAK,MAAMG,WAAWD,SAAU;QAC9B,MAAME,QAAQ,MAAM9C,KAAK6C,SAAS;YAAEE,OAAO;YAAMC,UAAU;QAAK;QAChE,IAAIF,MAAMb,MAAM,GAAG,GAAG;YACpB,wCAAwC;YACxC,MAAMgB,aAAaH,MAAMI,IAAI,CAACC,CAAAA;gBAC5B,MAAMC,WAAWrD,KAAKqD,QAAQ,CAACD,GAAG,OAAOR,WAAW;gBACpD,OAAOS,aAAaV;YACtB;YACA,OAAOO,cAAcH,KAAK,CAAC,EAAE;QAC/B;IACF;IAEA,OAAO;AACT;AAEA;;CAEC,GACD,OAAO,eAAeO,qBAAqBb,SAAiB;IAC1D,kBAAkB;IAClB,MAAMc,WAAW,MAAMf,cAAcC;IAErC,IAAI,CAACc,UAAU;QACb,MAAM,IAAIC,MAAM,CAAC,4BAA4B,EAAEf,WAAW;IAC5D;IAEA,oBAAoB;IACpB,MAAMtC,UAAU,MAAMJ,GAAG0D,QAAQ,CAACF,UAAU;IAG5C,6BAA6B;IAC7B,MAAM,EAAEjD,WAAW,EAAEC,IAAI,EAAE,GAAGL,iBAAiBC;IAE/C,6BAA6B;IAC7B,MAAMuD,eAAe1D,KAAK2D,QAAQ,CAAC,kBAAkBJ;IACrD,MAAMK,WAAWF,aAAaG,QAAQ,CAAC,OACnCH,aAAahD,KAAK,CAAC,IAAI,CAAC,EAAE,GAC1BoD;IAGJ,yBAAyB;IACzB,MAAMC,aAA8B;QAClCC,MAAM1D,YAAY0D,IAAI,IAAIvB;QAC1BwB,aAAa3D,YAAY2D,WAAW,IAAI;QACxCC,OAAOC,MAAMC,OAAO,CAAC9D,YAAY4D,KAAK,IAAI5D,YAAY4D,KAAK,GAAG,EAAE;QAChEG,OAAO/D,YAAY+D,KAAK,IAAI;QAC5BC,MAAMhE,YAAYgE,IAAI;QACtBC,OAAOjE,YAAYiE,KAAK;QACxBC,WAAWlE,YAAYkE,SAAS,GAAGC,SAASC,OAAOpE,YAAYkE,SAAS,GAAG,MAAMV;QACjFa,cAAcrE,YAAYqE,YAAY;QACtCC,kBAAkBtE,YAAYsE,gBAAgB;QAC9CC,WAAWvE,YAAYuE,SAAS;QAChC1E,SAASI;QACTgD;QACAK;IACF;IAEA,OAAOG;AACT;AAEA;;CAEC,GACD,OAAO,eAAee,qBAAqBpC,UAAkB,gBAAgB;IAC3E,MAAMI,UAAU,GAAGJ,QAAQ,QAAQ,CAAC;IACpC,MAAMK,QAAQ,MAAM9C,KAAK6C,SAAS;QAAEE,OAAO;IAAK;IAEhD,OAAOD,MAAMX,GAAG,CAACgB,CAAAA,IAAKpD,KAAKqD,QAAQ,CAACD,GAAG;AACzC;AAEA;;CAEC,GACD,OAAO,SAAS2B,mBAAmBhB,UAA2B;IAC5D,MAAM5D,UAAU4D,WAAW5D,OAAO,CAACyC,WAAW;IAC9C,OACEzC,QAAQ0D,QAAQ,CAAC,eACjB1D,QAAQ0D,QAAQ,CAAC,gCACjB1D,QAAQ0D,QAAQ,CAAC;AAErB"}
1
+ {"version":3,"sources":["../../src/cli/agent-definition-parser.ts"],"sourcesContent":["/**\r\n * Agent Definition Parser\r\n *\r\n * Parses agent definition files (.md) with YAML frontmatter and markdown content.\r\n * Supports agent definitions in .claude/agents/ directory structure.\r\n */\r\n\r\nimport fs from 'fs/promises';\r\nimport path from 'path';\r\nimport { fileURLToPath } from 'url';\r\nimport { glob } from 'glob';\r\n\r\n// ES Module compatibility\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\nexport interface AgentDefinition {\r\n // YAML frontmatter fields\r\n name: string;\r\n description: string;\r\n tools: string[];\r\n model: 'haiku' | 'sonnet' | 'opus';\r\n type?: string;\r\n color?: string;\r\n acl_level?: number;\r\n capabilities?: string[];\r\n validation_hooks?: string[];\r\n lifecycle?: {\r\n pre_task?: string;\r\n post_task?: string;\r\n };\r\n\r\n // Parsed markdown content\r\n content: string;\r\n\r\n // File metadata\r\n filePath: string;\r\n category?: string; // e.g., 'core-agents', 'specialized', 'custom'\r\n}\r\n\r\n/**\r\n * Parse YAML frontmatter from markdown content\r\n * Supports both Unix (LF) and Windows (CRLF) line endings\r\n */\r\nfunction parseFrontmatter(content: string): { frontmatter: Record<string, any>; body: string } {\r\n const frontmatterRegex = /^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n([\\s\\S]*)$/;\r\n const match = content.match(frontmatterRegex);\r\n\r\n if (!match) {\r\n return { frontmatter: {}, body: content };\r\n }\r\n\r\n const [, yamlContent, body] = match;\r\n\r\n \r\n // Simple YAML parser (handles basic key-value pairs, arrays, and objects)\r\n const frontmatter: Record<string, any> = {};\r\n const lines = yamlContent.split('\\n');\r\n let currentKey = '';\r\n let currentArray: string[] = [];\r\n let isInArray = false;\r\n let isInObject = false;\r\n let currentObject: Record<string, string> = {};\r\n let objectKey = '';\r\n\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n if (!trimmed || trimmed.startsWith('#')) continue;\r\n\r\n // Array item\r\n if (trimmed.startsWith('- ')) {\r\n if (!isInArray) {\r\n isInArray = true;\r\n currentArray = [];\r\n }\r\n currentArray.push(trimmed.substring(2).trim());\r\n continue;\r\n }\r\n\r\n // End of array\r\n if (isInArray && !trimmed.startsWith('- ')) {\r\n frontmatter[currentKey] = currentArray;\r\n isInArray = false;\r\n currentArray = [];\r\n }\r\n\r\n // Object field (indented key-value)\r\n if (trimmed.match(/^\\s+\\w+:/) && isInObject) {\r\n const [objKey, ...objValueParts] = trimmed.split(':');\r\n const objValue = objValueParts.join(':').trim().replace(/^[\"']|[\"']$/g, '');\r\n currentObject[objKey.trim()] = objValue;\r\n continue;\r\n }\r\n\r\n // Key-value pair\r\n const colonIndex = trimmed.indexOf(':');\r\n if (colonIndex !== -1) {\r\n const key = trimmed.substring(0, colonIndex).trim();\r\n const value = trimmed.substring(colonIndex + 1).trim();\r\n\r\n // Check if this starts an object\r\n if (value === '') {\r\n isInObject = true;\r\n currentObject = {};\r\n objectKey = key;\r\n continue;\r\n }\r\n\r\n // End previous object if any\r\n if (isInObject && !trimmed.match(/^\\s+/)) {\r\n frontmatter[objectKey] = currentObject;\r\n isInObject = false;\r\n currentObject = {};\r\n }\r\n\r\n currentKey = key;\r\n\r\n // Multi-line string (starts with |)\r\n if (value === '|') {\r\n continue; // Will be handled by next lines\r\n }\r\n\r\n // Inline array (e.g., [item1, item2, item3])\r\n if (value.startsWith('[') && value.endsWith(']')) {\r\n const arrayContent = value.substring(1, value.length - 1);\r\n const items = arrayContent.split(',').map(item => item.trim());\r\n frontmatter[key] = items;\r\n continue;\r\n }\r\n\r\n // Remove quotes\r\n const cleanValue = value.replace(/^[\"']|[\"']$/g, '');\r\n frontmatter[key] = cleanValue;\r\n } else if (currentKey && trimmed && !isInArray && !isInObject) {\r\n // Continuation of multi-line string\r\n const existingValue = frontmatter[currentKey];\r\n frontmatter[currentKey] = existingValue\r\n ? `${existingValue}\\n${trimmed}`\r\n : trimmed;\r\n }\r\n }\r\n\r\n // Handle trailing array or object\r\n if (isInArray) {\r\n frontmatter[currentKey] = currentArray;\r\n }\r\n if (isInObject) {\r\n frontmatter[objectKey] = currentObject;\r\n }\r\n\r\n return { frontmatter, body: body.trim() };\r\n}\r\n\r\n/**\r\n * Find agent definition file by agent type/name\r\n * Searches multiple locations for agent definitions\r\n */\r\nasync function findAgentFile(agentType: string, baseDir: string = '.claude/agents'): Promise<string | null> {\r\n // Normalize agent type (handle both kebab-case and underscores)\r\n const normalizedType = agentType.toLowerCase().replace(/_/g, '-');\r\n\r\n // Search locations (in order of priority)\r\n const searchLocations = [\r\n baseDir, // Current working directory\r\n '.claude/agents', // Standard location\r\n path.join(__dirname, '../../.claude/agents'), // CLI installation directory\r\n '/app/.claude/agents', // Docker container location\r\n ];\r\n\r\n // Search patterns (in order of priority)\r\n const searchPatterns = [\r\n // Exact match in any subdirectory\r\n (loc: string) => `${loc}/**/${normalizedType}.md`,\r\n // Match with different casing\r\n (loc: string) => `${loc}/**/*${normalizedType}*.md`,\r\n ];\r\n\r\n for (const location of searchLocations) {\r\n for (const patternFn of searchPatterns) {\r\n const pattern = patternFn(location);\r\n try {\r\n const files = await glob(pattern, { nodir: true, absolute: true });\r\n if (files.length > 0) {\r\n // Prefer exact match over partial match\r\n const exactMatch = files.find(f => {\r\n const basename = path.basename(f, '.md').toLowerCase();\r\n return basename === normalizedType;\r\n });\r\n return exactMatch || files[0];\r\n }\r\n } catch (error) {\r\n // Skip location if it doesn't exist\r\n continue;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Parse agent definition from file\r\n */\r\nexport async function parseAgentDefinition(agentType: string): Promise<AgentDefinition> {\r\n // Find agent file\r\n const filePath = await findAgentFile(agentType);\r\n\r\n if (!filePath) {\r\n throw new Error(`Agent definition not found: ${agentType}`);\r\n }\r\n\r\n // Read file content\r\n const content = await fs.readFile(filePath, 'utf-8');\r\n\r\n \r\n // Parse frontmatter and body\r\n const { frontmatter, body } = parseFrontmatter(content);\r\n\r\n // Extract category from path\r\n const relativePath = path.relative('.claude/agents', filePath);\r\n const category = relativePath.includes('/')\r\n ? relativePath.split('/')[0]\r\n : undefined;\r\n\r\n \r\n // Build agent definition\r\n const definition: AgentDefinition = {\r\n name: frontmatter.name || agentType,\r\n description: frontmatter.description || '',\r\n tools: Array.isArray(frontmatter.tools) ? frontmatter.tools : [],\r\n model: frontmatter.model || 'haiku',\r\n type: frontmatter.type,\r\n color: frontmatter.color,\r\n acl_level: frontmatter.acl_level ? parseInt(String(frontmatter.acl_level), 10) : undefined,\r\n capabilities: frontmatter.capabilities,\r\n validation_hooks: frontmatter.validation_hooks,\r\n lifecycle: frontmatter.lifecycle,\r\n content: body,\r\n filePath,\r\n category,\r\n };\r\n\r\n return definition;\r\n}\r\n\r\n/**\r\n * List all available agent definitions\r\n */\r\nexport async function listAgentDefinitions(baseDir: string = '.claude/agents'): Promise<string[]> {\r\n const pattern = `${baseDir}/**/*.md`;\r\n const files = await glob(pattern, { nodir: true });\r\n\r\n return files.map(f => path.basename(f, '.md'));\r\n}\r\n\r\n/**\r\n * Check if agent definition includes CFN Loop protocol\r\n */\r\nexport function hasCFNLoopProtocol(definition: AgentDefinition): boolean {\r\n const content = definition.content.toLowerCase();\r\n return (\r\n content.includes('cfn loop') &&\r\n content.includes('redis completion protocol') ||\r\n content.includes('invoke-waiting-mode.sh')\r\n );\r\n}\r\n"],"names":["fs","path","fileURLToPath","glob","__filename","url","__dirname","dirname","parseFrontmatter","content","frontmatterRegex","match","frontmatter","body","yamlContent","lines","split","currentKey","currentArray","isInArray","isInObject","currentObject","objectKey","line","trimmed","trim","startsWith","push","substring","objKey","objValueParts","objValue","join","replace","colonIndex","indexOf","key","value","endsWith","arrayContent","length","items","map","item","cleanValue","existingValue","findAgentFile","agentType","baseDir","normalizedType","toLowerCase","searchLocations","searchPatterns","loc","location","patternFn","pattern","files","nodir","absolute","exactMatch","find","f","basename","error","parseAgentDefinition","filePath","Error","readFile","relativePath","relative","category","includes","undefined","definition","name","description","tools","Array","isArray","model","type","color","acl_level","parseInt","String","capabilities","validation_hooks","lifecycle","listAgentDefinitions","hasCFNLoopProtocol"],"mappings":"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"}
@@ -16,6 +16,9 @@ import fs from 'fs/promises';
16
16
  import path from 'path';
17
17
  import os from 'os';
18
18
  const execAsync = promisify(exec);
19
+ // Bug #6 Fix: Read Redis connection parameters from process.env
20
+ const redisHost = process.env.CFN_REDIS_HOST || 'cfn-redis';
21
+ const redisPort = process.env.CFN_REDIS_PORT || '6379';
19
22
  /**
20
23
  * Extract confidence score from agent output
21
24
  * Looks for patterns like:
@@ -57,7 +60,7 @@ const execAsync = promisify(exec);
57
60
  try {
58
61
  // Step 1: Signal completion
59
62
  console.log('[CFN Protocol] Step 1: Signaling completion...');
60
- await execAsync(`redis-cli lpush "swarm:${taskId}:${agentId}:done" "complete"`);
63
+ await execAsync(`redis-cli -h "${redisHost}" -p "${redisPort}" lpush "swarm:${taskId}:${agentId}:done" "complete"`);
61
64
  console.log('[CFN Protocol] ✓ Completion signaled');
62
65
  // Step 2: Extract and report confidence
63
66
  const confidence = extractConfidence(output);
@@ -221,18 +224,50 @@ const execAsync = promisify(exec);
221
224
  console.log(`[agent-executor] Prompt file: ${promptFile}`);
222
225
  return new Promise((resolve)=>{
223
226
  const scriptPath = path.join('.claude', 'skills', 'agent-execution', 'execute-agent.sh');
224
- // Build environment variables
225
- const env = {
226
- ...process.env,
227
- AGENT_TYPE: definition.name,
228
- AGENT_ID: agentId,
229
- AGENT_MODEL: definition.model,
230
- AGENT_TOOLS: definition.tools.join(','),
231
- TASK_ID: context.taskId || '',
232
- ITERATION: String(context.iteration || 1),
233
- MODE: context.mode || 'cli',
234
- PROMPT_FILE: promptFile
235
- };
227
+ // Build environment variables - WHITELIST ONLY APPROACH
228
+ // SECURITY FIX: Do not use ...process.env spread which exposes ALL variables including secrets
229
+ // Instead, explicitly whitelist safe variables to pass to spawned process
230
+ const safeEnvVars = [
231
+ 'CFN_REDIS_HOST',
232
+ 'CFN_REDIS_PORT',
233
+ 'CFN_REDIS_URL',
234
+ 'CFN_MEMORY_BUDGET',
235
+ 'CFN_API_HOST',
236
+ 'CFN_API_PORT',
237
+ 'CFN_LOG_LEVEL',
238
+ 'CFN_LOG_FORMAT',
239
+ 'CFN_CONTAINER_MODE',
240
+ 'CFN_DOCKER_SOCKET',
241
+ 'CFN_NETWORK_NAME',
242
+ 'CFN_CUSTOM_ROUTING',
243
+ 'CFN_DEFAULT_PROVIDER',
244
+ 'NODE_ENV',
245
+ 'PATH',
246
+ 'HOME'
247
+ ];
248
+ const env = {};
249
+ // Add whitelisted variables
250
+ for (const key of safeEnvVars){
251
+ const value = process.env[key];
252
+ if (value !== undefined) {
253
+ env[key] = value;
254
+ }
255
+ }
256
+ // Add API key only when explicitly needed (with strict validation)
257
+ if (process.env.ANTHROPIC_API_KEY) {
258
+ if (process.env.ANTHROPIC_API_KEY.match(/^sk-[a-zA-Z0-9-]+$/)) {
259
+ env.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY;
260
+ }
261
+ }
262
+ // Add agent execution context (safe values)
263
+ env.AGENT_TYPE = definition.name;
264
+ env.AGENT_ID = agentId;
265
+ env.AGENT_MODEL = definition.model;
266
+ env.AGENT_TOOLS = definition.tools.join(',');
267
+ env.TASK_ID = context.taskId || '';
268
+ env.ITERATION = String(context.iteration || 1);
269
+ env.MODE = context.mode || 'cli';
270
+ env.PROMPT_FILE = promptFile;
236
271
  // Check if execute script exists
237
272
  fs.access(scriptPath).then(()=>{
238
273
  // Use execution script
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/agent-executor.ts"],"sourcesContent":["/**\r\n * Agent Executor\r\n *\r\n * Executes CLI-spawned agents by:\r\n * 1. Checking custom routing configuration (z.ai vs Anthropic)\r\n * 2. Invoking the appropriate API\r\n * 3. Managing agent lifecycle and output\r\n */\r\n\r\nimport { spawn } from 'child_process';\r\nimport { exec } from 'child_process';\r\nimport { promisify } from 'util';\r\nimport { AgentDefinition } from './agent-definition-parser.js';\r\nimport { TaskContext, getAgentId } from './agent-prompt-builder.js';\r\nimport { buildCLIAgentSystemPrompt, loadContextFromEnv } from './cli-agent-context.js';\r\nimport {\r\n loadMessages,\r\n storeMessage,\r\n getCurrentFork,\r\n formatMessagesForAPI,\r\n type Message\r\n} from './conversation-fork.js';\r\nimport { convertToolNames } from './tool-definitions.js';\r\nimport fs from 'fs/promises';\r\nimport path from 'path';\r\nimport os from 'os';\r\n\r\nconst execAsync = promisify(exec);\r\n\r\nexport interface AgentExecutionResult {\r\n success: boolean;\r\n agentId: string;\r\n output?: string;\r\n error?: string;\r\n exitCode: number;\r\n}\r\n\r\n/**\r\n * Extract confidence score from agent output\r\n * Looks for patterns like:\r\n * - \"confidence: 0.85\"\r\n * - \"Confidence: 0.90\"\r\n * - \"confidence score: 0.95\"\r\n * - \"self-confidence: 0.88\"\r\n */\r\nfunction extractConfidence(output: string | undefined): number {\r\n if (!output) return 0.85;\r\n\r\n // Try multiple patterns\r\n const patterns = [\r\n /confidence:\\s*([0-9.]+)/i,\r\n /confidence\\s+score:\\s*([0-9.]+)/i,\r\n /self-confidence:\\s*([0-9.]+)/i,\r\n /my\\s+confidence:\\s*([0-9.]+)/i,\r\n ];\r\n\r\n for (const pattern of patterns) {\r\n const match = output.match(pattern);\r\n if (match && match[1]) {\r\n const score = parseFloat(match[1]);\r\n if (score >= 0 && score <= 1) {\r\n return score;\r\n }\r\n }\r\n }\r\n\r\n // Default to 0.85 if not found\r\n return 0.85;\r\n}\r\n\r\n/**\r\n * Execute CFN Loop protocol after agent completes work\r\n *\r\n * Steps:\r\n * 1. Signal completion to orchestrator\r\n * 2. Report confidence score\r\n * 3. Enter waiting mode (if iterations enabled)\r\n */\r\nasync function executeCFNProtocol(\r\n taskId: string,\r\n agentId: string,\r\n output: string | undefined,\r\n iteration: number,\r\n enableIterations: boolean = false,\r\n maxIterations: number = 10\r\n): Promise<void> {\r\n console.log(`\\n[CFN Protocol] Starting for agent ${agentId}`);\r\n console.log(`[CFN Protocol] Task ID: ${taskId}, Iteration: ${iteration}`);\r\n\r\n try {\r\n // Step 1: Signal completion\r\n console.log('[CFN Protocol] Step 1: Signaling completion...');\r\n await execAsync(`redis-cli lpush \"swarm:${taskId}:${agentId}:done\" \"complete\"`);\r\n console.log('[CFN Protocol] ✓ Completion signaled');\r\n\r\n // Step 2: Extract and report confidence\r\n const confidence = extractConfidence(output);\r\n console.log(`[CFN Protocol] Step 2: Reporting confidence (${confidence})...`);\r\n\r\n const reportCmd = `./.claude/skills/cfn-redis-coordination/report-completion.sh \\\r\n --task-id \"${taskId}\" \\\r\n --agent-id \"${agentId}\" \\\r\n --confidence ${confidence} \\\r\n --iteration ${iteration}`;\r\n\r\n await execAsync(reportCmd);\r\n console.log('[CFN Protocol] ✓ Confidence reported');\r\n\r\n // Step 3: Exit cleanly (BUG #18 FIX - removed waiting mode)\r\n // Orchestrator will spawn appropriate specialist agent for next iteration\r\n // This enables adaptive agent specialization based on feedback type\r\n console.log('[CFN Protocol] Step 3: Exiting cleanly (iteration complete)');\r\n console.log('[CFN Protocol] Protocol complete\\n');\r\n } catch (error) {\r\n console.error('[CFN Protocol] Error:', error);\r\n throw error;\r\n }\r\n}\r\n\r\n/**\r\n * Check if custom routing (z.ai) is enabled\r\n */\r\nasync function isCustomRoutingEnabled(): Promise<boolean> {\r\n // Check environment variable\r\n if (process.env.CLAUDE_API_PROVIDER === 'zai') {\r\n return true;\r\n }\r\n\r\n // Check config file (.claude/config/api-provider.json)\r\n try {\r\n const configPath = path.join('.claude', 'config', 'api-provider.json');\r\n const config = JSON.parse(await fs.readFile(configPath, 'utf-8'));\r\n return config.provider === 'zai' || config.provider === 'z.ai';\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Get API provider configuration\r\n */\r\nasync function getAPIProvider(): Promise<'anthropic' | 'zai'> {\r\n const customEnabled = await isCustomRoutingEnabled();\r\n return customEnabled ? 'zai' : 'anthropic';\r\n}\r\n\r\n/**\r\n * Execute agent using direct API calls\r\n */\r\nasync function executeViaAPI(\r\n definition: AgentDefinition,\r\n prompt: string,\r\n context: TaskContext\r\n): Promise<AgentExecutionResult> {\r\n const agentId = getAgentId(definition, context);\r\n\r\n console.log(`[agent-executor] Executing agent via API: ${definition.name}`);\r\n console.log(`[agent-executor] Agent ID: ${agentId}`);\r\n console.log(`[agent-executor] Model: ${definition.model}`);\r\n console.log('');\r\n\r\n try {\r\n // Check for conversation fork (Sprint 4 enhancement)\r\n const forkId = process.env.FORK_ID || await getCurrentFork(context.taskId || '', agentId);\r\n const iteration = context.iteration || 1;\r\n\r\n let systemPrompt: string;\r\n let messages: Array<{role: string, content: string}> = [];\r\n\r\n if (forkId && iteration > 1) {\r\n // Continue from fork (iterations 2+)\r\n console.log(`[agent-executor] Continuing from fork: ${forkId}`);\r\n\r\n // Load fork messages\r\n const forkMessages = await loadMessages(context.taskId || '', agentId, forkId);\r\n console.log(`[agent-executor] Loaded ${forkMessages.length} messages from fork`);\r\n\r\n // Extract system prompt from first message (it's always the system message)\r\n // The fork messages are assistant/user pairs, we need to add system separately\r\n systemPrompt = forkMessages[0]?.content || '';\r\n\r\n // Format remaining messages for API\r\n messages = formatMessagesForAPI(forkMessages.slice(1));\r\n\r\n // Add new user message with feedback\r\n messages.push({\r\n role: 'user',\r\n content: prompt\r\n });\r\n\r\n console.log(`[agent-executor] Fork continuation: ${messages.length} messages`);\r\n } else {\r\n // New conversation (iteration 1)\r\n console.log('[agent-executor] Starting new conversation');\r\n console.log('[agent-executor] Building system prompt with context...');\r\n\r\n const contextOptions = loadContextFromEnv();\r\n contextOptions.agentType = definition.name;\r\n if (context.taskId) contextOptions.taskId = context.taskId;\r\n if (context.iteration) contextOptions.iteration = context.iteration;\r\n\r\n systemPrompt = await buildCLIAgentSystemPrompt(contextOptions);\r\n console.log('[agent-executor] System prompt built successfully');\r\n\r\n // Initial user message\r\n messages = [{\r\n role: 'user',\r\n content: prompt\r\n }];\r\n }\r\n\r\n console.log('');\r\n\r\n // Dynamic import to avoid bundling issues\r\n const { executeAgentAPI } = await import('./anthropic-client.js');\r\n\r\n // Convert agent tool names to Anthropic API format\r\n const tools = definition.tools && definition.tools.length > 0\r\n ? convertToolNames(definition.tools)\r\n : undefined;\r\n\r\n const result = await executeAgentAPI(\r\n definition.name,\r\n agentId,\r\n definition.model,\r\n prompt,\r\n systemPrompt,\r\n messages.length > 1 ? messages : undefined,\r\n undefined, // maxTokens (use default)\r\n tools // Pass converted tools\r\n );\r\n\r\n // Store messages in conversation history (for future forking)\r\n if (context.taskId) {\r\n // Store user message\r\n const userMessage: Message = {\r\n role: 'user',\r\n content: prompt,\r\n iteration,\r\n timestamp: new Date().toISOString()\r\n };\r\n await storeMessage(context.taskId, agentId, userMessage);\r\n\r\n // Store assistant response\r\n if (result.output) {\r\n const assistantMessage: Message = {\r\n role: 'assistant',\r\n content: result.output,\r\n iteration,\r\n timestamp: new Date().toISOString()\r\n };\r\n await storeMessage(context.taskId, agentId, assistantMessage);\r\n }\r\n\r\n console.log(`[agent-executor] Stored messages for iteration ${iteration}`);\r\n\r\n // Execute CFN Loop protocol (signal completion, report confidence, enter waiting mode)\r\n // Iterations are enabled for CFN Loop tasks (indicated by presence of taskId)\r\n try {\r\n const maxIterations = 10; // Default max iterations\r\n const enableIterations = true; // Enable iterations for all CFN Loop tasks\r\n\r\n await executeCFNProtocol(\r\n context.taskId,\r\n agentId,\r\n result.output,\r\n iteration,\r\n enableIterations,\r\n maxIterations\r\n );\r\n } catch (error) {\r\n console.error('[agent-executor] CFN Protocol execution failed:', error);\r\n // Don't fail the entire agent execution if CFN protocol fails\r\n // This allows agents to complete even if Redis coordination has issues\r\n }\r\n }\r\n\r\n return {\r\n success: result.success,\r\n agentId,\r\n output: result.output,\r\n error: result.error,\r\n exitCode: result.success ? 0 : 1,\r\n };\r\n } catch (error) {\r\n console.error('[agent-executor] API execution failed:', error);\r\n return {\r\n success: false,\r\n agentId,\r\n error: error instanceof Error ? error.message : String(error),\r\n exitCode: 1,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Execute agent using shell script (fallback/simulation)\r\n */\r\nasync function executeViaScript(\r\n definition: AgentDefinition,\r\n prompt: string,\r\n context: TaskContext\r\n): Promise<AgentExecutionResult> {\r\n const agentId = getAgentId(definition, context);\r\n\r\n // Write prompt to temporary file\r\n const tmpDir = os.tmpdir();\r\n const promptFile = path.join(tmpDir, `agent-${agentId}-${Date.now()}.md`);\r\n await fs.writeFile(promptFile, prompt, 'utf-8');\r\n\r\n console.log(`[agent-executor] Executing agent via script: ${definition.name}`);\r\n console.log(`[agent-executor] Agent ID: ${agentId}`);\r\n console.log(`[agent-executor] Model: ${definition.model}`);\r\n console.log(`[agent-executor] Prompt file: ${promptFile}`);\r\n\r\n return new Promise((resolve) => {\r\n const scriptPath = path.join('.claude', 'skills', 'agent-execution', 'execute-agent.sh');\r\n\r\n // Build environment variables\r\n const env = {\r\n ...process.env,\r\n AGENT_TYPE: definition.name,\r\n AGENT_ID: agentId,\r\n AGENT_MODEL: definition.model,\r\n AGENT_TOOLS: definition.tools.join(','),\r\n TASK_ID: context.taskId || '',\r\n ITERATION: String(context.iteration || 1),\r\n MODE: context.mode || 'cli',\r\n PROMPT_FILE: promptFile,\r\n };\r\n\r\n // Check if execute script exists\r\n fs.access(scriptPath)\r\n .then(() => {\r\n // Use execution script\r\n const proc = spawn('bash', [scriptPath], { env, stdio: 'inherit' });\r\n\r\n proc.on('exit', (code) => {\r\n resolve({\r\n success: code === 0,\r\n agentId,\r\n exitCode: code || 0,\r\n });\r\n });\r\n\r\n proc.on('error', (err) => {\r\n resolve({\r\n success: false,\r\n agentId,\r\n error: err.message,\r\n exitCode: 1,\r\n });\r\n });\r\n })\r\n .catch(() => {\r\n // Fallback: Print prompt\r\n console.log('\\n=== Agent Prompt ===');\r\n console.log(prompt.substring(0, 500) + '...');\r\n console.log('\\n[agent-executor] Execution script not found');\r\n console.log('[agent-executor] Using simulation mode\\n');\r\n\r\n resolve({\r\n success: true,\r\n agentId,\r\n output: prompt,\r\n exitCode: 0,\r\n });\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Main agent execution function\r\n */\r\nexport async function executeAgent(\r\n definition: AgentDefinition,\r\n prompt: string,\r\n context: TaskContext,\r\n options: {\r\n method?: 'auto' | 'api' | 'script';\r\n } = {}\r\n): Promise<AgentExecutionResult> {\r\n const method = options.method || 'auto';\r\n\r\n // Auto-select execution method\r\n if (method === 'auto') {\r\n // Try API execution first, fallback to script if API key not available\r\n try {\r\n return await executeViaAPI(definition, prompt, context);\r\n } catch (error) {\r\n if (error instanceof Error && error.message.includes('API key not found')) {\r\n console.log('[agent-executor] API key not found, using script fallback');\r\n return executeViaScript(definition, prompt, context);\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n if (method === 'api') {\r\n return executeViaAPI(definition, prompt, context);\r\n }\r\n\r\n return executeViaScript(definition, prompt, context);\r\n}\r\n\r\n/**\r\n * Write agent output to file for debugging\r\n */\r\nexport async function saveAgentOutput(\r\n agentId: string,\r\n output: string,\r\n outputDir: string = '.claude/tmp/agent-output'\r\n): Promise<string> {\r\n await fs.mkdir(outputDir, { recursive: true });\r\n\r\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-');\r\n const filename = `${agentId}-${timestamp}.txt`;\r\n const filepath = path.join(outputDir, filename);\r\n\r\n await fs.writeFile(filepath, output, 'utf-8');\r\n\r\n return filepath;\r\n}\r\n"],"names":["spawn","exec","promisify","getAgentId","buildCLIAgentSystemPrompt","loadContextFromEnv","loadMessages","storeMessage","getCurrentFork","formatMessagesForAPI","convertToolNames","fs","path","os","execAsync","extractConfidence","output","patterns","pattern","match","score","parseFloat","executeCFNProtocol","taskId","agentId","iteration","enableIterations","maxIterations","console","log","confidence","reportCmd","error","isCustomRoutingEnabled","process","env","CLAUDE_API_PROVIDER","configPath","join","config","JSON","parse","readFile","provider","getAPIProvider","customEnabled","executeViaAPI","definition","prompt","context","name","model","forkId","FORK_ID","systemPrompt","messages","forkMessages","length","content","slice","push","role","contextOptions","agentType","executeAgentAPI","tools","undefined","result","userMessage","timestamp","Date","toISOString","assistantMessage","success","exitCode","Error","message","String","executeViaScript","tmpDir","tmpdir","promptFile","now","writeFile","Promise","resolve","scriptPath","AGENT_TYPE","AGENT_ID","AGENT_MODEL","AGENT_TOOLS","TASK_ID","ITERATION","MODE","mode","PROMPT_FILE","access","then","proc","stdio","on","code","err","catch","substring","executeAgent","options","method","includes","saveAgentOutput","outputDir","mkdir","recursive","replace","filename","filepath"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/cli/agent-executor.ts"],"sourcesContent":["/**\r\n * Agent Executor\r\n *\r\n * Executes CLI-spawned agents by:\r\n * 1. Checking custom routing configuration (z.ai vs Anthropic)\r\n * 2. Invoking the appropriate API\r\n * 3. Managing agent lifecycle and output\r\n */\r\n\r\nimport { spawn } from 'child_process';\r\nimport { exec } from 'child_process';\r\nimport { promisify } from 'util';\r\nimport { AgentDefinition } from './agent-definition-parser.js';\r\nimport { TaskContext, getAgentId } from './agent-prompt-builder.js';\r\nimport { buildCLIAgentSystemPrompt, loadContextFromEnv } from './cli-agent-context.js';\r\nimport {\r\n loadMessages,\r\n storeMessage,\r\n getCurrentFork,\r\n formatMessagesForAPI,\r\n type Message\r\n} from './conversation-fork.js';\r\nimport { convertToolNames } from './tool-definitions.js';\r\nimport fs from 'fs/promises';\r\nimport path from 'path';\r\nimport os from 'os';\r\n\r\nconst execAsync = promisify(exec);\r\n\r\n// Bug #6 Fix: Read Redis connection parameters from process.env\r\nconst redisHost = process.env.CFN_REDIS_HOST || 'cfn-redis';\r\nconst redisPort = process.env.CFN_REDIS_PORT || '6379';\r\n\r\nexport interface AgentExecutionResult {\r\n success: boolean;\r\n agentId: string;\r\n output?: string;\r\n error?: string;\r\n exitCode: number;\r\n}\r\n\r\n/**\r\n * Extract confidence score from agent output\r\n * Looks for patterns like:\r\n * - \"confidence: 0.85\"\r\n * - \"Confidence: 0.90\"\r\n * - \"confidence score: 0.95\"\r\n * - \"self-confidence: 0.88\"\r\n */\r\nfunction extractConfidence(output: string | undefined): number {\r\n if (!output) return 0.85;\r\n\r\n // Try multiple patterns\r\n const patterns = [\r\n /confidence:\\s*([0-9.]+)/i,\r\n /confidence\\s+score:\\s*([0-9.]+)/i,\r\n /self-confidence:\\s*([0-9.]+)/i,\r\n /my\\s+confidence:\\s*([0-9.]+)/i,\r\n ];\r\n\r\n for (const pattern of patterns) {\r\n const match = output.match(pattern);\r\n if (match && match[1]) {\r\n const score = parseFloat(match[1]);\r\n if (score >= 0 && score <= 1) {\r\n return score;\r\n }\r\n }\r\n }\r\n\r\n // Default to 0.85 if not found\r\n return 0.85;\r\n}\r\n\r\n/**\r\n * Execute CFN Loop protocol after agent completes work\r\n *\r\n * Steps:\r\n * 1. Signal completion to orchestrator\r\n * 2. Report confidence score\r\n * 3. Enter waiting mode (if iterations enabled)\r\n */\r\nasync function executeCFNProtocol(\r\n taskId: string,\r\n agentId: string,\r\n output: string | undefined,\r\n iteration: number,\r\n enableIterations: boolean = false,\r\n maxIterations: number = 10\r\n): Promise<void> {\r\n console.log(`\\n[CFN Protocol] Starting for agent ${agentId}`);\r\n console.log(`[CFN Protocol] Task ID: ${taskId}, Iteration: ${iteration}`);\r\n\r\n try {\r\n // Step 1: Signal completion\r\n console.log('[CFN Protocol] Step 1: Signaling completion...');\r\n await execAsync(`redis-cli -h \"${redisHost}\" -p \"${redisPort}\" lpush \"swarm:${taskId}:${agentId}:done\" \"complete\"`);\r\n console.log('[CFN Protocol] ✓ Completion signaled');\r\n\r\n // Step 2: Extract and report confidence\r\n const confidence = extractConfidence(output);\r\n console.log(`[CFN Protocol] Step 2: Reporting confidence (${confidence})...`);\r\n\r\n const reportCmd = `./.claude/skills/cfn-redis-coordination/report-completion.sh \\\r\n --task-id \"${taskId}\" \\\r\n --agent-id \"${agentId}\" \\\r\n --confidence ${confidence} \\\r\n --iteration ${iteration}`;\r\n\r\n await execAsync(reportCmd);\r\n console.log('[CFN Protocol] ✓ Confidence reported');\r\n\r\n // Step 3: Exit cleanly (BUG #18 FIX - removed waiting mode)\r\n // Orchestrator will spawn appropriate specialist agent for next iteration\r\n // This enables adaptive agent specialization based on feedback type\r\n console.log('[CFN Protocol] Step 3: Exiting cleanly (iteration complete)');\r\n console.log('[CFN Protocol] Protocol complete\\n');\r\n } catch (error) {\r\n console.error('[CFN Protocol] Error:', error);\r\n throw error;\r\n }\r\n}\r\n\r\n/**\r\n * Check if custom routing (z.ai) is enabled\r\n */\r\nasync function isCustomRoutingEnabled(): Promise<boolean> {\r\n // Check environment variable\r\n if (process.env.CLAUDE_API_PROVIDER === 'zai') {\r\n return true;\r\n }\r\n\r\n // Check config file (.claude/config/api-provider.json)\r\n try {\r\n const configPath = path.join('.claude', 'config', 'api-provider.json');\r\n const config = JSON.parse(await fs.readFile(configPath, 'utf-8'));\r\n return config.provider === 'zai' || config.provider === 'z.ai';\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Get API provider configuration\r\n */\r\nasync function getAPIProvider(): Promise<'anthropic' | 'zai'> {\r\n const customEnabled = await isCustomRoutingEnabled();\r\n return customEnabled ? 'zai' : 'anthropic';\r\n}\r\n\r\n/**\r\n * Execute agent using direct API calls\r\n */\r\nasync function executeViaAPI(\r\n definition: AgentDefinition,\r\n prompt: string,\r\n context: TaskContext\r\n): Promise<AgentExecutionResult> {\r\n const agentId = getAgentId(definition, context);\r\n\r\n console.log(`[agent-executor] Executing agent via API: ${definition.name}`);\r\n console.log(`[agent-executor] Agent ID: ${agentId}`);\r\n console.log(`[agent-executor] Model: ${definition.model}`);\r\n console.log('');\r\n\r\n try {\r\n // Check for conversation fork (Sprint 4 enhancement)\r\n const forkId = process.env.FORK_ID || await getCurrentFork(context.taskId || '', agentId);\r\n const iteration = context.iteration || 1;\r\n\r\n let systemPrompt: string;\r\n let messages: Array<{role: string, content: string}> = [];\r\n\r\n if (forkId && iteration > 1) {\r\n // Continue from fork (iterations 2+)\r\n console.log(`[agent-executor] Continuing from fork: ${forkId}`);\r\n\r\n // Load fork messages\r\n const forkMessages = await loadMessages(context.taskId || '', agentId, forkId);\r\n console.log(`[agent-executor] Loaded ${forkMessages.length} messages from fork`);\r\n\r\n // Extract system prompt from first message (it's always the system message)\r\n // The fork messages are assistant/user pairs, we need to add system separately\r\n systemPrompt = forkMessages[0]?.content || '';\r\n\r\n // Format remaining messages for API\r\n messages = formatMessagesForAPI(forkMessages.slice(1));\r\n\r\n // Add new user message with feedback\r\n messages.push({\r\n role: 'user',\r\n content: prompt\r\n });\r\n\r\n console.log(`[agent-executor] Fork continuation: ${messages.length} messages`);\r\n } else {\r\n // New conversation (iteration 1)\r\n console.log('[agent-executor] Starting new conversation');\r\n console.log('[agent-executor] Building system prompt with context...');\r\n\r\n const contextOptions = loadContextFromEnv();\r\n contextOptions.agentType = definition.name;\r\n if (context.taskId) contextOptions.taskId = context.taskId;\r\n if (context.iteration) contextOptions.iteration = context.iteration;\r\n\r\n systemPrompt = await buildCLIAgentSystemPrompt(contextOptions);\r\n console.log('[agent-executor] System prompt built successfully');\r\n\r\n // Initial user message\r\n messages = [{\r\n role: 'user',\r\n content: prompt\r\n }];\r\n }\r\n\r\n console.log('');\r\n\r\n // Dynamic import to avoid bundling issues\r\n const { executeAgentAPI } = await import('./anthropic-client.js');\r\n\r\n // Convert agent tool names to Anthropic API format\r\n const tools = definition.tools && definition.tools.length > 0\r\n ? convertToolNames(definition.tools)\r\n : undefined;\r\n\r\n const result = await executeAgentAPI(\r\n definition.name,\r\n agentId,\r\n definition.model,\r\n prompt,\r\n systemPrompt,\r\n messages.length > 1 ? messages : undefined,\r\n undefined, // maxTokens (use default)\r\n tools // Pass converted tools\r\n );\r\n\r\n // Store messages in conversation history (for future forking)\r\n if (context.taskId) {\r\n // Store user message\r\n const userMessage: Message = {\r\n role: 'user',\r\n content: prompt,\r\n iteration,\r\n timestamp: new Date().toISOString()\r\n };\r\n await storeMessage(context.taskId, agentId, userMessage);\r\n\r\n // Store assistant response\r\n if (result.output) {\r\n const assistantMessage: Message = {\r\n role: 'assistant',\r\n content: result.output,\r\n iteration,\r\n timestamp: new Date().toISOString()\r\n };\r\n await storeMessage(context.taskId, agentId, assistantMessage);\r\n }\r\n\r\n console.log(`[agent-executor] Stored messages for iteration ${iteration}`);\r\n\r\n // Execute CFN Loop protocol (signal completion, report confidence, enter waiting mode)\r\n // Iterations are enabled for CFN Loop tasks (indicated by presence of taskId)\r\n try {\r\n const maxIterations = 10; // Default max iterations\r\n const enableIterations = true; // Enable iterations for all CFN Loop tasks\r\n\r\n await executeCFNProtocol(\r\n context.taskId,\r\n agentId,\r\n result.output,\r\n iteration,\r\n enableIterations,\r\n maxIterations\r\n );\r\n } catch (error) {\r\n console.error('[agent-executor] CFN Protocol execution failed:', error);\r\n // Don't fail the entire agent execution if CFN protocol fails\r\n // This allows agents to complete even if Redis coordination has issues\r\n }\r\n }\r\n\r\n return {\r\n success: result.success,\r\n agentId,\r\n output: result.output,\r\n error: result.error,\r\n exitCode: result.success ? 0 : 1,\r\n };\r\n } catch (error) {\r\n console.error('[agent-executor] API execution failed:', error);\r\n return {\r\n success: false,\r\n agentId,\r\n error: error instanceof Error ? error.message : String(error),\r\n exitCode: 1,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Execute agent using shell script (fallback/simulation)\r\n */\r\nasync function executeViaScript(\r\n definition: AgentDefinition,\r\n prompt: string,\r\n context: TaskContext\r\n): Promise<AgentExecutionResult> {\r\n const agentId = getAgentId(definition, context);\r\n\r\n // Write prompt to temporary file\r\n const tmpDir = os.tmpdir();\r\n const promptFile = path.join(tmpDir, `agent-${agentId}-${Date.now()}.md`);\r\n await fs.writeFile(promptFile, prompt, 'utf-8');\r\n\r\n console.log(`[agent-executor] Executing agent via script: ${definition.name}`);\r\n console.log(`[agent-executor] Agent ID: ${agentId}`);\r\n console.log(`[agent-executor] Model: ${definition.model}`);\r\n console.log(`[agent-executor] Prompt file: ${promptFile}`);\r\n\r\n return new Promise((resolve) => {\r\n const scriptPath = path.join('.claude', 'skills', 'agent-execution', 'execute-agent.sh');\r\n\r\n // Build environment variables - WHITELIST ONLY APPROACH\r\n // SECURITY FIX: Do not use ...process.env spread which exposes ALL variables including secrets\r\n // Instead, explicitly whitelist safe variables to pass to spawned process\r\n const safeEnvVars = [\r\n 'CFN_REDIS_HOST',\r\n 'CFN_REDIS_PORT',\r\n 'CFN_REDIS_URL',\r\n 'CFN_MEMORY_BUDGET',\r\n 'CFN_API_HOST',\r\n 'CFN_API_PORT',\r\n 'CFN_LOG_LEVEL',\r\n 'CFN_LOG_FORMAT',\r\n 'CFN_CONTAINER_MODE',\r\n 'CFN_DOCKER_SOCKET',\r\n 'CFN_NETWORK_NAME',\r\n 'CFN_CUSTOM_ROUTING',\r\n 'CFN_DEFAULT_PROVIDER',\r\n 'NODE_ENV',\r\n 'PATH',\r\n 'HOME'\r\n ];\r\n\r\n const env: Record<string, string> = {};\r\n\r\n // Add whitelisted variables\r\n for (const key of safeEnvVars) {\r\n const value = process.env[key];\r\n if (value !== undefined) {\r\n env[key] = value;\r\n }\r\n }\r\n\r\n // Add API key only when explicitly needed (with strict validation)\r\n if (process.env.ANTHROPIC_API_KEY) {\r\n if (process.env.ANTHROPIC_API_KEY.match(/^sk-[a-zA-Z0-9-]+$/)) {\r\n env.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY;\r\n }\r\n }\r\n\r\n // Add agent execution context (safe values)\r\n env.AGENT_TYPE = definition.name;\r\n env.AGENT_ID = agentId;\r\n env.AGENT_MODEL = definition.model;\r\n env.AGENT_TOOLS = definition.tools.join(',');\r\n env.TASK_ID = context.taskId || '';\r\n env.ITERATION = String(context.iteration || 1);\r\n env.MODE = context.mode || 'cli';\r\n env.PROMPT_FILE = promptFile;\r\n\r\n // Check if execute script exists\r\n fs.access(scriptPath)\r\n .then(() => {\r\n // Use execution script\r\n const proc = spawn('bash', [scriptPath], { env, stdio: 'inherit' });\r\n\r\n proc.on('exit', (code) => {\r\n resolve({\r\n success: code === 0,\r\n agentId,\r\n exitCode: code || 0,\r\n });\r\n });\r\n\r\n proc.on('error', (err) => {\r\n resolve({\r\n success: false,\r\n agentId,\r\n error: err.message,\r\n exitCode: 1,\r\n });\r\n });\r\n })\r\n .catch(() => {\r\n // Fallback: Print prompt\r\n console.log('\\n=== Agent Prompt ===');\r\n console.log(prompt.substring(0, 500) + '...');\r\n console.log('\\n[agent-executor] Execution script not found');\r\n console.log('[agent-executor] Using simulation mode\\n');\r\n\r\n resolve({\r\n success: true,\r\n agentId,\r\n output: prompt,\r\n exitCode: 0,\r\n });\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Main agent execution function\r\n */\r\nexport async function executeAgent(\r\n definition: AgentDefinition,\r\n prompt: string,\r\n context: TaskContext,\r\n options: {\r\n method?: 'auto' | 'api' | 'script';\r\n } = {}\r\n): Promise<AgentExecutionResult> {\r\n const method = options.method || 'auto';\r\n\r\n // Auto-select execution method\r\n if (method === 'auto') {\r\n // Try API execution first, fallback to script if API key not available\r\n try {\r\n return await executeViaAPI(definition, prompt, context);\r\n } catch (error) {\r\n if (error instanceof Error && error.message.includes('API key not found')) {\r\n console.log('[agent-executor] API key not found, using script fallback');\r\n return executeViaScript(definition, prompt, context);\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n if (method === 'api') {\r\n return executeViaAPI(definition, prompt, context);\r\n }\r\n\r\n return executeViaScript(definition, prompt, context);\r\n}\r\n\r\n/**\r\n * Write agent output to file for debugging\r\n */\r\nexport async function saveAgentOutput(\r\n agentId: string,\r\n output: string,\r\n outputDir: string = '.claude/tmp/agent-output'\r\n): Promise<string> {\r\n await fs.mkdir(outputDir, { recursive: true });\r\n\r\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-');\r\n const filename = `${agentId}-${timestamp}.txt`;\r\n const filepath = path.join(outputDir, filename);\r\n\r\n await fs.writeFile(filepath, output, 'utf-8');\r\n\r\n return filepath;\r\n}\r\n"],"names":["spawn","exec","promisify","getAgentId","buildCLIAgentSystemPrompt","loadContextFromEnv","loadMessages","storeMessage","getCurrentFork","formatMessagesForAPI","convertToolNames","fs","path","os","execAsync","redisHost","process","env","CFN_REDIS_HOST","redisPort","CFN_REDIS_PORT","extractConfidence","output","patterns","pattern","match","score","parseFloat","executeCFNProtocol","taskId","agentId","iteration","enableIterations","maxIterations","console","log","confidence","reportCmd","error","isCustomRoutingEnabled","CLAUDE_API_PROVIDER","configPath","join","config","JSON","parse","readFile","provider","getAPIProvider","customEnabled","executeViaAPI","definition","prompt","context","name","model","forkId","FORK_ID","systemPrompt","messages","forkMessages","length","content","slice","push","role","contextOptions","agentType","executeAgentAPI","tools","undefined","result","userMessage","timestamp","Date","toISOString","assistantMessage","success","exitCode","Error","message","String","executeViaScript","tmpDir","tmpdir","promptFile","now","writeFile","Promise","resolve","scriptPath","safeEnvVars","key","value","ANTHROPIC_API_KEY","AGENT_TYPE","AGENT_ID","AGENT_MODEL","AGENT_TOOLS","TASK_ID","ITERATION","MODE","mode","PROMPT_FILE","access","then","proc","stdio","on","code","err","catch","substring","executeAgent","options","method","includes","saveAgentOutput","outputDir","mkdir","recursive","replace","filename","filepath"],"mappings":"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"}
@@ -176,14 +176,40 @@ The orchestrator will:
176
176
  if (context.mode) env.push(`MODE=${context.mode}`);
177
177
  if (context.priority) env.push(`PRIORITY=${context.priority}`);
178
178
  if (context.parentTaskId) env.push(`PARENT_TASK_ID=${context.parentTaskId}`);
179
- if (env.length === 0) return '';
180
- return `
179
+ // Docker workspace detection
180
+ const isDockerEnv = process.env.DOCKER_AGENT === 'true' || process.env.WORKSPACE_ROOT;
181
+ const workspaceRoot = process.env.WORKSPACE_ROOT || '/workspace';
182
+ if (isDockerEnv) {
183
+ env.push(`WORKSPACE_ROOT=${workspaceRoot}`);
184
+ }
185
+ // Always include Docker context if detected, even if env array is empty
186
+ if (isDockerEnv && env.length === 0) {
187
+ env.push(`WORKSPACE_ROOT=${workspaceRoot}`);
188
+ }
189
+ if (env.length === 0 && !isDockerEnv) return '';
190
+ let contextText = `
181
191
  ## Environment Variables
182
192
 
183
193
  \`\`\`bash
184
194
  ${env.join('\n')}
185
195
  \`\`\`
186
196
  `;
197
+ // Add Docker workspace notice if detected
198
+ if (isDockerEnv) {
199
+ contextText += `
200
+
201
+ ## Docker Container Environment
202
+
203
+ **CRITICAL:** You are running inside a Docker container.
204
+
205
+ - **Working Directory:** \`${workspaceRoot}\`
206
+ - **File Paths:** All file operations use \`${workspaceRoot}/\` prefix
207
+ - **Example:** To read \`src/file.ts\`, use \`${workspaceRoot}/src/file.ts\`
208
+
209
+ **DO NOT** use paths from your training data or Main Chat context. Use \`${workspaceRoot}/\` for all file operations.
210
+ `;
211
+ }
212
+ return contextText;
187
213
  }
188
214
  /**
189
215
  * Build complete prompt for agent execution (async for iteration history)