prefer-inference-core 0.0.0-g0be6ef9

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 (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +166 -0
  3. package/dist/catalog.d.ts +27 -0
  4. package/dist/catalog.d.ts.map +1 -0
  5. package/dist/catalog.js +547 -0
  6. package/dist/catalog.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +412 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/huggingface.d.ts +18 -0
  12. package/dist/huggingface.d.ts.map +1 -0
  13. package/dist/huggingface.js +296 -0
  14. package/dist/huggingface.js.map +1 -0
  15. package/dist/index.d.ts +8 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +8 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/planning.d.ts +11 -0
  20. package/dist/planning.d.ts.map +1 -0
  21. package/dist/planning.js +610 -0
  22. package/dist/planning.js.map +1 -0
  23. package/dist/prefer.mjs +9493 -0
  24. package/dist/prefer.mjs.map +7 -0
  25. package/dist/releases.d.ts +33 -0
  26. package/dist/releases.d.ts.map +1 -0
  27. package/dist/releases.js +288 -0
  28. package/dist/releases.js.map +1 -0
  29. package/dist/resources.d.ts +10 -0
  30. package/dist/resources.d.ts.map +1 -0
  31. package/dist/resources.js +250 -0
  32. package/dist/resources.js.map +1 -0
  33. package/dist/types.d.ts +409 -0
  34. package/dist/types.d.ts.map +1 -0
  35. package/dist/types.js +2 -0
  36. package/dist/types.js.map +1 -0
  37. package/dist/utils.d.ts +20 -0
  38. package/dist/utils.d.ts.map +1 -0
  39. package/dist/utils.js +112 -0
  40. package/dist/utils.js.map +1 -0
  41. package/package.json +58 -0
  42. package/schemas/prefer-model-catalog-extension.schema.json +25 -0
  43. package/schemas/prefer-model-catalog.schema.json +54 -0
  44. package/schemas/prefer-model-plan.schema.json +115 -0
  45. package/schemas/prefer-resource-profile.schema.json +70 -0
@@ -0,0 +1,547 @@
1
+ import { readdir, readFile } from "node:fs/promises";
2
+ import { basename, dirname, relative, resolve } from "node:path";
3
+ import { parse } from "yaml";
4
+ import { deepMerge, globMatch, isObject, readJson, repositoryKey, requireObject, requireString, sha256, stableStringify, validateRepository, validateRevision } from "./utils.js";
5
+ import { resolveHuggingFaceSelections } from "./huggingface.js";
6
+ const MODEL_ID_PATTERN = /^[a-z0-9]+(?:[.-][a-z0-9]+)*$/u;
7
+ export async function loadCatalogSources(root) {
8
+ const absoluteRoot = resolve(root);
9
+ const defaults = validateDefaults(parse(await readFile(resolve(absoluteRoot, "defaults.yaml"), "utf8")));
10
+ const modelRoot = resolve(absoluteRoot, "models");
11
+ const files = (await yamlFiles(modelRoot)).sort((left, right) => left.localeCompare(right));
12
+ if (!files.length)
13
+ throw new Error(`${modelRoot} does not contain any model YAML files`);
14
+ const models = {};
15
+ for (const file of files) {
16
+ const id = basename(file).replace(/\.ya?ml$/iu, "");
17
+ if (!MODEL_ID_PATTERN.test(id))
18
+ throw new Error(`${file}: filename must be a lowercase PreFer model id`);
19
+ if (models[id])
20
+ throw new Error(`duplicate PreFer model id ${id}`);
21
+ const family = relative(modelRoot, dirname(file)).split(/[\\/]/u)[0];
22
+ if (!family || family === "..")
23
+ throw new Error(`${file}: model must be inside models/<family>/`);
24
+ const parsed = validateModel(parse(await readFile(file, "utf8")), file);
25
+ models[id] = {
26
+ ...parsed,
27
+ id,
28
+ family,
29
+ source_path: relative(absoluteRoot, file).replaceAll("\\", "/")
30
+ };
31
+ }
32
+ const source = { defaults, models };
33
+ return { ...source, source_fingerprint: sha256(stableStringify(source)) };
34
+ }
35
+ export function listHuggingFaceSelections(sources) {
36
+ const selections = new Map();
37
+ for (const model of Object.values(sources.models)) {
38
+ for (const [repository, source] of Object.entries(model.repositories)) {
39
+ const revision = source.revision ?? "main";
40
+ const key = repositoryKey(repository, revision);
41
+ if (!selections.has(key))
42
+ selections.set(key, { repository, revision });
43
+ }
44
+ }
45
+ return [...selections.values()].sort((left, right) => left.repository.localeCompare(right.repository) || (left.revision ?? "").localeCompare(right.revision ?? ""));
46
+ }
47
+ export async function refreshModelCatalog(root, options = {}) {
48
+ const sources = await loadCatalogSources(root);
49
+ const selections = listHuggingFaceSelections(sources);
50
+ try {
51
+ const resolved = await resolveHuggingFaceSelections(selections, options);
52
+ const repositories = Object.fromEntries(resolved.map((entry) => [repositoryKey(entry.repository, entry.requested_revision), entry]));
53
+ assertCatalogFileBindings(sources, repositories);
54
+ return { catalog: materializeCatalog(sources, repositories, options.now), reused_previous: false };
55
+ }
56
+ catch (error) {
57
+ if (!options.previous)
58
+ throw error;
59
+ validateModelCatalog(options.previous);
60
+ const repositories = previousRepositoriesForSources(options.previous, sources);
61
+ assertCatalogFileBindings(sources, repositories);
62
+ return { catalog: materializeCatalog(sources, repositories, options.now), reused_previous: true };
63
+ }
64
+ }
65
+ export function resolveModelVariant(catalog, modelId, options) {
66
+ validateModelCatalog(catalog);
67
+ const canonicalModelId = resolveCatalogModelId(catalog, modelId);
68
+ return resolveModelVariantUnchecked(catalog, canonicalModelId, options);
69
+ }
70
+ /** Resolve either a canonical PreFer model id or one unique authored alias. */
71
+ export function resolveCatalogModelId(catalog, modelId) {
72
+ if (catalog.models[modelId])
73
+ return modelId;
74
+ const matches = Object.values(catalog.models)
75
+ .filter((model) => model.aliases?.includes(modelId))
76
+ .map((model) => model.id);
77
+ if (!matches.length)
78
+ throw new Error(`unknown PreFer model ${modelId}`);
79
+ if (matches.length > 1)
80
+ throw new Error(`ambiguous PreFer model alias ${modelId}: ${matches.join(", ")}`);
81
+ return matches[0];
82
+ }
83
+ function resolveModelVariantUnchecked(catalog, modelId, options) {
84
+ const model = catalog.models[modelId];
85
+ const engineDefault = {
86
+ ...(model.engine_defaults?.all ?? {}),
87
+ ...(model.engine_defaults?.[options.engine] ?? {})
88
+ };
89
+ const quant = options.quant ?? (options.useNvfp4 ? "nvfp4" : undefined) ?? engineDefault.quant ?? model.default.quant;
90
+ const repository = selectRepositoryForQuant(catalog, model, options.engine, quant, options.repository, engineDefault.repository);
91
+ const repositorySource = model.repositories[repository];
92
+ if (!repositorySource)
93
+ throw new Error(`${modelId} does not define repository ${repository}`);
94
+ const quantSource = quantSourcesForRepository(catalog, model, repository)[quant];
95
+ if (!quantSource)
96
+ throw new Error(`${modelId} repository ${repository} does not define quant ${quant}`);
97
+ const modelAllEngine = model.engines?.all;
98
+ const modelExactEngine = model.engines?.[options.engine];
99
+ const quantAllEngine = quantSource.engines?.all;
100
+ const quantExactEngine = quantSource.engines?.[options.engine];
101
+ const quantRestrictsEngines = quantSource.engines !== undefined;
102
+ if (quantRestrictsEngines ? !quantAllEngine && !quantExactEngine : !modelAllEngine && !modelExactEngine) {
103
+ throw new Error(`${modelId} ${repository} ${quant} does not expose engine ${options.engine}`);
104
+ }
105
+ const engineChoice = mergeEngineChoice(modelAllEngine, modelExactEngine, quantAllEngine, quantExactEngine);
106
+ const selectedArtifacts = selectQuantArtifacts(model, repository, quant, quantSource, catalog.repositories);
107
+ const inferredSettings = inferVariantSettings(options.engine, quant, selectedArtifacts);
108
+ const settings = deepMerge(catalog.defaults.global, catalog.defaults.engines?.[options.engine], inferredSettings, model.settings, modelAllEngine?.settings, modelExactEngine?.settings, repositorySource.settings, quantSource.settings, quantAllEngine?.settings, quantExactEngine?.settings, options.overrides);
109
+ const modelRoot = options.modelRoot?.trim() || "/models";
110
+ const repositoryPath = storagePath(modelRoot, repository);
111
+ const artifacts = selectedArtifacts.map((artifact) => {
112
+ const roleDefaults = artifact.role
113
+ ? catalog.defaults.engine_artifact_roles?.[options.engine]?.[artifact.role]
114
+ : undefined;
115
+ const artifactSettings = deepMerge(roleDefaults, artifact.settings);
116
+ return {
117
+ ...artifact,
118
+ local_path: storagePath(modelRoot, artifact.repository, artifact.path),
119
+ ...(Object.keys(artifactSettings).length ? { settings: artifactSettings } : {})
120
+ };
121
+ });
122
+ return {
123
+ model_id: model.id,
124
+ family: model.family,
125
+ display_name: model.display_name,
126
+ ...(model.profile ? { profile: structuredClone(model.profile) } : {}),
127
+ engine: options.engine,
128
+ repository,
129
+ repository_path: repositoryPath,
130
+ revision: repositoryMetadata(catalog.repositories, repository, repositorySource).resolved_revision,
131
+ quant,
132
+ files: artifacts.map((artifact) => artifact.path),
133
+ artifacts,
134
+ artifact_bytes: artifacts.reduce((total, artifact) => total + artifact.size, 0),
135
+ capabilities: [...new Set([...(model.capabilities ?? []), ...(engineChoice.capabilities ?? [])])],
136
+ settings
137
+ };
138
+ }
139
+ export function listModelVariants(catalog, modelId, engine) {
140
+ validateModelCatalog(catalog);
141
+ const canonicalModelId = resolveCatalogModelId(catalog, modelId);
142
+ const model = catalog.models[canonicalModelId];
143
+ const engines = engine ? [engine] : supportedEngines(model);
144
+ const result = [];
145
+ for (const [repository, repositorySource] of Object.entries(model.repositories)) {
146
+ for (const quant of Object.keys(quantSourcesForRepository(catalog, model, repository))) {
147
+ for (const selectedEngine of engines) {
148
+ try {
149
+ result.push(resolveModelVariantUnchecked(catalog, canonicalModelId, { engine: selectedEngine, repository, quant }));
150
+ }
151
+ catch (error) {
152
+ if (!(error instanceof Error) || !error.message.includes("does not expose engine"))
153
+ throw error;
154
+ }
155
+ }
156
+ }
157
+ }
158
+ return result;
159
+ }
160
+ export function validateModelCatalog(value) {
161
+ const catalog = requireObject(value, "model catalog");
162
+ if (catalog.schema_version !== "prefer.model-catalog.v1")
163
+ throw new Error("model catalog schema is incompatible");
164
+ const generatedAt = requireString(catalog.generated_at, "model catalog generated_at");
165
+ if (!Number.isFinite(new Date(generatedAt).getTime()))
166
+ throw new Error("model catalog generated_at is invalid");
167
+ const sourceFingerprint = requireString(catalog.source_fingerprint, "model catalog source fingerprint");
168
+ if (!/^[0-9a-f]{64}$/u.test(sourceFingerprint))
169
+ throw new Error("model catalog source fingerprint is invalid");
170
+ const fingerprint = requireString(catalog.catalog_fingerprint, "model catalog fingerprint");
171
+ if (!/^[0-9a-f]{64}$/u.test(fingerprint))
172
+ throw new Error("model catalog fingerprint is invalid");
173
+ const defaults = requireObject(catalog.defaults, "model catalog defaults");
174
+ const models = requireObject(catalog.models, "model catalog models");
175
+ const repositories = requireObject(catalog.repositories, "model catalog repositories");
176
+ if (sha256(stableStringify({ defaults, models })) !== sourceFingerprint)
177
+ throw new Error("model catalog source fingerprint does not match its content");
178
+ if (sha256(stableStringify({ defaults, models, repositories })) !== fingerprint)
179
+ throw new Error("model catalog fingerprint does not match its content");
180
+ }
181
+ export async function readModelCatalog(path) {
182
+ const value = await readJson(path);
183
+ validateModelCatalog(value);
184
+ return value;
185
+ }
186
+ function previousRepositoriesForSources(previous, sources) {
187
+ const repositories = {};
188
+ for (const selection of listHuggingFaceSelections(sources)) {
189
+ const key = repositoryKey(selection.repository, selection.revision ?? "main");
190
+ const repository = previous.repositories[key];
191
+ if (!repository)
192
+ throw new Error(`last successful model catalog does not contain ${key}`);
193
+ if (repository.requested_revision !== (selection.revision ?? "main"))
194
+ throw new Error(`last successful model catalog revision does not match ${key}`);
195
+ repositories[key] = repository;
196
+ }
197
+ return repositories;
198
+ }
199
+ function assertCatalogFileBindings(sources, repositories) {
200
+ for (const model of Object.values(sources.models)) {
201
+ for (const [repository, repositorySource] of Object.entries(model.repositories)) {
202
+ const key = repositoryKey(repository, repositorySource.revision ?? "main");
203
+ const metadata = repositories[key];
204
+ if (!metadata)
205
+ throw new Error(`materialized catalog does not contain ${key}`);
206
+ for (const [quant, quantSource] of Object.entries(quantSourcesForRepositoryMetadata(model, repository, repositorySource, metadata))) {
207
+ selectQuantArtifacts(model, repository, quant, quantSource, repositories);
208
+ }
209
+ }
210
+ }
211
+ }
212
+ function materializeCatalog(sources, repositories, now) {
213
+ const fingerprintInput = { defaults: sources.defaults, models: sources.models, repositories };
214
+ return {
215
+ schema_version: "prefer.model-catalog.v1",
216
+ generated_at: (now?.() ?? new Date()).toISOString(),
217
+ source_fingerprint: sources.source_fingerprint,
218
+ catalog_fingerprint: sha256(stableStringify(fingerprintInput)),
219
+ defaults: sources.defaults,
220
+ models: sources.models,
221
+ repositories
222
+ };
223
+ }
224
+ function mergeEngineChoice(...choices) {
225
+ const capabilities = choices.flatMap((choice) => choice?.capabilities ?? []);
226
+ const notes = choices.flatMap((choice) => choice?.notes ?? []);
227
+ return {
228
+ ...(capabilities.length ? { capabilities } : {}),
229
+ settings: deepMerge(...choices.map((choice) => choice?.settings)),
230
+ ...(notes.length ? { notes } : {})
231
+ };
232
+ }
233
+ function supportedEngines(model) {
234
+ const result = new Set();
235
+ for (const engine of Object.keys(model.engines ?? {}))
236
+ if (engine !== "all")
237
+ result.add(engine);
238
+ for (const repository of Object.values(model.repositories)) {
239
+ for (const quant of Object.values(repository.quants ?? {})) {
240
+ for (const engine of Object.keys(quant.engines ?? {}))
241
+ if (engine !== "all")
242
+ result.add(engine);
243
+ }
244
+ }
245
+ return [...result];
246
+ }
247
+ async function yamlFiles(root) {
248
+ const entries = await readdir(root, { withFileTypes: true });
249
+ const files = [];
250
+ for (const entry of entries) {
251
+ const path = resolve(root, entry.name);
252
+ if (entry.isDirectory())
253
+ files.push(...await yamlFiles(path));
254
+ else if (/\.ya?ml$/iu.test(entry.name))
255
+ files.push(path);
256
+ }
257
+ return files;
258
+ }
259
+ function validateDefaults(value) {
260
+ const source = requireObject(value, "defaults.yaml");
261
+ if (source.schema_version !== "prefer.model-defaults.v1")
262
+ throw new Error("defaults.yaml schema_version must be prefer.model-defaults.v1");
263
+ return source;
264
+ }
265
+ function validateModel(value, path) {
266
+ const source = requireObject(value, path);
267
+ if ("id" in source)
268
+ throw new Error(`${path}: id is derived from the filename and must not be repeated`);
269
+ if (source.schema_version !== "prefer.model-source.v1")
270
+ throw new Error(`${path}: incompatible schema_version`);
271
+ requireString(source.display_name, `${path} display_name`);
272
+ if (source.profile !== undefined) {
273
+ const profile = requireObject(source.profile, `${path} profile`);
274
+ requireString(profile.summary, `${path} profile.summary`);
275
+ }
276
+ const defaults = requireObject(source.default, `${path} default`);
277
+ const defaultRepository = validateRepository(requireString(defaults.repository, `${path} default.repository`));
278
+ const defaultQuant = requireString(defaults.quant, `${path} default.quant`);
279
+ const repositories = requireObject(source.repositories, `${path} repositories`);
280
+ if (!Object.keys(repositories).length)
281
+ throw new Error(`${path}: repositories must not be empty`);
282
+ if (source.engines !== undefined)
283
+ validateEngineChoices(source.engines, `${path} engines`);
284
+ for (const [repository, rawRepository] of Object.entries(repositories)) {
285
+ validateRepository(repository);
286
+ const repositorySource = requireObject(rawRepository, `${path} repository ${repository}`);
287
+ if (repositorySource.revision !== undefined) {
288
+ validateRevision(requireString(repositorySource.revision, `${path} repository ${repository} revision`), { immutable: true });
289
+ }
290
+ if (repositorySource.discover !== undefined && repositorySource.discover !== "gguf") {
291
+ throw new Error(`${path}: repository ${repository} has unsupported discovery mode`);
292
+ }
293
+ const quants = repositorySource.quants === undefined
294
+ ? {}
295
+ : requireObject(repositorySource.quants, `${path} repository ${repository} quants`);
296
+ if (repositorySource.discover === "gguf" && !Object.keys(quants).length) {
297
+ throw new Error(`${path}: repository ${repository} needs one authored quant as its GGUF discovery template`);
298
+ }
299
+ for (const [quant, rawQuant] of Object.entries(quants)) {
300
+ const quantSource = requireObject(rawQuant, `${path} ${repository} ${quant}`);
301
+ if (quantSource.engines === undefined && source.engines === undefined) {
302
+ throw new Error(`${path}: ${repository} ${quant} must define engines or inherit model engines`);
303
+ }
304
+ if (quantSource.engines !== undefined) {
305
+ const engines = requireObject(quantSource.engines, `${path} ${repository} ${quant} engines`);
306
+ if (!Object.keys(engines).length)
307
+ throw new Error(`${path}: ${repository} ${quant} has no engine choices`);
308
+ validateEngineChoices(engines, `${path} ${repository} ${quant} engines`);
309
+ }
310
+ if (quantSource.artifacts !== undefined && (quantSource.files !== undefined || quantSource.include !== undefined || quantSource.exclude !== undefined)) {
311
+ throw new Error(`${path}: ${repository} ${quant} may use artifacts or shorthand file selectors, not both`);
312
+ }
313
+ }
314
+ }
315
+ if (source.quant_sources !== undefined) {
316
+ const quantSources = requireObject(source.quant_sources, `${path} quant_sources`);
317
+ for (const [quant, rawEngines] of Object.entries(quantSources)) {
318
+ const engines = requireObject(rawEngines, `${path} quant_sources.${quant}`);
319
+ if (!Object.keys(engines).length)
320
+ throw new Error(`${path}: quant_sources.${quant} must not be empty`);
321
+ for (const [engine, rawRepository] of Object.entries(engines)) {
322
+ const repository = validateRepository(requireString(rawRepository, `${path} quant_sources.${quant}.${engine}`));
323
+ if (!(repository in repositories))
324
+ throw new Error(`${path}: quant_sources.${quant}.${engine} references undeclared repository ${repository}`);
325
+ }
326
+ }
327
+ }
328
+ const defaultSource = repositories[defaultRepository];
329
+ const defaultQuants = defaultSource && isObject(defaultSource.quants) ? defaultSource.quants : undefined;
330
+ if (!defaultSource || !defaultQuants || !(defaultQuant in defaultQuants))
331
+ throw new Error(`${path}: default repository/quant is not defined`);
332
+ return source;
333
+ }
334
+ function validateEngineChoices(value, label) {
335
+ const engines = requireObject(value, label);
336
+ for (const [engine, rawChoice] of Object.entries(engines)) {
337
+ const choice = requireObject(rawChoice, `${label}.${engine}`);
338
+ if ("status" in choice)
339
+ throw new Error(`${label}.${engine}: status belongs to deployment evidence, not authored model selection`);
340
+ }
341
+ }
342
+ function selectQuantArtifacts(model, primaryRepository, quant, quantSource, repositories) {
343
+ const selections = quantSource.artifacts?.length
344
+ ? quantSource.artifacts
345
+ : [{
346
+ ...(quantSource.files ? { files: quantSource.files } : {}),
347
+ ...(quantSource.include ? { include: quantSource.include } : {}),
348
+ ...(quantSource.exclude ? { exclude: quantSource.exclude } : {})
349
+ }];
350
+ const result = [];
351
+ const seen = new Set();
352
+ for (const selection of selections) {
353
+ const repository = selection.repository ?? primaryRepository;
354
+ const repositorySource = model.repositories[repository];
355
+ if (!repositorySource)
356
+ throw new Error(`${model.id} ${primaryRepository} ${quant} references undeclared repository ${repository}`);
357
+ const metadata = repositoryMetadata(repositories, repository, repositorySource);
358
+ const explicitFiles = selection.files ?? [];
359
+ const include = selection.include ?? [];
360
+ const exclude = selection.exclude ?? [];
361
+ let selected = explicitFiles.length
362
+ ? explicitFiles.map((file) => {
363
+ const match = metadata.files.find((candidate) => candidate.path === file);
364
+ if (!match)
365
+ throw new Error(`${model.id} ${primaryRepository} ${quant} references missing Hugging Face file ${repository}/${file}`);
366
+ return match;
367
+ })
368
+ : metadata.files.filter((file) => !include.length || include.some((pattern) => globMatch(file.path, pattern)));
369
+ if (exclude.length)
370
+ selected = selected.filter((file) => !exclude.some((pattern) => globMatch(file.path, pattern)));
371
+ if (!selected.length)
372
+ throw new Error(`${model.id} ${primaryRepository} ${quant} artifact selector matched no files in ${repository}`);
373
+ for (const file of selected) {
374
+ const identity = `${repository}@${metadata.resolved_revision}/${file.path}`;
375
+ if (seen.has(identity))
376
+ throw new Error(`${model.id} ${primaryRepository} ${quant} selects ${identity} more than once`);
377
+ seen.add(identity);
378
+ result.push({
379
+ ...file,
380
+ repository,
381
+ revision: metadata.resolved_revision,
382
+ ...(selection.role ? { role: selection.role } : {}),
383
+ ...(selection.settings ? { settings: selection.settings } : {})
384
+ });
385
+ }
386
+ }
387
+ return result;
388
+ }
389
+ function selectRepositoryForQuant(catalog, model, engine, quant, explicitRepository, engineRepository) {
390
+ if (explicitRepository)
391
+ return explicitRepository;
392
+ const mapped = model.quant_sources?.[quant]?.[engine] ?? model.quant_sources?.[quant]?.all;
393
+ if (mapped)
394
+ return mapped;
395
+ const preferred = [engineRepository, model.default.repository].filter((value) => Boolean(value));
396
+ for (const repository of preferred) {
397
+ if (quantSourcesForRepository(catalog, model, repository)[quant])
398
+ return repository;
399
+ }
400
+ const candidates = Object.keys(model.repositories).filter((repository) => {
401
+ const source = quantSourcesForRepository(catalog, model, repository)[quant];
402
+ return source ? exposesEngine(model, source, engine) : false;
403
+ });
404
+ if (candidates.length === 1)
405
+ return candidates[0];
406
+ if (!candidates.length)
407
+ throw new Error(`${model.id} does not offer quant ${quant} for engine ${engine}`);
408
+ throw new Error(`${model.id} quant ${quant} is available from multiple repositories for ${engine}; select one of ${candidates.join(", ")}`);
409
+ }
410
+ function quantSourcesForRepository(catalog, model, repository) {
411
+ const source = model.repositories[repository];
412
+ if (!source)
413
+ return {};
414
+ return quantSourcesForRepositoryMetadata(model, repository, source, repositoryMetadata(catalog.repositories, repository, source));
415
+ }
416
+ function quantSourcesForRepositoryMetadata(model, repository, source, metadata) {
417
+ const explicit = source.quants ?? {};
418
+ if (source.discover !== "gguf")
419
+ return explicit;
420
+ const result = { ...explicit };
421
+ const fallbackTemplate = explicit[model.default.repository === repository ? model.default.quant : ""] ?? Object.values(explicit)[0];
422
+ if (!fallbackTemplate)
423
+ throw new Error(`${model.id} repository ${repository} enables GGUF discovery without a template quant`);
424
+ const secondary = secondaryArtifactPaths(repository, explicit);
425
+ const authoredPrimarySelections = new Set(Object.values(explicit)
426
+ .map((quant) => primaryArtifactFiles(repository, quant).sort().join("\n"))
427
+ .filter(Boolean));
428
+ for (const [quant, files] of discoverGgufQuants(metadata.files, secondary)) {
429
+ if (!result[quant] && !authoredPrimarySelections.has(files.join("\n"))) {
430
+ result[quant] = discoveredQuantSource(closestQuantTemplate(explicit, quant) ?? fallbackTemplate, repository, files);
431
+ }
432
+ }
433
+ return result;
434
+ }
435
+ function closestQuantTemplate(quants, requested) {
436
+ const requestedScore = quantScore(requested);
437
+ if (requestedScore === undefined)
438
+ return undefined;
439
+ return Object.entries(quants)
440
+ .flatMap(([quant, source]) => {
441
+ const score = quantScore(quant);
442
+ return score === undefined ? [] : [{ source, score, distance: Math.abs(score - requestedScore) }];
443
+ })
444
+ .sort((left, right) => left.distance - right.distance || right.score - left.score)[0]?.source;
445
+ }
446
+ function quantScore(quant) {
447
+ const normalized = quant.toLowerCase();
448
+ if (/^(?:bf|f|fp)32/u.test(normalized))
449
+ return 32;
450
+ if (/^(?:bf|f|fp)16/u.test(normalized))
451
+ return 16;
452
+ if (normalized.startsWith("nvfp4") || normalized.startsWith("mxfp4"))
453
+ return 4;
454
+ const match = /(?:^|-)\D*([1-9])(?:-|$)/u.exec(normalized);
455
+ return match?.[1] ? Number(match[1]) : undefined;
456
+ }
457
+ function primaryArtifactFiles(repository, source) {
458
+ if (source.artifacts?.length) {
459
+ return source.artifacts.flatMap((artifact) => (artifact.repository ?? repository) === repository && isPrimaryRole(artifact.role) ? artifact.files ?? [] : []);
460
+ }
461
+ return source.files ?? [];
462
+ }
463
+ function discoveredQuantSource(template, repository, files) {
464
+ const result = structuredClone(template);
465
+ if (result.artifacts?.length) {
466
+ let replaced = false;
467
+ const artifacts = result.artifacts.map((artifact) => {
468
+ const artifactRepository = artifact.repository ?? repository;
469
+ if (!replaced && artifactRepository === repository && isPrimaryRole(artifact.role)) {
470
+ replaced = true;
471
+ const replacement = { ...artifact, files };
472
+ delete replacement.include;
473
+ delete replacement.exclude;
474
+ return replacement;
475
+ }
476
+ return artifact;
477
+ });
478
+ if (!replaced)
479
+ artifacts.unshift({ files, role: "model" });
480
+ result.artifacts = artifacts;
481
+ }
482
+ else {
483
+ result.files = files;
484
+ delete result.include;
485
+ delete result.exclude;
486
+ }
487
+ return result;
488
+ }
489
+ function discoverGgufQuants(files, secondary) {
490
+ const result = new Map();
491
+ for (const file of files) {
492
+ if (!file.path.toLowerCase().endsWith(".gguf") || secondary.has(file.path) || looksLikeCompanion(file.path))
493
+ continue;
494
+ const quant = quantFromGgufPath(file.path);
495
+ if (!quant)
496
+ continue;
497
+ result.set(quant, [...(result.get(quant) ?? []), file.path]);
498
+ }
499
+ return [...result.entries()]
500
+ .map(([quant, paths]) => [quant, paths.sort()])
501
+ .sort(([left], [right]) => left.localeCompare(right));
502
+ }
503
+ function quantFromGgufPath(path) {
504
+ const filename = basename(path).replace(/\.gguf$/iu, "").replace(/-\d{5}-of-\d{5}$/iu, "");
505
+ const match = /(?:^|[-.])((?:UD-)?(?:IQ[1-9](?:_[A-Z0-9]+)*|TQ[1-9](?:_[A-Z0-9]+)*|Q[1-9](?:_[A-Z0-9]+)*|Q4KEXPERTS)|BF16|F16|F32|FP16|FP32|NVFP4|MXFP4)$/iu.exec(filename);
506
+ return match?.[1]?.toLowerCase().replaceAll("_", "-");
507
+ }
508
+ function secondaryArtifactPaths(repository, quants) {
509
+ const result = new Set();
510
+ for (const quant of Object.values(quants)) {
511
+ for (const artifact of quant.artifacts ?? []) {
512
+ if ((artifact.repository ?? repository) !== repository || isPrimaryRole(artifact.role))
513
+ continue;
514
+ for (const file of artifact.files ?? [])
515
+ result.add(file);
516
+ }
517
+ }
518
+ return result;
519
+ }
520
+ function looksLikeCompanion(path) {
521
+ return /(?:^|[\/_-])(mmproj|mtp|draft|dspark|dflash|vae|clip|encoder|decoder)(?:[\/_-]|$)/iu.test(path);
522
+ }
523
+ function isPrimaryRole(role) {
524
+ return role === undefined || role === "model" || role === "target" || role === "checkpoint";
525
+ }
526
+ function exposesEngine(model, quant, engine) {
527
+ const choices = quant.engines ?? model.engines;
528
+ return choices?.all !== undefined || choices?.[engine] !== undefined;
529
+ }
530
+ function inferVariantSettings(engine, quant, artifacts) {
531
+ const primary = artifacts.filter((artifact) => isPrimaryRole(artifact.role));
532
+ const gguf = primary.length > 0 && primary.every((artifact) => artifact.path.toLowerCase().endsWith(".gguf"));
533
+ return deepMerge((engine === "sglang" || engine === "vllm") && gguf ? { launcher: { load_format: "gguf" } } : undefined, (engine === "sglang" || engine === "vllm") && quant === "nvfp4" ? { launcher: { quantization: "modelopt_fp4" } } : undefined);
534
+ }
535
+ function repositoryMetadata(repositories, repository, source) {
536
+ const requestedRevision = source.revision ?? "main";
537
+ const metadata = repositories[repositoryKey(repository, requestedRevision)];
538
+ if (!metadata)
539
+ throw new Error(`materialized catalog does not contain ${repository}@${requestedRevision}`);
540
+ return metadata;
541
+ }
542
+ function storagePath(root, ...parts) {
543
+ return [root.replace(/\/+$/u, ""), ...parts.map((part) => part.replace(/^\/+|\/+$/gu, ""))]
544
+ .filter(Boolean)
545
+ .join("/");
546
+ }
547
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}