@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.
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/memory/intelligence.d.ts +124 -3
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +258 -31
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +30 -0
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +135 -0
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/runtime/headless.d.ts +60 -0
- package/dist/src/runtime/headless.d.ts.map +1 -0
- package/dist/src/runtime/headless.js +284 -0
- package/dist/src/runtime/headless.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -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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"}
|