claude-flow-novice 2.6.0 → 2.9.0

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 (659) hide show
  1. package/.claude/agents/cfn-dev-team/coordinators/README.md +42 -0
  2. package/.claude/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +440 -0
  3. package/.claude/agents/{product-owner-team → cfn-dev-team/coordinators}/cto-agent.md +154 -187
  4. package/.claude/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +50 -0
  5. package/.claude/agents/{product-owner-team → cfn-dev-team/coordinators}/product-owner-agent.md +7 -40
  6. package/.claude/agents/{cfn-loop → cfn-dev-team/coordinators}/product-owner.md +73 -18
  7. package/.claude/agents/cfn-dev-team/developers/README.md +69 -0
  8. package/.claude/agents/cfn-dev-team/developers/backend-dev.md +77 -0
  9. package/.claude/agents/{core-agents → cfn-dev-team/developers}/coder.md +132 -27
  10. package/.claude/agents/cfn-dev-team/developers/react-frontend-engineer.md +121 -0
  11. package/.claude/agents/{frontend → cfn-dev-team/developers}/state-architect.md +1 -0
  12. package/.claude/agents/{frontend → cfn-dev-team/developers}/ui-designer.md +1 -0
  13. package/.claude/agents/cfn-dev-team/reviewers/README.md +58 -0
  14. package/.claude/agents/{analysis → cfn-dev-team/reviewers}/code-quality-validator.md +9 -18
  15. package/.claude/agents/{core-agents → cfn-dev-team/reviewers}/reviewer.md +62 -23
  16. package/.claude/agents/cfn-dev-team/testers/README.md +94 -0
  17. package/.claude/agents/{testing → cfn-dev-team/testers}/e2e/playwright-agent.md +2 -21
  18. package/.claude/agents/{testing → cfn-dev-team/testers}/interaction-tester.md +2 -21
  19. package/.claude/agents/{testing → cfn-dev-team/testers}/playwright-tester.md +1 -1
  20. package/.claude/agents/cfn-dev-team/testers/tester.md +139 -0
  21. package/.claude/agents/cfn-dev-team/testers/unit/tdd-london-swarm.md +49 -0
  22. package/.claude/agents/cfn-dev-team/testers/validation/production-validator.md +33 -0
  23. package/.claude/cfn-data/cfn-loop.db +0 -0
  24. package/.claude/cfn-data/cfn_loop_logs.db +0 -0
  25. package/.claude/commands/{CFN_COORDINATOR_PARAMETERS.md → cfn/CFN_COORDINATOR_PARAMETERS.md} +22 -22
  26. package/.claude/commands/{cfn-loop-epic.md → cfn/cfn-loop-epic.md} +6 -6
  27. package/.claude/commands/{cfn-loop-single.md → cfn/cfn-loop-single.md} +9 -9
  28. package/.claude/commands/{cfn-loop-sprints.md → cfn/cfn-loop-sprints.md} +1 -1
  29. package/.claude/commands/{cfn-loop.md → cfn/cfn-loop.md} +9 -9
  30. package/.claude/commands/cfn/cfn-mode.md +20 -0
  31. package/.claude/commands/{cfn-optimize-agents.md → cfn/cfn-optimize-agents.md} +1 -1
  32. package/.claude/commands/{context-curate.md → cfn/context-curate.md} +2 -2
  33. package/.claude/commands/{context-inject.md → cfn/context-inject.md} +3 -3
  34. package/.claude/commands/{context-reflect.md → cfn/context-reflect.md} +1 -1
  35. package/.claude/commands/{context-stats.md → cfn/context-stats.md} +1 -1
  36. package/.claude/commands/{list-agents-rebuild.md → cfn/list-agents-rebuild.md} +12 -12
  37. package/.claude/commands/cfn/write-plan.md +104 -0
  38. package/.claude/hooks/cfn-BACKUP_USAGE.md +243 -0
  39. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +79 -0
  40. package/.claude/hooks/cfn-post-edit.sh +21 -0
  41. package/.claude/hooks/cfn-pre-edit-backup.sh +71 -0
  42. package/.claude/hooks/cfn-restore-from-backup.sh +37 -0
  43. package/.claude/skills/cfn-loop-orchestration/README.md +41 -0
  44. package/.claude/skills/cfn-redis-coordination/README.md +65 -0
  45. package/.claude/skills/cfn-webapp-testing/README.md +142 -0
  46. package/CFN-CLAUDE.md +776 -0
  47. package/README.md +598 -251
  48. package/dist/agents/agent-loader.js +146 -165
  49. package/dist/agents/agent-loader.js.map +1 -1
  50. package/dist/cli/agent-command.js +2 -0
  51. package/dist/cli/agent-command.js.map +1 -1
  52. package/dist/cli/agent-definition-parser.js +7 -0
  53. package/dist/cli/agent-definition-parser.js.map +1 -1
  54. package/dist/cli/agent-executor.js +145 -11
  55. package/dist/cli/agent-executor.js.map +1 -1
  56. package/dist/cli/agent-prompt-builder.js +81 -1
  57. package/dist/cli/agent-prompt-builder.js.map +1 -1
  58. package/dist/cli/agent-spawn.js +10 -1
  59. package/dist/cli/agent-spawn.js.map +1 -1
  60. package/dist/cli/anthropic-client.js +192 -13
  61. package/dist/cli/anthropic-client.js.map +1 -1
  62. package/dist/cli/cfn-context.js +150 -0
  63. package/dist/cli/cfn-context.js.map +1 -1
  64. package/dist/cli/cfn-fork.js +159 -0
  65. package/dist/cli/cfn-fork.js.map +1 -0
  66. package/dist/cli/cli-agent-context.js +8 -3
  67. package/dist/cli/cli-agent-context.js.map +1 -1
  68. package/dist/cli/conversation-fork.js +201 -0
  69. package/dist/cli/conversation-fork.js.map +1 -0
  70. package/dist/cli/index.js +4 -0
  71. package/dist/cli/index.js.map +1 -1
  72. package/dist/cli/init-command.js +20 -0
  73. package/dist/cli/init-command.js.map +1 -0
  74. package/dist/cli/tool-definitions.js +263 -0
  75. package/dist/cli/tool-definitions.js.map +1 -0
  76. package/dist/cli/tool-executor.js +247 -0
  77. package/dist/cli/tool-executor.js.map +1 -0
  78. package/dist/hello.js +8 -0
  79. package/dist/hello.js.map +1 -0
  80. package/package.json +26 -12
  81. package/scripts/README.md +68 -0
  82. package/scripts/cfn-intervention-example.sh +21 -0
  83. package/scripts/init-project.js +148 -0
  84. package/scripts/migrate-test-infrastructure.sh +40 -0
  85. package/scripts/restructure-cfn-namespace.sh +161 -0
  86. package/scripts/validate-test-migration.sh +49 -0
  87. package/scripts/verify-no-secrets.sh +55 -0
  88. package/.claude/SLASH-COMMANDS-READY.md +0 -53
  89. package/.claude/WORKING-SETUP.md +0 -67
  90. package/.claude/ace-system-overview.md +0 -524
  91. package/.claude/agent-principles/agent-template.md +0 -96
  92. package/.claude/agents/CLAUDE.md +0 -995
  93. package/.claude/agents/README-VALIDATION.md +0 -243
  94. package/.claude/agents/agent-principles/README.md +0 -226
  95. package/.claude/agents/agent-principles/agent-type-guidelines.md +0 -465
  96. package/.claude/agents/agent-principles/format-selection.md +0 -224
  97. package/.claude/agents/agent-principles/phase4-template-optimization.md +0 -494
  98. package/.claude/agents/agent-principles/prompt-engineering.md +0 -501
  99. package/.claude/agents/agent-principles/quality-metrics.md +0 -375
  100. package/.claude/agents/analysis/code-analyzer.md +0 -192
  101. package/.claude/agents/analysis/code-review/analyze-code-quality.md +0 -133
  102. package/.claude/agents/analysis/perf-analyzer.md +0 -230
  103. package/.claude/agents/architecture/system-architect.md +0 -161
  104. package/.claude/agents/architecture/system-architect.md.backup +0 -603
  105. package/.claude/agents/code-booster.md +0 -131
  106. package/.claude/agents/consensus/consensus-builder.md +0 -159
  107. package/.claude/agents/consensus/crdt-synchronizer.md +0 -192
  108. package/.claude/agents/consensus/performance-benchmarker.md +0 -101
  109. package/.claude/agents/consensus/quorum-manager.md +0 -168
  110. package/.claude/agents/consensus/raft-manager.md +0 -106
  111. package/.claude/agents/consensus/security-manager.md +0 -107
  112. package/.claude/agents/context/context-curator.md +0 -84
  113. package/.claude/agents/context/context-reflector.md +0 -81
  114. package/.claude/agents/context-curator.md +0 -167
  115. package/.claude/agents/context-reflector.md +0 -65
  116. package/.claude/agents/core-agents/analyst.md +0 -170
  117. package/.claude/agents/core-agents/architect.md +0 -200
  118. package/.claude/agents/core-agents/base-template-generator.md +0 -188
  119. package/.claude/agents/core-agents/cfn-loop-coordinator.md +0 -134
  120. package/.claude/agents/core-agents/code-quality-validator.md +0 -149
  121. package/.claude/agents/core-agents/context-curator.md +0 -452
  122. package/.claude/agents/core-agents/context-reflector.md +0 -273
  123. package/.claude/agents/core-agents/coordinator.md +0 -182
  124. package/.claude/agents/core-agents/cost-savings-cfn-loop-coordinator.md +0 -235
  125. package/.claude/agents/core-agents/cost-savings-coordinator.md +0 -167
  126. package/.claude/agents/core-agents/performance-benchmarker.md +0 -148
  127. package/.claude/agents/core-agents/planner.md +0 -174
  128. package/.claude/agents/core-agents/security-manager.md +0 -111
  129. package/.claude/agents/core-agents/tester.md +0 -170
  130. package/.claude/agents/custom/agent-builder.md +0 -637
  131. package/.claude/agents/development/backend/dev-backend-api.md +0 -139
  132. package/.claude/agents/development/backend-dev.md +0 -165
  133. package/.claude/agents/development/npm-package-specialist.md +0 -347
  134. package/.claude/agents/devops/devops-engineer.md +0 -148
  135. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +0 -98
  136. package/.claude/agents/documentation/api-docs.md +0 -103
  137. package/.claude/agents/frontend/README.md +0 -640
  138. package/.claude/agents/frontend/interaction-tester.md +0 -139
  139. package/.claude/agents/frontend/react-frontend-engineer.md +0 -9
  140. package/.claude/agents/github/github-commit-agent.md +0 -118
  141. package/.claude/agents/goal/goal-planner.md +0 -183
  142. package/.claude/agents/personas/accessibility-advocate-persona.md +0 -107
  143. package/.claude/agents/planning-team/api-designer-persona.md +0 -147
  144. package/.claude/agents/planning-team/security-architect-persona.md +0 -190
  145. package/.claude/agents/planning-team/system-architect-persona.md +0 -190
  146. package/.claude/agents/product-owner-team/accessibility-advocate-persona.md +0 -161
  147. package/.claude/agents/product-owner-team/power-user-persona.md +0 -182
  148. package/.claude/agents/security/security-specialist-existing.md +0 -154
  149. package/.claude/agents/security/security-specialist.md +0 -185
  150. package/.claude/agents/sparc/architecture.md +0 -149
  151. package/.claude/agents/sparc/pseudocode.md +0 -159
  152. package/.claude/agents/sparc/refinement.md +0 -106
  153. package/.claude/agents/sparc/specification.md +0 -157
  154. package/.claude/agents/specialized/cli-agent-optimizer.md +0 -122
  155. package/.claude/agents/specialized/code-booster.md +0 -143
  156. package/.claude/agents/specialized/devops-engineer.md +0 -150
  157. package/.claude/agents/specialized/mobile/mobile-dev.md +0 -210
  158. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +0 -191
  159. package/.claude/agents/specialized/rust-developer.md +0 -166
  160. package/.claude/agents/specialized/rust-enterprise-developer.md +0 -144
  161. package/.claude/agents/specialized/rust-mvp-developer.md +0 -142
  162. package/.claude/agents/testing/production-validator.md +0 -179
  163. package/.claude/agents/testing/tdd-london-swarm.md +0 -209
  164. package/.claude/agents/testing/unit/tdd-london-swarm.md +0 -43
  165. package/.claude/agents/testing/validation/production-validator.md +0 -43
  166. package/.claude/agents/validate-agent.js +0 -841
  167. package/.claude/agents-ignore/cfn-coordinator-enterprise.md +0 -1303
  168. package/.claude/agents-ignore/cfn-coordinator-mvp.md +0 -942
  169. package/.claude/agents-ignore/cfn-coordinator-standard.md +0 -1062
  170. package/.claude/agents-ignore/deprecated-coordinators/adaptive-coordinator-enhanced.md +0 -145
  171. package/.claude/agents-ignore/deprecated-coordinators/adaptive-coordinator.md +0 -161
  172. package/.claude/agents-ignore/deprecated-coordinators/blocking-coordinator-example.md +0 -732
  173. package/.claude/agents-ignore/deprecated-coordinators/byzantine-coordinator.md +0 -94
  174. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-enterprise.md +0 -323
  175. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-mvp.md +0 -157
  176. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-standard.md +0 -229
  177. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-unified.md +0 -149
  178. package/.claude/agents-ignore/deprecated-coordinators/coordinator-hybrid.md +0 -231
  179. package/.claude/agents-ignore/deprecated-coordinators/gossip-coordinator.md +0 -165
  180. package/.claude/agents-ignore/deprecated-coordinators/hierarchical-coordinator.md +0 -91
  181. package/.claude/agents-ignore/deprecated-coordinators/mesh-coordinator.md +0 -131
  182. package/.claude/agents-ignore/deprecated-coordinators/task-coordinator.md +0 -105
  183. package/.claude/agents-ignore/deprecated-coordinators/test-coordinator.md +0 -141
  184. package/.claude/api-configs/config-current-zai-config.env +0 -62
  185. package/.claude/api-configs/config-test-zai-config.env +0 -62
  186. package/.claude/api-configs/env-backups/before-anthropic-20251020-025404.env +0 -62
  187. package/.claude/api-configs/env-backups/before-restore-20251020-025431.env +0 -62
  188. package/.claude/architecture/mesh-get-polling-design.md +0 -87
  189. package/.claude/architecture/mesh-get-polling-implementation.md +0 -89
  190. package/.claude/architecture/typescript-microservices.md +0 -50
  191. package/.claude/artifacts/reflection-merge-logs/cli-agent-spawning-v2.5.2-merge-report.md +0 -61
  192. package/.claude/cfn-loop-rules.md +0 -73
  193. package/.claude/cfn-mode-patterns.md +0 -571
  194. package/.claude/claude-md-backup-pre-skills.md +0 -15
  195. package/.claude/commands/agents/README.md +0 -10
  196. package/.claude/commands/agents/agent-capabilities.md +0 -21
  197. package/.claude/commands/agents/agent-coordination.md +0 -28
  198. package/.claude/commands/agents/agent-spawning.md +0 -28
  199. package/.claude/commands/agents/agent-types.md +0 -26
  200. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
  201. package/.claude/commands/analysis/README.md +0 -9
  202. package/.claude/commands/analysis/bottleneck-detect.md +0 -162
  203. package/.claude/commands/analysis/performance-bottlenecks.md +0 -59
  204. package/.claude/commands/analysis/performance-report.md +0 -25
  205. package/.claude/commands/analysis/token-efficiency.md +0 -45
  206. package/.claude/commands/analysis/token-usage.md +0 -25
  207. package/.claude/commands/automation/README.md +0 -9
  208. package/.claude/commands/automation/auto-agent.md +0 -122
  209. package/.claude/commands/automation/self-healing.md +0 -106
  210. package/.claude/commands/automation/session-memory.md +0 -90
  211. package/.claude/commands/automation/smart-agents.md +0 -73
  212. package/.claude/commands/automation/smart-spawn.md +0 -25
  213. package/.claude/commands/automation/workflow-select.md +0 -25
  214. package/.claude/commands/claude-md.js +0 -237
  215. package/.claude/commands/claude-soul.js +0 -28
  216. package/.claude/commands/cli-integration.js +0 -216
  217. package/.claude/commands/coordination/README.md +0 -9
  218. package/.claude/commands/coordination/agent-spawn.md +0 -25
  219. package/.claude/commands/coordination/coordination-system.md +0 -88
  220. package/.claude/commands/coordination/init.md +0 -44
  221. package/.claude/commands/coordination/orchestrate.md +0 -43
  222. package/.claude/commands/coordination/spawn.md +0 -45
  223. package/.claude/commands/coordination/swarm-init.md +0 -85
  224. package/.claude/commands/coordination/task-orchestrate.md +0 -25
  225. package/.claude/commands/github/README.md +0 -11
  226. package/.claude/commands/github/code-review-swarm.md +0 -514
  227. package/.claude/commands/github/code-review.md +0 -25
  228. package/.claude/commands/github/github-modes.md +0 -147
  229. package/.claude/commands/github/github-swarm.md +0 -121
  230. package/.claude/commands/github/issue-tracker.md +0 -292
  231. package/.claude/commands/github/issue-triage.md +0 -25
  232. package/.claude/commands/github/multi-repo-swarm.md +0 -519
  233. package/.claude/commands/github/pr-enhance.md +0 -26
  234. package/.claude/commands/github/pr-manager.md +0 -170
  235. package/.claude/commands/github/project-board-sync.md +0 -471
  236. package/.claude/commands/github/release-manager.md +0 -338
  237. package/.claude/commands/github/release-swarm.md +0 -544
  238. package/.claude/commands/github/repo-analyze.md +0 -25
  239. package/.claude/commands/github/repo-architect.md +0 -367
  240. package/.claude/commands/github/swarm-issue.md +0 -482
  241. package/.claude/commands/github/swarm-pr.md +0 -285
  242. package/.claude/commands/github/sync-coordinator.md +0 -301
  243. package/.claude/commands/github/workflow-automation.md +0 -442
  244. package/.claude/commands/github.js +0 -638
  245. package/.claude/commands/hive-mind/README.md +0 -17
  246. package/.claude/commands/hive-mind/hive-mind-consensus.md +0 -8
  247. package/.claude/commands/hive-mind/hive-mind-init.md +0 -18
  248. package/.claude/commands/hive-mind/hive-mind-memory.md +0 -8
  249. package/.claude/commands/hive-mind/hive-mind-metrics.md +0 -8
  250. package/.claude/commands/hive-mind/hive-mind-resume.md +0 -8
  251. package/.claude/commands/hive-mind/hive-mind-sessions.md +0 -8
  252. package/.claude/commands/hive-mind/hive-mind-spawn.md +0 -21
  253. package/.claude/commands/hive-mind/hive-mind-status.md +0 -8
  254. package/.claude/commands/hive-mind/hive-mind-stop.md +0 -8
  255. package/.claude/commands/hive-mind/hive-mind-wizard.md +0 -8
  256. package/.claude/commands/hive-mind/hive-mind.md +0 -27
  257. package/.claude/commands/hooks/README.md +0 -11
  258. package/.claude/commands/hooks/overview.md +0 -58
  259. package/.claude/commands/hooks/post-edit.md +0 -117
  260. package/.claude/commands/hooks/post-task.md +0 -112
  261. package/.claude/commands/hooks/pre-edit.md +0 -113
  262. package/.claude/commands/hooks/pre-task.md +0 -111
  263. package/.claude/commands/hooks/session-end.md +0 -118
  264. package/.claude/commands/hooks/session-start.md +0 -9
  265. package/.claude/commands/hooks/setup.md +0 -103
  266. package/.claude/commands/hooks.js +0 -651
  267. package/.claude/commands/index.js +0 -119
  268. package/.claude/commands/memory/README.md +0 -9
  269. package/.claude/commands/memory/memory-bank.md +0 -58
  270. package/.claude/commands/memory/memory-persist.md +0 -25
  271. package/.claude/commands/memory/memory-search.md +0 -25
  272. package/.claude/commands/memory/memory-usage.md +0 -25
  273. package/.claude/commands/memory/neural.md +0 -47
  274. package/.claude/commands/memory/usage.md +0 -46
  275. package/.claude/commands/monitoring/README.md +0 -9
  276. package/.claude/commands/monitoring/agent-metrics.md +0 -25
  277. package/.claude/commands/monitoring/agents.md +0 -44
  278. package/.claude/commands/monitoring/real-time-view.md +0 -25
  279. package/.claude/commands/monitoring/status.md +0 -46
  280. package/.claude/commands/monitoring/swarm-monitor.md +0 -25
  281. package/.claude/commands/neural.js +0 -572
  282. package/.claude/commands/optimization/README.md +0 -9
  283. package/.claude/commands/optimization/auto-topology.md +0 -62
  284. package/.claude/commands/optimization/cache-manage.md +0 -25
  285. package/.claude/commands/optimization/parallel-execute.md +0 -25
  286. package/.claude/commands/optimization/parallel-execution.md +0 -50
  287. package/.claude/commands/optimization/topology-optimize.md +0 -25
  288. package/.claude/commands/pair/README.md +0 -261
  289. package/.claude/commands/pair/commands.md +0 -546
  290. package/.claude/commands/pair/config.md +0 -510
  291. package/.claude/commands/pair/examples.md +0 -512
  292. package/.claude/commands/pair/modes.md +0 -348
  293. package/.claude/commands/pair/session.md +0 -407
  294. package/.claude/commands/pair/start.md +0 -209
  295. package/.claude/commands/parse-epic.js +0 -180
  296. package/.claude/commands/performance.js +0 -582
  297. package/.claude/commands/register-all-commands.js +0 -320
  298. package/.claude/commands/register-claude-md.js +0 -82
  299. package/.claude/commands/register-claude-soul.js +0 -80
  300. package/.claude/commands/sparc/analyzer.md +0 -52
  301. package/.claude/commands/sparc/architect.md +0 -53
  302. package/.claude/commands/sparc/batch-executor.md +0 -54
  303. package/.claude/commands/sparc/coder.md +0 -54
  304. package/.claude/commands/sparc/debugger.md +0 -54
  305. package/.claude/commands/sparc/designer.md +0 -53
  306. package/.claude/commands/sparc/documenter.md +0 -54
  307. package/.claude/commands/sparc/innovator.md +0 -54
  308. package/.claude/commands/sparc/memory-manager.md +0 -54
  309. package/.claude/commands/sparc/optimizer.md +0 -54
  310. package/.claude/commands/sparc/orchestrator.md +0 -132
  311. package/.claude/commands/sparc/researcher.md +0 -54
  312. package/.claude/commands/sparc/reviewer.md +0 -54
  313. package/.claude/commands/sparc/sparc-modes.md +0 -174
  314. package/.claude/commands/sparc/swarm-coordinator.md +0 -54
  315. package/.claude/commands/sparc/tdd.md +0 -54
  316. package/.claude/commands/sparc/tester.md +0 -54
  317. package/.claude/commands/sparc/workflow-manager.md +0 -54
  318. package/.claude/commands/sparc.js +0 -110
  319. package/.claude/commands/stream-chain/pipeline.md +0 -121
  320. package/.claude/commands/stream-chain/run.md +0 -70
  321. package/.claude/commands/swarm/README.md +0 -15
  322. package/.claude/commands/swarm/analysis.md +0 -95
  323. package/.claude/commands/swarm/development.md +0 -96
  324. package/.claude/commands/swarm/examples.md +0 -168
  325. package/.claude/commands/swarm/maintenance.md +0 -102
  326. package/.claude/commands/swarm/optimization.md +0 -117
  327. package/.claude/commands/swarm/research.md +0 -136
  328. package/.claude/commands/swarm/swarm-analysis.md +0 -8
  329. package/.claude/commands/swarm/swarm-background.md +0 -8
  330. package/.claude/commands/swarm/swarm-init.md +0 -19
  331. package/.claude/commands/swarm/swarm-modes.md +0 -8
  332. package/.claude/commands/swarm/swarm-monitor.md +0 -8
  333. package/.claude/commands/swarm/swarm-spawn.md +0 -19
  334. package/.claude/commands/swarm/swarm-status.md +0 -8
  335. package/.claude/commands/swarm/swarm-strategies.md +0 -8
  336. package/.claude/commands/swarm/swarm.md +0 -27
  337. package/.claude/commands/swarm/testing.md +0 -131
  338. package/.claude/commands/swarm.js +0 -423
  339. package/.claude/commands/testing/playwright-e2e.md +0 -288
  340. package/.claude/commands/training/README.md +0 -9
  341. package/.claude/commands/training/model-update.md +0 -25
  342. package/.claude/commands/training/neural-patterns.md +0 -74
  343. package/.claude/commands/training/neural-train.md +0 -25
  344. package/.claude/commands/training/pattern-learn.md +0 -25
  345. package/.claude/commands/training/specialization.md +0 -63
  346. package/.claude/commands/truth/start.md +0 -143
  347. package/.claude/commands/validate-commands.js +0 -223
  348. package/.claude/commands/verify/check.md +0 -50
  349. package/.claude/commands/verify/start.md +0 -128
  350. package/.claude/commands/workflow.js +0 -606
  351. package/.claude/commands/workflows/README.md +0 -9
  352. package/.claude/commands/workflows/development.md +0 -78
  353. package/.claude/commands/workflows/research.md +0 -63
  354. package/.claude/commands/workflows/workflow-create.md +0 -25
  355. package/.claude/commands/workflows/workflow-execute.md +0 -25
  356. package/.claude/commands/workflows/workflow-export.md +0 -25
  357. package/.claude/coordinator-feedback-pattern.md +0 -326
  358. package/.claude/coordinator-patterns.md +0 -126
  359. package/.claude/core/agent-manager.js +0 -80
  360. package/.claude/core/agent-manager.js.map +0 -1
  361. package/.claude/core/config.js +0 -1221
  362. package/.claude/core/config.js.map +0 -1
  363. package/.claude/core/event-bus.js +0 -136
  364. package/.claude/core/event-bus.js.map +0 -1
  365. package/.claude/core/index.js +0 -6
  366. package/.claude/core/index.js.map +0 -1
  367. package/.claude/core/json-persistence.js +0 -112
  368. package/.claude/core/json-persistence.js.map +0 -1
  369. package/.claude/core/logger.js +0 -245
  370. package/.claude/core/logger.js.map +0 -1
  371. package/.claude/core/orchestrator-fixed.js +0 -236
  372. package/.claude/core/orchestrator-fixed.js.map +0 -1
  373. package/.claude/core/orchestrator.js +0 -1136
  374. package/.claude/core/orchestrator.js.map +0 -1
  375. package/.claude/core/persistence.js +0 -185
  376. package/.claude/core/persistence.js.map +0 -1
  377. package/.claude/core/project-manager.js +0 -80
  378. package/.claude/core/project-manager.js.map +0 -1
  379. package/.claude/core/slash-command.js +0 -24
  380. package/.claude/core/version.js +0 -35
  381. package/.claude/core/version.js.map +0 -1
  382. package/.claude/helpers/checkpoint-manager.sh +0 -251
  383. package/.claude/helpers/github-safe.js +0 -106
  384. package/.claude/helpers/github-setup.sh +0 -28
  385. package/.claude/helpers/quick-start.sh +0 -19
  386. package/.claude/helpers/setup-mcp.sh +0 -18
  387. package/.claude/helpers/standard-checkpoint-hooks.sh +0 -179
  388. package/.claude/hooks.json +0 -21
  389. package/.claude/logs/sprint1-hybrid-routing-v2-decision.json +0 -18
  390. package/.claude/redis-agent-dependencies.md +0 -494
  391. package/.claude/root-claude-distribute/CLAUDE.md +0 -428
  392. package/.claude/settings.json +0 -129
  393. package/.claude/settings.local.json +0 -33
  394. package/.claude/skills/CFN-LOOP-VALIDATION.md +0 -202
  395. package/.claude/skills/REDIS-COORDINATION.md +0 -187
  396. package/.claude/skills/SKILL.md +0 -229
  397. package/.claude/skills/ace-system/SKILL.md +0 -364
  398. package/.claude/skills/ace-system/add-bullet.sh +0 -145
  399. package/.claude/skills/ace-system/invoke-context-curate.sh +0 -192
  400. package/.claude/skills/ace-system/invoke-context-inject.sh +0 -166
  401. package/.claude/skills/ace-system/invoke-context-query.sh +0 -127
  402. package/.claude/skills/ace-system/invoke-context-reflect.sh +0 -98
  403. package/.claude/skills/ace-system/invoke-context-stats.sh +0 -188
  404. package/.claude/skills/ace-system/log-merge.sh +0 -67
  405. package/.claude/skills/ace-system/query-reflections.sh +0 -35
  406. package/.claude/skills/ace-system/store-reflection.sh +0 -149
  407. package/.claude/skills/ace-system/test-ace-skill.sh +0 -312
  408. package/.claude/skills/ace-system/update-reflection.sh +0 -41
  409. package/.claude/skills/agent-execution/execute-agent.sh +0 -126
  410. package/.claude/skills/agent-spawning/SKILL.md +0 -135
  411. package/.claude/skills/agent-spawning/agent-selection-guide.md +0 -814
  412. package/.claude/skills/agent-spawning/check-dependencies.sh +0 -30
  413. package/.claude/skills/agent-spawning/spawn-agent.sh +0 -263
  414. package/.claude/skills/agent-spawning/spawn-templates.sh +0 -613
  415. package/.claude/skills/analytics/description-refinement-guide.md +0 -164
  416. package/.claude/skills/analytics/log-skill-invocation.js +0 -122
  417. package/.claude/skills/analytics/run-production-criteria-tests.sh +0 -126
  418. package/.claude/skills/analytics/skill-analytics-dashboard.js +0 -113
  419. package/.claude/skills/analytics/skill-invocation-hook.sh +0 -28
  420. package/.claude/skills/analytics/skill-invocations.sql +0 -58
  421. package/.claude/skills/analytics/test-corpus.json +0 -32
  422. package/.claude/skills/analytics/test-data-generator.js +0 -115
  423. package/.claude/skills/analytics/test-manual-override-rate.js +0 -285
  424. package/.claude/skills/analytics/validate-skill-selection.js +0 -188
  425. package/.claude/skills/cfn-loop-validation/SKILL.md +0 -263
  426. package/.claude/skills/cfn-loop-validation/check-dependencies.sh +0 -31
  427. package/.claude/skills/cfn-loop-validation/config.json +0 -161
  428. package/.claude/skills/cfn-loop-validation/consensus-calculator.js +0 -477
  429. package/.claude/skills/cfn-loop-validation/evidence-chain.sql +0 -163
  430. package/.claude/skills/cfn-loop-validation/examples/README.md +0 -453
  431. package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +0 -234
  432. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +0 -132
  433. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +0 -115
  434. package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +0 -186
  435. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +0 -252
  436. package/.claude/skills/cfn-loop-validation/validate-iteration.sh +0 -134
  437. package/.claude/skills/cfn-loop-validation.sh +0 -70
  438. package/.claude/skills/config-management/SKILL.md +0 -34
  439. package/.claude/skills/config-management/check-dependencies.sh +0 -56
  440. package/.claude/skills/config-management/config.json +0 -32
  441. package/.claude/skills/config-management/manage-config.sh +0 -113
  442. package/.claude/skills/consensus-calculator.js +0 -45
  443. package/.claude/skills/event-bus/SKILL.md +0 -412
  444. package/.claude/skills/event-bus/config.json +0 -111
  445. package/.claude/skills/event-bus/eventbus-wrapper.cjs +0 -69
  446. package/.claude/skills/event-bus/invoke-event-publish.sh +0 -147
  447. package/.claude/skills/event-bus/invoke-event-subscribe.sh +0 -171
  448. package/.claude/skills/event-bus/invoke-lifecycle-track.sh +0 -201
  449. package/.claude/skills/event-bus/test-event-bus.sh +0 -280
  450. package/.claude/skills/evidence-chain.sql +0 -66
  451. package/.claude/skills/fleet-manager/SKILL.md +0 -412
  452. package/.claude/skills/fleet-manager/config.json +0 -60
  453. package/.claude/skills/fleet-manager/invoke-fleet-allocate.sh +0 -182
  454. package/.claude/skills/fleet-manager/invoke-fleet-balance.sh +0 -239
  455. package/.claude/skills/fleet-manager/invoke-fleet-metrics.sh +0 -193
  456. package/.claude/skills/fleet-manager/invoke-fleet-register.sh +0 -124
  457. package/.claude/skills/fleet-manager/test-fleet-manager.sh +0 -345
  458. package/.claude/skills/hook-pipeline/SKILL.md +0 -148
  459. package/.claude/skills/hook-pipeline/auto-resolve.sh +0 -66
  460. package/.claude/skills/hook-pipeline/check-dependencies.sh +0 -40
  461. package/.claude/skills/hook-pipeline/feedback-resolver.sh +0 -452
  462. package/.claude/skills/hook-pipeline/post-edit-handler.sh +0 -154
  463. package/.claude/skills/hook-pipeline/security-scan.json +0 -60
  464. package/.claude/skills/hook-pipeline/security-scanner.sh +0 -121
  465. package/.claude/skills/hook-pipeline/test-root-warning-resolution.sh +0 -148
  466. package/.claude/skills/hybrid-routing/SKILL.md +0 -46
  467. package/.claude/skills/hybrid-routing/check-dependencies.sh +0 -52
  468. package/.claude/skills/hybrid-routing/config.json +0 -26
  469. package/.claude/skills/hybrid-routing/spawn-worker.sh +0 -44
  470. package/.claude/skills/process-lifecycle/SKILL.md +0 -39
  471. package/.claude/skills/process-lifecycle/check-dependencies.sh +0 -58
  472. package/.claude/skills/process-lifecycle/config.json +0 -39
  473. package/.claude/skills/process-lifecycle/process-manager.sh +0 -144
  474. package/.claude/skills/redis-coordination/AGENT_LOGGING.md +0 -280
  475. package/.claude/skills/redis-coordination/BZPOPMIN_FIX_SUMMARY.md +0 -209
  476. package/.claude/skills/redis-coordination/HEARTBEAT.md +0 -57
  477. package/.claude/skills/redis-coordination/HEARTBEAT_MONITORING.md +0 -267
  478. package/.claude/skills/redis-coordination/README.md +0 -64
  479. package/.claude/skills/redis-coordination/SECURITY_REVIEW.md +0 -25
  480. package/.claude/skills/redis-coordination/SHUTDOWN_HANDLING.md +0 -164
  481. package/.claude/skills/redis-coordination/SKILL.md +0 -118
  482. package/.claude/skills/redis-coordination/agent-log.sh +0 -124
  483. package/.claude/skills/redis-coordination/agent-recovery.sh +0 -75
  484. package/.claude/skills/redis-coordination/cancel-swarm.sh +0 -221
  485. package/.claude/skills/redis-coordination/cfn-loop-relaunch.sh +0 -29
  486. package/.claude/skills/redis-coordination/check-dependencies.sh +0 -32
  487. package/.claude/skills/redis-coordination/complete-swarm.sh +0 -75
  488. package/.claude/skills/redis-coordination/config.json +0 -61
  489. package/.claude/skills/redis-coordination/examples/README.md +0 -73
  490. package/.claude/skills/redis-coordination/examples/grafana-dashboard.json +0 -352
  491. package/.claude/skills/redis-coordination/examples/hierarchical-pattern.sh +0 -127
  492. package/.claude/skills/redis-coordination/examples/mesh-pattern.sh +0 -171
  493. package/.claude/skills/redis-coordination/examples/timeout-handling.sh +0 -227
  494. package/.claude/skills/redis-coordination/examples/waiting-mode-pattern.sh +0 -239
  495. package/.claude/skills/redis-coordination/get-agent-timeout.sh +0 -177
  496. package/.claude/skills/redis-coordination/heartbeat-functions.sh +0 -137
  497. package/.claude/skills/redis-coordination/heartbeat-protocol.md +0 -106
  498. package/.claude/skills/redis-coordination/heartbeat.sh +0 -126
  499. package/.claude/skills/redis-coordination/init-swarm.sh +0 -148
  500. package/.claude/skills/redis-coordination/invoke-redis-pattern.sh +0 -220
  501. package/.claude/skills/redis-coordination/invoke-waiting-mode.sh +0 -417
  502. package/.claude/skills/redis-coordination/list-active-swarms.sh +0 -147
  503. package/.claude/skills/redis-coordination/metrics-export.sh +0 -674
  504. package/.claude/skills/redis-coordination/metrics-schema.json +0 -66
  505. package/.claude/skills/redis-coordination/metrics-storage.md +0 -31
  506. package/.claude/skills/redis-coordination/monitor-heartbeats.sh +0 -101
  507. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh +0 -993
  508. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1760949407 +0 -933
  509. package/.claude/skills/redis-coordination/phase4-wake-queue-test-report.md +0 -82
  510. package/.claude/skills/redis-coordination/priority-wake-mechanism.md +0 -75
  511. package/.claude/skills/redis-coordination/priority_wake.py +0 -134
  512. package/.claude/skills/redis-coordination/query-dlq.sh +0 -162
  513. package/.claude/skills/redis-coordination/redis-pattern.sh +0 -619
  514. package/.claude/skills/redis-coordination/send-heartbeat.sh +0 -73
  515. package/.claude/skills/redis-coordination/store-epic-context.sh +0 -123
  516. package/.claude/skills/redis-coordination/test-bzpopmin-fix.sh +0 -274
  517. package/.claude/skills/redis-coordination/test-cancel-swarm.sh +0 -276
  518. package/.claude/skills/redis-coordination/test-dlq.sh +0 -129
  519. package/.claude/skills/redis-coordination/test-iteration-feedback.sh +0 -320
  520. package/.claude/skills/redis-coordination/test-orchestrator.sh +0 -224
  521. package/.claude/skills/redis-coordination/test-priority-wake-phase4-unix.sh +0 -148
  522. package/.claude/skills/redis-coordination/test-priority-wake-phase4.sh +0 -163
  523. package/.claude/skills/redis-coordination/test-priority-wake.sh +0 -138
  524. package/.claude/skills/redis-coordination/test-quick-fix.sh +0 -81
  525. package/.claude/skills/redis-coordination/test-quorum-absolute.sh +0 -45
  526. package/.claude/skills/redis-coordination/test-quorum-fallback.sh +0 -68
  527. package/.claude/skills/redis-coordination/test-quorum-percentage.sh +0 -56
  528. package/.claude/skills/redis-coordination/test-quorum-with-retry.sh +0 -81
  529. package/.claude/skills/redis-coordination/test-quorum.sh +0 -57
  530. package/.claude/skills/redis-coordination/test-shutdown-handling.sh +0 -187
  531. package/.claude/skills/redis-coordination/test-shutdown.sh +0 -160
  532. package/.claude/skills/redis-coordination/test-utils-unix.sh +0 -97
  533. package/.claude/skills/redis-coordination/test-utils.sh +0 -97
  534. package/.claude/skills/redis-coordination/test-waiting-mode.sh +0 -59
  535. package/.claude/skills/redis-coordination/tests/dlq-functionality-test.sh +0 -102
  536. package/.claude/skills/redis-coordination/tests/edge-cases-test.sh +0 -99
  537. package/.claude/skills/redis-coordination/tests/integration-test.sh +0 -170
  538. package/.claude/skills/redis-coordination/tests/retry-mechanism-test.sh +0 -82
  539. package/.claude/skills/redis-coordination/tests/run-test-suite.sh +0 -92
  540. package/.claude/skills/redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
  541. package/.claude/skills/redis-coordination/tests/test-heartbeat-simple.sh +0 -124
  542. package/.claude/skills/redis-coordination/tests/test-utils.sh +0 -122
  543. package/.claude/skills/skill-builder/SKILL.md +0 -910
  544. package/.claude/skills/sqlite-memory/IMPLEMENTATION_REPORT.md +0 -393
  545. package/.claude/skills/sqlite-memory/QUICK_REFERENCE.md +0 -204
  546. package/.claude/skills/sqlite-memory/SKILL.md +0 -415
  547. package/.claude/skills/sqlite-memory/acl-queries.sql +0 -452
  548. package/.claude/skills/sqlite-memory/check-dependencies.sh +0 -36
  549. package/.claude/skills/sqlite-memory/config.json +0 -45
  550. package/.claude/skills/sqlite-memory/memory-cli.sh +0 -88
  551. package/.claude/skills/sqlite-memory/test-state-persistence.js +0 -187
  552. package/.claude/skills/sqlite-memory/ttl-cleanup.sh +0 -274
  553. package/.claude/skills/test-execution/SKILL.md +0 -128
  554. package/.claude/skills/test-execution/check-dependencies.sh +0 -36
  555. package/.claude/skills/test-execution/test-cache-reader.sh +0 -134
  556. package/.claude/skills/test-execution/test-concurrent-conflicts.sh +0 -115
  557. package/.claude/skills/test-execution/test-coordinator-pattern.sh +0 -109
  558. package/.claude/skills/test-execution-coordinator-pattern.md +0 -228
  559. package/.claude/skills/transparency-middleware/Cargo.toml +0 -18
  560. package/.claude/skills/transparency-middleware/SECURITY.md +0 -41
  561. package/.claude/skills/transparency-middleware/SKILL.md +0 -91
  562. package/.claude/skills/transparency-middleware/TEST_RESULTS.md +0 -174
  563. package/.claude/skills/transparency-middleware/config.json +0 -31
  564. package/.claude/skills/transparency-middleware/examples/basic-usage.ts +0 -39
  565. package/.claude/skills/transparency-middleware/examples/batch-processing.ts +0 -52
  566. package/.claude/skills/transparency-middleware/examples/custom-filtering.ts +0 -61
  567. package/.claude/skills/transparency-middleware/invoke-transparency-filter.sh +0 -98
  568. package/.claude/skills/transparency-middleware/invoke-transparency-init.sh +0 -224
  569. package/.claude/skills/transparency-middleware/invoke-transparency-level.sh +0 -333
  570. package/.claude/skills/transparency-middleware/invoke-transparency-metrics.sh +0 -345
  571. package/.claude/skills/transparency-middleware/invoke-transparency-observe.sh +0 -140
  572. package/.claude/skills/transparency-middleware/invoke-transparency-stop.sh +0 -235
  573. package/.claude/skills/transparency-middleware/memory_query.rs +0 -85
  574. package/.claude/skills/transparency-middleware/memory_repository.rs +0 -140
  575. package/.claude/skills/transparency-middleware/memory_schema.rs +0 -64
  576. package/.claude/skills/transparency-middleware/middleware-config.sh +0 -29
  577. package/.claude/skills/transparency-middleware/performance-benchmark.sh +0 -79
  578. package/.claude/skills/transparency-middleware/test-e2e.sh +0 -406
  579. package/.claude/skills/transparency-middleware/test-integration.sh +0 -162
  580. package/.claude/skills/transparency-middleware/test-transparency-skill.sh +0 -368
  581. package/.claude/skills/transparency-middleware/test-transparency-skill.sh.unix +0 -126
  582. package/.claude/skills/transparency-middleware/tests/input-validation.sh +0 -93
  583. package/.claude/skills/transparency-middleware/wrap-agent.sh +0 -132
  584. package/.claude/skills/web-portal/DESIGN.md +0 -117
  585. package/.claude/skills/web-portal/SKILL.md +0 -679
  586. package/.claude/skills/web-portal/invoke-portal-agents.sh +0 -129
  587. package/.claude/skills/web-portal/invoke-portal-dashboard.sh +0 -85
  588. package/.claude/skills/web-portal/invoke-portal-events.sh +0 -125
  589. package/.claude/skills/web-portal/invoke-portal-metrics.sh +0 -112
  590. package/.claude/skills/web-portal/invoke-portal-start.sh +0 -135
  591. package/.claude/skills/web-portal/invoke-portal-stop.sh +0 -121
  592. package/.claude/skills/web-portal/test-web-portal-skill.sh +0 -51
  593. package/.claude/skills/web-portal/validate-deployment.sh +0 -85
  594. package/.claude/slash-commands.json +0 -92
  595. package/.claude/spawn-pattern-examples.md +0 -500
  596. package/.claude/sprint-configs/cfn-naming-standardization.json +0 -729
  597. package/.claude/sprint-reports/sprint-1.4-self-correction-monitoring.json +0 -64
  598. package/.claude/swarm-memory.db +0 -0
  599. package/.claude/templates/agent-optimization-plan.md +0 -439
  600. package/.claude/templates/bulk-optimization-strategy.md +0 -367
  601. package/.claude/templates/cfn-loop-mechanics.md +0 -80
  602. package/.claude/templates/coordinator-patterns.md +0 -75
  603. package/.claude/templates/memory-operations.md +0 -200
  604. package/.claude/templates/post-edit-validation.md +0 -109
  605. package/.claude/templates/redis-coordination.md +0 -140
  606. package/.claude/templates/remaining-agent-analysis.md +0 -121
  607. package/.claude/templates/swarm-coordination.md +0 -103
  608. package/.claude/templates/team-dynamics.md +0 -82
  609. package/CLAUDE.md +0 -502
  610. package/dist/cli/cli-agent-context.test.js +0 -451
  611. package/dist/cli/cli-agent-context.test.js.map +0 -1
  612. package/dist/coordination/fleet-manager.test.js +0 -141
  613. package/dist/coordination/fleet-manager.test.js.map +0 -1
  614. package/dist/middleware/transparency-middleware.test.js +0 -184
  615. package/dist/middleware/transparency-middleware.test.js.map +0 -1
  616. package/readme/CLAUDE.md +0 -429
  617. /package/.claude/agents/{core-agents → cfn-dev-team/developers}/researcher.md +0 -0
  618. /package/.claude/commands/{README.md → cfn/README.md} +0 -0
  619. /package/.claude/commands/{auto-compact.md → cfn/auto-compact.md} +0 -0
  620. /package/.claude/commands/{cfn-claude-sync.md → cfn/cfn-claude-sync.md} +0 -0
  621. /package/.claude/commands/{cfn-loop-document.md → cfn/cfn-loop-document.md} +0 -0
  622. /package/.claude/commands/{claude-md.md → cfn/claude-md.md} +0 -0
  623. /package/.claude/commands/{claude-soul.md → cfn/claude-soul.md} +0 -0
  624. /package/.claude/commands/{context-query.md → cfn/context-query.md} +0 -0
  625. /package/.claude/commands/{cost-savings-off.md → cfn/cost-savings-off.md} +0 -0
  626. /package/.claude/commands/{cost-savings-on.md → cfn/cost-savings-on.md} +0 -0
  627. /package/.claude/commands/{cost-savings-status.md → cfn/cost-savings-status.md} +0 -0
  628. /package/.claude/commands/{custom-routing-activate.md → cfn/custom-routing-activate.md} +0 -0
  629. /package/.claude/commands/{custom-routing-deactivate.md → cfn/custom-routing-deactivate.md} +0 -0
  630. /package/.claude/commands/{dependency-recommendations.md → cfn/dependency-recommendations.md} +0 -0
  631. /package/.claude/commands/{fullstack.md → cfn/fullstack.md} +0 -0
  632. /package/.claude/commands/{github-commit.md → cfn/github-commit.md} +0 -0
  633. /package/.claude/commands/{github.md → cfn/github.md} +0 -0
  634. /package/.claude/commands/{hello-world-tests.md → cfn/hello-world-tests.md} +0 -0
  635. /package/.claude/commands/{hooks.md → cfn/hooks.md} +0 -0
  636. /package/.claude/commands/{launch-web-dashboard.md → cfn/launch-web-dashboard.md} +0 -0
  637. /package/.claude/commands/{metrics-summary.md → cfn/metrics-summary.md} +0 -0
  638. /package/.claude/commands/{neural.md → cfn/neural.md} +0 -0
  639. /package/.claude/commands/{parse-epic.md → cfn/parse-epic.md} +0 -0
  640. /package/.claude/commands/{performance.md → cfn/performance.md} +0 -0
  641. /package/.claude/commands/{sparc.md → cfn/sparc.md} +0 -0
  642. /package/.claude/commands/{suggest-improvements.md → cfn/suggest-improvements.md} +0 -0
  643. /package/.claude/commands/{suggest-templates.md → cfn/suggest-templates.md} +0 -0
  644. /package/.claude/commands/{swarm.md → cfn/swarm.md} +0 -0
  645. /package/.claude/commands/{switch-api.md → cfn/switch-api.md} +0 -0
  646. /package/.claude/commands/{workflow.md → cfn/workflow.md} +0 -0
  647. /package/.claude/hooks/{invoke-post-edit.sh → cfn-invoke-post-edit.sh} +0 -0
  648. /package/.claude/hooks/{post-edit.config.json → cfn-post-edit.config.json} +0 -0
  649. /package/.claude/skills/{agent-spawning → cfn-agent-spawning}/README.md +0 -0
  650. /package/.claude/skills/{analytics → cfn-analytics}/README.md +0 -0
  651. /package/.claude/skills/{config-management → cfn-config-management}/README.md +0 -0
  652. /package/.claude/skills/{event-bus → cfn-event-bus}/README.md +0 -0
  653. /package/.claude/skills/{fleet-manager → cfn-fleet-manager}/README.md +0 -0
  654. /package/.claude/skills/{hook-pipeline → cfn-hook-pipeline}/README.md +0 -0
  655. /package/.claude/skills/{hybrid-routing → cfn-hybrid-routing}/README.md +0 -0
  656. /package/.claude/skills/{process-lifecycle → cfn-process-lifecycle}/README.md +0 -0
  657. /package/.claude/skills/{sqlite-memory → cfn-sqlite-memory}/README.md +0 -0
  658. /package/.claude/skills/{test-execution → cfn-test-execution}/README.md +0 -0
  659. /package/.claude/skills/{transparency-middleware → cfn-transparency-middleware}/README.md +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/conversation-fork.ts"],"sourcesContent":["/**\r\n * Conversation Fork Management\r\n *\r\n * Implements application-level conversation forking for CFN Loop iterations.\r\n * Stores conversation history in Redis and allows branching at specific points.\r\n *\r\n * Sprint 4: Conversation Forking (v2.7.0)\r\n */\r\n\r\nimport { execSync } from 'child_process';\r\nimport { randomBytes } from 'crypto';\r\n\r\nexport interface Message {\r\n role: 'user' | 'assistant';\r\n content: string;\r\n iteration: number;\r\n timestamp: string;\r\n}\r\n\r\nexport interface ForkMetadata {\r\n forkId: string;\r\n taskId: string;\r\n agentId: string;\r\n createdAt: string;\r\n parentIteration: number;\r\n messageCount: number;\r\n}\r\n\r\n/**\r\n * Store a message in conversation history\r\n */\r\nexport async function storeMessage(\r\n taskId: string,\r\n agentId: string,\r\n message: Message\r\n): Promise<void> {\r\n const key = `swarm:${taskId}:${agentId}:messages`;\r\n const messageJson = JSON.stringify(message);\r\n\r\n try {\r\n execSync(`redis-cli rpush \"${key}\" '${messageJson.replace(/'/g, \"'\\\\''\")}'`, {\r\n encoding: 'utf8'\r\n });\r\n } catch (error) {\r\n console.error(`[conversation-fork] Failed to store message:`, error);\r\n throw error;\r\n }\r\n}\r\n\r\n/**\r\n * Load all messages from conversation history\r\n */\r\nexport async function loadMessages(\r\n taskId: string,\r\n agentId: string,\r\n forkId?: string\r\n): Promise<Message[]> {\r\n const key = forkId\r\n ? `swarm:${taskId}:${agentId}:fork:${forkId}:messages`\r\n : `swarm:${taskId}:${agentId}:messages`;\r\n\r\n try {\r\n const output = execSync(`redis-cli lrange \"${key}\" 0 -1`, {\r\n encoding: 'utf8'\r\n }).trim();\r\n\r\n if (!output || output === '(empty array)') {\r\n return [];\r\n }\r\n\r\n // Redis returns each message on a new line\r\n const lines = output.split('\\n');\r\n return lines.map(line => JSON.parse(line));\r\n } catch (error) {\r\n console.error(`[conversation-fork] Failed to load messages:`, error);\r\n return [];\r\n }\r\n}\r\n\r\n/**\r\n * Create a fork from current conversation state\r\n * Copies all messages up to current iteration\r\n */\r\nexport async function createFork(\r\n taskId: string,\r\n agentId: string,\r\n currentIteration: number\r\n): Promise<string> {\r\n // Generate unique fork ID\r\n const forkId = `fork-${currentIteration}-${randomBytes(4).toString('hex')}`;\r\n\r\n // Load messages up to current iteration\r\n const messages = await loadMessages(taskId, agentId);\r\n const forkMessages = messages.filter(m => m.iteration <= currentIteration);\r\n\r\n if (forkMessages.length === 0) {\r\n throw new Error(`No messages found for iteration ${currentIteration}`);\r\n }\r\n\r\n // Store fork snapshot\r\n const forkKey = `swarm:${taskId}:${agentId}:fork:${forkId}:messages`;\r\n\r\n for (const message of forkMessages) {\r\n const messageJson = JSON.stringify(message);\r\n execSync(`redis-cli rpush \"${forkKey}\" '${messageJson.replace(/'/g, \"'\\\\''\")}'`, {\r\n encoding: 'utf8'\r\n });\r\n }\r\n\r\n // Store fork metadata\r\n const metadata: ForkMetadata = {\r\n forkId,\r\n taskId,\r\n agentId,\r\n createdAt: new Date().toISOString(),\r\n parentIteration: currentIteration,\r\n messageCount: forkMessages.length\r\n };\r\n\r\n const metaKey = `swarm:${taskId}:${agentId}:fork:${forkId}:meta`;\r\n execSync(`redis-cli setex \"${metaKey}\" 86400 '${JSON.stringify(metadata)}'`, {\r\n encoding: 'utf8'\r\n });\r\n\r\n // Set as current fork\r\n const currentForkKey = `swarm:${taskId}:${agentId}:current-fork`;\r\n execSync(`redis-cli setex \"${currentForkKey}\" 86400 \"${forkId}\"`, {\r\n encoding: 'utf8'\r\n });\r\n\r\n console.log(`[conversation-fork] Created fork ${forkId} with ${forkMessages.length} messages`);\r\n\r\n return forkId;\r\n}\r\n\r\n/**\r\n * Get current active fork ID\r\n */\r\nexport async function getCurrentFork(\r\n taskId: string,\r\n agentId: string\r\n): Promise<string | null> {\r\n const key = `swarm:${taskId}:${agentId}:current-fork`;\r\n\r\n try {\r\n const forkId = execSync(`redis-cli get \"${key}\"`, {\r\n encoding: 'utf8'\r\n }).trim();\r\n\r\n if (forkId === '(nil)' || !forkId) {\r\n return null;\r\n }\r\n\r\n return forkId;\r\n } catch (error) {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Get fork metadata\r\n */\r\nexport async function getForkMetadata(\r\n taskId: string,\r\n agentId: string,\r\n forkId: string\r\n): Promise<ForkMetadata | null> {\r\n const key = `swarm:${taskId}:${agentId}:fork:${forkId}:meta`;\r\n\r\n try {\r\n const metaJson = execSync(`redis-cli get \"${key}\"`, {\r\n encoding: 'utf8'\r\n }).trim();\r\n\r\n if (metaJson === '(nil)' || !metaJson) {\r\n return null;\r\n }\r\n\r\n return JSON.parse(metaJson);\r\n } catch (error) {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * List all forks for an agent\r\n */\r\nexport async function listForks(\r\n taskId: string,\r\n agentId: string\r\n): Promise<ForkMetadata[]> {\r\n const pattern = `swarm:${taskId}:${agentId}:fork:*:meta`;\r\n\r\n try {\r\n const keys = execSync(`redis-cli keys \"${pattern}\"`, {\r\n encoding: 'utf8'\r\n }).trim().split('\\n').filter(k => k);\r\n\r\n const forks: ForkMetadata[] = [];\r\n\r\n for (const key of keys) {\r\n const metaJson = execSync(`redis-cli get \"${key}\"`, {\r\n encoding: 'utf8'\r\n }).trim();\r\n\r\n if (metaJson && metaJson !== '(nil)') {\r\n forks.push(JSON.parse(metaJson));\r\n }\r\n }\r\n\r\n return forks.sort((a, b) =>\r\n new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()\r\n );\r\n } catch (error) {\r\n console.error(`[conversation-fork] Failed to list forks:`, error);\r\n return [];\r\n }\r\n}\r\n\r\n/**\r\n * Delete a fork and its messages\r\n */\r\nexport async function deleteFork(\r\n taskId: string,\r\n agentId: string,\r\n forkId: string\r\n): Promise<void> {\r\n const messagesKey = `swarm:${taskId}:${agentId}:fork:${forkId}:messages`;\r\n const metaKey = `swarm:${taskId}:${agentId}:fork:${forkId}:meta`;\r\n\r\n try {\r\n execSync(`redis-cli del \"${messagesKey}\" \"${metaKey}\"`, {\r\n encoding: 'utf8'\r\n });\r\n\r\n console.log(`[conversation-fork] Deleted fork ${forkId}`);\r\n } catch (error) {\r\n console.error(`[conversation-fork] Failed to delete fork:`, error);\r\n throw error;\r\n }\r\n}\r\n\r\n/**\r\n * Clear current fork (start fresh conversation)\r\n */\r\nexport async function clearCurrentFork(\r\n taskId: string,\r\n agentId: string\r\n): Promise<void> {\r\n const key = `swarm:${taskId}:${agentId}:current-fork`;\r\n\r\n try {\r\n execSync(`redis-cli del \"${key}\"`, {\r\n encoding: 'utf8'\r\n });\r\n } catch (error) {\r\n console.error(`[conversation-fork] Failed to clear current fork:`, error);\r\n }\r\n}\r\n\r\n/**\r\n * Format messages for Anthropic API\r\n */\r\nexport function formatMessagesForAPI(messages: Message[]): Array<{role: string, content: string}> {\r\n return messages.map(m => ({\r\n role: m.role,\r\n content: m.content\r\n }));\r\n}\r\n\r\n/**\r\n * Get conversation statistics\r\n */\r\nexport async function getConversationStats(\r\n taskId: string,\r\n agentId: string,\r\n forkId?: string\r\n): Promise<{\r\n messageCount: number;\r\n userMessages: number;\r\n assistantMessages: number;\r\n iterations: number;\r\n firstMessage: string | null;\r\n lastMessage: string | null;\r\n}> {\r\n const messages = await loadMessages(taskId, agentId, forkId);\r\n\r\n if (messages.length === 0) {\r\n return {\r\n messageCount: 0,\r\n userMessages: 0,\r\n assistantMessages: 0,\r\n iterations: 0,\r\n firstMessage: null,\r\n lastMessage: null\r\n };\r\n }\r\n\r\n const userMessages = messages.filter(m => m.role === 'user').length;\r\n const assistantMessages = messages.filter(m => m.role === 'assistant').length;\r\n const iterations = Math.max(...messages.map(m => m.iteration));\r\n\r\n return {\r\n messageCount: messages.length,\r\n userMessages,\r\n assistantMessages,\r\n iterations,\r\n firstMessage: messages[0].timestamp,\r\n lastMessage: messages[messages.length - 1].timestamp\r\n };\r\n}\r\n"],"names":["execSync","randomBytes","storeMessage","taskId","agentId","message","key","messageJson","JSON","stringify","replace","encoding","error","console","loadMessages","forkId","output","trim","lines","split","map","line","parse","createFork","currentIteration","toString","messages","forkMessages","filter","m","iteration","length","Error","forkKey","metadata","createdAt","Date","toISOString","parentIteration","messageCount","metaKey","currentForkKey","log","getCurrentFork","getForkMetadata","metaJson","listForks","pattern","keys","k","forks","push","sort","a","b","getTime","deleteFork","messagesKey","clearCurrentFork","formatMessagesForAPI","role","content","getConversationStats","userMessages","assistantMessages","iterations","firstMessage","lastMessage","Math","max","timestamp"],"mappings":"AAAA;;;;;;;CAOC,GAED,SAASA,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,WAAW,QAAQ,SAAS;AAkBrC;;CAEC,GACD,OAAO,eAAeC,aACpBC,MAAc,EACdC,OAAe,EACfC,OAAgB;IAEhB,MAAMC,MAAM,CAAC,MAAM,EAAEH,OAAO,CAAC,EAAEC,QAAQ,SAAS,CAAC;IACjD,MAAMG,cAAcC,KAAKC,SAAS,CAACJ;IAEnC,IAAI;QACFL,SAAS,CAAC,iBAAiB,EAAEM,IAAI,GAAG,EAAEC,YAAYG,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC,EAAE;YAC3EC,UAAU;QACZ;IACF,EAAE,OAAOC,OAAO;QACdC,QAAQD,KAAK,CAAC,CAAC,4CAA4C,CAAC,EAAEA;QAC9D,MAAMA;IACR;AACF;AAEA;;CAEC,GACD,OAAO,eAAeE,aACpBX,MAAc,EACdC,OAAe,EACfW,MAAe;IAEf,MAAMT,MAAMS,SACR,CAAC,MAAM,EAAEZ,OAAO,CAAC,EAAEC,QAAQ,MAAM,EAAEW,OAAO,SAAS,CAAC,GACpD,CAAC,MAAM,EAAEZ,OAAO,CAAC,EAAEC,QAAQ,SAAS,CAAC;IAEzC,IAAI;QACF,MAAMY,SAAShB,SAAS,CAAC,kBAAkB,EAAEM,IAAI,MAAM,CAAC,EAAE;YACxDK,UAAU;QACZ,GAAGM,IAAI;QAEP,IAAI,CAACD,UAAUA,WAAW,iBAAiB;YACzC,OAAO,EAAE;QACX;QAEA,2CAA2C;QAC3C,MAAME,QAAQF,OAAOG,KAAK,CAAC;QAC3B,OAAOD,MAAME,GAAG,CAACC,CAAAA,OAAQb,KAAKc,KAAK,CAACD;IACtC,EAAE,OAAOT,OAAO;QACdC,QAAQD,KAAK,CAAC,CAAC,4CAA4C,CAAC,EAAEA;QAC9D,OAAO,EAAE;IACX;AACF;AAEA;;;CAGC,GACD,OAAO,eAAeW,WACpBpB,MAAc,EACdC,OAAe,EACfoB,gBAAwB;IAExB,0BAA0B;IAC1B,MAAMT,SAAS,CAAC,KAAK,EAAES,iBAAiB,CAAC,EAAEvB,YAAY,GAAGwB,QAAQ,CAAC,QAAQ;IAE3E,wCAAwC;IACxC,MAAMC,WAAW,MAAMZ,aAAaX,QAAQC;IAC5C,MAAMuB,eAAeD,SAASE,MAAM,CAACC,CAAAA,IAAKA,EAAEC,SAAS,IAAIN;IAEzD,IAAIG,aAAaI,MAAM,KAAK,GAAG;QAC7B,MAAM,IAAIC,MAAM,CAAC,gCAAgC,EAAER,kBAAkB;IACvE;IAEA,sBAAsB;IACtB,MAAMS,UAAU,CAAC,MAAM,EAAE9B,OAAO,CAAC,EAAEC,QAAQ,MAAM,EAAEW,OAAO,SAAS,CAAC;IAEpE,KAAK,MAAMV,WAAWsB,aAAc;QAClC,MAAMpB,cAAcC,KAAKC,SAAS,CAACJ;QACnCL,SAAS,CAAC,iBAAiB,EAAEiC,QAAQ,GAAG,EAAE1B,YAAYG,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC,EAAE;YAC/EC,UAAU;QACZ;IACF;IAEA,sBAAsB;IACtB,MAAMuB,WAAyB;QAC7BnB;QACAZ;QACAC;QACA+B,WAAW,IAAIC,OAAOC,WAAW;QACjCC,iBAAiBd;QACjBe,cAAcZ,aAAaI,MAAM;IACnC;IAEA,MAAMS,UAAU,CAAC,MAAM,EAAErC,OAAO,CAAC,EAAEC,QAAQ,MAAM,EAAEW,OAAO,KAAK,CAAC;IAChEf,SAAS,CAAC,iBAAiB,EAAEwC,QAAQ,SAAS,EAAEhC,KAAKC,SAAS,CAACyB,UAAU,CAAC,CAAC,EAAE;QAC3EvB,UAAU;IACZ;IAEA,sBAAsB;IACtB,MAAM8B,iBAAiB,CAAC,MAAM,EAAEtC,OAAO,CAAC,EAAEC,QAAQ,aAAa,CAAC;IAChEJ,SAAS,CAAC,iBAAiB,EAAEyC,eAAe,SAAS,EAAE1B,OAAO,CAAC,CAAC,EAAE;QAChEJ,UAAU;IACZ;IAEAE,QAAQ6B,GAAG,CAAC,CAAC,iCAAiC,EAAE3B,OAAO,MAAM,EAAEY,aAAaI,MAAM,CAAC,SAAS,CAAC;IAE7F,OAAOhB;AACT;AAEA;;CAEC,GACD,OAAO,eAAe4B,eACpBxC,MAAc,EACdC,OAAe;IAEf,MAAME,MAAM,CAAC,MAAM,EAAEH,OAAO,CAAC,EAAEC,QAAQ,aAAa,CAAC;IAErD,IAAI;QACF,MAAMW,SAASf,SAAS,CAAC,eAAe,EAAEM,IAAI,CAAC,CAAC,EAAE;YAChDK,UAAU;QACZ,GAAGM,IAAI;QAEP,IAAIF,WAAW,WAAW,CAACA,QAAQ;YACjC,OAAO;QACT;QAEA,OAAOA;IACT,EAAE,OAAOH,OAAO;QACd,OAAO;IACT;AACF;AAEA;;CAEC,GACD,OAAO,eAAegC,gBACpBzC,MAAc,EACdC,OAAe,EACfW,MAAc;IAEd,MAAMT,MAAM,CAAC,MAAM,EAAEH,OAAO,CAAC,EAAEC,QAAQ,MAAM,EAAEW,OAAO,KAAK,CAAC;IAE5D,IAAI;QACF,MAAM8B,WAAW7C,SAAS,CAAC,eAAe,EAAEM,IAAI,CAAC,CAAC,EAAE;YAClDK,UAAU;QACZ,GAAGM,IAAI;QAEP,IAAI4B,aAAa,WAAW,CAACA,UAAU;YACrC,OAAO;QACT;QAEA,OAAOrC,KAAKc,KAAK,CAACuB;IACpB,EAAE,OAAOjC,OAAO;QACd,OAAO;IACT;AACF;AAEA;;CAEC,GACD,OAAO,eAAekC,UACpB3C,MAAc,EACdC,OAAe;IAEf,MAAM2C,UAAU,CAAC,MAAM,EAAE5C,OAAO,CAAC,EAAEC,QAAQ,YAAY,CAAC;IAExD,IAAI;QACF,MAAM4C,OAAOhD,SAAS,CAAC,gBAAgB,EAAE+C,QAAQ,CAAC,CAAC,EAAE;YACnDpC,UAAU;QACZ,GAAGM,IAAI,GAAGE,KAAK,CAAC,MAAMS,MAAM,CAACqB,CAAAA,IAAKA;QAElC,MAAMC,QAAwB,EAAE;QAEhC,KAAK,MAAM5C,OAAO0C,KAAM;YACtB,MAAMH,WAAW7C,SAAS,CAAC,eAAe,EAAEM,IAAI,CAAC,CAAC,EAAE;gBAClDK,UAAU;YACZ,GAAGM,IAAI;YAEP,IAAI4B,YAAYA,aAAa,SAAS;gBACpCK,MAAMC,IAAI,CAAC3C,KAAKc,KAAK,CAACuB;YACxB;QACF;QAEA,OAAOK,MAAME,IAAI,CAAC,CAACC,GAAGC,IACpB,IAAIlB,KAAKkB,EAAEnB,SAAS,EAAEoB,OAAO,KAAK,IAAInB,KAAKiB,EAAElB,SAAS,EAAEoB,OAAO;IAEnE,EAAE,OAAO3C,OAAO;QACdC,QAAQD,KAAK,CAAC,CAAC,yCAAyC,CAAC,EAAEA;QAC3D,OAAO,EAAE;IACX;AACF;AAEA;;CAEC,GACD,OAAO,eAAe4C,WACpBrD,MAAc,EACdC,OAAe,EACfW,MAAc;IAEd,MAAM0C,cAAc,CAAC,MAAM,EAAEtD,OAAO,CAAC,EAAEC,QAAQ,MAAM,EAAEW,OAAO,SAAS,CAAC;IACxE,MAAMyB,UAAU,CAAC,MAAM,EAAErC,OAAO,CAAC,EAAEC,QAAQ,MAAM,EAAEW,OAAO,KAAK,CAAC;IAEhE,IAAI;QACFf,SAAS,CAAC,eAAe,EAAEyD,YAAY,GAAG,EAAEjB,QAAQ,CAAC,CAAC,EAAE;YACtD7B,UAAU;QACZ;QAEAE,QAAQ6B,GAAG,CAAC,CAAC,iCAAiC,EAAE3B,QAAQ;IAC1D,EAAE,OAAOH,OAAO;QACdC,QAAQD,KAAK,CAAC,CAAC,0CAA0C,CAAC,EAAEA;QAC5D,MAAMA;IACR;AACF;AAEA;;CAEC,GACD,OAAO,eAAe8C,iBACpBvD,MAAc,EACdC,OAAe;IAEf,MAAME,MAAM,CAAC,MAAM,EAAEH,OAAO,CAAC,EAAEC,QAAQ,aAAa,CAAC;IAErD,IAAI;QACFJ,SAAS,CAAC,eAAe,EAAEM,IAAI,CAAC,CAAC,EAAE;YACjCK,UAAU;QACZ;IACF,EAAE,OAAOC,OAAO;QACdC,QAAQD,KAAK,CAAC,CAAC,iDAAiD,CAAC,EAAEA;IACrE;AACF;AAEA;;CAEC,GACD,OAAO,SAAS+C,qBAAqBjC,QAAmB;IACtD,OAAOA,SAASN,GAAG,CAACS,CAAAA,IAAM,CAAA;YACxB+B,MAAM/B,EAAE+B,IAAI;YACZC,SAAShC,EAAEgC,OAAO;QACpB,CAAA;AACF;AAEA;;CAEC,GACD,OAAO,eAAeC,qBACpB3D,MAAc,EACdC,OAAe,EACfW,MAAe;IASf,MAAMW,WAAW,MAAMZ,aAAaX,QAAQC,SAASW;IAErD,IAAIW,SAASK,MAAM,KAAK,GAAG;QACzB,OAAO;YACLQ,cAAc;YACdwB,cAAc;YACdC,mBAAmB;YACnBC,YAAY;YACZC,cAAc;YACdC,aAAa;QACf;IACF;IAEA,MAAMJ,eAAerC,SAASE,MAAM,CAACC,CAAAA,IAAKA,EAAE+B,IAAI,KAAK,QAAQ7B,MAAM;IACnE,MAAMiC,oBAAoBtC,SAASE,MAAM,CAACC,CAAAA,IAAKA,EAAE+B,IAAI,KAAK,aAAa7B,MAAM;IAC7E,MAAMkC,aAAaG,KAAKC,GAAG,IAAI3C,SAASN,GAAG,CAACS,CAAAA,IAAKA,EAAEC,SAAS;IAE5D,OAAO;QACLS,cAAcb,SAASK,MAAM;QAC7BgC;QACAC;QACAC;QACAC,cAAcxC,QAAQ,CAAC,EAAE,CAAC4C,SAAS;QACnCH,aAAazC,QAAQ,CAACA,SAASK,MAAM,GAAG,EAAE,CAACuC,SAAS;IACtD;AACF"}
package/dist/cli/index.js CHANGED
@@ -27,6 +27,10 @@ import { agentCommand } from './agent-command.js';
27
27
  options.iteration = parseInt(value, 10);
28
28
  i++;
29
29
  break;
30
+ case '--agent-id':
31
+ options.agentId = value;
32
+ i++;
33
+ break;
30
34
  case '--context':
31
35
  options.context = value;
32
36
  i++;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\r\n/**\r\n * CLI Entry Point - v2.0\r\n *\r\n * Handles agent spawning commands:\r\n * npx claude-flow-novice agent <type> [options]\r\n */\r\n\r\n// Load environment variables from .env file\r\nimport 'dotenv/config';\r\n\r\nimport { VERSION } from '../core/index.js';\r\nimport { agentCommand, AgentCommandOptions } from './agent-command.js';\r\n\r\n/**\r\n * Parse command line arguments\r\n */\r\nfunction parseArgs(args: string[]): { command: string; agentType?: string; options: AgentCommandOptions } {\r\n const command = args[0] || 'help';\r\n const agentType = args[1] && !args[1].startsWith('--') ? args[1] : undefined;\r\n const options: AgentCommandOptions = {};\r\n\r\n // Parse options\r\n for (let i = agentType ? 2 : 1; i < args.length; i++) {\r\n const arg = args[i];\r\n const value = args[i + 1];\r\n\r\n switch (arg) {\r\n case '--task-id':\r\n options.taskId = value;\r\n i++;\r\n break;\r\n case '--iteration':\r\n options.iteration = parseInt(value, 10);\r\n i++;\r\n break;\r\n case '--context':\r\n options.context = value;\r\n i++;\r\n break;\r\n case '--mode':\r\n options.mode = value;\r\n i++;\r\n break;\r\n case '--priority':\r\n options.priority = parseInt(value, 10);\r\n i++;\r\n break;\r\n case '--parent-task-id':\r\n options.parentTaskId = value;\r\n i++;\r\n break;\r\n case '--list':\r\n options.list = true;\r\n break;\r\n case '--help':\r\n case '-h':\r\n options.help = true;\r\n break;\r\n }\r\n }\r\n\r\n return { command, agentType, options };\r\n}\r\n\r\n/**\r\n * Display main CLI help\r\n */\r\nfunction displayHelp(): void {\r\n console.log(`\r\nClaude Flow Novice CLI v${VERSION}\r\n\r\nUsage:\r\n npx claude-flow-novice <command> [options]\r\n\r\nCommands:\r\n agent <type> [options] Spawn an agent for task execution\r\n --version Show version number\r\n --help Show this help message\r\n\r\nExamples:\r\n # Spawn an agent\r\n npx claude-flow-novice agent coder --context \"Implement feature\"\r\n\r\n # List available agents\r\n npx claude-flow-novice agent --list\r\n\r\n # Show version\r\n npx claude-flow-novice --version\r\n\r\nFor more information:\r\n https://github.com/yourusername/claude-flow-novice\r\n`);\r\n}\r\n\r\n/**\r\n * Main CLI entry point\r\n */\r\nasync function main() {\r\n const args = process.argv.slice(2);\r\n\r\n // Handle version flag\r\n if (args.includes('--version') || args.includes('-v')) {\r\n console.log(`Claude Flow Novice v${VERSION}`);\r\n return;\r\n }\r\n\r\n // Handle help flag\r\n if (args.length === 0 || args.includes('--help') || args.includes('-h')) {\r\n displayHelp();\r\n return;\r\n }\r\n\r\n const { command, agentType, options } = parseArgs(args);\r\n\r\n switch (command) {\r\n case 'agent':\r\n await agentCommand(agentType, options);\r\n break;\r\n\r\n default:\r\n console.error(`Unknown command: ${command}`);\r\n console.log('Run with --help for usage information');\r\n process.exit(1);\r\n }\r\n}\r\n\r\n// Run CLI\r\nmain().catch((error) => {\r\n console.error('[claude-flow-novice] Fatal error:', error);\r\n process.exit(1);\r\n});\r\n"],"names":["VERSION","agentCommand","parseArgs","args","command","agentType","startsWith","undefined","options","i","length","arg","value","taskId","iteration","parseInt","context","mode","priority","parentTaskId","list","help","displayHelp","console","log","main","process","argv","slice","includes","error","exit","catch"],"mappings":";AACA;;;;;CAKC,GAED,4CAA4C;AAC5C,OAAO,gBAAgB;AAEvB,SAASA,OAAO,QAAQ,mBAAmB;AAC3C,SAASC,YAAY,QAA6B,qBAAqB;AAEvE;;CAEC,GACD,SAASC,UAAUC,IAAc;IAC/B,MAAMC,UAAUD,IAAI,CAAC,EAAE,IAAI;IAC3B,MAAME,YAAYF,IAAI,CAAC,EAAE,IAAI,CAACA,IAAI,CAAC,EAAE,CAACG,UAAU,CAAC,QAAQH,IAAI,CAAC,EAAE,GAAGI;IACnE,MAAMC,UAA+B,CAAC;IAEtC,gBAAgB;IAChB,IAAK,IAAIC,IAAIJ,YAAY,IAAI,GAAGI,IAAIN,KAAKO,MAAM,EAAED,IAAK;QACpD,MAAME,MAAMR,IAAI,CAACM,EAAE;QACnB,MAAMG,QAAQT,IAAI,CAACM,IAAI,EAAE;QAEzB,OAAQE;YACN,KAAK;gBACHH,QAAQK,MAAM,GAAGD;gBACjBH;gBACA;YACF,KAAK;gBACHD,QAAQM,SAAS,GAAGC,SAASH,OAAO;gBACpCH;gBACA;YACF,KAAK;gBACHD,QAAQQ,OAAO,GAAGJ;gBAClBH;gBACA;YACF,KAAK;gBACHD,QAAQS,IAAI,GAAGL;gBACfH;gBACA;YACF,KAAK;gBACHD,QAAQU,QAAQ,GAAGH,SAASH,OAAO;gBACnCH;gBACA;YACF,KAAK;gBACHD,QAAQW,YAAY,GAAGP;gBACvBH;gBACA;YACF,KAAK;gBACHD,QAAQY,IAAI,GAAG;gBACf;YACF,KAAK;YACL,KAAK;gBACHZ,QAAQa,IAAI,GAAG;gBACf;QACJ;IACF;IAEA,OAAO;QAAEjB;QAASC;QAAWG;IAAQ;AACvC;AAEA;;CAEC,GACD,SAASc;IACPC,QAAQC,GAAG,CAAC,CAAC;wBACS,EAAExB,QAAQ;;;;;;;;;;;;;;;;;;;;;;AAsBlC,CAAC;AACD;AAEA;;CAEC,GACD,eAAeyB;IACb,MAAMtB,OAAOuB,QAAQC,IAAI,CAACC,KAAK,CAAC;IAEhC,sBAAsB;IACtB,IAAIzB,KAAK0B,QAAQ,CAAC,gBAAgB1B,KAAK0B,QAAQ,CAAC,OAAO;QACrDN,QAAQC,GAAG,CAAC,CAAC,oBAAoB,EAAExB,SAAS;QAC5C;IACF;IAEA,mBAAmB;IACnB,IAAIG,KAAKO,MAAM,KAAK,KAAKP,KAAK0B,QAAQ,CAAC,aAAa1B,KAAK0B,QAAQ,CAAC,OAAO;QACvEP;QACA;IACF;IAEA,MAAM,EAAElB,OAAO,EAAEC,SAAS,EAAEG,OAAO,EAAE,GAAGN,UAAUC;IAElD,OAAQC;QACN,KAAK;YACH,MAAMH,aAAaI,WAAWG;YAC9B;QAEF;YACEe,QAAQO,KAAK,CAAC,CAAC,iBAAiB,EAAE1B,SAAS;YAC3CmB,QAAQC,GAAG,CAAC;YACZE,QAAQK,IAAI,CAAC;IACjB;AACF;AAEA,UAAU;AACVN,OAAOO,KAAK,CAAC,CAACF;IACZP,QAAQO,KAAK,CAAC,qCAAqCA;IACnDJ,QAAQK,IAAI,CAAC;AACf"}
1
+ {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\r\n/**\r\n * CLI Entry Point - v2.0\r\n *\r\n * Handles agent spawning commands:\r\n * npx claude-flow-novice agent <type> [options]\r\n */\r\n\r\n// Load environment variables from .env file\r\nimport 'dotenv/config';\r\n\r\nimport { VERSION } from '../core/index.js';\r\nimport { agentCommand, AgentCommandOptions } from './agent-command.js';\r\n\r\n/**\r\n * Parse command line arguments\r\n */\r\nfunction parseArgs(args: string[]): { command: string; agentType?: string; options: AgentCommandOptions } {\r\n const command = args[0] || 'help';\r\n const agentType = args[1] && !args[1].startsWith('--') ? args[1] : undefined;\r\n const options: AgentCommandOptions = {};\r\n\r\n // Parse options\r\n for (let i = agentType ? 2 : 1; i < args.length; i++) {\r\n const arg = args[i];\r\n const value = args[i + 1];\r\n\r\n switch (arg) {\r\n case '--task-id':\r\n options.taskId = value;\r\n i++;\r\n break;\r\n case '--iteration':\r\n options.iteration = parseInt(value, 10);\r\n i++;\r\n break;\r\n case '--agent-id':\r\n options.agentId = value;\r\n i++;\r\n break;\r\n case '--context':\r\n options.context = value;\r\n i++;\r\n break;\r\n case '--mode':\r\n options.mode = value;\r\n i++;\r\n break;\r\n case '--priority':\r\n options.priority = parseInt(value, 10);\r\n i++;\r\n break;\r\n case '--parent-task-id':\r\n options.parentTaskId = value;\r\n i++;\r\n break;\r\n case '--list':\r\n options.list = true;\r\n break;\r\n case '--help':\r\n case '-h':\r\n options.help = true;\r\n break;\r\n }\r\n }\r\n\r\n return { command, agentType, options };\r\n}\r\n\r\n/**\r\n * Display main CLI help\r\n */\r\nfunction displayHelp(): void {\r\n console.log(`\r\nClaude Flow Novice CLI v${VERSION}\r\n\r\nUsage:\r\n npx claude-flow-novice <command> [options]\r\n\r\nCommands:\r\n agent <type> [options] Spawn an agent for task execution\r\n --version Show version number\r\n --help Show this help message\r\n\r\nExamples:\r\n # Spawn an agent\r\n npx claude-flow-novice agent coder --context \"Implement feature\"\r\n\r\n # List available agents\r\n npx claude-flow-novice agent --list\r\n\r\n # Show version\r\n npx claude-flow-novice --version\r\n\r\nFor more information:\r\n https://github.com/yourusername/claude-flow-novice\r\n`);\r\n}\r\n\r\n/**\r\n * Main CLI entry point\r\n */\r\nasync function main() {\r\n const args = process.argv.slice(2);\r\n\r\n // Handle version flag\r\n if (args.includes('--version') || args.includes('-v')) {\r\n console.log(`Claude Flow Novice v${VERSION}`);\r\n return;\r\n }\r\n\r\n // Handle help flag\r\n if (args.length === 0 || args.includes('--help') || args.includes('-h')) {\r\n displayHelp();\r\n return;\r\n }\r\n\r\n const { command, agentType, options } = parseArgs(args);\r\n\r\n switch (command) {\r\n case 'agent':\r\n await agentCommand(agentType, options);\r\n break;\r\n\r\n default:\r\n console.error(`Unknown command: ${command}`);\r\n console.log('Run with --help for usage information');\r\n process.exit(1);\r\n }\r\n}\r\n\r\n// Run CLI\r\nmain().catch((error) => {\r\n console.error('[claude-flow-novice] Fatal error:', error);\r\n process.exit(1);\r\n});\r\n"],"names":["VERSION","agentCommand","parseArgs","args","command","agentType","startsWith","undefined","options","i","length","arg","value","taskId","iteration","parseInt","agentId","context","mode","priority","parentTaskId","list","help","displayHelp","console","log","main","process","argv","slice","includes","error","exit","catch"],"mappings":";AACA;;;;;CAKC,GAED,4CAA4C;AAC5C,OAAO,gBAAgB;AAEvB,SAASA,OAAO,QAAQ,mBAAmB;AAC3C,SAASC,YAAY,QAA6B,qBAAqB;AAEvE;;CAEC,GACD,SAASC,UAAUC,IAAc;IAC/B,MAAMC,UAAUD,IAAI,CAAC,EAAE,IAAI;IAC3B,MAAME,YAAYF,IAAI,CAAC,EAAE,IAAI,CAACA,IAAI,CAAC,EAAE,CAACG,UAAU,CAAC,QAAQH,IAAI,CAAC,EAAE,GAAGI;IACnE,MAAMC,UAA+B,CAAC;IAEtC,gBAAgB;IAChB,IAAK,IAAIC,IAAIJ,YAAY,IAAI,GAAGI,IAAIN,KAAKO,MAAM,EAAED,IAAK;QACpD,MAAME,MAAMR,IAAI,CAACM,EAAE;QACnB,MAAMG,QAAQT,IAAI,CAACM,IAAI,EAAE;QAEzB,OAAQE;YACN,KAAK;gBACHH,QAAQK,MAAM,GAAGD;gBACjBH;gBACA;YACF,KAAK;gBACHD,QAAQM,SAAS,GAAGC,SAASH,OAAO;gBACpCH;gBACA;YACF,KAAK;gBACHD,QAAQQ,OAAO,GAAGJ;gBAClBH;gBACA;YACF,KAAK;gBACHD,QAAQS,OAAO,GAAGL;gBAClBH;gBACA;YACF,KAAK;gBACHD,QAAQU,IAAI,GAAGN;gBACfH;gBACA;YACF,KAAK;gBACHD,QAAQW,QAAQ,GAAGJ,SAASH,OAAO;gBACnCH;gBACA;YACF,KAAK;gBACHD,QAAQY,YAAY,GAAGR;gBACvBH;gBACA;YACF,KAAK;gBACHD,QAAQa,IAAI,GAAG;gBACf;YACF,KAAK;YACL,KAAK;gBACHb,QAAQc,IAAI,GAAG;gBACf;QACJ;IACF;IAEA,OAAO;QAAElB;QAASC;QAAWG;IAAQ;AACvC;AAEA;;CAEC,GACD,SAASe;IACPC,QAAQC,GAAG,CAAC,CAAC;wBACS,EAAEzB,QAAQ;;;;;;;;;;;;;;;;;;;;;;AAsBlC,CAAC;AACD;AAEA;;CAEC,GACD,eAAe0B;IACb,MAAMvB,OAAOwB,QAAQC,IAAI,CAACC,KAAK,CAAC;IAEhC,sBAAsB;IACtB,IAAI1B,KAAK2B,QAAQ,CAAC,gBAAgB3B,KAAK2B,QAAQ,CAAC,OAAO;QACrDN,QAAQC,GAAG,CAAC,CAAC,oBAAoB,EAAEzB,SAAS;QAC5C;IACF;IAEA,mBAAmB;IACnB,IAAIG,KAAKO,MAAM,KAAK,KAAKP,KAAK2B,QAAQ,CAAC,aAAa3B,KAAK2B,QAAQ,CAAC,OAAO;QACvEP;QACA;IACF;IAEA,MAAM,EAAEnB,OAAO,EAAEC,SAAS,EAAEG,OAAO,EAAE,GAAGN,UAAUC;IAElD,OAAQC;QACN,KAAK;YACH,MAAMH,aAAaI,WAAWG;YAC9B;QAEF;YACEgB,QAAQO,KAAK,CAAC,CAAC,iBAAiB,EAAE3B,SAAS;YAC3CoB,QAAQC,GAAG,CAAC;YACZE,QAAQK,IAAI,CAAC;IACjB;AACF;AAEA,UAAU;AACVN,OAAOO,KAAK,CAAC,CAACF;IACZP,QAAQO,KAAK,CAAC,qCAAqCA;IACnDJ,QAAQK,IAAI,CAAC;AACf"}
@@ -0,0 +1,20 @@
1
+ import { fileURLToPath } from 'url';
2
+ import path from 'path';
3
+ const __filename = fileURLToPath(import.meta.url);
4
+ const __dirname = path.dirname(__filename);
5
+ export async function registerInitCommand(program) {
6
+ program.command('init').description('Initialize Claude Flow Novice CFN project').action(async ()=>{
7
+ try {
8
+ // Dynamically import the init-project script
9
+ const { default: initializeCfnProject } = await import(path.resolve(__dirname, '../../scripts/init-project.js'));
10
+ // Execute initialization
11
+ await initializeCfnProject();
12
+ } catch (error) {
13
+ console.error('CFN Initialization Error:', error);
14
+ process.exit(1);
15
+ }
16
+ });
17
+ }
18
+ export default registerInitCommand;
19
+
20
+ //# sourceMappingURL=init-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/init-command.ts"],"sourcesContent":["import { Command } from 'commander';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\nexport async function registerInitCommand(program: Command) {\r\n program\r\n .command('init')\r\n .description('Initialize Claude Flow Novice CFN project')\r\n .action(async () => {\r\n try {\r\n // Dynamically import the init-project script\r\n const { default: initializeCfnProject } = await import(\r\n path.resolve(__dirname, '../../scripts/init-project.js')\r\n );\r\n\r\n // Execute initialization\r\n await initializeCfnProject();\r\n } catch (error) {\r\n console.error('CFN Initialization Error:', error);\r\n process.exit(1);\r\n }\r\n });\r\n}\r\n\r\nexport default registerInitCommand;"],"names":["fileURLToPath","path","__filename","url","__dirname","dirname","registerInitCommand","program","command","description","action","default","initializeCfnProject","resolve","error","console","process","exit"],"mappings":"AACA,SAASA,aAAa,QAAQ,MAAM;AACpC,OAAOC,UAAU,OAAO;AAExB,MAAMC,aAAaF,cAAc,YAAYG,GAAG;AAChD,MAAMC,YAAYH,KAAKI,OAAO,CAACH;AAE/B,OAAO,eAAeI,oBAAoBC,OAAgB;IACxDA,QACGC,OAAO,CAAC,QACRC,WAAW,CAAC,6CACZC,MAAM,CAAC;QACN,IAAI;YACF,6CAA6C;YAC7C,MAAM,EAAEC,SAASC,oBAAoB,EAAE,GAAG,MAAM,MAAM,CACpDX,KAAKY,OAAO,CAACT,WAAW;YAG1B,yBAAyB;YACzB,MAAMQ;QACR,EAAE,OAAOE,OAAO;YACdC,QAAQD,KAAK,CAAC,6BAA6BA;YAC3CE,QAAQC,IAAI,CAAC;QACf;IACF;AACJ;AAEA,eAAeX,oBAAoB"}
@@ -0,0 +1,263 @@
1
+ /**
2
+ * Tool Definitions for CLI-Spawned Agents
3
+ *
4
+ * Converts agent markdown tool names to Anthropic API tool definitions.
5
+ * Implements core tools: Read, Write, Edit, Bash, TodoWrite
6
+ */ /**
7
+ * Tool registry mapping agent tool names to Anthropic API format
8
+ */ const TOOL_REGISTRY = {
9
+ Read: {
10
+ name: 'Read',
11
+ description: 'Reads a file from the local filesystem. Can access any file by absolute path.',
12
+ input_schema: {
13
+ type: 'object',
14
+ properties: {
15
+ file_path: {
16
+ type: 'string',
17
+ description: 'The absolute path to the file to read'
18
+ },
19
+ limit: {
20
+ type: 'number',
21
+ description: 'Optional: The number of lines to read (for large files)'
22
+ },
23
+ offset: {
24
+ type: 'number',
25
+ description: 'Optional: The line number to start reading from'
26
+ }
27
+ },
28
+ required: [
29
+ 'file_path'
30
+ ]
31
+ }
32
+ },
33
+ Write: {
34
+ name: 'Write',
35
+ description: 'Writes content to a file. Creates new file or overwrites existing file.',
36
+ input_schema: {
37
+ type: 'object',
38
+ properties: {
39
+ file_path: {
40
+ type: 'string',
41
+ description: 'The absolute path to the file to write (must be absolute, not relative)'
42
+ },
43
+ content: {
44
+ type: 'string',
45
+ description: 'The content to write to the file'
46
+ }
47
+ },
48
+ required: [
49
+ 'file_path',
50
+ 'content'
51
+ ]
52
+ }
53
+ },
54
+ Edit: {
55
+ name: 'Edit',
56
+ description: 'Performs exact string replacement in files. Must read file first before editing.',
57
+ input_schema: {
58
+ type: 'object',
59
+ properties: {
60
+ file_path: {
61
+ type: 'string',
62
+ description: 'The absolute path to the file to modify'
63
+ },
64
+ old_string: {
65
+ type: 'string',
66
+ description: 'The exact text to replace (must be unique in file)'
67
+ },
68
+ new_string: {
69
+ type: 'string',
70
+ description: 'The text to replace it with'
71
+ },
72
+ replace_all: {
73
+ type: 'boolean',
74
+ description: 'Optional: Replace all occurrences (default false)'
75
+ }
76
+ },
77
+ required: [
78
+ 'file_path',
79
+ 'old_string',
80
+ 'new_string'
81
+ ]
82
+ }
83
+ },
84
+ Bash: {
85
+ name: 'Bash',
86
+ description: 'Executes bash commands in a persistent shell session. For terminal operations like git, npm, docker.',
87
+ input_schema: {
88
+ type: 'object',
89
+ properties: {
90
+ command: {
91
+ type: 'string',
92
+ description: 'The bash command to execute'
93
+ },
94
+ description: {
95
+ type: 'string',
96
+ description: 'Clear, concise description of what this command does (5-10 words)'
97
+ },
98
+ timeout: {
99
+ type: 'number',
100
+ description: 'Optional timeout in milliseconds (max 600000, default 120000)'
101
+ },
102
+ run_in_background: {
103
+ type: 'boolean',
104
+ description: 'Optional: Run command in background (default false)'
105
+ }
106
+ },
107
+ required: [
108
+ 'command'
109
+ ]
110
+ }
111
+ },
112
+ TodoWrite: {
113
+ name: 'TodoWrite',
114
+ description: 'Creates and manages structured task list for tracking progress.',
115
+ input_schema: {
116
+ type: 'object',
117
+ properties: {
118
+ todos: {
119
+ type: 'array',
120
+ description: 'Array of todo items with content, status, and activeForm',
121
+ items: {
122
+ type: 'object',
123
+ properties: {
124
+ content: {
125
+ type: 'string',
126
+ description: 'Task description in imperative form (e.g., "Run tests")'
127
+ },
128
+ status: {
129
+ type: 'string',
130
+ enum: [
131
+ 'pending',
132
+ 'in_progress',
133
+ 'completed'
134
+ ],
135
+ description: 'Task status'
136
+ },
137
+ activeForm: {
138
+ type: 'string',
139
+ description: 'Present continuous form shown during execution (e.g., "Running tests")'
140
+ }
141
+ },
142
+ required: [
143
+ 'content',
144
+ 'status',
145
+ 'activeForm'
146
+ ]
147
+ }
148
+ }
149
+ },
150
+ required: [
151
+ 'todos'
152
+ ]
153
+ }
154
+ },
155
+ Glob: {
156
+ name: 'Glob',
157
+ description: 'Fast file pattern matching. Supports glob patterns like "**/*.js".',
158
+ input_schema: {
159
+ type: 'object',
160
+ properties: {
161
+ pattern: {
162
+ type: 'string',
163
+ description: 'The glob pattern to match files against'
164
+ },
165
+ path: {
166
+ type: 'string',
167
+ description: 'Optional: Directory to search in (defaults to current working directory)'
168
+ }
169
+ },
170
+ required: [
171
+ 'pattern'
172
+ ]
173
+ }
174
+ },
175
+ Grep: {
176
+ name: 'Grep',
177
+ description: 'Powerful search tool built on ripgrep. Supports regex patterns.',
178
+ input_schema: {
179
+ type: 'object',
180
+ properties: {
181
+ pattern: {
182
+ type: 'string',
183
+ description: 'The regular expression pattern to search for'
184
+ },
185
+ path: {
186
+ type: 'string',
187
+ description: 'Optional: File or directory to search in'
188
+ },
189
+ output_mode: {
190
+ type: 'string',
191
+ enum: [
192
+ 'content',
193
+ 'files_with_matches',
194
+ 'count'
195
+ ],
196
+ description: 'Output mode (default: files_with_matches)'
197
+ },
198
+ glob: {
199
+ type: 'string',
200
+ description: 'Optional: Glob pattern to filter files'
201
+ },
202
+ type: {
203
+ type: 'string',
204
+ description: 'Optional: File type (js, py, rust, etc.)'
205
+ },
206
+ '-i': {
207
+ type: 'boolean',
208
+ description: 'Case insensitive search'
209
+ },
210
+ '-n': {
211
+ type: 'boolean',
212
+ description: 'Show line numbers (requires output_mode: content)'
213
+ },
214
+ '-A': {
215
+ type: 'number',
216
+ description: 'Lines to show after match (requires output_mode: content)'
217
+ },
218
+ '-B': {
219
+ type: 'number',
220
+ description: 'Lines to show before match (requires output_mode: content)'
221
+ },
222
+ '-C': {
223
+ type: 'number',
224
+ description: 'Lines to show before and after match (requires output_mode: content)'
225
+ }
226
+ },
227
+ required: [
228
+ 'pattern'
229
+ ]
230
+ }
231
+ }
232
+ };
233
+ /**
234
+ * Convert agent tool names to Anthropic API tool definitions
235
+ */ export function convertToolNames(toolNames) {
236
+ const definitions = [];
237
+ for (const toolName of toolNames){
238
+ const definition = TOOL_REGISTRY[toolName];
239
+ if (definition) {
240
+ definitions.push(definition);
241
+ } else {
242
+ console.warn(`[tool-definitions] Unknown tool: ${toolName}`);
243
+ }
244
+ }
245
+ return definitions;
246
+ }
247
+ /**
248
+ * Get tool definition by name
249
+ */ export function getToolDefinition(toolName) {
250
+ return TOOL_REGISTRY[toolName];
251
+ }
252
+ /**
253
+ * Check if tool name is valid
254
+ */ export function isValidTool(toolName) {
255
+ return toolName in TOOL_REGISTRY;
256
+ }
257
+ /**
258
+ * Get all available tool names
259
+ */ export function getAvailableTools() {
260
+ return Object.keys(TOOL_REGISTRY);
261
+ }
262
+
263
+ //# sourceMappingURL=tool-definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/tool-definitions.ts"],"sourcesContent":["/**\r\n * Tool Definitions for CLI-Spawned Agents\r\n *\r\n * Converts agent markdown tool names to Anthropic API tool definitions.\r\n * Implements core tools: Read, Write, Edit, Bash, TodoWrite\r\n */\r\n\r\nexport interface ToolDefinition {\r\n name: string;\r\n description: string;\r\n input_schema: {\r\n type: 'object';\r\n properties: Record<string, any>;\r\n required: string[];\r\n };\r\n}\r\n\r\n/**\r\n * Tool registry mapping agent tool names to Anthropic API format\r\n */\r\nconst TOOL_REGISTRY: Record<string, ToolDefinition> = {\r\n Read: {\r\n name: 'Read',\r\n description: 'Reads a file from the local filesystem. Can access any file by absolute path.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n file_path: {\r\n type: 'string',\r\n description: 'The absolute path to the file to read'\r\n },\r\n limit: {\r\n type: 'number',\r\n description: 'Optional: The number of lines to read (for large files)'\r\n },\r\n offset: {\r\n type: 'number',\r\n description: 'Optional: The line number to start reading from'\r\n }\r\n },\r\n required: ['file_path']\r\n }\r\n },\r\n\r\n Write: {\r\n name: 'Write',\r\n description: 'Writes content to a file. Creates new file or overwrites existing file.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n file_path: {\r\n type: 'string',\r\n description: 'The absolute path to the file to write (must be absolute, not relative)'\r\n },\r\n content: {\r\n type: 'string',\r\n description: 'The content to write to the file'\r\n }\r\n },\r\n required: ['file_path', 'content']\r\n }\r\n },\r\n\r\n Edit: {\r\n name: 'Edit',\r\n description: 'Performs exact string replacement in files. Must read file first before editing.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n file_path: {\r\n type: 'string',\r\n description: 'The absolute path to the file to modify'\r\n },\r\n old_string: {\r\n type: 'string',\r\n description: 'The exact text to replace (must be unique in file)'\r\n },\r\n new_string: {\r\n type: 'string',\r\n description: 'The text to replace it with'\r\n },\r\n replace_all: {\r\n type: 'boolean',\r\n description: 'Optional: Replace all occurrences (default false)'\r\n }\r\n },\r\n required: ['file_path', 'old_string', 'new_string']\r\n }\r\n },\r\n\r\n Bash: {\r\n name: 'Bash',\r\n description: 'Executes bash commands in a persistent shell session. For terminal operations like git, npm, docker.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n command: {\r\n type: 'string',\r\n description: 'The bash command to execute'\r\n },\r\n description: {\r\n type: 'string',\r\n description: 'Clear, concise description of what this command does (5-10 words)'\r\n },\r\n timeout: {\r\n type: 'number',\r\n description: 'Optional timeout in milliseconds (max 600000, default 120000)'\r\n },\r\n run_in_background: {\r\n type: 'boolean',\r\n description: 'Optional: Run command in background (default false)'\r\n }\r\n },\r\n required: ['command']\r\n }\r\n },\r\n\r\n TodoWrite: {\r\n name: 'TodoWrite',\r\n description: 'Creates and manages structured task list for tracking progress.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n todos: {\r\n type: 'array',\r\n description: 'Array of todo items with content, status, and activeForm',\r\n items: {\r\n type: 'object',\r\n properties: {\r\n content: {\r\n type: 'string',\r\n description: 'Task description in imperative form (e.g., \"Run tests\")'\r\n },\r\n status: {\r\n type: 'string',\r\n enum: ['pending', 'in_progress', 'completed'],\r\n description: 'Task status'\r\n },\r\n activeForm: {\r\n type: 'string',\r\n description: 'Present continuous form shown during execution (e.g., \"Running tests\")'\r\n }\r\n },\r\n required: ['content', 'status', 'activeForm']\r\n }\r\n }\r\n },\r\n required: ['todos']\r\n }\r\n },\r\n\r\n Glob: {\r\n name: 'Glob',\r\n description: 'Fast file pattern matching. Supports glob patterns like \"**/*.js\".',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n pattern: {\r\n type: 'string',\r\n description: 'The glob pattern to match files against'\r\n },\r\n path: {\r\n type: 'string',\r\n description: 'Optional: Directory to search in (defaults to current working directory)'\r\n }\r\n },\r\n required: ['pattern']\r\n }\r\n },\r\n\r\n Grep: {\r\n name: 'Grep',\r\n description: 'Powerful search tool built on ripgrep. Supports regex patterns.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n pattern: {\r\n type: 'string',\r\n description: 'The regular expression pattern to search for'\r\n },\r\n path: {\r\n type: 'string',\r\n description: 'Optional: File or directory to search in'\r\n },\r\n output_mode: {\r\n type: 'string',\r\n enum: ['content', 'files_with_matches', 'count'],\r\n description: 'Output mode (default: files_with_matches)'\r\n },\r\n glob: {\r\n type: 'string',\r\n description: 'Optional: Glob pattern to filter files'\r\n },\r\n type: {\r\n type: 'string',\r\n description: 'Optional: File type (js, py, rust, etc.)'\r\n },\r\n '-i': {\r\n type: 'boolean',\r\n description: 'Case insensitive search'\r\n },\r\n '-n': {\r\n type: 'boolean',\r\n description: 'Show line numbers (requires output_mode: content)'\r\n },\r\n '-A': {\r\n type: 'number',\r\n description: 'Lines to show after match (requires output_mode: content)'\r\n },\r\n '-B': {\r\n type: 'number',\r\n description: 'Lines to show before match (requires output_mode: content)'\r\n },\r\n '-C': {\r\n type: 'number',\r\n description: 'Lines to show before and after match (requires output_mode: content)'\r\n }\r\n },\r\n required: ['pattern']\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Convert agent tool names to Anthropic API tool definitions\r\n */\r\nexport function convertToolNames(toolNames: string[]): ToolDefinition[] {\r\n const definitions: ToolDefinition[] = [];\r\n\r\n for (const toolName of toolNames) {\r\n const definition = TOOL_REGISTRY[toolName];\r\n if (definition) {\r\n definitions.push(definition);\r\n } else {\r\n console.warn(`[tool-definitions] Unknown tool: ${toolName}`);\r\n }\r\n }\r\n\r\n return definitions;\r\n}\r\n\r\n/**\r\n * Get tool definition by name\r\n */\r\nexport function getToolDefinition(toolName: string): ToolDefinition | undefined {\r\n return TOOL_REGISTRY[toolName];\r\n}\r\n\r\n/**\r\n * Check if tool name is valid\r\n */\r\nexport function isValidTool(toolName: string): boolean {\r\n return toolName in TOOL_REGISTRY;\r\n}\r\n\r\n/**\r\n * Get all available tool names\r\n */\r\nexport function getAvailableTools(): string[] {\r\n return Object.keys(TOOL_REGISTRY);\r\n}\r\n"],"names":["TOOL_REGISTRY","Read","name","description","input_schema","type","properties","file_path","limit","offset","required","Write","content","Edit","old_string","new_string","replace_all","Bash","command","timeout","run_in_background","TodoWrite","todos","items","status","enum","activeForm","Glob","pattern","path","Grep","output_mode","glob","convertToolNames","toolNames","definitions","toolName","definition","push","console","warn","getToolDefinition","isValidTool","getAvailableTools","Object","keys"],"mappings":"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"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Tool Executor for CLI-Spawned Agents
3
+ *
4
+ * Executes tools requested by agents via Anthropic API tool_use blocks.
5
+ * Implements Read, Write, Edit, Bash, TodoWrite, Glob, Grep.
6
+ */ import fs from 'fs/promises';
7
+ import { exec } from 'child_process';
8
+ import { promisify } from 'util';
9
+ import { glob } from 'glob';
10
+ const execAsync = promisify(exec);
11
+ /**
12
+ * Execute a single tool and return result
13
+ */ export async function executeTool(toolUse) {
14
+ console.log(`[tool-executor] Executing tool: ${toolUse.name}`);
15
+ console.log(`[tool-executor] Tool use ID: ${toolUse.id}`);
16
+ try {
17
+ let result;
18
+ switch(toolUse.name){
19
+ case 'Read':
20
+ result = await executeRead(toolUse.input);
21
+ break;
22
+ case 'Write':
23
+ result = await executeWrite(toolUse.input);
24
+ break;
25
+ case 'Edit':
26
+ result = await executeEdit(toolUse.input);
27
+ break;
28
+ case 'Bash':
29
+ result = await executeBash(toolUse.input);
30
+ break;
31
+ case 'TodoWrite':
32
+ result = await executeTodoWrite(toolUse.input);
33
+ break;
34
+ case 'Glob':
35
+ result = await executeGlob(toolUse.input);
36
+ break;
37
+ case 'Grep':
38
+ result = await executeGrep(toolUse.input);
39
+ break;
40
+ default:
41
+ throw new Error(`Unknown tool: ${toolUse.name}`);
42
+ }
43
+ console.log(`[tool-executor] ✓ Tool executed successfully`);
44
+ return {
45
+ type: 'tool_result',
46
+ tool_use_id: toolUse.id,
47
+ content: result
48
+ };
49
+ } catch (error) {
50
+ console.error(`[tool-executor] ✗ Tool execution failed:`, error);
51
+ return {
52
+ type: 'tool_result',
53
+ tool_use_id: toolUse.id,
54
+ content: error instanceof Error ? error.message : String(error),
55
+ is_error: true
56
+ };
57
+ }
58
+ }
59
+ /**
60
+ * Execute Read tool
61
+ */ async function executeRead(input) {
62
+ const { file_path, offset, limit } = input;
63
+ if (!file_path) {
64
+ throw new Error('file_path parameter is required');
65
+ }
66
+ const content = await fs.readFile(file_path, 'utf-8');
67
+ const lines = content.split('\n');
68
+ // Apply offset and limit if provided
69
+ const startLine = offset ? Number(offset) - 1 : 0;
70
+ const endLine = limit ? startLine + Number(limit) : lines.length;
71
+ const selectedLines = lines.slice(startLine, endLine);
72
+ // Format with line numbers (cat -n style)
73
+ const formatted = selectedLines.map((line, idx)=>`${String(startLine + idx + 1).padStart(6)}→${line}`).join('\n');
74
+ return formatted;
75
+ }
76
+ /**
77
+ * Execute Write tool
78
+ */ async function executeWrite(input) {
79
+ const { file_path, content } = input;
80
+ if (!file_path) {
81
+ throw new Error('file_path parameter is required');
82
+ }
83
+ if (content === undefined) {
84
+ throw new Error('content parameter is required');
85
+ }
86
+ await fs.writeFile(file_path, content, 'utf-8');
87
+ return `File written successfully: ${file_path}`;
88
+ }
89
+ /**
90
+ * Execute Edit tool
91
+ */ async function executeEdit(input) {
92
+ const { file_path, old_string, new_string, replace_all } = input;
93
+ if (!file_path) {
94
+ throw new Error('file_path parameter is required');
95
+ }
96
+ if (!old_string) {
97
+ throw new Error('old_string parameter is required');
98
+ }
99
+ if (new_string === undefined) {
100
+ throw new Error('new_string parameter is required');
101
+ }
102
+ // Read file
103
+ const content = await fs.readFile(file_path, 'utf-8');
104
+ // Perform replacement
105
+ let newContent;
106
+ if (replace_all) {
107
+ // Replace all occurrences
108
+ newContent = content.split(old_string).join(new_string);
109
+ } else {
110
+ // Replace first occurrence only (must be unique)
111
+ const occurrences = content.split(old_string).length - 1;
112
+ if (occurrences === 0) {
113
+ throw new Error('old_string not found in file');
114
+ }
115
+ if (occurrences > 1) {
116
+ throw new Error(`old_string appears ${occurrences} times. Must be unique or use replace_all: true`);
117
+ }
118
+ newContent = content.replace(old_string, new_string);
119
+ }
120
+ // Write back
121
+ await fs.writeFile(file_path, newContent, 'utf-8');
122
+ return `File edited successfully: ${file_path}`;
123
+ }
124
+ /**
125
+ * Execute Bash tool
126
+ */ async function executeBash(input) {
127
+ const { command, timeout, run_in_background } = input;
128
+ if (!command) {
129
+ throw new Error('command parameter is required');
130
+ }
131
+ // DEBUG: Log bash command execution details
132
+ console.log(`[tool-executor] Bash command: ${command}`);
133
+ console.log(`[tool-executor] Timeout: ${timeout || 120000}ms`);
134
+ console.log(`[tool-executor] Background: ${run_in_background || false}`);
135
+ const timeoutMs = timeout ? Number(timeout) : 120000; // 2 minutes default
136
+ if (run_in_background) {
137
+ // Start background process and return immediately
138
+ exec(command);
139
+ return `Command started in background: ${command}`;
140
+ }
141
+ // Execute synchronously with timeout
142
+ const { stdout, stderr } = await execAsync(command, {
143
+ timeout: timeoutMs,
144
+ maxBuffer: 10 * 1024 * 1024 // 10MB buffer
145
+ });
146
+ return stdout + stderr;
147
+ }
148
+ /**
149
+ * Execute TodoWrite tool
150
+ */ async function executeTodoWrite(input) {
151
+ const { todos } = input;
152
+ if (!Array.isArray(todos)) {
153
+ throw new Error('todos parameter must be an array');
154
+ }
155
+ // Validate todo structure
156
+ for (const todo of todos){
157
+ if (!todo.content || !todo.status || !todo.activeForm) {
158
+ throw new Error('Each todo must have content, status, and activeForm');
159
+ }
160
+ if (![
161
+ 'pending',
162
+ 'in_progress',
163
+ 'completed'
164
+ ].includes(todo.status)) {
165
+ throw new Error('Invalid status. Must be pending, in_progress, or completed');
166
+ }
167
+ }
168
+ // Format todos for display
169
+ const formatted = todos.map((todo, idx)=>{
170
+ const status = todo.status === 'completed' ? '✓' : todo.status === 'in_progress' ? '⚡' : '○';
171
+ return `${idx + 1}. [${status}] ${todo.content}`;
172
+ }).join('\n');
173
+ return `Todo list updated:\n${formatted}`;
174
+ }
175
+ /**
176
+ * Execute Glob tool
177
+ */ async function executeGlob(input) {
178
+ const { pattern, path } = input;
179
+ if (!pattern) {
180
+ throw new Error('pattern parameter is required');
181
+ }
182
+ const cwd = path || process.cwd();
183
+ const files = await glob(pattern, {
184
+ cwd,
185
+ nodir: true
186
+ });
187
+ if (files.length === 0) {
188
+ return 'No files found';
189
+ }
190
+ return files.join('\n');
191
+ }
192
+ /**
193
+ * Execute Grep tool
194
+ */ async function executeGrep(input) {
195
+ const { pattern, path, output_mode, glob: globPattern, type } = input;
196
+ if (!pattern) {
197
+ throw new Error('pattern parameter is required');
198
+ }
199
+ // Build ripgrep command
200
+ const args = [
201
+ 'rg'
202
+ ];
203
+ // Output mode
204
+ if (output_mode === 'files_with_matches' || !output_mode) {
205
+ args.push('-l'); // List files with matches
206
+ } else if (output_mode === 'count') {
207
+ args.push('-c'); // Count matches per file
208
+ }
209
+ // Default is content (no flag)
210
+ // Optional flags
211
+ if (input['-i']) args.push('-i'); // Case insensitive
212
+ if (input['-n']) args.push('-n'); // Line numbers
213
+ if (input['-A']) args.push(`-A${input['-A']}`); // After context
214
+ if (input['-B']) args.push(`-B${input['-B']}`); // Before context
215
+ if (input['-C']) args.push(`-C${input['-C']}`); // Context
216
+ // File filtering
217
+ if (globPattern) args.push('--glob', globPattern);
218
+ if (type) args.push('--type', type);
219
+ // Pattern and path
220
+ args.push(pattern);
221
+ if (path) args.push(path);
222
+ const command = args.join(' ');
223
+ try {
224
+ const { stdout } = await execAsync(command, {
225
+ maxBuffer: 10 * 1024 * 1024 // 10MB buffer
226
+ });
227
+ return stdout || 'No matches found';
228
+ } catch (error) {
229
+ // ripgrep exits with code 1 if no matches found
230
+ if (error.code === 1) {
231
+ return 'No matches found';
232
+ }
233
+ throw error;
234
+ }
235
+ }
236
+ /**
237
+ * Execute multiple tools in sequence
238
+ */ export async function executeTools(toolUses) {
239
+ const results = [];
240
+ for (const toolUse of toolUses){
241
+ const result = await executeTool(toolUse);
242
+ results.push(result);
243
+ }
244
+ return results;
245
+ }
246
+
247
+ //# sourceMappingURL=tool-executor.js.map