@claude-flow/cli 3.0.0-alpha.13 → 3.0.0-alpha.15

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 (106) hide show
  1. package/dist/src/commands/doctor.d.ts.map +1 -1
  2. package/dist/src/commands/doctor.js +75 -2
  3. package/dist/src/commands/doctor.js.map +1 -1
  4. package/dist/tsconfig.tsbuildinfo +1 -1
  5. package/package.json +12 -4
  6. package/.agentic-flow/intelligence.json +0 -17
  7. package/.claude-flow/agents/store.json +0 -16
  8. package/.claude-flow/daemon-state.json +0 -123
  9. package/.claude-flow/daemon-test.log +0 -0
  10. package/.claude-flow/daemon.log +0 -0
  11. package/.claude-flow/daemon2.log +0 -0
  12. package/.claude-flow/daemon3.log +0 -0
  13. package/.claude-flow/hive-mind/state.json +0 -51
  14. package/.claude-flow/metrics/agent-metrics.json +0 -1
  15. package/.claude-flow/metrics/codebase-map.json +0 -11
  16. package/.claude-flow/metrics/consolidation.json +0 -6
  17. package/.claude-flow/metrics/performance.json +0 -87
  18. package/.claude-flow/metrics/security-audit.json +0 -10
  19. package/.claude-flow/metrics/task-metrics.json +0 -10
  20. package/.claude-flow/metrics/test-gaps.json +0 -6
  21. package/__tests__/README.md +0 -140
  22. package/__tests__/TEST_SUMMARY.md +0 -144
  23. package/__tests__/cli.test.ts +0 -558
  24. package/__tests__/commands.test.ts +0 -726
  25. package/__tests__/config-adapter.test.ts +0 -362
  26. package/__tests__/config-loading.test.ts +0 -106
  27. package/__tests__/coverage/.tmp/coverage-0.json +0 -1
  28. package/__tests__/coverage/.tmp/coverage-1.json +0 -1
  29. package/__tests__/coverage/.tmp/coverage-2.json +0 -1
  30. package/__tests__/coverage/.tmp/coverage-3.json +0 -1
  31. package/__tests__/coverage/.tmp/coverage-4.json +0 -1
  32. package/__tests__/coverage/.tmp/coverage-5.json +0 -1
  33. package/__tests__/mcp-client.test.ts +0 -480
  34. package/__tests__/p1-commands.test.ts +0 -1064
  35. package/agents/architect.yaml +0 -11
  36. package/agents/coder.yaml +0 -11
  37. package/agents/reviewer.yaml +0 -10
  38. package/agents/security-architect.yaml +0 -10
  39. package/agents/tester.yaml +0 -10
  40. package/docs/CONFIG_LOADING.md +0 -236
  41. package/docs/IMPLEMENTATION_COMPLETE.md +0 -421
  42. package/docs/MCP_CLIENT_GUIDE.md +0 -620
  43. package/docs/REFACTORING_SUMMARY.md +0 -247
  44. package/scripts/publish.sh +0 -46
  45. package/src/commands/agent.ts +0 -955
  46. package/src/commands/claims.ts +0 -317
  47. package/src/commands/completions.ts +0 -558
  48. package/src/commands/config.ts +0 -452
  49. package/src/commands/daemon.ts +0 -621
  50. package/src/commands/deployment.ts +0 -323
  51. package/src/commands/doctor.ts +0 -382
  52. package/src/commands/embeddings.ts +0 -686
  53. package/src/commands/hive-mind.ts +0 -928
  54. package/src/commands/hooks.ts +0 -2603
  55. package/src/commands/index.ts +0 -154
  56. package/src/commands/init.ts +0 -597
  57. package/src/commands/mcp.ts +0 -753
  58. package/src/commands/memory.ts +0 -1161
  59. package/src/commands/migrate.ts +0 -447
  60. package/src/commands/neural.ts +0 -253
  61. package/src/commands/performance.ts +0 -292
  62. package/src/commands/plugins.ts +0 -316
  63. package/src/commands/process.ts +0 -695
  64. package/src/commands/providers.ts +0 -259
  65. package/src/commands/security.ts +0 -288
  66. package/src/commands/session.ts +0 -891
  67. package/src/commands/start.ts +0 -457
  68. package/src/commands/status.ts +0 -736
  69. package/src/commands/swarm.ts +0 -648
  70. package/src/commands/task.ts +0 -792
  71. package/src/commands/workflow.ts +0 -742
  72. package/src/config-adapter.ts +0 -210
  73. package/src/index.ts +0 -443
  74. package/src/infrastructure/in-memory-repositories.ts +0 -310
  75. package/src/init/claudemd-generator.ts +0 -631
  76. package/src/init/executor.ts +0 -762
  77. package/src/init/helpers-generator.ts +0 -628
  78. package/src/init/index.ts +0 -60
  79. package/src/init/mcp-generator.ts +0 -83
  80. package/src/init/settings-generator.ts +0 -284
  81. package/src/init/statusline-generator.ts +0 -211
  82. package/src/init/types.ts +0 -447
  83. package/src/mcp-client.ts +0 -241
  84. package/src/mcp-server.ts +0 -577
  85. package/src/mcp-tools/agent-tools.ts +0 -466
  86. package/src/mcp-tools/config-tools.ts +0 -370
  87. package/src/mcp-tools/hive-mind-tools.ts +0 -521
  88. package/src/mcp-tools/hooks-tools.ts +0 -1888
  89. package/src/mcp-tools/index.ts +0 -16
  90. package/src/mcp-tools/memory-tools.ts +0 -270
  91. package/src/mcp-tools/session-tools.ts +0 -359
  92. package/src/mcp-tools/swarm-tools.ts +0 -105
  93. package/src/mcp-tools/task-tools.ts +0 -347
  94. package/src/mcp-tools/types.ts +0 -33
  95. package/src/mcp-tools/workflow-tools.ts +0 -573
  96. package/src/output.ts +0 -639
  97. package/src/parser.ts +0 -417
  98. package/src/prompt.ts +0 -619
  99. package/src/services/index.ts +0 -15
  100. package/src/services/worker-daemon.ts +0 -726
  101. package/src/suggest.ts +0 -245
  102. package/src/types.ts +0 -287
  103. package/tmp.json +0 -0
  104. package/tsconfig.json +0 -16
  105. package/tsconfig.tsbuildinfo +0 -1
  106. package/vitest.config.ts +0 -13
@@ -1,83 +0,0 @@
1
- /**
2
- * MCP Configuration Generator
3
- * Creates .mcp.json for Claude Code MCP server integration
4
- */
5
-
6
- import type { InitOptions, MCPConfig } from './types.js';
7
-
8
- /**
9
- * Generate MCP configuration
10
- */
11
- export function generateMCPConfig(options: InitOptions): object {
12
- const config = options.mcp;
13
- const mcpServers: Record<string, object> = {};
14
-
15
- // Claude Flow MCP server (core)
16
- if (config.claudeFlow) {
17
- mcpServers['claude-flow'] = {
18
- command: 'npx',
19
- args: ['@claude-flow/cli', 'mcp', 'start'],
20
- env: {
21
- CLAUDE_FLOW_MODE: 'v3',
22
- CLAUDE_FLOW_HOOKS_ENABLED: 'true',
23
- CLAUDE_FLOW_TOPOLOGY: options.runtime.topology,
24
- CLAUDE_FLOW_MAX_AGENTS: String(options.runtime.maxAgents),
25
- CLAUDE_FLOW_MEMORY_BACKEND: options.runtime.memoryBackend,
26
- },
27
- autoStart: config.autoStart,
28
- };
29
- }
30
-
31
- // Ruv-Swarm MCP server (enhanced coordination)
32
- if (config.ruvSwarm) {
33
- mcpServers['ruv-swarm'] = {
34
- command: 'npx',
35
- args: ['ruv-swarm', 'mcp', 'start'],
36
- env: {},
37
- optional: true,
38
- };
39
- }
40
-
41
- // Flow Nexus MCP server (cloud features)
42
- if (config.flowNexus) {
43
- mcpServers['flow-nexus'] = {
44
- command: 'npx',
45
- args: ['flow-nexus@latest', 'mcp', 'start'],
46
- env: {},
47
- optional: true,
48
- requiresAuth: true,
49
- };
50
- }
51
-
52
- return { mcpServers };
53
- }
54
-
55
- /**
56
- * Generate .mcp.json as formatted string
57
- */
58
- export function generateMCPJson(options: InitOptions): string {
59
- const config = generateMCPConfig(options);
60
- return JSON.stringify(config, null, 2);
61
- }
62
-
63
- /**
64
- * Generate MCP server add commands for manual setup
65
- */
66
- export function generateMCPCommands(options: InitOptions): string[] {
67
- const commands: string[] = [];
68
- const config = options.mcp;
69
-
70
- if (config.claudeFlow) {
71
- commands.push('claude mcp add claude-flow -- npx @claude-flow/cli mcp start');
72
- }
73
-
74
- if (config.ruvSwarm) {
75
- commands.push('claude mcp add ruv-swarm -- npx ruv-swarm mcp start');
76
- }
77
-
78
- if (config.flowNexus) {
79
- commands.push('claude mcp add flow-nexus -- npx flow-nexus@latest mcp start');
80
- }
81
-
82
- return commands;
83
- }
@@ -1,284 +0,0 @@
1
- /**
2
- * Settings.json Generator
3
- * Creates .claude/settings.json with V3-optimized hook configurations
4
- */
5
-
6
- import type { InitOptions, HooksConfig } from './types.js';
7
-
8
- /**
9
- * Generate the complete settings.json content
10
- */
11
- export function generateSettings(options: InitOptions): object {
12
- const settings: Record<string, unknown> = {};
13
-
14
- // Add hooks if enabled
15
- if (options.components.settings) {
16
- settings.hooks = generateHooksConfig(options.hooks);
17
- }
18
-
19
- // Add permissions
20
- settings.permissions = {
21
- // Auto-allow claude-flow MCP tools
22
- allow: [
23
- 'Bash(npx claude-flow*)',
24
- 'Bash(npx @claude-flow/*)',
25
- 'mcp__claude-flow__*',
26
- ],
27
- // Auto-deny dangerous operations
28
- deny: [],
29
- };
30
-
31
- // Add model preferences for V3
32
- settings.model = {
33
- default: 'claude-sonnet-4-20250514',
34
- // Use Haiku for quick routing decisions
35
- routing: 'claude-haiku',
36
- };
37
-
38
- // Add V3-specific settings
39
- settings.claudeFlow = {
40
- version: '3.0.0',
41
- enabled: true,
42
- swarm: {
43
- topology: options.runtime.topology,
44
- maxAgents: options.runtime.maxAgents,
45
- },
46
- memory: {
47
- backend: options.runtime.memoryBackend,
48
- enableHNSW: options.runtime.enableHNSW,
49
- },
50
- neural: {
51
- enabled: options.runtime.enableNeural,
52
- },
53
- daemon: {
54
- autoStart: true,
55
- workers: ['map', 'audit', 'optimize', 'consolidate', 'testgaps'],
56
- },
57
- };
58
-
59
- return settings;
60
- }
61
-
62
- /**
63
- * Generate hooks configuration
64
- */
65
- function generateHooksConfig(config: HooksConfig): object {
66
- const hooks: Record<string, unknown[]> = {};
67
-
68
- // PreToolUse hooks
69
- if (config.preToolUse) {
70
- hooks.PreToolUse = [
71
- // File edit hooks
72
- {
73
- matcher: '^(Write|Edit|MultiEdit)$',
74
- hooks: [
75
- {
76
- type: 'command',
77
- command: 'npx claude-flow@v3alpha hooks pre-edit --file "$TOOL_INPUT_file_path" --intelligence',
78
- timeout: config.timeout,
79
- continueOnError: config.continueOnError,
80
- },
81
- ],
82
- },
83
- // Bash command hooks
84
- {
85
- matcher: '^Bash$',
86
- hooks: [
87
- {
88
- type: 'command',
89
- command: 'npx claude-flow@v3alpha hooks pre-command --command "$TOOL_INPUT_command"',
90
- timeout: config.timeout,
91
- continueOnError: config.continueOnError,
92
- },
93
- ],
94
- },
95
- // Task/Agent hooks
96
- {
97
- matcher: '^Task$',
98
- hooks: [
99
- {
100
- type: 'command',
101
- command: 'npx claude-flow@v3alpha hooks pre-task --task-id "task-$(date +%s)" --description "$TOOL_INPUT_prompt"',
102
- timeout: config.timeout,
103
- continueOnError: config.continueOnError,
104
- },
105
- ],
106
- },
107
- // Search hooks
108
- {
109
- matcher: '^(Grep|Glob|Read)$',
110
- hooks: [
111
- {
112
- type: 'command',
113
- command: 'npx claude-flow@v3alpha hooks pre-search --pattern "$TOOL_INPUT_pattern"',
114
- timeout: 2000,
115
- continueOnError: true,
116
- },
117
- ],
118
- },
119
- ];
120
- }
121
-
122
- // PostToolUse hooks
123
- if (config.postToolUse) {
124
- hooks.PostToolUse = [
125
- // File edit hooks with learning
126
- {
127
- matcher: '^(Write|Edit|MultiEdit)$',
128
- hooks: [
129
- {
130
- type: 'command',
131
- command: 'npx claude-flow@v3alpha hooks post-edit --file "$TOOL_INPUT_file_path" --success "$TOOL_SUCCESS" --train-patterns',
132
- timeout: config.timeout,
133
- continueOnError: config.continueOnError,
134
- },
135
- ],
136
- },
137
- // Bash command hooks with metrics
138
- {
139
- matcher: '^Bash$',
140
- hooks: [
141
- {
142
- type: 'command',
143
- command: 'npx claude-flow@v3alpha hooks post-command --command "$TOOL_INPUT_command" --success "$TOOL_SUCCESS" --exit-code "$TOOL_EXIT_CODE"',
144
- timeout: config.timeout,
145
- continueOnError: config.continueOnError,
146
- },
147
- ],
148
- },
149
- // Task completion hooks
150
- {
151
- matcher: '^Task$',
152
- hooks: [
153
- {
154
- type: 'command',
155
- command: 'npx claude-flow@v3alpha hooks post-task --agent-id "$TOOL_RESULT_agent_id" --success "$TOOL_SUCCESS" --analyze',
156
- timeout: config.timeout,
157
- continueOnError: config.continueOnError,
158
- },
159
- ],
160
- },
161
- // Search caching
162
- {
163
- matcher: '^(Grep|Glob)$',
164
- hooks: [
165
- {
166
- type: 'command',
167
- command: 'npx claude-flow@v3alpha hooks post-search --cache-results',
168
- timeout: 2000,
169
- continueOnError: true,
170
- },
171
- ],
172
- },
173
- ];
174
- }
175
-
176
- // UserPromptSubmit for intelligent routing
177
- if (config.userPromptSubmit) {
178
- hooks.UserPromptSubmit = [
179
- {
180
- hooks: [
181
- {
182
- type: 'command',
183
- command: 'npx claude-flow@v3alpha hooks route --task "$PROMPT" --intelligence --include-explanation',
184
- timeout: config.timeout,
185
- continueOnError: config.continueOnError,
186
- },
187
- ],
188
- },
189
- ];
190
- }
191
-
192
- // SessionStart for context loading and daemon auto-start
193
- if (config.sessionStart) {
194
- hooks.SessionStart = [
195
- {
196
- hooks: [
197
- {
198
- type: 'command',
199
- command: 'npx claude-flow@v3alpha daemon start --quiet 2>/dev/null || true',
200
- timeout: 5000,
201
- continueOnError: true,
202
- },
203
- {
204
- type: 'command',
205
- command: 'npx claude-flow@v3alpha hooks session-start --session-id "$SESSION_ID" --load-context',
206
- timeout: 10000,
207
- continueOnError: true,
208
- },
209
- ],
210
- },
211
- ];
212
- }
213
-
214
- // Stop hooks for task evaluation
215
- if (config.stop) {
216
- hooks.Stop = [
217
- {
218
- hooks: [
219
- {
220
- type: 'prompt',
221
- prompt: `Evaluate task completion. Consider:
222
- 1. Were all requested changes made?
223
- 2. Did builds/tests pass?
224
- 3. Is follow-up work needed?
225
-
226
- Respond with {"decision": "stop"} if complete, or {"decision": "continue", "reason": "..."} if more work is needed.`,
227
- },
228
- ],
229
- },
230
- ];
231
- }
232
-
233
- // Notification hooks
234
- if (config.notification) {
235
- hooks.Notification = [
236
- {
237
- hooks: [
238
- {
239
- type: 'command',
240
- command: 'npx claude-flow@v3alpha hooks notify --message "$NOTIFICATION_MESSAGE" --swarm-status',
241
- timeout: 3000,
242
- continueOnError: true,
243
- },
244
- ],
245
- },
246
- ];
247
- }
248
-
249
- // PermissionRequest for auto-allowing claude-flow tools
250
- if (config.permissionRequest) {
251
- hooks.PermissionRequest = [
252
- {
253
- matcher: '^mcp__claude-flow__.*$',
254
- hooks: [
255
- {
256
- type: 'command',
257
- command: 'echo \'{"decision": "allow", "reason": "claude-flow MCP tool auto-approved"}\'',
258
- timeout: 1000,
259
- },
260
- ],
261
- },
262
- {
263
- matcher: '^Bash\\(npx @?claude-flow.*\\)$',
264
- hooks: [
265
- {
266
- type: 'command',
267
- command: 'echo \'{"decision": "allow", "reason": "claude-flow CLI auto-approved"}\'',
268
- timeout: 1000,
269
- },
270
- ],
271
- },
272
- ];
273
- }
274
-
275
- return hooks;
276
- }
277
-
278
- /**
279
- * Generate settings.json as formatted string
280
- */
281
- export function generateSettingsJson(options: InitOptions): string {
282
- const settings = generateSettings(options);
283
- return JSON.stringify(settings, null, 2);
284
- }
@@ -1,211 +0,0 @@
1
- /**
2
- * Statusline Configuration Generator
3
- * Creates statusline configuration for V3 progress display
4
- */
5
-
6
- import type { InitOptions, StatuslineConfig } from './types.js';
7
-
8
- /**
9
- * Generate statusline configuration script
10
- */
11
- export function generateStatuslineScript(options: InitOptions): string {
12
- const config = options.statusline;
13
-
14
- return `#!/usr/bin/env node
15
- /**
16
- * Claude Flow V3 Statusline Generator
17
- * Displays real-time V3 implementation progress and system status
18
- *
19
- * Usage: node statusline.js [--json]
20
- */
21
-
22
- const fs = require('fs');
23
- const path = require('path');
24
-
25
- // Configuration
26
- const CONFIG = {
27
- enabled: ${config.enabled},
28
- showProgress: ${config.showProgress},
29
- showSecurity: ${config.showSecurity},
30
- showSwarm: ${config.showSwarm},
31
- showHooks: ${config.showHooks},
32
- showPerformance: ${config.showPerformance},
33
- refreshInterval: ${config.refreshInterval},
34
- };
35
-
36
- // ANSI colors
37
- const colors = {
38
- reset: '\\x1b[0m',
39
- bright: '\\x1b[1m',
40
- dim: '\\x1b[2m',
41
- green: '\\x1b[32m',
42
- yellow: '\\x1b[33m',
43
- blue: '\\x1b[34m',
44
- magenta: '\\x1b[35m',
45
- cyan: '\\x1b[36m',
46
- red: '\\x1b[31m',
47
- };
48
-
49
- // Get V3 progress from filesystem
50
- function getV3Progress() {
51
- const v3Path = path.join(process.cwd(), 'v3', '@claude-flow');
52
- let modulesCount = 0;
53
- let filesCount = 0;
54
-
55
- try {
56
- if (fs.existsSync(v3Path)) {
57
- const modules = fs.readdirSync(v3Path);
58
- modulesCount = modules.filter(m => fs.statSync(path.join(v3Path, m)).isDirectory()).length;
59
-
60
- // Count TypeScript files
61
- const countFiles = (dir) => {
62
- let count = 0;
63
- const items = fs.readdirSync(dir, { withFileTypes: true });
64
- for (const item of items) {
65
- if (item.isDirectory() && item.name !== 'node_modules' && item.name !== 'dist') {
66
- count += countFiles(path.join(dir, item.name));
67
- } else if (item.isFile() && item.name.endsWith('.ts')) {
68
- count++;
69
- }
70
- }
71
- return count;
72
- };
73
- filesCount = countFiles(v3Path);
74
- }
75
- } catch (e) {
76
- // Ignore errors
77
- }
78
-
79
- return { modulesCount, filesCount };
80
- }
81
-
82
- // Get security status
83
- function getSecurityStatus() {
84
- // Check for security-related files
85
- const securityPath = path.join(process.cwd(), 'v3', '@claude-flow', 'security');
86
- const exists = fs.existsSync(securityPath);
87
-
88
- return {
89
- status: exists ? 'IN_PROGRESS' : 'PENDING',
90
- cvesFixed: exists ? 2 : 0,
91
- totalCves: 3,
92
- };
93
- }
94
-
95
- // Get swarm status
96
- function getSwarmStatus() {
97
- const configPath = path.join(process.cwd(), '.claude-flow', 'config.yaml');
98
-
99
- return {
100
- activeAgents: 0,
101
- maxAgents: ${options.runtime.maxAgents},
102
- topology: '${options.runtime.topology}',
103
- coordinationActive: false,
104
- };
105
- }
106
-
107
- // Get hooks metrics
108
- function getHooksMetrics() {
109
- const metricsPath = path.join(process.cwd(), '.claude-flow', 'data', 'hooks-metrics.json');
110
-
111
- try {
112
- if (fs.existsSync(metricsPath)) {
113
- return JSON.parse(fs.readFileSync(metricsPath, 'utf-8'));
114
- }
115
- } catch (e) {
116
- // Ignore errors
117
- }
118
-
119
- return {
120
- status: 'ACTIVE',
121
- patternsLearned: 0,
122
- routingAccuracy: 0,
123
- totalOperations: 0,
124
- };
125
- }
126
-
127
- // Generate statusline
128
- function generateStatusline() {
129
- const segments = [];
130
-
131
- if (CONFIG.showProgress) {
132
- const progress = getV3Progress();
133
- segments.push(\`\${colors.cyan}V3\${colors.reset} \${progress.modulesCount}mod/\${progress.filesCount}files\`);
134
- }
135
-
136
- if (CONFIG.showSecurity) {
137
- const security = getSecurityStatus();
138
- const statusColor = security.status === 'CLEAN' ? colors.green :
139
- security.status === 'IN_PROGRESS' ? colors.yellow : colors.red;
140
- segments.push(\`\${colors.magenta}SEC\${colors.reset} \${statusColor}\${security.cvesFixed}/\${security.totalCves}\${colors.reset}\`);
141
- }
142
-
143
- if (CONFIG.showSwarm) {
144
- const swarm = getSwarmStatus();
145
- segments.push(\`\${colors.blue}SWARM\${colors.reset} \${swarm.activeAgents}/\${swarm.maxAgents}\`);
146
- }
147
-
148
- if (CONFIG.showHooks) {
149
- const hooks = getHooksMetrics();
150
- segments.push(\`\${colors.green}HOOKS\${colors.reset} \${hooks.patternsLearned}pat\`);
151
- }
152
-
153
- if (CONFIG.showPerformance) {
154
- segments.push(\`\${colors.yellow}PERF\${colors.reset} 2.49x-7.47x\`);
155
- }
156
-
157
- return segments.join(' | ');
158
- }
159
-
160
- // Output JSON if requested
161
- if (process.argv.includes('--json')) {
162
- const data = {
163
- v3Progress: getV3Progress(),
164
- security: getSecurityStatus(),
165
- swarm: getSwarmStatus(),
166
- hooks: getHooksMetrics(),
167
- performance: {
168
- flashAttentionTarget: '2.49x-7.47x',
169
- searchImprovement: '150x-12500x',
170
- memoryReduction: '50-75%',
171
- },
172
- lastUpdated: new Date().toISOString(),
173
- };
174
- console.log(JSON.stringify(data, null, 2));
175
- } else {
176
- console.log(generateStatusline());
177
- }
178
- `;
179
- }
180
-
181
- /**
182
- * Generate statusline hook for shell integration
183
- */
184
- export function generateStatuslineHook(options: InitOptions): string {
185
- if (!options.statusline.enabled) {
186
- return '# Statusline disabled';
187
- }
188
-
189
- return `# Claude Flow V3 Statusline Hook
190
- # Add to your shell RC file (.bashrc, .zshrc, etc.)
191
-
192
- # Function to get statusline
193
- claude_flow_statusline() {
194
- local statusline_script="\${CLAUDE_FLOW_DIR:-.claude}/helpers/statusline.js"
195
- if [ -f "$statusline_script" ]; then
196
- node "$statusline_script" 2>/dev/null || echo ""
197
- fi
198
- }
199
-
200
- # For bash PS1
201
- # export PS1='$(claude_flow_statusline) \\n\\$ '
202
-
203
- # For zsh RPROMPT
204
- # export RPROMPT='$(claude_flow_statusline)'
205
-
206
- # For starship (add to starship.toml)
207
- # [custom.claude_flow]
208
- # command = "node .claude/helpers/statusline.js 2>/dev/null"
209
- # when = "test -f .claude/helpers/statusline.js"
210
- `;
211
- }