@mlx-node/lm 0.0.12 → 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.
Files changed (42) hide show
  1. package/dist/chat-session.d.ts +1 -1
  2. package/dist/chat-session.d.ts.map +1 -1
  3. package/dist/chat-session.js +2 -2
  4. package/dist/draft-companion.d.ts +16 -0
  5. package/dist/draft-companion.d.ts.map +1 -0
  6. package/dist/draft-companion.js +76 -0
  7. package/dist/family-data.d.ts +2 -0
  8. package/dist/family-data.d.ts.map +1 -1
  9. package/dist/family-data.js +2 -0
  10. package/dist/gguf-metadata.d.ts +2 -0
  11. package/dist/gguf-metadata.d.ts.map +1 -0
  12. package/dist/gguf-metadata.js +128 -0
  13. package/dist/model-detection.d.ts +6 -0
  14. package/dist/model-detection.d.ts.map +1 -0
  15. package/dist/model-detection.js +38 -0
  16. package/dist/model-discovery.d.ts +24 -0
  17. package/dist/model-discovery.d.ts.map +1 -0
  18. package/dist/model-discovery.js +274 -0
  19. package/dist/models/model-loader.d.ts +6 -0
  20. package/dist/models/model-loader.d.ts.map +1 -1
  21. package/dist/models/model-loader.js +10 -32
  22. package/dist/models/paged-config-override.d.ts.map +1 -1
  23. package/dist/models/paged-config-override.js +21 -1
  24. package/dist/stream.d.ts.map +1 -1
  25. package/dist/stream.js +5 -5
  26. package/package.json +21 -3
  27. package/src/chat-session.ts +2369 -0
  28. package/src/draft-companion.ts +74 -0
  29. package/src/family-data.ts +542 -0
  30. package/src/gguf-metadata.ts +117 -0
  31. package/src/index.ts +151 -0
  32. package/src/model-detection.ts +46 -0
  33. package/src/model-discovery.ts +329 -0
  34. package/src/models/lfm2-configs.ts +110 -0
  35. package/src/models/model-loader.ts +256 -0
  36. package/src/models/paged-config-override.ts +387 -0
  37. package/src/models/qwen3-configs.ts +113 -0
  38. package/src/models/qwen3_5-configs.ts +60 -0
  39. package/src/profiling.ts +69 -0
  40. package/src/stream.ts +960 -0
  41. package/src/tools/index.ts +58 -0
  42. package/src/tools/types.ts +215 -0
@@ -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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"}
@@ -1433,8 +1433,8 @@ export class ChatSession {
1433
1433
  return config;
1434
1434
  }
1435
1435
  const effort = config.reasoningEffort;
1436
- const enableThinking = effort === 'none' || effort === 'low' ? false : effort === 'medium' || effort === 'high' ? true : null;
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
+ }
@@ -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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"}
@@ -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,2 @@
1
+ export declare function readGgufArchitecture(path: string): string;
2
+ //# sourceMappingURL=gguf-metadata.d.ts.map
@@ -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"}