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/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
- if (value === undefined) {
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
- return str.length > max ? str.slice(0, max - 1) + "…" : str;
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":"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"}
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
@@ -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"}
@@ -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,CAmDzE;AAKD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKtD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,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":"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"}
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
- /** Applies extraction to a full list, returning enriched copies (does not mutate input). */
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
@@ -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;AAShD,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,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAK7D"}
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
- const PARAM_REGEX = /(\d+(?:\.\d+)?)[\-_]?[bB](?![a-zA-Z0-9])/;
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
- /** Applies extraction to a full list, returning enriched copies (does not mutate input). */
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
  });
@@ -1 +1 @@
1
- {"version":3,"file":"params.js","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":";;;;AAEA;;;;GAIG;AACH,MAAM,WAAW,GAAG,0CAA0C,CAAC;AAO/D,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,4FAA4F;AAC5F,0BAAiC,MAAiB;IAChD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,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"}
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(query: ModelQuery): ModelQuery & {
26
+ export declare function validateQuery(rawQuery: ModelQuery): ModelQuery & {
19
27
  limit: number;
20
28
  scoringMode: ScoringMode;
21
29
  providers: ProviderName[];
@@ -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;AAU3C,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,KAAK,EAAE,UAAU,GAChB,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,YAAY,EAAE,CAAA;CAAE,CAgErF"}
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(query) {
29
- if (!query || typeof query !== "object") {
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 && (typeof query.hardware.vramGB !== "number" || query.hardware.vramGB <= 0)) {
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.maxParamsB !== undefined && (typeof query.maxParamsB !== "number" || query.maxParamsB <= 0)) {
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 && (typeof query.maxLatencyMs !== "number" || query.maxLatencyMs <= 0)) {
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
- providers: query.providers ?? DEFAULT_PROVIDERS,
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;AAExB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/D,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AACrE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3D,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1D,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,iBAAiB,GAAmB,CAAC,aAAa,CAAC,CAAC;AAE1D,4DAA4D;AAC5D,8BACE,QAAiB;IAEjB,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACtE,CAAC;AAED,sDAAsD;AACtD,wBAA+B,QAAiB;IAC9C,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,IAAI,QAAQ,CAAC;AACjF,CAAC;AAUD;;;GAGG;AACH,uBACE,KAAiB;IAEjB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,wBAAe,CAAC,yBAAyB,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/D,MAAM,IAAI,wBAAe,CAAC,uDAAuD,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC;QACjH,MAAM,IAAI,wBAAe,CAAC,+DAA+D,CAAC,CAAC;IAC7F,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7G,MAAM,IAAI,wBAAe,CACvB,kCAAkC,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAClG,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,wBAAe,CAAC,uCAAuC,CAAC,GAAG,yBAAyB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;YACrH,MAAM,IAAI,wBAAe,CAAC,+DAA+D,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACnG,MAAM,IAAI,wBAAe,CAAC,uDAAuD,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,IAAI,wBAAe,CAAC,0DAA0D,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC;QAC5G,MAAM,IAAI,wBAAe,CAAC,4DAA4D,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QACzH,MAAM,IAAI,wBAAe,CAAC,sDAAsD,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,wBAAe,CAAC,qCAAqC,CAAC,GAAG,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,wBAAe,CAAC,yDAAyD,CAAC,CAAC;QACvF,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,wBAAe,CAAC,2CAA2C,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1G,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,KAAK;QACR,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,aAAa;QACnC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,oBAAoB;QACtD,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,iBAAiB;KAChD,CAAC;AACJ,CAAC"}
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;AAOtC,qGAAqG;AACrG,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,CAAC;AA6B7C,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAsCD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAyB3E;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAGjC,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"}