@atomic-chat/core 0.21.1 → 0.21.3

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 (116) hide show
  1. package/dist/backend/advisor/advisor.js +11 -2
  2. package/dist/backend/advisor/advisor.js.map +1 -1
  3. package/dist/backend/install/cuda-guard.d.ts +62 -0
  4. package/dist/backend/install/cuda-guard.js +80 -0
  5. package/dist/backend/install/cuda-guard.js.map +1 -0
  6. package/dist/backend/install/cuda-runtime-source.d.ts +76 -0
  7. package/dist/backend/install/cuda-runtime-source.js +294 -0
  8. package/dist/backend/install/cuda-runtime-source.js.map +1 -0
  9. package/dist/backend/install/index.d.ts +3 -0
  10. package/dist/backend/install/index.js +3 -0
  11. package/dist/backend/install/index.js.map +1 -1
  12. package/dist/backend/install/runtime-backend.d.ts +30 -3
  13. package/dist/backend/install/runtime-backend.js +106 -28
  14. package/dist/backend/install/runtime-backend.js.map +1 -1
  15. package/dist/backend/install/service.d.ts +40 -4
  16. package/dist/backend/install/service.js +175 -31
  17. package/dist/backend/install/service.js.map +1 -1
  18. package/dist/backend/install/windows-launch-check.d.ts +72 -0
  19. package/dist/backend/install/windows-launch-check.js +173 -0
  20. package/dist/backend/install/windows-launch-check.js.map +1 -0
  21. package/dist/backend/installed/installed.d.ts +13 -0
  22. package/dist/backend/installed/installed.js +32 -0
  23. package/dist/backend/installed/installed.js.map +1 -1
  24. package/dist/backend/select/bad-backends.d.ts +68 -0
  25. package/dist/backend/select/bad-backends.js +136 -0
  26. package/dist/backend/select/bad-backends.js.map +1 -0
  27. package/dist/backend/select/features.d.ts +18 -1
  28. package/dist/backend/select/features.js +29 -1
  29. package/dist/backend/select/features.js.map +1 -1
  30. package/dist/backend/select/index.d.ts +1 -0
  31. package/dist/backend/select/index.js +1 -0
  32. package/dist/backend/select/index.js.map +1 -1
  33. package/dist/backend/turboquant.d.ts +8 -0
  34. package/dist/backend/turboquant.js +37 -9
  35. package/dist/backend/turboquant.js.map +1 -1
  36. package/dist/cli/main.d.ts +1 -1
  37. package/dist/contracts/diagnostics.d.ts +1 -1
  38. package/dist/contracts/diagnostics.js +1 -0
  39. package/dist/contracts/diagnostics.js.map +1 -1
  40. package/dist/contracts/errors.d.ts +3 -3
  41. package/dist/contracts/errors.js +15 -0
  42. package/dist/contracts/errors.js.map +1 -1
  43. package/dist/contracts/hardware.d.ts +8 -0
  44. package/dist/contracts/index.d.ts +1 -0
  45. package/dist/contracts/index.js +1 -0
  46. package/dist/contracts/index.js.map +1 -1
  47. package/dist/contracts/load-diag.d.ts +34 -0
  48. package/dist/contracts/load-diag.js +48 -0
  49. package/dist/contracts/load-diag.js.map +1 -0
  50. package/dist/core/atomic-core.d.ts +1 -1
  51. package/dist/core/create.js +16 -13
  52. package/dist/core/create.js.map +1 -1
  53. package/dist/downloads/archive.js +8 -3
  54. package/dist/downloads/archive.js.map +1 -1
  55. package/dist/downloads/disk.d.ts +18 -0
  56. package/dist/downloads/disk.js +32 -1
  57. package/dist/downloads/disk.js.map +1 -1
  58. package/dist/downloads/downloader.js +7 -4
  59. package/dist/downloads/downloader.js.map +1 -1
  60. package/dist/downloads/fs-retry.d.ts +27 -0
  61. package/dist/downloads/fs-retry.js +40 -0
  62. package/dist/downloads/fs-retry.js.map +1 -0
  63. package/dist/downloads/index.d.ts +1 -0
  64. package/dist/downloads/index.js +1 -0
  65. package/dist/downloads/index.js.map +1 -1
  66. package/dist/hardware/index.d.ts +1 -0
  67. package/dist/hardware/index.js +1 -0
  68. package/dist/hardware/index.js.map +1 -1
  69. package/dist/hardware/probe-common.d.ts +9 -1
  70. package/dist/hardware/probe-common.js.map +1 -1
  71. package/dist/hardware/probe-windows.d.ts +10 -2
  72. package/dist/hardware/probe-windows.js +65 -10
  73. package/dist/hardware/probe-windows.js.map +1 -1
  74. package/dist/hardware/probe.js +1 -1
  75. package/dist/hardware/probe.js.map +1 -1
  76. package/dist/hardware/service.d.ts +11 -0
  77. package/dist/hardware/service.js +31 -4
  78. package/dist/hardware/service.js.map +1 -1
  79. package/dist/hardware/windows-registry.d.ts +80 -0
  80. package/dist/hardware/windows-registry.js +197 -0
  81. package/dist/hardware/windows-registry.js.map +1 -0
  82. package/dist/runtime/llamacpp/args.d.ts +11 -0
  83. package/dist/runtime/llamacpp/args.js +28 -3
  84. package/dist/runtime/llamacpp/args.js.map +1 -1
  85. package/dist/runtime/llamacpp/devices.d.ts +11 -0
  86. package/dist/runtime/llamacpp/devices.js +22 -0
  87. package/dist/runtime/llamacpp/devices.js.map +1 -1
  88. package/dist/runtime/llamacpp/errors.d.ts +32 -2
  89. package/dist/runtime/llamacpp/errors.js +77 -4
  90. package/dist/runtime/llamacpp/errors.js.map +1 -1
  91. package/dist/runtime/llamacpp/index.d.ts +1 -0
  92. package/dist/runtime/llamacpp/index.js +1 -0
  93. package/dist/runtime/llamacpp/index.js.map +1 -1
  94. package/dist/runtime/llamacpp/load-failure.d.ts +52 -0
  95. package/dist/runtime/llamacpp/load-failure.js +105 -0
  96. package/dist/runtime/llamacpp/load-failure.js.map +1 -0
  97. package/dist/runtime/llamacpp/load-plan.d.ts +5 -0
  98. package/dist/runtime/llamacpp/load-plan.js +34 -4
  99. package/dist/runtime/llamacpp/load-plan.js.map +1 -1
  100. package/dist/runtime/llamacpp/runtime.d.ts +24 -1
  101. package/dist/runtime/llamacpp/runtime.js +116 -27
  102. package/dist/runtime/llamacpp/runtime.js.map +1 -1
  103. package/dist/runtime/shared/env.js +13 -15
  104. package/dist/runtime/shared/env.js.map +1 -1
  105. package/dist/telemetry/diagnostics.d.ts +10 -2
  106. package/dist/telemetry/diagnostics.js +14 -3
  107. package/dist/telemetry/diagnostics.js.map +1 -1
  108. package/dist/telemetry/envelope.d.ts +6 -0
  109. package/dist/telemetry/envelope.js +12 -2
  110. package/dist/telemetry/envelope.js.map +1 -1
  111. package/dist/telemetry/reporter.d.ts +9 -0
  112. package/dist/telemetry/reporter.js +3 -0
  113. package/dist/telemetry/reporter.js.map +1 -1
  114. package/dist/version.d.ts +1 -1
  115. package/dist/version.js +1 -1
  116. package/package.json +1 -1
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Windows GPUs from `reg.exe`, for when the PowerShell probe cannot run: AppLocker or AMSI blocking
3
+ * `powershell.exe`, a cold start past its deadline, a broken WMI repository that answers no video
4
+ * controller. `reg.exe` is a plain console tool: no execution policy, no script host, nothing for AMSI
5
+ * to scan. It reads the same display class key the PowerShell script reads — one `NNNN` subkey per
6
+ * installed display driver instance, with the driver's name (`DriverDesc`), vendor (`ProviderName`),
7
+ * PCI ids (`MatchingDeviceId`), version and VRAM (`HardwareInformation.qwMemorySize`, or the 32-bit
8
+ * `HardwareInformation.MemorySize`) — and the Khronos Vulkan driver registrations.
9
+ *
10
+ * What it cannot see is which of those driver instances belongs to a device that is present: a card
11
+ * moved to another slot or replaced keeps its old key. So a vendor and device id is listed once (two
12
+ * identical non-NVIDIA cards read as one), and an NVIDIA key counts only as often as `nvidia-smi`,
13
+ * which is authoritative for NVIDIA, reports a GPU of that name. CPU flags have no cheap source
14
+ * outside PowerShell (`wmic` is deprecated and gone from new installs) and stay unknown.
15
+ *
16
+ * Pure: the key names, the parse of `reg query` output and the adapter list. `probe-windows.ts` runs it.
17
+ */
18
+ import { icdVendorOf } from './vulkan.js';
19
+ import { parsePnpDeviceId } from './windows-video.js';
20
+ const DISPLAY_CLASS_GUID = '{4d36e968-e325-11ce-bfc1-08002be10318}';
21
+ /** The display adapter class key, in `reg.exe` spelling. */
22
+ export const DISPLAY_CLASS_REG_KEY = `HKLM\\SYSTEM\\CurrentControlSet\\Control\\Class\\${DISPLAY_CLASS_GUID}`;
23
+ /** The Vulkan loader's driver registrations: one value per ICD manifest, named by its path. */
24
+ export const VULKAN_DRIVERS_REG_KEY = 'HKLM\\SOFTWARE\\Khronos\\Vulkan\\Drivers';
25
+ /** `reg.exe` from `%SystemRoot%`, not whatever `reg.exe` comes first on PATH. */
26
+ export function regExePath(env) {
27
+ return `${env['SystemRoot'] ?? env['SYSTEMROOT'] ?? 'C:\\Windows'}\\System32\\reg.exe`;
28
+ }
29
+ /** One key, no recursion: its values, and its subkeys as lines of their own. */
30
+ export function regQueryArgs(key) {
31
+ return ['query', key];
32
+ }
33
+ const VALUE_LINE = /^ {4}(.+?) {4}(REG_[A-Z0-9_]+)(?: {4}(.*))?$/;
34
+ /**
35
+ * `reg query` output: a key path at the start of a line, then its values indented four spaces
36
+ * (`name TYPE data`); the subkeys of a non-recursive query follow as bare key paths. Error
37
+ * lines (`ERROR: Access is denied.`) and blank lines are skipped. Tolerates CRLF, a BOM and the NULs
38
+ * of UTF-16 output read as single bytes.
39
+ */
40
+ export function parseRegQuery(text) {
41
+ const keys = [];
42
+ let current;
43
+ for (const raw of text
44
+ .replaceAll('\u0000', '')
45
+ .replace(/^[\uFEFF\uFFFD]+/, '')
46
+ .split(/\r?\n/)) {
47
+ if (raw.startsWith('HKEY_')) {
48
+ current = { path: raw.trimEnd(), values: [] };
49
+ keys.push(current);
50
+ continue;
51
+ }
52
+ const m = VALUE_LINE.exec(raw.trimEnd());
53
+ if (!m || !current)
54
+ continue;
55
+ current.values.push({ name: m[1], type: m[2], data: (m[3] ?? '').trim() });
56
+ }
57
+ return keys;
58
+ }
59
+ /** Whether `path` is one driver instance of the display class (`…\{4d36e968-…}\0003`). */
60
+ export function isDisplayDriverKey(path) {
61
+ const i = path.toLowerCase().lastIndexOf(`\\${DISPLAY_CLASS_GUID}\\`);
62
+ return i >= 0 && /^\d{4}$/.test(path.slice(i + DISPLAY_CLASS_GUID.length + 2));
63
+ }
64
+ /** A `REG_DWORD`/`REG_QWORD` (`0x…`) or a little-endian `REG_BINARY`, as a number; `undefined` for anything else. */
65
+ export function regNumber(value) {
66
+ if (!value)
67
+ return undefined;
68
+ if (value.type === 'REG_DWORD' || value.type === 'REG_QWORD') {
69
+ const m = /^0x([0-9a-f]+)$/i.exec(value.data);
70
+ return m ? Number.parseInt(m[1], 16) : undefined;
71
+ }
72
+ if (value.type === 'REG_BINARY') {
73
+ const hex = value.data.replace(/\s+/g, '');
74
+ if (hex === '' || hex.length % 2 !== 0 || !/^[0-9a-f]+$/i.test(hex) || hex.length > 16)
75
+ return undefined;
76
+ let n = 0;
77
+ for (let i = hex.length - 2; i >= 0; i -= 2)
78
+ n = n * 256 + Number.parseInt(hex.slice(i, i + 2), 16);
79
+ return n;
80
+ }
81
+ return undefined;
82
+ }
83
+ /** The strings of a `REG_MULTI_SZ` (or a `REG_SZ`), empty ones dropped. */
84
+ export function regStrings(value) {
85
+ if (!value || (value.type !== 'REG_MULTI_SZ' && value.type !== 'REG_SZ'))
86
+ return [];
87
+ return value.data.split('\\0').filter((s) => s.trim() !== '');
88
+ }
89
+ /** The driver instances among the parsed keys, with the values the adapter list needs. */
90
+ export function registryDisplayKeys(keys) {
91
+ const out = [];
92
+ for (const key of keys) {
93
+ if (!isDisplayDriverKey(key.path))
94
+ continue;
95
+ const value = (name) => key.values.find((v) => v.name.toLowerCase() === name.toLowerCase());
96
+ const text = (name) => {
97
+ const v = value(name);
98
+ return v && v.type === 'REG_SZ' && v.data !== '' ? v.data : undefined;
99
+ };
100
+ const entry = {
101
+ key: key.path.slice(-4),
102
+ VulkanDriverName: regStrings(value('VulkanDriverName')),
103
+ };
104
+ const fields = {
105
+ MatchingDeviceId: text('MatchingDeviceId'),
106
+ DriverDesc: text('DriverDesc'),
107
+ ProviderName: text('ProviderName'),
108
+ DriverVersion: text('DriverVersion'),
109
+ qwMemorySize: regNumber(value('HardwareInformation.qwMemorySize')),
110
+ memorySize: regNumber(value('HardwareInformation.MemorySize')),
111
+ };
112
+ for (const [k, v] of Object.entries(fields))
113
+ if (v !== undefined)
114
+ Object.assign(entry, { [k]: v });
115
+ out.push(entry);
116
+ }
117
+ return out;
118
+ }
119
+ /** The Vulkan ICD manifests a `HKLM\SOFTWARE\Khronos\Vulkan\Drivers` query lists (value names are paths). */
120
+ export function vulkanDriverPaths(keys) {
121
+ return keys.flatMap((key) => key.values.map((v) => v.name)).filter((name) => /\.json$/i.test(name));
122
+ }
123
+ const NVIDIA_VENDOR_ID = 0x10de;
124
+ const sameName = (a, b) => a.trim().toLowerCase() === b.trim().toLowerCase();
125
+ /**
126
+ * The GPUs the display class key names, in key order, as the PowerShell path's `WindowsAdapter` rows
127
+ * so `mergeGpus` treats them alike. Software adapters (no PCI or Adreno id) are skipped. `nvidiaNames`
128
+ * are the GPUs `nvidia-smi` reported: when it answered, an NVIDIA key is kept only as often as a GPU
129
+ * of that name is there; when it did not, each NVIDIA device id is listed once, like the other vendors.
130
+ */
131
+ export function registryGpus(displayKeys, vulkanDrivers, nvidiaNames) {
132
+ const icdVendors = new Set();
133
+ for (const manifest of [...vulkanDrivers, ...displayKeys.flatMap((k) => k.VulkanDriverName)]) {
134
+ const vendor = icdVendorOf(manifest);
135
+ if (vendor)
136
+ icdVendors.add(vendor);
137
+ }
138
+ const candidates = [];
139
+ for (const key of displayKeys) {
140
+ const ids = key.MatchingDeviceId ? parsePnpDeviceId(key.MatchingDeviceId) : undefined;
141
+ if (!ids)
142
+ continue;
143
+ let vramTotalMiB;
144
+ let memoryFrom;
145
+ if (key.qwMemorySize !== undefined && key.qwMemorySize > 0)
146
+ vramTotalMiB = Math.floor(key.qwMemorySize / 2 ** 20);
147
+ else if (key.memorySize !== undefined && key.memorySize > 0) {
148
+ vramTotalMiB = Math.floor(key.memorySize / 2 ** 20);
149
+ memoryFrom = 'MemorySize';
150
+ }
151
+ candidates.push({
152
+ adapter: {
153
+ name: key.DriverDesc?.trim() || `GPU ${key.MatchingDeviceId}`,
154
+ vendorId: ids.vendorId,
155
+ deviceId: ids.deviceId,
156
+ // The driver key a device instance points at: stable across boots, unique per card.
157
+ pnpDeviceId: `${DISPLAY_CLASS_GUID}\\${key.key}`,
158
+ driverVersion: key.DriverVersion ?? '',
159
+ ...(vramTotalMiB !== undefined ? { vramTotalMiB } : {}),
160
+ vulkanDriver: key.VulkanDriverName.length > 0,
161
+ },
162
+ ...(memoryFrom ? { memoryFrom } : {}),
163
+ });
164
+ }
165
+ // A key with a VRAM figure is the one kept when several describe the same device.
166
+ const ordered = [...candidates].sort((a, b) => Number(b.adapter.vramTotalMiB !== undefined) - Number(a.adapter.vramTotalMiB !== undefined));
167
+ const kept = new Set();
168
+ const nvidiaLeft = [...nvidiaNames];
169
+ const seen = new Set();
170
+ for (const candidate of ordered) {
171
+ const { adapter } = candidate;
172
+ if (adapter.vendorId === NVIDIA_VENDOR_ID && nvidiaNames.length > 0) {
173
+ const i = nvidiaLeft.findIndex((name) => sameName(name, adapter.name));
174
+ if (i < 0)
175
+ continue;
176
+ nvidiaLeft.splice(i, 1);
177
+ kept.add(candidate);
178
+ continue;
179
+ }
180
+ const id = `${adapter.vendorId}:${adapter.deviceId}`;
181
+ if (seen.has(id))
182
+ continue;
183
+ seen.add(id);
184
+ kept.add(candidate);
185
+ }
186
+ const adapters = [];
187
+ const warnings = [];
188
+ for (const candidate of candidates) {
189
+ if (!kept.has(candidate))
190
+ continue;
191
+ adapters.push(candidate.adapter);
192
+ if (candidate.memoryFrom)
193
+ warnings.push(`${candidate.adapter.name}: VRAM read from HardwareInformation.MemorySize, which caps at 4 GiB`);
194
+ }
195
+ return { adapters, icdVendors, warnings };
196
+ }
197
+ //# sourceMappingURL=windows-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows-registry.js","sourceRoot":"","sources":["../../src/hardware/windows-registry.ts"],"names":[],"mappings":"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"}
@@ -119,5 +119,16 @@ export declare function isTurboquantVersion(version: string): boolean;
119
119
  export declare function parseExtraArgs(value: string): string[];
120
120
  /** Build the plan (argv + warnings). Throws `INVALID_ARGUMENT` for a malformed `version_backend`. */
121
121
  export declare function planLlamaArgs(config: LlamacppConfig, input: LlamaArgsInput): LlamaArgsPlan;
122
+ /**
123
+ * The `fit_ctx` a load runs with: the model's own value when it is a window — a positive whole number
124
+ * of tokens, as a number or as its text — otherwise the provider's. The app grows the window under
125
+ * fit by reloading a model with its own `fit_ctx`; an empty, absent or unusable model value must not
126
+ * wipe the provider's.
127
+ */
128
+ export declare function resolveFitCtx(providerValue: unknown, modelValue: unknown): string;
129
+ /** `fit_ctx` in tokens: a positive whole number, or 0 when it names no window. */
130
+ export declare function fitCtxTokens(value: unknown): number;
131
+ /** `fit_ctx` as llama-server takes it: a number in its decimal text, a string trimmed, anything else `''`. */
132
+ export declare function fitCtxText(value: unknown): string;
122
133
  /** Convenience: argv only. */
123
134
  export declare function buildLlamaArgs(config: LlamacppConfig, input: LlamaArgsInput): string[];
@@ -390,7 +390,9 @@ export function planLlamaArgs(config, input) {
390
390
  if (cfg.ctx_size > 0 && !cfg.fit)
391
391
  push('--ctx-size', String(cfg.ctx_size));
392
392
  else if (cfg.fit && !ik && input.fitCtxCeiling !== undefined && input.fitCtxCeiling > 0)
393
- push('--ctx-size', String(input.fitCtxCeiling));
393
+ // Never below the floor fit is given: `--ctx-size` ends fit's search, so a ceiling under a raised
394
+ // `fit_ctx` (how the app grows a model's window under fit) would make raising it do nothing.
395
+ push('--ctx-size', String(Math.max(Math.floor(input.fitCtxCeiling), fitCtxTokens(cfg.fit_ctx))));
394
396
  if (cfg.n_predict > 0)
395
397
  push('--n-predict', String(cfg.n_predict));
396
398
  // The thinking budget: llama.cpp applies it to requests that set none, and only to templates with
@@ -440,8 +442,9 @@ export function planLlamaArgs(config, input) {
440
442
  if (!ik) {
441
443
  push('--fit', cfg.fit ? 'on' : 'off');
442
444
  if (cfg.fit) {
443
- if (cfg.fit_ctx !== '' && cfg.fit_ctx !== '4096')
444
- push('--fit-ctx', cfg.fit_ctx);
445
+ const fitCtx = fitCtxText(cfg.fit_ctx);
446
+ if (fitCtx !== '' && fitCtx !== '4096')
447
+ push('--fit-ctx', fitCtx);
445
448
  if (cfg.fit_target !== '' && cfg.fit_target !== '1024')
446
449
  push('--fit-target', cfg.fit_target);
447
450
  }
@@ -460,6 +463,28 @@ export function planLlamaArgs(config, input) {
460
463
  }
461
464
  return { argv, warnings, version, backend };
462
465
  }
466
+ /**
467
+ * The `fit_ctx` a load runs with: the model's own value when it is a window — a positive whole number
468
+ * of tokens, as a number or as its text — otherwise the provider's. The app grows the window under
469
+ * fit by reloading a model with its own `fit_ctx`; an empty, absent or unusable model value must not
470
+ * wipe the provider's.
471
+ */
472
+ export function resolveFitCtx(providerValue, modelValue) {
473
+ const model = fitCtxTokens(modelValue);
474
+ return model > 0 ? String(model) : fitCtxText(providerValue);
475
+ }
476
+ /** `fit_ctx` in tokens: a positive whole number, or 0 when it names no window. */
477
+ export function fitCtxTokens(value) {
478
+ const text = fitCtxText(value);
479
+ const tokens = /^\d+$/.test(text) ? Number(text) : 0;
480
+ return Number.isSafeInteger(tokens) && tokens > 0 ? tokens : 0;
481
+ }
482
+ /** `fit_ctx` as llama-server takes it: a number in its decimal text, a string trimmed, anything else `''`. */
483
+ export function fitCtxText(value) {
484
+ if (typeof value === 'number')
485
+ return Number.isFinite(value) && value > 0 ? String(Math.floor(value)) : '';
486
+ return typeof value === 'string' ? value.trim() : '';
487
+ }
463
488
  /** Convenience: argv only. */
464
489
  export function buildLlamaArgs(config, input) {
465
490
  return planLlamaArgs(config, input).argv;
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/runtime/llamacpp/args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAEjE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAA;AAEpC,+FAA+F;AAC/F,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAA;AACnD,qFAAqF;AACrF,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAA;AACjC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC,gEAAgE;AAChE,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAA;AAChD,iGAAiG;AACjG,MAAM,CAAC,MAAM,uCAAuC,GAAG,KAAK,CAAA;AAC5D;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAA;AAC7C;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAA;AAChD;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAA;AAErD,sDAAsD;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;CACP,CAAA;AAED,+FAA+F;AAC/F;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,aAAa,EAAE,EAAE;IACjB,wBAAwB,EAAE,EAAE;IAC5B,QAAQ,EAAE,CAAC;IACX,eAAe,EAAE,KAAK;IACtB,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,KAAK;IACrB,GAAG,EAAE,KAAK;IACV,cAAc,EAAE,EAAE;IAClB,MAAM,EAAE,KAAK;IACb,qBAAqB,EAAE,KAAK;IAC5B,iBAAiB,EAAE,EAAE;IACrB,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,KAAK;IACzB,gGAAgG;IAChG,qFAAqF;IACrF,gBAAgB,EAAE,CAAC,CAAC;IACpB,UAAU,EAAE,EAAE;CAC4B,CAAA;AAK5C;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAA0B;IAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAA;IAC7F,OAAO,EAAE,GAAG,8BAA8B,EAAE,GAAG,QAAQ,EAAoB,CAAA;AAC7E,CAAC;AA0BD,kGAAkG;AAClG,MAAM,UAAU,mBAAmB,CAAC,cAAsB;IACxD,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,0CAA0C,EAC1C,gCAAgC,CACjC,CAAA;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAA;AAC9F,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACzC,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,MAAM,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1B,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACzC,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAA;IAClD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IACnC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC/C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC/B,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,KAAK,GAAkB,IAAI,CAAA;IAC/B,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAW,CAAA;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACzB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,EAAE,KAAK,KAAK;gBAAE,KAAK,GAAG,IAAI,CAAA;iBACzB,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC1D,OAAO,IAAI,IAAI,CAAA;gBACf,CAAC,EAAE,CAAA;YACL,CAAC;;gBAAM,OAAO,IAAI,EAAE,CAAA;YACpB,SAAQ;QACV,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC7B,KAAK,GAAG,EAAE,CAAA;YACV,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC;aAAM,IACL,EAAE,KAAK,IAAI;YACX,IAAI,KAAK,SAAS;YAClB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,EAClE,CAAC;YACD,OAAO,IAAI,IAAI,CAAA;YACf,CAAC,EAAE,CAAA;YACH,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAClB,OAAO,GAAG,EAAE,CAAA;gBACZ,OAAO,GAAG,KAAK,CAAA;YACjB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,EAAE,CAAA;YACb,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAA;IAClE,IAAI,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/B,OAAO,IAAI,CAAA;AACb,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,aAAa,CAAC,MAAsB,EAAE,KAAqB;IACzE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACxE,MAAM,GAAG,GAAmB,EAAE,GAAG,MAAM,EAAE,CAAA;IACzC,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,KAAK,cAAc,CAAA;IAC/C,+FAA+F;IAC/F,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAChF,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACzD,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;IAExD,0DAA0D;IAC1D,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QACxB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAA;QAChD,GAAG,CAAC,aAAa,GAAG,IAAI,CAAA;QACxB,GAAG,CAAC,cAAc,GAAG,IAAI,CAAA;IAC3B,CAAC;IACD,+FAA+F;IAC/F,+FAA+F;IAC/F,kGAAkG;IAClG,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAClC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAA;QACf,GAAG,CAAC,MAAM,GAAG,KAAK,CAAA;IACpB,CAAC;IACD,sFAAsF;IACtF,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM;YACvB,QAAQ,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;QACvF,GAAG,CAAC,GAAG,GAAG,KAAK,CAAA;QACf,GAAG,CAAC,MAAM,GAAG,KAAK,CAAA;QAClB,GAAG,CAAC,UAAU,GAAG,EAAE,CAAA;QACnB,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAA;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAC7F,QAAQ,CAAC,IAAI,CAAC,mBAAmB,OAAO,2DAA2D,CAAC,CAAA;QACpG,GAAG,CAAC,UAAU,GAAG,KAAK,CAAA;IACxB,CAAC;IAED,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAU,EAAE;QAClD,IAAI,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QACtD,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,IAAI,UAAU;YAAE,OAAO,KAAK,CAAA;QAC7D,QAAQ,CAAC,IAAI,CACX,eAAe,KAAK,gDAAgD,OAAO,IAAI,OAAO,wBAAwB,CAC/G,CAAA;QACD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IAC3B,IAAI,CAAC,SAAS,CAAC,CAAA;IACf,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAE3B,IAAI,GAAG,CAAC,OAAO;QAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IAClC,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC;QAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;IACjE,IAAI,GAAG,CAAC,wBAAwB;QAAE,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,wBAAwB,CAAC,CAAA;IAEzF,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QAClC,IAAI,CAAC,GAAG,CAAC,cAAc;YAAE,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAElC,IAAI,GAAG,CAAC,aAAa;QAAE,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,aAAa,CAAC,CAAA;IAEjE,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACrF,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAEzB,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC;QAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3D,IAAI,GAAG,CAAC,aAAa,GAAG,CAAC;QAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;IAE7E,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI;QAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA;IAC/F,IAAI,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,GAAG;QAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;IAElG,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;QAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACnD,IAAI,GAAG,CAAC,UAAU,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,KAAK,OAAO;QAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;IAC7F,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC;QAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEhE,mBAAmB;IACnB,IAAI,EAAE,EAAE,CAAC;QACP,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,+BAA+B,CAAC,CAAA;QACjG,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;gBACrF,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,SAAS;QAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAC1C,gGAAgG;IAChG,iGAAiG;IACjG,+BAA+B;IAC/B,IAAI,GAAG,CAAC,aAAa;QAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;SACzC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACxC,IAAI,CAAC,EAAE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,wBAAwB,EAAE,CAAC;QACpE,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK;YAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;aACrD,IAAI,GAAG,CAAC,OAAO;YAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;aAC5C,IAAI,GAAG,CAAC,KAAK;YAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;IACvD,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,CAAC,OAAO;YAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QAClC,IAAI,GAAG,CAAC,KAAK;YAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAChC,CAAC;IACD,IAAI,GAAG,CAAC,aAAa;QAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAE9C,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC;QAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9D,4FAA4F;IAC5F,qGAAqG;IACrG,mGAAmG;IACnG,kGAAkG;IAClG,kGAAkG;IAClG,iFAAiF;IACjF,iDAAiD;IACjD,IAAI,CAAC,MAAM,CAAC,CAAA;IAEZ,uDAAuD;IACvD,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,WAAW;YAAE,OAAM;QACzC,IAAI,GAAG,CAAC,cAAc,KAAK,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,mBAAmB,CAAC,EAAE,CAAC;gBAC3D,QAAQ,CAAC,IAAI,CACX,2CAA2C,OAAO,IAAI,OAAO,mCAAmC,mBAAmB,aAAa,CACjI,CAAA;gBACD,OAAM;YACR,CAAC;YACD,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAA;YAC1B,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAA;YAC1B,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBAC3D,QAAQ,CAAC,IAAI,CACX,qDAAqD,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,8BAA8B,CAC/G,CAAA;YACH,CAAC;YACD,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAA;YAChG,OAAM;QACR,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,aAAa,CAAC,EAAE,CAAC;YACrD,QAAQ,CAAC,IAAI,CACX,mCAAmC,OAAO,IAAI,OAAO,kCAAkC,aAAa,aAAa,CAClH,CAAA;YACD,OAAM;QACR,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAA;IAC7D,CAAC,CAAA;IACD,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW;YAAE,OAAM;QAC5C,IAAI,GAAG,CAAC,iBAAiB,KAAK,EAAE,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;YACzE,OAAM;QACR,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CACX,gCAAgC,OAAO,IAAI,OAAO,+FAA+F,CAClJ,CAAA;YACD,OAAM;QACR,CAAC;QACD,IAAI,CACF,eAAe,EACf,GAAG,CAAC,iBAAiB,EACrB,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CACrD,CAAA;IACH,CAAC,CAAA;IACD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;QACtE,SAAS,EAAE,CAAA;IACb,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,CAAA;QACR,SAAS,EAAE,CAAA;IACb,CAAC;IAED,IAAI,GAAG,CAAC,cAAc;QAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IAEzC,0BAA0B;IAC1B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,uCAAuC;gBACzE,IAAI,CAAC,yBAAyB,CAAC,CAAA;QACnC,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,4BAA4B,EAAE,CAAC;YACxE,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CACX,sDAAsD,OAAO,IAAI,OAAO,gCAAgC,4BAA4B,aAAa,CAClJ,CAAA;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;IAC1C,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;aACrE,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC;YACrF,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;QACjD,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC;YAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;QACjE,kGAAkG;QAClG,kGAAkG;QAClG,gCAAgC;QAChC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,gBAAgB,IAAI,CAAC,EAAE,CAAC;YACrC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,iCAAiC,EAAE,CAAC;gBACtE,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;gBACpE,IAAI,GAAG,CAAC,gBAAgB,GAAG,CAAC;oBAAE,IAAI,CAAC,4BAA4B,EAAE,wBAAwB,CAAC,CAAA;YAC5F,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CACX,gDAAgD,OAAO,IAAI,OAAO,6BAA6B,iCAAiC,aAAa,CAC9I,CAAA;YACH,CAAC;QACH,CAAC;QACD,IACE,CAAC,EAAE;YACH,KAAK,CAAC,WAAW,KAAK,SAAS;YAC/B,KAAK,CAAC,WAAW,GAAG,CAAC;YACrB,KAAK,KAAK,SAAS;YACnB,KAAK,IAAI,mBAAmB;YAE5B,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QAC5D,IAAI,GAAG,CAAC,YAAY,KAAK,EAAE,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YACjD,IAAI,KAAK,KAAK,KAAK;gBAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACpD,CAAC;QACD,IACE,GAAG,CAAC,UAAU,KAAK,KAAK;YACxB,GAAG,CAAC,YAAY,KAAK,EAAE;YACvB,GAAG,CAAC,YAAY,KAAK,KAAK;YAC1B,GAAG,CAAC,YAAY,KAAK,KAAK,EAC1B,CAAC;YACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YACjD,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK;gBAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACvE,CAAC;QACD,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,4BAA4B,CAAA;QACxF,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;YACpD,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;QACzD,IAAI,GAAG,CAAC,YAAY,KAAK,EAAE,IAAI,GAAG,CAAC,YAAY,KAAK,MAAM;YAAE,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAA;QACpG,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;YAAE,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA;QACxF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;QACtG,IAAI,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC;YAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAA;IACzG,CAAC;IAED,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACrC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,IAAI,GAAG,CAAC,OAAO,KAAK,EAAE,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM;gBAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;YAChF,IAAI,GAAG,CAAC,UAAU,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM;gBAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAC9F,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,kDAAmD,KAAe,CAAC,OAAO,EAAE,CAAC,CAAA;IAC7F,CAAC;IAED,gGAAgG;IAChG,+EAA+E;IAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAA;IACxD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CACvB,kBAAkB,EAClB,0CAA0C,EAC1C,YAAY,GAAG,WAAW,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CACzE,CAAA;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;AAC7C,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,cAAc,CAAC,MAAsB,EAAE,KAAqB;IAC1E,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAA;AAC1C,CAAC"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/runtime/llamacpp/args.ts"],"names":[],"mappings":"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"}
@@ -22,5 +22,16 @@ export declare function findMemoryPattern(text: string): {
22
22
  /** First whitespace token as i32 (`"7721 MiB free"` → 7721). */
23
23
  export declare function parseMemoryValue(memStr: string): number | undefined;
24
24
  export declare function parseDeviceLine(rawLine: string): DeviceInfo | undefined;
25
+ /**
26
+ * A `--device` value checked against what the build lists: the names it has (llama.cpp matches them
27
+ * case-insensitively, `ggml_backend_dev_by_name`) and `none` are kept in the order given, every other
28
+ * name is dropped. llama-server exits on a name it does not have ("use --list-devices to see a list of
29
+ * available devices"), which is what a value copied from a CUDA build does on a Vulkan or ROCm one.
30
+ * `device` is `''` when nothing is left: llama.cpp then picks its devices itself.
31
+ */
32
+ export declare function validateDeviceList(requested: string, devices: readonly DeviceInfo[]): {
33
+ device: string;
34
+ dropped: string[];
35
+ };
25
36
  /** Throws `DEVICE_LIST_PARSE_FAILED` (details = the whole output) when the header is missing. */
26
37
  export declare function parseDeviceOutput(output: string): DeviceInfo[];
@@ -63,6 +63,28 @@ export function parseDeviceLine(rawLine) {
63
63
  return undefined;
64
64
  return { id, name, mem: total, free };
65
65
  }
66
+ /**
67
+ * A `--device` value checked against what the build lists: the names it has (llama.cpp matches them
68
+ * case-insensitively, `ggml_backend_dev_by_name`) and `none` are kept in the order given, every other
69
+ * name is dropped. llama-server exits on a name it does not have ("use --list-devices to see a list of
70
+ * available devices"), which is what a value copied from a CUDA build does on a Vulkan or ROCm one.
71
+ * `device` is `''` when nothing is left: llama.cpp then picks its devices itself.
72
+ */
73
+ export function validateDeviceList(requested, devices) {
74
+ const known = new Set(devices.map((d) => d.id.toLowerCase()));
75
+ const kept = [];
76
+ const dropped = [];
77
+ for (const raw of String(requested).split(',')) {
78
+ const name = raw.trim();
79
+ if (name === '')
80
+ continue;
81
+ if (name.toLowerCase() === 'none' || known.has(name.toLowerCase()))
82
+ kept.push(name);
83
+ else
84
+ dropped.push(name);
85
+ }
86
+ return { device: kept.join(','), dropped };
87
+ }
66
88
  /** Throws `DEVICE_LIST_PARSE_FAILED` (details = the whole output) when the header is missing. */
67
89
  export function parseDeviceOutput(output) {
68
90
  const devices = [];
@@ -1 +1 @@
1
- {"version":3,"file":"devices.js","sourceRoot":"","sources":["../../../src/runtime/llamacpp/devices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devices.js","sourceRoot":"","sources":["../../../src/runtime/llamacpp/devices.ts"],"names":[],"mappings":"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"}
@@ -18,18 +18,48 @@ export interface ExitInfo {
18
18
  }
19
19
  /** Normalise a Node signal name to the Unix number Rust sees. */
20
20
  export declare function signalNumber(signal: number | string | null): number | null;
21
+ /**
22
+ * NTSTATUS codes a Windows process ends with when the loader gives up before `main`, so it prints
23
+ * nothing of its own — the same set `src/diffusion/install.ts` and `src/audio/install.ts` read for
24
+ * their engines: a missing DLL, a missing ordinal or entry point, a bad image, a DLL whose init failed.
25
+ */
26
+ export declare const WINDOWS_LOADER_FAILURES: ReadonlyMap<number, string>;
27
+ /** STATUS_ILLEGAL_INSTRUCTION: the build uses an instruction this CPU does not have. */
28
+ export declare const WINDOWS_ILLEGAL_INSTRUCTION = 3221225501;
29
+ /**
30
+ * An exit status as the load diagnostics spell it: `0x`-prefixed upper-case hex on Windows (NTSTATUS
31
+ * codes arrive signed or unsigned), decimal elsewhere; `undefined` when the process was killed by a
32
+ * signal or never started.
33
+ */
34
+ export declare function formatExitCode(code: number | null, platform: NodeJS.Platform): string | undefined;
21
35
  /** A hard native crash (segfault / abort) rather than a normal non-zero exit. */
22
36
  export declare function isCrashExit(exit: ExitInfo, platform: NodeJS.Platform): boolean;
37
+ export declare const GPU_BACKEND_INCOMPATIBLE_MESSAGE = "This GPU build of the model engine does not run on this graphics card with its current driver. Update the NVIDIA graphics driver, or switch to another backend (CUDA 12, Vulkan or CPU).";
38
+ export declare const ENGINE_BINARY_BROKEN_MESSAGE = "The model engine could not load a library it needs, so it did not start. Its files may be incomplete or blocked by antivirus software: reinstall this backend or switch to another one.";
39
+ export declare const CPU_INSTRUCTION_UNSUPPORTED_MESSAGE = "The model engine stopped on a processor instruction this computer does not have. Switch to another backend, such as the CPU build, which picks the instructions this processor supports.";
23
40
  export declare const ARGUMENT_REJECTED_MESSAGE = "This llama.cpp backend does not accept one of the arguments it was started with. If you added custom arguments to this model, remove them; otherwise switch to another backend version or update Atomic Chat.";
24
41
  export declare const GENERIC_PROCESS_ERROR_MESSAGE = "The model process encountered an unexpected error.";
25
42
  export declare const CRASH_MESSAGE = "The model process crashed unexpectedly (access violation / segfault). This usually means the model is incompatible with this backend, or its speculative-decoding (MTP) configuration is unsupported here.";
26
43
  /** `LlamacppError::from_stderr`: ordered substring cascade over the lowercased stream. */
27
44
  export declare function classifyStderr(stderr: string, provider?: LocalProviderId): AtomicCoreError;
28
- /** `LlamacppError::from_exit_status`: a recognised crash upgrades the generic error's message. */
45
+ /**
46
+ * A Windows exit status that names its own cause when stderr named none: the loader gave up before
47
+ * `main` (`ENGINE_BINARY_BROKEN`), or the build hit an instruction this CPU lacks
48
+ * (`CPU_INSTRUCTION_UNSUPPORTED`). `undefined` for anything else, and off Windows.
49
+ */
50
+ export declare function windowsExitCause(exit: ExitInfo, platform: NodeJS.Platform): {
51
+ code: 'ENGINE_BINARY_BROKEN' | 'CPU_INSTRUCTION_UNSUPPORTED';
52
+ message: string;
53
+ } | undefined;
54
+ /**
55
+ * `LlamacppError::from_exit_status`: a recognised crash upgrades the generic error's message; beyond
56
+ * the app, a Windows loader or illegal-instruction status that stderr did not explain gets its own code.
57
+ */
29
58
  export declare function classifyExit(exit: ExitInfo, stderr: string, platform: NodeJS.Platform, provider?: LocalProviderId): AtomicCoreError;
30
59
  /**
31
60
  * `LlamacppError::from_process_output`: stderr classification wins; otherwise try stdout (several
32
61
  * llama.cpp builds report loader failures there); otherwise keep the exit-status error but hand the
33
- * caller stdout as details when stderr is blank.
62
+ * caller stdout as details when stderr is blank. A code read from the Windows exit status alone ranks
63
+ * with the exit status, below stdout.
34
64
  */
35
65
  export declare function classifyProcessOutput(exit: ExitInfo, stderr: string, stdout: string, platform: NodeJS.Platform, provider?: LocalProviderId): AtomicCoreError;
@@ -36,6 +36,32 @@ export function signalNumber(signal) {
36
36
  }
37
37
  /** Windows: STATUS_ACCESS_VIOLATION / STATUS_STACK_OVERFLOW / STATUS_STACK_BUFFER_OVERRUN. */
38
38
  const WINDOWS_CRASH_CODES = new Set([0xc000_0005, 0xc000_00fd, 0xc000_0409]);
39
+ /**
40
+ * NTSTATUS codes a Windows process ends with when the loader gives up before `main`, so it prints
41
+ * nothing of its own — the same set `src/diffusion/install.ts` and `src/audio/install.ts` read for
42
+ * their engines: a missing DLL, a missing ordinal or entry point, a bad image, a DLL whose init failed.
43
+ */
44
+ export const WINDOWS_LOADER_FAILURES = new Map([
45
+ [0xc000_0135, 'STATUS_DLL_NOT_FOUND'],
46
+ [0xc000_0138, 'STATUS_ORDINAL_NOT_FOUND'],
47
+ [0xc000_0139, 'STATUS_ENTRYPOINT_NOT_FOUND'],
48
+ [0xc000_007b, 'STATUS_INVALID_IMAGE_FORMAT'],
49
+ [0xc000_0142, 'STATUS_DLL_INIT_FAILED'],
50
+ ]);
51
+ /** STATUS_ILLEGAL_INSTRUCTION: the build uses an instruction this CPU does not have. */
52
+ export const WINDOWS_ILLEGAL_INSTRUCTION = 0xc000_001d;
53
+ /**
54
+ * An exit status as the load diagnostics spell it: `0x`-prefixed upper-case hex on Windows (NTSTATUS
55
+ * codes arrive signed or unsigned), decimal elsewhere; `undefined` when the process was killed by a
56
+ * signal or never started.
57
+ */
58
+ export function formatExitCode(code, platform) {
59
+ if (code === null)
60
+ return undefined;
61
+ if (platform !== 'win32')
62
+ return String(code);
63
+ return `0x${(code >>> 0).toString(16).toUpperCase()}`;
64
+ }
39
65
  /** A hard native crash (segfault / abort) rather than a normal non-zero exit. */
40
66
  export function isCrashExit(exit, platform) {
41
67
  if (platform === 'win32') {
@@ -52,6 +78,21 @@ const includesAny = (lower, needles) => needles.some((n) => lower.includes(n));
52
78
  * from upstream too, so on any build a tensor count alone does not prove a damaged file.
53
79
  */
54
80
  const TENSOR_COUNT_MISMATCH = 'wrong number of tensors';
81
+ /**
82
+ * What CUDA prints when a build cannot run on this card or driver: a driver too old for the toolchain
83
+ * the build's PTX came from (CUDA 13.x on Turing before R616), or no kernels for this architecture at
84
+ * all. The bare `ggml_cuda_kernel_can_use_pdl` + `cudaFuncGetAttributes` pair is the same failure when
85
+ * the CUDA error line itself was cut off. Lowercase, like the stream the cascade reads.
86
+ */
87
+ const GPU_BUILD_INCOMPATIBLE_MARKERS = [
88
+ 'provided ptx was compiled with an unsupported toolchain',
89
+ 'no kernel image is available for execution on the device',
90
+ ];
91
+ const isGpuBuildIncompatible = (l) => includesAny(l, GPU_BUILD_INCOMPATIBLE_MARKERS) ||
92
+ (l.includes('ggml_cuda_kernel_can_use_pdl') && l.includes('cudafuncgetattributes'));
93
+ export const GPU_BACKEND_INCOMPATIBLE_MESSAGE = 'This GPU build of the model engine does not run on this graphics card with its current driver. Update the NVIDIA graphics driver, or switch to another backend (CUDA 12, Vulkan or CPU).';
94
+ export const ENGINE_BINARY_BROKEN_MESSAGE = 'The model engine could not load a library it needs, so it did not start. Its files may be incomplete or blocked by antivirus software: reinstall this backend or switch to another one.';
95
+ export const CPU_INSTRUCTION_UNSUPPORTED_MESSAGE = 'The model engine stopped on a processor instruction this computer does not have. Switch to another backend, such as the CPU build, which picks the instructions this processor supports.';
55
96
  export const ARGUMENT_REJECTED_MESSAGE = 'This llama.cpp backend does not accept one of the arguments it was started with. If you added custom arguments to this model, remove them; otherwise switch to another backend version or update Atomic Chat.';
56
97
  const CASCADE = [
57
98
  {
@@ -71,6 +112,13 @@ const CASCADE = [
71
112
  'cuda_error_out_of_memory',
72
113
  ]),
73
114
  },
115
+ {
116
+ // After out-of-memory (a card that ran out of VRAM is not an incompatible one), before every
117
+ // model rule: the build never got far enough for the model to be the reason.
118
+ code: 'GPU_BACKEND_INCOMPATIBLE',
119
+ message: GPU_BACKEND_INCOMPATIBLE_MESSAGE,
120
+ match: isGpuBuildIncompatible,
121
+ },
74
122
  {
75
123
  code: 'MODEL_ARCH_NOT_SUPPORTED',
76
124
  message: "The model's architecture or format is not supported by this version of the backend.",
@@ -118,22 +166,47 @@ export function classifyStderr(stderr, provider = 'llamacpp-upstream') {
118
166
  }
119
167
  return new AtomicCoreError('LLAMA_CPP_PROCESS_ERROR', GENERIC_PROCESS_ERROR_MESSAGE, stderr);
120
168
  }
121
- /** `LlamacppError::from_exit_status`: a recognised crash upgrades the generic error's message. */
169
+ /**
170
+ * A Windows exit status that names its own cause when stderr named none: the loader gave up before
171
+ * `main` (`ENGINE_BINARY_BROKEN`), or the build hit an instruction this CPU lacks
172
+ * (`CPU_INSTRUCTION_UNSUPPORTED`). `undefined` for anything else, and off Windows.
173
+ */
174
+ export function windowsExitCause(exit, platform) {
175
+ if (platform !== 'win32' || exit.code === null)
176
+ return undefined;
177
+ const status = exit.code >>> 0;
178
+ if (WINDOWS_LOADER_FAILURES.has(status))
179
+ return { code: 'ENGINE_BINARY_BROKEN', message: ENGINE_BINARY_BROKEN_MESSAGE };
180
+ if (status === WINDOWS_ILLEGAL_INSTRUCTION)
181
+ return { code: 'CPU_INSTRUCTION_UNSUPPORTED', message: CPU_INSTRUCTION_UNSUPPORTED_MESSAGE };
182
+ return undefined;
183
+ }
184
+ /**
185
+ * `LlamacppError::from_exit_status`: a recognised crash upgrades the generic error's message; beyond
186
+ * the app, a Windows loader or illegal-instruction status that stderr did not explain gets its own code.
187
+ */
122
188
  export function classifyExit(exit, stderr, platform, provider = 'llamacpp-upstream') {
123
189
  const base = classifyStderr(stderr, provider);
124
- if (base.code !== 'LLAMA_CPP_PROCESS_ERROR' || !isCrashExit(exit, platform))
190
+ if (base.code !== 'LLAMA_CPP_PROCESS_ERROR')
191
+ return base;
192
+ const cause = windowsExitCause(exit, platform);
193
+ if (cause)
194
+ return new AtomicCoreError(cause.code, cause.message, stderr);
195
+ if (!isCrashExit(exit, platform))
125
196
  return base;
126
197
  return new AtomicCoreError('LLAMA_CPP_PROCESS_ERROR', CRASH_MESSAGE, stderr);
127
198
  }
128
199
  /**
129
200
  * `LlamacppError::from_process_output`: stderr classification wins; otherwise try stdout (several
130
201
  * llama.cpp builds report loader failures there); otherwise keep the exit-status error but hand the
131
- * caller stdout as details when stderr is blank.
202
+ * caller stdout as details when stderr is blank. A code read from the Windows exit status alone ranks
203
+ * with the exit status, below stdout.
132
204
  */
133
205
  export function classifyProcessOutput(exit, stderr, stdout, platform, provider = 'llamacpp-upstream') {
134
206
  const base = classifyExit(exit, stderr, platform, provider);
135
207
  const fromStdout = classifyStderr(stdout, provider);
136
- const selected = base.code !== 'LLAMA_CPP_PROCESS_ERROR'
208
+ const fromStderr = base.code !== 'LLAMA_CPP_PROCESS_ERROR' && base.code !== windowsExitCause(exit, platform)?.code;
209
+ const selected = fromStderr
137
210
  ? base
138
211
  : fromStdout.code !== 'LLAMA_CPP_PROCESS_ERROR'
139
212
  ? fromStdout
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/runtime/llamacpp/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAU1D,MAAM,cAAc,GAA2B;IAC7C,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;CACZ,CAAA;AAED,iEAAiE;AACjE,MAAM,UAAU,YAAY,CAAC,MAA8B;IACzD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAChC,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAA;IAC7C,OAAO,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,CAAA;AACvC,CAAC;AAED,8FAA8F;AAC9F,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;AAE5E,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,IAAc,EAAE,QAAyB;IACnE,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAA;IACvE,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrC,OAAO,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,CAAC,CAAA;AAChC,CAAC;AAQD,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,OAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAEhG;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,yBAAyB,CAAA;AAEvD,MAAM,CAAC,MAAM,yBAAyB,GACpC,+MAA+M,CAAA;AAEjN,MAAM,OAAO,GAAW;IACtB;QACE,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EACL,wGAAwG;QAC1G,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KACnE;IACD;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,oEAAoE;QAC7E,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,WAAW,CAAC,CAAC,EAAE;YACb,eAAe;YACf,oBAAoB;YACpB,qBAAqB;YACrB,wBAAwB;YACxB,6CAA6C;YAC7C,0BAA0B;SAC3B,CAAC;KACL;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,qFAAqF;QAC9F,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,WAAW,CAAC,CAAC,EAAE;YACb,kCAAkC;YAClC,4BAA4B;YAC5B,qCAAqC;YACrC,wBAAwB;YACxB,qBAAqB;SACtB,CAAC;KACL;IACD;QACE,IAAI,EAAE,kCAAkC;QACxC,OAAO,EACL,iJAAiJ;QACnJ,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACnD;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EACL,kGAAkG;QACpG,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,WAAW,CAAC,CAAC,EAAE;YACb,yBAAyB;YACzB,eAAe;YACf,kCAAkC;YAClC,uBAAuB;SACxB,CAAC;KACL;IACD;QACE,gGAAgG;QAChG,iGAAiG;QACjG,iGAAiG;QACjG,oFAAoF;QACpF,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,yBAAyB;QAClC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,2BAA2B,EAAE,+BAA+B,CAAC,CAAC;KAC7F;CACF,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,oDAAoD,CAAA;AACjG,MAAM,CAAC,MAAM,aAAa,GACxB,4MAA4M,CAAA;AAE9M,0FAA0F;AAC1F,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,WAA4B,mBAAmB;IAE/C,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;IAClC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC9F,CAAC;IACD,OAAO,IAAI,eAAe,CAAC,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,CAAC,CAAA;AAC9F,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,YAAY,CAC1B,IAAc,EACd,MAAc,EACd,QAAyB,EACzB,WAA4B,mBAAmB;IAE/C,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IACxF,OAAO,IAAI,eAAe,CAAC,yBAAyB,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAc,EACd,MAAc,EACd,MAAc,EACd,QAAyB,EACzB,WAA4B,mBAAmB;IAE/C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC3D,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACnD,MAAM,QAAQ,GACZ,IAAI,CAAC,IAAI,KAAK,yBAAyB;QACrC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,yBAAyB;YAC7C,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;gBAC5C,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;gBACtD,CAAC,CAAC,IAAI,CAAA;IACd,oGAAoG;IACpG,OAAO,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE;QAC5E,UAAU,EAAE;YACV,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,MAAM;YACjB,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,yBAAyB,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACpF,CAAC,CAAE,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAY;gBACnE,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/runtime/llamacpp/errors.ts"],"names":[],"mappings":"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"}