@mlx-node/lm 0.0.10 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat-session.d.ts +175 -68
- package/dist/chat-session.d.ts.map +1 -1
- package/dist/chat-session.js +271 -122
- package/dist/family-data.d.ts +407 -0
- package/dist/family-data.d.ts.map +1 -0
- package/dist/family-data.js +381 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/models/model-loader.d.ts +91 -135
- package/dist/models/model-loader.d.ts.map +1 -1
- package/dist/models/model-loader.js +74 -179
- package/dist/models/paged-config-override.d.ts +0 -2
- package/dist/models/paged-config-override.d.ts.map +1 -1
- package/dist/models/paged-config-override.js +29 -6
- package/dist/models/qwen3_5-configs.d.ts +1 -3
- package/dist/models/qwen3_5-configs.d.ts.map +1 -1
- package/dist/stream.d.ts +29 -5
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +127 -24
- package/package.json +7 -3
- package/dist/interfaces.d.ts +0 -3
- package/dist/interfaces.d.ts.map +0 -1
- package/dist/interfaces.js +0 -1
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native-free per-family registration rows plus the pure `matchFamily`
|
|
3
|
+
* detection they drive.
|
|
4
|
+
*
|
|
5
|
+
* This module must stay free of runtime imports (`import type` only): it is
|
|
6
|
+
* re-exported through the native-free `@mlx-node/agent/catalog` subpath to the
|
|
7
|
+
* dashboard viewer process, which must never dlopen the Metal addon.
|
|
8
|
+
* `packages/agent/__test__/catalog-native-free.test.ts` gates that contract.
|
|
9
|
+
*/
|
|
10
|
+
import type { ChatConfig } from '@mlx-node/core';
|
|
11
|
+
export type ModelFamilyKind = 'trainable' | 'loadable' | 'embedding' | 'vlm';
|
|
12
|
+
export interface NormalizedModelConfig {
|
|
13
|
+
readonly usesDefaultModelType: boolean;
|
|
14
|
+
readonly rawModelType: string | undefined;
|
|
15
|
+
readonly rawModelTypeLabel: string;
|
|
16
|
+
readonly architectures: ReadonlySet<string>;
|
|
17
|
+
}
|
|
18
|
+
export interface ModelConfigMatchContext extends NormalizedModelConfig {
|
|
19
|
+
readonly modelType: string | undefined;
|
|
20
|
+
}
|
|
21
|
+
export interface ModelConfigMatcher {
|
|
22
|
+
/** Exact raw `config.json` model_type values owned by this family. */
|
|
23
|
+
readonly rawModelTypes: readonly string[];
|
|
24
|
+
/** Optional higher-priority architecture probe for shared or absent model_type values. */
|
|
25
|
+
readonly architectureProbe?: (config: ModelConfigMatchContext) => boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Structural mirror of pi's `ProviderModelConfig['thinkingLevelMap']`. Declared
|
|
29
|
+
* here because pi types are agent-only; `packages/agent/src/provider/models.ts`
|
|
30
|
+
* pins assignability with a `satisfies` check at its use site.
|
|
31
|
+
*/
|
|
32
|
+
export interface FamilyThinkingLevelMap {
|
|
33
|
+
readonly off?: string | null;
|
|
34
|
+
readonly minimal?: string | null;
|
|
35
|
+
readonly low?: string | null;
|
|
36
|
+
readonly medium?: string | null;
|
|
37
|
+
readonly high?: string | null;
|
|
38
|
+
readonly xhigh?: string | null;
|
|
39
|
+
readonly max?: string | null;
|
|
40
|
+
}
|
|
41
|
+
export interface FamilyTraits {
|
|
42
|
+
/**
|
|
43
|
+
* Whether the family emits `<think>` reasoning (drives pi's thinking
|
|
44
|
+
* levels). Gemma4 routes its `<|channel>thought` protocol through its
|
|
45
|
+
* family stream parser rather than the generic `<think>` tracker, but the
|
|
46
|
+
* user-facing level still controls the prompt's `<|think|>` capability.
|
|
47
|
+
*/
|
|
48
|
+
readonly reasoning: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Optional family-specific projection of Pi's thinking controls. Gemma4's
|
|
51
|
+
* prompt protocol has two modes rather than four distinct effort levels:
|
|
52
|
+
* minimal disables `<|think|>` and high enables it.
|
|
53
|
+
*/
|
|
54
|
+
readonly thinkingLevelMap?: FamilyThinkingLevelMap;
|
|
55
|
+
/**
|
|
56
|
+
* Context-window fallback when `config.json` carries no
|
|
57
|
+
* `max_position_embeddings` at either nesting level.
|
|
58
|
+
*
|
|
59
|
+
* A family's VOCAB size is never the right value here — the two are
|
|
60
|
+
* unrelated numbers that happen to collide on some checkpoints
|
|
61
|
+
* (nemotron_h is 131072 vocab / 1048576 context).
|
|
62
|
+
*/
|
|
63
|
+
readonly fallbackContextWindow: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Sampling defaults from Unsloth's Qwen3.6 guide:
|
|
67
|
+
* https://unsloth.ai/docs/models/qwen3.6#recommended-settings
|
|
68
|
+
*
|
|
69
|
+
* All modes pin `top_k = 20` and `min_p = 0.0`; they differ in
|
|
70
|
+
* `temperature`, `top_p`, and `presence_penalty`.
|
|
71
|
+
*
|
|
72
|
+
* Deliberately no `maxConsecutiveTokens` / `maxNgramRepeats` / `ngramSize`: the
|
|
73
|
+
* native anti-repetition cutoff is off by default (vLLM-aligned), and a client
|
|
74
|
+
* can still opt in per request.
|
|
75
|
+
*/
|
|
76
|
+
export declare const QWEN_SAMPLING_DEFAULTS: {
|
|
77
|
+
/** Thinking mode for precise coding tasks. */
|
|
78
|
+
readonly thinkingCoding: {
|
|
79
|
+
temperature: number;
|
|
80
|
+
topP: number;
|
|
81
|
+
topK: number;
|
|
82
|
+
minP: number;
|
|
83
|
+
presencePenalty: number;
|
|
84
|
+
repetitionPenalty: number;
|
|
85
|
+
};
|
|
86
|
+
/** Thinking mode for general tasks. */
|
|
87
|
+
readonly thinkingGeneral: {
|
|
88
|
+
temperature: number;
|
|
89
|
+
topP: number;
|
|
90
|
+
topK: number;
|
|
91
|
+
minP: number;
|
|
92
|
+
presencePenalty: number;
|
|
93
|
+
repetitionPenalty: number;
|
|
94
|
+
};
|
|
95
|
+
/** Instruct (non-thinking) for general tasks. */
|
|
96
|
+
readonly instructGeneral: {
|
|
97
|
+
temperature: number;
|
|
98
|
+
topP: number;
|
|
99
|
+
topK: number;
|
|
100
|
+
minP: number;
|
|
101
|
+
presencePenalty: number;
|
|
102
|
+
repetitionPenalty: number;
|
|
103
|
+
};
|
|
104
|
+
/** Instruct (non-thinking) for reasoning tasks. */
|
|
105
|
+
readonly instructReasoning: {
|
|
106
|
+
temperature: number;
|
|
107
|
+
topP: number;
|
|
108
|
+
topK: number;
|
|
109
|
+
minP: number;
|
|
110
|
+
presencePenalty: number;
|
|
111
|
+
repetitionPenalty: number;
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
/** Sampling defaults for Gemma4 Instruct. */
|
|
115
|
+
export declare const GEMMA4_SAMPLING_DEFAULTS: ChatConfig;
|
|
116
|
+
/** Sampling defaults from Meta's Muse-Glimmer release recipe. */
|
|
117
|
+
export declare const MUSE_GLIMMER_SAMPLING_DEFAULTS: ChatConfig;
|
|
118
|
+
/** Sampling defaults from NVIDIA's Nemotron 3.5 Lightning release recipe. */
|
|
119
|
+
export declare const NEMOTRON_SAMPLING_DEFAULTS: ChatConfig;
|
|
120
|
+
/** Sampling defaults for LFM2.5 Thinking. */
|
|
121
|
+
export declare const LFM2_SAMPLING_DEFAULTS: ChatConfig;
|
|
122
|
+
/**
|
|
123
|
+
* Sampling defaults + per-model output cap. A per-request client value still
|
|
124
|
+
* wins: `ChatSession.mergeConfig` treats per-call config as an overlay on top
|
|
125
|
+
* of `defaultConfig`.
|
|
126
|
+
*/
|
|
127
|
+
export interface LaunchPreset {
|
|
128
|
+
sampling: ChatConfig;
|
|
129
|
+
maxOutputTokens: number;
|
|
130
|
+
}
|
|
131
|
+
interface ModelFamilyDataBase {
|
|
132
|
+
/** Canonical `ModelType` id. */
|
|
133
|
+
readonly id: string;
|
|
134
|
+
readonly match: ModelConfigMatcher;
|
|
135
|
+
/** Backward-compatible fallback when config.json omits model_type or sets it to null. */
|
|
136
|
+
readonly defaultForNullishModelType?: true;
|
|
137
|
+
readonly acceptsDraftModel?: true;
|
|
138
|
+
/**
|
|
139
|
+
* GGUF `general.architecture` values whose native `load(path)` accepts a
|
|
140
|
+
* direct GGUF file. Qwen3.5-MoE currently consumes converted directories,
|
|
141
|
+
* not direct files, so it carries none.
|
|
142
|
+
*/
|
|
143
|
+
readonly ggufArchitectures?: readonly string[];
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* A chat-capable family MUST declare `traits` and a `launchPreset` — the
|
|
147
|
+
* compile-time completeness gate. One preset serves every surface:
|
|
148
|
+
* `@mlx-node/server` discovery, `mlx launch claude` and `mlx agent`. A chat
|
|
149
|
+
* family is therefore reachable from all of them or from none, never from one
|
|
150
|
+
* and not another.
|
|
151
|
+
*/
|
|
152
|
+
interface ChatFamilyData extends ModelFamilyDataBase {
|
|
153
|
+
readonly kind: 'trainable' | 'loadable';
|
|
154
|
+
readonly traits: FamilyTraits;
|
|
155
|
+
readonly launchPreset: LaunchPreset;
|
|
156
|
+
}
|
|
157
|
+
interface NonGenerativeFamilyData extends ModelFamilyDataBase {
|
|
158
|
+
readonly kind: 'embedding' | 'vlm';
|
|
159
|
+
readonly traits?: undefined;
|
|
160
|
+
readonly launchPreset?: undefined;
|
|
161
|
+
}
|
|
162
|
+
export type ModelFamilyData = ChatFamilyData | NonGenerativeFamilyData;
|
|
163
|
+
/**
|
|
164
|
+
* Ordered source of truth for every supported model family's registration
|
|
165
|
+
* data. Each entry owns its canonical `ModelType`, raw config aliases /
|
|
166
|
+
* architecture probes, and `ChatSession` eligibility via `kind`:
|
|
167
|
+
*
|
|
168
|
+
* - `'trainable'` — GRPO/SFT-capable LM (Qwen3 family); chat-capable.
|
|
169
|
+
* - `'loadable'` — chat-capable LM with no trainer engine (Gemma4, LFM2).
|
|
170
|
+
* - `'embedding'` — no chat surface (Harrier); rejected by `loadSession`.
|
|
171
|
+
* - `'vlm'` — VLM whose AsyncGenerator wrapper lives in
|
|
172
|
+
* `@mlx-node/vlm` (importing it here would create a
|
|
173
|
+
* circular package dependency), so `loadSession`
|
|
174
|
+
* rejects it and routes callers to `@mlx-node/vlm`.
|
|
175
|
+
*
|
|
176
|
+
* ORDER IS LOAD-BEARING: a base family is selected from an explicit alias or
|
|
177
|
+
* the single declarative nullish-model_type default, then architecture probes
|
|
178
|
+
* refine it in declaration order. Gemma's unified architecture is
|
|
179
|
+
* authoritative (matching the native loader); Harrier refines a Qwen3 base.
|
|
180
|
+
* Adding a family means adding one data row here plus one loader binding in
|
|
181
|
+
* `models/model-loader.ts`; the row type and the family-completeness test
|
|
182
|
+
* enumerate everything else.
|
|
183
|
+
*/
|
|
184
|
+
export declare const MODEL_FAMILY_DATA: readonly [{
|
|
185
|
+
readonly id: 'gemma4';
|
|
186
|
+
readonly kind: 'loadable';
|
|
187
|
+
readonly match: {
|
|
188
|
+
readonly rawModelTypes: readonly ["gemma4", "gemma4_text", "gemma4_unified"];
|
|
189
|
+
readonly architectureProbe: ({ architectures }: ModelConfigMatchContext) => boolean;
|
|
190
|
+
};
|
|
191
|
+
readonly acceptsDraftModel: true;
|
|
192
|
+
readonly traits: {
|
|
193
|
+
readonly reasoning: true;
|
|
194
|
+
readonly thinkingLevelMap: {
|
|
195
|
+
readonly minimal: 'minimal';
|
|
196
|
+
readonly low: null;
|
|
197
|
+
readonly medium: null;
|
|
198
|
+
readonly high: 'high';
|
|
199
|
+
};
|
|
200
|
+
readonly fallbackContextWindow: 131072;
|
|
201
|
+
};
|
|
202
|
+
readonly launchPreset: {
|
|
203
|
+
readonly sampling: ChatConfig;
|
|
204
|
+
readonly maxOutputTokens: 16384;
|
|
205
|
+
};
|
|
206
|
+
}, {
|
|
207
|
+
readonly id: 'muse_glimmer';
|
|
208
|
+
readonly kind: 'loadable';
|
|
209
|
+
readonly match: {
|
|
210
|
+
readonly rawModelTypes: readonly ["muse_glimmer", "muse_glimmer_text"];
|
|
211
|
+
readonly architectureProbe: ({ architectures }: ModelConfigMatchContext) => boolean;
|
|
212
|
+
};
|
|
213
|
+
readonly traits: {
|
|
214
|
+
readonly reasoning: true;
|
|
215
|
+
readonly fallbackContextWindow: 131072;
|
|
216
|
+
};
|
|
217
|
+
readonly launchPreset: {
|
|
218
|
+
readonly sampling: ChatConfig;
|
|
219
|
+
readonly maxOutputTokens: 16384;
|
|
220
|
+
};
|
|
221
|
+
}, {
|
|
222
|
+
readonly id: 'harrier';
|
|
223
|
+
readonly kind: 'embedding';
|
|
224
|
+
readonly match: {
|
|
225
|
+
readonly rawModelTypes: readonly ["harrier"];
|
|
226
|
+
readonly architectureProbe: ({ modelType, architectures }: ModelConfigMatchContext) => boolean;
|
|
227
|
+
};
|
|
228
|
+
}, {
|
|
229
|
+
readonly id: 'qwen3';
|
|
230
|
+
readonly kind: 'trainable';
|
|
231
|
+
readonly match: {
|
|
232
|
+
readonly rawModelTypes: readonly ["qwen3"];
|
|
233
|
+
};
|
|
234
|
+
readonly defaultForNullishModelType: true;
|
|
235
|
+
readonly traits: {
|
|
236
|
+
readonly reasoning: true;
|
|
237
|
+
readonly fallbackContextWindow: 40960;
|
|
238
|
+
};
|
|
239
|
+
readonly launchPreset: {
|
|
240
|
+
readonly sampling: {
|
|
241
|
+
temperature: number;
|
|
242
|
+
topP: number;
|
|
243
|
+
topK: number;
|
|
244
|
+
minP: number;
|
|
245
|
+
presencePenalty: number;
|
|
246
|
+
repetitionPenalty: number;
|
|
247
|
+
};
|
|
248
|
+
readonly maxOutputTokens: 38912;
|
|
249
|
+
};
|
|
250
|
+
}, {
|
|
251
|
+
readonly id: 'qwen3_5';
|
|
252
|
+
readonly kind: 'trainable';
|
|
253
|
+
readonly match: {
|
|
254
|
+
readonly rawModelTypes: readonly ["qwen3_5"];
|
|
255
|
+
};
|
|
256
|
+
readonly acceptsDraftModel: true;
|
|
257
|
+
readonly ggufArchitectures: readonly ["qwen35"];
|
|
258
|
+
readonly traits: {
|
|
259
|
+
readonly reasoning: true;
|
|
260
|
+
readonly fallbackContextWindow: 262144;
|
|
261
|
+
};
|
|
262
|
+
readonly launchPreset: {
|
|
263
|
+
readonly sampling: {
|
|
264
|
+
temperature: number;
|
|
265
|
+
topP: number;
|
|
266
|
+
topK: number;
|
|
267
|
+
minP: number;
|
|
268
|
+
presencePenalty: number;
|
|
269
|
+
repetitionPenalty: number;
|
|
270
|
+
};
|
|
271
|
+
readonly maxOutputTokens: 81920;
|
|
272
|
+
};
|
|
273
|
+
}, {
|
|
274
|
+
readonly id: 'qwen3_5_moe';
|
|
275
|
+
readonly kind: 'trainable';
|
|
276
|
+
readonly match: {
|
|
277
|
+
readonly rawModelTypes: readonly ["qwen3_5_moe"];
|
|
278
|
+
};
|
|
279
|
+
readonly traits: {
|
|
280
|
+
readonly reasoning: true;
|
|
281
|
+
readonly fallbackContextWindow: 262144;
|
|
282
|
+
};
|
|
283
|
+
readonly launchPreset: {
|
|
284
|
+
readonly sampling: {
|
|
285
|
+
temperature: number;
|
|
286
|
+
topP: number;
|
|
287
|
+
topK: number;
|
|
288
|
+
minP: number;
|
|
289
|
+
presencePenalty: number;
|
|
290
|
+
repetitionPenalty: number;
|
|
291
|
+
};
|
|
292
|
+
readonly maxOutputTokens: 81920;
|
|
293
|
+
};
|
|
294
|
+
}, {
|
|
295
|
+
readonly id: 'lfm2';
|
|
296
|
+
readonly kind: 'loadable';
|
|
297
|
+
readonly match: {
|
|
298
|
+
readonly rawModelTypes: readonly ["lfm2"];
|
|
299
|
+
};
|
|
300
|
+
readonly traits: {
|
|
301
|
+
readonly reasoning: true;
|
|
302
|
+
readonly fallbackContextWindow: 128000;
|
|
303
|
+
};
|
|
304
|
+
readonly launchPreset: {
|
|
305
|
+
readonly sampling: ChatConfig;
|
|
306
|
+
readonly maxOutputTokens: 8192;
|
|
307
|
+
};
|
|
308
|
+
}, {
|
|
309
|
+
readonly id: 'lfm2_moe';
|
|
310
|
+
readonly kind: 'loadable';
|
|
311
|
+
readonly match: {
|
|
312
|
+
readonly rawModelTypes: readonly ["lfm2_moe"];
|
|
313
|
+
};
|
|
314
|
+
readonly traits: {
|
|
315
|
+
readonly reasoning: true;
|
|
316
|
+
readonly fallbackContextWindow: 128000;
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* LFM2.5-8B-A1B: LiquidAI's MoE card recommends temperature 0.2 / top_k 80
|
|
320
|
+
* — deliberately NOT the dense `lfm2` values (0.05 / 50).
|
|
321
|
+
*/
|
|
322
|
+
readonly launchPreset: {
|
|
323
|
+
readonly sampling: {
|
|
324
|
+
readonly temperature: 0.2;
|
|
325
|
+
readonly topP: 1;
|
|
326
|
+
readonly topK: 80;
|
|
327
|
+
readonly minP: 0;
|
|
328
|
+
readonly presencePenalty: 0;
|
|
329
|
+
readonly repetitionPenalty: 1.05;
|
|
330
|
+
};
|
|
331
|
+
readonly maxOutputTokens: 8192;
|
|
332
|
+
};
|
|
333
|
+
}, {
|
|
334
|
+
readonly id: 'nemotron_h';
|
|
335
|
+
readonly kind: 'loadable';
|
|
336
|
+
readonly match: {
|
|
337
|
+
readonly rawModelTypes: readonly ["nemotron_h"];
|
|
338
|
+
readonly architectureProbe: ({ architectures }: ModelConfigMatchContext) => boolean;
|
|
339
|
+
};
|
|
340
|
+
readonly traits: {
|
|
341
|
+
readonly reasoning: true;
|
|
342
|
+
readonly fallbackContextWindow: 1048576;
|
|
343
|
+
};
|
|
344
|
+
readonly launchPreset: {
|
|
345
|
+
readonly sampling: ChatConfig;
|
|
346
|
+
readonly maxOutputTokens: 32768;
|
|
347
|
+
};
|
|
348
|
+
}, {
|
|
349
|
+
readonly id: 'internvl_chat';
|
|
350
|
+
readonly kind: 'vlm';
|
|
351
|
+
readonly match: {
|
|
352
|
+
readonly rawModelTypes: readonly ["internvl_chat"];
|
|
353
|
+
};
|
|
354
|
+
}, {
|
|
355
|
+
readonly id: 'qianfan-ocr';
|
|
356
|
+
readonly kind: 'vlm';
|
|
357
|
+
readonly match: {
|
|
358
|
+
readonly rawModelTypes: readonly ["qianfan-ocr"];
|
|
359
|
+
};
|
|
360
|
+
}];
|
|
361
|
+
type FamilyDataRow = (typeof MODEL_FAMILY_DATA)[number];
|
|
362
|
+
export type ModelType = FamilyDataRow['id'];
|
|
363
|
+
type ChatFamilyRow = Extract<FamilyDataRow, {
|
|
364
|
+
readonly kind: 'trainable' | 'loadable';
|
|
365
|
+
}>;
|
|
366
|
+
export type ChatFamilyId = ChatFamilyRow['id'];
|
|
367
|
+
export type TrainableFamilyId = Extract<FamilyDataRow, {
|
|
368
|
+
readonly kind: 'trainable';
|
|
369
|
+
}>['id'];
|
|
370
|
+
/**
|
|
371
|
+
* Every chat-capable family (kind trainable | loadable), in registry order —
|
|
372
|
+
* the default set the paged-config override manager forces onto the block-paged
|
|
373
|
+
* path. Derived, so a new chat family can never be forgotten.
|
|
374
|
+
*/
|
|
375
|
+
export declare const CHAT_FAMILY_IDS: readonly ChatFamilyId[];
|
|
376
|
+
/** Detection results that cannot back a chat endpoint (kind embedding | vlm). */
|
|
377
|
+
export declare const NON_GENERATIVE_FAMILY_IDS: ReadonlySet<ModelType>;
|
|
378
|
+
/** Registration data for a canonical family id, or `undefined` for a foreign string. */
|
|
379
|
+
export declare function familyDataFor(modelType: string): ModelFamilyData | undefined;
|
|
380
|
+
/** Canonical family id owning a raw `config.json` model_type alias. */
|
|
381
|
+
export declare function rawModelTypeToCanonical(rawModelType: string): ModelType | undefined;
|
|
382
|
+
/** Agent discovery traits for a chat-capable family. */
|
|
383
|
+
export declare function familyTraitsFor(modelType: string): FamilyTraits | undefined;
|
|
384
|
+
/**
|
|
385
|
+
* Launch preset for every surface that serves a chat family:
|
|
386
|
+
* `@mlx-node/server` discovery, `mlx launch claude` and `mlx agent`.
|
|
387
|
+
* `undefined` only for a non-generative family or an unknown type.
|
|
388
|
+
*/
|
|
389
|
+
export declare function launchPresetFor(modelType: string): LaunchPreset | undefined;
|
|
390
|
+
export declare class MalformedModelConfigError extends Error {
|
|
391
|
+
constructor(modelPath: string, reason: string);
|
|
392
|
+
}
|
|
393
|
+
export declare class UnsupportedModelTypeError extends Error {
|
|
394
|
+
constructor(modelPath: string, rawModelTypeLabel: string);
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Pure family detection over a parsed `config.json`: alias (or the qwen3
|
|
398
|
+
* nullish default) picks a base family, then architecture probes refine it in
|
|
399
|
+
* registry declaration order. Throws {@link MalformedModelConfigError} /
|
|
400
|
+
* {@link UnsupportedModelTypeError} with `modelPath` naming the checkpoint.
|
|
401
|
+
* The filesystem/GGUF half lives in `detectModelType`
|
|
402
|
+
* (`models/model-loader.ts`); native-free consumers (dashboard labels via
|
|
403
|
+
* `@mlx-node/agent/catalog`) call this directly.
|
|
404
|
+
*/
|
|
405
|
+
export declare function matchFamily(modelPath: string, parsedConfig: unknown): ModelType;
|
|
406
|
+
export {};
|
|
407
|
+
//# sourceMappingURL=family-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"family-data.d.ts","sourceRoot":"","sources":["../src/family-data.ts"],"names":[],"mappings":"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"}
|