@mlx-node/lm 0.0.13 → 0.0.15
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 +1 -1
- package/dist/chat-session.d.ts.map +1 -1
- package/dist/chat-session.js +2 -2
- package/dist/draft-companion.d.ts +16 -0
- package/dist/draft-companion.d.ts.map +1 -0
- package/dist/draft-companion.js +76 -0
- package/dist/family-data.d.ts +2 -0
- package/dist/family-data.d.ts.map +1 -1
- package/dist/family-data.js +2 -0
- package/dist/gguf-metadata.d.ts +2 -0
- package/dist/gguf-metadata.d.ts.map +1 -0
- package/dist/gguf-metadata.js +128 -0
- package/dist/model-detection.d.ts +6 -0
- package/dist/model-detection.d.ts.map +1 -0
- package/dist/model-detection.js +38 -0
- package/dist/model-discovery.d.ts +24 -0
- package/dist/model-discovery.d.ts.map +1 -0
- package/dist/model-discovery.js +274 -0
- package/dist/models/model-loader.d.ts +6 -0
- package/dist/models/model-loader.d.ts.map +1 -1
- package/dist/models/model-loader.js +10 -32
- package/dist/models/paged-config-override.d.ts.map +1 -1
- package/dist/models/paged-config-override.js +21 -1
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +5 -5
- package/package.json +21 -3
- package/src/chat-session.ts +2369 -0
- package/src/draft-companion.ts +74 -0
- package/src/family-data.ts +542 -0
- package/src/gguf-metadata.ts +117 -0
- package/src/index.ts +151 -0
- package/src/model-detection.ts +46 -0
- package/src/model-discovery.ts +329 -0
- package/src/models/lfm2-configs.ts +110 -0
- package/src/models/model-loader.ts +256 -0
- package/src/models/paged-config-override.ts +387 -0
- package/src/models/qwen3-configs.ts +113 -0
- package/src/models/qwen3_5-configs.ts +60 -0
- package/src/profiling.ts +69 -0
- package/src/stream.ts +960 -0
- package/src/tools/index.ts +58 -0
- package/src/tools/types.ts +215 -0
package/dist/chat-session.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export interface SessionCapableModel {
|
|
|
38
38
|
* wrappers that can count prompt tokens without running inference
|
|
39
39
|
* (used by Anthropic `/v1/messages/count_tokens`).
|
|
40
40
|
*/
|
|
41
|
-
applyChatTemplate?(messages: ChatMessage[], addGenerationPrompt?: boolean | null, tools?: ToolDefinition[] | null, enableThinking?: boolean | null): Promise<Uint32Array> | Uint32Array;
|
|
41
|
+
applyChatTemplate?(messages: ChatMessage[], addGenerationPrompt?: boolean | null, tools?: ToolDefinition[] | null, enableThinking?: boolean | null, reasoningEffort?: string | null): Promise<Uint32Array> | Uint32Array;
|
|
42
42
|
/**
|
|
43
43
|
* Optional model-native planner for prompt formats whose media placeholders
|
|
44
44
|
* expand after chat-template rendering. It returns the exact token length
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../src/chat-session.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../src/chat-session.ts"],"names":[],"mappings":"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"}
|
package/dist/chat-session.js
CHANGED
|
@@ -1433,8 +1433,8 @@ export class ChatSession {
|
|
|
1433
1433
|
return config;
|
|
1434
1434
|
}
|
|
1435
1435
|
const effort = config.reasoningEffort;
|
|
1436
|
-
const enableThinking = effort ===
|
|
1437
|
-
const tokens = await this.model.applyChatTemplate(messages, true, config.tools ?? null, enableThinking);
|
|
1436
|
+
const enableThinking = effort === undefined ? null : effort !== 'none';
|
|
1437
|
+
const tokens = await this.model.applyChatTemplate(messages, true, config.tools ?? null, enableThinking, effort ?? null);
|
|
1438
1438
|
const hasImages = messages.some((message) => (message.images?.length ?? 0) > 0);
|
|
1439
1439
|
let promptTokens = tokens.length;
|
|
1440
1440
|
if (hasImages && typeof this.model.expandedPromptTokenCount === 'function') {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const QWEN38_DFLASH2: {
|
|
2
|
+
readonly label: 'DFlash2';
|
|
3
|
+
readonly hfRepo: 'z-lab/Qwen3.8-27B-DFlash2';
|
|
4
|
+
readonly sizeGb: 3.85;
|
|
5
|
+
};
|
|
6
|
+
/** Draft-only directories must never appear in a chat-model picker. */
|
|
7
|
+
export declare function isDFlash2DraftDirectory(path: string): boolean;
|
|
8
|
+
/** Cheap completeness check; the native loader validates tensor shapes and target compatibility. */
|
|
9
|
+
export declare function isDFlash2Companion(path: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Prefer a target's explicit `draft/`, then the shared Qwen3.8-27B companion in
|
|
12
|
+
* its models directory. Shared pairing requires the Qwen3.8-27B target name;
|
|
13
|
+
* Qwen3.5, MoE models and unrelated renamed checkpoints must not acquire it.
|
|
14
|
+
*/
|
|
15
|
+
export declare function findDFlash2Draft(modelPath: string, modelType: string, modelsDir?: string): string | undefined;
|
|
16
|
+
//# sourceMappingURL=draft-companion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draft-companion.d.ts","sourceRoot":"","sources":["../src/draft-companion.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc;aACzB,KAAK,EAAE,SAAS;aAChB,MAAM,EAAE,2BAA2B;aACnC,MAAM,EAAE,IAAI;CACJ,CAAC;AAWX,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAS7D;AAED,oGAAoG;AACpG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgC7G"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/** Native-free metadata and discovery for optional speculative draft checkpoints. */
|
|
2
|
+
import { readdirSync, readFileSync, statSync } from 'node:fs';
|
|
3
|
+
import { basename, dirname, join } from 'node:path';
|
|
4
|
+
export const QWEN38_DFLASH2 = {
|
|
5
|
+
label: 'DFlash2',
|
|
6
|
+
hfRepo: 'z-lab/Qwen3.8-27B-DFlash2',
|
|
7
|
+
sizeGb: 3.85,
|
|
8
|
+
};
|
|
9
|
+
function regularFile(path) {
|
|
10
|
+
try {
|
|
11
|
+
const stat = statSync(path);
|
|
12
|
+
return stat.isFile() && stat.size > 0;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** Draft-only directories must never appear in a chat-model picker. */
|
|
19
|
+
export function isDFlash2DraftDirectory(path) {
|
|
20
|
+
const configPath = join(path, 'config.json');
|
|
21
|
+
if (!regularFile(configPath))
|
|
22
|
+
return false;
|
|
23
|
+
try {
|
|
24
|
+
const config = JSON.parse(readFileSync(configPath, 'utf8'));
|
|
25
|
+
return Array.isArray(config?.architectures) && config.architectures.includes('DFlash2DraftModel');
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** Cheap completeness check; the native loader validates tensor shapes and target compatibility. */
|
|
32
|
+
export function isDFlash2Companion(path) {
|
|
33
|
+
return isDFlash2DraftDirectory(path) && regularFile(join(path, 'model.safetensors'));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Prefer a target's explicit `draft/`, then the shared Qwen3.8-27B companion in
|
|
37
|
+
* its models directory. Shared pairing requires the Qwen3.8-27B target name;
|
|
38
|
+
* Qwen3.5, MoE models and unrelated renamed checkpoints must not acquire it.
|
|
39
|
+
*/
|
|
40
|
+
export function findDFlash2Draft(modelPath, modelType, modelsDir) {
|
|
41
|
+
if (modelType !== 'qwen3_5')
|
|
42
|
+
return undefined;
|
|
43
|
+
const isGguf = modelPath.toLowerCase().endsWith('.gguf');
|
|
44
|
+
const modelDir = isGguf ? dirname(modelPath) : modelPath;
|
|
45
|
+
const embedded = join(modelDir, 'draft');
|
|
46
|
+
if (isDFlash2Companion(embedded))
|
|
47
|
+
return embedded;
|
|
48
|
+
const targetName = /(?:^|[-_.])qwen3[._-]8[-_.]27b(?:[-_.]|$)/i;
|
|
49
|
+
if (!targetName.test(basename(modelPath)) && !(isGguf && targetName.test(basename(modelDir))))
|
|
50
|
+
return undefined;
|
|
51
|
+
const slug = QWEN38_DFLASH2.hfRepo.split('/')[1].toLowerCase();
|
|
52
|
+
const roots = modelsDir === undefined ? [isGguf ? modelDir : dirname(modelDir)] : [modelsDir];
|
|
53
|
+
// A sibling config identifies a downloaded model repository. Its parent
|
|
54
|
+
// can hold the shared companion; a standalone GGUF's containing directory
|
|
55
|
+
// is already the model store, so do not search above it. An explicit store
|
|
56
|
+
// always takes precedence over this repository inference.
|
|
57
|
+
if (modelsDir === undefined && isGguf && regularFile(join(modelDir, 'config.json'))) {
|
|
58
|
+
roots.push(dirname(modelDir));
|
|
59
|
+
}
|
|
60
|
+
for (const root of roots) {
|
|
61
|
+
try {
|
|
62
|
+
const candidates = readdirSync(root, { withFileTypes: true })
|
|
63
|
+
.filter((entry) => entry.isDirectory() && entry.name.toLowerCase() === slug)
|
|
64
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
65
|
+
for (const candidate of candidates) {
|
|
66
|
+
const path = join(root, candidate.name);
|
|
67
|
+
if (isDFlash2Companion(path))
|
|
68
|
+
return path;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// An absent/unreadable companion leaves ordinary target loading available.
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
package/dist/family-data.d.ts
CHANGED
|
@@ -184,6 +184,7 @@ export type ModelFamilyData = ChatFamilyData | NonGenerativeFamilyData;
|
|
|
184
184
|
export declare const MODEL_FAMILY_DATA: readonly [{
|
|
185
185
|
readonly id: 'gemma4';
|
|
186
186
|
readonly kind: 'loadable';
|
|
187
|
+
readonly ggufArchitectures: readonly ["gemma4"];
|
|
187
188
|
readonly match: {
|
|
188
189
|
readonly rawModelTypes: readonly ["gemma4", "gemma4_text", "gemma4_unified"];
|
|
189
190
|
readonly architectureProbe: ({ architectures }: ModelConfigMatchContext) => boolean;
|
|
@@ -206,6 +207,7 @@ export declare const MODEL_FAMILY_DATA: readonly [{
|
|
|
206
207
|
}, {
|
|
207
208
|
readonly id: 'muse_glimmer';
|
|
208
209
|
readonly kind: 'loadable';
|
|
210
|
+
readonly ggufArchitectures: readonly ["muse-glimmer"];
|
|
209
211
|
readonly match: {
|
|
210
212
|
readonly rawModelTypes: readonly ["muse_glimmer", "muse_glimmer_text"];
|
|
211
213
|
readonly architectureProbe: ({ architectures }: ModelConfigMatchContext) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"family-data.d.ts","sourceRoot":"","sources":["../src/family-data.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"family-data.d.ts","sourceRoot":"","sources":["../src/family-data.ts"],"names":[],"mappings":"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"}
|
package/dist/family-data.js
CHANGED
|
@@ -117,6 +117,7 @@ export const MODEL_FAMILY_DATA = [
|
|
|
117
117
|
{
|
|
118
118
|
id: 'gemma4',
|
|
119
119
|
kind: 'loadable',
|
|
120
|
+
ggufArchitectures: ['gemma4'],
|
|
120
121
|
match: {
|
|
121
122
|
rawModelTypes: ['gemma4', 'gemma4_text', 'gemma4_unified'],
|
|
122
123
|
architectureProbe: ({ architectures }) => architectures.has('Gemma4UnifiedForConditionalGeneration'),
|
|
@@ -140,6 +141,7 @@ export const MODEL_FAMILY_DATA = [
|
|
|
140
141
|
{
|
|
141
142
|
id: 'muse_glimmer',
|
|
142
143
|
kind: 'loadable',
|
|
144
|
+
ggufArchitectures: ['muse-glimmer'],
|
|
143
145
|
match: {
|
|
144
146
|
rawModelTypes: ['muse_glimmer', 'muse_glimmer_text'],
|
|
145
147
|
architectureProbe: ({ architectures }) => architectures.has('MuseGlimmerForConditionalGeneration'),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gguf-metadata.d.ts","sourceRoot":"","sources":["../src/gguf-metadata.ts"],"names":[],"mappings":"AAwFA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4BzD"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/** Read GGUF metadata without linking the native addon or loading tensor weights. */
|
|
2
|
+
import { closeSync, constants, fstatSync, openSync, readSync } from 'node:fs';
|
|
3
|
+
const MAX_GGUF_LENGTH = 256 * 1024 * 1024;
|
|
4
|
+
const SCALAR_BYTES = new Map([
|
|
5
|
+
[0, 1],
|
|
6
|
+
[1, 1],
|
|
7
|
+
[2, 2],
|
|
8
|
+
[3, 2],
|
|
9
|
+
[4, 4],
|
|
10
|
+
[5, 4],
|
|
11
|
+
[6, 4],
|
|
12
|
+
[7, 1],
|
|
13
|
+
[10, 8],
|
|
14
|
+
[11, 8],
|
|
15
|
+
[12, 8],
|
|
16
|
+
]);
|
|
17
|
+
/** Buffered header cursor; skipping an array never allocates its payload. */
|
|
18
|
+
class HeaderReader {
|
|
19
|
+
fd;
|
|
20
|
+
size;
|
|
21
|
+
buffer = Buffer.alloc(64 * 1024);
|
|
22
|
+
start = 0;
|
|
23
|
+
end = 0;
|
|
24
|
+
position = 0;
|
|
25
|
+
constructor(fd, size) {
|
|
26
|
+
this.fd = fd;
|
|
27
|
+
this.size = size;
|
|
28
|
+
}
|
|
29
|
+
skip(length) {
|
|
30
|
+
if (!Number.isSafeInteger(length) || length < 0 || length > this.size - this.position) {
|
|
31
|
+
throw new Error('Truncated or oversized GGUF metadata');
|
|
32
|
+
}
|
|
33
|
+
this.position += length;
|
|
34
|
+
}
|
|
35
|
+
bytes(length) {
|
|
36
|
+
const position = this.position;
|
|
37
|
+
this.skip(length);
|
|
38
|
+
if (length > MAX_GGUF_LENGTH)
|
|
39
|
+
throw new Error('GGUF string exceeds maximum length');
|
|
40
|
+
const result = Buffer.alloc(length);
|
|
41
|
+
let offset = 0;
|
|
42
|
+
while (offset < length) {
|
|
43
|
+
const current = position + offset;
|
|
44
|
+
if (current < this.start || current >= this.end) {
|
|
45
|
+
this.start = current;
|
|
46
|
+
this.end = current + readSync(this.fd, this.buffer, 0, this.buffer.length, current);
|
|
47
|
+
if (this.end === current)
|
|
48
|
+
throw new Error('Truncated GGUF metadata');
|
|
49
|
+
}
|
|
50
|
+
const count = Math.min(length - offset, this.end - current);
|
|
51
|
+
this.buffer.copy(result, offset, current - this.start, current - this.start + count);
|
|
52
|
+
offset += count;
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
u32() {
|
|
57
|
+
return this.bytes(4).readUInt32LE();
|
|
58
|
+
}
|
|
59
|
+
u64() {
|
|
60
|
+
const value = this.bytes(8).readBigUInt64LE();
|
|
61
|
+
if (value > BigInt(Number.MAX_SAFE_INTEGER))
|
|
62
|
+
throw new Error('Oversized GGUF metadata length');
|
|
63
|
+
return Number(value);
|
|
64
|
+
}
|
|
65
|
+
length() {
|
|
66
|
+
const length = this.u64();
|
|
67
|
+
if (length > MAX_GGUF_LENGTH)
|
|
68
|
+
throw new Error('GGUF metadata exceeds maximum length');
|
|
69
|
+
return length;
|
|
70
|
+
}
|
|
71
|
+
string() {
|
|
72
|
+
return new TextDecoder('utf-8', { fatal: true }).decode(this.bytes(this.length()));
|
|
73
|
+
}
|
|
74
|
+
skipValue(type, depth = 0) {
|
|
75
|
+
const size = SCALAR_BYTES.get(type);
|
|
76
|
+
if (size !== undefined)
|
|
77
|
+
return this.skip(size);
|
|
78
|
+
if (type === 8)
|
|
79
|
+
return this.skip(this.length());
|
|
80
|
+
if (type !== 9 || depth > 16)
|
|
81
|
+
throw new Error('Unsupported GGUF metadata type');
|
|
82
|
+
const element = this.u32();
|
|
83
|
+
const count = this.length();
|
|
84
|
+
const elementSize = SCALAR_BYTES.get(element);
|
|
85
|
+
if (elementSize !== undefined)
|
|
86
|
+
return this.skip(count * elementSize);
|
|
87
|
+
if (element !== 8 && element !== 9)
|
|
88
|
+
throw new Error('Unsupported GGUF array element type');
|
|
89
|
+
for (let index = 0; index < count; index++)
|
|
90
|
+
this.skipValue(element, depth + 1);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export function readGgufArchitecture(path) {
|
|
94
|
+
// O_NONBLOCK plus the descriptor type check prevents a renamed FIFO from
|
|
95
|
+
// hanging model discovery in the control-panel worker.
|
|
96
|
+
const fd = openSync(path, constants.O_RDONLY | constants.O_NONBLOCK);
|
|
97
|
+
try {
|
|
98
|
+
const info = fstatSync(fd);
|
|
99
|
+
if (!info.isFile())
|
|
100
|
+
throw new Error('GGUF path must be a regular file');
|
|
101
|
+
const reader = new HeaderReader(fd, info.size);
|
|
102
|
+
if (reader.bytes(4).toString() !== 'GGUF')
|
|
103
|
+
throw new Error('Not a GGUF file');
|
|
104
|
+
if (reader.u32() < 3)
|
|
105
|
+
throw new Error('Unsupported GGUF version (only v3+ supported)');
|
|
106
|
+
reader.u64(); // Tensor count: discovery only needs the metadata section.
|
|
107
|
+
const count = reader.u64();
|
|
108
|
+
let architecture;
|
|
109
|
+
for (let index = 0; index < count; index++) {
|
|
110
|
+
const key = reader.string();
|
|
111
|
+
const type = reader.u32();
|
|
112
|
+
if (key === 'general.architecture') {
|
|
113
|
+
architecture = type === 8 ? reader.string() : undefined;
|
|
114
|
+
if (type !== 8)
|
|
115
|
+
reader.skipValue(type);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
reader.skipValue(type);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (!architecture)
|
|
122
|
+
throw new Error('GGUF does not declare a non-empty general.architecture');
|
|
123
|
+
return architecture;
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
closeSync(fd);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ModelType } from './family-data.js';
|
|
2
|
+
export { readGgufArchitecture } from './gguf-metadata.js';
|
|
3
|
+
export declare function readModelConfig(modelDir: string): Promise<unknown>;
|
|
4
|
+
/** The loader can supply its native header validator without changing family selection. */
|
|
5
|
+
export declare function detectModelType(modelPath: string, readArchitecture?: (path: string) => string): Promise<ModelType>;
|
|
6
|
+
//# sourceMappingURL=model-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-detection.d.ts","sourceRoot":"","sources":["../src/model-detection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQ1D,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQxE;AAED,2FAA2F;AAC3F,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,gBAAgB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAA6B,GAChE,OAAO,CAAC,SAAS,CAAC,CAepB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** Shared filesystem-only model detection for inference and control-panel discovery. */
|
|
2
|
+
import { constants } from 'node:fs';
|
|
3
|
+
import { open } from 'node:fs/promises';
|
|
4
|
+
import { dirname, extname, join } from 'node:path';
|
|
5
|
+
import { MODEL_FAMILY_DATA, matchFamily } from './family-data.js';
|
|
6
|
+
import { readGgufArchitecture } from './gguf-metadata.js';
|
|
7
|
+
export { readGgufArchitecture } from './gguf-metadata.js';
|
|
8
|
+
const GGUF_ARCHITECTURE_MODEL_TYPES = new Map(MODEL_FAMILY_DATA.flatMap((row) => 'ggufArchitectures' in row ? row.ggufArchitectures.map((architecture) => [architecture, row.id]) : []));
|
|
9
|
+
export async function readModelConfig(modelDir) {
|
|
10
|
+
const file = await open(join(modelDir, 'config.json'), constants.O_RDONLY | constants.O_NONBLOCK);
|
|
11
|
+
try {
|
|
12
|
+
if (!(await file.stat()).isFile())
|
|
13
|
+
throw new Error('Model config must be a regular file');
|
|
14
|
+
return JSON.parse(await file.readFile('utf8'));
|
|
15
|
+
}
|
|
16
|
+
finally {
|
|
17
|
+
await file.close();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** The loader can supply its native header validator without changing family selection. */
|
|
21
|
+
export async function detectModelType(modelPath, readArchitecture = readGgufArchitecture) {
|
|
22
|
+
const isGguf = extname(modelPath).toLowerCase() === '.gguf';
|
|
23
|
+
let config;
|
|
24
|
+
try {
|
|
25
|
+
config = await readModelConfig(isGguf ? dirname(modelPath) : modelPath);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (isGguf && error.code === 'ENOENT') {
|
|
29
|
+
const architecture = readArchitecture(modelPath);
|
|
30
|
+
const type = GGUF_ARCHITECTURE_MODEL_TYPES.get(architecture);
|
|
31
|
+
if (type === undefined)
|
|
32
|
+
throw new Error(`Unsupported GGUF architecture "${architecture}" in ${modelPath}`);
|
|
33
|
+
return type;
|
|
34
|
+
}
|
|
35
|
+
throw new Error(`Cannot detect model type: config.json not found in ${modelPath}`);
|
|
36
|
+
}
|
|
37
|
+
return matchFamily(modelPath, config);
|
|
38
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** Shared, native-free discovery of local chat checkpoints. */
|
|
2
|
+
import { type FamilyTraits, type LaunchPreset, type ModelType } from './family-data.js';
|
|
3
|
+
/** Native-free inventory shared by the agent, setup UI, and inference host. */
|
|
4
|
+
export interface LocalChatModel {
|
|
5
|
+
name: string;
|
|
6
|
+
path: string;
|
|
7
|
+
modelType: ModelType;
|
|
8
|
+
preset: LaunchPreset;
|
|
9
|
+
traits: FamilyTraits;
|
|
10
|
+
contextWindow: number;
|
|
11
|
+
supportsImages: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Scan `modelsDir` for chat-capable model subdirectories, Gemma4/Muse GGUFs, and
|
|
15
|
+
* dense Qwen3.5/Qwen3.8 `Q<number>_K_XL.gguf` files. GGUF files may live directly
|
|
16
|
+
* under `modelsDir` or one level inside a downloaded GGUF repository. Each is
|
|
17
|
+
* registered by filename stem so quant variants remain independently selectable.
|
|
18
|
+
*
|
|
19
|
+
* An unreadable dir yields `[]`. Entries with an undetectable config, a
|
|
20
|
+
* non-generative type, or no launch preset are skipped silently (warnings only
|
|
21
|
+
* when `MLX_DEBUG` is set). No weights are loaded. Results are sorted by name.
|
|
22
|
+
*/
|
|
23
|
+
export declare function discoverLocalChatModels(modelsDir: string): Promise<LocalChatModel[]>;
|
|
24
|
+
//# sourceMappingURL=model-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-discovery.d.ts","sourceRoot":"","sources":["../src/model-discovery.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAM/D,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAG1B,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;CACzB;AAsID;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA8J1F"}
|