@plurnk/plurnk-providers 0.22.0 → 0.24.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/ProviderRegistry.d.ts +1 -3
- package/dist/ProviderRegistry.d.ts.map +1 -1
- package/dist/ProviderRegistry.js +5 -58
- package/dist/ProviderRegistry.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +0 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +12 -2
- package/dist/usage.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import type { Provider
|
|
1
|
+
import type { Provider } from "./types.ts";
|
|
2
2
|
import { type DiscoverOptions, type Discovery } from "./discover.ts";
|
|
3
|
-
export declare const parseAliasesFromEnv: (env?: NodeJS.ProcessEnv) => ProviderAlias[];
|
|
4
|
-
export declare const resolveActiveAlias: (env?: NodeJS.ProcessEnv) => ProviderAlias | null;
|
|
5
3
|
type ImportModule = (specifier: string) => Promise<unknown>;
|
|
6
4
|
type DiscoverFn = (options?: DiscoverOptions) => Promise<Discovery>;
|
|
7
5
|
export declare const instantiateProvider: (name: string, env: NodeJS.ProcessEnv, model: string, importImpl?: ImportModule, discoverFn?: DiscoverFn, baseUrl?: string) => Promise<Provider>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderRegistry.d.ts","sourceRoot":"","sources":["../src/ProviderRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProviderRegistry.d.ts","sourceRoot":"","sources":["../src/ProviderRegistry.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAY,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAM/E,KAAK,YAAY,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE5D,KAAK,UAAU,GAAG,CAAC,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;AAgBpE,eAAO,MAAM,mBAAmB,GAC5B,MAAM,MAAM,EACZ,KAAK,MAAM,CAAC,UAAU,EACtB,OAAO,MAAM,EACb,aAAY,YAA2B,EACvC,aAAY,UAAqB,EACjC,UAAU,MAAM,KACjB,OAAO,CAAC,QAAQ,CA0BlB,CAAC;AAGF,eAAO,MAAM,mBAAmB,QAAO,IAAmC,CAAC;AAG3E,eAAO,MAAM,kBAAkB,GAC3B,MAAK,MAAM,CAAC,UAAwB,EACpC,aAAY,YAA2B,EACvC,aAAY,UAAqB,KAClC,OAAO,CAAC,QAAQ,CAMlB,CAAC"}
|
package/dist/ProviderRegistry.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
//
|
|
2
|
-
// PLURNK_MODEL_<alias>=<provider>/<model>
|
|
3
|
-
//
|
|
1
|
+
// Provider instantiation + active-alias resolution. Alias PARSING (the
|
|
2
|
+
// PLURNK_MODEL_<alias>=<provider>/<model> cascade + PLURNK_BASEURL_<alias>
|
|
3
|
+
// overrides) lives in @plurnk/plurnk-aliases — the zero-dep parser shared with
|
|
4
|
+
// thin clients (#27); this module resolves the active alias to a Provider.
|
|
4
5
|
//
|
|
5
6
|
// Two-tier resolution (SPEC §5): tier 1 is the closed standard-provider table;
|
|
6
7
|
// tier 2 is a SCOPE-AGNOSTIC node_modules scan (discover()) for packages
|
|
@@ -18,61 +19,7 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
18
19
|
};
|
|
19
20
|
import { isStandardProvider, standardProviderFromEnv } from "./standardProviders.js";
|
|
20
21
|
import { discover } from "./discover.js";
|
|
21
|
-
|
|
22
|
-
// to match PLURNK_MODEL_<alias>. Lets two aliases on the same provider name target
|
|
23
|
-
// different self-hosted boxes (openai/ollama), the one thing a per-name base-URL
|
|
24
|
-
// var can't express.
|
|
25
|
-
const parseBaseUrls = (env) => {
|
|
26
|
-
const out = new Map();
|
|
27
|
-
for (const [key, value] of Object.entries(env)) {
|
|
28
|
-
if (value === undefined || value.length === 0)
|
|
29
|
-
continue;
|
|
30
|
-
if (!key.startsWith("PLURNK_BASEURL_"))
|
|
31
|
-
continue;
|
|
32
|
-
const aliasRaw = key.slice("PLURNK_BASEURL_".length);
|
|
33
|
-
if (aliasRaw.length === 0)
|
|
34
|
-
continue;
|
|
35
|
-
out.set(aliasRaw.toLowerCase(), value);
|
|
36
|
-
}
|
|
37
|
-
return out;
|
|
38
|
-
};
|
|
39
|
-
export const parseAliasesFromEnv = (env = process.env) => {
|
|
40
|
-
const out = [];
|
|
41
|
-
const seen = new Set();
|
|
42
|
-
const baseUrls = parseBaseUrls(env);
|
|
43
|
-
for (const [key, value] of Object.entries(env)) {
|
|
44
|
-
if (value === undefined || value.length === 0)
|
|
45
|
-
continue;
|
|
46
|
-
if (!key.startsWith("PLURNK_MODEL_"))
|
|
47
|
-
continue;
|
|
48
|
-
const aliasRaw = key.slice("PLURNK_MODEL_".length);
|
|
49
|
-
if (aliasRaw.length === 0)
|
|
50
|
-
continue;
|
|
51
|
-
const slash = value.indexOf("/");
|
|
52
|
-
if (slash <= 0)
|
|
53
|
-
continue;
|
|
54
|
-
const alias = aliasRaw.toLowerCase();
|
|
55
|
-
// Aliases are case-folded, so PLURNK_MODEL_opus and PLURNK_MODEL_OPUS
|
|
56
|
-
// collide. Surface the ambiguity rather than silently picking one.
|
|
57
|
-
if (seen.has(alias))
|
|
58
|
-
throw new Error(`Duplicate provider alias "${alias}": multiple PLURNK_MODEL_* keys case-fold to the same alias. Rename one.`);
|
|
59
|
-
seen.add(alias);
|
|
60
|
-
const baseUrl = baseUrls.get(alias);
|
|
61
|
-
out.push({ alias, provider: value.slice(0, slash), model: value.slice(slash + 1), ...(baseUrl !== undefined ? { baseUrl } : {}) });
|
|
62
|
-
}
|
|
63
|
-
// A base-URL override with no matching alias is a typo, not a silent no-op.
|
|
64
|
-
const unmatched = [...baseUrls.keys()].filter((a) => !seen.has(a));
|
|
65
|
-
if (unmatched.length > 0)
|
|
66
|
-
throw new Error(`PLURNK_BASEURL_* override(s) with no matching PLURNK_MODEL_* alias: ${unmatched.join(", ")}. Declare the alias or remove the override.`);
|
|
67
|
-
return out;
|
|
68
|
-
};
|
|
69
|
-
export const resolveActiveAlias = (env = process.env) => {
|
|
70
|
-
const selected = env.PLURNK_MODEL;
|
|
71
|
-
if (selected === undefined || selected.length === 0)
|
|
72
|
-
return null;
|
|
73
|
-
const aliases = parseAliasesFromEnv(env);
|
|
74
|
-
return aliases.find((a) => a.alias === selected.toLowerCase()) ?? null;
|
|
75
|
-
};
|
|
22
|
+
import { resolveActiveAlias } from "@plurnk/plurnk-aliases";
|
|
76
23
|
const importModule = (specifier) => import(__rewriteRelativeImportExtension(specifier));
|
|
77
24
|
// The node_modules scan is filesystem work that never changes within a process,
|
|
78
25
|
// so it runs once and the result is memoized. A long-lived daemon pays one scan
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderRegistry.js","sourceRoot":"","sources":["../src/ProviderRegistry.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"ProviderRegistry.js","sourceRoot":"","sources":["../src/ProviderRegistry.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,2EAA2E;AAC3E,+EAA+E;AAC/E,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,yEAAyE;AACzE,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,wCAAwC;;;;;;;;;AAGxC,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAwC,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAM5D,MAAM,YAAY,GAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,kCAAC,SAAS,EAAC,CAAC;AAGpE,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,sEAAsE;AACtE,IAAI,eAAe,GAAqB,IAAI,CAAC;AAC7C,MAAM,gBAAgB,GAAG,KAAK,EAAE,UAAsB,EAAE,GAAsB,EAAsB,EAAE;IAClG,eAAe,KAAK,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,OAAO,eAAe,CAAC;AAC3B,CAAC,CAAC;AAEF,2EAA2E;AAC3E,gFAAgF;AAChF,4EAA4E;AAC5E,6DAA6D;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACpC,IAAY,EACZ,GAAsB,EACtB,KAAa,EACb,aAA2B,YAAY,EACvC,aAAyB,QAAQ,EACjC,OAAgB,EACC,EAAE;IACnB,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,QAAQ,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,wCAAwC,CAAC,CAAC;QAClG,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,iBAAiB,QAAQ,+GAA+G,CAAC,CAAC;QAC/K,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,mGAAmG,IAAI,GAAG,CAAC,CAAC;IACzJ,CAAC;IACD,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACD,GAAG,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,iBAAiB,SAAS,2BAA2B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,OAAO,GAAI,GAAqC,CAAC,OAAO,CAAC;IAC/D,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,oEAAoE,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC9F,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAS,EAAE,GAAG,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAE3E,yEAAyE;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACnC,MAAyB,OAAO,CAAC,GAAG,EACpC,aAA2B,YAAY,EACvC,aAAyB,QAAQ,EAChB,EAAE;IACnB,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC,CAAC;IAC7H,CAAC;IACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACxG,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export type { ChatMessage, FinishReason, Provider,
|
|
2
|
-
export {
|
|
1
|
+
export type { ChatMessage, FinishReason, Provider, ProviderAssistant, ProviderFactory, ProviderOptions, ProviderResponse, ProviderUsage, } from "./types.ts";
|
|
2
|
+
export type { ProviderAlias } from "@plurnk/plurnk-aliases";
|
|
3
|
+
export { parseAliasesFromEnv, resolveActiveAlias } from "@plurnk/plurnk-aliases";
|
|
4
|
+
export { instantiateProvider, loadActiveProvider, resetDiscoveryCache, } from "./ProviderRegistry.ts";
|
|
3
5
|
export { discover } from "./discover.ts";
|
|
4
6
|
export type { DiscoverOptions, Discovery } from "./discover.ts";
|
|
5
7
|
export { default as OpenAICompatProvider, effortFromBudget } from "./OpenAICompat.ts";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,GAChB,MAAM,YAAY,CAAC;AAKpB,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EACH,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAIhE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACtF,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1F,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC3F,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACvG,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEzG,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { parseAliasesFromEnv, resolveActiveAlias
|
|
1
|
+
export { parseAliasesFromEnv, resolveActiveAlias } from "@plurnk/plurnk-aliases";
|
|
2
|
+
export { instantiateProvider, loadActiveProvider, resetDiscoveryCache, } from "./ProviderRegistry.js";
|
|
2
3
|
// Scope-agnostic tier-2 discovery (SPEC §5) — exported so a consumer can list
|
|
3
4
|
// installed providers (first-party + third-party) without instantiating them.
|
|
4
5
|
export { discover } from "./discover.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EACH,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,8EAA8E;AAC9E,8EAA8E;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,yEAAyE;AACzE,oDAAoD;AACpD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE1F,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE3F,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEvG,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEzG,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -39,12 +39,6 @@ export interface Provider {
|
|
|
39
39
|
countTokens(text: string): number;
|
|
40
40
|
costFor(usage: ProviderUsage): number;
|
|
41
41
|
}
|
|
42
|
-
export interface ProviderAlias {
|
|
43
|
-
readonly alias: string;
|
|
44
|
-
readonly provider: string;
|
|
45
|
-
readonly model: string;
|
|
46
|
-
readonly baseUrl?: string;
|
|
47
|
-
}
|
|
48
42
|
export interface ProviderOptions {
|
|
49
43
|
readonly baseUrl?: string;
|
|
50
44
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACnB;AAOD,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAID,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,gBAAgB,GAAG,IAAI,CAAC;AAEtF,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAO/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAUxC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,QAAQ;IA0BrB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAM5L,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAGlC,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC;CACzC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACnB;AAOD,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAID,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,gBAAgB,GAAG,IAAI,CAAC;AAEtF,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAO/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAUxC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,QAAQ;IA0BrB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAM5L,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAGlC,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC;CACzC;AAUD,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC7B;AAQD,MAAM,WAAW,eAAe;IAC5B,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3G"}
|
package/dist/usage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,MAAM,QAAQ,GAAG;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,yBAAyB,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,SAAS,KAAG,
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,MAAM,QAAQ,GAAG;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,yBAAyB,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,SAAS,KAAG,aAgCjE,CAAC;AAGF,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAK3E,eAAO,MAAM,WAAW,GAAI,OAAO,aAAa,EAAE,OAAO,UAAU,KAAG,MAIrE,CAAC"}
|
package/dist/usage.js
CHANGED
|
@@ -18,9 +18,19 @@ export const normalizeUsage = (raw) => {
|
|
|
18
18
|
let completion;
|
|
19
19
|
let reasoning;
|
|
20
20
|
if (reasoningDetail !== undefined) {
|
|
21
|
-
// OpenAI-style: reasoning is part of completion_tokens — split it out.
|
|
22
21
|
reasoning = reasoningDetail;
|
|
23
|
-
|
|
22
|
+
// reasoning_tokens is reported two incompatible ways when detailed. OpenAI
|
|
23
|
+
// o-series folds it INTO completion_tokens (subset: total = prompt + completion,
|
|
24
|
+
// so completion must have reasoning subtracted out). xAI/Grok reports it
|
|
25
|
+
// ADDITIVE to a visible-only completion_tokens (total = prompt + completion +
|
|
26
|
+
// reasoning), where subtracting wrongly zeroes the visible output (#28). Tell
|
|
27
|
+
// them apart by the total identity; with no total reported, fall back on the
|
|
28
|
+
// impossible-subset signal — reasoning can't exceed the completion it's a
|
|
29
|
+
// subset of.
|
|
30
|
+
const additive = reportedTotal > 0
|
|
31
|
+
? reportedTotal === prompt + completionRaw + reasoningDetail
|
|
32
|
+
: completionRaw < reasoningDetail;
|
|
33
|
+
completion = additive ? completionRaw : Math.max(0, completionRaw - reasoningDetail);
|
|
24
34
|
}
|
|
25
35
|
else {
|
|
26
36
|
// Gemini-style (or no reasoning): tokens beyond prompt+completion are
|
package/dist/usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,yDAAyD;AACzD,6EAA6E;AAC7E,+EAA+E;AAC/E,yEAAyE;AACzE,4EAA4E;AAC5E,wEAAwE;AACxE,+DAA+D;AAC/D,8EAA8E;AAc9E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAgC,EAAiB,EAAE;IAC9E,MAAM,MAAM,GAAG,GAAG,EAAE,aAAa,IAAI,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,GAAG,EAAE,iBAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,GAAG,EAAE,YAAY,IAAI,CAAC,CAAC;IAC7C,4EAA4E;IAC5E,MAAM,MAAM,GAAG,GAAG,EAAE,qBAAqB,EAAE,aAAa,IAAI,GAAG,EAAE,aAAa,IAAI,CAAC,CAAC;IACpF,MAAM,eAAe,GAAG,GAAG,EAAE,yBAAyB,EAAE,gBAAgB,CAAC;IAEzE,IAAI,UAAkB,CAAC;IACvB,IAAI,SAAiB,CAAC;IACtB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAChC,
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,yDAAyD;AACzD,6EAA6E;AAC7E,+EAA+E;AAC/E,yEAAyE;AACzE,4EAA4E;AAC5E,wEAAwE;AACxE,+DAA+D;AAC/D,8EAA8E;AAc9E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAgC,EAAiB,EAAE;IAC9E,MAAM,MAAM,GAAG,GAAG,EAAE,aAAa,IAAI,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,GAAG,EAAE,iBAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,GAAG,EAAE,YAAY,IAAI,CAAC,CAAC;IAC7C,4EAA4E;IAC5E,MAAM,MAAM,GAAG,GAAG,EAAE,qBAAqB,EAAE,aAAa,IAAI,GAAG,EAAE,aAAa,IAAI,CAAC,CAAC;IACpF,MAAM,eAAe,GAAG,GAAG,EAAE,yBAAyB,EAAE,gBAAgB,CAAC;IAEzE,IAAI,UAAkB,CAAC;IACvB,IAAI,SAAiB,CAAC;IACtB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAChC,SAAS,GAAG,eAAe,CAAC;QAC5B,2EAA2E;QAC3E,iFAAiF;QACjF,yEAAyE;QACzE,8EAA8E;QAC9E,8EAA8E;QAC9E,6EAA6E;QAC7E,0EAA0E;QAC1E,aAAa;QACb,MAAM,QAAQ,GAAG,aAAa,GAAG,CAAC;YAC9B,CAAC,CAAC,aAAa,KAAK,MAAM,GAAG,aAAa,GAAG,eAAe;YAC5D,CAAC,CAAC,aAAa,GAAG,eAAe,CAAC;QACtC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,eAAe,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACJ,sEAAsE;QACtE,oEAAoE;QACpE,SAAS,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,UAAU,GAAG,aAAa,CAAC;IAC/B,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAClF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC5D,CAAC,CAAC;AAKF,2EAA2E;AAC3E,2EAA2E;AAC3E,iCAAiC;AACjC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,KAAiB,EAAU,EAAE;IAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3G,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-providers",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
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
5
|
"keywords": [
|
|
6
6
|
"plurnk",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@plurnk/gbnf": "0.1.1",
|
|
54
|
+
"@plurnk/plurnk-aliases": "0.1.0",
|
|
54
55
|
"@plurnk/plurnk-models": "0.2.0",
|
|
55
56
|
"gpt-tokenizer": "^3.4.0",
|
|
56
57
|
"llama-tokenizer-js": "^1.2.2"
|