claude-flow-novice 2.8.1 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (755) hide show
  1. package/.claude/agents/{coordinators → cfn-dev-team/coordinators}/README.md +2 -2
  2. package/.claude/agents/{coordinators → cfn-dev-team/coordinators}/cfn-v3-coordinator.md +1 -1
  3. package/.claude/agents/{coordinators → cfn-dev-team/coordinators}/cto-agent.md +1 -1
  4. package/.claude/agents/{coordinators → cfn-dev-team/coordinators}/product-owner-agent.md +1 -1
  5. package/.claude/agents/{coordinators → cfn-dev-team/coordinators}/product-owner.md +2 -2
  6. package/.claude/agents/{developers → cfn-dev-team/developers}/README.md +1 -1
  7. package/.claude/agents/{developers → cfn-dev-team/developers}/coder.md +1 -1
  8. package/.claude/agents/{reviewers → cfn-dev-team/reviewers}/code-quality-validator.md +1 -1
  9. package/.claude/agents/{reviewers → cfn-dev-team/reviewers}/reviewer.md +1 -1
  10. package/.claude/agents/{testers → cfn-dev-team/testers}/e2e/playwright-agent.md +1 -1
  11. package/.claude/agents/{testers → cfn-dev-team/testers}/interaction-tester.md +1 -1
  12. package/.claude/agents/{testers → cfn-dev-team/testers}/unit/tdd-london-swarm.md +1 -1
  13. package/.claude/agents/{testers → cfn-dev-team/testers}/validation/production-validator.md +1 -1
  14. package/.claude/commands/{CFN_COORDINATOR_PARAMETERS.md → cfn/CFN_COORDINATOR_PARAMETERS.md} +15 -15
  15. package/.claude/commands/{cfn-loop-epic.md → cfn/cfn-loop-epic.md} +4 -4
  16. package/.claude/commands/{cfn-loop-single.md → cfn/cfn-loop-single.md} +7 -7
  17. package/.claude/commands/{cfn-loop-sprints.md → cfn/cfn-loop-sprints.md} +1 -1
  18. package/.claude/commands/{cfn-loop.md → cfn/cfn-loop.md} +7 -7
  19. package/.claude/commands/{cfn-optimize-agents.md → cfn/cfn-optimize-agents.md} +1 -1
  20. package/.claude/commands/{context-curate.md → cfn/context-curate.md} +2 -2
  21. package/.claude/commands/{context-inject.md → cfn/context-inject.md} +3 -3
  22. package/.claude/commands/{context-reflect.md → cfn/context-reflect.md} +1 -1
  23. package/.claude/commands/{context-stats.md → cfn/context-stats.md} +1 -1
  24. package/.claude/commands/{list-agents-rebuild.md → cfn/list-agents-rebuild.md} +12 -12
  25. package/{CLAUDE.md → CFN-CLAUDE.md} +19 -19
  26. package/dist/agents/agent-loader.js +165 -146
  27. package/dist/agents/agent-loader.js.map +1 -1
  28. package/dist/cli/init-command.js +20 -0
  29. package/dist/cli/init-command.js.map +1 -0
  30. package/package.json +13 -7
  31. package/scripts/init-project.js +166 -0
  32. package/scripts/restructure-cfn-namespace.sh +161 -0
  33. package/.claude/SLASH-COMMANDS-READY.md +0 -53
  34. package/.claude/WORKING-SETUP.md +0 -67
  35. package/.claude/ace-system-overview.md +0 -524
  36. package/.claude/adaptive-context/cfn-v3-reflection.json +0 -21
  37. package/.claude/agent-principles/agent-template.md +0 -96
  38. package/.claude/agents/AGENT_LIFECYCLE.md +0 -495
  39. package/.claude/agents/CLAUDE.md +0 -1002
  40. package/.claude/agents/README-VALIDATION.md +0 -243
  41. package/.claude/agents/accessibility-advocate.md +0 -457
  42. package/.claude/agents/agent-principles/README.md +0 -226
  43. package/.claude/agents/agent-principles/agent-type-guidelines.md +0 -475
  44. package/.claude/agents/agent-principles/format-selection.md +0 -234
  45. package/.claude/agents/agent-principles/phase4-template-optimization.md +0 -502
  46. package/.claude/agents/agent-principles/prompt-engineering.md +0 -509
  47. package/.claude/agents/agent-principles/quality-metrics.md +0 -383
  48. package/.claude/agents/analysis/code-analyzer.md +0 -182
  49. package/.claude/agents/analysis/code-review/analyze-code-quality.md +0 -31
  50. package/.claude/agents/analysis/perf-analyzer.md +0 -36
  51. package/.claude/agents/context/context-curator.md +0 -78
  52. package/.claude/agents/context/context-reflector.md +0 -27
  53. package/.claude/agents/core-agents/reviewer.md +0 -121
  54. package/.claude/agents/custom/agent-builder.md +0 -637
  55. package/.claude/agents/development/backend/dev-backend-api.md +0 -110
  56. package/.claude/agents/development/npm-package-specialist.md +0 -355
  57. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +0 -106
  58. package/.claude/agents/documentation/api-docs.md +0 -111
  59. package/.claude/agents/frontend/README.md +0 -640
  60. package/.claude/agents/github/github-commit-agent.md +0 -126
  61. package/.claude/agents/goal/goal-planner.md +0 -191
  62. package/.claude/agents/infrastructure/README.md +0 -100
  63. package/.claude/agents/infrastructure/devops-engineer.md +0 -131
  64. package/.claude/agents/planners/README.md +0 -94
  65. package/.claude/agents/planners/analyst.md +0 -149
  66. package/.claude/agents/planners/api-designer-persona.md +0 -155
  67. package/.claude/agents/planners/architect.md +0 -187
  68. package/.claude/agents/planners/planner.md +0 -153
  69. package/.claude/agents/planners/security-architect-persona.md +0 -170
  70. package/.claude/agents/planners/system-architect-persona.md +0 -158
  71. package/.claude/agents/planners/system-architect.md +0 -156
  72. package/.claude/agents/product-owner-team/accessibility-advocate-persona.md +0 -132
  73. package/.claude/agents/product-owner-team/power-user-persona.md +0 -149
  74. package/.claude/agents/retrospective-analyst.md +0 -84
  75. package/.claude/agents/sparc/architecture.md +0 -130
  76. package/.claude/agents/sparc/pseudocode.md +0 -165
  77. package/.claude/agents/sparc/refinement.md +0 -112
  78. package/.claude/agents/sparc/specification.md +0 -158
  79. package/.claude/agents/specialists/README.md +0 -60
  80. package/.claude/agents/specialists/base-template-generator.md +0 -175
  81. package/.claude/agents/specialists/cli-agent-optimizer.md +0 -122
  82. package/.claude/agents/specialists/code-booster.md +0 -144
  83. package/.claude/agents/specialists/consensus-builder.md +0 -143
  84. package/.claude/agents/specialists/crdt-synchronizer.md +0 -192
  85. package/.claude/agents/specialists/mobile-dev.md +0 -190
  86. package/.claude/agents/specialists/performance-benchmarker.md +0 -134
  87. package/.claude/agents/specialists/quorum-manager.md +0 -168
  88. package/.claude/agents/specialists/raft-manager.md +0 -106
  89. package/.claude/agents/specialists/rust-developer.md +0 -147
  90. package/.claude/agents/specialists/rust-enterprise-developer.md +0 -125
  91. package/.claude/agents/specialists/rust-mvp-developer.md +0 -123
  92. package/.claude/agents/specialists/security-manager.md +0 -91
  93. package/.claude/agents/specialists/security-specialist-existing.md +0 -103
  94. package/.claude/agents/specialists/security-specialist.md +0 -161
  95. package/.claude/agents/specialists/spec-mobile-react-native.md +0 -172
  96. package/.claude/agents/validate-agent.js +0 -841
  97. package/.claude/agents-ignore/cfn-coordinator-enterprise.md +0 -1303
  98. package/.claude/agents-ignore/cfn-coordinator-mvp.md +0 -942
  99. package/.claude/agents-ignore/cfn-coordinator-standard.md +0 -1062
  100. package/.claude/agents-ignore/cfn-loop-coordinator.md +0 -157
  101. package/.claude/agents-ignore/cfn-loop-coordinator.md.backup +0 -156
  102. package/.claude/agents-ignore/coordinator.md +0 -182
  103. package/.claude/agents-ignore/coordinator.md.backup +0 -182
  104. package/.claude/agents-ignore/cost-savings-cfn-loop-coordinator.md +0 -760
  105. package/.claude/agents-ignore/cost-savings-coordinator.md +0 -173
  106. package/.claude/agents-ignore/cost-savings-coordinator.md.backup +0 -167
  107. package/.claude/agents-ignore/deprecated-coordinators/adaptive-coordinator-enhanced.md +0 -145
  108. package/.claude/agents-ignore/deprecated-coordinators/adaptive-coordinator.md +0 -161
  109. package/.claude/agents-ignore/deprecated-coordinators/blocking-coordinator-example.md +0 -732
  110. package/.claude/agents-ignore/deprecated-coordinators/byzantine-coordinator.md +0 -94
  111. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-enterprise.md +0 -323
  112. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-mvp.md +0 -157
  113. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-standard.md +0 -229
  114. package/.claude/agents-ignore/deprecated-coordinators/cfn-coordinator-unified.md +0 -149
  115. package/.claude/agents-ignore/deprecated-coordinators/coordinator-hybrid.md +0 -231
  116. package/.claude/agents-ignore/deprecated-coordinators/gossip-coordinator.md +0 -165
  117. package/.claude/agents-ignore/deprecated-coordinators/hierarchical-coordinator.md +0 -91
  118. package/.claude/agents-ignore/deprecated-coordinators/mesh-coordinator.md +0 -131
  119. package/.claude/agents-ignore/deprecated-coordinators/task-coordinator.md +0 -105
  120. package/.claude/agents-ignore/deprecated-coordinators/test-coordinator.md +0 -141
  121. package/.claude/architecture/mesh-get-polling-design.md +0 -87
  122. package/.claude/architecture/mesh-get-polling-implementation.md +0 -89
  123. package/.claude/architecture/typescript-microservices.md +0 -50
  124. package/.claude/artifacts/ace-reflections/REFLECT-001-summary.json +0 -39
  125. package/.claude/artifacts/ace-reflections/sprint-7_$(date -u +/"%Y%m%d_%H%M%S/").json" +0 -47
  126. package/.claude/artifacts/reflection-merge-logs/cli-agent-spawning-v2.5.2-merge-report.md +0 -61
  127. package/.claude/cfn-loop-rules.md +0 -73
  128. package/.claude/cfn-mode-patterns.md +0 -571
  129. package/.claude/claude-md-backup-pre-skills.md +0 -15
  130. package/.claude/commands/agents/README.md +0 -10
  131. package/.claude/commands/agents/agent-capabilities.md +0 -21
  132. package/.claude/commands/agents/agent-coordination.md +0 -28
  133. package/.claude/commands/agents/agent-spawning.md +0 -28
  134. package/.claude/commands/agents/agent-types.md +0 -26
  135. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
  136. package/.claude/commands/analysis/README.md +0 -9
  137. package/.claude/commands/analysis/bottleneck-detect.md +0 -162
  138. package/.claude/commands/analysis/performance-bottlenecks.md +0 -59
  139. package/.claude/commands/analysis/performance-report.md +0 -25
  140. package/.claude/commands/analysis/token-efficiency.md +0 -45
  141. package/.claude/commands/analysis/token-usage.md +0 -25
  142. package/.claude/commands/automation/README.md +0 -9
  143. package/.claude/commands/automation/auto-agent.md +0 -122
  144. package/.claude/commands/automation/self-healing.md +0 -106
  145. package/.claude/commands/automation/session-memory.md +0 -90
  146. package/.claude/commands/automation/smart-agents.md +0 -73
  147. package/.claude/commands/automation/smart-spawn.md +0 -25
  148. package/.claude/commands/automation/workflow-select.md +0 -25
  149. package/.claude/commands/claude-md.js +0 -237
  150. package/.claude/commands/claude-soul.js +0 -28
  151. package/.claude/commands/cli-integration.js +0 -216
  152. package/.claude/commands/coordination/README.md +0 -9
  153. package/.claude/commands/coordination/agent-spawn.md +0 -25
  154. package/.claude/commands/coordination/coordination-system.md +0 -88
  155. package/.claude/commands/coordination/init.md +0 -44
  156. package/.claude/commands/coordination/orchestrate.md +0 -43
  157. package/.claude/commands/coordination/spawn.md +0 -45
  158. package/.claude/commands/coordination/swarm-init.md +0 -85
  159. package/.claude/commands/coordination/task-orchestrate.md +0 -25
  160. package/.claude/commands/github/README.md +0 -11
  161. package/.claude/commands/github/code-review-swarm.md +0 -514
  162. package/.claude/commands/github/code-review.md +0 -25
  163. package/.claude/commands/github/github-modes.md +0 -147
  164. package/.claude/commands/github/github-swarm.md +0 -121
  165. package/.claude/commands/github/issue-tracker.md +0 -292
  166. package/.claude/commands/github/issue-triage.md +0 -25
  167. package/.claude/commands/github/multi-repo-swarm.md +0 -519
  168. package/.claude/commands/github/pr-enhance.md +0 -26
  169. package/.claude/commands/github/pr-manager.md +0 -170
  170. package/.claude/commands/github/project-board-sync.md +0 -471
  171. package/.claude/commands/github/release-manager.md +0 -338
  172. package/.claude/commands/github/release-swarm.md +0 -544
  173. package/.claude/commands/github/repo-analyze.md +0 -25
  174. package/.claude/commands/github/repo-architect.md +0 -367
  175. package/.claude/commands/github/swarm-issue.md +0 -482
  176. package/.claude/commands/github/swarm-pr.md +0 -285
  177. package/.claude/commands/github/sync-coordinator.md +0 -301
  178. package/.claude/commands/github/workflow-automation.md +0 -442
  179. package/.claude/commands/github.js +0 -638
  180. package/.claude/commands/hive-mind/README.md +0 -17
  181. package/.claude/commands/hive-mind/hive-mind-consensus.md +0 -8
  182. package/.claude/commands/hive-mind/hive-mind-init.md +0 -18
  183. package/.claude/commands/hive-mind/hive-mind-memory.md +0 -8
  184. package/.claude/commands/hive-mind/hive-mind-metrics.md +0 -8
  185. package/.claude/commands/hive-mind/hive-mind-resume.md +0 -8
  186. package/.claude/commands/hive-mind/hive-mind-sessions.md +0 -8
  187. package/.claude/commands/hive-mind/hive-mind-spawn.md +0 -21
  188. package/.claude/commands/hive-mind/hive-mind-status.md +0 -8
  189. package/.claude/commands/hive-mind/hive-mind-stop.md +0 -8
  190. package/.claude/commands/hive-mind/hive-mind-wizard.md +0 -8
  191. package/.claude/commands/hive-mind/hive-mind.md +0 -27
  192. package/.claude/commands/hooks/README.md +0 -11
  193. package/.claude/commands/hooks/overview.md +0 -58
  194. package/.claude/commands/hooks/post-edit.md +0 -117
  195. package/.claude/commands/hooks/post-task.md +0 -112
  196. package/.claude/commands/hooks/pre-edit.md +0 -113
  197. package/.claude/commands/hooks/pre-task.md +0 -111
  198. package/.claude/commands/hooks/session-end.md +0 -118
  199. package/.claude/commands/hooks/session-start.md +0 -9
  200. package/.claude/commands/hooks/setup.md +0 -103
  201. package/.claude/commands/hooks.js +0 -651
  202. package/.claude/commands/index.js +0 -119
  203. package/.claude/commands/memory/README.md +0 -9
  204. package/.claude/commands/memory/memory-bank.md +0 -58
  205. package/.claude/commands/memory/memory-persist.md +0 -25
  206. package/.claude/commands/memory/memory-search.md +0 -25
  207. package/.claude/commands/memory/memory-usage.md +0 -25
  208. package/.claude/commands/memory/neural.md +0 -47
  209. package/.claude/commands/memory/usage.md +0 -46
  210. package/.claude/commands/monitoring/README.md +0 -9
  211. package/.claude/commands/monitoring/agent-metrics.md +0 -25
  212. package/.claude/commands/monitoring/agents.md +0 -44
  213. package/.claude/commands/monitoring/real-time-view.md +0 -25
  214. package/.claude/commands/monitoring/status.md +0 -46
  215. package/.claude/commands/monitoring/swarm-monitor.md +0 -25
  216. package/.claude/commands/neural.js +0 -572
  217. package/.claude/commands/optimization/README.md +0 -9
  218. package/.claude/commands/optimization/auto-topology.md +0 -62
  219. package/.claude/commands/optimization/cache-manage.md +0 -25
  220. package/.claude/commands/optimization/parallel-execute.md +0 -25
  221. package/.claude/commands/optimization/parallel-execution.md +0 -50
  222. package/.claude/commands/optimization/topology-optimize.md +0 -25
  223. package/.claude/commands/pair/README.md +0 -261
  224. package/.claude/commands/pair/commands.md +0 -546
  225. package/.claude/commands/pair/config.md +0 -510
  226. package/.claude/commands/pair/examples.md +0 -512
  227. package/.claude/commands/pair/modes.md +0 -348
  228. package/.claude/commands/pair/session.md +0 -407
  229. package/.claude/commands/pair/start.md +0 -209
  230. package/.claude/commands/parse-epic.js +0 -180
  231. package/.claude/commands/performance.js +0 -582
  232. package/.claude/commands/register-all-commands.js +0 -320
  233. package/.claude/commands/register-claude-md.js +0 -82
  234. package/.claude/commands/register-claude-soul.js +0 -80
  235. package/.claude/commands/sparc/analyzer.md +0 -52
  236. package/.claude/commands/sparc/architect.md +0 -53
  237. package/.claude/commands/sparc/batch-executor.md +0 -54
  238. package/.claude/commands/sparc/coder.md +0 -54
  239. package/.claude/commands/sparc/debugger.md +0 -54
  240. package/.claude/commands/sparc/designer.md +0 -53
  241. package/.claude/commands/sparc/documenter.md +0 -54
  242. package/.claude/commands/sparc/innovator.md +0 -54
  243. package/.claude/commands/sparc/memory-manager.md +0 -54
  244. package/.claude/commands/sparc/optimizer.md +0 -54
  245. package/.claude/commands/sparc/orchestrator.md +0 -132
  246. package/.claude/commands/sparc/researcher.md +0 -54
  247. package/.claude/commands/sparc/reviewer.md +0 -54
  248. package/.claude/commands/sparc/sparc-modes.md +0 -174
  249. package/.claude/commands/sparc/swarm-coordinator.md +0 -54
  250. package/.claude/commands/sparc/tdd.md +0 -54
  251. package/.claude/commands/sparc/tester.md +0 -54
  252. package/.claude/commands/sparc/workflow-manager.md +0 -54
  253. package/.claude/commands/sparc.js +0 -110
  254. package/.claude/commands/stream-chain/pipeline.md +0 -121
  255. package/.claude/commands/stream-chain/run.md +0 -70
  256. package/.claude/commands/swarm/README.md +0 -15
  257. package/.claude/commands/swarm/analysis.md +0 -95
  258. package/.claude/commands/swarm/development.md +0 -96
  259. package/.claude/commands/swarm/examples.md +0 -168
  260. package/.claude/commands/swarm/maintenance.md +0 -102
  261. package/.claude/commands/swarm/optimization.md +0 -117
  262. package/.claude/commands/swarm/research.md +0 -136
  263. package/.claude/commands/swarm/swarm-analysis.md +0 -8
  264. package/.claude/commands/swarm/swarm-background.md +0 -8
  265. package/.claude/commands/swarm/swarm-init.md +0 -19
  266. package/.claude/commands/swarm/swarm-modes.md +0 -8
  267. package/.claude/commands/swarm/swarm-monitor.md +0 -8
  268. package/.claude/commands/swarm/swarm-spawn.md +0 -19
  269. package/.claude/commands/swarm/swarm-status.md +0 -8
  270. package/.claude/commands/swarm/swarm-strategies.md +0 -8
  271. package/.claude/commands/swarm/swarm.md +0 -27
  272. package/.claude/commands/swarm/testing.md +0 -131
  273. package/.claude/commands/swarm.js +0 -423
  274. package/.claude/commands/testing/playwright-e2e.md +0 -288
  275. package/.claude/commands/training/README.md +0 -9
  276. package/.claude/commands/training/model-update.md +0 -25
  277. package/.claude/commands/training/neural-patterns.md +0 -74
  278. package/.claude/commands/training/neural-train.md +0 -25
  279. package/.claude/commands/training/pattern-learn.md +0 -25
  280. package/.claude/commands/training/specialization.md +0 -63
  281. package/.claude/commands/truth/start.md +0 -143
  282. package/.claude/commands/validate-commands.js +0 -223
  283. package/.claude/commands/verify/check.md +0 -50
  284. package/.claude/commands/verify/start.md +0 -128
  285. package/.claude/commands/workflow.js +0 -606
  286. package/.claude/commands/workflows/README.md +0 -9
  287. package/.claude/commands/workflows/development.md +0 -78
  288. package/.claude/commands/workflows/research.md +0 -63
  289. package/.claude/commands/workflows/workflow-create.md +0 -25
  290. package/.claude/commands/workflows/workflow-execute.md +0 -25
  291. package/.claude/commands/workflows/workflow-export.md +0 -25
  292. package/.claude/coordinator-feedback-pattern.md +0 -326
  293. package/.claude/coordinator-patterns.md +0 -126
  294. package/.claude/core/agent-manager.js +0 -80
  295. package/.claude/core/agent-manager.js.map +0 -1
  296. package/.claude/core/config.js +0 -1221
  297. package/.claude/core/config.js.map +0 -1
  298. package/.claude/core/event-bus.js +0 -136
  299. package/.claude/core/event-bus.js.map +0 -1
  300. package/.claude/core/index.js +0 -6
  301. package/.claude/core/index.js.map +0 -1
  302. package/.claude/core/json-persistence.js +0 -112
  303. package/.claude/core/json-persistence.js.map +0 -1
  304. package/.claude/core/logger.js +0 -245
  305. package/.claude/core/logger.js.map +0 -1
  306. package/.claude/core/orchestrator-fixed.js +0 -236
  307. package/.claude/core/orchestrator-fixed.js.map +0 -1
  308. package/.claude/core/orchestrator.js +0 -1136
  309. package/.claude/core/orchestrator.js.map +0 -1
  310. package/.claude/core/persistence.js +0 -185
  311. package/.claude/core/persistence.js.map +0 -1
  312. package/.claude/core/project-manager.js +0 -80
  313. package/.claude/core/project-manager.js.map +0 -1
  314. package/.claude/core/slash-command.js +0 -24
  315. package/.claude/core/version.js +0 -35
  316. package/.claude/core/version.js.map +0 -1
  317. package/.claude/helpers/checkpoint-manager.sh +0 -251
  318. package/.claude/helpers/github-safe.js +0 -106
  319. package/.claude/helpers/github-setup.sh +0 -28
  320. package/.claude/helpers/quick-start.sh +0 -19
  321. package/.claude/helpers/setup-mcp.sh +0 -18
  322. package/.claude/helpers/standard-checkpoint-hooks.sh +0 -179
  323. package/.claude/hooks.json +0 -21
  324. package/.claude/logs/sprint1-hybrid-routing-v2-decision.json +0 -18
  325. package/.claude/prompts/cfn-loop-context.md +0 -115
  326. package/.claude/prompts/loop-specific/loop2.md +0 -50
  327. package/.claude/prompts/loop-specific/loop3.md +0 -43
  328. package/.claude/prompts/loop-specific/loop4.md +0 -54
  329. package/.claude/redis-agent-dependencies.md +0 -494
  330. package/.claude/root-claude-distribute/CLAUDE.md +0 -502
  331. package/.claude/settings.json +0 -129
  332. package/.claude/settings.local.json +0 -33
  333. package/.claude/skills/CFN-LOOP-VALIDATION.md +0 -202
  334. package/.claude/skills/REDIS-COORDINATION.md +0 -187
  335. package/.claude/skills/SKILL.md +0 -229
  336. package/.claude/skills/ace-system/SKILL.md +0 -364
  337. package/.claude/skills/ace-system/add-bullet.sh +0 -145
  338. package/.claude/skills/ace-system/invoke-context-curate.sh +0 -192
  339. package/.claude/skills/ace-system/invoke-context-inject.sh +0 -166
  340. package/.claude/skills/ace-system/invoke-context-query.sh +0 -127
  341. package/.claude/skills/ace-system/invoke-context-reflect.sh +0 -98
  342. package/.claude/skills/ace-system/invoke-context-stats.sh +0 -188
  343. package/.claude/skills/ace-system/log-merge.sh +0 -67
  344. package/.claude/skills/ace-system/query-reflections.sh +0 -35
  345. package/.claude/skills/ace-system/sprint-7-lessons.json +0 -46
  346. package/.claude/skills/ace-system/store-reflection.sh +0 -46
  347. package/.claude/skills/ace-system/test-ace-skill.sh +0 -312
  348. package/.claude/skills/ace-system/update-reflection.sh +0 -41
  349. package/.claude/skills/agent-discovery/SKILL.md +0 -40
  350. package/.claude/skills/agent-discovery/agents-registry-clean.json +0 -0
  351. package/.claude/skills/agent-discovery/agents-registry-fixed.json +0 -19
  352. package/.claude/skills/agent-discovery/agents-registry.json +0 -718
  353. package/.claude/skills/agent-discovery/discover-agents.py +0 -175
  354. package/.claude/skills/agent-discovery/discover-agents.sh +0 -87
  355. package/.claude/skills/agent-discovery/invoke-registry.sh +0 -11
  356. package/.claude/skills/agent-discovery/temp_script.py +0 -0
  357. package/.claude/skills/agent-execution/execute-agent.sh +0 -126
  358. package/.claude/skills/agent-output-processing/SKILL.md +0 -359
  359. package/.claude/skills/agent-selector/SKILL.md +0 -90
  360. package/.claude/skills/agent-selector/select-agents.sh +0 -96
  361. package/.claude/skills/agent-spawning/SKILL.md +0 -135
  362. package/.claude/skills/agent-spawning/agent-selection-guide.md +0 -814
  363. package/.claude/skills/agent-spawning/check-dependencies.sh +0 -30
  364. package/.claude/skills/agent-spawning/spawn-agent.sh +0 -263
  365. package/.claude/skills/agent-spawning/spawn-templates.sh +0 -613
  366. package/.claude/skills/agent-swap/SKILL.md +0 -36
  367. package/.claude/skills/agent-swap/recommend-swap.sh +0 -60
  368. package/.claude/skills/analytics/description-refinement-guide.md +0 -164
  369. package/.claude/skills/analytics/log-skill-invocation.js +0 -122
  370. package/.claude/skills/analytics/run-production-criteria-tests.sh +0 -126
  371. package/.claude/skills/analytics/skill-analytics-dashboard.js +0 -113
  372. package/.claude/skills/analytics/skill-invocation-hook.sh +0 -28
  373. package/.claude/skills/analytics/skill-invocations.sql +0 -58
  374. package/.claude/skills/analytics/test-corpus.json +0 -32
  375. package/.claude/skills/analytics/test-data-generator.js +0 -115
  376. package/.claude/skills/analytics/test-manual-override-rate.js +0 -285
  377. package/.claude/skills/analytics/validate-skill-selection.js +0 -188
  378. package/.claude/skills/api-validation/test-endpoints.sh +0 -54
  379. package/.claude/skills/automatic-memory-persistence/SKILL.md +0 -73
  380. package/.claude/skills/automatic-memory-persistence/persist-agent-output.sh +0 -49
  381. package/.claude/skills/automatic-memory-persistence/query-agent-history.sh +0 -35
  382. package/.claude/skills/automatic-memory-persistence/test-memory-persistence.sh +0 -235
  383. package/.claude/skills/cfn-loop-orchestration/SKILL.md +0 -299
  384. package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +0 -228
  385. package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +0 -84
  386. package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +0 -71
  387. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +0 -90
  388. package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +0 -87
  389. package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +0 -51
  390. package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +0 -41
  391. package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +0 -156
  392. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +0 -840
  393. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +0 -99
  394. package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +0 -281
  395. package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +0 -188
  396. package/.claude/skills/cfn-loop-validation/SKILL.md +0 -353
  397. package/.claude/skills/cfn-loop-validation/check-dependencies.sh +0 -31
  398. package/.claude/skills/cfn-loop-validation/config.json +0 -161
  399. package/.claude/skills/cfn-loop-validation/consensus-calculator.js +0 -477
  400. package/.claude/skills/cfn-loop-validation/evidence-chain.sql +0 -163
  401. package/.claude/skills/cfn-loop-validation/examples/README.md +0 -453
  402. package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +0 -234
  403. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +0 -132
  404. package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +0 -115
  405. package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +0 -186
  406. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +0 -252
  407. package/.claude/skills/cfn-loop-validation/validate-iteration.sh +0 -134
  408. package/.claude/skills/cfn-loop-validation.sh +0 -70
  409. package/.claude/skills/complexity-estimator/SKILL.md +0 -96
  410. package/.claude/skills/complexity-estimator/estimate-complexity.sh +0 -144
  411. package/.claude/skills/config-management/SKILL.md +0 -34
  412. package/.claude/skills/config-management/check-dependencies.sh +0 -56
  413. package/.claude/skills/config-management/config.json +0 -32
  414. package/.claude/skills/config-management/manage-config.sh +0 -113
  415. package/.claude/skills/consensus-calculator.js +0 -45
  416. package/.claude/skills/context-pruner/SKILL.md +0 -75
  417. package/.claude/skills/context-pruner/prune-context.sh +0 -73
  418. package/.claude/skills/defense-in-depth/SKILL.md +0 -133
  419. package/.claude/skills/dependency-extractor/SKILL.md +0 -35
  420. package/.claude/skills/dependency-extractor/extract-dependencies.sh +0 -66
  421. package/.claude/skills/epic-decomposer/SKILL.md +0 -44
  422. package/.claude/skills/epic-decomposer/decompose-epic.sh +0 -104
  423. package/.claude/skills/event-bus/SKILL.md +0 -412
  424. package/.claude/skills/event-bus/config.json +0 -111
  425. package/.claude/skills/event-bus/eventbus-wrapper.cjs +0 -69
  426. package/.claude/skills/event-bus/invoke-event-publish.sh +0 -147
  427. package/.claude/skills/event-bus/invoke-event-subscribe.sh +0 -171
  428. package/.claude/skills/event-bus/invoke-lifecycle-track.sh +0 -201
  429. package/.claude/skills/event-bus/test-event-bus.sh +0 -280
  430. package/.claude/skills/evidence-chain.sql +0 -66
  431. package/.claude/skills/fleet-manager/SKILL.md +0 -412
  432. package/.claude/skills/fleet-manager/config.json +0 -60
  433. package/.claude/skills/fleet-manager/invoke-fleet-allocate.sh +0 -182
  434. package/.claude/skills/fleet-manager/invoke-fleet-balance.sh +0 -239
  435. package/.claude/skills/fleet-manager/invoke-fleet-metrics.sh +0 -193
  436. package/.claude/skills/fleet-manager/invoke-fleet-register.sh +0 -124
  437. package/.claude/skills/fleet-manager/test-fleet-manager.sh +0 -345
  438. package/.claude/skills/hook-pipeline/SKILL.md +0 -148
  439. package/.claude/skills/hook-pipeline/auto-resolve.sh +0 -66
  440. package/.claude/skills/hook-pipeline/check-dependencies.sh +0 -40
  441. package/.claude/skills/hook-pipeline/feedback-resolver.sh +0 -452
  442. package/.claude/skills/hook-pipeline/post-edit-handler.sh +0 -154
  443. package/.claude/skills/hook-pipeline/security-scan.json +0 -60
  444. package/.claude/skills/hook-pipeline/security-scanner.sh +0 -121
  445. package/.claude/skills/hook-pipeline/test-root-warning-resolution.sh +0 -148
  446. package/.claude/skills/hybrid-routing/SKILL.md +0 -46
  447. package/.claude/skills/hybrid-routing/check-dependencies.sh +0 -52
  448. package/.claude/skills/hybrid-routing/config.json +0 -26
  449. package/.claude/skills/hybrid-routing/spawn-worker.sh +0 -44
  450. package/.claude/skills/improvement-recommender/SKILL.md +0 -33
  451. package/.claude/skills/improvement-recommender/recommend-improvements.sh +0 -92
  452. package/.claude/skills/intervention-detector/SKILL.md +0 -39
  453. package/.claude/skills/intervention-detector/detect-intervention.sh +0 -111
  454. package/.claude/skills/intervention-orchestrator/SKILL.md +0 -43
  455. package/.claude/skills/intervention-orchestrator/execute-intervention.sh +0 -59
  456. package/.claude/skills/loop2-output-processing/SKILL.md +0 -163
  457. package/.claude/skills/loop2-output-processing/execute-and-extract.sh +0 -77
  458. package/.claude/skills/loop2-output-processing/execute-and-extract.sh.backup +0 -36
  459. package/.claude/skills/loop2-output-processing/parse-feedback.sh +0 -147
  460. package/.claude/skills/loop2-output-processing/process-validator-output.sh +0 -275
  461. package/.claude/skills/loop2-output-processing/test-bug27-fix.sh +0 -200
  462. package/.claude/skills/loop2-output-processing/test-loop2-processing.sh +0 -113
  463. package/.claude/skills/loop3-output-processing/AGENT_COMPLETION_PROTOCOL.md +0 -206
  464. package/.claude/skills/loop3-output-processing/SKILL.md +0 -421
  465. package/.claude/skills/loop3-output-processing/calculate-confidence.sh +0 -28
  466. package/.claude/skills/loop3-output-processing/execute-and-extract.sh +0 -85
  467. package/.claude/skills/loop3-output-processing/parse-confidence.sh +0 -31
  468. package/.claude/skills/loop3-output-processing/test-agent-timeout.sh +0 -327
  469. package/.claude/skills/loop3-output-processing/test-loop3-processing.sh +0 -155
  470. package/.claude/skills/loop3-output-processing/verify-deliverables.sh +0 -42
  471. package/.claude/skills/pattern-extraction/SKILL.md +0 -30
  472. package/.claude/skills/pattern-extraction/extract-patterns.sh +0 -80
  473. package/.claude/skills/playbook/SKILL.md +0 -113
  474. package/.claude/skills/playbook/init-playbook.sh +0 -54
  475. package/.claude/skills/playbook/playbook.db +0 -0
  476. package/.claude/skills/playbook/query-playbook.sh +0 -79
  477. package/.claude/skills/playbook/update-playbook.sh +0 -69
  478. package/.claude/skills/playbook-auto-update/SKILL.md +0 -29
  479. package/.claude/skills/playbook-auto-update/auto-update-playbook.sh +0 -86
  480. package/.claude/skills/process-lifecycle/SKILL.md +0 -39
  481. package/.claude/skills/process-lifecycle/check-dependencies.sh +0 -58
  482. package/.claude/skills/process-lifecycle/config.json +0 -39
  483. package/.claude/skills/process-lifecycle/process-manager.sh +0 -144
  484. package/.claude/skills/product-owner-decision/SKILL.md +0 -332
  485. package/.claude/skills/product-owner-decision/execute-decision.sh +0 -176
  486. package/.claude/skills/product-owner-decision/parse-decision.sh +0 -66
  487. package/.claude/skills/product-owner-decision/validate-deliverables.sh +0 -82
  488. package/.claude/skills/redis-coordination/AGENT_LOGGING.md +0 -280
  489. package/.claude/skills/redis-coordination/BZPOPMIN_FIX_SUMMARY.md +0 -209
  490. package/.claude/skills/redis-coordination/HEARTBEAT.md +0 -57
  491. package/.claude/skills/redis-coordination/HEARTBEAT_MONITORING.md +0 -267
  492. package/.claude/skills/redis-coordination/LOGGING.md +0 -260
  493. package/.claude/skills/redis-coordination/SECURITY_REVIEW.md +0 -25
  494. package/.claude/skills/redis-coordination/SHUTDOWN_HANDLING.md +0 -164
  495. package/.claude/skills/redis-coordination/SKILL.md +0 -720
  496. package/.claude/skills/redis-coordination/agent-log.sh +0 -124
  497. package/.claude/skills/redis-coordination/agent-recovery.sh +0 -75
  498. package/.claude/skills/redis-coordination/analyze-task-complexity.sh +0 -277
  499. package/.claude/skills/redis-coordination/cancel-swarm.sh +0 -221
  500. package/.claude/skills/redis-coordination/cfn-loop-exec.sh +0 -468
  501. package/.claude/skills/redis-coordination/cfn-loop-relaunch.sh +0 -29
  502. package/.claude/skills/redis-coordination/check-dependencies.sh +0 -32
  503. package/.claude/skills/redis-coordination/collect-confidence-scores.sh +0 -179
  504. package/.claude/skills/redis-coordination/collect-results.sh +0 -75
  505. package/.claude/skills/redis-coordination/complete-swarm.sh +0 -75
  506. package/.claude/skills/redis-coordination/config.json +0 -61
  507. package/.claude/skills/redis-coordination/data/cfn-loop.db +0 -0
  508. package/.claude/skills/redis-coordination/demos/phase4-wake-queue-test-report.md +0 -82
  509. package/.claude/skills/redis-coordination/demos/test-bzpopmin-fix.sh +0 -274
  510. package/.claude/skills/redis-coordination/demos/test-cancel-swarm.sh +0 -276
  511. package/.claude/skills/redis-coordination/demos/test-dlq.sh +0 -129
  512. package/.claude/skills/redis-coordination/demos/test-iteration-feedback.sh +0 -320
  513. package/.claude/skills/redis-coordination/demos/test-orchestrator.sh +0 -249
  514. package/.claude/skills/redis-coordination/demos/test-priority-wake-phase4-unix.sh +0 -148
  515. package/.claude/skills/redis-coordination/demos/test-priority-wake-phase4.sh +0 -163
  516. package/.claude/skills/redis-coordination/demos/test-priority-wake.sh +0 -138
  517. package/.claude/skills/redis-coordination/demos/test-quick-fix.sh +0 -81
  518. package/.claude/skills/redis-coordination/demos/test-quorum-absolute.sh +0 -45
  519. package/.claude/skills/redis-coordination/demos/test-quorum-fallback.sh +0 -68
  520. package/.claude/skills/redis-coordination/demos/test-quorum-percentage.sh +0 -56
  521. package/.claude/skills/redis-coordination/demos/test-quorum-with-retry.sh +0 -81
  522. package/.claude/skills/redis-coordination/demos/test-quorum.sh +0 -57
  523. package/.claude/skills/redis-coordination/demos/test-shutdown-handling.sh +0 -187
  524. package/.claude/skills/redis-coordination/demos/test-shutdown.sh +0 -160
  525. package/.claude/skills/redis-coordination/demos/test-utils-unix.sh +0 -97
  526. package/.claude/skills/redis-coordination/demos/test-utils.sh +0 -97
  527. package/.claude/skills/redis-coordination/demos/test-waiting-mode.sh +0 -59
  528. package/.claude/skills/redis-coordination/examples/README.md +0 -73
  529. package/.claude/skills/redis-coordination/examples/grafana-dashboard.json +0 -352
  530. package/.claude/skills/redis-coordination/examples/hierarchical-pattern.sh +0 -127
  531. package/.claude/skills/redis-coordination/examples/mesh-pattern.sh +0 -171
  532. package/.claude/skills/redis-coordination/examples/timeout-handling.sh +0 -227
  533. package/.claude/skills/redis-coordination/examples/waiting-mode-pattern.sh +0 -239
  534. package/.claude/skills/redis-coordination/execute-product-owner-decision.sh +0 -258
  535. package/.claude/skills/redis-coordination/get-agent-timeout.sh +0 -177
  536. package/.claude/skills/redis-coordination/heartbeat-functions.sh +0 -137
  537. package/.claude/skills/redis-coordination/heartbeat-protocol.md +0 -106
  538. package/.claude/skills/redis-coordination/heartbeat.sh +0 -126
  539. package/.claude/skills/redis-coordination/init-swarm.sh +0 -148
  540. package/.claude/skills/redis-coordination/invoke-redis-pattern.sh +0 -220
  541. package/.claude/skills/redis-coordination/invoke-waiting-mode.sh +0 -283
  542. package/.claude/skills/redis-coordination/invoke-waiting-mode.sh.backup-p7 +0 -423
  543. package/.claude/skills/redis-coordination/list-active-swarms.sh +0 -147
  544. package/.claude/skills/redis-coordination/log-event.sh +0 -109
  545. package/.claude/skills/redis-coordination/metrics-export.sh +0 -674
  546. package/.claude/skills/redis-coordination/metrics-schema.json +0 -66
  547. package/.claude/skills/redis-coordination/metrics-storage.md +0 -31
  548. package/.claude/skills/redis-coordination/monitor-cfn-violations.sh +0 -391
  549. package/.claude/skills/redis-coordination/monitor-heartbeats.sh +0 -101
  550. package/.claude/skills/redis-coordination/orchestrate-cfn-loop-v3.sh +0 -141
  551. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh +0 -31
  552. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup +0 -38
  553. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +0 -1672
  554. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +0 -1604
  555. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +0 -1550
  556. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +0 -1621
  557. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +0 -1621
  558. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
  559. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.broken +0 -1627
  560. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.corrupted +0 -80
  561. package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.deprecated +0 -1864
  562. package/.claude/skills/redis-coordination/priority-wake-mechanism.md +0 -75
  563. package/.claude/skills/redis-coordination/priority_wake.py +0 -134
  564. package/.claude/skills/redis-coordination/query-dlq.sh +0 -162
  565. package/.claude/skills/redis-coordination/query-logs.sh +0 -103
  566. package/.claude/skills/redis-coordination/redis-pattern.sh +0 -619
  567. package/.claude/skills/redis-coordination/retrieve-context.sh +0 -58
  568. package/.claude/skills/redis-coordination/select-specialist-agent.sh +0 -371
  569. package/.claude/skills/redis-coordination/semantic-match-tfidf.py +0 -252
  570. package/.claude/skills/redis-coordination/send-heartbeat.sh +0 -165
  571. package/.claude/skills/redis-coordination/signal.sh +0 -38
  572. package/.claude/skills/redis-coordination/store-context.sh +0 -86
  573. package/.claude/skills/redis-coordination/store-epic-context.sh +0 -123
  574. package/.claude/skills/redis-coordination/test-context-injection.sh +0 -354
  575. package/.claude/skills/redis-coordination/test-timeout-enforcement.sh +0 -513
  576. package/.claude/skills/redis-coordination/tests/convert-line-endings.sh +0 -15
  577. package/.claude/skills/redis-coordination/tests/dlq-functionality-test.sh +0 -102
  578. package/.claude/skills/redis-coordination/tests/edge-cases-test.sh +0 -99
  579. package/.claude/skills/redis-coordination/tests/integration-test.sh +0 -170
  580. package/.claude/skills/redis-coordination/tests/retry-mechanism-test.sh +0 -82
  581. package/.claude/skills/redis-coordination/tests/run-test-suite.sh +0 -92
  582. package/.claude/skills/redis-coordination/tests/run-tests.sh +0 -4
  583. package/.claude/skills/redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
  584. package/.claude/skills/redis-coordination/tests/test-heartbeat-simple.sh +0 -124
  585. package/.claude/skills/redis-coordination/tests/test-primitives.sh +0 -166
  586. package/.claude/skills/redis-coordination/tests/test-utils.sh +0 -54
  587. package/.claude/skills/redis-coordination/tests/test_coordination_primitives.sh.deprecated +0 -20
  588. package/.claude/skills/redis-coordination/tests/test_utils.sh +0 -49
  589. package/.claude/skills/redis-coordination/v2_modularization/core_orchestration.sh +0 -76
  590. package/.claude/skills/redis-coordination/validate-parameters.sh +0 -492
  591. package/.claude/skills/retrospective-report/SKILL.md +0 -31
  592. package/.claude/skills/retrospective-report/generate-report.sh +0 -101
  593. package/.claude/skills/run-all-skill-tests.sh +0 -124
  594. package/.claude/skills/scope-simplifier/SKILL.md +0 -37
  595. package/.claude/skills/scope-simplifier/simplify-scope.sh +0 -68
  596. package/.claude/skills/simplified-agent-lifecycle/COST_ANALYSIS.md +0 -49
  597. package/.claude/skills/simplified-agent-lifecycle/DESIGN.md +0 -98
  598. package/.claude/skills/simplified-agent-lifecycle/MIGRATION_PLAN.md +0 -74
  599. package/.claude/skills/skill-builder/SKILL.md +0 -910
  600. package/.claude/skills/specialist-injection/SKILL.md +0 -41
  601. package/.claude/skills/specialist-injection/recommend-specialist.sh +0 -57
  602. package/.claude/skills/sprint-execution/SKILL.md +0 -27
  603. package/.claude/skills/sprint-execution/execute-sprint-task.sh +0 -59
  604. package/.claude/skills/sprint-execution/execute-sprint.sh +0 -65
  605. package/.claude/skills/sprint-planner/SKILL.md +0 -37
  606. package/.claude/skills/sprint-planner/plan-sprint.sh +0 -85
  607. package/.claude/skills/sqlite-memory/IMPLEMENTATION_REPORT.md +0 -393
  608. package/.claude/skills/sqlite-memory/QUICK_REFERENCE.md +0 -204
  609. package/.claude/skills/sqlite-memory/SKILL.md +0 -415
  610. package/.claude/skills/sqlite-memory/acl-queries.sql +0 -452
  611. package/.claude/skills/sqlite-memory/check-dependencies.sh +0 -36
  612. package/.claude/skills/sqlite-memory/config.json +0 -45
  613. package/.claude/skills/sqlite-memory/memory-cli.sh +0 -88
  614. package/.claude/skills/sqlite-memory/test-state-persistence.js +0 -187
  615. package/.claude/skills/sqlite-memory/ttl-cleanup.sh +0 -274
  616. package/.claude/skills/standardized-error-handling/SKILL.md +0 -56
  617. package/.claude/skills/standardized-error-handling/capture-agent-error.sh +0 -87
  618. package/.claude/skills/standardized-error-handling/test-error-handling.sh +0 -166
  619. package/.claude/skills/task-classifier/SKILL.md +0 -94
  620. package/.claude/skills/task-classifier/classify-task.sh +0 -115
  621. package/.claude/skills/test-execution/SKILL.md +0 -128
  622. package/.claude/skills/test-execution/check-dependencies.sh +0 -36
  623. package/.claude/skills/test-execution/test-cache-reader.sh +0 -134
  624. package/.claude/skills/test-execution/test-concurrent-conflicts.sh +0 -115
  625. package/.claude/skills/test-execution/test-coordinator-pattern.sh +0 -109
  626. package/.claude/skills/test-execution-coordinator-pattern.md +0 -228
  627. package/.claude/skills/transparency-middleware/Cargo.toml +0 -18
  628. package/.claude/skills/transparency-middleware/SECURITY.md +0 -41
  629. package/.claude/skills/transparency-middleware/SKILL.md +0 -91
  630. package/.claude/skills/transparency-middleware/TEST_RESULTS.md +0 -174
  631. package/.claude/skills/transparency-middleware/config.json +0 -31
  632. package/.claude/skills/transparency-middleware/examples/basic-usage.ts +0 -39
  633. package/.claude/skills/transparency-middleware/examples/batch-processing.ts +0 -52
  634. package/.claude/skills/transparency-middleware/examples/custom-filtering.ts +0 -61
  635. package/.claude/skills/transparency-middleware/invoke-transparency-filter.sh +0 -98
  636. package/.claude/skills/transparency-middleware/invoke-transparency-init.sh +0 -224
  637. package/.claude/skills/transparency-middleware/invoke-transparency-level.sh +0 -333
  638. package/.claude/skills/transparency-middleware/invoke-transparency-metrics.sh +0 -345
  639. package/.claude/skills/transparency-middleware/invoke-transparency-observe.sh +0 -140
  640. package/.claude/skills/transparency-middleware/invoke-transparency-stop.sh +0 -235
  641. package/.claude/skills/transparency-middleware/memory_query.rs +0 -85
  642. package/.claude/skills/transparency-middleware/memory_repository.rs +0 -140
  643. package/.claude/skills/transparency-middleware/memory_schema.rs +0 -64
  644. package/.claude/skills/transparency-middleware/middleware-config.sh +0 -29
  645. package/.claude/skills/transparency-middleware/performance-benchmark.sh +0 -79
  646. package/.claude/skills/transparency-middleware/test-e2e.sh +0 -406
  647. package/.claude/skills/transparency-middleware/test-integration.sh +0 -162
  648. package/.claude/skills/transparency-middleware/test-transparency-skill.sh +0 -368
  649. package/.claude/skills/transparency-middleware/test-transparency-skill.sh.unix +0 -126
  650. package/.claude/skills/transparency-middleware/tests/input-validation.sh +0 -93
  651. package/.claude/skills/transparency-middleware/wrap-agent.sh +0 -132
  652. package/.claude/skills/validation-templates/SKILL.md +0 -47
  653. package/.claude/skills/validation-templates/content.json +0 -38
  654. package/.claude/skills/validation-templates/data.json +0 -38
  655. package/.claude/skills/validation-templates/design.json +0 -38
  656. package/.claude/skills/validation-templates/infrastructure.json +0 -38
  657. package/.claude/skills/validation-templates/research.json +0 -38
  658. package/.claude/skills/validation-templates/software.json +0 -38
  659. package/.claude/skills/web-portal/DESIGN.md +0 -117
  660. package/.claude/skills/web-portal/SKILL.md +0 -679
  661. package/.claude/skills/web-portal/invoke-portal-agents.sh +0 -129
  662. package/.claude/skills/web-portal/invoke-portal-dashboard.sh +0 -85
  663. package/.claude/skills/web-portal/invoke-portal-events.sh +0 -125
  664. package/.claude/skills/web-portal/invoke-portal-metrics.sh +0 -112
  665. package/.claude/skills/web-portal/invoke-portal-start.sh +0 -135
  666. package/.claude/skills/web-portal/invoke-portal-stop.sh +0 -121
  667. package/.claude/skills/web-portal/test-web-portal-skill.sh +0 -51
  668. package/.claude/skills/web-portal/validate-deployment.sh +0 -85
  669. package/.claude/skills/webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +0 -547
  670. package/.claude/skills/webapp-testing/SKILL.md +0 -877
  671. package/.claude/skills/webapp-testing/capture-screenshot.sh +0 -238
  672. package/.claude/skills/webapp-testing/cfn-loop-integration.sh +0 -265
  673. package/.claude/skills/webapp-testing/compare-screenshots.sh +0 -199
  674. package/.claude/skills/webapp-testing/init-storage.sh +0 -150
  675. package/.claude/skills/webapp-testing/set-baseline.sh +0 -196
  676. package/.claude/skills/webapp-testing/test-webapp-testing.sh +0 -233
  677. package/.claude/slash-commands.json +0 -92
  678. package/.claude/spawn-pattern-examples.md +0 -500
  679. package/.claude/sprint-configs/cfn-naming-standardization.json +0 -729
  680. package/.claude/sprint-reports/sprint-1.4-self-correction-monitoring.json +0 -64
  681. package/.claude/swarm-memory.db +0 -0
  682. package/.claude/templates/agent-optimization-plan.md +0 -439
  683. package/.claude/templates/bulk-optimization-strategy.md +0 -367
  684. package/.claude/templates/cfn-loop-mechanics.md +0 -80
  685. package/.claude/templates/coordinator-patterns.md +0 -75
  686. package/.claude/templates/memory-operations.md +0 -200
  687. package/.claude/templates/post-edit-validation.md +0 -109
  688. package/.claude/templates/redis-coordination.md +0 -140
  689. package/.claude/templates/remaining-agent-analysis.md +0 -121
  690. package/.claude/templates/swarm-coordination.md +0 -103
  691. package/.claude/templates/team-dynamics.md +0 -82
  692. package/readme/CLAUDE.md +0 -429
  693. /package/.claude/agents/{coordinators → cfn-dev-team/coordinators}/multi-sprint-coordinator.md +0 -0
  694. /package/.claude/agents/{developers → cfn-dev-team/developers}/backend-dev.md +0 -0
  695. /package/.claude/agents/{developers → cfn-dev-team/developers}/react-frontend-engineer.md +0 -0
  696. /package/.claude/agents/{developers → cfn-dev-team/developers}/researcher.md +0 -0
  697. /package/.claude/agents/{developers → cfn-dev-team/developers}/state-architect.md +0 -0
  698. /package/.claude/agents/{developers → cfn-dev-team/developers}/ui-designer.md +0 -0
  699. /package/.claude/agents/{reviewers → cfn-dev-team/reviewers}/README.md +0 -0
  700. /package/.claude/agents/{testers → cfn-dev-team/testers}/README.md +0 -0
  701. /package/.claude/agents/{testers → cfn-dev-team/testers}/playwright-tester.md +0 -0
  702. /package/.claude/agents/{testers → cfn-dev-team/testers}/tester.md +0 -0
  703. /package/.claude/{data → cfn-data}/cfn-loop.db +0 -0
  704. /package/.claude/{data → cfn-data}/cfn_loop_logs.db +0 -0
  705. /package/.claude/commands/{README.md → cfn/README.md} +0 -0
  706. /package/.claude/commands/{auto-compact.md → cfn/auto-compact.md} +0 -0
  707. /package/.claude/commands/{cfn-claude-sync.md → cfn/cfn-claude-sync.md} +0 -0
  708. /package/.claude/commands/{cfn-loop-document.md → cfn/cfn-loop-document.md} +0 -0
  709. /package/.claude/commands/{cfn-mode.md → cfn/cfn-mode.md} +0 -0
  710. /package/.claude/commands/{claude-md.md → cfn/claude-md.md} +0 -0
  711. /package/.claude/commands/{claude-soul.md → cfn/claude-soul.md} +0 -0
  712. /package/.claude/commands/{context-query.md → cfn/context-query.md} +0 -0
  713. /package/.claude/commands/{cost-savings-off.md → cfn/cost-savings-off.md} +0 -0
  714. /package/.claude/commands/{cost-savings-on.md → cfn/cost-savings-on.md} +0 -0
  715. /package/.claude/commands/{cost-savings-status.md → cfn/cost-savings-status.md} +0 -0
  716. /package/.claude/commands/{custom-routing-activate.md → cfn/custom-routing-activate.md} +0 -0
  717. /package/.claude/commands/{custom-routing-deactivate.md → cfn/custom-routing-deactivate.md} +0 -0
  718. /package/.claude/commands/{dependency-recommendations.md → cfn/dependency-recommendations.md} +0 -0
  719. /package/.claude/commands/{fullstack.md → cfn/fullstack.md} +0 -0
  720. /package/.claude/commands/{github-commit.md → cfn/github-commit.md} +0 -0
  721. /package/.claude/commands/{github.md → cfn/github.md} +0 -0
  722. /package/.claude/commands/{hello-world-tests.md → cfn/hello-world-tests.md} +0 -0
  723. /package/.claude/commands/{hooks.md → cfn/hooks.md} +0 -0
  724. /package/.claude/commands/{launch-web-dashboard.md → cfn/launch-web-dashboard.md} +0 -0
  725. /package/.claude/commands/{metrics-summary.md → cfn/metrics-summary.md} +0 -0
  726. /package/.claude/commands/{neural.md → cfn/neural.md} +0 -0
  727. /package/.claude/commands/{parse-epic.md → cfn/parse-epic.md} +0 -0
  728. /package/.claude/commands/{performance.md → cfn/performance.md} +0 -0
  729. /package/.claude/commands/{sparc.md → cfn/sparc.md} +0 -0
  730. /package/.claude/commands/{suggest-improvements.md → cfn/suggest-improvements.md} +0 -0
  731. /package/.claude/commands/{suggest-templates.md → cfn/suggest-templates.md} +0 -0
  732. /package/.claude/commands/{swarm.md → cfn/swarm.md} +0 -0
  733. /package/.claude/commands/{switch-api.md → cfn/switch-api.md} +0 -0
  734. /package/.claude/commands/{workflow.md → cfn/workflow.md} +0 -0
  735. /package/.claude/commands/{write-plan.md → cfn/write-plan.md} +0 -0
  736. /package/.claude/hooks/{BACKUP_USAGE.md → cfn-BACKUP_USAGE.md} +0 -0
  737. /package/.claude/hooks/{invoke-post-edit.sh → cfn-invoke-post-edit.sh} +0 -0
  738. /package/.claude/hooks/{post-edit-cfn-retrospective.sh → cfn-post-edit-cfn-retrospective.sh} +0 -0
  739. /package/.claude/hooks/{post-edit.config.json → cfn-post-edit.config.json} +0 -0
  740. /package/.claude/hooks/{post-edit.sh → cfn-post-edit.sh} +0 -0
  741. /package/.claude/hooks/{pre-edit-backup.sh → cfn-pre-edit-backup.sh} +0 -0
  742. /package/.claude/hooks/{restore-from-backup.sh → cfn-restore-from-backup.sh} +0 -0
  743. /package/.claude/skills/{agent-spawning → cfn-agent-spawning}/README.md +0 -0
  744. /package/.claude/skills/{analytics → cfn-analytics}/README.md +0 -0
  745. /package/.claude/skills/{config-management → cfn-config-management}/README.md +0 -0
  746. /package/.claude/skills/{event-bus → cfn-event-bus}/README.md +0 -0
  747. /package/.claude/skills/{fleet-manager → cfn-fleet-manager}/README.md +0 -0
  748. /package/.claude/skills/{hook-pipeline → cfn-hook-pipeline}/README.md +0 -0
  749. /package/.claude/skills/{hybrid-routing → cfn-hybrid-routing}/README.md +0 -0
  750. /package/.claude/skills/{process-lifecycle → cfn-process-lifecycle}/README.md +0 -0
  751. /package/.claude/skills/{redis-coordination → cfn-redis-coordination}/README.md +0 -0
  752. /package/.claude/skills/{sqlite-memory → cfn-sqlite-memory}/README.md +0 -0
  753. /package/.claude/skills/{test-execution → cfn-test-execution}/README.md +0 -0
  754. /package/.claude/skills/{transparency-middleware → cfn-transparency-middleware}/README.md +0 -0
  755. /package/.claude/skills/{webapp-testing → cfn-webapp-testing}/README.md +0 -0
@@ -1,1221 +0,0 @@
1
- /**
2
- * Enterprise Configuration Management for Claude-Flow
3
- * Features: Security masking, change tracking, multi-format support, credential management
4
- */ import { promises as fs } from 'fs';
5
- import { join } from 'path';
6
- import { homedir } from 'os';
7
- import { createHash, randomBytes, createCipheriv, createDecipheriv } from 'crypto';
8
- import { safeParseJSON } from '../utils/helpers.js';
9
- import { ConfigError, ValidationError } from '../utils/errors.js';
10
- /**
11
- * Security classifications for configuration paths
12
- */ const SECURITY_CLASSIFICATIONS = {
13
- credentials: {
14
- level: 'secret',
15
- encrypted: true
16
- },
17
- 'credentials.apiKey': {
18
- level: 'secret',
19
- maskPattern: '****...****',
20
- encrypted: true
21
- },
22
- 'credentials.token': {
23
- level: 'secret',
24
- maskPattern: '****...****',
25
- encrypted: true
26
- },
27
- 'credentials.password': {
28
- level: 'secret',
29
- maskPattern: '********',
30
- encrypted: true
31
- },
32
- 'mcp.apiKey': {
33
- level: 'confidential',
34
- maskPattern: '****...****'
35
- },
36
- 'logging.destination': {
37
- level: 'internal'
38
- },
39
- orchestrator: {
40
- level: 'internal'
41
- },
42
- terminal: {
43
- level: 'public'
44
- }
45
- };
46
- /**
47
- * Sensitive configuration paths that should be masked in output
48
- */ const SENSITIVE_PATHS = [
49
- 'credentials',
50
- 'apiKey',
51
- 'token',
52
- 'password',
53
- 'secret',
54
- 'key',
55
- 'auth'
56
- ];
57
- /**
58
- * Format parsers for different configuration file types
59
- */ const FORMAT_PARSERS = {
60
- json: {
61
- parse: JSON.parse,
62
- stringify: (obj)=>JSON.stringify(obj, null, 2),
63
- extension: '.json'
64
- },
65
- yaml: {
66
- parse: (content)=>{
67
- // Simple YAML parser for basic key-value pairs
68
- const lines = content.split('\n');
69
- const result = {};
70
- let current = result;
71
- const stack = [
72
- result
73
- ];
74
- for (const line of lines){
75
- const trimmed = line.trim();
76
- if (!trimmed || trimmed.startsWith('#')) continue;
77
- const indent = line.length - line.trimStart().length;
78
- const colonIndex = trimmed.indexOf(':');
79
- if (colonIndex === -1) continue;
80
- const key = trimmed.substring(0, colonIndex).trim();
81
- const value = trimmed.substring(colonIndex + 1).trim();
82
- // Simple value parsing
83
- let parsedValue = value;
84
- if (value === 'true') parsedValue = true;
85
- else if (value === 'false') parsedValue = false;
86
- else if (!isNaN(Number(value)) && value !== '') parsedValue = Number(value);
87
- else if (value.startsWith('"') && value.endsWith('"')) {
88
- parsedValue = value.slice(1, -1);
89
- }
90
- current[key] = parsedValue;
91
- }
92
- return result;
93
- },
94
- stringify: (obj)=>{
95
- const stringify = (obj, indent = 0)=>{
96
- const spaces = ' '.repeat(indent);
97
- let result = '';
98
- for (const [key, value] of Object.entries(obj)){
99
- if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
100
- result += `${spaces}${key}:\n${stringify(value, indent + 1)}`;
101
- } else {
102
- const formattedValue = typeof value === 'string' ? `"${value}"` : String(value);
103
- result += `${spaces}${key}: ${formattedValue}\n`;
104
- }
105
- }
106
- return result;
107
- };
108
- return stringify(obj);
109
- },
110
- extension: '.yaml'
111
- },
112
- toml: {
113
- parse: (content)=>{
114
- // Simple TOML parser for basic sections and key-value pairs
115
- const lines = content.split('\n');
116
- const result = {};
117
- let currentSection = result;
118
- for (const line of lines){
119
- const trimmed = line.trim();
120
- if (!trimmed || trimmed.startsWith('#')) continue;
121
- // Section header
122
- if (trimmed.startsWith('[') && trimmed.endsWith(']')) {
123
- const sectionName = trimmed.slice(1, -1);
124
- currentSection = result[sectionName] = {};
125
- continue;
126
- }
127
- // Key-value pair
128
- const equalsIndex = trimmed.indexOf('=');
129
- if (equalsIndex === -1) continue;
130
- const key = trimmed.substring(0, equalsIndex).trim();
131
- const value = trimmed.substring(equalsIndex + 1).trim();
132
- // Simple value parsing
133
- let parsedValue = value;
134
- if (value === 'true') parsedValue = true;
135
- else if (value === 'false') parsedValue = false;
136
- else if (!isNaN(Number(value)) && value !== '') parsedValue = Number(value);
137
- else if (value.startsWith('"') && value.endsWith('"')) {
138
- parsedValue = value.slice(1, -1);
139
- }
140
- currentSection[key] = parsedValue;
141
- }
142
- return result;
143
- },
144
- stringify: (obj)=>{
145
- let result = '';
146
- for (const [section, values] of Object.entries(obj)){
147
- if (typeof values === 'object' && values !== null && !Array.isArray(values)) {
148
- result += `[${section}]\n`;
149
- for (const [key, value] of Object.entries(values)){
150
- const formattedValue = typeof value === 'string' ? `"${value}"` : String(value);
151
- result += `${key} = ${formattedValue}\n`;
152
- }
153
- result += '\n';
154
- }
155
- }
156
- return result;
157
- },
158
- extension: '.toml'
159
- }
160
- };
161
- /**
162
- * Default configuration values
163
- */ const DEFAULT_CONFIG = {
164
- orchestrator: {
165
- maxConcurrentAgents: 10,
166
- taskQueueSize: 100,
167
- healthCheckInterval: 30000,
168
- shutdownTimeout: 30000
169
- },
170
- terminal: {
171
- type: 'auto',
172
- poolSize: 5,
173
- recycleAfter: 10,
174
- healthCheckInterval: 60000,
175
- commandTimeout: 300000
176
- },
177
- memory: {
178
- backend: 'hybrid',
179
- cacheSizeMB: 100,
180
- syncInterval: 5000,
181
- conflictResolution: 'crdt',
182
- retentionDays: 30
183
- },
184
- coordination: {
185
- maxRetries: 3,
186
- retryDelay: 1000,
187
- deadlockDetection: true,
188
- resourceTimeout: 60000,
189
- messageTimeout: 30000
190
- },
191
- mcp: {
192
- transport: 'stdio',
193
- port: 3000,
194
- tlsEnabled: false
195
- },
196
- logging: {
197
- level: 'info',
198
- format: 'json',
199
- destination: 'console'
200
- },
201
- credentials: {
202
- },
203
- security: {
204
- encryptionEnabled: true,
205
- auditLogging: true,
206
- maskSensitiveValues: true,
207
- allowEnvironmentOverrides: true
208
- }
209
- };
210
- /**
211
- * Configuration manager
212
- */ export class ConfigManager {
213
- static instance;
214
- config;
215
- configPath;
216
- profiles = new Map();
217
- currentProfile;
218
- userConfigDir;
219
- changeHistory = [];
220
- encryptionKey;
221
- validationRules = new Map();
222
- formatParsers = FORMAT_PARSERS;
223
- constructor(){
224
- this.config = deepClone(DEFAULT_CONFIG);
225
- this.userConfigDir = this.getUserConfigDir();
226
- this.setupValidationRules();
227
- // Encryption will be initialized via init() method
228
- }
229
- /**
230
- * Gets the singleton instance
231
- */ static getInstance() {
232
- if (!ConfigManager.instance) {
233
- ConfigManager.instance = new ConfigManager();
234
- }
235
- return ConfigManager.instance;
236
- }
237
- /**
238
- * Initialize async components
239
- */ async init() {
240
- await this.initializeEncryption();
241
- }
242
- /**
243
- * Initializes encryption for sensitive configuration values
244
- */ async initializeEncryption() {
245
- try {
246
- const keyFile = join(this.userConfigDir, '.encryption-key');
247
- // Check if key file exists (simplified for demo)
248
- try {
249
- await fs.access(keyFile);
250
- // In a real implementation, this would be more secure
251
- this.encryptionKey = randomBytes(32);
252
- } catch {
253
- this.encryptionKey = randomBytes(32);
254
- // Store key securely (in production, use proper key management)
255
- }
256
- } catch (error) {
257
- console.warn('Failed to initialize encryption:', error.message);
258
- }
259
- }
260
- /**
261
- * Sets up validation rules for configuration paths
262
- */ setupValidationRules() {
263
- // Orchestrator validation rules
264
- this.validationRules.set('orchestrator.maxConcurrentAgents', {
265
- type: 'number',
266
- required: true,
267
- min: 1,
268
- max: 100,
269
- validator: (value, config)=>{
270
- if (value > config.terminal?.poolSize * 2) {
271
- return 'maxConcurrentAgents should not exceed 2x terminal pool size';
272
- }
273
- return null;
274
- }
275
- });
276
- this.validationRules.set('orchestrator.taskQueueSize', {
277
- type: 'number',
278
- required: true,
279
- min: 1,
280
- max: 10000,
281
- dependencies: [
282
- 'orchestrator.maxConcurrentAgents'
283
- ],
284
- validator: (value, config)=>{
285
- const maxAgents = config.orchestrator?.maxConcurrentAgents || 1;
286
- if (value < maxAgents * 10) {
287
- return 'taskQueueSize should be at least 10x maxConcurrentAgents';
288
- }
289
- return null;
290
- }
291
- });
292
- // Terminal validation rules
293
- this.validationRules.set('terminal.type', {
294
- type: 'string',
295
- required: true,
296
- values: [
297
- 'auto',
298
- 'vscode',
299
- 'native'
300
- ]
301
- });
302
- this.validationRules.set('terminal.poolSize', {
303
- type: 'number',
304
- required: true,
305
- min: 1,
306
- max: 50
307
- });
308
- // Memory validation rules
309
- this.validationRules.set('memory.backend', {
310
- type: 'string',
311
- required: true,
312
- values: [
313
- 'sqlite',
314
- 'markdown',
315
- 'hybrid'
316
- ]
317
- });
318
- this.validationRules.set('memory.cacheSizeMB', {
319
- type: 'number',
320
- required: true,
321
- min: 1,
322
- max: 10000,
323
- validator: (value)=>{
324
- if (value > 1000) {
325
- return 'Large cache sizes may impact system performance';
326
- }
327
- return null;
328
- }
329
- });
330
- // Security validation rules
331
- this.validationRules.set('security.encryptionEnabled', {
332
- type: 'boolean',
333
- required: true
334
- });
335
- // Credentials validation
336
- this.validationRules.set('credentials.apiKey', {
337
- type: 'string',
338
- pattern: /^[a-zA-Z0-9_-]+$/,
339
- validator: (value)=>{
340
- if (value && value.length < 16) {
341
- return 'API key should be at least 16 characters long';
342
- }
343
- return null;
344
- }
345
- });
346
- }
347
- /**
348
- * Loads configuration from various sources
349
- */ async load(configPath) {
350
- if (configPath !== undefined) {
351
- this.configPath = configPath;
352
- }
353
- // Start with defaults
354
- let config = deepClone(DEFAULT_CONFIG);
355
- // Load from file if specified
356
- if (configPath) {
357
- const fileConfig = await this.loadFromFile(configPath);
358
- config = deepMergeConfig(config, fileConfig);
359
- }
360
- // Load from environment variables
361
- const envConfig = this.loadFromEnv();
362
- config = deepMergeConfig(config, envConfig);
363
- // Validate the final configuration
364
- this.validate(config);
365
- this.config = config;
366
- return config;
367
- }
368
- /**
369
- * Gets the current configuration with optional security masking
370
- */ get(maskSensitive = false) {
371
- const config = deepClone(this.config);
372
- if (maskSensitive && this.config.security?.maskSensitiveValues) {
373
- return this.maskSensitiveValues(config);
374
- }
375
- return config;
376
- }
377
- /**
378
- * Gets configuration with security masking applied
379
- */ getSecure() {
380
- return this.get(true);
381
- }
382
- /**
383
- * Gets all configuration values (alias for get method for backward compatibility)
384
- */ async getAll() {
385
- return this.get();
386
- }
387
- /**
388
- * Updates configuration values with change tracking
389
- */ update(updates, options = {}) {
390
- const oldConfig = deepClone(this.config);
391
- // Track changes before applying
392
- this.trackChanges(oldConfig, updates, options);
393
- // Apply updates
394
- this.config = deepMergeConfig(this.config, updates);
395
- // Validate the updated configuration
396
- this.validateWithDependencies(this.config);
397
- return this.get();
398
- }
399
- /**
400
- * Loads default configuration
401
- */ loadDefault() {
402
- this.config = deepClone(DEFAULT_CONFIG);
403
- }
404
- /**
405
- * Saves configuration to file with format support
406
- */ async save(path, format) {
407
- const savePath = path || this.configPath;
408
- if (!savePath) {
409
- throw new ConfigError('No configuration file path specified');
410
- }
411
- const detectedFormat = format || this.detectFormat(savePath);
412
- const parser = this.formatParsers[detectedFormat];
413
- if (!parser) {
414
- throw new ConfigError(`Unsupported format for saving: ${detectedFormat}`);
415
- }
416
- // Get configuration without sensitive values for saving
417
- const configToSave = this.getConfigForSaving();
418
- const content = parser.stringify(configToSave);
419
- await fs.writeFile(savePath, content, 'utf8');
420
- // Record the save operation
421
- this.recordChange({
422
- timestamp: new Date().toISOString(),
423
- path: 'CONFIG_SAVED',
424
- oldValue: null,
425
- newValue: savePath,
426
- source: 'file'
427
- });
428
- }
429
- /**
430
- * Gets configuration suitable for saving (excludes runtime-only values)
431
- */ getConfigForSaving() {
432
- const config = deepClone(this.config);
433
- // Remove encrypted credentials from the saved config
434
- // They should be stored separately in a secure location
435
- if (config.credentials) {
436
- delete config.credentials;
437
- }
438
- return config;
439
- }
440
- /**
441
- * Gets user configuration directory
442
- */ getUserConfigDir() {
443
- const home = homedir();
444
- return join(home, '.claude-flow');
445
- }
446
- /**
447
- * Creates user config directory if it doesn't exist
448
- */ async ensureUserConfigDir() {
449
- try {
450
- await fs.mkdir(this.userConfigDir, {
451
- recursive: true
452
- });
453
- } catch (error) {
454
- if (error.code !== 'EEXIST') {
455
- throw new ConfigError(`Failed to create config directory: ${error.message}`);
456
- }
457
- }
458
- }
459
- /**
460
- * Loads all profiles from the profiles directory
461
- */ async loadProfiles() {
462
- const profilesDir = join(this.userConfigDir, 'profiles');
463
- try {
464
- const entries = await fs.readdir(profilesDir, {
465
- withFileTypes: true
466
- });
467
- for (const entry of entries){
468
- if (entry.isFile() && entry.name.endsWith('.json')) {
469
- const profileName = entry.name.replace('.json', '');
470
- const profilePath = join(profilesDir, entry.name);
471
- try {
472
- const content = await fs.readFile(profilePath, 'utf8');
473
- const profileConfig = safeParseJSON(content);
474
- if (profileConfig) {
475
- this.profiles.set(profileName, profileConfig);
476
- }
477
- } catch (error) {
478
- console.warn(`Failed to load profile ${profileName}: ${error.message}`);
479
- }
480
- }
481
- }
482
- } catch (error) {
483
- // Profiles directory doesn't exist - this is okay
484
- }
485
- }
486
- /**
487
- * Applies a named profile
488
- */ async applyProfile(profileName) {
489
- await this.loadProfiles();
490
- const profile = this.profiles.get(profileName);
491
- if (!profile) {
492
- throw new ConfigError(`Profile '${profileName}' not found`);
493
- }
494
- this.config = deepMergeConfig(this.config, profile);
495
- this.currentProfile = profileName;
496
- this.validate(this.config);
497
- }
498
- /**
499
- * Saves current configuration as a profile
500
- */ async saveProfile(profileName, config) {
501
- await this.ensureUserConfigDir();
502
- const profilesDir = join(this.userConfigDir, 'profiles');
503
- await fs.mkdir(profilesDir, {
504
- recursive: true
505
- });
506
- const profileConfig = config || this.config;
507
- const profilePath = join(profilesDir, `${profileName}.json`);
508
- const content = JSON.stringify(profileConfig, null, 2);
509
- await fs.writeFile(profilePath, content, 'utf8');
510
- this.profiles.set(profileName, profileConfig);
511
- }
512
- /**
513
- * Deletes a profile
514
- */ async deleteProfile(profileName) {
515
- const profilePath = join(this.userConfigDir, 'profiles', `${profileName}.json`);
516
- try {
517
- await fs.unlink(profilePath);
518
- this.profiles.delete(profileName);
519
- } catch (error) {
520
- if (error.code === 'ENOENT') {
521
- throw new ConfigError(`Profile '${profileName}' not found`);
522
- }
523
- throw new ConfigError(`Failed to delete profile: ${error.message}`);
524
- }
525
- }
526
- /**
527
- * Lists all available profiles
528
- */ async listProfiles() {
529
- await this.loadProfiles();
530
- return Array.from(this.profiles.keys());
531
- }
532
- /**
533
- * Gets a specific profile configuration
534
- */ async getProfile(profileName) {
535
- await this.loadProfiles();
536
- return this.profiles.get(profileName);
537
- }
538
- /**
539
- * Gets the current active profile name
540
- */ getCurrentProfile() {
541
- return this.currentProfile;
542
- }
543
- /**
544
- * Sets a configuration value by path with change tracking and validation
545
- */ set(path, value, options = {}) {
546
- const oldValue = this.getValue(path);
547
- // Record the change
548
- this.recordChange({
549
- timestamp: new Date().toISOString(),
550
- path,
551
- oldValue,
552
- newValue: value,
553
- user: options.user,
554
- reason: options.reason,
555
- source: options.source || 'cli'
556
- });
557
- // Encrypt sensitive values
558
- if (this.isSensitivePath(path) && this.config.security?.encryptionEnabled) {
559
- value = this.encryptValue(value);
560
- }
561
- const keys = path.split('.');
562
- let current = this.config;
563
- for(let i = 0; i < keys.length - 1; i++){
564
- const key = keys[i];
565
- if (!(key in current)) {
566
- current[key] = {};
567
- }
568
- current = current[key];
569
- }
570
- current[keys[keys.length - 1]] = value;
571
- // Validate the path-specific rule and dependencies
572
- this.validatePath(path, value);
573
- this.validateWithDependencies(this.config);
574
- }
575
- /**
576
- * Gets a configuration value by path with decryption for sensitive values
577
- */ getValue(path, decrypt = true) {
578
- const keys = path.split('.');
579
- let current = this.config;
580
- for (const key of keys){
581
- if (current && typeof current === 'object' && key in current) {
582
- current = current[key];
583
- } else {
584
- return undefined;
585
- }
586
- }
587
- // Decrypt sensitive values if requested
588
- if (decrypt && this.isSensitivePath(path) && this.isEncryptedValue(current)) {
589
- try {
590
- return this.decryptValue(current);
591
- } catch (error) {
592
- console.warn(`Failed to decrypt value at path ${path}:`, error.message);
593
- return current;
594
- }
595
- }
596
- return current;
597
- }
598
- /**
599
- * Resets configuration to defaults
600
- */ reset() {
601
- this.config = deepClone(DEFAULT_CONFIG);
602
- delete this.currentProfile;
603
- }
604
- /**
605
- * Gets configuration schema for validation
606
- */ getSchema() {
607
- return {
608
- orchestrator: {
609
- maxConcurrentAgents: {
610
- type: 'number',
611
- min: 1,
612
- max: 100
613
- },
614
- taskQueueSize: {
615
- type: 'number',
616
- min: 1,
617
- max: 10000
618
- },
619
- healthCheckInterval: {
620
- type: 'number',
621
- min: 1000,
622
- max: 300000
623
- },
624
- shutdownTimeout: {
625
- type: 'number',
626
- min: 1000,
627
- max: 300000
628
- }
629
- },
630
- terminal: {
631
- type: {
632
- type: 'string',
633
- values: [
634
- 'auto',
635
- 'vscode',
636
- 'native'
637
- ]
638
- },
639
- poolSize: {
640
- type: 'number',
641
- min: 1,
642
- max: 50
643
- },
644
- recycleAfter: {
645
- type: 'number',
646
- min: 1,
647
- max: 1000
648
- },
649
- healthCheckInterval: {
650
- type: 'number',
651
- min: 1000,
652
- max: 3600000
653
- },
654
- commandTimeout: {
655
- type: 'number',
656
- min: 1000,
657
- max: 3600000
658
- }
659
- },
660
- memory: {
661
- backend: {
662
- type: 'string',
663
- values: [
664
- 'sqlite',
665
- 'markdown',
666
- 'hybrid'
667
- ]
668
- },
669
- cacheSizeMB: {
670
- type: 'number',
671
- min: 1,
672
- max: 10000
673
- },
674
- syncInterval: {
675
- type: 'number',
676
- min: 1000,
677
- max: 300000
678
- },
679
- conflictResolution: {
680
- type: 'string',
681
- values: [
682
- 'crdt',
683
- 'timestamp',
684
- 'manual'
685
- ]
686
- },
687
- retentionDays: {
688
- type: 'number',
689
- min: 1,
690
- max: 3650
691
- }
692
- },
693
- coordination: {
694
- maxRetries: {
695
- type: 'number',
696
- min: 0,
697
- max: 100
698
- },
699
- retryDelay: {
700
- type: 'number',
701
- min: 100,
702
- max: 60000
703
- },
704
- deadlockDetection: {
705
- type: 'boolean'
706
- },
707
- resourceTimeout: {
708
- type: 'number',
709
- min: 1000,
710
- max: 3600000
711
- },
712
- messageTimeout: {
713
- type: 'number',
714
- min: 1000,
715
- max: 300000
716
- }
717
- },
718
- mcp: {
719
- transport: {
720
- type: 'string',
721
- values: [
722
- 'stdio',
723
- 'http',
724
- 'websocket'
725
- ]
726
- },
727
- port: {
728
- type: 'number',
729
- min: 1,
730
- max: 65535
731
- },
732
- tlsEnabled: {
733
- type: 'boolean'
734
- }
735
- },
736
- logging: {
737
- level: {
738
- type: 'string',
739
- values: [
740
- 'debug',
741
- 'info',
742
- 'warn',
743
- 'error'
744
- ]
745
- },
746
- format: {
747
- type: 'string',
748
- values: [
749
- 'json',
750
- 'text'
751
- ]
752
- },
753
- destination: {
754
- type: 'string',
755
- values: [
756
- 'console',
757
- 'file'
758
- ]
759
- }
760
- }
761
- };
762
- }
763
- /**
764
- * Validates a value against schema
765
- */ validateValue(value, schema, path) {
766
- if (schema.type === 'number') {
767
- if (typeof value !== 'number' || isNaN(value)) {
768
- throw new ValidationError(`${path}: must be a number`);
769
- }
770
- if (schema.min !== undefined && value < schema.min) {
771
- throw new ValidationError(`${path}: must be at least ${schema.min}`);
772
- }
773
- if (schema.max !== undefined && value > schema.max) {
774
- throw new ValidationError(`${path}: must be at most ${schema.max}`);
775
- }
776
- } else if (schema.type === 'string') {
777
- if (typeof value !== 'string') {
778
- throw new ValidationError(`${path}: must be a string`);
779
- }
780
- if (schema.values && !schema.values.includes(value)) {
781
- throw new ValidationError(`${path}: must be one of [${schema.values.join(', ')}]`);
782
- }
783
- } else if (schema.type === 'boolean') {
784
- if (typeof value !== 'boolean') {
785
- throw new ValidationError(`${path}: must be a boolean`);
786
- }
787
- }
788
- }
789
- /**
790
- * Gets configuration diff between current and default
791
- */ getDiff() {
792
- const defaultConfig = DEFAULT_CONFIG;
793
- const diff = {};
794
- const findDifferences = (current, defaults, path = '')=>{
795
- for(const key in current){
796
- const currentValue = current[key];
797
- const defaultValue = defaults[key];
798
- const fullPath = path ? `${path}.${key}` : key;
799
- if (typeof currentValue === 'object' && currentValue !== null && !Array.isArray(currentValue)) {
800
- if (typeof defaultValue === 'object' && defaultValue !== null) {
801
- const nestedDiff = {};
802
- findDifferences(currentValue, defaultValue, fullPath);
803
- if (Object.keys(nestedDiff).length > 0) {
804
- if (!path) {
805
- diff[key] = nestedDiff;
806
- }
807
- }
808
- }
809
- } else if (currentValue !== defaultValue) {
810
- const pathParts = fullPath.split('.');
811
- let target = diff;
812
- for(let i = 0; i < pathParts.length - 1; i++){
813
- if (!target[pathParts[i]]) {
814
- target[pathParts[i]] = {};
815
- }
816
- target = target[pathParts[i]];
817
- }
818
- target[pathParts[pathParts.length - 1]] = currentValue;
819
- }
820
- }
821
- };
822
- findDifferences(this.config, defaultConfig);
823
- return diff;
824
- }
825
- /**
826
- * Exports configuration with metadata
827
- */ export() {
828
- return {
829
- version: '1.0.0',
830
- exported: new Date().toISOString(),
831
- profile: this.currentProfile,
832
- config: this.config,
833
- diff: this.getDiff()
834
- };
835
- }
836
- /**
837
- * Imports configuration from export
838
- */ import(data) {
839
- if (!data.config) {
840
- throw new ConfigError('Invalid configuration export format');
841
- }
842
- this.validateWithDependencies(data.config);
843
- this.config = data.config;
844
- this.currentProfile = data.profile;
845
- // Record the import operation
846
- this.recordChange({
847
- timestamp: new Date().toISOString(),
848
- path: 'CONFIG_IMPORTED',
849
- oldValue: null,
850
- newValue: data.version || 'unknown',
851
- source: 'file'
852
- });
853
- }
854
- /**
855
- * Loads configuration from file with format detection
856
- */ async loadFromFile(path) {
857
- try {
858
- const content = await fs.readFile(path, 'utf8');
859
- const format = this.detectFormat(path, content);
860
- const parser = this.formatParsers[format];
861
- if (!parser) {
862
- throw new ConfigError(`Unsupported configuration format: ${format}`);
863
- }
864
- const config = parser.parse(content);
865
- if (!config) {
866
- throw new ConfigError(`Invalid ${format.toUpperCase()} in configuration file: ${path}`);
867
- }
868
- return config;
869
- } catch (error) {
870
- if (error.code === 'ENOENT') {
871
- // File doesn't exist, use defaults
872
- return {};
873
- }
874
- throw new ConfigError(`Failed to load configuration from ${path}: ${error.message}`);
875
- }
876
- }
877
- /**
878
- * Detects configuration file format
879
- */ detectFormat(path, content) {
880
- const ext = path.split('.').pop()?.toLowerCase();
881
- if (ext === 'yaml' || ext === 'yml') return 'yaml';
882
- if (ext === 'toml') return 'toml';
883
- if (ext === 'json') return 'json';
884
- // Try to detect from content
885
- if (content) {
886
- const trimmed = content.trim();
887
- if (trimmed.startsWith('{') || trimmed.startsWith('[')) return 'json';
888
- if (trimmed.includes('=') && trimmed.includes('[')) return 'toml';
889
- if (trimmed.includes(':') && !trimmed.includes('=')) return 'yaml';
890
- }
891
- // Default to JSON
892
- return 'json';
893
- }
894
- /**
895
- * Loads configuration from environment variables
896
- */ loadFromEnv() {
897
- const config = {};
898
- // Orchestrator settings
899
- const maxAgents = process.env.CLAUDE_FLOW_MAX_AGENTS;
900
- if (maxAgents) {
901
- if (!config.orchestrator) {
902
- config.orchestrator = {};
903
- }
904
- config.orchestrator = {
905
- ...DEFAULT_CONFIG.orchestrator,
906
- ...config.orchestrator,
907
- maxConcurrentAgents: parseInt(maxAgents, 10)
908
- };
909
- }
910
- // Terminal settings
911
- const terminalType = process.env.CLAUDE_FLOW_TERMINAL_TYPE;
912
- if (terminalType === 'vscode' || terminalType === 'native' || terminalType === 'auto') {
913
- config.terminal = {
914
- ...DEFAULT_CONFIG.terminal,
915
- ...config.terminal,
916
- type: terminalType
917
- };
918
- }
919
- // Memory settings
920
- const memoryBackend = process.env.CLAUDE_FLOW_MEMORY_BACKEND;
921
- if (memoryBackend === 'sqlite' || memoryBackend === 'markdown' || memoryBackend === 'hybrid') {
922
- config.memory = {
923
- ...DEFAULT_CONFIG.memory,
924
- ...config.memory,
925
- backend: memoryBackend
926
- };
927
- }
928
- // MCP settings
929
- const mcpTransport = process.env.CLAUDE_FLOW_MCP_TRANSPORT;
930
- if (mcpTransport === 'stdio' || mcpTransport === 'http' || mcpTransport === 'websocket') {
931
- config.mcp = {
932
- ...DEFAULT_CONFIG.mcp,
933
- ...config.mcp,
934
- transport: mcpTransport
935
- };
936
- }
937
- const mcpPort = process.env.CLAUDE_FLOW_MCP_PORT;
938
- if (mcpPort) {
939
- config.mcp = {
940
- ...DEFAULT_CONFIG.mcp,
941
- ...config.mcp,
942
- port: parseInt(mcpPort, 10)
943
- };
944
- }
945
- // Logging settings
946
- const logLevel = process.env.CLAUDE_FLOW_LOG_LEVEL;
947
- if (logLevel === 'debug' || logLevel === 'info' || logLevel === 'warn' || logLevel === 'error') {
948
- config.logging = {
949
- ...DEFAULT_CONFIG.logging,
950
- ...config.logging,
951
- level: logLevel
952
- };
953
- }
954
- return config;
955
- }
956
- /**
957
- * Validates configuration with dependency checking
958
- */ validateWithDependencies(config) {
959
- const errors = [];
960
- const warnings = [];
961
- // Validate all paths with rules
962
- for (const [path, rule] of this.validationRules.entries()){
963
- const value = this.getValueByPath(config, path);
964
- try {
965
- this.validatePath(path, value, config);
966
- } catch (error) {
967
- errors.push(error.message);
968
- }
969
- }
970
- // Additional cross-field validations
971
- if (config.orchestrator.maxConcurrentAgents > config.terminal.poolSize * 3) {
972
- warnings.push('High agent-to-terminal ratio may cause resource contention');
973
- }
974
- if (config.memory.cacheSizeMB > 1000 && config.memory.backend === 'sqlite') {
975
- warnings.push('Large cache size with SQLite backend may impact performance');
976
- }
977
- if (config.mcp.transport === 'http' && !config.mcp.tlsEnabled) {
978
- warnings.push('HTTP transport without TLS is not recommended for production');
979
- }
980
- // Log warnings
981
- if (warnings.length > 0 && config.logging?.level === 'debug') {
982
- console.warn('Configuration warnings:', warnings);
983
- }
984
- // Throw errors
985
- if (errors.length > 0) {
986
- throw new ValidationError(`Configuration validation failed:\n${errors.join('\n')}`);
987
- }
988
- }
989
- /**
990
- * Validates a specific configuration path
991
- */ validatePath(path, value, config) {
992
- const rule = this.validationRules.get(path);
993
- if (!rule) return;
994
- const currentConfig = config || this.config;
995
- // Required validation
996
- if (rule.required && (value === undefined || value === null)) {
997
- throw new ValidationError(`${path} is required`);
998
- }
999
- if (value === undefined || value === null) return;
1000
- // Type validation
1001
- if (rule.type === 'number' && (typeof value !== 'number' || isNaN(value))) {
1002
- throw new ValidationError(`${path} must be a number`);
1003
- }
1004
- if (rule.type === 'string' && typeof value !== 'string') {
1005
- throw new ValidationError(`${path} must be a string`);
1006
- }
1007
- if (rule.type === 'boolean' && typeof value !== 'boolean') {
1008
- throw new ValidationError(`${path} must be a boolean`);
1009
- }
1010
- // Range validation
1011
- if (typeof value === 'number') {
1012
- if (rule.min !== undefined && value < rule.min) {
1013
- throw new ValidationError(`${path} must be at least ${rule.min}`);
1014
- }
1015
- if (rule.max !== undefined && value > rule.max) {
1016
- throw new ValidationError(`${path} must be at most ${rule.max}`);
1017
- }
1018
- }
1019
- // Values validation
1020
- if (rule.values && !rule.values.includes(value)) {
1021
- throw new ValidationError(`${path} must be one of: ${rule.values.join(', ')}`);
1022
- }
1023
- // Pattern validation
1024
- if (rule.pattern && typeof value === 'string' && !rule.pattern.test(value)) {
1025
- throw new ValidationError(`${path} does not match required pattern`);
1026
- }
1027
- // Custom validator
1028
- if (rule.validator) {
1029
- const result = rule.validator(value, currentConfig);
1030
- if (result) {
1031
- throw new ValidationError(`${path}: ${result}`);
1032
- }
1033
- }
1034
- }
1035
- /**
1036
- * Gets a value from a configuration object by path
1037
- */ getValueByPath(obj, path) {
1038
- const keys = path.split('.');
1039
- let current = obj;
1040
- for (const key of keys){
1041
- if (current && typeof current === 'object' && key in current) {
1042
- current = current[key];
1043
- } else {
1044
- return undefined;
1045
- }
1046
- }
1047
- return current;
1048
- }
1049
- /**
1050
- * Legacy validate method for backward compatibility
1051
- */ validate(config) {
1052
- this.validateWithDependencies(config);
1053
- }
1054
- /**
1055
- * Masks sensitive values in configuration
1056
- */ maskSensitiveValues(config) {
1057
- const maskedConfig = deepClone(config);
1058
- // Recursively mask sensitive paths
1059
- const maskObject = (obj, path = '')=>{
1060
- if (!obj || typeof obj !== 'object') return obj;
1061
- const masked = {};
1062
- for (const [key, value] of Object.entries(obj)){
1063
- const currentPath = path ? `${path}.${key}` : key;
1064
- if (this.isSensitivePath(currentPath)) {
1065
- const classification = SECURITY_CLASSIFICATIONS[currentPath];
1066
- masked[key] = classification?.maskPattern || '****';
1067
- } else if (typeof value === 'object' && value !== null) {
1068
- masked[key] = maskObject(value, currentPath);
1069
- } else {
1070
- masked[key] = value;
1071
- }
1072
- }
1073
- return masked;
1074
- };
1075
- return maskObject(maskedConfig);
1076
- }
1077
- /**
1078
- * Tracks changes to configuration
1079
- */ trackChanges(oldConfig, updates, options) {
1080
- // Simple implementation for tracking changes
1081
- for (const [key, value] of Object.entries(updates)){
1082
- this.recordChange({
1083
- timestamp: new Date().toISOString(),
1084
- path: key,
1085
- oldValue: oldConfig[key],
1086
- newValue: value,
1087
- user: options.user,
1088
- reason: options.reason,
1089
- source: options.source || 'cli'
1090
- });
1091
- }
1092
- }
1093
- /**
1094
- * Records a configuration change
1095
- */ recordChange(change) {
1096
- this.changeHistory.push(change);
1097
- // Keep only last 1000 changes
1098
- if (this.changeHistory.length > 1000) {
1099
- this.changeHistory.shift();
1100
- }
1101
- }
1102
- /**
1103
- * Checks if a path contains sensitive information
1104
- */ isSensitivePath(path) {
1105
- return SENSITIVE_PATHS.some((sensitive)=>path.toLowerCase().includes(sensitive.toLowerCase()));
1106
- }
1107
- /**
1108
- * Encrypts a sensitive value
1109
- */ encryptValue(value) {
1110
- if (!this.encryptionKey) {
1111
- return value; // Return original if encryption not available
1112
- }
1113
- try {
1114
- // Simplified encryption - in production use proper encryption
1115
- const iv = randomBytes(16);
1116
- const key = createHash('sha256').update(this.encryptionKey).digest();
1117
- const cipher = createCipheriv('aes-256-cbc', key, iv);
1118
- let encrypted = cipher.update(JSON.stringify(value), 'utf8', 'hex');
1119
- encrypted += cipher.final('hex');
1120
- return `encrypted:${iv.toString('hex')}:${encrypted}`;
1121
- } catch (error) {
1122
- console.warn('Failed to encrypt value:', error.message);
1123
- return value;
1124
- }
1125
- }
1126
- /**
1127
- * Decrypts a sensitive value
1128
- */ decryptValue(encryptedValue) {
1129
- if (!this.encryptionKey || !this.isEncryptedValue(encryptedValue)) {
1130
- return encryptedValue;
1131
- }
1132
- try {
1133
- const parts = encryptedValue.replace('encrypted:', '').split(':');
1134
- if (parts.length !== 2) return encryptedValue; // Handle old format
1135
- const iv = Buffer.from(parts[0], 'hex');
1136
- const encrypted = parts[1];
1137
- const key = createHash('sha256').update(this.encryptionKey).digest();
1138
- const decipher = createDecipheriv('aes-256-cbc', key, iv);
1139
- let decrypted = decipher.update(encrypted, 'hex', 'utf8');
1140
- decrypted += decipher.final('utf8');
1141
- return JSON.parse(decrypted);
1142
- } catch (error) {
1143
- console.warn('Failed to decrypt value:', error.message);
1144
- return encryptedValue;
1145
- }
1146
- }
1147
- /**
1148
- * Checks if a value is encrypted
1149
- */ isEncryptedValue(value) {
1150
- return typeof value === 'string' && value.startsWith('encrypted:');
1151
- }
1152
- }
1153
- // Export singleton instance
1154
- export const configManager = ConfigManager.getInstance();
1155
- // Helper function to load configuration
1156
- export async function loadConfig(path) {
1157
- return await configManager.load(path);
1158
- }
1159
- function deepClone(obj) {
1160
- return JSON.parse(JSON.stringify(obj));
1161
- }
1162
- export { SENSITIVE_PATHS, SECURITY_CLASSIFICATIONS };
1163
- // Custom deepMerge for Config type
1164
- function deepMergeConfig(target, ...sources) {
1165
- const result = deepClone(target);
1166
- for (const source of sources){
1167
- if (!source) continue;
1168
- // Merge each section
1169
- if (source.orchestrator) {
1170
- result.orchestrator = {
1171
- ...result.orchestrator,
1172
- ...source.orchestrator
1173
- };
1174
- }
1175
- if (source.terminal) {
1176
- result.terminal = {
1177
- ...result.terminal,
1178
- ...source.terminal
1179
- };
1180
- }
1181
- if (source.memory) {
1182
- result.memory = {
1183
- ...result.memory,
1184
- ...source.memory
1185
- };
1186
- }
1187
- if (source.coordination) {
1188
- result.coordination = {
1189
- ...result.coordination,
1190
- ...source.coordination
1191
- };
1192
- }
1193
- if (source.mcp) {
1194
- result.mcp = {
1195
- ...result.mcp,
1196
- ...source.mcp
1197
- };
1198
- }
1199
- if (source.logging) {
1200
- result.logging = {
1201
- ...result.logging,
1202
- ...source.logging
1203
- };
1204
- }
1205
- if (source.credentials) {
1206
- result.credentials = {
1207
- ...result.credentials,
1208
- ...source.credentials
1209
- };
1210
- }
1211
- if (source.security) {
1212
- result.security = {
1213
- ...result.security,
1214
- ...source.security
1215
- };
1216
- }
1217
- }
1218
- return result;
1219
- }
1220
-
1221
- //# sourceMappingURL=config.js.map