genai-electron 0.5.0 → 0.7.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 (77) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +87 -85
  3. package/dist/config/defaults.d.ts +29 -17
  4. package/dist/config/defaults.d.ts.map +1 -1
  5. package/dist/config/defaults.js +31 -19
  6. package/dist/config/defaults.js.map +1 -1
  7. package/dist/config/reasoning-models.d.ts.map +1 -1
  8. package/dist/config/reasoning-models.js.map +1 -1
  9. package/dist/index.d.ts +5 -3
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/managers/BinaryManager.d.ts.map +1 -1
  14. package/dist/managers/BinaryManager.js +12 -3
  15. package/dist/managers/BinaryManager.js.map +1 -1
  16. package/dist/managers/DiffusionServerManager.d.ts +5 -0
  17. package/dist/managers/DiffusionServerManager.d.ts.map +1 -1
  18. package/dist/managers/DiffusionServerManager.js +106 -31
  19. package/dist/managers/DiffusionServerManager.js.map +1 -1
  20. package/dist/managers/GenerationRegistry.d.ts.map +1 -1
  21. package/dist/managers/GenerationRegistry.js +1 -1
  22. package/dist/managers/GenerationRegistry.js.map +1 -1
  23. package/dist/managers/LlamaServerManager.d.ts +17 -0
  24. package/dist/managers/LlamaServerManager.d.ts.map +1 -1
  25. package/dist/managers/LlamaServerManager.js +296 -30
  26. package/dist/managers/LlamaServerManager.js.map +1 -1
  27. package/dist/managers/ModelManager.d.ts +3 -0
  28. package/dist/managers/ModelManager.d.ts.map +1 -1
  29. package/dist/managers/ModelManager.js +208 -0
  30. package/dist/managers/ModelManager.js.map +1 -1
  31. package/dist/managers/ResourceOrchestrator.d.ts.map +1 -1
  32. package/dist/managers/ResourceOrchestrator.js +62 -54
  33. package/dist/managers/ResourceOrchestrator.js.map +1 -1
  34. package/dist/managers/ServerManager.d.ts +1 -1
  35. package/dist/managers/ServerManager.d.ts.map +1 -1
  36. package/dist/managers/ServerManager.js +6 -2
  37. package/dist/managers/ServerManager.js.map +1 -1
  38. package/dist/managers/StorageManager.d.ts.map +1 -1
  39. package/dist/managers/StorageManager.js +51 -0
  40. package/dist/managers/StorageManager.js.map +1 -1
  41. package/dist/process/health-check.d.ts +4 -3
  42. package/dist/process/health-check.d.ts.map +1 -1
  43. package/dist/process/health-check.js +12 -6
  44. package/dist/process/health-check.js.map +1 -1
  45. package/dist/process/log-manager.d.ts +11 -1
  46. package/dist/process/log-manager.d.ts.map +1 -1
  47. package/dist/process/log-manager.js +49 -2
  48. package/dist/process/log-manager.js.map +1 -1
  49. package/dist/process/port-utils.d.ts +3 -0
  50. package/dist/process/port-utils.d.ts.map +1 -0
  51. package/dist/process/port-utils.js +28 -0
  52. package/dist/process/port-utils.js.map +1 -0
  53. package/dist/system/SystemInfo.d.ts +2 -3
  54. package/dist/system/SystemInfo.d.ts.map +1 -1
  55. package/dist/system/SystemInfo.js +91 -17
  56. package/dist/system/SystemInfo.js.map +1 -1
  57. package/dist/types/images.d.ts +2 -2
  58. package/dist/types/images.d.ts.map +1 -1
  59. package/dist/types/index.d.ts +2 -2
  60. package/dist/types/index.d.ts.map +1 -1
  61. package/dist/types/models.d.ts +9 -0
  62. package/dist/types/models.d.ts.map +1 -1
  63. package/dist/types/servers.d.ts +21 -2
  64. package/dist/types/servers.d.ts.map +1 -1
  65. package/dist/utils/debug-log.d.ts +3 -0
  66. package/dist/utils/debug-log.d.ts.map +1 -0
  67. package/dist/utils/debug-log.js +10 -0
  68. package/dist/utils/debug-log.js.map +1 -0
  69. package/dist/utils/kv-cache-math.d.ts +6 -0
  70. package/dist/utils/kv-cache-math.d.ts.map +1 -0
  71. package/dist/utils/kv-cache-math.js +35 -0
  72. package/dist/utils/kv-cache-math.js.map +1 -0
  73. package/dist/utils/model-metadata-helpers.d.ts +2 -0
  74. package/dist/utils/model-metadata-helpers.d.ts.map +1 -1
  75. package/dist/utils/model-metadata-helpers.js +28 -0
  76. package/dist/utils/model-metadata-helpers.js.map +1 -1
  77. package/package.json +73 -73
@@ -68,6 +68,11 @@ export class ModelManager {
68
68
  }
69
69
  const modelId = this.generateModelId(config.name);
70
70
  const filename = this.extractFilename(downloadURL, sourceFile);
71
+ const shardBasename = sourceFile ? (sourceFile.split('/').pop() ?? filename) : filename;
72
+ const extraShardFiles = this.resolveShardFilenames(shardBasename, config);
73
+ if (extraShardFiles.length > 0) {
74
+ return this.downloadShardedModel(config, downloadURL, sourceRepo, sourceFile, shardBasename, extraShardFiles);
75
+ }
71
76
  const destinationPath = storageManager.getModelPath(config.type, filename);
72
77
  const exists = await fileExists(destinationPath);
73
78
  if (exists) {
@@ -322,6 +327,207 @@ export class ModelManager {
322
327
  await storageManager.saveModelMetadata(modelInfo);
323
328
  return modelInfo;
324
329
  }
330
+ resolveShardFilenames(primaryFilename, config) {
331
+ if (config.shardFiles && config.shardFiles.length > 0) {
332
+ return config.shardFiles;
333
+ }
334
+ const match = /^(.*)-(\d{5})-of-(\d{5})\.gguf$/i.exec(primaryFilename);
335
+ if (!match) {
336
+ return [];
337
+ }
338
+ const shardIndex = parseInt(match[2], 10);
339
+ const shardTotal = parseInt(match[3], 10);
340
+ if (shardTotal <= 1) {
341
+ return [];
342
+ }
343
+ if (shardIndex !== 1) {
344
+ throw new DownloadError(`Multi-shard model download must point at the FIRST shard (got shard ${shardIndex} of ${shardTotal}): ${primaryFilename}`, {
345
+ suggestion: `Use the -00001-of-${match[3]} file; the remaining shards are downloaded automatically`,
346
+ });
347
+ }
348
+ const MAX_SHARDS = 500;
349
+ if (shardTotal > MAX_SHARDS) {
350
+ throw new DownloadError(`Implausible shard count ${shardTotal} in filename: ${primaryFilename} (max supported: ${MAX_SHARDS})`, { suggestion: 'Check the filename, or list the shards explicitly via shardFiles' });
351
+ }
352
+ const prefix = match[1];
353
+ const suffix = primaryFilename.slice(prefix.length + 1 + 5);
354
+ const siblings = [];
355
+ for (let i = 2; i <= shardTotal; i++) {
356
+ siblings.push(`${prefix}-${String(i).padStart(5, '0')}${suffix}`);
357
+ }
358
+ return siblings;
359
+ }
360
+ resolveShardURL(shardEntry, config, primaryURL) {
361
+ if (/^https?:\/\//i.test(shardEntry)) {
362
+ return shardEntry;
363
+ }
364
+ if (config.source === 'huggingface') {
365
+ const hfFile = config.file.includes('/')
366
+ ? config.file.replace(/[^/]+$/, () => shardEntry)
367
+ : shardEntry;
368
+ return getHuggingFaceURL(config.repo, hfFile);
369
+ }
370
+ try {
371
+ const url = new URL(primaryURL);
372
+ url.pathname = url.pathname.slice(0, url.pathname.lastIndexOf('/') + 1) + shardEntry;
373
+ return url.toString();
374
+ }
375
+ catch {
376
+ return primaryURL.slice(0, primaryURL.lastIndexOf('/') + 1) + shardEntry;
377
+ }
378
+ }
379
+ async downloadShardedModel(config, primaryURL, sourceRepo, sourceFile, primaryFilename, extraShardFiles) {
380
+ const modelId = this.generateModelId(config.name);
381
+ try {
382
+ await storageManager.loadModelMetadata(config.type, modelId);
383
+ throw new DownloadError(`Model already exists: ${modelId}`, { modelId });
384
+ }
385
+ catch (error) {
386
+ if (error instanceof DownloadError)
387
+ throw error;
388
+ }
389
+ const modelDir = getModelDirectory(config.type, modelId);
390
+ const shardItems = [
391
+ {
392
+ url: primaryURL,
393
+ filename: primaryFilename,
394
+ destination: path.join(modelDir, sanitizeFilename(primaryFilename)),
395
+ },
396
+ ];
397
+ for (const entry of extraShardFiles) {
398
+ const url = this.resolveShardURL(entry, config, primaryURL);
399
+ const shardFilename = this.extractFilename(url, /^https?:\/\//i.test(entry) ? undefined : entry);
400
+ shardItems.push({
401
+ url,
402
+ filename: shardFilename,
403
+ destination: path.join(modelDir, sanitizeFilename(shardFilename)),
404
+ });
405
+ }
406
+ for (const item of shardItems) {
407
+ if (await fileExists(item.destination)) {
408
+ throw new DownloadError(`Model file already exists: ${item.filename}`, {
409
+ path: item.destination,
410
+ });
411
+ }
412
+ }
413
+ let ggufMetadata;
414
+ try {
415
+ const parsedGGUF = await fetchGGUFMetadata(primaryURL);
416
+ ggufMetadata = this.createGGUFMetadataFromParsed(parsedGGUF);
417
+ }
418
+ catch (error) {
419
+ const errorMessage = error instanceof Error ? error.message : String(error);
420
+ throw new DownloadError(`Failed to fetch GGUF metadata before download: ${errorMessage}`, {
421
+ url: primaryURL,
422
+ originalError: error,
423
+ suggestion: 'Verify the URL points to a valid GGUF file. Check network connectivity if the error persists.',
424
+ });
425
+ }
426
+ const itemSizes = [];
427
+ await Promise.all(shardItems.map(async (item, index) => {
428
+ try {
429
+ const controller = new AbortController();
430
+ const timeout = setTimeout(() => controller.abort(), 10_000);
431
+ const response = await fetch(item.url, { method: 'HEAD', signal: controller.signal });
432
+ clearTimeout(timeout);
433
+ itemSizes[index] = parseInt(response.headers.get('content-length') || '0', 10);
434
+ }
435
+ catch {
436
+ itemSizes[index] = 0;
437
+ }
438
+ }));
439
+ let totalBytes = itemSizes.reduce((sum, s) => sum + s, 0);
440
+ await mkdir(modelDir, { recursive: true });
441
+ const downloadedPaths = [];
442
+ let completedBytes = 0;
443
+ try {
444
+ for (let i = 0; i < shardItems.length; i++) {
445
+ const item = shardItems[i];
446
+ const wrappedProgress = config.onProgress
447
+ ? (downloaded, itemTotal) => {
448
+ if (itemSizes[i] === 0 && itemTotal > 0) {
449
+ itemSizes[i] = itemTotal;
450
+ totalBytes = itemSizes.reduce((sum, s) => sum + s, 0);
451
+ }
452
+ const aggregateDownloaded = completedBytes + downloaded;
453
+ const clampedTotal = Math.max(totalBytes, aggregateDownloaded);
454
+ config.onProgress(aggregateDownloaded, clampedTotal);
455
+ }
456
+ : undefined;
457
+ await this.downloader.download({
458
+ url: item.url,
459
+ destination: item.destination,
460
+ onProgress: wrappedProgress,
461
+ });
462
+ downloadedPaths.push(item.destination);
463
+ completedBytes += await getFileSize(item.destination);
464
+ }
465
+ if (config.checksum) {
466
+ const calculatedChecksum = await calculateSHA256(shardItems[0].destination);
467
+ const expectedChecksum = config.checksum.replace(/^sha256:/, '');
468
+ if (calculatedChecksum !== expectedChecksum) {
469
+ throw new DownloadError('Checksum verification failed', {
470
+ expected: expectedChecksum,
471
+ actual: calculatedChecksum,
472
+ });
473
+ }
474
+ }
475
+ }
476
+ catch (error) {
477
+ for (const filePath of downloadedPaths) {
478
+ try {
479
+ await deleteFile(filePath);
480
+ }
481
+ catch {
482
+ }
483
+ }
484
+ try {
485
+ await rmdir(modelDir);
486
+ }
487
+ catch {
488
+ }
489
+ if (error instanceof DownloadError) {
490
+ throw error;
491
+ }
492
+ throw new DownloadError('Multi-shard download failed', {
493
+ error: error instanceof Error ? error.message : String(error),
494
+ });
495
+ }
496
+ const shards = [];
497
+ let aggregateSize = 0;
498
+ for (let i = 0; i < shardItems.length; i++) {
499
+ const item = shardItems[i];
500
+ const fileSize = await getFileSize(item.destination);
501
+ aggregateSize += fileSize;
502
+ const shard = { path: item.destination, size: fileSize };
503
+ if (i === 0 && config.checksum) {
504
+ shard.checksum = formatChecksum(config.checksum.replace(/^sha256:/, ''));
505
+ }
506
+ shards.push(shard);
507
+ }
508
+ const modelInfo = {
509
+ id: modelId,
510
+ name: config.name,
511
+ type: config.type,
512
+ size: aggregateSize,
513
+ path: shardItems[0].destination,
514
+ downloadedAt: new Date().toISOString(),
515
+ source: {
516
+ type: config.source,
517
+ url: primaryURL,
518
+ repo: sourceRepo,
519
+ file: sourceFile,
520
+ },
521
+ checksum: config.checksum
522
+ ? formatChecksum(config.checksum.replace(/^sha256:/, ''))
523
+ : undefined,
524
+ supportsReasoning: detectReasoningSupport(primaryFilename),
525
+ ggufMetadata,
526
+ shards,
527
+ };
528
+ await storageManager.saveModelMetadata(modelInfo);
529
+ return modelInfo;
530
+ }
325
531
  resolveComponentURL(spec) {
326
532
  if (spec.source === 'url') {
327
533
  if (!spec.url) {
@@ -428,6 +634,8 @@ export class ModelManager {
428
634
  block_count: getArchField(parsedGGUF.metadata, 'block_count'),
429
635
  context_length: getArchField(parsedGGUF.metadata, 'context_length'),
430
636
  attention_head_count: getArchField(parsedGGUF.metadata, 'attention.head_count'),
637
+ attention_head_count_kv: getArchField(parsedGGUF.metadata, 'attention.head_count_kv'),
638
+ attention_key_length: getArchField(parsedGGUF.metadata, 'attention.key_length'),
431
639
  embedding_length: getArchField(parsedGGUF.metadata, 'embedding_length'),
432
640
  feed_forward_length: getArchField(parsedGGUF.metadata, 'feed_forward_length'),
433
641
  attention_layer_norm_rms_epsilon: getArchField(parsedGGUF.metadata, 'attention.layer_norm_rms_epsilon'),
@@ -1 +1 @@
1
- {"version":3,"file":"ModelManager.js","sourceRoot":"","sources":["../../src/managers/ModelManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelManager.js","sourceRoot":"","sources":["../../src/managers/ModelManager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceOrchestrator.d.ts","sourceRoot":"","sources":["../../src/managers/ResourceOrchestrator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAMpG,MAAM,WAAW,aAAa;IAE5B,MAAM,EAAE,YAAY,CAAC;IAErB,UAAU,EAAE,OAAO,CAAC;IAEpB,OAAO,EAAE,IAAI,CAAC;CACf;AAsCD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAQ;IAErD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,aAAa,CAA8B;gBAWjD,UAAU,EAAE,UAAU,YAA2B,EACjD,WAAW,EAAE,kBAAkB,EAC/B,eAAe,EAAE,sBAAsB,EACvC,YAAY,GAAE,YAAyC;IA4BnD,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;YA6DjF,oBAAoB;YA8DpB,gBAAgB;YAiEhB,sBAAsB;YAuCtB,UAAU;YAwCV,SAAS;IAiDvB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,KAAK;IAcb,eAAe,IAAI,IAAI;IAoBvB,aAAa,IAAI,aAAa,GAAG,SAAS;IAqBpC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB9B,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;CAG3C"}
1
+ {"version":3,"file":"ResourceOrchestrator.d.ts","sourceRoot":"","sources":["../../src/managers/ResourceOrchestrator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EACV,YAAY,EAEZ,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAQ3B,MAAM,WAAW,aAAa;IAE5B,MAAM,EAAE,YAAY,CAAC;IAErB,UAAU,EAAE,OAAO,CAAC;IAEpB,OAAO,EAAE,IAAI,CAAC;CACf;AAsCD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAQ;IAErD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,aAAa,CAA8B;gBAWjD,UAAU,EAAE,UAAU,YAA2B,EACjD,WAAW,EAAE,kBAAkB,EAC/B,eAAe,EAAE,sBAAsB,EACvC,YAAY,GAAE,YAAyC;IA4BnD,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;YA6DjF,oBAAoB;YA8DpB,gBAAgB;YA0EhB,sBAAsB;YAuCtB,UAAU;YAwCV,SAAS;IAiDvB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,KAAK;IAcb,eAAe,IAAI,IAAI;IAoBvB,aAAa,IAAI,aAAa,GAAG,SAAS;IAqBpC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB9B,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;CAG3C"}
@@ -1,6 +1,8 @@
1
1
  import { SystemInfo } from '../system/SystemInfo.js';
2
2
  import { ModelManager } from './ModelManager.js';
3
+ import { estimateKVBytesPerToken } from '../utils/kv-cache-math.js';
3
4
  import { ServerError } from '../errors/index.js';
5
+ import { debugLog } from '../utils/debug-log.js';
4
6
  export class ResourceOrchestrator {
5
7
  static RELOAD_RETRY_DELAY_MS = 2000;
6
8
  systemInfo;
@@ -16,101 +18,107 @@ export class ResourceOrchestrator {
16
18
  this.modelManager = modelManager;
17
19
  }
18
20
  async orchestrateImageGeneration(config) {
19
- console.log('[Orchestrator] orchestrateImageGeneration called');
21
+ debugLog('[Orchestrator] orchestrateImageGeneration called');
20
22
  if (this.pendingReload) {
21
- console.log('[Orchestrator] Awaiting pending LLM reload from previous generation...');
23
+ debugLog('[Orchestrator] Awaiting pending LLM reload from previous generation...');
22
24
  await this.pendingReload;
23
25
  this.pendingReload = null;
24
26
  }
25
27
  const needsOffload = await this.needsOffloadForImage();
26
28
  const llamaIsRunning = this.llamaServer.isRunning();
27
- console.log('[Orchestrator] needsOffload:', needsOffload);
28
- console.log('[Orchestrator] llamaServer.isRunning():', llamaIsRunning);
29
+ debugLog('[Orchestrator] needsOffload:', needsOffload);
30
+ debugLog('[Orchestrator] llamaServer.isRunning():', llamaIsRunning);
29
31
  if (needsOffload && llamaIsRunning) {
30
- console.log('[Orchestrator] ⚠️ Resources constrained - offloading LLM before generation');
32
+ debugLog('[Orchestrator] ⚠️ Resources constrained - offloading LLM before generation');
31
33
  await this.offloadLLM();
32
34
  let result;
33
35
  try {
34
- console.log('[Orchestrator] Generating image with LLM offloaded...');
36
+ debugLog('[Orchestrator] Generating image with LLM offloaded...');
35
37
  result = await this.diffusionServer.executeImageGeneration(config);
36
38
  }
37
39
  catch (error) {
38
- console.log('[Orchestrator] Image generation failed, reloading LLM in background...');
40
+ debugLog('[Orchestrator] Image generation failed, reloading LLM in background...');
39
41
  this.fireAndForgetReload();
40
42
  throw error;
41
43
  }
42
- console.log('[Orchestrator] Image ready, reloading LLM in background...');
44
+ debugLog('[Orchestrator] Image ready, reloading LLM in background...');
43
45
  this.fireAndForgetReload();
44
46
  return result;
45
47
  }
46
48
  else {
47
49
  if (!needsOffload) {
48
- console.log('[Orchestrator] ✅ Sufficient resources - generating directly without offload');
50
+ debugLog('[Orchestrator] ✅ Sufficient resources - generating directly without offload');
49
51
  }
50
52
  else {
51
- console.log('[Orchestrator] ✅ LLM not running - generating directly');
53
+ debugLog('[Orchestrator] ✅ LLM not running - generating directly');
52
54
  }
53
55
  return await this.diffusionServer.executeImageGeneration(config);
54
56
  }
55
57
  }
56
58
  async needsOffloadForImage() {
57
- console.log('[Orchestrator] Checking if offload needed...');
59
+ debugLog('[Orchestrator] Checking if offload needed...');
58
60
  const memory = this.systemInfo.getMemoryInfo();
59
61
  const capabilities = await this.systemInfo.detect();
60
62
  const llamaUsage = await this.estimateLLMUsage();
61
63
  const diffusionUsage = await this.estimateDiffusionUsage();
62
64
  const isGPUSystem = capabilities.gpu.available && capabilities.gpu.vram;
63
- console.log('[Orchestrator] System type:', isGPUSystem ? 'GPU' : 'CPU-only');
65
+ debugLog('[Orchestrator] System type:', isGPUSystem ? 'GPU' : 'CPU-only');
64
66
  if (isGPUSystem) {
65
67
  const totalVRAM = capabilities.gpu.vram || 0;
66
68
  const vramNeeded = (llamaUsage.vram || 0) + (diffusionUsage.vram || 0);
67
69
  const threshold = totalVRAM * 0.75;
68
- console.log('[Orchestrator] VRAM Analysis:');
69
- console.log(' - LLM VRAM usage:', (llamaUsage.vram || 0) / 1024 ** 3, 'GB');
70
- console.log(' - Diffusion VRAM usage:', (diffusionUsage.vram || 0) / 1024 ** 3, 'GB');
71
- console.log(' - Total VRAM needed:', vramNeeded / 1024 ** 3, 'GB');
72
- console.log(' - Total VRAM available:', totalVRAM / 1024 ** 3, 'GB');
73
- console.log(' - Threshold (75%):', threshold / 1024 ** 3, 'GB');
74
- console.log(' - Offload needed:', vramNeeded > threshold);
70
+ debugLog('[Orchestrator] VRAM Analysis:');
71
+ debugLog(' - LLM VRAM usage:', (llamaUsage.vram || 0) / 1024 ** 3, 'GB');
72
+ debugLog(' - Diffusion VRAM usage:', (diffusionUsage.vram || 0) / 1024 ** 3, 'GB');
73
+ debugLog(' - Total VRAM needed:', vramNeeded / 1024 ** 3, 'GB');
74
+ debugLog(' - Total VRAM available:', totalVRAM / 1024 ** 3, 'GB');
75
+ debugLog(' - Threshold (75%):', threshold / 1024 ** 3, 'GB');
76
+ debugLog(' - Offload needed:', vramNeeded > threshold);
75
77
  return vramNeeded > threshold;
76
78
  }
77
79
  else {
78
80
  const ramNeeded = llamaUsage.ram + diffusionUsage.ram;
79
81
  const threshold = memory.available * 0.75;
80
- console.log('[Orchestrator] RAM Analysis:');
81
- console.log(' - LLM RAM usage:', llamaUsage.ram / 1024 ** 3, 'GB');
82
- console.log(' - Diffusion RAM usage:', diffusionUsage.ram / 1024 ** 3, 'GB');
83
- console.log(' - Total RAM needed:', ramNeeded / 1024 ** 3, 'GB');
84
- console.log(' - Available RAM:', memory.available / 1024 ** 3, 'GB');
85
- console.log(' - Threshold (75%):', threshold / 1024 ** 3, 'GB');
86
- console.log(' - Offload needed:', ramNeeded > threshold);
82
+ debugLog('[Orchestrator] RAM Analysis:');
83
+ debugLog(' - LLM RAM usage:', llamaUsage.ram / 1024 ** 3, 'GB');
84
+ debugLog(' - Diffusion RAM usage:', diffusionUsage.ram / 1024 ** 3, 'GB');
85
+ debugLog(' - Total RAM needed:', ramNeeded / 1024 ** 3, 'GB');
86
+ debugLog(' - Available RAM:', memory.available / 1024 ** 3, 'GB');
87
+ debugLog(' - Threshold (75%):', threshold / 1024 ** 3, 'GB');
88
+ debugLog(' - Offload needed:', ramNeeded > threshold);
87
89
  return ramNeeded > threshold;
88
90
  }
89
91
  }
90
92
  async estimateLLMUsage() {
91
93
  if (!this.llamaServer.isRunning()) {
92
- console.log('[Orchestrator] LLM not running - usage: 0');
94
+ debugLog('[Orchestrator] LLM not running - usage: 0');
93
95
  return { ram: 0, vram: 0 };
94
96
  }
95
97
  const config = this.llamaServer.getConfig();
96
98
  if (!config) {
97
- console.log('[Orchestrator] LLM config not found - usage: 0');
99
+ debugLog('[Orchestrator] LLM config not found - usage: 0');
98
100
  return { ram: 0, vram: 0 };
99
101
  }
100
102
  try {
101
103
  const modelInfo = await this.modelManager.getModelInfo(config.modelId);
102
104
  const gpuLayers = config.gpuLayers || 0;
103
105
  const totalLayers = await this.modelManager.getModelLayerCount(config.modelId);
104
- console.log('[Orchestrator] LLM model:', config.modelId);
105
- console.log('[Orchestrator] LLM model size:', modelInfo.size / 1024 ** 3, 'GB');
106
- console.log('[Orchestrator] LLM GPU layers:', gpuLayers, '/', totalLayers);
106
+ const llamaConfig = config;
107
+ const kvBytes = modelInfo.ggufMetadata?.block_count
108
+ ? (llamaConfig.contextSize ?? 4096) *
109
+ estimateKVBytesPerToken(modelInfo, llamaConfig.cacheTypeK, llamaConfig.cacheTypeV)
110
+ : 0;
111
+ debugLog('[Orchestrator] LLM model:', config.modelId);
112
+ debugLog('[Orchestrator] LLM model size:', modelInfo.size / 1024 ** 3, 'GB');
113
+ debugLog('[Orchestrator] LLM GPU layers:', gpuLayers, '/', totalLayers);
114
+ debugLog('[Orchestrator] LLM KV cache:', kvBytes / 1024 ** 3, 'GB');
107
115
  if (gpuLayers > 0) {
108
116
  const gpuRatio = Math.min(gpuLayers / totalLayers, 1.0);
109
117
  const result = {
110
- ram: modelInfo.size * (1 - gpuRatio) * 1.2,
111
- vram: modelInfo.size * gpuRatio * 1.2,
118
+ ram: (modelInfo.size * 1.2 + kvBytes) * (1 - gpuRatio),
119
+ vram: (modelInfo.size * 1.2 + kvBytes) * gpuRatio,
112
120
  };
113
- console.log('[Orchestrator] LLM usage (mixed):', {
121
+ debugLog('[Orchestrator] LLM usage (mixed):', {
114
122
  ram: `${result.ram / 1024 ** 3} GB`,
115
123
  vram: `${result.vram / 1024 ** 3} GB`,
116
124
  });
@@ -118,10 +126,10 @@ export class ResourceOrchestrator {
118
126
  }
119
127
  else {
120
128
  const result = {
121
- ram: modelInfo.size * 1.2,
129
+ ram: modelInfo.size * 1.2 + kvBytes,
122
130
  vram: 0,
123
131
  };
124
- console.log('[Orchestrator] LLM usage (CPU-only):', {
132
+ debugLog('[Orchestrator] LLM usage (CPU-only):', {
125
133
  ram: `${result.ram / 1024 ** 3} GB`,
126
134
  vram: '0 GB',
127
135
  });
@@ -129,7 +137,7 @@ export class ResourceOrchestrator {
129
137
  }
130
138
  }
131
139
  catch (error) {
132
- console.log('[Orchestrator] Failed to get LLM model info:', error);
140
+ debugLog('[Orchestrator] Failed to get LLM model info:', error);
133
141
  return { ram: 0, vram: 0 };
134
142
  }
135
143
  }
@@ -137,39 +145,39 @@ export class ResourceOrchestrator {
137
145
  const config = this.diffusionServer.getConfig();
138
146
  if (!config) {
139
147
  const defaultSize = 6.5 * 1024 * 1024 * 1024;
140
- console.log('[Orchestrator] Diffusion config not found - using default estimate: 6.5GB');
148
+ debugLog('[Orchestrator] Diffusion config not found - using default estimate: 6.5GB');
141
149
  return { ram: defaultSize * 1.2, vram: defaultSize * 1.2 };
142
150
  }
143
151
  try {
144
152
  const modelInfo = await this.modelManager.getModelInfo(config.modelId);
145
- console.log('[Orchestrator] Diffusion model:', config.modelId);
146
- console.log('[Orchestrator] Diffusion model size:', modelInfo.size / 1024 ** 3, 'GB');
153
+ debugLog('[Orchestrator] Diffusion model:', config.modelId);
154
+ debugLog('[Orchestrator] Diffusion model size:', modelInfo.size / 1024 ** 3, 'GB');
147
155
  const usage = modelInfo.size * 1.2;
148
156
  const result = {
149
157
  ram: usage,
150
158
  vram: usage,
151
159
  };
152
- console.log('[Orchestrator] Diffusion usage:', usage / 1024 ** 3, 'GB (both RAM and VRAM)');
160
+ debugLog('[Orchestrator] Diffusion usage:', usage / 1024 ** 3, 'GB (both RAM and VRAM)');
153
161
  return result;
154
162
  }
155
163
  catch (error) {
156
- console.log('[Orchestrator] Failed to get diffusion model info:', error);
164
+ debugLog('[Orchestrator] Failed to get diffusion model info:', error);
157
165
  const defaultSize = 6.5 * 1024 * 1024 * 1024;
158
- console.log('[Orchestrator] Using default estimate: 6.5GB');
166
+ debugLog('[Orchestrator] Using default estimate: 6.5GB');
159
167
  return { ram: defaultSize * 1.2, vram: defaultSize * 1.2 };
160
168
  }
161
169
  }
162
170
  async offloadLLM() {
163
- console.log('[Orchestrator] offloadLLM called');
171
+ debugLog('[Orchestrator] offloadLLM called');
164
172
  if (!this.llamaServer.isRunning()) {
165
- console.log('[Orchestrator] LLM not running - nothing to offload');
173
+ debugLog('[Orchestrator] LLM not running - nothing to offload');
166
174
  return;
167
175
  }
168
176
  const config = this.llamaServer.getConfig();
169
177
  if (!config) {
170
178
  throw new ServerError('Cannot offload LLM: no configuration found');
171
179
  }
172
- console.log('[Orchestrator] Saving LLM state:', {
180
+ debugLog('[Orchestrator] Saving LLM state:', {
173
181
  modelId: config.modelId,
174
182
  port: config.port,
175
183
  gpuLayers: config.gpuLayers,
@@ -179,24 +187,24 @@ export class ResourceOrchestrator {
179
187
  wasRunning: true,
180
188
  savedAt: new Date(),
181
189
  };
182
- console.log('[Orchestrator] Stopping LLM server...');
190
+ debugLog('[Orchestrator] Stopping LLM server...');
183
191
  await this.llamaServer.stop();
184
- console.log('[Orchestrator] ✅ LLM server stopped successfully');
192
+ debugLog('[Orchestrator] ✅ LLM server stopped successfully');
185
193
  }
186
194
  async reloadLLM() {
187
- console.log('[Orchestrator] reloadLLM called');
195
+ debugLog('[Orchestrator] reloadLLM called');
188
196
  if (!this.savedLLMState || !this.savedLLMState.wasRunning) {
189
- console.log('[Orchestrator] No saved LLM state - nothing to reload');
197
+ debugLog('[Orchestrator] No saved LLM state - nothing to reload');
190
198
  return;
191
199
  }
192
200
  const savedConfig = this.savedLLMState.config;
193
201
  try {
194
- console.log('[Orchestrator] Restarting LLM with saved config:', {
202
+ debugLog('[Orchestrator] Restarting LLM with saved config:', {
195
203
  modelId: savedConfig.modelId,
196
204
  port: savedConfig.port,
197
205
  });
198
206
  await this.llamaServer.start(savedConfig);
199
- console.log('[Orchestrator] ✅ LLM server restarted successfully');
207
+ debugLog('[Orchestrator] ✅ LLM server restarted successfully');
200
208
  this.savedLLMState = undefined;
201
209
  return;
202
210
  }
@@ -204,11 +212,11 @@ export class ResourceOrchestrator {
204
212
  console.warn('[Orchestrator] ⚠️ First reload attempt failed:', firstError);
205
213
  }
206
214
  try {
207
- console.log(`[Orchestrator] Retrying reload after ${ResourceOrchestrator.RELOAD_RETRY_DELAY_MS}ms...`);
215
+ debugLog(`[Orchestrator] Retrying reload after ${ResourceOrchestrator.RELOAD_RETRY_DELAY_MS}ms...`);
208
216
  await this.delay(ResourceOrchestrator.RELOAD_RETRY_DELAY_MS);
209
217
  this.systemInfo.clearCache();
210
218
  await this.llamaServer.start(savedConfig);
211
- console.log('[Orchestrator] ✅ LLM server restarted on retry');
219
+ debugLog('[Orchestrator] ✅ LLM server restarted on retry');
212
220
  this.savedLLMState = undefined;
213
221
  }
214
222
  catch (retryError) {