claude-flow-novice 2.15.11 → 2.16.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 (741) hide show
  1. package/.claude/cfn-extras/agents/cfn-v3-coordinator.md +517 -0
  2. package/.claude/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +1 -1
  3. package/.claude/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +1 -1
  4. package/.claude/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +1 -1
  5. package/.claude/cfn-extras/skills/google-sheets-progress/SKILL.md +1 -1
  6. package/.claude/commands/CFN_LOOP_FRONTEND.md +1 -1
  7. package/.claude/commands/cfn-loop-cli.md +214 -442
  8. package/.claude/commands/cfn-loop-frontend.md +1 -1
  9. package/.claude/commands/cfn-loop-task.md +2 -2
  10. package/.claude/commands/cfn-loop-trigger.md +114 -0
  11. package/.claude/commands/deprecated/cfn-loop.md +2 -2
  12. package/.claude/hooks/cfn-invoke-post-edit-ts.sh +100 -0
  13. package/.claude/hooks/cfn-invoke-post-edit-ts.sh.backup +78 -0
  14. package/.claude/hooks/cfn-invoke-post-edit.sh +53 -5
  15. package/.claude/hooks/cfn-invoke-post-edit.sh.backup +87 -0
  16. package/.claude/hooks/cfn-invoke-pre-edit-ts.sh +116 -0
  17. package/.claude/hooks/cfn-invoke-pre-edit-ts.sh.backup +94 -0
  18. package/.claude/hooks/cfn-invoke-pre-edit.sh +22 -0
  19. package/.claude/hooks/cfn-invoke-pre-edit.sh.backup +88 -0
  20. package/.claude/hooks/cfn-post-edit.config.json +9 -2
  21. package/.claude/root-claude-distribute/CFN-CLAUDE.md +1 -1
  22. package/.claude/skills/cfn-agent-spawning/SKILL.md +48 -1
  23. package/.claude/skills/cfn-agent-spawning/SKILL.md.backup +135 -0
  24. package/.claude/skills/cfn-agent-spawning/TYPESCRIPT_MIGRATION.md +567 -0
  25. package/.claude/skills/cfn-agent-spawning/check-dependencies.sh +22 -0
  26. package/.claude/skills/{cfn-redis-coordination/check-dependencies.sh → cfn-agent-spawning/check-dependencies.sh.backup} +3 -5
  27. package/.claude/skills/cfn-agent-spawning/get-agent-provider-env.sh +22 -0
  28. package/.claude/skills/cfn-agent-spawning/get-agent-provider-env.sh.backup +127 -0
  29. package/.claude/skills/cfn-agent-spawning/parse-agent-provider.sh +22 -0
  30. package/.claude/skills/cfn-agent-spawning/parse-agent-provider.sh.backup +59 -0
  31. package/.claude/skills/cfn-agent-spawning/spawn-agent-wrapper.sh +63 -0
  32. package/.claude/skills/cfn-agent-spawning/spawn-agent-wrapper.sh.backup +41 -0
  33. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +26 -1
  34. package/.claude/skills/cfn-agent-spawning/spawn-templates.sh +22 -0
  35. package/.claude/skills/cfn-agent-spawning/spawn-templates.sh.backup +613 -0
  36. package/.claude/skills/cfn-agent-spawning/spawn-worker.sh +22 -0
  37. package/.claude/skills/cfn-agent-spawning/spawn-worker.sh.backup +176 -0
  38. package/.claude/skills/cfn-backlog-management/SKILL.md +1 -1
  39. package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/metadata.json +8 -0
  40. package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/original +271 -0
  41. package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/revert.sh +7 -0
  42. package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/metadata.json +8 -0
  43. package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/original +325 -0
  44. package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/revert.sh +7 -0
  45. package/.claude/skills/cfn-loop-orchestration/CLI_IMPLEMENTATION_SUMMARY.md +330 -0
  46. package/.claude/skills/cfn-loop-orchestration/CONFIGURATION_IMPROVEMENTS.md +318 -0
  47. package/.claude/skills/cfn-loop-orchestration/CONTEXT_LOOKUP_MIGRATION.md +308 -0
  48. package/.claude/skills/cfn-loop-orchestration/CONTEXT_LOOKUP_QUICK_START.md +378 -0
  49. package/.claude/skills/cfn-loop-orchestration/E2E_VALIDATION_REPORT.md +262 -0
  50. package/.claude/skills/cfn-loop-orchestration/IMPLEMENTATION_SUMMARY.md +319 -519
  51. package/.claude/skills/cfn-loop-orchestration/NORTH_STAR_E2E_REPORT.md +299 -0
  52. package/.claude/skills/cfn-loop-orchestration/NORTH_STAR_EXECUTION_SUMMARY.md +403 -0
  53. package/.claude/skills/cfn-loop-orchestration/NORTH_STAR_INDEX.md +323 -0
  54. package/.claude/skills/cfn-loop-orchestration/SKILL.md +159 -48
  55. package/.claude/skills/cfn-loop-orchestration/SPAWN_AGENTS_IMPLEMENTATION.md +188 -0
  56. package/.claude/skills/cfn-loop-orchestration/TEST_COVERAGE_REPORT.md +335 -0
  57. package/.claude/skills/cfn-loop-orchestration/TEST_COVERAGE_SUMMARY.md +456 -0
  58. package/.claude/skills/cfn-loop-orchestration/TYPESCRIPT_INTEGRATION_REPORT.md +709 -0
  59. package/.claude/skills/cfn-loop-orchestration/TYPESCRIPT_INTEGRATION_SUMMARY.md +257 -0
  60. package/.claude/skills/cfn-loop-orchestration/VALIDATION_REPORT.md +572 -0
  61. package/.claude/skills/cfn-loop-orchestration/VALIDATION_SUMMARY.txt +196 -0
  62. package/.claude/skills/cfn-loop-orchestration/VALIDATOR_MODULE_GUIDE.md +526 -0
  63. package/.claude/skills/cfn-loop-orchestration/archive/legacy-bash/README.md +167 -0
  64. package/.claude/skills/cfn-loop-orchestration/archive/legacy-bash/orchestrate-enhanced.sh +548 -0
  65. package/.claude/skills/cfn-loop-orchestration/{orchestrate-wrapper.sh → archive/legacy-bash/orchestrate-wrapper.sh} +11 -1
  66. package/.claude/skills/cfn-loop-orchestration/archive/legacy-bash/orchestrate.sh +182 -0
  67. package/.claude/skills/cfn-loop-orchestration/e2e-validation-fixed.js +240 -0
  68. package/.claude/skills/cfn-loop-orchestration/e2e-validation.js +213 -0
  69. package/.claude/skills/cfn-loop-orchestration/package-lock.json +3 -0
  70. package/.claude/skills/cfn-loop-orchestration/package.json +4 -0
  71. package/.claude/skills/cfn-loop-orchestration/run-north-star-e2e.ts +210 -0
  72. package/.claude/skills/cfn-loop-orchestration/src/cli/orchestrator-cli.ts +396 -0
  73. package/.claude/skills/cfn-loop-orchestration/src/helpers/CONFIDENCE_AGGREGATOR.md +564 -0
  74. package/.claude/skills/cfn-loop-orchestration/src/helpers/CONFIDENCE_AGGREGATOR_QUICK_REF.md +241 -0
  75. package/.claude/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_IMPLEMENTATION.md +375 -0
  76. package/.claude/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_QUICK_REFERENCE.md +362 -0
  77. package/.claude/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_README.md +307 -0
  78. package/.claude/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_USAGE_GUIDE.md +508 -0
  79. package/.claude/skills/cfn-loop-orchestration/src/helpers/confidence-aggregator.ts +473 -0
  80. package/.claude/skills/cfn-loop-orchestration/src/helpers/consensus.ts +1 -1
  81. package/.claude/skills/cfn-loop-orchestration/src/helpers/context-injector.ts +349 -0
  82. package/.claude/skills/cfn-loop-orchestration/src/helpers/context-lookup.ts +486 -0
  83. package/.claude/skills/cfn-loop-orchestration/src/helpers/deliverable-verifier.ts +6 -2
  84. package/.claude/skills/cfn-loop-orchestration/src/helpers/gate-check.ts +1 -1
  85. package/.claude/skills/cfn-loop-orchestration/src/helpers/product-owner-decision.ts +316 -0
  86. package/.claude/skills/cfn-loop-orchestration/src/helpers/spawn-agents.ts +357 -0
  87. package/.claude/skills/cfn-loop-orchestration/src/helpers/validator.ts +276 -0
  88. package/.claude/skills/cfn-loop-orchestration/src/index.ts +2 -0
  89. package/.claude/skills/cfn-loop-orchestration/src/orchestrate.ts +743 -2
  90. package/.claude/skills/cfn-loop-orchestration/src/types.ts +56 -0
  91. package/.claude/skills/cfn-loop-orchestration/test-cli.sh +92 -0
  92. package/.claude/skills/cfn-loop-orchestration/test-typescript-integration.sh +442 -0
  93. package/.claude/skills/cfn-loop-orchestration/tests/agent-spawner.test.ts +124 -0
  94. package/.claude/skills/cfn-loop-orchestration/tests/confidence-aggregator.test.ts +604 -0
  95. package/.claude/skills/cfn-loop-orchestration/tests/context-injector.test.ts +561 -0
  96. package/.claude/skills/cfn-loop-orchestration/tests/context-lookup.test.ts +661 -0
  97. package/.claude/skills/cfn-loop-orchestration/tests/deliverable-verifier.test.ts +2 -2
  98. package/.claude/skills/cfn-loop-orchestration/tests/gate-check-edge-cases.test.ts +422 -0
  99. package/.claude/skills/cfn-loop-orchestration/tests/gate-checker.test.ts +276 -0
  100. package/.claude/skills/cfn-loop-orchestration/tests/logger.test.ts +291 -0
  101. package/.claude/skills/cfn-loop-orchestration/tests/north-star-e2e.test.ts +334 -0
  102. package/.claude/skills/cfn-loop-orchestration/tests/redis-coordinator.test.ts +321 -0
  103. package/.claude/skills/cfn-loop-orchestration/tests/spawn-agents.test.ts +284 -0
  104. package/.claude/skills/cfn-loop-orchestration/tests/validator.test.ts +643 -0
  105. package/.claude/skills/cfn-loop-validation/IMPLEMENTATION_SUMMARY.md +672 -0
  106. package/.claude/skills/cfn-loop-validation/INDEX.md +531 -0
  107. package/.claude/skills/cfn-loop-validation/README_TYPESCRIPT.md +454 -0
  108. package/.claude/skills/cfn-loop-validation/SKILL.md +48 -1
  109. package/.claude/skills/cfn-loop-validation/SKILL.md.backup +353 -0
  110. package/.claude/skills/cfn-loop-validation/SKILL_TYPESCRIPT.md +782 -0
  111. package/.claude/skills/cfn-loop-validation/VAPOR_DETECTION_EXAMPLES.md +598 -0
  112. package/.claude/skills/cfn-loop-validation/check-dependencies.sh +22 -0
  113. package/{claude-assets/skills/cfn-redis-coordination/check-dependencies.sh → .claude/skills/cfn-loop-validation/check-dependencies.sh.backup} +4 -5
  114. package/.claude/skills/cfn-loop-validation/detect-vapor.sh +59 -0
  115. package/.claude/skills/cfn-loop-validation/detect-vapor.sh.backup +37 -0
  116. package/.claude/skills/cfn-loop-validation/dist/.tsbuildinfo +1 -0
  117. package/.claude/skills/cfn-loop-validation/dist/cli/detect-vapor.d.ts +14 -0
  118. package/.claude/skills/cfn-loop-validation/dist/cli/detect-vapor.d.ts.map +1 -0
  119. package/.claude/skills/cfn-loop-validation/dist/cli/detect-vapor.js +185 -0
  120. package/.claude/skills/cfn-loop-validation/dist/cli/detect-vapor.js.map +1 -0
  121. package/.claude/skills/cfn-loop-validation/dist/cli/validate-deliverables.d.ts +14 -0
  122. package/.claude/skills/cfn-loop-validation/dist/cli/validate-deliverables.d.ts.map +1 -0
  123. package/.claude/skills/cfn-loop-validation/dist/cli/validate-deliverables.js +176 -0
  124. package/.claude/skills/cfn-loop-validation/dist/cli/validate-deliverables.js.map +1 -0
  125. package/.claude/skills/cfn-loop-validation/dist/cli/validate-gate.d.ts +19 -0
  126. package/.claude/skills/cfn-loop-validation/dist/cli/validate-gate.d.ts.map +1 -0
  127. package/.claude/skills/cfn-loop-validation/dist/cli/validate-gate.js +123 -0
  128. package/.claude/skills/cfn-loop-validation/dist/cli/validate-gate.js.map +1 -0
  129. package/.claude/skills/cfn-loop-validation/dist/types.d.ts +156 -0
  130. package/.claude/skills/cfn-loop-validation/dist/types.d.ts.map +1 -0
  131. package/.claude/skills/cfn-loop-validation/dist/types.js +66 -0
  132. package/.claude/skills/cfn-loop-validation/dist/types.js.map +1 -0
  133. package/.claude/skills/cfn-loop-validation/dist/validator.d.ts +85 -0
  134. package/.claude/skills/cfn-loop-validation/dist/validator.d.ts.map +1 -0
  135. package/.claude/skills/cfn-loop-validation/dist/validator.js +411 -0
  136. package/.claude/skills/cfn-loop-validation/dist/validator.js.map +1 -0
  137. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +22 -0
  138. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh.backup +252 -0
  139. package/.claude/skills/cfn-loop-validation/package.json +93 -0
  140. package/.claude/skills/cfn-loop-validation/src/cli/detect-vapor.ts +177 -0
  141. package/.claude/skills/cfn-loop-validation/src/cli/validate-deliverables.ts +161 -0
  142. package/.claude/skills/cfn-loop-validation/src/cli/validate-gate.ts +139 -0
  143. package/.claude/skills/cfn-loop-validation/src/types.ts +215 -0
  144. package/.claude/skills/cfn-loop-validation/src/validator.ts +503 -0
  145. package/.claude/skills/cfn-loop-validation/tests/validator.test.ts +537 -0
  146. package/.claude/skills/{cfn-redis-coordination → cfn-loop-validation}/tsconfig.json +34 -31
  147. package/.claude/skills/cfn-loop-validation/validate-deliverables.sh +59 -0
  148. package/.claude/skills/cfn-loop-validation/validate-deliverables.sh.backup +37 -0
  149. package/.claude/skills/cfn-loop-validation/validate-gate.sh +63 -0
  150. package/.claude/skills/cfn-loop-validation/validate-gate.sh.backup +41 -0
  151. package/.claude/skills/cfn-loop-validation/validate-iteration.sh +22 -0
  152. package/.claude/skills/cfn-loop-validation/validate-iteration.sh.backup +134 -0
  153. package/.claude/skills/cfn-product-owner-decision/SKILL.md +479 -147
  154. package/.claude/skills/cfn-product-owner-decision/TYPESCRIPT_IMPLEMENTATION.md +653 -0
  155. package/.claude/skills/cfn-product-owner-decision/{execute-decision.sh → archive/legacy-bash/execute-decision.sh} +24 -2
  156. package/.claude/skills/pre-edit-backup/SKILL.md +324 -0
  157. package/.claude/skills/pre-edit-backup/SKILL.md.backup +277 -0
  158. package/.claude/skills/pre-edit-backup/backup.sh +22 -0
  159. package/.claude/skills/pre-edit-backup/backup.sh.backup +107 -0
  160. package/claude-assets/agents/cfn-dev-team/analysts/root-cause-analyst.md +2 -2
  161. package/claude-assets/agents/cfn-dev-team/architecture/base-template-generator.md +1 -1
  162. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +3 -2
  163. package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +1 -0
  164. package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +2 -1
  165. package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +1 -0
  166. package/claude-assets/agents/cfn-dev-team/dev-ops/devops-engineer.md +11 -1
  167. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +58 -35
  168. package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +2 -2
  169. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +47 -37
  170. package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +18 -18
  171. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +40 -58
  172. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +19 -21
  173. package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +20 -29
  174. package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +15 -19
  175. package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +15 -10
  176. package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +16 -11
  177. package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +16 -26
  178. package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +18 -22
  179. package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +17 -21
  180. package/claude-assets/agents/cfn-dev-team/documentation/pseudocode.md +1 -1
  181. package/claude-assets/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +1 -1
  182. package/claude-assets/agents/cfn-dev-team/product-owners/cto-agent.md +1 -1
  183. package/claude-assets/agents/cfn-dev-team/product-owners/power-user-persona.md +1 -1
  184. package/claude-assets/agents/cfn-dev-team/product-owners/product-owner.md +1 -5
  185. package/claude-assets/agents/cfn-dev-team/reviewers/code-reviewer.md +20 -51
  186. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +22 -71
  187. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +21 -64
  188. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +22 -67
  189. package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +24 -68
  190. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +8 -36
  191. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +9 -38
  192. package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +17 -55
  193. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  194. package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +18 -56
  195. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +9 -37
  196. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +18 -56
  197. package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +18 -49
  198. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +8 -37
  199. package/claude-assets/agents/cfn-dev-team/testers/tester.md +7 -27
  200. package/claude-assets/agents/cfn-dev-team/testers/unit/tdd-london-unit-swarm.md +1 -1
  201. package/claude-assets/agents/cfn-dev-team/utility/agent-builder.md +11 -0
  202. package/claude-assets/agents/cfn-dev-team/utility/analyst.md +13 -29
  203. package/claude-assets/agents/cfn-dev-team/utility/claude-code-expert.md +1 -1
  204. package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +13 -13
  205. package/claude-assets/agents/cfn-dev-team/utility/context-curator.md +7 -2
  206. package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +6 -11
  207. package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +121 -715
  208. package/claude-assets/agents/cfn-dev-team/utility/researcher.md +13 -22
  209. package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +147 -573
  210. package/claude-assets/agents/custom/cfn-docker-expert.md +103 -0
  211. package/claude-assets/agents/custom/cfn-loops-cli-expert.md +438 -0
  212. package/claude-assets/agents/custom/cfn-redis-operations.md +529 -529
  213. package/claude-assets/agents/custom/cfn-system-expert.md +1 -1
  214. package/claude-assets/agents/custom/trigger-dev-expert.md +369 -0
  215. package/claude-assets/agents/docker-team/micro-sprint-planner.md +747 -747
  216. package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
  217. package/claude-assets/cfn-extras/agents/cfn-v3-coordinator.md +517 -0
  218. package/claude-assets/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +1 -1
  219. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +1 -1
  220. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +1 -1
  221. package/claude-assets/cfn-extras/skills/google-sheets-progress/SKILL.md +1 -1
  222. package/claude-assets/commands/CFN_LOOP_FRONTEND.md +1 -1
  223. package/claude-assets/commands/cfn-loop-cli.md +214 -442
  224. package/claude-assets/commands/cfn-loop-frontend.md +1 -1
  225. package/claude-assets/commands/cfn-loop-task.md +2 -2
  226. package/claude-assets/commands/cfn-loop-trigger.md +114 -0
  227. package/claude-assets/commands/deprecated/cfn-loop.md +2 -2
  228. package/claude-assets/hooks/GIT-HOOKS-USAGE-EXAMPLES.md +116 -0
  229. package/claude-assets/hooks/README-GIT-HOOKS.md +443 -0
  230. package/claude-assets/hooks/SKILL.md +518 -0
  231. package/claude-assets/hooks/SKILL.md.backup +471 -0
  232. package/claude-assets/hooks/cfn-invoke-post-edit-ts.sh +100 -0
  233. package/claude-assets/hooks/cfn-invoke-post-edit-ts.sh.backup +78 -0
  234. package/claude-assets/hooks/cfn-invoke-post-edit.sh +53 -5
  235. package/claude-assets/hooks/cfn-invoke-post-edit.sh.backup +87 -0
  236. package/claude-assets/hooks/cfn-invoke-pre-edit-ts.sh +116 -0
  237. package/claude-assets/hooks/cfn-invoke-pre-edit-ts.sh.backup +94 -0
  238. package/claude-assets/hooks/cfn-invoke-pre-edit.sh +22 -0
  239. package/claude-assets/hooks/cfn-invoke-pre-edit.sh.backup +88 -0
  240. package/claude-assets/hooks/cfn-post-edit.config.json +9 -2
  241. package/claude-assets/hooks/install-git-hooks.sh +243 -0
  242. package/claude-assets/hooks/subagent-start.sh +98 -0
  243. package/claude-assets/hooks/subagent-stop.sh +93 -0
  244. package/claude-assets/hooks/validators/credential-scanner.sh +172 -0
  245. package/claude-assets/root-claude-distribute/CFN-CLAUDE.md +1 -1
  246. package/claude-assets/skills/cfn-agent-selection-with-fallback/DELIVERABLES.md +409 -0
  247. package/claude-assets/skills/cfn-agent-selection-with-fallback/IMPLEMENTATION_SUMMARY.md +396 -0
  248. package/claude-assets/skills/cfn-agent-selection-with-fallback/INTEGRATION_GUIDE.md +308 -0
  249. package/claude-assets/skills/cfn-agent-selection-with-fallback/QUICK_REFERENCE.md +239 -0
  250. package/claude-assets/skills/cfn-agent-selection-with-fallback/SKILL.md +107 -1
  251. package/claude-assets/skills/cfn-agent-selection-with-fallback/SKILL.md.backup +302 -0
  252. package/claude-assets/skills/cfn-agent-selection-with-fallback/TYPESCRIPT_MIGRATION.md +295 -0
  253. package/claude-assets/skills/cfn-agent-selection-with-fallback/dist/agent-selector.cjs +297 -0
  254. package/claude-assets/skills/cfn-agent-selection-with-fallback/dist/agent-selector.js +297 -0
  255. package/claude-assets/skills/cfn-agent-selection-with-fallback/dist/cli.cjs +96 -0
  256. package/claude-assets/skills/cfn-agent-selection-with-fallback/dist/cli.js +96 -0
  257. package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents-ts.sh +45 -0
  258. package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents-ts.sh.backup +23 -0
  259. package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents.sh +22 -0
  260. package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents.sh.backup +173 -0
  261. package/claude-assets/skills/cfn-agent-selection-with-fallback/src/agent-selector.test.ts +357 -0
  262. package/claude-assets/skills/cfn-agent-selection-with-fallback/src/agent-selector.ts +350 -0
  263. package/claude-assets/skills/cfn-agent-selection-with-fallback/src/cli.ts +74 -0
  264. package/claude-assets/skills/cfn-agent-selection-with-fallback/task-classifier.sh +22 -0
  265. package/claude-assets/skills/cfn-agent-selection-with-fallback/task-classifier.sh.backup +71 -0
  266. package/claude-assets/skills/cfn-agent-selection-with-fallback/tsconfig.json +18 -0
  267. package/claude-assets/skills/cfn-agent-spawning/SKILL.md +48 -1
  268. package/claude-assets/skills/cfn-agent-spawning/SKILL.md.backup +135 -0
  269. package/claude-assets/skills/cfn-agent-spawning/TYPESCRIPT_MIGRATION.md +567 -0
  270. package/claude-assets/skills/cfn-agent-spawning/check-dependencies.sh +22 -0
  271. package/claude-assets/skills/cfn-agent-spawning/check-dependencies.sh.backup +30 -0
  272. package/claude-assets/skills/cfn-agent-spawning/get-agent-provider-env.sh +22 -0
  273. package/claude-assets/skills/cfn-agent-spawning/get-agent-provider-env.sh.backup +127 -0
  274. package/claude-assets/skills/cfn-agent-spawning/parse-agent-provider.sh +22 -0
  275. package/claude-assets/skills/cfn-agent-spawning/parse-agent-provider.sh.backup +59 -0
  276. package/claude-assets/skills/cfn-agent-spawning/spawn-agent-wrapper.sh +63 -0
  277. package/claude-assets/skills/cfn-agent-spawning/spawn-agent-wrapper.sh.backup +41 -0
  278. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +26 -1
  279. package/claude-assets/skills/cfn-agent-spawning/spawn-templates.sh +22 -0
  280. package/claude-assets/skills/cfn-agent-spawning/spawn-templates.sh.backup +613 -0
  281. package/claude-assets/skills/cfn-agent-spawning/spawn-worker.sh +22 -0
  282. package/claude-assets/skills/cfn-agent-spawning/spawn-worker.sh.backup +176 -0
  283. package/claude-assets/skills/cfn-backlog-management/SKILL.md +1 -1
  284. package/claude-assets/skills/cfn-coordination/agent-completion.sh.backup +36 -0
  285. package/claude-assets/skills/cfn-coordination/coordination-signal.sh.backup +36 -0
  286. package/claude-assets/skills/cfn-coordination/coordination-wait.sh.backup +36 -0
  287. package/claude-assets/skills/cfn-dependency-ingestion/README.md +101 -0
  288. package/claude-assets/skills/cfn-dependency-ingestion/SKILL.md +397 -0
  289. package/claude-assets/skills/cfn-dependency-ingestion/build.sh +23 -0
  290. package/claude-assets/skills/cfn-dependency-ingestion/dist/ingest-dependencies.js +478 -0
  291. package/claude-assets/skills/cfn-dependency-ingestion/ingest-dependencies.sh +295 -0
  292. package/claude-assets/skills/cfn-dependency-ingestion/ingest.sh +237 -0
  293. package/claude-assets/skills/cfn-dependency-ingestion/manifests/cli-mode-dependencies.txt +73 -0
  294. package/claude-assets/skills/cfn-dependency-ingestion/manifests/shared-dependencies.txt +57 -0
  295. package/claude-assets/skills/cfn-dependency-ingestion/manifests/trigger-dev-dependencies.txt +82 -0
  296. package/claude-assets/skills/cfn-dependency-ingestion/manifests/trigger-mode-dependencies.txt +80 -0
  297. package/claude-assets/skills/cfn-dependency-ingestion/src/ingest-dependencies.ts +563 -0
  298. package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +14 -4
  299. package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/metadata.json +8 -0
  300. package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/original +271 -0
  301. package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/revert.sh +7 -0
  302. package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/metadata.json +8 -0
  303. package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/original +325 -0
  304. package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/revert.sh +7 -0
  305. package/claude-assets/skills/cfn-loop-orchestration/CLI_IMPLEMENTATION_SUMMARY.md +330 -0
  306. package/claude-assets/skills/cfn-loop-orchestration/CONFIGURATION_IMPROVEMENTS.md +318 -0
  307. package/claude-assets/skills/cfn-loop-orchestration/CONTEXT_LOOKUP_MIGRATION.md +308 -0
  308. package/claude-assets/skills/cfn-loop-orchestration/CONTEXT_LOOKUP_QUICK_START.md +378 -0
  309. package/claude-assets/skills/cfn-loop-orchestration/E2E_VALIDATION_REPORT.md +262 -0
  310. package/claude-assets/skills/cfn-loop-orchestration/IMPLEMENTATION_SUMMARY.md +319 -519
  311. package/claude-assets/skills/cfn-loop-orchestration/NORTH_STAR_E2E_REPORT.md +299 -0
  312. package/claude-assets/skills/cfn-loop-orchestration/NORTH_STAR_EXECUTION_SUMMARY.md +403 -0
  313. package/claude-assets/skills/cfn-loop-orchestration/NORTH_STAR_INDEX.md +323 -0
  314. package/claude-assets/skills/cfn-loop-orchestration/SKILL.md +159 -48
  315. package/claude-assets/skills/cfn-loop-orchestration/SPAWN_AGENTS_IMPLEMENTATION.md +188 -0
  316. package/claude-assets/skills/cfn-loop-orchestration/TEST_COVERAGE_REPORT.md +335 -0
  317. package/claude-assets/skills/cfn-loop-orchestration/TEST_COVERAGE_SUMMARY.md +456 -0
  318. package/claude-assets/skills/cfn-loop-orchestration/TYPESCRIPT_INTEGRATION_REPORT.md +709 -0
  319. package/claude-assets/skills/cfn-loop-orchestration/TYPESCRIPT_INTEGRATION_SUMMARY.md +257 -0
  320. package/claude-assets/skills/cfn-loop-orchestration/VALIDATION_REPORT.md +572 -0
  321. package/claude-assets/skills/cfn-loop-orchestration/VALIDATION_SUMMARY.txt +196 -0
  322. package/claude-assets/skills/cfn-loop-orchestration/VALIDATOR_MODULE_GUIDE.md +526 -0
  323. package/claude-assets/skills/cfn-loop-orchestration/archive/legacy-bash/README.md +167 -0
  324. package/claude-assets/skills/cfn-loop-orchestration/archive/legacy-bash/orchestrate-enhanced.sh +548 -0
  325. package/claude-assets/skills/cfn-loop-orchestration/{orchestrate-wrapper.sh → archive/legacy-bash/orchestrate-wrapper.sh} +11 -1
  326. package/claude-assets/skills/cfn-loop-orchestration/archive/legacy-bash/orchestrate.sh +182 -0
  327. package/claude-assets/skills/cfn-loop-orchestration/e2e-validation-fixed.js +240 -0
  328. package/claude-assets/skills/cfn-loop-orchestration/e2e-validation.js +213 -0
  329. package/claude-assets/skills/cfn-loop-orchestration/package-lock.json +3 -0
  330. package/claude-assets/skills/cfn-loop-orchestration/package.json +4 -0
  331. package/claude-assets/skills/cfn-loop-orchestration/run-north-star-e2e.ts +210 -0
  332. package/claude-assets/skills/cfn-loop-orchestration/src/cli/orchestrator-cli.ts +396 -0
  333. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONFIDENCE_AGGREGATOR.md +564 -0
  334. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONFIDENCE_AGGREGATOR_QUICK_REF.md +241 -0
  335. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_IMPLEMENTATION.md +375 -0
  336. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_QUICK_REFERENCE.md +362 -0
  337. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_README.md +307 -0
  338. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_USAGE_GUIDE.md +508 -0
  339. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/confidence-aggregator.ts +473 -0
  340. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/consensus.ts +1 -1
  341. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/context-injector.ts +349 -0
  342. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/context-lookup.ts +486 -0
  343. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/deliverable-verifier.ts +6 -2
  344. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/gate-check.ts +1 -1
  345. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/product-owner-decision.ts +316 -0
  346. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/spawn-agents.ts +357 -0
  347. package/claude-assets/skills/cfn-loop-orchestration/src/helpers/validator.ts +276 -0
  348. package/claude-assets/skills/cfn-loop-orchestration/src/index.ts +2 -0
  349. package/claude-assets/skills/cfn-loop-orchestration/src/orchestrate.ts +743 -2
  350. package/claude-assets/skills/cfn-loop-orchestration/src/types.ts +56 -0
  351. package/claude-assets/skills/cfn-loop-orchestration/test-cli.sh +92 -0
  352. package/claude-assets/skills/cfn-loop-orchestration/test-typescript-integration.sh +442 -0
  353. package/claude-assets/skills/cfn-loop-orchestration/tests/agent-spawner.test.ts +124 -0
  354. package/claude-assets/skills/cfn-loop-orchestration/tests/confidence-aggregator.test.ts +604 -0
  355. package/claude-assets/skills/cfn-loop-orchestration/tests/context-injector.test.ts +561 -0
  356. package/claude-assets/skills/cfn-loop-orchestration/tests/context-lookup.test.ts +661 -0
  357. package/claude-assets/skills/cfn-loop-orchestration/tests/deliverable-verifier.test.ts +2 -2
  358. package/claude-assets/skills/cfn-loop-orchestration/tests/gate-check-edge-cases.test.ts +422 -0
  359. package/claude-assets/skills/cfn-loop-orchestration/tests/gate-checker.test.ts +276 -0
  360. package/claude-assets/skills/cfn-loop-orchestration/tests/logger.test.ts +291 -0
  361. package/claude-assets/skills/cfn-loop-orchestration/tests/north-star-e2e.test.ts +334 -0
  362. package/claude-assets/skills/cfn-loop-orchestration/tests/redis-coordinator.test.ts +321 -0
  363. package/claude-assets/skills/cfn-loop-orchestration/tests/spawn-agents.test.ts +284 -0
  364. package/claude-assets/skills/cfn-loop-orchestration/tests/validator.test.ts +643 -0
  365. package/claude-assets/skills/cfn-loop-output-processing/.eslintrc.json +33 -0
  366. package/claude-assets/skills/cfn-loop-output-processing/DELIVERY_SUMMARY.txt +462 -0
  367. package/claude-assets/skills/cfn-loop-output-processing/DEPRECATION_NOTICE.md +183 -0
  368. package/claude-assets/skills/cfn-loop-output-processing/EXAMPLES.md +609 -0
  369. package/claude-assets/skills/cfn-loop-output-processing/IMPLEMENTATION_SUMMARY.md +418 -0
  370. package/claude-assets/skills/cfn-loop-output-processing/INDEX.md +531 -0
  371. package/claude-assets/skills/cfn-loop-output-processing/MIGRATION.md +362 -0
  372. package/claude-assets/skills/cfn-loop-output-processing/README.md +114 -0
  373. package/claude-assets/skills/cfn-loop-output-processing/SKILL.md +633 -0
  374. package/{.claude/skills/cfn-docker-redis-coordination → claude-assets/skills/cfn-loop-output-processing}/jest.config.js +7 -15
  375. package/claude-assets/skills/cfn-loop-output-processing/package.json +50 -0
  376. package/claude-assets/skills/cfn-loop-output-processing/src/cli/process-loop2.ts +195 -0
  377. package/claude-assets/skills/cfn-loop-output-processing/src/cli/process-loop3.ts +157 -0
  378. package/claude-assets/skills/cfn-loop-output-processing/src/output-processor.ts +632 -0
  379. package/claude-assets/skills/cfn-loop-output-processing/tests/output-processor.test.ts +617 -0
  380. package/claude-assets/skills/{cfn-docker-redis-coordination → cfn-loop-output-processing}/tsconfig.json +16 -7
  381. package/claude-assets/skills/cfn-loop-validation/IMPLEMENTATION_SUMMARY.md +672 -0
  382. package/claude-assets/skills/cfn-loop-validation/INDEX.md +531 -0
  383. package/claude-assets/skills/cfn-loop-validation/README_TYPESCRIPT.md +454 -0
  384. package/claude-assets/skills/cfn-loop-validation/SKILL.md +48 -1
  385. package/claude-assets/skills/cfn-loop-validation/SKILL.md.backup +353 -0
  386. package/claude-assets/skills/cfn-loop-validation/SKILL_TYPESCRIPT.md +782 -0
  387. package/claude-assets/skills/cfn-loop-validation/VAPOR_DETECTION_EXAMPLES.md +598 -0
  388. package/claude-assets/skills/cfn-loop-validation/check-dependencies.sh +22 -0
  389. package/claude-assets/skills/cfn-loop-validation/check-dependencies.sh.backup +31 -0
  390. package/claude-assets/skills/cfn-loop-validation/detect-vapor.sh +59 -0
  391. package/claude-assets/skills/cfn-loop-validation/detect-vapor.sh.backup +37 -0
  392. package/claude-assets/skills/cfn-loop-validation/dist/.tsbuildinfo +1 -0
  393. package/claude-assets/skills/cfn-loop-validation/dist/cli/detect-vapor.d.ts +14 -0
  394. package/claude-assets/skills/cfn-loop-validation/dist/cli/detect-vapor.d.ts.map +1 -0
  395. package/claude-assets/skills/cfn-loop-validation/dist/cli/detect-vapor.js +185 -0
  396. package/claude-assets/skills/cfn-loop-validation/dist/cli/detect-vapor.js.map +1 -0
  397. package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-deliverables.d.ts +14 -0
  398. package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-deliverables.d.ts.map +1 -0
  399. package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-deliverables.js +176 -0
  400. package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-deliverables.js.map +1 -0
  401. package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-gate.d.ts +19 -0
  402. package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-gate.d.ts.map +1 -0
  403. package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-gate.js +123 -0
  404. package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-gate.js.map +1 -0
  405. package/claude-assets/skills/cfn-loop-validation/dist/types.d.ts +156 -0
  406. package/claude-assets/skills/cfn-loop-validation/dist/types.d.ts.map +1 -0
  407. package/claude-assets/skills/cfn-loop-validation/dist/types.js +66 -0
  408. package/claude-assets/skills/cfn-loop-validation/dist/types.js.map +1 -0
  409. package/claude-assets/skills/cfn-loop-validation/dist/validator.d.ts +85 -0
  410. package/claude-assets/skills/cfn-loop-validation/dist/validator.d.ts.map +1 -0
  411. package/claude-assets/skills/cfn-loop-validation/dist/validator.js +411 -0
  412. package/claude-assets/skills/cfn-loop-validation/dist/validator.js.map +1 -0
  413. package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +22 -0
  414. package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh.backup +252 -0
  415. package/claude-assets/skills/cfn-loop-validation/package.json +93 -0
  416. package/claude-assets/skills/cfn-loop-validation/src/cli/detect-vapor.ts +177 -0
  417. package/claude-assets/skills/cfn-loop-validation/src/cli/validate-deliverables.ts +161 -0
  418. package/claude-assets/skills/cfn-loop-validation/src/cli/validate-gate.ts +139 -0
  419. package/claude-assets/skills/cfn-loop-validation/src/types.ts +215 -0
  420. package/claude-assets/skills/cfn-loop-validation/src/validator.ts +503 -0
  421. package/claude-assets/skills/cfn-loop-validation/tests/validator.test.ts +537 -0
  422. package/claude-assets/skills/{cfn-redis-coordination → cfn-loop-validation}/tsconfig.json +34 -31
  423. package/claude-assets/skills/cfn-loop-validation/validate-deliverables.sh +59 -0
  424. package/claude-assets/skills/cfn-loop-validation/validate-deliverables.sh.backup +37 -0
  425. package/claude-assets/skills/cfn-loop-validation/validate-gate.sh +63 -0
  426. package/claude-assets/skills/cfn-loop-validation/validate-gate.sh.backup +41 -0
  427. package/claude-assets/skills/cfn-loop-validation/validate-iteration.sh +22 -0
  428. package/claude-assets/skills/cfn-loop-validation/validate-iteration.sh.backup +134 -0
  429. package/claude-assets/skills/cfn-product-owner-decision/SKILL.md +479 -147
  430. package/claude-assets/skills/cfn-product-owner-decision/TYPESCRIPT_IMPLEMENTATION.md +653 -0
  431. package/claude-assets/skills/cfn-product-owner-decision/{execute-decision.sh → archive/legacy-bash/execute-decision.sh} +24 -2
  432. package/claude-assets/skills/cfn-provider-routing/README.md +129 -0
  433. package/claude-assets/skills/cfn-provider-routing/SKILL.md +215 -0
  434. package/claude-assets/skills/cfn-provider-routing/resolve-provider-model.ts +223 -0
  435. package/claude-assets/skills/docker-build/build.sh +1 -1
  436. package/claude-assets/skills/pre-edit-backup/SKILL.md +324 -0
  437. package/claude-assets/skills/pre-edit-backup/SKILL.md.backup +277 -0
  438. package/claude-assets/skills/pre-edit-backup/backup.sh +22 -0
  439. package/claude-assets/skills/pre-edit-backup/backup.sh.backup +107 -0
  440. package/dist/agent/skill-mcp-selector.js +2 -1
  441. package/dist/agent/skill-mcp-selector.js.map +1 -1
  442. package/dist/api/auth-endpoints.js +415 -0
  443. package/dist/api/auth-endpoints.js.map +1 -0
  444. package/dist/api/task-endpoints.js +562 -0
  445. package/dist/api/task-endpoints.js.map +1 -0
  446. package/dist/backend/server.js +418 -0
  447. package/dist/backend/server.js.map +1 -0
  448. package/dist/cfn-loop/product-owner/decision-parser.js +356 -0
  449. package/dist/cfn-loop/product-owner/decision-parser.js.map +1 -0
  450. package/dist/cfn-loop/product-owner/index.js +1 -0
  451. package/dist/cfn-loop/product-owner/index.js.map +1 -1
  452. package/dist/cli/agent-command.js +1 -1
  453. package/dist/cli/agent-command.js.map +1 -1
  454. package/dist/cli/agent-completion.js +273 -0
  455. package/dist/cli/agent-completion.js.map +1 -0
  456. package/dist/cli/agent-executor.js +470 -26
  457. package/dist/cli/agent-executor.js.map +1 -1
  458. package/dist/cli/agent-prompt-builder.js +83 -48
  459. package/dist/cli/agent-prompt-builder.js.map +1 -1
  460. package/dist/cli/agent-spawn.js +7 -4
  461. package/dist/cli/agent-spawn.js.map +1 -1
  462. package/dist/cli/agent-spawner.js +546 -0
  463. package/dist/cli/agent-spawner.js.map +1 -0
  464. package/dist/cli/agent-token-manager.js +2 -1
  465. package/dist/cli/agent-token-manager.js.map +1 -1
  466. package/dist/cli/anthropic-client.js +127 -14
  467. package/dist/cli/anthropic-client.js.map +1 -1
  468. package/dist/cli/cfn-context.js +2 -1
  469. package/dist/cli/cfn-context.js.map +1 -1
  470. package/dist/cli/cfn-metrics.js +2 -1
  471. package/dist/cli/cfn-metrics.js.map +1 -1
  472. package/dist/cli/cfn-redis.js +2 -1
  473. package/dist/cli/cfn-redis.js.map +1 -1
  474. package/dist/cli/cli-agent-context.js +2 -0
  475. package/dist/cli/cli-agent-context.js.map +1 -1
  476. package/dist/cli/config-manager.js +90 -356
  477. package/dist/cli/config-manager.js.map +1 -1
  478. package/dist/cli/conversation-fork-cleanup.js +2 -1
  479. package/dist/cli/conversation-fork-cleanup.js.map +1 -1
  480. package/dist/cli/conversation-fork.js +2 -1
  481. package/dist/cli/conversation-fork.js.map +1 -1
  482. package/dist/cli/coordination/agent-messaging.js +415 -0
  483. package/dist/cli/coordination/agent-messaging.js.map +1 -0
  484. package/dist/cli/coordination/wait-for-threshold.js +232 -0
  485. package/dist/cli/coordination/wait-for-threshold.js.map +1 -0
  486. package/dist/cli/index.js +11 -0
  487. package/dist/cli/index.js.map +1 -1
  488. package/dist/cli/iteration-history.js +2 -1
  489. package/dist/cli/iteration-history.js.map +1 -1
  490. package/dist/cli/parse-decision-cli.js +268 -0
  491. package/dist/cli/parse-decision-cli.js.map +1 -0
  492. package/dist/cli/post-edit-hook.js +83 -0
  493. package/dist/cli/post-edit-hook.js.map +1 -0
  494. package/dist/cli/pre-edit-hook.js +77 -0
  495. package/dist/cli/pre-edit-hook.js.map +1 -0
  496. package/dist/cli/process-lifecycle.js +5 -1
  497. package/dist/cli/process-lifecycle.js.map +1 -1
  498. package/dist/cli/spawn-agent-cli.js +244 -0
  499. package/dist/cli/spawn-agent-cli.js.map +1 -0
  500. package/dist/coordination/coordination-wrapper.js +383 -0
  501. package/dist/coordination/coordination-wrapper.js.map +1 -0
  502. package/dist/coordination/redis-waiting-mode.js +4 -0
  503. package/dist/coordination/redis-waiting-mode.js.map +1 -1
  504. package/dist/coordination/store-success-criteria.js +68 -0
  505. package/dist/coordination/store-success-criteria.js.map +1 -0
  506. package/dist/coordination/store-task-context.js +65 -0
  507. package/dist/coordination/store-task-context.js.map +1 -0
  508. package/dist/hooks/backup-manager.js +273 -0
  509. package/dist/hooks/backup-manager.js.map +1 -0
  510. package/dist/hooks/post-edit-validator.js +388 -0
  511. package/dist/hooks/post-edit-validator.js.map +1 -0
  512. package/dist/integration/index.js +19 -0
  513. package/dist/integration/index.js.map +1 -0
  514. package/dist/integration/task-mode-adapter.js +297 -0
  515. package/dist/integration/task-mode-adapter.js.map +1 -0
  516. package/dist/integration/trigger-dev-client.js +253 -0
  517. package/dist/integration/trigger-dev-client.js.map +1 -0
  518. package/dist/integration/trigger-dev-webhooks.js +362 -0
  519. package/dist/integration/trigger-dev-webhooks.js.map +1 -0
  520. package/dist/lib/artifact-registry.js +4 -0
  521. package/dist/lib/artifact-registry.js.map +1 -1
  522. package/dist/lib/connection-pool.js +390 -0
  523. package/dist/lib/connection-pool.js.map +1 -0
  524. package/dist/lib/environment-contract.js +258 -0
  525. package/dist/lib/environment-contract.js.map +1 -0
  526. package/dist/lib/path-validator.js +14 -5
  527. package/dist/lib/path-validator.js.map +1 -1
  528. package/dist/lib/query-optimizer.js +388 -0
  529. package/dist/lib/query-optimizer.js.map +1 -0
  530. package/dist/lib/redis-queue-manager.js +5 -1
  531. package/dist/lib/redis-queue-manager.js.map +1 -1
  532. package/dist/lib/result-cache.js +285 -0
  533. package/dist/lib/result-cache.js.map +1 -0
  534. package/dist/mcp/auth-middleware.js +2 -1
  535. package/dist/mcp/auth-middleware.js.map +1 -1
  536. package/dist/mcp/playwright-mcp-server-auth.js +2 -1
  537. package/dist/mcp/playwright-mcp-server-auth.js.map +1 -1
  538. package/dist/middleware/authentication.js +317 -0
  539. package/dist/middleware/authentication.js.map +1 -0
  540. package/dist/services/authentication.js +669 -0
  541. package/dist/services/authentication.js.map +1 -0
  542. package/dist/services/session-management.js +436 -0
  543. package/dist/services/session-management.js.map +1 -0
  544. package/dist/services/skill-deployment.js +8 -6
  545. package/dist/services/skill-deployment.js.map +1 -1
  546. package/dist/services/user-service.js +710 -0
  547. package/dist/services/user-service.js.map +1 -0
  548. package/dist/types/trigger-dev-events.d.js +10 -0
  549. package/dist/types/trigger-dev-events.d.js.map +1 -0
  550. package/docs/README.md +240 -0
  551. package/package.json +15 -4
  552. package/scripts/build-agent-image.sh +1 -1
  553. package/scripts/compare-workflow-performance.sh +556 -0
  554. package/scripts/cost-allocation-tracker.sh +632 -0
  555. package/scripts/docker-rebuild-all-agents.sh +2 -2
  556. package/scripts/migrate-to-optimized-workflows.sh +438 -0
  557. package/scripts/organize-docs.sh +338 -0
  558. package/scripts/reorganize-tests.sh +280 -0
  559. package/scripts/trigger-dev-setup.sh +279 -0
  560. package/tests/README.md +45 -0
  561. package/.claude/commands/cost-savings-status.md +0 -34
  562. package/.claude/commands/metrics-summary.md +0 -58
  563. package/.claude/skills/cfn-docker-redis-coordination/MIGRATION_SUMMARY.md +0 -348
  564. package/.claude/skills/cfn-docker-redis-coordination/README.md +0 -294
  565. package/.claude/skills/cfn-docker-redis-coordination/SKILL.md +0 -435
  566. package/.claude/skills/cfn-docker-redis-coordination/coordinate.sh +0 -650
  567. package/.claude/skills/cfn-docker-redis-coordination/coordinate.sh.backup-1763145142 +0 -641
  568. package/.claude/skills/cfn-docker-redis-coordination/package-lock.json +0 -5259
  569. package/.claude/skills/cfn-docker-redis-coordination/package.json +0 -40
  570. package/.claude/skills/cfn-docker-redis-coordination/src/coordinator.ts +0 -801
  571. package/.claude/skills/cfn-docker-redis-coordination/src/index.ts +0 -42
  572. package/.claude/skills/cfn-docker-redis-coordination/src/types.ts +0 -351
  573. package/.claude/skills/cfn-docker-redis-coordination/tests/coordinator.test.ts +0 -1464
  574. package/.claude/skills/cfn-docker-redis-coordination/tsconfig.json +0 -30
  575. package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +0 -228
  576. package/.claude/skills/cfn-loop-orchestration/helpers/consensus-ts.sh +0 -104
  577. package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +0 -94
  578. package/.claude/skills/cfn-loop-orchestration/helpers/context-injection.sh +0 -142
  579. package/.claude/skills/cfn-loop-orchestration/helpers/context-lookup.sh +0 -359
  580. package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier-ts.sh +0 -123
  581. package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +0 -71
  582. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +0 -56
  583. package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager-ts.sh +0 -89
  584. package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +0 -87
  585. package/.claude/skills/cfn-loop-orchestration/helpers/orchestrate-ts.sh +0 -104
  586. package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +0 -56
  587. package/.claude/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +0 -290
  588. package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator-ts.sh +0 -47
  589. package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +0 -51
  590. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +0 -1345
  591. package/.claude/skills/cfn-redis-coordination/AGENT_LOGGING.md +0 -280
  592. package/.claude/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +0 -209
  593. package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +0 -319
  594. package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +0 -124
  595. package/.claude/skills/cfn-redis-coordination/config.json +0 -61
  596. package/.claude/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +0 -82
  597. package/.claude/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +0 -274
  598. package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -0
  599. package/.claude/skills/cfn-redis-coordination/docs/migration/PHASE_3_REDIS_COORDINATION_COMPLETION_REPORT.md +0 -553
  600. package/.claude/skills/cfn-redis-coordination/jest.config.js +0 -23
  601. package/.claude/skills/cfn-redis-coordination/package-lock.json +0 -5272
  602. package/.claude/skills/cfn-redis-coordination/package.json +0 -45
  603. package/.claude/skills/cfn-redis-coordination/src/agent-logger.ts +0 -446
  604. package/.claude/skills/cfn-redis-coordination/src/agent-recovery.ts +0 -454
  605. package/.claude/skills/cfn-redis-coordination/src/completion-reporter.ts +0 -396
  606. package/.claude/skills/cfn-redis-coordination/src/context-manager.ts +0 -327
  607. package/.claude/skills/cfn-redis-coordination/src/index.ts +0 -82
  608. package/.claude/skills/cfn-redis-coordination/src/mode-detector.ts +0 -155
  609. package/.claude/skills/cfn-redis-coordination/src/redis/redis-client.ts +0 -305
  610. package/.claude/skills/cfn-redis-coordination/src/redis/redis-functions.ts +0 -283
  611. package/.claude/skills/cfn-redis-coordination/src/redis-client.ts +0 -654
  612. package/.claude/skills/cfn-redis-coordination/src/result-collector.ts +0 -437
  613. package/.claude/skills/cfn-redis-coordination/src/swarm-manager.ts +0 -494
  614. package/.claude/skills/cfn-redis-coordination/src/task-analyzer.ts +0 -404
  615. package/.claude/skills/cfn-redis-coordination/src/task-executor.ts +0 -423
  616. package/.claude/skills/cfn-redis-coordination/src/types.ts +0 -235
  617. package/.claude/skills/cfn-redis-coordination/src/waiting-coordinator.ts +0 -587
  618. package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +0 -85
  619. package/.claude/skills/cfn-redis-coordination/test-connection-attempts.js +0 -70
  620. package/.claude/skills/cfn-redis-coordination/test-mode-simple.js +0 -121
  621. package/.claude/skills/cfn-redis-coordination/test-redis-check.js +0 -84
  622. package/.claude/skills/cfn-redis-coordination/test-task-mode-redis.cjs +0 -391
  623. package/.claude/skills/cfn-redis-coordination/tests/coordination.test.ts +0 -788
  624. package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +0 -67
  625. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +0 -980
  626. package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +0 -759
  627. package/claude-assets/agents/custom/test-mcp-access.md +0 -24
  628. package/claude-assets/agents/typescript-specialist.md +0 -280
  629. package/claude-assets/commands/cost-savings-status.md +0 -34
  630. package/claude-assets/commands/metrics-summary.md +0 -58
  631. package/claude-assets/skills/cfn-docker-redis-coordination/MIGRATION_SUMMARY.md +0 -348
  632. package/claude-assets/skills/cfn-docker-redis-coordination/README.md +0 -294
  633. package/claude-assets/skills/cfn-docker-redis-coordination/SKILL.md +0 -435
  634. package/claude-assets/skills/cfn-docker-redis-coordination/coordinate.sh +0 -650
  635. package/claude-assets/skills/cfn-docker-redis-coordination/coordinate.sh.backup-1763145142 +0 -641
  636. package/claude-assets/skills/cfn-docker-redis-coordination/jest.config.js +0 -37
  637. package/claude-assets/skills/cfn-docker-redis-coordination/package-lock.json +0 -5259
  638. package/claude-assets/skills/cfn-docker-redis-coordination/package.json +0 -40
  639. package/claude-assets/skills/cfn-docker-redis-coordination/src/coordinator.ts +0 -801
  640. package/claude-assets/skills/cfn-docker-redis-coordination/src/index.ts +0 -42
  641. package/claude-assets/skills/cfn-docker-redis-coordination/src/types.ts +0 -351
  642. package/claude-assets/skills/cfn-docker-redis-coordination/tests/coordinator.test.ts +0 -1464
  643. package/claude-assets/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +0 -228
  644. package/claude-assets/skills/cfn-loop-orchestration/helpers/consensus-ts.sh +0 -104
  645. package/claude-assets/skills/cfn-loop-orchestration/helpers/consensus.sh +0 -94
  646. package/claude-assets/skills/cfn-loop-orchestration/helpers/context-injection.sh +0 -142
  647. package/claude-assets/skills/cfn-loop-orchestration/helpers/context-lookup.sh +0 -359
  648. package/claude-assets/skills/cfn-loop-orchestration/helpers/deliverable-verifier-ts.sh +0 -123
  649. package/claude-assets/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +0 -71
  650. package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +0 -56
  651. package/claude-assets/skills/cfn-loop-orchestration/helpers/iteration-manager-ts.sh +0 -89
  652. package/claude-assets/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +0 -87
  653. package/claude-assets/skills/cfn-loop-orchestration/helpers/orchestrate-ts.sh +0 -104
  654. package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +0 -56
  655. package/claude-assets/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +0 -290
  656. package/claude-assets/skills/cfn-loop-orchestration/helpers/timeout-calculator-ts.sh +0 -47
  657. package/claude-assets/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +0 -51
  658. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +0 -1345
  659. package/claude-assets/skills/cfn-redis-cleanup/cleanup-redis.sh +0 -130
  660. package/claude-assets/skills/cfn-redis-coordination/AGENT_LOGGING.md +0 -280
  661. package/claude-assets/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +0 -209
  662. package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +0 -319
  663. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +0 -124
  664. package/claude-assets/skills/cfn-redis-coordination/config.json +0 -61
  665. package/claude-assets/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +0 -82
  666. package/claude-assets/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +0 -274
  667. package/claude-assets/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -0
  668. package/claude-assets/skills/cfn-redis-coordination/docs/migration/PHASE_3_REDIS_COORDINATION_COMPLETION_REPORT.md +0 -553
  669. package/claude-assets/skills/cfn-redis-coordination/jest.config.js +0 -23
  670. package/claude-assets/skills/cfn-redis-coordination/package-lock.json +0 -5272
  671. package/claude-assets/skills/cfn-redis-coordination/package.json +0 -45
  672. package/claude-assets/skills/cfn-redis-coordination/src/agent-logger.ts +0 -446
  673. package/claude-assets/skills/cfn-redis-coordination/src/agent-recovery.ts +0 -454
  674. package/claude-assets/skills/cfn-redis-coordination/src/completion-reporter.ts +0 -396
  675. package/claude-assets/skills/cfn-redis-coordination/src/context-manager.ts +0 -327
  676. package/claude-assets/skills/cfn-redis-coordination/src/index.ts +0 -82
  677. package/claude-assets/skills/cfn-redis-coordination/src/mode-detector.ts +0 -155
  678. package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-client.ts +0 -305
  679. package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-functions.ts +0 -283
  680. package/claude-assets/skills/cfn-redis-coordination/src/redis-client.ts +0 -654
  681. package/claude-assets/skills/cfn-redis-coordination/src/result-collector.ts +0 -437
  682. package/claude-assets/skills/cfn-redis-coordination/src/swarm-manager.ts +0 -494
  683. package/claude-assets/skills/cfn-redis-coordination/src/task-analyzer.ts +0 -404
  684. package/claude-assets/skills/cfn-redis-coordination/src/task-executor.ts +0 -423
  685. package/claude-assets/skills/cfn-redis-coordination/src/types.ts +0 -235
  686. package/claude-assets/skills/cfn-redis-coordination/src/waiting-coordinator.ts +0 -587
  687. package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +0 -85
  688. package/claude-assets/skills/cfn-redis-coordination/test-connection-attempts.js +0 -70
  689. package/claude-assets/skills/cfn-redis-coordination/test-mode-simple.js +0 -121
  690. package/claude-assets/skills/cfn-redis-coordination/test-redis-check.js +0 -84
  691. package/claude-assets/skills/cfn-redis-coordination/test-task-mode-redis.cjs +0 -391
  692. package/claude-assets/skills/cfn-redis-coordination/tests/coordination.test.ts +0 -788
  693. package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +0 -67
  694. package/claude-assets/skills/cfn-redis-data-extraction/SKILL.md +0 -442
  695. package/claude-assets/skills/cfn-redis-data-extraction/extract.sh +0 -306
  696. package/dist/coordination/index.js +0 -25
  697. package/dist/coordination/index.js.map +0 -1
  698. package/docs/BUG_19_MEMORY_LEAK_TASK_MODE.md +0 -405
  699. package/docs/MEMORY_CLEANUP_GUIDE.md +0 -358
  700. package/docs/MEMORY_LEAK_FIX_SUMMARY.md +0 -322
  701. package/docs/REDIS_CLEANUP_EXECUTIVE_SUMMARY.md +0 -319
  702. package/docs/REDIS_CLEANUP_VERIFICATION_REPORT.md +0 -574
  703. package/tests/test-memory-leak-task-mode.sh +0 -435
  704. /package/.claude/skills/cfn-loop-orchestration/{inject-loop-context.sh → archive/legacy-bash/inject-loop-context.sh} +0 -0
  705. /package/.claude/skills/cfn-loop-orchestration/{monitor-execution.sh → archive/legacy-bash/monitor-execution.sh} +0 -0
  706. /package/.claude/skills/cfn-redis-coordination/{agent-log.sh → agent-log.sh.backup} +0 -0
  707. /package/.claude/skills/cfn-redis-coordination/{agent-recovery.sh → agent-recovery.sh.backup} +0 -0
  708. /package/.claude/skills/cfn-redis-coordination/{analyze-task-complexity.sh → analyze-task-complexity.sh.backup} +0 -0
  709. /package/.claude/skills/cfn-redis-coordination/bash-wrappers/{store-context.sh → store-context.sh.backup} +0 -0
  710. /package/.claude/skills/cfn-redis-coordination/{cancel-swarm.sh → cancel-swarm.sh.backup} +0 -0
  711. /package/.claude/skills/cfn-redis-coordination/{cfn-loop-exec.sh → cfn-loop-exec.sh.backup} +0 -0
  712. /package/.claude/skills/cfn-redis-coordination/{cfn-loop-relaunch.sh → cfn-loop-relaunch.sh.backup} +0 -0
  713. /package/.claude/skills/cfn-redis-coordination/{collect-confidence-scores.sh → collect-confidence-scores.sh.backup} +0 -0
  714. /package/.claude/skills/cfn-redis-coordination/{collect-results.sh → collect-results.sh.backup} +0 -0
  715. /package/.claude/skills/cfn-redis-coordination/{complete-swarm.sh → complete-swarm.sh.backup} +0 -0
  716. /package/.claude/skills/cfn-redis-coordination/{get-context.sh → get-context.sh.backup} +0 -0
  717. /package/.claude/skills/cfn-redis-coordination/{get-success-criteria.sh → get-success-criteria.sh.backup} +0 -0
  718. /package/.claude/skills/cfn-redis-coordination/{invoke-waiting-mode.sh → invoke-waiting-mode.sh.backup} +0 -0
  719. /package/.claude/skills/cfn-redis-coordination/{redis-cli-wrapper.sh → redis-cli-wrapper.sh.backup} +0 -0
  720. /package/.claude/skills/cfn-redis-coordination/{redis-functions.sh → redis-functions.sh.backup} +0 -0
  721. /package/.claude/skills/cfn-redis-coordination/{report-completion.sh → report-completion.sh.backup} +0 -0
  722. /package/.claude/skills/cfn-redis-coordination/{store-context.sh → store-context.sh.backup} +0 -0
  723. /package/claude-assets/skills/cfn-loop-orchestration/{inject-loop-context.sh → archive/legacy-bash/inject-loop-context.sh} +0 -0
  724. /package/claude-assets/skills/cfn-loop-orchestration/{monitor-execution.sh → archive/legacy-bash/monitor-execution.sh} +0 -0
  725. /package/claude-assets/skills/cfn-redis-coordination/{agent-log.sh → agent-log.sh.backup} +0 -0
  726. /package/claude-assets/skills/cfn-redis-coordination/{agent-recovery.sh → agent-recovery.sh.backup} +0 -0
  727. /package/claude-assets/skills/cfn-redis-coordination/{analyze-task-complexity.sh → analyze-task-complexity.sh.backup} +0 -0
  728. /package/claude-assets/skills/cfn-redis-coordination/bash-wrappers/{store-context.sh → store-context.sh.backup} +0 -0
  729. /package/claude-assets/skills/cfn-redis-coordination/{cancel-swarm.sh → cancel-swarm.sh.backup} +0 -0
  730. /package/claude-assets/skills/cfn-redis-coordination/{cfn-loop-exec.sh → cfn-loop-exec.sh.backup} +0 -0
  731. /package/claude-assets/skills/cfn-redis-coordination/{cfn-loop-relaunch.sh → cfn-loop-relaunch.sh.backup} +0 -0
  732. /package/claude-assets/skills/cfn-redis-coordination/{collect-confidence-scores.sh → collect-confidence-scores.sh.backup} +0 -0
  733. /package/claude-assets/skills/cfn-redis-coordination/{collect-results.sh → collect-results.sh.backup} +0 -0
  734. /package/claude-assets/skills/cfn-redis-coordination/{complete-swarm.sh → complete-swarm.sh.backup} +0 -0
  735. /package/claude-assets/skills/cfn-redis-coordination/{get-context.sh → get-context.sh.backup} +0 -0
  736. /package/claude-assets/skills/cfn-redis-coordination/{get-success-criteria.sh → get-success-criteria.sh.backup} +0 -0
  737. /package/claude-assets/skills/cfn-redis-coordination/{invoke-waiting-mode.sh → invoke-waiting-mode.sh.backup} +0 -0
  738. /package/claude-assets/skills/cfn-redis-coordination/{redis-cli-wrapper.sh → redis-cli-wrapper.sh.backup} +0 -0
  739. /package/claude-assets/skills/cfn-redis-coordination/{redis-functions.sh → redis-functions.sh.backup} +0 -0
  740. /package/claude-assets/skills/cfn-redis-coordination/{report-completion.sh → report-completion.sh.backup} +0 -0
  741. /package/claude-assets/skills/cfn-redis-coordination/{store-context.sh → store-context.sh.backup} +0 -0
@@ -0,0 +1,297 @@
1
+ /**
2
+ * Task Mode Adapter - In-Memory and Hybrid Coordination
3
+ *
4
+ * Provides task mode coordination that works with or without trigger.dev:
5
+ * - In-memory event queuing when trigger.dev unavailable
6
+ * - Hybrid mode using trigger.dev webhooks for event notifications
7
+ * - Fallback to memory when API calls fail
8
+ *
9
+ * Configuration:
10
+ * - TASK_MODE_USE_MEMORY: Force memory mode (default: auto-detect)
11
+ * - TASK_MODE_TIMEOUT_MS: Default timeout for agent completion waits
12
+ */ import { EventEmitter } from 'node:events';
13
+ import TriggerDevClient from './trigger-dev-client.js';
14
+ /**
15
+ * Task mode event storage (FIFO queue)
16
+ */ export class TaskModeEventQueue {
17
+ queue = [];
18
+ eventEmitter = new EventEmitter();
19
+ /**
20
+ * Enqueue event for later processing
21
+ */ enqueue(event) {
22
+ this.queue.push(event);
23
+ this.eventEmitter.emit('event-added', event);
24
+ }
25
+ /**
26
+ * Dequeue next event (FIFO)
27
+ */ dequeue() {
28
+ return this.queue.shift();
29
+ }
30
+ /**
31
+ * Get all events of specific type
32
+ */ getByType(type) {
33
+ return this.queue.filter((e)=>e.type === type);
34
+ }
35
+ /**
36
+ * Get all events for task
37
+ */ getByTaskId(taskId) {
38
+ return this.queue.filter((e)=>e.taskId === taskId);
39
+ }
40
+ /**
41
+ * Clear all events
42
+ */ clear() {
43
+ this.queue = [];
44
+ }
45
+ /**
46
+ * Get queue size
47
+ */ size() {
48
+ return this.queue.length;
49
+ }
50
+ /**
51
+ * Subscribe to new events
52
+ */ on(event, listener) {
53
+ this.eventEmitter.on(event, listener);
54
+ }
55
+ /**
56
+ * Unsubscribe from events
57
+ */ off(event, listener) {
58
+ this.eventEmitter.off(event, listener);
59
+ }
60
+ }
61
+ /**
62
+ * TaskModeCoordinator - In-memory and hybrid coordination
63
+ *
64
+ * Provides task mode without Redis/external coordination:
65
+ * - Spawns agents with in-memory tracking
66
+ * - Waits for completion via event listeners
67
+ * - Falls back to memory if trigger.dev unavailable
68
+ * - Optionally uses trigger.dev for webhook notifications
69
+ */ export class TaskModeCoordinator {
70
+ config;
71
+ triggerDevClient;
72
+ eventQueue = new TaskModeEventQueue();
73
+ pendingCompletions = new Map();
74
+ constructor(options){
75
+ this.config = {
76
+ useMemory: options?.useMemory !== undefined ? options.useMemory : process.env.TASK_MODE_USE_MEMORY === 'true' || !process.env.TRIGGER_API_URL,
77
+ defaultTimeoutMs: options?.defaultTimeoutMs || 30000,
78
+ useTriggerDev: Boolean(process.env.TRIGGER_API_URL)
79
+ };
80
+ // Initialize trigger.dev client if configured
81
+ if (this.config.useTriggerDev && !this.config.useMemory) {
82
+ try {
83
+ this.triggerDevClient = new TriggerDevClient(options?.triggerDevConfig);
84
+ } catch (error) {
85
+ // Fall back to memory mode if trigger.dev config fails
86
+ console.warn('Trigger.dev initialization failed, using memory mode:', error);
87
+ this.config.useMemory = true;
88
+ }
89
+ }
90
+ }
91
+ /**
92
+ * Spawn agent and wait for completion
93
+ *
94
+ * TODO: RUNTIME_TEST: Verify agent spawning works in memory mode
95
+ * TODO: RUNTIME_TEST: Test timeout behavior with slow agents
96
+ *
97
+ * @param agentType Type of agent to spawn
98
+ * @param taskId Task ID
99
+ * @param payload Agent configuration
100
+ * @param timeoutMs Optional timeout override
101
+ * @returns Promise resolving to agent result
102
+ * @throws Error on spawn failure or timeout
103
+ */ async spawnAgent(agentType, taskId, payload, timeoutMs) {
104
+ const agentId = this.generateAgentId(agentType);
105
+ const timeout = timeoutMs || this.config.defaultTimeoutMs;
106
+ try {
107
+ // If using trigger.dev, trigger the run
108
+ if (this.triggerDevClient && !this.config.useMemory) {
109
+ await this.triggerViaTriggerDev(agentType, taskId, payload);
110
+ }
111
+ // Wait for completion either via webhook or event queue
112
+ const result = await this.waitForCompletion(agentId, timeout);
113
+ return result;
114
+ } catch (error) {
115
+ if (error instanceof Error) {
116
+ throw error;
117
+ }
118
+ throw new Error(`Agent spawn failed: ${String(error)}`);
119
+ }
120
+ }
121
+ /**
122
+ * Register agent completion event
123
+ *
124
+ * Used by webhook handlers to signal completion
125
+ */ registerAgentComplete(payload) {
126
+ this.eventQueue.enqueue({
127
+ type: 'agent-complete',
128
+ taskId: payload.taskId,
129
+ payload,
130
+ timestamp: Date.now()
131
+ });
132
+ // Resolve pending completion if waiting
133
+ const pending = this.pendingCompletions.get(payload.agentId);
134
+ if (pending) {
135
+ clearTimeout(pending.timeoutHandle);
136
+ pending.resolve({
137
+ agentId: payload.agentId,
138
+ agentType: payload.agentType,
139
+ success: payload.status === 'success',
140
+ output: payload.output,
141
+ confidenceScore: payload.confidenceScore,
142
+ executionTimeMs: payload.executionTimeMs
143
+ });
144
+ this.pendingCompletions.delete(payload.agentId);
145
+ }
146
+ return {
147
+ success: true,
148
+ message: 'Agent completion registered',
149
+ data: {
150
+ agentId: payload.agentId
151
+ }
152
+ };
153
+ }
154
+ /**
155
+ * Register gate result
156
+ */ registerGateResult(payload) {
157
+ this.eventQueue.enqueue({
158
+ type: 'gate-result',
159
+ taskId: payload.taskId,
160
+ payload,
161
+ timestamp: Date.now()
162
+ });
163
+ return {
164
+ success: true,
165
+ message: 'Gate result registered',
166
+ data: {
167
+ taskId: payload.taskId,
168
+ passed: payload.passed
169
+ }
170
+ };
171
+ }
172
+ /**
173
+ * Register consensus result
174
+ */ registerConsensusResult(payload) {
175
+ this.eventQueue.enqueue({
176
+ type: 'consensus-result',
177
+ taskId: payload.taskId,
178
+ payload,
179
+ timestamp: Date.now()
180
+ });
181
+ return {
182
+ success: true,
183
+ message: 'Consensus result registered',
184
+ data: {
185
+ taskId: payload.taskId,
186
+ consensusScore: payload.consensusScore
187
+ }
188
+ };
189
+ }
190
+ /**
191
+ * Register PO decision
192
+ */ registerPODecision(payload) {
193
+ this.eventQueue.enqueue({
194
+ type: 'po-decision',
195
+ taskId: payload.taskId,
196
+ payload,
197
+ timestamp: Date.now()
198
+ });
199
+ return {
200
+ success: true,
201
+ message: 'PO decision registered',
202
+ data: {
203
+ taskId: payload.taskId,
204
+ decision: payload.decision
205
+ }
206
+ };
207
+ }
208
+ /**
209
+ * Get event queue (for testing and inspection)
210
+ */ getEventQueue() {
211
+ return this.eventQueue;
212
+ }
213
+ /**
214
+ * Get all events for task
215
+ */ getTaskEvents(taskId) {
216
+ return this.eventQueue.getByTaskId(taskId);
217
+ }
218
+ /**
219
+ * Check if using memory mode
220
+ */ isMemoryMode() {
221
+ return this.config.useMemory;
222
+ }
223
+ /**
224
+ * Internal: Trigger agent run via trigger.dev
225
+ *
226
+ * @private
227
+ */ async triggerViaTriggerDev(agentType, taskId, payload) {
228
+ if (!this.triggerDevClient) {
229
+ return;
230
+ }
231
+ try {
232
+ // TODO: RUNTIME_TEST: Verify trigger.dev API call succeeds
233
+ await this.triggerDevClient.triggerCFNLoop({
234
+ taskId,
235
+ description: `Task mode agent: ${agentType}`,
236
+ mode: 'standard',
237
+ successCriteria: {
238
+ gate: 'test-pass-rate >= 0.95',
239
+ consensusThreshold: 0.9,
240
+ testPassRateThreshold: 0.95
241
+ },
242
+ context: {
243
+ agentType,
244
+ payload
245
+ }
246
+ });
247
+ } catch (error) {
248
+ // Fall back to memory mode if trigger.dev fails
249
+ console.warn('Trigger.dev trigger failed, continuing in memory mode:', error);
250
+ }
251
+ }
252
+ /**
253
+ * Internal: Wait for agent completion
254
+ *
255
+ * @private
256
+ */ waitForCompletion(agentId, timeoutMs) {
257
+ return new Promise((resolve, reject)=>{
258
+ const timeoutHandle = setTimeout(()=>{
259
+ this.pendingCompletions.delete(agentId);
260
+ reject(new Error(`Agent ${agentId} did not complete within ${timeoutMs}ms`));
261
+ }, timeoutMs);
262
+ this.pendingCompletions.set(agentId, {
263
+ agentId,
264
+ resolve,
265
+ reject,
266
+ timeoutHandle
267
+ });
268
+ });
269
+ }
270
+ /**
271
+ * Internal: Generate unique agent ID
272
+ *
273
+ * @private
274
+ */ generateAgentId(agentType) {
275
+ return `${agentType}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
276
+ }
277
+ }
278
+ /**
279
+ * Create task mode coordinator singleton
280
+ */ let coordinatorInstance = null;
281
+ export const createTaskModeCoordinator = (options)=>{
282
+ if (!coordinatorInstance) {
283
+ coordinatorInstance = new TaskModeCoordinator(options);
284
+ }
285
+ return coordinatorInstance;
286
+ };
287
+ /**
288
+ * Get existing coordinator instance or create new one
289
+ */ export const getTaskModeCoordinator = ()=>{
290
+ if (!coordinatorInstance) {
291
+ coordinatorInstance = new TaskModeCoordinator();
292
+ }
293
+ return coordinatorInstance;
294
+ };
295
+ export default TaskModeCoordinator;
296
+
297
+ //# sourceMappingURL=task-mode-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/integration/task-mode-adapter.ts"],"sourcesContent":["/**\r\n * Task Mode Adapter - In-Memory and Hybrid Coordination\r\n *\r\n * Provides task mode coordination that works with or without trigger.dev:\r\n * - In-memory event queuing when trigger.dev unavailable\r\n * - Hybrid mode using trigger.dev webhooks for event notifications\r\n * - Fallback to memory when API calls fail\r\n *\r\n * Configuration:\r\n * - TASK_MODE_USE_MEMORY: Force memory mode (default: auto-detect)\r\n * - TASK_MODE_TIMEOUT_MS: Default timeout for agent completion waits\r\n */\r\n\r\nimport { EventEmitter } from 'node:events';\r\nimport type {\r\n TaskModeSpawnRequest,\r\n TaskModeAgentResult,\r\n TaskModeEvent,\r\n AgentCompletePayload,\r\n GateResultPayload,\r\n ConsensusResultPayload,\r\n PODecisionPayload,\r\n AgentType,\r\n} from '../types/trigger-dev-events.d.js';\r\nimport TriggerDevClient, { TriggerDevError } from './trigger-dev-client.js';\r\n\r\n// TODO: RUNTIME_TEST: Verify EventEmitter imports work in Node.js environment\r\n\r\n/**\r\n * Task mode coordination result\r\n */\r\nexport interface TaskModeCoordinationResult {\r\n success: boolean;\r\n message: string;\r\n data?: unknown;\r\n}\r\n\r\n/**\r\n * Pending agent completion waiter\r\n */\r\ninterface PendingCompletion {\r\n agentId: string;\r\n resolve: (result: TaskModeAgentResult) => void;\r\n reject: (error: Error) => void;\r\n timeoutHandle: ReturnType<typeof setTimeout>;\r\n}\r\n\r\n/**\r\n * Task mode event storage (FIFO queue)\r\n */\r\nexport class TaskModeEventQueue {\r\n private queue: TaskModeEvent[] = [];\r\n private eventEmitter: EventEmitter = new EventEmitter();\r\n\r\n /**\r\n * Enqueue event for later processing\r\n */\r\n enqueue(event: TaskModeEvent): void {\r\n this.queue.push(event);\r\n this.eventEmitter.emit('event-added', event);\r\n }\r\n\r\n /**\r\n * Dequeue next event (FIFO)\r\n */\r\n dequeue(): TaskModeEvent | undefined {\r\n return this.queue.shift();\r\n }\r\n\r\n /**\r\n * Get all events of specific type\r\n */\r\n getByType(type: TaskModeEvent['type']): TaskModeEvent[] {\r\n return this.queue.filter(e => e.type === type);\r\n }\r\n\r\n /**\r\n * Get all events for task\r\n */\r\n getByTaskId(taskId: string): TaskModeEvent[] {\r\n return this.queue.filter(e => e.taskId === taskId);\r\n }\r\n\r\n /**\r\n * Clear all events\r\n */\r\n clear(): void {\r\n this.queue = [];\r\n }\r\n\r\n /**\r\n * Get queue size\r\n */\r\n size(): number {\r\n return this.queue.length;\r\n }\r\n\r\n /**\r\n * Subscribe to new events\r\n */\r\n on(event: string, listener: Function): void {\r\n this.eventEmitter.on(event, listener as any);\r\n }\r\n\r\n /**\r\n * Unsubscribe from events\r\n */\r\n off(event: string, listener: Function): void {\r\n this.eventEmitter.off(event, listener as any);\r\n }\r\n}\r\n\r\n/**\r\n * TaskModeCoordinator - In-memory and hybrid coordination\r\n *\r\n * Provides task mode without Redis/external coordination:\r\n * - Spawns agents with in-memory tracking\r\n * - Waits for completion via event listeners\r\n * - Falls back to memory if trigger.dev unavailable\r\n * - Optionally uses trigger.dev for webhook notifications\r\n */\r\nexport class TaskModeCoordinator {\r\n private readonly config: {\r\n useMemory: boolean;\r\n defaultTimeoutMs: number;\r\n useTriggerDev: boolean;\r\n };\r\n\r\n private triggerDevClient?: TriggerDevClient;\r\n private eventQueue: TaskModeEventQueue = new TaskModeEventQueue();\r\n private pendingCompletions: Map<string, PendingCompletion> = new Map();\r\n\r\n constructor(options?: {\r\n useMemory?: boolean;\r\n defaultTimeoutMs?: number;\r\n triggerDevConfig?: any;\r\n }) {\r\n this.config = {\r\n useMemory:\r\n options?.useMemory !== undefined\r\n ? options.useMemory\r\n : (process.env.TASK_MODE_USE_MEMORY === 'true' || !process.env.TRIGGER_API_URL),\r\n defaultTimeoutMs: options?.defaultTimeoutMs || 30000,\r\n useTriggerDev: Boolean(process.env.TRIGGER_API_URL),\r\n };\r\n\r\n // Initialize trigger.dev client if configured\r\n if (this.config.useTriggerDev && !this.config.useMemory) {\r\n try {\r\n this.triggerDevClient = new TriggerDevClient(options?.triggerDevConfig);\r\n } catch (error) {\r\n // Fall back to memory mode if trigger.dev config fails\r\n console.warn('Trigger.dev initialization failed, using memory mode:', error);\r\n this.config.useMemory = true;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Spawn agent and wait for completion\r\n *\r\n * TODO: RUNTIME_TEST: Verify agent spawning works in memory mode\r\n * TODO: RUNTIME_TEST: Test timeout behavior with slow agents\r\n *\r\n * @param agentType Type of agent to spawn\r\n * @param taskId Task ID\r\n * @param payload Agent configuration\r\n * @param timeoutMs Optional timeout override\r\n * @returns Promise resolving to agent result\r\n * @throws Error on spawn failure or timeout\r\n */\r\n async spawnAgent(\r\n agentType: AgentType,\r\n taskId: string,\r\n payload: Record<string, unknown>,\r\n timeoutMs?: number\r\n ): Promise<TaskModeAgentResult> {\r\n const agentId = this.generateAgentId(agentType);\r\n const timeout = timeoutMs || this.config.defaultTimeoutMs;\r\n\r\n try {\r\n // If using trigger.dev, trigger the run\r\n if (this.triggerDevClient && !this.config.useMemory) {\r\n await this.triggerViaTriggerDev(agentType, taskId, payload);\r\n }\r\n\r\n // Wait for completion either via webhook or event queue\r\n const result = await this.waitForCompletion(agentId, timeout);\r\n return result;\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n throw error;\r\n }\r\n throw new Error(`Agent spawn failed: ${String(error)}`);\r\n }\r\n }\r\n\r\n /**\r\n * Register agent completion event\r\n *\r\n * Used by webhook handlers to signal completion\r\n */\r\n registerAgentComplete(payload: AgentCompletePayload): TaskModeCoordinationResult {\r\n this.eventQueue.enqueue({\r\n type: 'agent-complete',\r\n taskId: payload.taskId,\r\n payload,\r\n timestamp: Date.now(),\r\n });\r\n\r\n // Resolve pending completion if waiting\r\n const pending = this.pendingCompletions.get(payload.agentId);\r\n if (pending) {\r\n clearTimeout(pending.timeoutHandle);\r\n pending.resolve({\r\n agentId: payload.agentId,\r\n agentType: payload.agentType,\r\n success: payload.status === 'success',\r\n output: payload.output,\r\n confidenceScore: payload.confidenceScore,\r\n executionTimeMs: payload.executionTimeMs,\r\n });\r\n this.pendingCompletions.delete(payload.agentId);\r\n }\r\n\r\n return {\r\n success: true,\r\n message: 'Agent completion registered',\r\n data: { agentId: payload.agentId },\r\n };\r\n }\r\n\r\n /**\r\n * Register gate result\r\n */\r\n registerGateResult(payload: GateResultPayload): TaskModeCoordinationResult {\r\n this.eventQueue.enqueue({\r\n type: 'gate-result',\r\n taskId: payload.taskId,\r\n payload,\r\n timestamp: Date.now(),\r\n });\r\n\r\n return {\r\n success: true,\r\n message: 'Gate result registered',\r\n data: { taskId: payload.taskId, passed: payload.passed },\r\n };\r\n }\r\n\r\n /**\r\n * Register consensus result\r\n */\r\n registerConsensusResult(payload: ConsensusResultPayload): TaskModeCoordinationResult {\r\n this.eventQueue.enqueue({\r\n type: 'consensus-result',\r\n taskId: payload.taskId,\r\n payload,\r\n timestamp: Date.now(),\r\n });\r\n\r\n return {\r\n success: true,\r\n message: 'Consensus result registered',\r\n data: {\r\n taskId: payload.taskId,\r\n consensusScore: payload.consensusScore,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Register PO decision\r\n */\r\n registerPODecision(payload: PODecisionPayload): TaskModeCoordinationResult {\r\n this.eventQueue.enqueue({\r\n type: 'po-decision',\r\n taskId: payload.taskId,\r\n payload,\r\n timestamp: Date.now(),\r\n });\r\n\r\n return {\r\n success: true,\r\n message: 'PO decision registered',\r\n data: { taskId: payload.taskId, decision: payload.decision },\r\n };\r\n }\r\n\r\n /**\r\n * Get event queue (for testing and inspection)\r\n */\r\n getEventQueue(): TaskModeEventQueue {\r\n return this.eventQueue;\r\n }\r\n\r\n /**\r\n * Get all events for task\r\n */\r\n getTaskEvents(taskId: string): TaskModeEvent[] {\r\n return this.eventQueue.getByTaskId(taskId);\r\n }\r\n\r\n /**\r\n * Check if using memory mode\r\n */\r\n isMemoryMode(): boolean {\r\n return this.config.useMemory;\r\n }\r\n\r\n /**\r\n * Internal: Trigger agent run via trigger.dev\r\n *\r\n * @private\r\n */\r\n private async triggerViaTriggerDev(\r\n agentType: AgentType,\r\n taskId: string,\r\n payload: Record<string, unknown>\r\n ): Promise<void> {\r\n if (!this.triggerDevClient) {\r\n return;\r\n }\r\n\r\n try {\r\n // TODO: RUNTIME_TEST: Verify trigger.dev API call succeeds\r\n await this.triggerDevClient.triggerCFNLoop({\r\n taskId,\r\n description: `Task mode agent: ${agentType}`,\r\n mode: 'standard',\r\n successCriteria: {\r\n gate: 'test-pass-rate >= 0.95',\r\n consensusThreshold: 0.9,\r\n testPassRateThreshold: 0.95,\r\n },\r\n context: {\r\n agentType,\r\n payload,\r\n },\r\n });\r\n } catch (error) {\r\n // Fall back to memory mode if trigger.dev fails\r\n console.warn('Trigger.dev trigger failed, continuing in memory mode:', error);\r\n }\r\n }\r\n\r\n /**\r\n * Internal: Wait for agent completion\r\n *\r\n * @private\r\n */\r\n private waitForCompletion(agentId: string, timeoutMs: number): Promise<TaskModeAgentResult> {\r\n return new Promise((resolve, reject) => {\r\n const timeoutHandle = setTimeout(() => {\r\n this.pendingCompletions.delete(agentId);\r\n reject(new Error(`Agent ${agentId} did not complete within ${timeoutMs}ms`));\r\n }, timeoutMs);\r\n\r\n this.pendingCompletions.set(agentId, {\r\n agentId,\r\n resolve,\r\n reject,\r\n timeoutHandle,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Internal: Generate unique agent ID\r\n *\r\n * @private\r\n */\r\n private generateAgentId(agentType: AgentType): string {\r\n return `${agentType}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\r\n }\r\n}\r\n\r\n/**\r\n * Create task mode coordinator singleton\r\n */\r\nlet coordinatorInstance: TaskModeCoordinator | null = null;\r\n\r\nexport const createTaskModeCoordinator = (options?: {\r\n useMemory?: boolean;\r\n defaultTimeoutMs?: number;\r\n triggerDevConfig?: any;\r\n}): TaskModeCoordinator => {\r\n if (!coordinatorInstance) {\r\n coordinatorInstance = new TaskModeCoordinator(options);\r\n }\r\n return coordinatorInstance;\r\n};\r\n\r\n/**\r\n * Get existing coordinator instance or create new one\r\n */\r\nexport const getTaskModeCoordinator = (): TaskModeCoordinator => {\r\n if (!coordinatorInstance) {\r\n coordinatorInstance = new TaskModeCoordinator();\r\n }\r\n return coordinatorInstance;\r\n};\r\n\r\nexport default TaskModeCoordinator;\r\n"],"names":["EventEmitter","TriggerDevClient","TaskModeEventQueue","queue","eventEmitter","enqueue","event","push","emit","dequeue","shift","getByType","type","filter","e","getByTaskId","taskId","clear","size","length","on","listener","off","TaskModeCoordinator","config","triggerDevClient","eventQueue","pendingCompletions","Map","options","useMemory","undefined","process","env","TASK_MODE_USE_MEMORY","TRIGGER_API_URL","defaultTimeoutMs","useTriggerDev","Boolean","triggerDevConfig","error","console","warn","spawnAgent","agentType","payload","timeoutMs","agentId","generateAgentId","timeout","triggerViaTriggerDev","result","waitForCompletion","Error","String","registerAgentComplete","timestamp","Date","now","pending","get","clearTimeout","timeoutHandle","resolve","success","status","output","confidenceScore","executionTimeMs","delete","message","data","registerGateResult","passed","registerConsensusResult","consensusScore","registerPODecision","decision","getEventQueue","getTaskEvents","isMemoryMode","triggerCFNLoop","description","mode","successCriteria","gate","consensusThreshold","testPassRateThreshold","context","Promise","reject","setTimeout","set","Math","random","toString","substr","coordinatorInstance","createTaskModeCoordinator","getTaskModeCoordinator"],"mappings":"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"}
@@ -0,0 +1,253 @@
1
+ /**
2
+ * TriggerDevClient - Type-safe wrapper for trigger.dev SDK
3
+ * Handles CFN Loop orchestration via trigger.dev API
4
+ *
5
+ * Configuration via environment variables:
6
+ * - TRIGGER_API_URL: Base URL for trigger.dev API
7
+ * - TRIGGER_API_KEY: Authentication token
8
+ * - TRIGGER_ENVIRONMENT_ID: Environment ID for deployments
9
+ */ /**
10
+ * Typed error class for trigger.dev operations
11
+ */ export class TriggerDevError extends Error {
12
+ code;
13
+ statusCode;
14
+ details;
15
+ constructor(message, code, statusCode, details){
16
+ super(message), this.code = code, this.statusCode = statusCode, this.details = details;
17
+ this.name = 'TriggerDevError';
18
+ }
19
+ }
20
+ /**
21
+ * TriggerDevClient - Type-safe integration with trigger.dev
22
+ *
23
+ * Provides methods for:
24
+ * - Triggering CFN Loop runs
25
+ * - Monitoring run status
26
+ * - Canceling runs
27
+ * - Querying run history
28
+ */ export class TriggerDevClient {
29
+ config;
30
+ baseUrl;
31
+ headers;
32
+ constructor(config){
33
+ const apiUrl = config?.apiUrl || process.env.TRIGGER_API_URL;
34
+ const apiKey = config?.apiKey || process.env.TRIGGER_API_KEY;
35
+ const environmentId = config?.environmentId || process.env.TRIGGER_ENVIRONMENT_ID;
36
+ if (!apiUrl || !apiKey || !environmentId) {
37
+ throw new TriggerDevError('Missing trigger.dev configuration', 'CONFIGURATION_ERROR', undefined, {
38
+ apiUrl: Boolean(apiUrl),
39
+ apiKey: Boolean(apiKey),
40
+ environmentId: Boolean(environmentId)
41
+ });
42
+ }
43
+ this.config = {
44
+ apiUrl,
45
+ apiKey,
46
+ environmentId,
47
+ timeoutMs: config?.timeoutMs || 30000,
48
+ retryAttempts: config?.retryAttempts || 3
49
+ };
50
+ this.baseUrl = `${apiUrl}/v1`;
51
+ this.headers = {
52
+ 'Authorization': `Bearer ${apiKey}`,
53
+ 'Content-Type': 'application/json',
54
+ 'X-Environment-Id': environmentId
55
+ };
56
+ }
57
+ /**
58
+ * Trigger a CFN Loop run via trigger.dev
59
+ *
60
+ * TODO: RUNTIME_TEST: Verify webhook signature validation in trigger.dev
61
+ * TODO: RUNTIME_TEST: Test retry logic with transient API failures
62
+ *
63
+ * @param payload CFN Loop trigger payload
64
+ * @returns Promise resolving to run ID
65
+ * @throws TriggerDevError on API failure
66
+ */ async triggerCFNLoop(payload) {
67
+ const endpoint = `${this.baseUrl}/tasks/cfn-loop/runs`;
68
+ try {
69
+ const response = await this.makeRequest('POST', endpoint, {
70
+ payload: {
71
+ taskId: payload.taskId,
72
+ description: payload.description,
73
+ mode: payload.mode,
74
+ successCriteria: payload.successCriteria,
75
+ context: payload.context || {},
76
+ webhookUrl: payload.webhookUrl
77
+ }
78
+ });
79
+ if (!response.id) {
80
+ throw new TriggerDevError('Invalid response format from trigger.dev', 'INVALID_RESPONSE', undefined, {
81
+ response
82
+ });
83
+ }
84
+ return response.id;
85
+ } catch (error) {
86
+ if (error instanceof TriggerDevError) {
87
+ throw error;
88
+ }
89
+ throw new TriggerDevError(`Failed to trigger CFN Loop: ${error instanceof Error ? error.message : String(error)}`, 'TRIGGER_FAILED', undefined, {
90
+ originalError: error
91
+ });
92
+ }
93
+ }
94
+ /**
95
+ * Get run status from trigger.dev
96
+ *
97
+ * TODO: RUNTIME_TEST: Verify polling behavior matches trigger.dev API
98
+ *
99
+ * @param runId Run ID from trigger.dev
100
+ * @returns Promise resolving to run status
101
+ * @throws TriggerDevError if run not found
102
+ */ async getRunStatus(runId) {
103
+ if (!runId || typeof runId !== 'string') {
104
+ throw new TriggerDevError('Invalid run ID', 'INVALID_RUN_ID', undefined, {
105
+ runId
106
+ });
107
+ }
108
+ const endpoint = `${this.baseUrl}/runs/${runId}`;
109
+ try {
110
+ const response = await this.makeRequest('GET', endpoint);
111
+ if (!response.status) {
112
+ throw new TriggerDevError('Invalid run response', 'INVALID_RESPONSE', undefined, {
113
+ response
114
+ });
115
+ }
116
+ return response;
117
+ } catch (error) {
118
+ if (error instanceof TriggerDevError) {
119
+ throw error;
120
+ }
121
+ throw new TriggerDevError(`Failed to get run status: ${error instanceof Error ? error.message : String(error)}`, 'STATUS_FETCH_FAILED', undefined, {
122
+ runId,
123
+ originalError: error
124
+ });
125
+ }
126
+ }
127
+ /**
128
+ * Cancel a trigger.dev run
129
+ *
130
+ * TODO: RUNTIME_TEST: Verify cancellation propagates to agent processes
131
+ *
132
+ * @param runId Run ID to cancel
133
+ * @throws TriggerDevError on cancellation failure
134
+ */ async cancelRun(runId) {
135
+ if (!runId || typeof runId !== 'string') {
136
+ throw new TriggerDevError('Invalid run ID', 'INVALID_RUN_ID', undefined, {
137
+ runId
138
+ });
139
+ }
140
+ const endpoint = `${this.baseUrl}/runs/${runId}/cancel`;
141
+ try {
142
+ await this.makeRequest('POST', endpoint);
143
+ } catch (error) {
144
+ if (error instanceof TriggerDevError) {
145
+ throw error;
146
+ }
147
+ throw new TriggerDevError(`Failed to cancel run: ${error instanceof Error ? error.message : String(error)}`, 'CANCEL_FAILED', undefined, {
148
+ runId,
149
+ originalError: error
150
+ });
151
+ }
152
+ }
153
+ /**
154
+ * List runs with optional filtering
155
+ *
156
+ * TODO: RUNTIME_TEST: Test pagination with large result sets
157
+ *
158
+ * @param filters Optional filter criteria
159
+ * @returns Promise resolving to array of runs
160
+ * @throws TriggerDevError on query failure
161
+ */ async listRuns(filters) {
162
+ const endpoint = `${this.baseUrl}/runs`;
163
+ const params = new URLSearchParams();
164
+ if (filters?.taskId) {
165
+ params.append('taskId', filters.taskId);
166
+ }
167
+ if (filters?.status) {
168
+ params.append('status', filters.status);
169
+ }
170
+ if (filters?.agentType) {
171
+ params.append('agentType', filters.agentType);
172
+ }
173
+ if (filters?.limit) {
174
+ params.append('limit', String(filters.limit));
175
+ }
176
+ if (filters?.offset) {
177
+ params.append('offset', String(filters.offset));
178
+ }
179
+ const queryString = params.toString();
180
+ const url = queryString ? `${endpoint}?${queryString}` : endpoint;
181
+ try {
182
+ const response = await this.makeRequest('GET', url);
183
+ if (!Array.isArray(response)) {
184
+ throw new TriggerDevError('Invalid response format', 'INVALID_RESPONSE', undefined, {
185
+ response
186
+ });
187
+ }
188
+ return response;
189
+ } catch (error) {
190
+ if (error instanceof TriggerDevError) {
191
+ throw error;
192
+ }
193
+ throw new TriggerDevError(`Failed to list runs: ${error instanceof Error ? error.message : String(error)}`, 'LIST_FAILED', undefined, {
194
+ filters,
195
+ originalError: error
196
+ });
197
+ }
198
+ }
199
+ /**
200
+ * Internal HTTP request handler with retry logic
201
+ *
202
+ * @private
203
+ * @param method HTTP method
204
+ * @param url Full URL
205
+ * @param body Optional request body
206
+ * @returns Promise resolving to response data
207
+ * @throws TriggerDevError on all retries exhausted
208
+ */ async makeRequest(method, url, body) {
209
+ let lastError = null;
210
+ for(let attempt = 0; attempt <= this.config.retryAttempts; attempt++){
211
+ try {
212
+ const response = await fetch(url, {
213
+ method,
214
+ headers: this.headers,
215
+ body: body ? JSON.stringify(body) : undefined,
216
+ signal: AbortSignal.timeout(this.config.timeoutMs)
217
+ });
218
+ if (!response.ok) {
219
+ const errorBody = await response.text();
220
+ throw new TriggerDevError(`HTTP ${response.status}: ${response.statusText}`, 'HTTP_ERROR', response.status, {
221
+ url,
222
+ method,
223
+ body: errorBody
224
+ });
225
+ }
226
+ return await response.json();
227
+ } catch (error) {
228
+ lastError = error instanceof Error ? error : new Error(String(error));
229
+ // Don't retry on validation errors
230
+ if (error instanceof TriggerDevError && error.code === 'INVALID_RUN_ID') {
231
+ throw error;
232
+ }
233
+ // Exponential backoff: 100ms * 2^attempt
234
+ if (attempt < this.config.retryAttempts) {
235
+ const delayMs = 100 * Math.pow(2, attempt);
236
+ await new Promise((resolve)=>setTimeout(resolve, delayMs));
237
+ }
238
+ }
239
+ }
240
+ throw new TriggerDevError(`Request failed after ${this.config.retryAttempts + 1} attempts`, 'REQUEST_FAILED', undefined, {
241
+ lastError: lastError?.message
242
+ });
243
+ }
244
+ }
245
+ /**
246
+ * Create and export singleton instance
247
+ * Uses environment variable configuration
248
+ */ export const createTriggerDevClient = ()=>{
249
+ return new TriggerDevClient();
250
+ };
251
+ export default TriggerDevClient;
252
+
253
+ //# sourceMappingURL=trigger-dev-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/integration/trigger-dev-client.ts"],"sourcesContent":["/**\r\n * TriggerDevClient - Type-safe wrapper for trigger.dev SDK\r\n * Handles CFN Loop orchestration via trigger.dev API\r\n *\r\n * Configuration via environment variables:\r\n * - TRIGGER_API_URL: Base URL for trigger.dev API\r\n * - TRIGGER_API_KEY: Authentication token\r\n * - TRIGGER_ENVIRONMENT_ID: Environment ID for deployments\r\n */\r\n\r\nimport {\r\n CFNLoopPayload,\r\n Run,\r\n RunStatusResponse,\r\n RunStatusType,\r\n AgentType,\r\n} from '../types/trigger-dev-events.d.js';\r\n\r\n/**\r\n * Typed error class for trigger.dev operations\r\n */\r\nexport class TriggerDevError extends Error {\r\n constructor(\r\n message: string,\r\n public readonly code: string,\r\n public readonly statusCode?: number,\r\n public readonly details?: Record<string, unknown>\r\n ) {\r\n super(message);\r\n this.name = 'TriggerDevError';\r\n }\r\n}\r\n\r\n/**\r\n * Run filter options for querying runs\r\n */\r\nexport interface RunFilterOptions {\r\n taskId?: string;\r\n status?: RunStatusType;\r\n limit?: number;\r\n offset?: number;\r\n agentType?: AgentType;\r\n}\r\n\r\n/**\r\n * Configuration for TriggerDevClient\r\n */\r\nexport interface TriggerDevConfig {\r\n apiUrl: string;\r\n apiKey: string;\r\n environmentId: string;\r\n timeoutMs?: number;\r\n retryAttempts?: number;\r\n}\r\n\r\n/**\r\n * TriggerDevClient - Type-safe integration with trigger.dev\r\n *\r\n * Provides methods for:\r\n * - Triggering CFN Loop runs\r\n * - Monitoring run status\r\n * - Canceling runs\r\n * - Querying run history\r\n */\r\nexport class TriggerDevClient {\r\n private readonly config: TriggerDevConfig;\r\n private readonly baseUrl: string;\r\n private readonly headers: Record<string, string>;\r\n\r\n constructor(config?: Partial<TriggerDevConfig>) {\r\n const apiUrl = config?.apiUrl || process.env.TRIGGER_API_URL;\r\n const apiKey = config?.apiKey || process.env.TRIGGER_API_KEY;\r\n const environmentId = config?.environmentId || process.env.TRIGGER_ENVIRONMENT_ID;\r\n\r\n if (!apiUrl || !apiKey || !environmentId) {\r\n throw new TriggerDevError(\r\n 'Missing trigger.dev configuration',\r\n 'CONFIGURATION_ERROR',\r\n undefined,\r\n {\r\n apiUrl: Boolean(apiUrl),\r\n apiKey: Boolean(apiKey),\r\n environmentId: Boolean(environmentId),\r\n }\r\n );\r\n }\r\n\r\n this.config = {\r\n apiUrl,\r\n apiKey,\r\n environmentId,\r\n timeoutMs: config?.timeoutMs || 30000,\r\n retryAttempts: config?.retryAttempts || 3,\r\n };\r\n\r\n this.baseUrl = `${apiUrl}/v1`;\r\n this.headers = {\r\n 'Authorization': `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json',\r\n 'X-Environment-Id': environmentId,\r\n };\r\n }\r\n\r\n /**\r\n * Trigger a CFN Loop run via trigger.dev\r\n *\r\n * TODO: RUNTIME_TEST: Verify webhook signature validation in trigger.dev\r\n * TODO: RUNTIME_TEST: Test retry logic with transient API failures\r\n *\r\n * @param payload CFN Loop trigger payload\r\n * @returns Promise resolving to run ID\r\n * @throws TriggerDevError on API failure\r\n */\r\n async triggerCFNLoop(payload: CFNLoopPayload): Promise<string> {\r\n const endpoint = `${this.baseUrl}/tasks/cfn-loop/runs`;\r\n\r\n try {\r\n const response = await this.makeRequest('POST', endpoint, {\r\n payload: {\r\n taskId: payload.taskId,\r\n description: payload.description,\r\n mode: payload.mode,\r\n successCriteria: payload.successCriteria,\r\n context: payload.context || {},\r\n webhookUrl: payload.webhookUrl,\r\n },\r\n });\r\n\r\n if (!response.id) {\r\n throw new TriggerDevError(\r\n 'Invalid response format from trigger.dev',\r\n 'INVALID_RESPONSE',\r\n undefined,\r\n { response }\r\n );\r\n }\r\n\r\n return response.id;\r\n } catch (error) {\r\n if (error instanceof TriggerDevError) {\r\n throw error;\r\n }\r\n\r\n throw new TriggerDevError(\r\n `Failed to trigger CFN Loop: ${error instanceof Error ? error.message : String(error)}`,\r\n 'TRIGGER_FAILED',\r\n undefined,\r\n { originalError: error }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Get run status from trigger.dev\r\n *\r\n * TODO: RUNTIME_TEST: Verify polling behavior matches trigger.dev API\r\n *\r\n * @param runId Run ID from trigger.dev\r\n * @returns Promise resolving to run status\r\n * @throws TriggerDevError if run not found\r\n */\r\n async getRunStatus(runId: string): Promise<RunStatusResponse> {\r\n if (!runId || typeof runId !== 'string') {\r\n throw new TriggerDevError(\r\n 'Invalid run ID',\r\n 'INVALID_RUN_ID',\r\n undefined,\r\n { runId }\r\n );\r\n }\r\n\r\n const endpoint = `${this.baseUrl}/runs/${runId}`;\r\n\r\n try {\r\n const response = await this.makeRequest('GET', endpoint);\r\n\r\n if (!response.status) {\r\n throw new TriggerDevError(\r\n 'Invalid run response',\r\n 'INVALID_RESPONSE',\r\n undefined,\r\n { response }\r\n );\r\n }\r\n\r\n return response;\r\n } catch (error) {\r\n if (error instanceof TriggerDevError) {\r\n throw error;\r\n }\r\n\r\n throw new TriggerDevError(\r\n `Failed to get run status: ${error instanceof Error ? error.message : String(error)}`,\r\n 'STATUS_FETCH_FAILED',\r\n undefined,\r\n { runId, originalError: error }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Cancel a trigger.dev run\r\n *\r\n * TODO: RUNTIME_TEST: Verify cancellation propagates to agent processes\r\n *\r\n * @param runId Run ID to cancel\r\n * @throws TriggerDevError on cancellation failure\r\n */\r\n async cancelRun(runId: string): Promise<void> {\r\n if (!runId || typeof runId !== 'string') {\r\n throw new TriggerDevError(\r\n 'Invalid run ID',\r\n 'INVALID_RUN_ID',\r\n undefined,\r\n { runId }\r\n );\r\n }\r\n\r\n const endpoint = `${this.baseUrl}/runs/${runId}/cancel`;\r\n\r\n try {\r\n await this.makeRequest('POST', endpoint);\r\n } catch (error) {\r\n if (error instanceof TriggerDevError) {\r\n throw error;\r\n }\r\n\r\n throw new TriggerDevError(\r\n `Failed to cancel run: ${error instanceof Error ? error.message : String(error)}`,\r\n 'CANCEL_FAILED',\r\n undefined,\r\n { runId, originalError: error }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * List runs with optional filtering\r\n *\r\n * TODO: RUNTIME_TEST: Test pagination with large result sets\r\n *\r\n * @param filters Optional filter criteria\r\n * @returns Promise resolving to array of runs\r\n * @throws TriggerDevError on query failure\r\n */\r\n async listRuns(filters?: RunFilterOptions): Promise<Run[]> {\r\n const endpoint = `${this.baseUrl}/runs`;\r\n const params = new URLSearchParams();\r\n\r\n if (filters?.taskId) {\r\n params.append('taskId', filters.taskId);\r\n }\r\n if (filters?.status) {\r\n params.append('status', filters.status);\r\n }\r\n if (filters?.agentType) {\r\n params.append('agentType', filters.agentType);\r\n }\r\n if (filters?.limit) {\r\n params.append('limit', String(filters.limit));\r\n }\r\n if (filters?.offset) {\r\n params.append('offset', String(filters.offset));\r\n }\r\n\r\n const queryString = params.toString();\r\n const url = queryString ? `${endpoint}?${queryString}` : endpoint;\r\n\r\n try {\r\n const response = await this.makeRequest('GET', url);\r\n\r\n if (!Array.isArray(response)) {\r\n throw new TriggerDevError(\r\n 'Invalid response format',\r\n 'INVALID_RESPONSE',\r\n undefined,\r\n { response }\r\n );\r\n }\r\n\r\n return response;\r\n } catch (error) {\r\n if (error instanceof TriggerDevError) {\r\n throw error;\r\n }\r\n\r\n throw new TriggerDevError(\r\n `Failed to list runs: ${error instanceof Error ? error.message : String(error)}`,\r\n 'LIST_FAILED',\r\n undefined,\r\n { filters, originalError: error }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Internal HTTP request handler with retry logic\r\n *\r\n * @private\r\n * @param method HTTP method\r\n * @param url Full URL\r\n * @param body Optional request body\r\n * @returns Promise resolving to response data\r\n * @throws TriggerDevError on all retries exhausted\r\n */\r\n private async makeRequest(\r\n method: string,\r\n url: string,\r\n body?: Record<string, unknown>\r\n ): Promise<any> {\r\n let lastError: Error | null = null;\r\n\r\n for (let attempt = 0; attempt <= this.config.retryAttempts!; attempt++) {\r\n try {\r\n const response = await fetch(url, {\r\n method,\r\n headers: this.headers,\r\n body: body ? JSON.stringify(body) : undefined,\r\n signal: AbortSignal.timeout(this.config.timeoutMs!),\r\n });\r\n\r\n if (!response.ok) {\r\n const errorBody = await response.text();\r\n throw new TriggerDevError(\r\n `HTTP ${response.status}: ${response.statusText}`,\r\n 'HTTP_ERROR',\r\n response.status,\r\n {\r\n url,\r\n method,\r\n body: errorBody,\r\n }\r\n );\r\n }\r\n\r\n return await response.json();\r\n } catch (error) {\r\n lastError = error instanceof Error ? error : new Error(String(error));\r\n\r\n // Don't retry on validation errors\r\n if (error instanceof TriggerDevError && error.code === 'INVALID_RUN_ID') {\r\n throw error;\r\n }\r\n\r\n // Exponential backoff: 100ms * 2^attempt\r\n if (attempt < this.config.retryAttempts!) {\r\n const delayMs = 100 * Math.pow(2, attempt);\r\n await new Promise(resolve => setTimeout(resolve, delayMs));\r\n }\r\n }\r\n }\r\n\r\n throw new TriggerDevError(\r\n `Request failed after ${this.config.retryAttempts! + 1} attempts`,\r\n 'REQUEST_FAILED',\r\n undefined,\r\n { lastError: lastError?.message }\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Create and export singleton instance\r\n * Uses environment variable configuration\r\n */\r\nexport const createTriggerDevClient = (): TriggerDevClient => {\r\n return new TriggerDevClient();\r\n};\r\n\r\nexport default TriggerDevClient;\r\n"],"names":["TriggerDevError","Error","message","code","statusCode","details","name","TriggerDevClient","config","baseUrl","headers","apiUrl","process","env","TRIGGER_API_URL","apiKey","TRIGGER_API_KEY","environmentId","TRIGGER_ENVIRONMENT_ID","undefined","Boolean","timeoutMs","retryAttempts","triggerCFNLoop","payload","endpoint","response","makeRequest","taskId","description","mode","successCriteria","context","webhookUrl","id","error","String","originalError","getRunStatus","runId","status","cancelRun","listRuns","filters","params","URLSearchParams","append","agentType","limit","offset","queryString","toString","url","Array","isArray","method","body","lastError","attempt","fetch","JSON","stringify","signal","AbortSignal","timeout","ok","errorBody","text","statusText","json","delayMs","Math","pow","Promise","resolve","setTimeout","createTriggerDevClient"],"mappings":"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"}