@claude-flow/cli 3.0.0-alpha.77 → 3.0.0-alpha.78

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.
@@ -0,0 +1,284 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Headless Runtime for Background Workers
4
+ * Runs without TTY for daemon processes and scheduled tasks
5
+ *
6
+ * Usage:
7
+ * npx @claude-flow/cli headless --worker <type>
8
+ * npx @claude-flow/cli headless --daemon
9
+ * npx @claude-flow/cli headless --benchmark
10
+ *
11
+ * Environment:
12
+ * CLAUDE_FLOW_HEADLESS=true
13
+ * CLAUDE_CODE_HEADLESS=true
14
+ *
15
+ * @module v3/cli/runtime/headless
16
+ */
17
+ import { HeadlessWorkerExecutor, HEADLESS_WORKER_TYPES } from '../services/headless-worker-executor.js';
18
+ import { getDaemon, startDaemon, stopDaemon } from '../services/worker-daemon.js';
19
+ import { initializeIntelligence, benchmarkAdaptation, getIntelligenceStats } from '../memory/intelligence.js';
20
+ import { getHNSWStatus, batchCosineSim, flashAttentionSearch } from '../memory/memory-initializer.js';
21
+ // ============================================================================
22
+ // Main Runtime
23
+ // ============================================================================
24
+ /**
25
+ * Parse command line arguments
26
+ */
27
+ function parseArgs() {
28
+ const args = process.argv.slice(2);
29
+ const config = {
30
+ mode: 'status',
31
+ verbose: false
32
+ };
33
+ for (let i = 0; i < args.length; i++) {
34
+ const arg = args[i];
35
+ if (arg === '--worker' || arg === '-w') {
36
+ config.mode = 'worker';
37
+ config.workerType = args[++i];
38
+ }
39
+ else if (arg === '--daemon' || arg === '-d') {
40
+ config.mode = 'daemon';
41
+ }
42
+ else if (arg === '--benchmark' || arg === '-b') {
43
+ config.mode = 'benchmark';
44
+ }
45
+ else if (arg === '--status' || arg === '-s') {
46
+ config.mode = 'status';
47
+ }
48
+ else if (arg === '--timeout' || arg === '-t') {
49
+ config.timeout = parseInt(args[++i], 10) || 60000;
50
+ }
51
+ else if (arg === '--verbose' || arg === '-v') {
52
+ config.verbose = true;
53
+ }
54
+ else if (arg === '--help' || arg === '-h') {
55
+ showHelp();
56
+ process.exit(0);
57
+ }
58
+ }
59
+ return config;
60
+ }
61
+ /**
62
+ * Show help message
63
+ */
64
+ function showHelp() {
65
+ console.log(`
66
+ Headless Runtime for Claude Flow V3
67
+
68
+ Usage:
69
+ headless --worker <type> Run a specific worker
70
+ headless --daemon Start background daemon
71
+ headless --benchmark Run performance benchmarks
72
+ headless --status Show system status
73
+
74
+ Workers: ${HEADLESS_WORKER_TYPES.join(', ')}
75
+
76
+ Options:
77
+ -w, --worker <type> Worker type to run
78
+ -d, --daemon Run as daemon
79
+ -b, --benchmark Run benchmarks
80
+ -s, --status Show status
81
+ -t, --timeout <ms> Execution timeout (default: 60000)
82
+ -v, --verbose Verbose output
83
+ -h, --help Show help
84
+
85
+ Environment:
86
+ CLAUDE_FLOW_HEADLESS=true Enable headless mode
87
+ CLAUDE_CODE_HEADLESS=true Enable Claude Code headless
88
+
89
+ Examples:
90
+ headless --worker audit --timeout 120000
91
+ headless --daemon
92
+ headless --benchmark
93
+ `);
94
+ }
95
+ /**
96
+ * Run a specific worker
97
+ */
98
+ async function runWorker(workerType, timeout) {
99
+ console.log(`[Headless] Starting worker: ${workerType}`);
100
+ const executor = new HeadlessWorkerExecutor(process.cwd(), {
101
+ maxConcurrent: 1,
102
+ defaultTimeoutMs: timeout
103
+ });
104
+ try {
105
+ const result = await executor.execute(workerType, {
106
+ timeoutMs: timeout,
107
+ model: 'sonnet',
108
+ sandbox: 'permissive'
109
+ });
110
+ if (result.success) {
111
+ console.log(`[Headless] Worker ${workerType} completed successfully`);
112
+ console.log(`[Headless] Duration: ${result.durationMs}ms`);
113
+ if (result.output) {
114
+ console.log(`[Headless] Output: ${JSON.stringify(result.output).slice(0, 500)}...`);
115
+ }
116
+ }
117
+ else {
118
+ console.error(`[Headless] Worker ${workerType} failed: ${result.error}`);
119
+ process.exit(1);
120
+ }
121
+ }
122
+ finally {
123
+ // executor doesn't have shutdown, just let it be garbage collected
124
+ }
125
+ }
126
+ /**
127
+ * Run daemon mode
128
+ */
129
+ async function runDaemon() {
130
+ console.log('[Headless] Starting daemon mode...');
131
+ // Start the daemon
132
+ const daemon = await startDaemon(process.cwd());
133
+ console.log('[Headless] Daemon started');
134
+ console.log('[Headless] Press Ctrl+C to stop');
135
+ // Handle shutdown
136
+ process.on('SIGINT', async () => {
137
+ console.log('\n[Headless] Shutting down daemon...');
138
+ await stopDaemon();
139
+ process.exit(0);
140
+ });
141
+ process.on('SIGTERM', async () => {
142
+ console.log('\n[Headless] Received SIGTERM, shutting down...');
143
+ await stopDaemon();
144
+ process.exit(0);
145
+ });
146
+ // Keep process running
147
+ await new Promise(() => { });
148
+ }
149
+ /**
150
+ * Run benchmarks
151
+ */
152
+ async function runBenchmarks() {
153
+ console.log('=== Claude Flow V3 Performance Benchmarks ===\n');
154
+ // Initialize intelligence
155
+ await initializeIntelligence();
156
+ // SONA Benchmark
157
+ console.log('1. SONA Adaptation Benchmark (10,000 iterations)...');
158
+ const sonaResult = benchmarkAdaptation(10000);
159
+ console.log(` Average: ${sonaResult.avgMs.toFixed(4)}ms`);
160
+ console.log(` Target (<0.05ms): ${sonaResult.targetMet ? '✅ ACHIEVED' : '❌ NOT MET'}`);
161
+ // Flash Attention Benchmark
162
+ console.log('\n2. Flash Attention Search Benchmark...');
163
+ const dim = 384;
164
+ const count = 10000;
165
+ const query = new Float32Array(dim).map(() => Math.random() - 0.5);
166
+ const vectors = Array.from({ length: count }, () => new Float32Array(dim).map(() => Math.random() - 0.5));
167
+ // Warmup
168
+ flashAttentionSearch(query, vectors, { k: 10 });
169
+ const flashStart = performance.now();
170
+ for (let i = 0; i < 10; i++) {
171
+ flashAttentionSearch(query, vectors, { k: 10 });
172
+ }
173
+ const flashTime = (performance.now() - flashStart) / 10;
174
+ const throughput = count / flashTime;
175
+ // Brute force comparison
176
+ const bruteStart = performance.now();
177
+ for (let i = 0; i < 10; i++) {
178
+ const scores = batchCosineSim(query, vectors);
179
+ Array.from({ length: count }, (_, i) => i)
180
+ .sort((a, b) => scores[b] - scores[a])
181
+ .slice(0, 10);
182
+ }
183
+ const bruteTime = (performance.now() - bruteStart) / 10;
184
+ const speedup = bruteTime / flashTime;
185
+ console.log(` Throughput: ${throughput.toFixed(0)} vectors/ms`);
186
+ console.log(` Time for 10k vectors: ${flashTime.toFixed(2)}ms`);
187
+ console.log(` Speedup vs brute force: ${speedup.toFixed(2)}x`);
188
+ // HNSW Status
189
+ console.log('\n3. HNSW Index Status...');
190
+ const hnswStatus = getHNSWStatus();
191
+ console.log(` Entries indexed: ${hnswStatus.entryCount}`);
192
+ console.log(` Initialized: ${hnswStatus.initialized}`);
193
+ // Intelligence Stats
194
+ console.log('\n4. Intelligence System Stats...');
195
+ const stats = getIntelligenceStats();
196
+ console.log(` SONA enabled: ${stats.sonaEnabled}`);
197
+ console.log(` Patterns learned: ${stats.patternsLearned}`);
198
+ console.log(` Avg adaptation time: ${stats.avgAdaptationTime.toFixed(4)}ms`);
199
+ console.log('\n=== Benchmark Complete ===');
200
+ return {
201
+ sona: {
202
+ avgMs: sonaResult.avgMs,
203
+ targetMet: sonaResult.targetMet
204
+ },
205
+ flashAttention: {
206
+ throughputPerMs: throughput,
207
+ speedup
208
+ },
209
+ hnsw: {
210
+ entriesIndexed: hnswStatus.entryCount,
211
+ searchTime: flashTime
212
+ }
213
+ };
214
+ }
215
+ /**
216
+ * Show system status
217
+ */
218
+ async function showStatus() {
219
+ console.log('=== Claude Flow V3 System Status ===\n');
220
+ // Check daemon
221
+ const daemon = getDaemon();
222
+ console.log('Daemon:');
223
+ if (daemon) {
224
+ const status = daemon.getStatus();
225
+ console.log(` Running: ${status.running}`);
226
+ console.log(` PID: ${status.pid}`);
227
+ console.log(` Workers: ${status.workers.size}`);
228
+ }
229
+ else {
230
+ console.log(' Not initialized');
231
+ }
232
+ // Intelligence
233
+ const stats = getIntelligenceStats();
234
+ console.log('\nIntelligence:');
235
+ console.log(` SONA enabled: ${stats.sonaEnabled}`);
236
+ console.log(` ReasoningBank size: ${stats.reasoningBankSize}`);
237
+ console.log(` Patterns learned: ${stats.patternsLearned}`);
238
+ // HNSW
239
+ const hnsw = getHNSWStatus();
240
+ console.log('\nHNSW Index:');
241
+ console.log(` Initialized: ${hnsw.initialized}`);
242
+ console.log(` Entries: ${hnsw.entryCount}`);
243
+ console.log('\nEnvironment:');
244
+ console.log(` CLAUDE_FLOW_HEADLESS: ${process.env.CLAUDE_FLOW_HEADLESS || 'not set'}`);
245
+ console.log(` CLAUDE_CODE_HEADLESS: ${process.env.CLAUDE_CODE_HEADLESS || 'not set'}`);
246
+ console.log(` NODE_ENV: ${process.env.NODE_ENV || 'development'}`);
247
+ }
248
+ /**
249
+ * Main entry point
250
+ */
251
+ async function main() {
252
+ // Set headless environment
253
+ process.env.CLAUDE_FLOW_HEADLESS = 'true';
254
+ const config = parseArgs();
255
+ try {
256
+ switch (config.mode) {
257
+ case 'worker':
258
+ if (!config.workerType || !HEADLESS_WORKER_TYPES.includes(config.workerType)) {
259
+ console.error(`Invalid worker type. Available: ${HEADLESS_WORKER_TYPES.join(', ')}`);
260
+ process.exit(1);
261
+ }
262
+ await runWorker(config.workerType, config.timeout || 60000);
263
+ break;
264
+ case 'daemon':
265
+ await runDaemon();
266
+ break;
267
+ case 'benchmark':
268
+ await runBenchmarks();
269
+ break;
270
+ case 'status':
271
+ default:
272
+ await showStatus();
273
+ break;
274
+ }
275
+ }
276
+ catch (error) {
277
+ console.error('[Headless] Error:', error instanceof Error ? error.message : String(error));
278
+ process.exit(1);
279
+ }
280
+ }
281
+ // Run if executed directly
282
+ main().catch(console.error);
283
+ export { main, runWorker, runDaemon, runBenchmarks, showStatus };
284
+ //# sourceMappingURL=headless.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless.js","sourceRoot":"","sources":["../../../src/runtime/headless.ts"],"names":[],"mappings":"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"}