@claude-flow/cli 3.0.0-alpha.2 → 3.0.0-alpha.21

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 (263) hide show
  1. package/README.md +172 -6
  2. package/bin/cli.js +0 -0
  3. package/dist/src/commands/agent.d.ts.map +1 -1
  4. package/dist/src/commands/agent.js +43 -27
  5. package/dist/src/commands/agent.js.map +1 -1
  6. package/dist/src/commands/analyze.d.ts +19 -0
  7. package/dist/src/commands/analyze.d.ts.map +1 -0
  8. package/dist/src/commands/analyze.js +1823 -0
  9. package/dist/src/commands/analyze.js.map +1 -0
  10. package/dist/src/commands/claims.d.ts +10 -0
  11. package/dist/src/commands/claims.d.ts.map +1 -0
  12. package/dist/src/commands/claims.js +288 -0
  13. package/dist/src/commands/claims.js.map +1 -0
  14. package/dist/src/commands/completions.d.ts +10 -0
  15. package/dist/src/commands/completions.d.ts.map +1 -0
  16. package/dist/src/commands/completions.js +539 -0
  17. package/dist/src/commands/completions.js.map +1 -0
  18. package/dist/src/commands/config.js +2 -2
  19. package/dist/src/commands/config.js.map +1 -1
  20. package/dist/src/commands/daemon.d.ts +8 -0
  21. package/dist/src/commands/daemon.d.ts.map +1 -0
  22. package/dist/src/commands/daemon.js +545 -0
  23. package/dist/src/commands/daemon.js.map +1 -0
  24. package/dist/src/commands/deployment.d.ts +10 -0
  25. package/dist/src/commands/deployment.d.ts.map +1 -0
  26. package/dist/src/commands/deployment.js +289 -0
  27. package/dist/src/commands/deployment.js.map +1 -0
  28. package/dist/src/commands/doctor.d.ts +10 -0
  29. package/dist/src/commands/doctor.d.ts.map +1 -0
  30. package/dist/src/commands/doctor.js +429 -0
  31. package/dist/src/commands/doctor.js.map +1 -0
  32. package/dist/src/commands/embeddings.d.ts +18 -0
  33. package/dist/src/commands/embeddings.d.ts.map +1 -0
  34. package/dist/src/commands/embeddings.js +616 -0
  35. package/dist/src/commands/embeddings.js.map +1 -0
  36. package/dist/src/commands/hive-mind.d.ts.map +1 -1
  37. package/dist/src/commands/hive-mind.js +252 -35
  38. package/dist/src/commands/hive-mind.js.map +1 -1
  39. package/dist/src/commands/hooks.d.ts.map +1 -1
  40. package/dist/src/commands/hooks.js +326 -2
  41. package/dist/src/commands/hooks.js.map +1 -1
  42. package/dist/src/commands/index.d.ts +13 -0
  43. package/dist/src/commands/index.d.ts.map +1 -1
  44. package/dist/src/commands/index.js +52 -1
  45. package/dist/src/commands/index.js.map +1 -1
  46. package/dist/src/commands/mcp.js +4 -4
  47. package/dist/src/commands/mcp.js.map +1 -1
  48. package/dist/src/commands/memory.d.ts.map +1 -1
  49. package/dist/src/commands/memory.js +236 -170
  50. package/dist/src/commands/memory.js.map +1 -1
  51. package/dist/src/commands/migrate.js +1 -1
  52. package/dist/src/commands/migrate.js.map +1 -1
  53. package/dist/src/commands/neural.d.ts +10 -0
  54. package/dist/src/commands/neural.d.ts.map +1 -0
  55. package/dist/src/commands/neural.js +224 -0
  56. package/dist/src/commands/neural.js.map +1 -0
  57. package/dist/src/commands/performance.d.ts +10 -0
  58. package/dist/src/commands/performance.d.ts.map +1 -0
  59. package/dist/src/commands/performance.js +262 -0
  60. package/dist/src/commands/performance.js.map +1 -0
  61. package/dist/src/commands/plugins.d.ts +10 -0
  62. package/dist/src/commands/plugins.d.ts.map +1 -0
  63. package/dist/src/commands/plugins.js +280 -0
  64. package/dist/src/commands/plugins.js.map +1 -0
  65. package/dist/src/commands/process.d.ts.map +1 -1
  66. package/dist/src/commands/process.js +95 -20
  67. package/dist/src/commands/process.js.map +1 -1
  68. package/dist/src/commands/providers.d.ts +10 -0
  69. package/dist/src/commands/providers.d.ts.map +1 -0
  70. package/dist/src/commands/providers.js +232 -0
  71. package/dist/src/commands/providers.js.map +1 -0
  72. package/dist/src/commands/route.d.ts +16 -0
  73. package/dist/src/commands/route.d.ts.map +1 -0
  74. package/dist/src/commands/route.js +603 -0
  75. package/dist/src/commands/route.js.map +1 -0
  76. package/dist/src/commands/security.d.ts +10 -0
  77. package/dist/src/commands/security.d.ts.map +1 -0
  78. package/dist/src/commands/security.js +261 -0
  79. package/dist/src/commands/security.js.map +1 -0
  80. package/dist/src/commands/start.js +2 -2
  81. package/dist/src/commands/start.js.map +1 -1
  82. package/dist/src/commands/status.d.ts.map +1 -1
  83. package/dist/src/commands/status.js +26 -2
  84. package/dist/src/commands/status.js.map +1 -1
  85. package/dist/src/commands/swarm.js +6 -6
  86. package/dist/src/commands/swarm.js.map +1 -1
  87. package/dist/src/index.d.ts +4 -2
  88. package/dist/src/index.d.ts.map +1 -1
  89. package/dist/src/index.js +63 -5
  90. package/dist/src/index.js.map +1 -1
  91. package/dist/src/init/claudemd-generator.d.ts.map +1 -1
  92. package/dist/src/init/claudemd-generator.js +218 -362
  93. package/dist/src/init/claudemd-generator.js.map +1 -1
  94. package/dist/src/init/executor.d.ts.map +1 -1
  95. package/dist/src/init/executor.js +5 -0
  96. package/dist/src/init/executor.js.map +1 -1
  97. package/dist/src/init/settings-generator.d.ts.map +1 -1
  98. package/dist/src/init/settings-generator.js +22 -12
  99. package/dist/src/init/settings-generator.js.map +1 -1
  100. package/dist/src/mcp-client.d.ts.map +1 -1
  101. package/dist/src/mcp-client.js +17 -1
  102. package/dist/src/mcp-client.js.map +1 -1
  103. package/dist/src/mcp-server.d.ts.map +1 -1
  104. package/dist/src/mcp-server.js +5 -0
  105. package/dist/src/mcp-server.js.map +1 -1
  106. package/dist/src/mcp-tools/agent-tools.d.ts +1 -1
  107. package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
  108. package/dist/src/mcp-tools/agent-tools.js +350 -14
  109. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  110. package/dist/src/mcp-tools/analyze-tools.d.ts +38 -0
  111. package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -0
  112. package/dist/src/mcp-tools/analyze-tools.js +317 -0
  113. package/dist/src/mcp-tools/analyze-tools.js.map +1 -0
  114. package/dist/src/mcp-tools/config-tools.d.ts +1 -1
  115. package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
  116. package/dist/src/mcp-tools/config-tools.js +262 -15
  117. package/dist/src/mcp-tools/config-tools.js.map +1 -1
  118. package/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -0
  119. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -0
  120. package/dist/src/mcp-tools/hive-mind-tools.js +447 -0
  121. package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -0
  122. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  123. package/dist/src/mcp-tools/hooks-tools.js +80 -15
  124. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  125. package/dist/src/mcp-tools/index.d.ts +6 -0
  126. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  127. package/dist/src/mcp-tools/index.js +6 -0
  128. package/dist/src/mcp-tools/index.js.map +1 -1
  129. package/dist/src/mcp-tools/memory-tools.d.ts +1 -1
  130. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  131. package/dist/src/mcp-tools/memory-tools.js +157 -9
  132. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  133. package/dist/src/mcp-tools/session-tools.d.ts +8 -0
  134. package/dist/src/mcp-tools/session-tools.d.ts.map +1 -0
  135. package/dist/src/mcp-tools/session-tools.js +315 -0
  136. package/dist/src/mcp-tools/session-tools.js.map +1 -0
  137. package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
  138. package/dist/src/mcp-tools/swarm-tools.js +37 -2
  139. package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
  140. package/dist/src/mcp-tools/task-tools.d.ts +8 -0
  141. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -0
  142. package/dist/src/mcp-tools/task-tools.js +302 -0
  143. package/dist/src/mcp-tools/task-tools.js.map +1 -0
  144. package/dist/src/mcp-tools/workflow-tools.d.ts +8 -0
  145. package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -0
  146. package/dist/src/mcp-tools/workflow-tools.js +481 -0
  147. package/dist/src/mcp-tools/workflow-tools.js.map +1 -0
  148. package/dist/src/output.d.ts +16 -0
  149. package/dist/src/output.d.ts.map +1 -1
  150. package/dist/src/output.js +42 -0
  151. package/dist/src/output.js.map +1 -1
  152. package/dist/src/ruvector/ast-analyzer.d.ts +67 -0
  153. package/dist/src/ruvector/ast-analyzer.d.ts.map +1 -0
  154. package/dist/src/ruvector/ast-analyzer.js +277 -0
  155. package/dist/src/ruvector/ast-analyzer.js.map +1 -0
  156. package/dist/src/ruvector/coverage-router.d.ts +145 -0
  157. package/dist/src/ruvector/coverage-router.d.ts.map +1 -0
  158. package/dist/src/ruvector/coverage-router.js +451 -0
  159. package/dist/src/ruvector/coverage-router.js.map +1 -0
  160. package/dist/src/ruvector/coverage-tools.d.ts +33 -0
  161. package/dist/src/ruvector/coverage-tools.d.ts.map +1 -0
  162. package/dist/src/ruvector/coverage-tools.js +157 -0
  163. package/dist/src/ruvector/coverage-tools.js.map +1 -0
  164. package/dist/src/ruvector/diff-classifier.d.ts +175 -0
  165. package/dist/src/ruvector/diff-classifier.d.ts.map +1 -0
  166. package/dist/src/ruvector/diff-classifier.js +662 -0
  167. package/dist/src/ruvector/diff-classifier.js.map +1 -0
  168. package/dist/src/ruvector/graph-analyzer.d.ts +174 -0
  169. package/dist/src/ruvector/graph-analyzer.d.ts.map +1 -0
  170. package/dist/src/ruvector/graph-analyzer.js +878 -0
  171. package/dist/src/ruvector/graph-analyzer.js.map +1 -0
  172. package/dist/src/ruvector/index.d.ts +27 -0
  173. package/dist/src/ruvector/index.d.ts.map +1 -0
  174. package/dist/src/ruvector/index.js +49 -0
  175. package/dist/src/ruvector/index.js.map +1 -0
  176. package/dist/src/ruvector/q-learning-router.d.ts +211 -0
  177. package/dist/src/ruvector/q-learning-router.d.ts.map +1 -0
  178. package/dist/src/ruvector/q-learning-router.js +681 -0
  179. package/dist/src/ruvector/q-learning-router.js.map +1 -0
  180. package/dist/src/ruvector/vector-db.d.ts +69 -0
  181. package/dist/src/ruvector/vector-db.d.ts.map +1 -0
  182. package/dist/src/ruvector/vector-db.js +243 -0
  183. package/dist/src/ruvector/vector-db.js.map +1 -0
  184. package/dist/src/services/index.d.ts +7 -0
  185. package/dist/src/services/index.d.ts.map +1 -0
  186. package/dist/src/services/index.js +6 -0
  187. package/dist/src/services/index.js.map +1 -0
  188. package/dist/src/services/worker-daemon.d.ts +153 -0
  189. package/dist/src/services/worker-daemon.d.ts.map +1 -0
  190. package/dist/src/services/worker-daemon.js +567 -0
  191. package/dist/src/services/worker-daemon.js.map +1 -0
  192. package/dist/src/suggest.d.ts +53 -0
  193. package/dist/src/suggest.d.ts.map +1 -0
  194. package/dist/src/suggest.js +200 -0
  195. package/dist/src/suggest.js.map +1 -0
  196. package/dist/tsconfig.tsbuildinfo +1 -1
  197. package/package.json +28 -6
  198. package/.agentic-flow/intelligence.json +0 -16
  199. package/.claude-flow/metrics/agent-metrics.json +0 -1
  200. package/.claude-flow/metrics/performance.json +0 -87
  201. package/.claude-flow/metrics/task-metrics.json +0 -10
  202. package/__tests__/README.md +0 -140
  203. package/__tests__/TEST_SUMMARY.md +0 -144
  204. package/__tests__/cli.test.ts +0 -558
  205. package/__tests__/commands.test.ts +0 -726
  206. package/__tests__/config-adapter.test.ts +0 -362
  207. package/__tests__/config-loading.test.ts +0 -106
  208. package/__tests__/coverage/.tmp/coverage-0.json +0 -1
  209. package/__tests__/coverage/.tmp/coverage-1.json +0 -1
  210. package/__tests__/coverage/.tmp/coverage-2.json +0 -1
  211. package/__tests__/coverage/.tmp/coverage-3.json +0 -1
  212. package/__tests__/coverage/.tmp/coverage-4.json +0 -1
  213. package/__tests__/coverage/.tmp/coverage-5.json +0 -1
  214. package/__tests__/mcp-client.test.ts +0 -480
  215. package/__tests__/p1-commands.test.ts +0 -1064
  216. package/docs/CONFIG_LOADING.md +0 -236
  217. package/docs/IMPLEMENTATION_COMPLETE.md +0 -421
  218. package/docs/MCP_CLIENT_GUIDE.md +0 -620
  219. package/docs/REFACTORING_SUMMARY.md +0 -247
  220. package/src/commands/agent.ts +0 -941
  221. package/src/commands/config.ts +0 -452
  222. package/src/commands/hive-mind.ts +0 -762
  223. package/src/commands/hooks.ts +0 -2603
  224. package/src/commands/index.ts +0 -115
  225. package/src/commands/init.ts +0 -597
  226. package/src/commands/mcp.ts +0 -753
  227. package/src/commands/memory.ts +0 -1063
  228. package/src/commands/migrate.ts +0 -447
  229. package/src/commands/process.ts +0 -617
  230. package/src/commands/session.ts +0 -891
  231. package/src/commands/start.ts +0 -457
  232. package/src/commands/status.ts +0 -705
  233. package/src/commands/swarm.ts +0 -648
  234. package/src/commands/task.ts +0 -792
  235. package/src/commands/workflow.ts +0 -742
  236. package/src/config-adapter.ts +0 -210
  237. package/src/index.ts +0 -383
  238. package/src/infrastructure/in-memory-repositories.ts +0 -310
  239. package/src/init/claudemd-generator.ts +0 -631
  240. package/src/init/executor.ts +0 -756
  241. package/src/init/helpers-generator.ts +0 -628
  242. package/src/init/index.ts +0 -60
  243. package/src/init/mcp-generator.ts +0 -83
  244. package/src/init/settings-generator.ts +0 -274
  245. package/src/init/statusline-generator.ts +0 -211
  246. package/src/init/types.ts +0 -447
  247. package/src/mcp-client.ts +0 -227
  248. package/src/mcp-server.ts +0 -571
  249. package/src/mcp-tools/agent-tools.ts +0 -92
  250. package/src/mcp-tools/config-tools.ts +0 -88
  251. package/src/mcp-tools/hooks-tools.ts +0 -1819
  252. package/src/mcp-tools/index.ts +0 -12
  253. package/src/mcp-tools/memory-tools.ts +0 -89
  254. package/src/mcp-tools/swarm-tools.ts +0 -69
  255. package/src/mcp-tools/types.ts +0 -33
  256. package/src/output.ts +0 -593
  257. package/src/parser.ts +0 -417
  258. package/src/prompt.ts +0 -619
  259. package/src/types.ts +0 -287
  260. package/tmp.json +0 -0
  261. package/tsconfig.json +0 -16
  262. package/tsconfig.tsbuildinfo +0 -1
  263. package/vitest.config.ts +0 -13
@@ -1,628 +0,0 @@
1
- /**
2
- * Helpers Generator
3
- * Creates utility scripts in .claude/helpers/
4
- */
5
-
6
- import type { InitOptions } from './types.js';
7
- import { generateStatuslineScript, generateStatuslineHook } from './statusline-generator.js';
8
-
9
- /**
10
- * Generate pre-commit hook script
11
- */
12
- export function generatePreCommitHook(): string {
13
- return `#!/bin/bash
14
- # Claude Flow Pre-Commit Hook
15
- # Validates code quality before commit
16
-
17
- set -e
18
-
19
- echo "🔍 Running Claude Flow pre-commit checks..."
20
-
21
- # Get staged files
22
- STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM)
23
-
24
- # Run validation for each staged file
25
- for FILE in $STAGED_FILES; do
26
- if [[ "$FILE" =~ \\.(ts|js|tsx|jsx)$ ]]; then
27
- echo " Validating: $FILE"
28
- npx @claude-flow/cli hooks pre-edit --file "$FILE" --validate-syntax 2>/dev/null || true
29
- fi
30
- done
31
-
32
- # Run tests if available
33
- if [ -f "package.json" ] && grep -q '"test"' package.json; then
34
- echo "🧪 Running tests..."
35
- npm test --if-present 2>/dev/null || echo " Tests skipped or failed"
36
- fi
37
-
38
- echo "✅ Pre-commit checks complete"
39
- `;
40
- }
41
-
42
- /**
43
- * Generate post-commit hook script
44
- */
45
- export function generatePostCommitHook(): string {
46
- return `#!/bin/bash
47
- # Claude Flow Post-Commit Hook
48
- # Records commit metrics and trains patterns
49
-
50
- COMMIT_HASH=$(git rev-parse HEAD)
51
- COMMIT_MSG=$(git log -1 --pretty=%B)
52
-
53
- echo "📊 Recording commit metrics..."
54
-
55
- # Notify claude-flow of commit
56
- npx @claude-flow/cli hooks notify \\
57
- --message "Commit: $COMMIT_MSG" \\
58
- --level info \\
59
- --metadata '{"hash": "'$COMMIT_HASH'"}' 2>/dev/null || true
60
-
61
- echo "✅ Commit recorded"
62
- `;
63
- }
64
-
65
- /**
66
- * Generate session manager script
67
- */
68
- export function generateSessionManager(): string {
69
- return `#!/usr/bin/env node
70
- /**
71
- * Claude Flow Session Manager
72
- * Handles session lifecycle: start, restore, end
73
- */
74
-
75
- const fs = require('fs');
76
- const path = require('path');
77
-
78
- const SESSION_DIR = path.join(process.cwd(), '.claude-flow', 'sessions');
79
- const SESSION_FILE = path.join(SESSION_DIR, 'current.json');
80
-
81
- const commands = {
82
- start: () => {
83
- const sessionId = \`session-\${Date.now()}\`;
84
- const session = {
85
- id: sessionId,
86
- startedAt: new Date().toISOString(),
87
- cwd: process.cwd(),
88
- context: {},
89
- metrics: {
90
- edits: 0,
91
- commands: 0,
92
- tasks: 0,
93
- errors: 0,
94
- },
95
- };
96
-
97
- fs.mkdirSync(SESSION_DIR, { recursive: true });
98
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
99
-
100
- console.log(\`Session started: \${sessionId}\`);
101
- return session;
102
- },
103
-
104
- restore: () => {
105
- if (!fs.existsSync(SESSION_FILE)) {
106
- console.log('No session to restore');
107
- return null;
108
- }
109
-
110
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
111
- session.restoredAt = new Date().toISOString();
112
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
113
-
114
- console.log(\`Session restored: \${session.id}\`);
115
- return session;
116
- },
117
-
118
- end: () => {
119
- if (!fs.existsSync(SESSION_FILE)) {
120
- console.log('No active session');
121
- return null;
122
- }
123
-
124
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
125
- session.endedAt = new Date().toISOString();
126
- session.duration = Date.now() - new Date(session.startedAt).getTime();
127
-
128
- // Archive session
129
- const archivePath = path.join(SESSION_DIR, \`\${session.id}.json\`);
130
- fs.writeFileSync(archivePath, JSON.stringify(session, null, 2));
131
- fs.unlinkSync(SESSION_FILE);
132
-
133
- console.log(\`Session ended: \${session.id}\`);
134
- console.log(\`Duration: \${Math.round(session.duration / 1000 / 60)} minutes\`);
135
- console.log(\`Metrics: \${JSON.stringify(session.metrics)}\`);
136
-
137
- return session;
138
- },
139
-
140
- status: () => {
141
- if (!fs.existsSync(SESSION_FILE)) {
142
- console.log('No active session');
143
- return null;
144
- }
145
-
146
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
147
- const duration = Date.now() - new Date(session.startedAt).getTime();
148
-
149
- console.log(\`Session: \${session.id}\`);
150
- console.log(\`Started: \${session.startedAt}\`);
151
- console.log(\`Duration: \${Math.round(duration / 1000 / 60)} minutes\`);
152
- console.log(\`Metrics: \${JSON.stringify(session.metrics)}\`);
153
-
154
- return session;
155
- },
156
-
157
- update: (key, value) => {
158
- if (!fs.existsSync(SESSION_FILE)) {
159
- console.log('No active session');
160
- return null;
161
- }
162
-
163
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
164
- session.context[key] = value;
165
- session.updatedAt = new Date().toISOString();
166
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
167
-
168
- return session;
169
- },
170
-
171
- metric: (name) => {
172
- if (!fs.existsSync(SESSION_FILE)) {
173
- return null;
174
- }
175
-
176
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
177
- if (session.metrics[name] !== undefined) {
178
- session.metrics[name]++;
179
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
180
- }
181
-
182
- return session;
183
- },
184
- };
185
-
186
- // CLI
187
- const [,, command, ...args] = process.argv;
188
-
189
- if (command && commands[command]) {
190
- commands[command](...args);
191
- } else {
192
- console.log('Usage: session.js <start|restore|end|status|update|metric> [args]');
193
- }
194
-
195
- module.exports = commands;
196
- `;
197
- }
198
-
199
- /**
200
- * Generate agent router script
201
- */
202
- export function generateAgentRouter(): string {
203
- return `#!/usr/bin/env node
204
- /**
205
- * Claude Flow Agent Router
206
- * Routes tasks to optimal agents based on learned patterns
207
- */
208
-
209
- const AGENT_CAPABILITIES = {
210
- coder: ['code-generation', 'refactoring', 'debugging', 'implementation'],
211
- tester: ['unit-testing', 'integration-testing', 'coverage', 'test-generation'],
212
- reviewer: ['code-review', 'security-audit', 'quality-check', 'best-practices'],
213
- researcher: ['web-search', 'documentation', 'analysis', 'summarization'],
214
- architect: ['system-design', 'architecture', 'patterns', 'scalability'],
215
- 'backend-dev': ['api', 'database', 'server', 'authentication'],
216
- 'frontend-dev': ['ui', 'react', 'css', 'components'],
217
- devops: ['ci-cd', 'docker', 'deployment', 'infrastructure'],
218
- };
219
-
220
- const TASK_PATTERNS = {
221
- // Code patterns
222
- 'implement|create|build|add|write code': 'coder',
223
- 'test|spec|coverage|unit test|integration': 'tester',
224
- 'review|audit|check|validate|security': 'reviewer',
225
- 'research|find|search|documentation|explore': 'researcher',
226
- 'design|architect|structure|plan': 'architect',
227
-
228
- // Domain patterns
229
- 'api|endpoint|server|backend|database': 'backend-dev',
230
- 'ui|frontend|component|react|css|style': 'frontend-dev',
231
- 'deploy|docker|ci|cd|pipeline|infrastructure': 'devops',
232
- };
233
-
234
- function routeTask(task) {
235
- const taskLower = task.toLowerCase();
236
-
237
- // Check patterns
238
- for (const [pattern, agent] of Object.entries(TASK_PATTERNS)) {
239
- const regex = new RegExp(pattern, 'i');
240
- if (regex.test(taskLower)) {
241
- return {
242
- agent,
243
- confidence: 0.8,
244
- reason: \`Matched pattern: \${pattern}\`,
245
- };
246
- }
247
- }
248
-
249
- // Default to coder for unknown tasks
250
- return {
251
- agent: 'coder',
252
- confidence: 0.5,
253
- reason: 'Default routing - no specific pattern matched',
254
- };
255
- }
256
-
257
- // CLI
258
- const task = process.argv.slice(2).join(' ');
259
-
260
- if (task) {
261
- const result = routeTask(task);
262
- console.log(JSON.stringify(result, null, 2));
263
- } else {
264
- console.log('Usage: router.js <task description>');
265
- console.log('\\nAvailable agents:', Object.keys(AGENT_CAPABILITIES).join(', '));
266
- }
267
-
268
- module.exports = { routeTask, AGENT_CAPABILITIES, TASK_PATTERNS };
269
- `;
270
- }
271
-
272
- /**
273
- * Generate memory helper script
274
- */
275
- export function generateMemoryHelper(): string {
276
- return `#!/usr/bin/env node
277
- /**
278
- * Claude Flow Memory Helper
279
- * Simple key-value memory for cross-session context
280
- */
281
-
282
- const fs = require('fs');
283
- const path = require('path');
284
-
285
- const MEMORY_DIR = path.join(process.cwd(), '.claude-flow', 'data');
286
- const MEMORY_FILE = path.join(MEMORY_DIR, 'memory.json');
287
-
288
- function loadMemory() {
289
- try {
290
- if (fs.existsSync(MEMORY_FILE)) {
291
- return JSON.parse(fs.readFileSync(MEMORY_FILE, 'utf-8'));
292
- }
293
- } catch (e) {
294
- // Ignore
295
- }
296
- return {};
297
- }
298
-
299
- function saveMemory(memory) {
300
- fs.mkdirSync(MEMORY_DIR, { recursive: true });
301
- fs.writeFileSync(MEMORY_FILE, JSON.stringify(memory, null, 2));
302
- }
303
-
304
- const commands = {
305
- get: (key) => {
306
- const memory = loadMemory();
307
- const value = key ? memory[key] : memory;
308
- console.log(JSON.stringify(value, null, 2));
309
- return value;
310
- },
311
-
312
- set: (key, value) => {
313
- if (!key) {
314
- console.error('Key required');
315
- return;
316
- }
317
- const memory = loadMemory();
318
- memory[key] = value;
319
- memory._updated = new Date().toISOString();
320
- saveMemory(memory);
321
- console.log(\`Set: \${key}\`);
322
- },
323
-
324
- delete: (key) => {
325
- if (!key) {
326
- console.error('Key required');
327
- return;
328
- }
329
- const memory = loadMemory();
330
- delete memory[key];
331
- saveMemory(memory);
332
- console.log(\`Deleted: \${key}\`);
333
- },
334
-
335
- clear: () => {
336
- saveMemory({});
337
- console.log('Memory cleared');
338
- },
339
-
340
- keys: () => {
341
- const memory = loadMemory();
342
- const keys = Object.keys(memory).filter(k => !k.startsWith('_'));
343
- console.log(keys.join('\\n'));
344
- return keys;
345
- },
346
- };
347
-
348
- // CLI
349
- const [,, command, key, ...valueParts] = process.argv;
350
- const value = valueParts.join(' ');
351
-
352
- if (command && commands[command]) {
353
- commands[command](key, value);
354
- } else {
355
- console.log('Usage: memory.js <get|set|delete|clear|keys> [key] [value]');
356
- }
357
-
358
- module.exports = commands;
359
- `;
360
- }
361
-
362
- /**
363
- * Generate Windows PowerShell daemon manager
364
- */
365
- export function generateWindowsDaemonManager(): string {
366
- return `# Claude Flow V3 Daemon Manager for Windows
367
- # PowerShell script for managing background processes
368
-
369
- param(
370
- [Parameter(Position=0)]
371
- [ValidateSet('start', 'stop', 'status', 'restart')]
372
- [string]$Action = 'status'
373
- )
374
-
375
- $ErrorActionPreference = 'SilentlyContinue'
376
- $ClaudeFlowDir = Join-Path $PWD '.claude-flow'
377
- $PidDir = Join-Path $ClaudeFlowDir 'pids'
378
-
379
- # Ensure directories exist
380
- if (-not (Test-Path $PidDir)) {
381
- New-Item -ItemType Directory -Path $PidDir -Force | Out-Null
382
- }
383
-
384
- function Get-DaemonStatus {
385
- param([string]$Name, [string]$PidFile)
386
-
387
- if (Test-Path $PidFile) {
388
- $pid = Get-Content $PidFile
389
- $process = Get-Process -Id $pid -ErrorAction SilentlyContinue
390
- if ($process) {
391
- return @{ Running = $true; Pid = $pid }
392
- }
393
- }
394
- return @{ Running = $false; Pid = $null }
395
- }
396
-
397
- function Start-SwarmMonitor {
398
- $pidFile = Join-Path $PidDir 'swarm-monitor.pid'
399
- $status = Get-DaemonStatus -Name 'swarm-monitor' -PidFile $pidFile
400
-
401
- if ($status.Running) {
402
- Write-Host "Swarm monitor already running (PID: $($status.Pid))" -ForegroundColor Yellow
403
- return
404
- }
405
-
406
- Write-Host "Starting swarm monitor..." -ForegroundColor Cyan
407
- $process = Start-Process -FilePath 'node' -ArgumentList @(
408
- '-e',
409
- 'setInterval(() => { require("fs").writeFileSync(".claude-flow/metrics/swarm-activity.json", JSON.stringify({swarm:{active:true,agent_count:0},timestamp:Date.now()})) }, 5000)'
410
- ) -PassThru -WindowStyle Hidden
411
-
412
- $process.Id | Out-File $pidFile
413
- Write-Host "Swarm monitor started (PID: $($process.Id))" -ForegroundColor Green
414
- }
415
-
416
- function Stop-SwarmMonitor {
417
- $pidFile = Join-Path $PidDir 'swarm-monitor.pid'
418
- $status = Get-DaemonStatus -Name 'swarm-monitor' -PidFile $pidFile
419
-
420
- if (-not $status.Running) {
421
- Write-Host "Swarm monitor not running" -ForegroundColor Yellow
422
- return
423
- }
424
-
425
- Stop-Process -Id $status.Pid -Force
426
- Remove-Item $pidFile -Force
427
- Write-Host "Swarm monitor stopped" -ForegroundColor Green
428
- }
429
-
430
- function Show-Status {
431
- Write-Host ""
432
- Write-Host "Claude Flow V3 Daemon Status" -ForegroundColor Cyan
433
- Write-Host "=============================" -ForegroundColor Cyan
434
-
435
- $swarmPid = Join-Path $PidDir 'swarm-monitor.pid'
436
- $swarmStatus = Get-DaemonStatus -Name 'swarm-monitor' -PidFile $swarmPid
437
-
438
- if ($swarmStatus.Running) {
439
- Write-Host " Swarm Monitor: RUNNING (PID: $($swarmStatus.Pid))" -ForegroundColor Green
440
- } else {
441
- Write-Host " Swarm Monitor: STOPPED" -ForegroundColor Red
442
- }
443
- Write-Host ""
444
- }
445
-
446
- switch ($Action) {
447
- 'start' {
448
- Start-SwarmMonitor
449
- Show-Status
450
- }
451
- 'stop' {
452
- Stop-SwarmMonitor
453
- Show-Status
454
- }
455
- 'restart' {
456
- Stop-SwarmMonitor
457
- Start-Sleep -Seconds 1
458
- Start-SwarmMonitor
459
- Show-Status
460
- }
461
- 'status' {
462
- Show-Status
463
- }
464
- }
465
- `;
466
- }
467
-
468
- /**
469
- * Generate Windows batch file wrapper
470
- */
471
- export function generateWindowsBatchWrapper(): string {
472
- return `@echo off
473
- REM Claude Flow V3 - Windows Batch Wrapper
474
- REM Routes to PowerShell daemon manager
475
-
476
- PowerShell -ExecutionPolicy Bypass -File "%~dp0daemon-manager.ps1" %*
477
- `;
478
- }
479
-
480
- /**
481
- * Generate cross-platform session manager
482
- */
483
- export function generateCrossPlatformSessionManager(): string {
484
- return `#!/usr/bin/env node
485
- /**
486
- * Claude Flow Cross-Platform Session Manager
487
- * Works on Windows, macOS, and Linux
488
- */
489
-
490
- const fs = require('fs');
491
- const path = require('path');
492
- const os = require('os');
493
-
494
- // Platform-specific paths
495
- const platform = os.platform();
496
- const homeDir = os.homedir();
497
-
498
- // Get data directory based on platform
499
- function getDataDir() {
500
- const localDir = path.join(process.cwd(), '.claude-flow', 'sessions');
501
- if (fs.existsSync(path.dirname(localDir))) {
502
- return localDir;
503
- }
504
-
505
- switch (platform) {
506
- case 'win32':
507
- return path.join(process.env.APPDATA || homeDir, 'claude-flow', 'sessions');
508
- case 'darwin':
509
- return path.join(homeDir, 'Library', 'Application Support', 'claude-flow', 'sessions');
510
- default:
511
- return path.join(homeDir, '.claude-flow', 'sessions');
512
- }
513
- }
514
-
515
- const SESSION_DIR = getDataDir();
516
- const SESSION_FILE = path.join(SESSION_DIR, 'current.json');
517
-
518
- // Ensure directory exists
519
- function ensureDir(dir) {
520
- if (!fs.existsSync(dir)) {
521
- fs.mkdirSync(dir, { recursive: true });
522
- }
523
- }
524
-
525
- const commands = {
526
- start: () => {
527
- ensureDir(SESSION_DIR);
528
- const sessionId = \`session-\${Date.now()}\`;
529
- const session = {
530
- id: sessionId,
531
- startedAt: new Date().toISOString(),
532
- platform: platform,
533
- cwd: process.cwd(),
534
- context: {},
535
- metrics: { edits: 0, commands: 0, tasks: 0, errors: 0 }
536
- };
537
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
538
- console.log(\`Session started: \${sessionId}\`);
539
- return session;
540
- },
541
-
542
- restore: () => {
543
- if (!fs.existsSync(SESSION_FILE)) {
544
- console.log('No session to restore');
545
- return null;
546
- }
547
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
548
- session.restoredAt = new Date().toISOString();
549
- fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2));
550
- console.log(\`Session restored: \${session.id}\`);
551
- return session;
552
- },
553
-
554
- end: () => {
555
- if (!fs.existsSync(SESSION_FILE)) {
556
- console.log('No active session');
557
- return null;
558
- }
559
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
560
- session.endedAt = new Date().toISOString();
561
- session.duration = Date.now() - new Date(session.startedAt).getTime();
562
-
563
- const archivePath = path.join(SESSION_DIR, \`\${session.id}.json\`);
564
- fs.writeFileSync(archivePath, JSON.stringify(session, null, 2));
565
- fs.unlinkSync(SESSION_FILE);
566
-
567
- console.log(\`Session ended: \${session.id}\`);
568
- console.log(\`Duration: \${Math.round(session.duration / 1000 / 60)} minutes\`);
569
- return session;
570
- },
571
-
572
- status: () => {
573
- if (!fs.existsSync(SESSION_FILE)) {
574
- console.log('No active session');
575
- return null;
576
- }
577
- const session = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf-8'));
578
- const duration = Date.now() - new Date(session.startedAt).getTime();
579
- console.log(\`Session: \${session.id}\`);
580
- console.log(\`Platform: \${session.platform}\`);
581
- console.log(\`Started: \${session.startedAt}\`);
582
- console.log(\`Duration: \${Math.round(duration / 1000 / 60)} minutes\`);
583
- return session;
584
- }
585
- };
586
-
587
- // CLI
588
- const [,, command, ...args] = process.argv;
589
- if (command && commands[command]) {
590
- commands[command](...args);
591
- } else {
592
- console.log('Usage: session.js <start|restore|end|status>');
593
- console.log(\`Platform: \${platform}\`);
594
- console.log(\`Data dir: \${SESSION_DIR}\`);
595
- }
596
-
597
- module.exports = commands;
598
- `;
599
- }
600
-
601
- /**
602
- * Generate all helper files
603
- */
604
- export function generateHelpers(options: InitOptions): Record<string, string> {
605
- const helpers: Record<string, string> = {};
606
-
607
- if (options.components.helpers) {
608
- // Unix/macOS shell scripts
609
- helpers['pre-commit'] = generatePreCommitHook();
610
- helpers['post-commit'] = generatePostCommitHook();
611
-
612
- // Cross-platform Node.js scripts
613
- helpers['session.js'] = generateCrossPlatformSessionManager();
614
- helpers['router.js'] = generateAgentRouter();
615
- helpers['memory.js'] = generateMemoryHelper();
616
-
617
- // Windows-specific scripts
618
- helpers['daemon-manager.ps1'] = generateWindowsDaemonManager();
619
- helpers['daemon-manager.cmd'] = generateWindowsBatchWrapper();
620
- }
621
-
622
- if (options.components.statusline) {
623
- helpers['statusline.js'] = generateStatuslineScript(options);
624
- helpers['statusline-hook.sh'] = generateStatuslineHook(options);
625
- }
626
-
627
- return helpers;
628
- }
package/src/init/index.ts DELETED
@@ -1,60 +0,0 @@
1
- /**
2
- * V3 Init Module
3
- * Comprehensive initialization system for Claude Code integration
4
- */
5
-
6
- // Types
7
- export {
8
- type InitOptions,
9
- type InitComponents,
10
- type InitResult,
11
- type HooksConfig,
12
- type SkillsConfig,
13
- type CommandsConfig,
14
- type AgentsConfig,
15
- type StatuslineConfig,
16
- type MCPConfig,
17
- type RuntimeConfig,
18
- type PlatformInfo,
19
- DEFAULT_INIT_OPTIONS,
20
- MINIMAL_INIT_OPTIONS,
21
- FULL_INIT_OPTIONS,
22
- detectPlatform,
23
- } from './types.js';
24
-
25
- // Generators
26
- export {
27
- generateSettings,
28
- generateSettingsJson,
29
- } from './settings-generator.js';
30
-
31
- export {
32
- generateMCPConfig,
33
- generateMCPJson,
34
- generateMCPCommands,
35
- } from './mcp-generator.js';
36
-
37
- export {
38
- generateStatuslineScript,
39
- generateStatuslineHook,
40
- } from './statusline-generator.js';
41
-
42
- export {
43
- generatePreCommitHook,
44
- generatePostCommitHook,
45
- generateSessionManager,
46
- generateAgentRouter,
47
- generateMemoryHelper,
48
- generateHelpers,
49
- generateWindowsDaemonManager,
50
- generateWindowsBatchWrapper,
51
- generateCrossPlatformSessionManager,
52
- } from './helpers-generator.js';
53
-
54
- export {
55
- generateClaudeMd,
56
- generateMinimalClaudeMd,
57
- } from './claudemd-generator.js';
58
-
59
- // Main executor
60
- export { executeInit, default } from './executor.js';