smallm 0.5.0 → 0.6.0
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/README.md +12 -6
- package/dist/cache-file.d.ts +38 -4
- package/dist/cache-file.d.ts.map +1 -1
- package/dist/cache-file.js +314 -25
- package/dist/cache-file.js.map +1 -1
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +37 -8
- package/dist/cli.js.map +1 -1
- package/dist/http.d.ts +19 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +57 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/params.d.ts +6 -1
- package/dist/params.d.ts.map +1 -1
- package/dist/params.js +15 -2
- package/dist/params.js.map +1 -1
- package/dist/query.d.ts +9 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +73 -7
- package/dist/query.js.map +1 -1
- package/dist/registry/huggingface.d.ts +2 -0
- package/dist/registry/huggingface.d.ts.map +1 -1
- package/dist/registry/huggingface.js +81 -11
- package/dist/registry/huggingface.js.map +1 -1
- package/dist/registry/ollama.d.ts +2 -0
- package/dist/registry/ollama.d.ts.map +1 -1
- package/dist/registry/ollama.js +42 -12
- package/dist/registry/ollama.js.map +1 -1
- package/dist/scorer.d.ts.map +1 -1
- package/dist/scorer.js +2 -1
- package/dist/scorer.js.map +1 -1
- package/dist/types.d.ts +10 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/validate.d.ts +22 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +114 -0
- package/dist/validate.js.map +1 -0
- package/package.json +15 -3
package/dist/cli.js
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.USAGE = exports.CliUsageError = void 0;
|
|
5
5
|
exports.parseArgs = parseArgs;
|
|
6
|
+
exports.stripControlChars = stripControlChars;
|
|
6
7
|
exports.formatTable = formatTable;
|
|
7
8
|
exports.main = main;
|
|
8
9
|
const index_1 = require("./index");
|
|
10
|
+
const validate_1 = require("./validate");
|
|
9
11
|
/**
|
|
10
12
|
* Thin CLI wrapper around findModels(). Per the v0.5 guide's Do's/Don'ts:
|
|
11
13
|
* this file must contain NO scoring, filtering, or provider logic — only
|
|
@@ -60,9 +62,12 @@ function parseArgs(argv) {
|
|
|
60
62
|
let hardwareString;
|
|
61
63
|
let cacheDir;
|
|
62
64
|
let cacheTtl;
|
|
65
|
+
const warnings = [];
|
|
63
66
|
const takeValue = (flag, i) => {
|
|
64
67
|
const value = argv[i + 1];
|
|
65
|
-
|
|
68
|
+
// A following "--flag" is the next option, not this flag's value
|
|
69
|
+
// (otherwise `--task --json` would search for the task "--json").
|
|
70
|
+
if (value === undefined || value.startsWith("--")) {
|
|
66
71
|
throw new CliUsageError(`Flag ${flag} requires a value`);
|
|
67
72
|
}
|
|
68
73
|
return [value, i + 1];
|
|
@@ -162,6 +167,15 @@ function parseArgs(argv) {
|
|
|
162
167
|
// Structured hardware form takes precedence if given; otherwise fall back
|
|
163
168
|
// to the string-enum form. Both map onto the exact same ModelQuery.hardware
|
|
164
169
|
// field the library already accepts — no new capability invented here.
|
|
170
|
+
if (hardwareVram !== undefined && hardwareType === undefined) {
|
|
171
|
+
// Previously dropped silently, so the VRAM filter just never ran.
|
|
172
|
+
throw new CliUsageError("--hardware-vram requires --hardware-type (e.g. --hardware-type gpu --hardware-vram 8)");
|
|
173
|
+
}
|
|
174
|
+
if (hardwareType !== undefined && hardwareString !== undefined) {
|
|
175
|
+
// Documented precedence is kept; just make the override visible.
|
|
176
|
+
warnings.push(`--hardware ${hardwareString} is ignored because --hardware-type is set` +
|
|
177
|
+
(query.maxLatencyMs !== undefined ? "; --max-latency is only enforced with --hardware, so it has no effect" : ""));
|
|
178
|
+
}
|
|
165
179
|
if (hardwareType !== undefined) {
|
|
166
180
|
query.hardware = {
|
|
167
181
|
type: hardwareType,
|
|
@@ -177,10 +191,17 @@ function parseArgs(argv) {
|
|
|
177
191
|
...(cacheTtl !== undefined ? { ttlMs: cacheTtl } : {}),
|
|
178
192
|
};
|
|
179
193
|
}
|
|
180
|
-
return { query: query, json, showHelp };
|
|
194
|
+
return { query: query, json, showHelp, warnings };
|
|
195
|
+
}
|
|
196
|
+
/** Same character set the validators reject: controls, zero-width, bidi overrides/isolates, separators, BOM. */
|
|
197
|
+
const CONTROL_CHARS = new RegExp(validate_1.UNSAFE_DISPLAY_CHARS.source, "g");
|
|
198
|
+
/** Removes control/invisible characters so text can't inject terminal escapes or visually disguise itself. */
|
|
199
|
+
function stripControlChars(str) {
|
|
200
|
+
return str.replace(CONTROL_CHARS, "");
|
|
181
201
|
}
|
|
182
202
|
function truncate(str, max) {
|
|
183
|
-
|
|
203
|
+
const clean = stripControlChars(str);
|
|
204
|
+
return clean.length > max ? clean.slice(0, max - 1) + "…" : clean;
|
|
184
205
|
}
|
|
185
206
|
/** Pure formatter: ModelMatch[] -> a human-readable table string. */
|
|
186
207
|
function formatTable(results) {
|
|
@@ -189,7 +210,7 @@ function formatTable(results) {
|
|
|
189
210
|
}
|
|
190
211
|
const columns = [
|
|
191
212
|
{ header: "NAME", width: 42, get: (m) => truncate(m.name, 42) },
|
|
192
|
-
{ header: "PROVIDER", width: 12, get: (m) => m.provider },
|
|
213
|
+
{ header: "PROVIDER", width: 12, get: (m) => truncate(m.provider, 12) },
|
|
193
214
|
{ header: "PARAMS(B)", width: 10, get: (m) => (m.paramsB == null ? "?" : String(m.paramsB)) },
|
|
194
215
|
{ header: "SCORE", width: 6, get: (m) => String(m.score) },
|
|
195
216
|
{ header: "MODE", width: 10, get: (m) => m.scoringMode ?? "rule" },
|
|
@@ -211,7 +232,7 @@ async function main(argv) {
|
|
|
211
232
|
return argv.length === 0 ? 1 : 0;
|
|
212
233
|
}
|
|
213
234
|
if (argv[0] !== "find") {
|
|
214
|
-
console.error(`Unknown command: "${argv[0]}". Only "find" is supported.\n`);
|
|
235
|
+
console.error(`Unknown command: "${stripControlChars(argv[0])}". Only "find" is supported.\n`);
|
|
215
236
|
console.log(exports.USAGE);
|
|
216
237
|
return 1;
|
|
217
238
|
}
|
|
@@ -221,7 +242,7 @@ async function main(argv) {
|
|
|
221
242
|
}
|
|
222
243
|
catch (err) {
|
|
223
244
|
if (err instanceof CliUsageError) {
|
|
224
|
-
console.error(`Error: ${err.message}\n`);
|
|
245
|
+
console.error(`Error: ${stripControlChars(err.message)}\n`);
|
|
225
246
|
console.log(exports.USAGE);
|
|
226
247
|
return err.exitCode;
|
|
227
248
|
}
|
|
@@ -231,6 +252,9 @@ async function main(argv) {
|
|
|
231
252
|
console.log(exports.USAGE);
|
|
232
253
|
return 0;
|
|
233
254
|
}
|
|
255
|
+
for (const warning of parsed.warnings) {
|
|
256
|
+
console.error(`Warning: ${stripControlChars(warning)}`);
|
|
257
|
+
}
|
|
234
258
|
try {
|
|
235
259
|
// The one line that matters: flags in, library call, nothing invented.
|
|
236
260
|
const results = await (0, index_1.findModels)(parsed.query);
|
|
@@ -239,11 +263,16 @@ async function main(argv) {
|
|
|
239
263
|
}
|
|
240
264
|
catch (err) {
|
|
241
265
|
if (err instanceof index_1.SmallmError) {
|
|
242
|
-
console.error(`Error: ${err.message}`);
|
|
266
|
+
console.error(`Error: ${stripControlChars(err.message)}`);
|
|
243
267
|
}
|
|
244
|
-
else {
|
|
268
|
+
else if (process.env.SMALLM_DEBUG) {
|
|
245
269
|
console.error("Unexpected error:", err);
|
|
246
270
|
}
|
|
271
|
+
else {
|
|
272
|
+
// No stack trace by default — set SMALLM_DEBUG=1 for full details.
|
|
273
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
274
|
+
console.error(`Unexpected error: ${stripControlChars(message)} (set SMALLM_DEBUG=1 for details)`);
|
|
275
|
+
}
|
|
247
276
|
return 1;
|
|
248
277
|
}
|
|
249
278
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Small HTTP helpers shared by the registry providers.
|
|
3
|
+
*
|
|
4
|
+
* readJsonWithLimit: a `content-length` check alone is not a size limit —
|
|
5
|
+
* chunked responses omit the header and compressed responses report the
|
|
6
|
+
* compressed size. This reads the (already-decompressed) body stream and
|
|
7
|
+
* aborts as soon as it exceeds the cap, so a hostile or broken server can't
|
|
8
|
+
* exhaust memory before JSON.parse ever runs.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ResponseTooLargeError extends Error {
|
|
11
|
+
readonly limitBytes: number;
|
|
12
|
+
constructor(limitBytes: number);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Parses a JSON body, reading at most `maxBytes` (after decompression).
|
|
16
|
+
* Throws ResponseTooLargeError past the cap, or SyntaxError for invalid JSON.
|
|
17
|
+
*/
|
|
18
|
+
export declare function readJsonWithLimit(response: Response, maxBytes: number): Promise<unknown>;
|
|
19
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,qBAAa,qBAAsB,SAAQ,KAAK;aAClB,UAAU,EAAE,MAAM;IAA9C,YAA4B,UAAU,EAAE,MAAM,EAI7C;CACF;AAOD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8B9F"}
|
package/dist/http.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Small HTTP helpers shared by the registry providers.
|
|
4
|
+
*
|
|
5
|
+
* readJsonWithLimit: a `content-length` check alone is not a size limit —
|
|
6
|
+
* chunked responses omit the header and compressed responses report the
|
|
7
|
+
* compressed size. This reads the (already-decompressed) body stream and
|
|
8
|
+
* aborts as soon as it exceeds the cap, so a hostile or broken server can't
|
|
9
|
+
* exhaust memory before JSON.parse ever runs.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ResponseTooLargeError = void 0;
|
|
13
|
+
exports.readJsonWithLimit = readJsonWithLimit;
|
|
14
|
+
class ResponseTooLargeError extends Error {
|
|
15
|
+
constructor(limitBytes) {
|
|
16
|
+
super(`response body exceeded ${limitBytes} bytes`);
|
|
17
|
+
this.limitBytes = limitBytes;
|
|
18
|
+
this.name = "ResponseTooLargeError";
|
|
19
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.ResponseTooLargeError = ResponseTooLargeError;
|
|
23
|
+
/**
|
|
24
|
+
* Parses a JSON body, reading at most `maxBytes` (after decompression).
|
|
25
|
+
* Throws ResponseTooLargeError past the cap, or SyntaxError for invalid JSON.
|
|
26
|
+
*/
|
|
27
|
+
async function readJsonWithLimit(response, maxBytes) {
|
|
28
|
+
const declared = Number(response.headers?.get?.("content-length"));
|
|
29
|
+
if (Number.isFinite(declared) && declared > maxBytes) {
|
|
30
|
+
throw new ResponseTooLargeError(maxBytes);
|
|
31
|
+
}
|
|
32
|
+
const body = response.body;
|
|
33
|
+
if (!body || typeof body.getReader !== "function") {
|
|
34
|
+
// No stream available (e.g. a minimal test double). Real fetch Responses
|
|
35
|
+
// always take the streaming path below.
|
|
36
|
+
return response.json();
|
|
37
|
+
}
|
|
38
|
+
const reader = body.getReader();
|
|
39
|
+
const chunks = [];
|
|
40
|
+
let total = 0;
|
|
41
|
+
for (;;) {
|
|
42
|
+
const { done, value } = await reader.read();
|
|
43
|
+
if (done)
|
|
44
|
+
break;
|
|
45
|
+
if (!value)
|
|
46
|
+
continue;
|
|
47
|
+
total += value.byteLength;
|
|
48
|
+
if (total > maxBytes) {
|
|
49
|
+
await reader.cancel().catch(() => { });
|
|
50
|
+
throw new ResponseTooLargeError(maxBytes);
|
|
51
|
+
}
|
|
52
|
+
chunks.push(value);
|
|
53
|
+
}
|
|
54
|
+
const text = new TextDecoder("utf-8").decode(Buffer.concat(chunks.map((c) => Buffer.from(c.buffer, c.byteOffset, c.byteLength))));
|
|
55
|
+
return JSON.parse(text);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;AAEH,2BAAmC,SAAQ,KAAK;IAC9C,YAA4B,UAAkB;QAC5C,KAAK,CAAC,0BAA0B,UAAU,QAAQ,CAAC,CAAC;0BAD1B,UAAU;QAEpC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;;AAOD;;;GAGG;AACI,KAAK,4BAA4B,QAAkB,EAAE,QAAgB;IAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC;QACrD,MAAM,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,GAAI,QAAiE,CAAC,IAAI,CAAC;IACrF,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QAClD,yEAAyE;QACzE,wCAAwC;QACxC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,SAAS,CAAC;QACR,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,MAAM;QAChB,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC;QAC1B,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;YACrB,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACtC,MAAM,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAA0B,MAAM,SAAS,CAAC;AAgBzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAA0B,MAAM,SAAS,CAAC;AAgBzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAoDzE;AAKD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKtD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -64,15 +64,13 @@ const PROVIDERS = {
|
|
|
64
64
|
async function findModels(query) {
|
|
65
65
|
// 1. validate
|
|
66
66
|
const validated = (0, query_1.validateQuery)(query);
|
|
67
|
-
// (v0.2) apply per-call cache options, if provided, before the fetch step.
|
|
68
|
-
if (validated.cacheOptions) {
|
|
69
|
-
(0, cache_file_1.configureCandidateModelsCache)(validated.cacheOptions);
|
|
70
|
-
}
|
|
71
67
|
// 2. fetch — (v0.4) fan out to every requested provider, cached per
|
|
72
68
|
// (provider, task) pair, then merge before anything downstream sees them.
|
|
69
|
+
// Per-call cacheOptions select a cache scoped to this call only; they
|
|
70
|
+
// no longer overwrite the module-level default for later calls.
|
|
73
71
|
const providerLists = await Promise.all(validated.providers.map((providerName) => {
|
|
74
72
|
const provider = PROVIDERS[providerName];
|
|
75
|
-
return (0, cache_file_1.getOrFetchCached)(`${provider.name}:${validated.task}`, () => provider.listCandidates(validated));
|
|
73
|
+
return (0, cache_file_1.getOrFetchCached)(`${provider.name}:${validated.task}`, () => provider.listCandidates(validated), validated.cacheOptions);
|
|
76
74
|
}));
|
|
77
75
|
const rawCandidates = providerLists.flat();
|
|
78
76
|
const enriched = (0, params_1.enrichWithParams)(rawCandidates);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AACA,mCAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/params.d.ts
CHANGED
|
@@ -16,6 +16,11 @@ export interface ParamsExtractionResult {
|
|
|
16
16
|
* per the Unknown-Value Rule.
|
|
17
17
|
*/
|
|
18
18
|
export declare function extractParamsB(model: HFModel): ParamsExtractionResult;
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Applies extraction to a full list, returning enriched copies (does not mutate input).
|
|
21
|
+
* A size the provider already reported (e.g. Ollama's `parameter_size`) is kept:
|
|
22
|
+
* overwriting it from the id would turn "llama3:latest" (70B) into "unknown"
|
|
23
|
+
* and silently exempt it from the maxParamsB / vramGB hard filters.
|
|
24
|
+
*/
|
|
20
25
|
export declare function enrichWithParams(models: HFModel[]): HFModel[];
|
|
21
26
|
//# sourceMappingURL=params.d.ts.map
|
package/dist/params.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAchD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;CAC5B;AASD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAcrE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAQ7D"}
|
package/dist/params.js
CHANGED
|
@@ -7,7 +7,12 @@ exports.enrichWithParams = enrichWithParams;
|
|
|
7
7
|
* Requires a digit immediately before the B/b, and no letter/digit right after,
|
|
8
8
|
* so we don't accidentally match things like "Bert" or "B16".
|
|
9
9
|
*/
|
|
10
|
-
|
|
10
|
+
//
|
|
11
|
+
// The (?<!\d) lookbehind only lets a match start at the beginning of a digit
|
|
12
|
+
// run. Without it the engine retries from every digit of a long run, which
|
|
13
|
+
// is O(n²): a 50,000-digit tag took ~13 s. Results are identical — any match
|
|
14
|
+
// starting mid-run also exists starting at the run's first digit.
|
|
15
|
+
const PARAM_REGEX = /(?<!\d)(\d+(?:\.\d+)?)[-_]?[bB](?![a-zA-Z0-9])/;
|
|
11
16
|
function extractFromString(value, regex) {
|
|
12
17
|
const match = value.match(regex);
|
|
13
18
|
if (!match)
|
|
@@ -40,9 +45,17 @@ function extractParamsB(model) {
|
|
|
40
45
|
}
|
|
41
46
|
return { paramsB: null, paramsSource: "unknown" };
|
|
42
47
|
}
|
|
43
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* Applies extraction to a full list, returning enriched copies (does not mutate input).
|
|
50
|
+
* A size the provider already reported (e.g. Ollama's `parameter_size`) is kept:
|
|
51
|
+
* overwriting it from the id would turn "llama3:latest" (70B) into "unknown"
|
|
52
|
+
* and silently exempt it from the maxParamsB / vramGB hard filters.
|
|
53
|
+
*/
|
|
44
54
|
function enrichWithParams(models) {
|
|
45
55
|
return models.map((model) => {
|
|
56
|
+
if (model.paramsB != null && model.paramsSource !== undefined && model.paramsSource !== "unknown") {
|
|
57
|
+
return { ...model };
|
|
58
|
+
}
|
|
46
59
|
const { paramsB, paramsSource } = extractParamsB(model);
|
|
47
60
|
return { ...model, paramsB, paramsSource };
|
|
48
61
|
});
|
package/dist/params.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.js","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":";;;;AAEA;;;;GAIG;AACH,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":";;;;AAEA;;;;GAIG;AACH,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,kEAAkE;AAClE,MAAM,WAAW,GAAG,gDAAgD,CAAC;AAOrE,SAAS,iBAAiB,CAAC,KAAa,EAAE,KAAa;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,wBAA+B,KAAc;IAC3C,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,0BAAiC,MAAiB;IAChD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAClG,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/query.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { ModelQuery, ScoringMode, ProviderName, HardwareSpec } from "./types";
|
|
2
2
|
import { ValidationError } from "./errors";
|
|
3
|
+
/**
|
|
4
|
+
* Length caps. `task` is sent to HuggingFace, used as a cache key, and
|
|
5
|
+
* embedded (and memoized) in embedding/hybrid mode; `domain` is compared
|
|
6
|
+
* against every tag. Unbounded, either one lets a caller burn CPU/memory.
|
|
7
|
+
* 512 leaves plenty of room for free-text task descriptions.
|
|
8
|
+
*/
|
|
9
|
+
export declare const MAX_TASK_LENGTH = 512;
|
|
10
|
+
export declare const MAX_DOMAIN_LENGTH = 128;
|
|
3
11
|
/** True for the original v0.1-v0.3 hardware string enum. */
|
|
4
12
|
export declare function isHardwareEnumString(hardware: unknown): hardware is "cpu" | "gpu-low" | "gpu-high";
|
|
5
13
|
/** True for the v0.4 structured HardwareSpec form. */
|
|
@@ -15,7 +23,7 @@ export { ValidationError as InvalidQueryError };
|
|
|
15
23
|
* Validates a raw ModelQuery and returns a normalized copy
|
|
16
24
|
* (limit defaulted to 5 if omitted). Throws InvalidQueryError on bad input.
|
|
17
25
|
*/
|
|
18
|
-
export declare function validateQuery(
|
|
26
|
+
export declare function validateQuery(rawQuery: ModelQuery): ModelQuery & {
|
|
19
27
|
limit: number;
|
|
20
28
|
scoringMode: ScoringMode;
|
|
21
29
|
providers: ProviderName[];
|
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;;GAKG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAiBrC,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI,KAAK,GAAG,SAAS,GAAG,UAAU,CAE5C;AAED,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,YAAY,CAE1E;AAED;;;;;GAKG;AACH,OAAO,EAAE,eAAe,IAAI,iBAAiB,EAAE,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,UAAU,GACnB,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,YAAY,EAAE,CAAA;CAAE,CAkFrF"}
|
package/dist/query.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvalidQueryError = void 0;
|
|
3
|
+
exports.InvalidQueryError = exports.MAX_DOMAIN_LENGTH = exports.MAX_TASK_LENGTH = void 0;
|
|
4
4
|
exports.isHardwareEnumString = isHardwareEnumString;
|
|
5
5
|
exports.isHardwareSpec = isHardwareSpec;
|
|
6
6
|
exports.validateQuery = validateQuery;
|
|
7
7
|
const errors_1 = require("./errors");
|
|
8
8
|
Object.defineProperty(exports, "InvalidQueryError", { enumerable: true, get: function () { return errors_1.ValidationError; } });
|
|
9
|
+
const validate_1 = require("./validate");
|
|
10
|
+
/**
|
|
11
|
+
* Length caps. `task` is sent to HuggingFace, used as a cache key, and
|
|
12
|
+
* embedded (and memoized) in embedding/hybrid mode; `domain` is compared
|
|
13
|
+
* against every tag. Unbounded, either one lets a caller burn CPU/memory.
|
|
14
|
+
* 512 leaves plenty of room for free-text task descriptions.
|
|
15
|
+
*/
|
|
16
|
+
exports.MAX_TASK_LENGTH = 512;
|
|
17
|
+
exports.MAX_DOMAIN_LENGTH = 128;
|
|
18
|
+
const SCALAR_FIELDS = ["task", "contextLength", "maxParamsB", "domain", "maxLatencyMs", "limit", "scoringMode"];
|
|
9
19
|
const VALID_HARDWARE = new Set(["cpu", "gpu-low", "gpu-high"]);
|
|
10
20
|
const VALID_SCORING_MODES = new Set(["rule", "embedding", "hybrid"]);
|
|
11
21
|
const VALID_PROVIDERS = new Set(["huggingface", "ollama"]);
|
|
@@ -13,6 +23,10 @@ const VALID_HARDWARE_SPEC_TYPES = new Set(["cpu", "gpu"]);
|
|
|
13
23
|
const DEFAULT_LIMIT = 5;
|
|
14
24
|
const DEFAULT_SCORING_MODE = "rule";
|
|
15
25
|
const DEFAULT_PROVIDERS = ["huggingface"];
|
|
26
|
+
/** A real, finite number greater than zero. Rejects NaN and Infinity, which `typeof x === "number"` lets through. */
|
|
27
|
+
function isPositiveFinite(value) {
|
|
28
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0;
|
|
29
|
+
}
|
|
16
30
|
/** True for the original v0.1-v0.3 hardware string enum. */
|
|
17
31
|
function isHardwareEnumString(hardware) {
|
|
18
32
|
return typeof hardware === "string" && VALID_HARDWARE.has(hardware);
|
|
@@ -25,13 +39,21 @@ function isHardwareSpec(hardware) {
|
|
|
25
39
|
* Validates a raw ModelQuery and returns a normalized copy
|
|
26
40
|
* (limit defaulted to 5 if omitted). Throws InvalidQueryError on bad input.
|
|
27
41
|
*/
|
|
28
|
-
function validateQuery(
|
|
29
|
-
if (!
|
|
42
|
+
function validateQuery(rawQuery) {
|
|
43
|
+
if (!rawQuery || typeof rawQuery !== "object") {
|
|
30
44
|
throw new errors_1.ValidationError("query must be an object");
|
|
31
45
|
}
|
|
46
|
+
// Read every field exactly once into a plain snapshot, then validate and
|
|
47
|
+
// return the snapshot. Validating the caller's object and returning a
|
|
48
|
+
// spread of it would re-read getters, letting a value change after it
|
|
49
|
+
// was checked. Unknown extra fields are dropped.
|
|
50
|
+
const query = snapshotQuery(rawQuery);
|
|
32
51
|
if (typeof query.task !== "string" || query.task.trim() === "") {
|
|
33
52
|
throw new errors_1.ValidationError("query.task is required and must be a non-empty string");
|
|
34
53
|
}
|
|
54
|
+
if (query.task.length > exports.MAX_TASK_LENGTH) {
|
|
55
|
+
throw new errors_1.ValidationError(`query.task must be at most ${exports.MAX_TASK_LENGTH} characters`);
|
|
56
|
+
}
|
|
35
57
|
if (typeof query.contextLength !== "number" || !Number.isFinite(query.contextLength) || query.contextLength <= 0) {
|
|
36
58
|
throw new errors_1.ValidationError("query.contextLength is required and must be a positive number");
|
|
37
59
|
}
|
|
@@ -42,17 +64,20 @@ function validateQuery(query) {
|
|
|
42
64
|
if (!VALID_HARDWARE_SPEC_TYPES.has(query.hardware.type)) {
|
|
43
65
|
throw new errors_1.ValidationError(`query.hardware.type must be one of: ${[...VALID_HARDWARE_SPEC_TYPES].join(", ")}`);
|
|
44
66
|
}
|
|
45
|
-
if (query.hardware.vramGB !== undefined && (
|
|
67
|
+
if (query.hardware.vramGB !== undefined && !isPositiveFinite(query.hardware.vramGB)) {
|
|
46
68
|
throw new errors_1.ValidationError("query.hardware.vramGB must be a positive number when provided");
|
|
47
69
|
}
|
|
48
70
|
}
|
|
49
71
|
if (query.domain !== undefined && (typeof query.domain !== "string" || query.domain.trim() === "")) {
|
|
50
72
|
throw new errors_1.ValidationError("query.domain must be a non-empty string when provided");
|
|
51
73
|
}
|
|
52
|
-
if (query.
|
|
74
|
+
if (query.domain !== undefined && query.domain.length > exports.MAX_DOMAIN_LENGTH) {
|
|
75
|
+
throw new errors_1.ValidationError(`query.domain must be at most ${exports.MAX_DOMAIN_LENGTH} characters`);
|
|
76
|
+
}
|
|
77
|
+
if (query.maxParamsB !== undefined && !isPositiveFinite(query.maxParamsB)) {
|
|
53
78
|
throw new errors_1.ValidationError("query.maxParamsB must be a positive number when provided");
|
|
54
79
|
}
|
|
55
|
-
if (query.maxLatencyMs !== undefined && (
|
|
80
|
+
if (query.maxLatencyMs !== undefined && !isPositiveFinite(query.maxLatencyMs)) {
|
|
56
81
|
throw new errors_1.ValidationError("query.maxLatencyMs must be a positive number when provided");
|
|
57
82
|
}
|
|
58
83
|
if (query.limit !== undefined && (typeof query.limit !== "number" || !Number.isInteger(query.limit) || query.limit <= 0)) {
|
|
@@ -71,11 +96,52 @@ function validateQuery(query) {
|
|
|
71
96
|
}
|
|
72
97
|
}
|
|
73
98
|
}
|
|
99
|
+
if (query.cacheOptions !== undefined) {
|
|
100
|
+
(0, validate_1.validateCacheOptions)(query.cacheOptions, "query.cacheOptions");
|
|
101
|
+
}
|
|
74
102
|
return {
|
|
75
103
|
...query,
|
|
76
104
|
limit: query.limit ?? DEFAULT_LIMIT,
|
|
77
105
|
scoringMode: query.scoringMode ?? DEFAULT_SCORING_MODE,
|
|
78
|
-
|
|
106
|
+
// De-duplicated (order kept): repeated entries would fetch the same
|
|
107
|
+
// provider again and return every model multiple times.
|
|
108
|
+
providers: query.providers ? [...new Set(query.providers)] : DEFAULT_PROVIDERS,
|
|
79
109
|
};
|
|
80
110
|
}
|
|
111
|
+
/** Copies each known field once (nested hardware/providers/cacheOptions too). See validateQuery. */
|
|
112
|
+
function snapshotQuery(raw) {
|
|
113
|
+
const snap = {};
|
|
114
|
+
for (const key of SCALAR_FIELDS) {
|
|
115
|
+
const value = raw[key];
|
|
116
|
+
if (value !== undefined)
|
|
117
|
+
snap[key] = value;
|
|
118
|
+
}
|
|
119
|
+
const hardware = raw.hardware;
|
|
120
|
+
if (hardware !== undefined) {
|
|
121
|
+
if (typeof hardware === "object" && hardware !== null && "type" in hardware) {
|
|
122
|
+
const h = hardware;
|
|
123
|
+
const vramGB = h.vramGB;
|
|
124
|
+
snap.hardware = { type: h.type, ...(vramGB !== undefined ? { vramGB } : {}) };
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
snap.hardware = hardware;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const providers = raw.providers;
|
|
131
|
+
if (providers !== undefined)
|
|
132
|
+
snap.providers = Array.isArray(providers) ? Array.from(providers) : providers;
|
|
133
|
+
const cacheOptions = raw.cacheOptions;
|
|
134
|
+
if (cacheOptions !== undefined) {
|
|
135
|
+
if (typeof cacheOptions === "object" && cacheOptions !== null && !Array.isArray(cacheOptions)) {
|
|
136
|
+
const c = cacheOptions;
|
|
137
|
+
const dir = c.dir;
|
|
138
|
+
const ttlMs = c.ttlMs;
|
|
139
|
+
snap.cacheOptions = { ...(dir !== undefined ? { dir } : {}), ...(ttlMs !== undefined ? { ttlMs } : {}) };
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
snap.cacheOptions = cacheOptions;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return snap;
|
|
146
|
+
}
|
|
81
147
|
//# sourceMappingURL=query.js.map
|
package/dist/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":";;;;;;AACA,qCAA2C;kGAAlC,wBAAe;
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { HFModel } from "../types";
|
|
2
2
|
import { HFApiError } from "../errors";
|
|
3
3
|
import { Provider } from "./provider";
|
|
4
|
+
/** Per-attempt request timeout — without one, a stalled connection hangs the caller forever. */
|
|
5
|
+
export declare const FETCH_TIMEOUT_MS = 10000;
|
|
4
6
|
/** Backward-compatible alias — v0.1 threw this name; v0.2 throws the same class under a new name. */
|
|
5
7
|
export { HFApiError as HuggingFaceApiError };
|
|
6
8
|
export declare function mapTaskToPipelineTag(task: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface.d.ts","sourceRoot":"","sources":["../../src/registry/huggingface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,UAAU,EAAkB,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"huggingface.d.ts","sourceRoot":"","sources":["../../src/registry/huggingface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,UAAU,EAAkB,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAStC,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,QAAS,CAAC;AASvC,qGAAqG;AACrG,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,CAAC;AAiC7C,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIzD;AA6FD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAwB3E;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAGjC,CAAC"}
|