@plurnk/plurnk-providers 0.39.0 → 1.0.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/.env.defaults +69 -0
- package/dist/discover.d.ts.map +1 -1
- package/dist/discover.js +4 -39
- package/dist/discover.js.map +1 -1
- package/dist/env.d.ts +1 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +1 -1
- package/dist/env.js.map +1 -1
- package/package.json +54 -54
- package/dist/tokenizers.d.ts +0 -6
- package/dist/tokenizers.d.ts.map +0 -1
- package/dist/tokenizers.js +0 -40
- package/dist/tokenizers.js.map +0 -1
package/.env.defaults
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# ⚠ REFERENCE — @plurnk/plurnk-providers' shipped .env.defaults: the operative floor for the
|
|
2
|
+
# PLURNK_PROVIDERS_* knobs (ecosystem standard, providers#44: every package owns its knobs; the
|
|
3
|
+
# file IS the documentation). The daemon assembles every installed member's file into one floor
|
|
4
|
+
# (set-if-unset under the operator's env) — do NOT edit this file; put YOUR config in
|
|
5
|
+
# ~/.plurnk/.env or ./.env. A key claimed by two packages crashes boot naming both.
|
|
6
|
+
#
|
|
7
|
+
# EVERY knob here is per-alias-scopable: PLURNK_PROVIDERS_<KNOB>_<alias> wins over the bare name
|
|
8
|
+
# for that alias (suffix case-folds; SPEC §4). Set lines are the floor; commented keys are
|
|
9
|
+
# knobs whose UNSET state is meaningful (derive/auto/off) — uncomment to pin.
|
|
10
|
+
# Vendor facts (API keys, base URLs: XAI_API_KEY, FIREWORKS_BASE_URL, …) are NOT knobs and
|
|
11
|
+
# carry no defaults — they stay operator-declared, fail-hard when required (SPEC §3).
|
|
12
|
+
|
|
13
|
+
# --- Side-channel thinking (SPEC §4, #32/#33) ---
|
|
14
|
+
# ACTIVATION and CAPACITY are separate so a numeric can never silently flip wire flags.
|
|
15
|
+
# off | adaptive | on. The provider maps intent to each backend's mechanism.
|
|
16
|
+
PLURNK_PROVIDERS_THINKING=off
|
|
17
|
+
# Positive int, REQUIRED iff THINKING=on — the magnitude for tier/budget mapping. On
|
|
18
|
+
# llama.cpp the ENFORCEMENT is the box's --reasoning-budget LAUNCH flag (per-request
|
|
19
|
+
# numerics are ignored): env capacity and launch flag are the same number, changed together.
|
|
20
|
+
# PLURNK_PROVIDERS_THINKING_CAPACITY=4096
|
|
21
|
+
|
|
22
|
+
# --- Decode tuning (measured canonical values; bench/TUNING-EPIC.md F1/F6; #9/#30) ---
|
|
23
|
+
# TEMPERATURE is the default for EVERY request (under caller sampling); REPEAT_PENALTY is
|
|
24
|
+
# the floor the provider manages wherever a grammar rides (greedy-under-mask loops without it).
|
|
25
|
+
PLURNK_PROVIDERS_TEMPERATURE=0.2
|
|
26
|
+
PLURNK_PROVIDERS_REPEAT_PENALTY=1.15
|
|
27
|
+
|
|
28
|
+
# --- Transport budgets (§4, #18) ---
|
|
29
|
+
# Per-attempt fetch timeout (ms); the caller's abort signal spans retries.
|
|
30
|
+
PLURNK_PROVIDERS_FETCH_TIMEOUT=600000
|
|
31
|
+
# Transient-failure retries: 0 = surface the first failure; N = retries on 429/5xx/timeout
|
|
32
|
+
# with exponential backoff (Retry-After wins). RETRY_DELAY is the backoff base (ms).
|
|
33
|
+
PLURNK_PROVIDERS_RETRY_ATTEMPTS=3
|
|
34
|
+
PLURNK_PROVIDERS_RETRY_DELAY=2000
|
|
35
|
+
|
|
36
|
+
# --- Endpoint probe (#34) ---
|
|
37
|
+
# GET /v1/models at construction (context window + llama-server fingerprint). One failure
|
|
38
|
+
# must never decide capability: ATTEMPTS retries with DELAY(ms) backoff base.
|
|
39
|
+
PLURNK_PROVIDERS_PROBE_ATTEMPTS=3
|
|
40
|
+
PLURNK_PROVIDERS_PROBE_DELAY=250
|
|
41
|
+
|
|
42
|
+
# --- Grammar (GBNF, SPEC §13) ---
|
|
43
|
+
# The grammar artifact the consumer resolves and passes per call (providers transport it
|
|
44
|
+
# verbatim; enforcement is per-backend — see constrainsOutput). Read by the service.
|
|
45
|
+
PLURNK_PROVIDERS_GBNF=plurnk.gbnf
|
|
46
|
+
# Debug toggle (0/empty = off): validate a transported grammar locally, throw on malformed,
|
|
47
|
+
# and WITHHOLD it so the model runs unconstrained — the free output is still verified and a
|
|
48
|
+
# divergence surfaces as grammar_unenforced telemetry. Dev aid; leave off in production.
|
|
49
|
+
# PLURNK_PROVIDERS_GBNF_DEBUG=0
|
|
50
|
+
|
|
51
|
+
# --- Window (SPEC §11) ---
|
|
52
|
+
# Unset = derive: env → live endpoint probe (n_ctx) → models.dev catalog → null (surfaced
|
|
53
|
+
# once via PLURNK_CONTEXT_UNKNOWN naming the model). Set to pin the window deliberately —
|
|
54
|
+
# per-alias (_<alias>) for a box whose model the catalog doesn't know.
|
|
55
|
+
# PLURNK_PROVIDERS_CONTEXT_SIZE=200000
|
|
56
|
+
|
|
57
|
+
# --- llama-server detection pin (#34) ---
|
|
58
|
+
# Unset = auto-detect from the /v1/models fingerprint. 1 = pin llama-server capabilities
|
|
59
|
+
# (grammar transport, slot pinning, /tokenize) WITHOUT trusting the probe; 0 = force plain
|
|
60
|
+
# remote even when the fingerprint matches. Usually per-alias: _<alias>.
|
|
61
|
+
# PLURNK_PROVIDERS_LLAMA_SERVER=1
|
|
62
|
+
|
|
63
|
+
# --- Data capture (#36, SPEC §14) — OFF by default; the flag IS the isolation ---
|
|
64
|
+
# Enable ONLY on a dataset-scraping alias (append _<alias>); serving turns then request and
|
|
65
|
+
# carry nothing. LOGPROB: non-negative int = top_logprobs (surfaced on assistant.logprobs;
|
|
66
|
+
# raw model logprob, the sampling-invariant confidence). RAWBODY: truthy → verbatim wire
|
|
67
|
+
# body on response.rawBody (keeps sampling_logprob/token_id/bytes the digest drops).
|
|
68
|
+
# PLURNK_PROVIDERS_LOGPROB_myscraper=3
|
|
69
|
+
# PLURNK_PROVIDERS_RAWBODY_myscraper=1
|
package/dist/discover.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AA0BA,MAAM,MAAM,eAAe,GAAG;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC3B,CAAC;AAGF,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAM7B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;CAChD,CAAC;AAGF,eAAO,MAAM,QAAQ,aAAmB,eAAe,KAAQ,OAAO,CAAC,SAAS,CAyB/E,CAAC"}
|
package/dist/discover.js
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
|
|
4
|
-
// ON (any value) → `@plurnk/*` always trusted, plus a comma-separated allowlist
|
|
5
|
-
// of additionally-trusted package names ("1" = on with zero third-party).
|
|
6
|
-
const isTrusted = (packageName, env) => {
|
|
7
|
-
const gate = env.PLURNK_PLUGINS_TRUSTED_ONLY;
|
|
8
|
-
if (gate === undefined || gate === "" || gate === "0")
|
|
9
|
-
return true;
|
|
10
|
-
if (packageName.startsWith("@plurnk/"))
|
|
11
|
-
return true;
|
|
12
|
-
return gate.split(",").map((s) => s.trim()).includes(packageName);
|
|
13
|
-
};
|
|
3
|
+
import Meta from "@plurnk/plurnk-meta";
|
|
14
4
|
export const discover = async (options = {}) => {
|
|
15
5
|
const dirs = options.packageDirs ?? await defaultPackageDirs(options.cwd ?? process.cwd());
|
|
16
6
|
const env = options.env ?? process.env;
|
|
@@ -21,7 +11,7 @@ export const discover = async (options = {}) => {
|
|
|
21
11
|
const info = await readProviderInfo(dir);
|
|
22
12
|
if (info === null)
|
|
23
13
|
continue;
|
|
24
|
-
if (!isTrusted(info.packageName, env)) {
|
|
14
|
+
if (!Meta.isTrusted(info.packageName, env)) {
|
|
25
15
|
skipped.set(info.name, info.packageName); // declined — not a collision candidate
|
|
26
16
|
continue;
|
|
27
17
|
}
|
|
@@ -39,33 +29,8 @@ export const discover = async (options = {}) => {
|
|
|
39
29
|
// Enumerate every installed package directory — scoped and unscoped — under
|
|
40
30
|
// `<cwd>/node_modules`. Unreadable node_modules (e.g. nothing installed) → [].
|
|
41
31
|
const defaultPackageDirs = async (cwd) => {
|
|
42
|
-
const nm = path.join(cwd, "node_modules");
|
|
43
|
-
|
|
44
|
-
try {
|
|
45
|
-
entries = await fs.readdir(nm, { withFileTypes: true });
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
return [];
|
|
49
|
-
}
|
|
50
|
-
const dirs = [];
|
|
51
|
-
for (const entry of entries) {
|
|
52
|
-
if (!entry.isDirectory() || entry.name === ".bin" || entry.name === ".cache")
|
|
53
|
-
continue;
|
|
54
|
-
if (entry.name.startsWith("@")) {
|
|
55
|
-
const scopeDir = path.join(nm, entry.name);
|
|
56
|
-
try {
|
|
57
|
-
const scoped = await fs.readdir(scopeDir, { withFileTypes: true });
|
|
58
|
-
for (const s of scoped)
|
|
59
|
-
if (s.isDirectory())
|
|
60
|
-
dirs.push(path.join(scopeDir, s.name));
|
|
61
|
-
}
|
|
62
|
-
catch { /* unreadable scope dir — skip */ }
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
dirs.push(path.join(nm, entry.name));
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return dirs;
|
|
32
|
+
const nm = Meta.nearestNodeModules(cwd) ?? path.join(path.resolve(cwd), "node_modules");
|
|
33
|
+
return (await Meta.packageDirs(nm)).map((c) => c.dir).toSorted();
|
|
69
34
|
};
|
|
70
35
|
const readProviderInfo = async (dir) => {
|
|
71
36
|
let raw;
|
package/dist/discover.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"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"}
|
package/dist/env.d.ts
CHANGED
|
@@ -12,5 +12,6 @@ export type Thinking = {
|
|
|
12
12
|
capacity: number | null;
|
|
13
13
|
};
|
|
14
14
|
export declare const thinkingFromEnv: (env: NodeJS.ProcessEnv, label: string) => Thinking;
|
|
15
|
+
export declare const PROVIDERS_KNOBS: readonly string[];
|
|
15
16
|
export declare const scopeEnvToAlias: (env: NodeJS.ProcessEnv, alias: string, knobs?: readonly string[]) => NodeJS.ProcessEnv;
|
|
16
17
|
//# sourceMappingURL=env.d.ts.map
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAKvF,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAAM,GAAG,IAKhG,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,KAAG,MAKtG,CAAC;AAEF,eAAO,MAAM,UAAU,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAGjF,CAAC;AASF,eAAO,MAAM,kBAAkB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAGpH,CAAC;AAWH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;AACrD,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEvE,eAAO,MAAM,eAAe,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,QAYvE,CAAC;
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAKvF,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAAM,GAAG,IAKhG,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,KAAG,MAKtG,CAAC;AAEF,eAAO,MAAM,UAAU,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAGjF,CAAC;AASF,eAAO,MAAM,kBAAkB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAGpH,CAAC;AAWH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;AACrD,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEvE,eAAO,MAAM,eAAe,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,QAYvE,CAAC;AASF,eAAO,MAAM,eAAe,mBAe1B,CAAC;AAaH,eAAO,MAAM,eAAe,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,UAAS,SAAS,MAAM,EAAE,KAAqB,MAAM,CAAC,UAkB1H,CAAC"}
|
package/dist/env.js
CHANGED
|
@@ -66,7 +66,7 @@ export const thinkingFromEnv = (env, label) => {
|
|
|
66
66
|
// exact-prefix-first, so aliases containing underscores stay unambiguous. Vendor
|
|
67
67
|
// facts (API keys, canonical endpoints) remain vendor-named; the per-alias
|
|
68
68
|
// endpoint override stays PLURNK_BASEURL_<alias> (its existing precedent).
|
|
69
|
-
const PROVIDERS_KNOBS = Object.freeze([
|
|
69
|
+
export const PROVIDERS_KNOBS = Object.freeze([
|
|
70
70
|
"PLURNK_PROVIDERS_THINKING_CAPACITY",
|
|
71
71
|
"PLURNK_PROVIDERS_THINKING",
|
|
72
72
|
"PLURNK_PROVIDERS_CONTEXT_SIZE",
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
},
|
|
15
|
-
"repository": {
|
|
16
|
-
"type": "git",
|
|
17
|
-
"url": "git+https://github.com/plurnk/plurnk-providers.git"
|
|
18
|
-
},
|
|
19
|
-
"engines": {
|
|
20
|
-
"node": ">=26"
|
|
21
|
-
},
|
|
22
|
-
"license": "MIT",
|
|
23
|
-
"author": "@wikitopian",
|
|
24
|
-
"type": "module",
|
|
25
|
-
"publishConfig": {
|
|
26
|
-
"access": "public"
|
|
27
|
-
},
|
|
28
|
-
"exports": {
|
|
29
|
-
".": {
|
|
30
|
-
"types": "./dist/index.d.ts",
|
|
31
|
-
"default": "./dist/index.js"
|
|
2
|
+
"name": "@plurnk/plurnk-providers",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Framework + contract for plurnk LLM transports: built-in standard OpenAI-compatible providers plus scope-agnostic discovery of first-party and third-party provider packages.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"plurnk",
|
|
7
|
+
"llm",
|
|
8
|
+
"provider",
|
|
9
|
+
"tokenizer"
|
|
10
|
+
],
|
|
11
|
+
"homepage": "https://github.com/plurnk/plurnk-providers#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/plurnk/plurnk-providers/issues"
|
|
32
14
|
},
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/plurnk/plurnk-providers.git"
|
|
18
|
+
},
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=26"
|
|
21
|
+
},
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"author": "@wikitopian",
|
|
24
|
+
"type": "module",
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"plurnk-dev": "./src/index.ts",
|
|
32
|
+
"default": "./dist/index.js"
|
|
33
|
+
},
|
|
34
|
+
"./package.json": "./package.json"
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"dist/**/*",
|
|
38
|
+
"README.md",
|
|
39
|
+
"SPEC.md",
|
|
40
|
+
".env.defaults"
|
|
41
|
+
],
|
|
42
|
+
"scripts": {
|
|
43
|
+
"test:lint": "tsc --noEmit",
|
|
44
|
+
"test:unit": "node --conditions=plurnk-dev --test src/**/*.test.ts",
|
|
45
|
+
"test": "npm run test:lint && npm run test:unit",
|
|
46
|
+
"build:dist": "tsc -p tsconfig.build.json",
|
|
47
|
+
"build": "npm run build:dist",
|
|
48
|
+
"prepack": "npm run build"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@plurnk/gbnf": "1.0.0",
|
|
52
|
+
"@plurnk/plurnk-aliases": "1.0.0",
|
|
53
|
+
"@plurnk/plurnk-models": "1.0.0",
|
|
54
|
+
"@plurnk/plurnk-providers-ollama": "1.0.0",
|
|
55
|
+
"@plurnk/plurnk-meta": "1.0.0"
|
|
56
|
+
}
|
|
57
57
|
}
|
package/dist/tokenizers.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export type TokenizerFamily = "heuristic" | "cl100k" | "llama";
|
|
2
|
-
export type CountTokens = (text: string) => number;
|
|
3
|
-
export declare const tokenizerFor: (family: TokenizerFamily) => CountTokens;
|
|
4
|
-
export declare const parseTokenizerFamily: (raw: string | undefined, fallback: TokenizerFamily, envName: string, label: string) => TokenizerFamily;
|
|
5
|
-
export declare const tokenizerByPublisher: (model: string, table: ReadonlyMap<string, TokenizerFamily>, index?: number) => TokenizerFamily;
|
|
6
|
-
//# sourceMappingURL=tokenizers.d.ts.map
|
package/dist/tokenizers.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenizers.d.ts","sourceRoot":"","sources":["../src/tokenizers.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAYnD,eAAO,MAAM,YAAY,GAAI,QAAQ,eAAe,KAAG,WAAiC,CAAC;AAKzF,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,GAAG,SAAS,EAAE,UAAU,eAAe,EAAE,SAAS,MAAM,EAAE,OAAO,MAAM,KAAG,eAKzH,CAAC;AAMF,eAAO,MAAM,oBAAoB,GAC7B,OAAO,MAAM,EACb,OAAO,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,EAC3C,cAAS,KACV,eAGF,CAAC"}
|
package/dist/tokenizers.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
// Tokenizer strategies shared by every provider's countTokens(). Centralizes
|
|
2
|
-
// the gpt-tokenizer / llama-tokenizer-js deps (each sibling pulled them in
|
|
3
|
-
// separately) and the per-publisher dispatch maps that openrouter and
|
|
4
|
-
// cloudflare had independently re-invented.
|
|
5
|
-
//
|
|
6
|
-
// countTokens is synchronous by contract (SPEC §2), so only client-side
|
|
7
|
-
// tokenizers qualify. "heuristic" (chars/4) is the safe default for any
|
|
8
|
-
// upstream whose tokenizer we can't run locally.
|
|
9
|
-
import { encode as encodeCl100k } from "gpt-tokenizer/encoding/cl100k_base";
|
|
10
|
-
import llamaTokenizer from "llama-tokenizer-js";
|
|
11
|
-
// chars/2 is a deliberate UPPER BOUND, not an estimate: real agentic text runs
|
|
12
|
-
// ~2.9 chars/token (gemma SP-256k) to ~3.2 (deepseek BPE-128k), so /4 silently
|
|
13
|
-
// UNDERcounted 20-27% — the dangerous direction for window math. A fallback may
|
|
14
|
-
// overcount (refuse a too-big prompt safely) but must never undercount.
|
|
15
|
-
const heuristic = (text) => (text.length === 0 ? 0 : Math.ceil(text.length / 2));
|
|
16
|
-
const cl100k = (text) => (text.length === 0 ? 0 : encodeCl100k(text).length);
|
|
17
|
-
const llama = (text) => (text.length === 0 ? 0 : llamaTokenizer.encode(text).length);
|
|
18
|
-
const STRATEGIES = Object.freeze({ heuristic, cl100k, llama });
|
|
19
|
-
export const tokenizerFor = (family) => STRATEGIES[family];
|
|
20
|
-
// Parse an operator-declared tokenizer override (e.g. OPENAI_TOKENIZER).
|
|
21
|
-
// Accepts a legacy "cl100k_base" spelling for back-compat with the openai
|
|
22
|
-
// sibling's existing env contract.
|
|
23
|
-
export const parseTokenizerFamily = (raw, fallback, envName, label) => {
|
|
24
|
-
if (raw === undefined || raw.length === 0)
|
|
25
|
-
return fallback;
|
|
26
|
-
if (raw === "cl100k_base")
|
|
27
|
-
return "cl100k";
|
|
28
|
-
if (raw === "heuristic" || raw === "cl100k" || raw === "llama")
|
|
29
|
-
return raw;
|
|
30
|
-
throw new Error(`${label} provider: ${envName} must be one of "heuristic", "cl100k", "llama" (got "${raw}")`);
|
|
31
|
-
};
|
|
32
|
-
// Dispatch a tokenizer family from a model id's publisher segment. Relay
|
|
33
|
-
// providers (openrouter, cloudflare) route across many upstream families, so
|
|
34
|
-
// the family is read from the id prefix. `index` selects which "/"-segment
|
|
35
|
-
// holds the publisher (0 for "anthropic/claude…", 1 for "@cf/meta/llama…").
|
|
36
|
-
export const tokenizerByPublisher = (model, table, index = 0) => {
|
|
37
|
-
const publisher = model.split("/")[index];
|
|
38
|
-
return publisher !== undefined ? table.get(publisher) ?? "heuristic" : "heuristic";
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=tokenizers.js.map
|
package/dist/tokenizers.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenizers.js","sourceRoot":"","sources":["../src/tokenizers.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAC3E,sEAAsE;AACtE,4CAA4C;AAC5C,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AACxE,iDAAiD;AAEjD,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAMhD,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,wEAAwE;AACxE,MAAM,SAAS,GAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9F,MAAM,MAAM,GAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1F,MAAM,KAAK,GAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAElG,MAAM,UAAU,GAAmD,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAE/G,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAuB,EAAe,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAEzF,yEAAyE;AACzE,0EAA0E;AAC1E,mCAAmC;AACnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAuB,EAAE,QAAyB,EAAE,OAAe,EAAE,KAAa,EAAmB,EAAE;IACxI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3D,IAAI,GAAG,KAAK,aAAa;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,GAAG,CAAC;IAC3E,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,OAAO,wDAAwD,GAAG,IAAI,CAAC,CAAC;AAClH,CAAC,CAAC;AAEF,yEAAyE;AACzE,6EAA6E;AAC7E,2EAA2E;AAC3E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,KAAa,EACb,KAA2C,EAC3C,KAAK,GAAG,CAAC,EACM,EAAE;IACjB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;AACvF,CAAC,CAAC"}
|